跳到主要内容

用 ud CLI 在终端中管理任务

· 阅读需 4 分钟
Creator of UnderControl

如果你大部分时间都在终端里工作,那么每次记录任务或查看待办事项都要切换到浏览器标签页,这种上下文切换完全没有必要。ud CLI 正是为了消除这种干扰而生。它将 UnDercontrol 的全部功能——任务增删改查、笔记、查询、看板——带入你的 shell 环境,并采用你已经熟悉的命令结构。

kubectl 风格的命令,因为它好用

CLI 使用与 kubectl 相同的动词-资源模式,这种模式让无数工程师觉得上手自然。你可以 get、describe、apply 和 delete 资源,无需建立新的心智模型。

# 列出所有任务
ud get task

# 查看任务完整详情(支持短 ID 前缀)
ud describe task 3de9f82b

# 从 markdown 文件创建或更新任务
ud apply -f task.md

# 删除任务
ud delete task abc123

apply 命令值得重点介绍。你的任务就是一个带有 YAML frontmatter 的 markdown 文件。如果文件中有 id 字段,则更新已有任务;没有 id,则新建任务。这使得批量更新、脚本化工作流以及版本控制的任务定义变得简单直接。

echo '---
title: Write release notes
status: in-progress
tags:
- release
deadline: 2026-04-10
---

Draft the changelog and update the docs site.' | ud apply -f -

Task list view — what the ud CLI manages from your terminal

真正能过滤的查询语法

ud task query 提供了一种类 SQL 的过滤语言,用于查询你的任务。当任务数量多到"翻列表"不再是可行策略时,它就派上用场了。

# 本周截止的任务
ud task query "deadline BETWEEN 'today' AND '+7d'"

# 标记为 urgent 的进行中任务
ud task query "(status = 'todo' OR status = 'in-progress') AND tags = 'urgent'"

# 标题搜索
ud task query "title ILIKE '%api%'"

如果你不想考虑语法,ud task nlquery 支持直接输入自然语言,并通过 AI 将其转译为查询:

ud task nlquery "show me overdue tasks"
ud task nlquery "tasks tagged with work that are not done"

两个命令都支持 --sort--order--limit 参数,便于分页和排序,可以干净地组合进脚本或 shell 别名中。

用笔记记录进度

每个任务都支持笔记——简短的自由格式条目,充当持续更新的进度日志。这对于记录你实际做了什么很有用,而不只是最终状态。

ud task note add 3de9f82b "Finished the backend changes, opening PR now"
ud task note ls 3de9f82b

笔记也让 CLI 天然适合 AI 智能体工作流。智能体可以从计划文件创建任务,在每个步骤追加进度笔记,最后标记任务完成——全程无需打开浏览器。团队的其他成员可以在 UnDercontrol Web 界面或桌面应用中看到完整的历史记录。这种交接方式轻量、实用,真正跑得通。

需要可视化时,用交互式 TUI

不带任何参数运行 ud,会打开终端 UI——一个支持键盘操作的看板式界面,带有 vim 风格的按键绑定。

Built-in terminal with ud CLI commands

按键操作
j / k在任务间移动
Enter打开任务详情
i新建任务
x切换状态
/搜索
f文件选择器(模糊搜索本地文件以创建任务)

文件选择器是个亮点。按 f,在当前目录中模糊搜索 markdown 文件,它就会变成一个任务——第一行作为标题,其余内容作为描述。如果你习惯在项目仓库中用 markdown 记笔记,并想把它们纳入任务追踪,这个功能非常实用。

多上下文支持多个服务器

如果你在多个环境中自托管 UnDercontrol——个人、工作、测试实例——上下文系统的处理方式与 kubectl 完全相同。

ud config set-context work --api-url https://ud.company.com
ud login --context work

# 单次命令使用不同上下文
UD_CONTEXT=personal ud get task

配置文件位于 ~/.config/ud/config.yaml。你也可以完全通过环境变量(UD_API_URLUD_API_KEYUD_TOKEN)驱动 CLI,无需修改配置文件,在 CI 流水线中同样可用。

快速开始

通过 npm、Homebrew 或一行 curl 命令安装:

npm install -g @oatnil/ud
# 或
brew install oatnil-top/ud/ud
# 或
curl -fsSL https://get.oatnil.com/ud | bash

然后指向你的 UnDercontrol 实例:

ud login

完整的命令参考——包括文件附件、多上下文认证和高级查询语法——请查阅 CLI Reference 文档。如果你还没有运行 UnDercontrol,自托管指南 介绍了如何在几分钟内用 Docker 启动一个服务器。