9.0 KiB
9.0 KiB
name, description
| name | description |
|---|---|
| unidesk-tasktree | UniDesk TaskTree CLI 任务管理主入口,接管原文件式任务 CLI 的 TaskGroup、 Task、Subtask、Subsubtask、状态、执行报告、统计、时间线和 Markdown 导入。 用户提到用 CLI 管理任务、创建或更新任务、开始或完成任务、任务报告、 TaskTree、taskgroup、task/subtask、milestone 或 execution report 时使用。 TaskTree native、PostgreSQL、Temporal、API/worker、Web、CI/CD 和部署请求 同样使用本技能,并按需读取开发运维 reference。 |
UniDesk TaskTree
本技能遵循 Skill(cli-spec)。
任务管理合同
- 新的 CLI 任务管理统一使用 TaskTree:
- TaskGroup 管理一个任务集合;
- Task 是顶层任务;
- Subtask 与 Subsubtask 通过父任务关系表达两级下钻;
- ExecutionReport 保存执行证据;
- Milestone 保存时间节点。
- 默认使用 L0 本地 dispatcher:
- 只需要 native PostgreSQL;
- 普通增删改查、状态、报告和统计不要求 API、worker 或 Kubernetes;
- 只有 workflow 需要 Temporal worker;
- 只有验证服务传输合同时才增加
--overapi。
- 公共 CLI 只使用 TaskTree 术语:
- 不新增历史工具名、历史 operation 或兼容别名;
- 历史 Markdown 任务文件只通过
group import-markdown迁移; - 导入后以 TaskGroup、Task 与 ExecutionReport 为任务管理对象。
- 禁止为新任务创建或继续写入 MDTODO:
- skill、长期文档或 issue 中仍引用 MDTODO 时,将其视为待迁移入口;
- 历史报告、已退役服务名和只读过程记录可以保留原词,不能作为新任务权威;
- 当前任务没有遗留 MDTODO 时,直接创建或继续 TaskTree 任务。
- CLI 输出必须是可见 JSON:
- 成功必须检查
ok=true和operation; - 失败必须保留稳定错误码和非零退出;
- 不把自然语言日志或数据库行数当作任务状态真相。
- 成功必须检查
能力映射
| 任务管理能力 | TaskTree CLI |
|---|---|
| 任务集合创建、查询、删除、统计 | group create|list|get|delete|stats |
| 顶层任务创建、查询和批量创建 | task create|list|get|create-batch |
| 子任务与二级子任务 | task create --parent <task-id> |
| 标题、说明、状态和时间更新 | task update |
| 开始、完成和删除 | task start|complete|delete |
| 执行报告写入和查询 | report write|list|get |
| 时间节点和时间线 | milestone create、timeline |
| 历史 Markdown 任务迁移 | group import-markdown |
最短闭环
- 从 HWLAB v0.3 仓库根目录执行。
- 创建对象后从 JSON 结果读取 ID,不按名称猜测对象。
bun tools/hwlab-cli/bin/hwlab-cli.ts tasktree group create \
--name "示例任务组"
bun tools/hwlab-cli/bin/hwlab-cli.ts tasktree task create \
--group <group-id> --title "实现功能"
bun tools/hwlab-cli/bin/hwlab-cli.ts tasktree task create \
--group <group-id> --parent <task-id> --title "完成验证"
bun tools/hwlab-cli/bin/hwlab-cli.ts tasktree task start \
--task <task-id>
- 完成任务前先写 ExecutionReport:
bun tools/hwlab-cli/bin/hwlab-cli.ts tasktree report write \
--task <task-id> --title "执行报告" --stdin <<'EOF'
验证已完成,记录命令、结果和关键证据。
EOF
bun tools/hwlab-cli/bin/hwlab-cli.ts tasktree task complete \
--task <task-id>
bun tools/hwlab-cli/bin/hwlab-cli.ts tasktree group stats \
--group <group-id>
- L1 只在原命令末尾增加
--overapi:- 参数、DTO、输出和错误合同不得变化;
- 不维护第二套 API 专用命令。
命令面
tasktree health
tasktree group list|overview|get|create|delete|stats
tasktree group import-markdown --file <path> [--name <taskgroup>] [--dry-run]
tasktree task list|get
tasktree task create|create-batch|update|delete|remove|start|complete|done
tasktree milestone create
tasktree report list|get|write
tasktree timeline
tasktree workflow start
- 标题和正文输入:
- 单个创建与更新支持
--title或--stdin; - 二者互斥;
- 标题必须是非空单行文本;
- 批量创建使用
task create-batch; - 同批任务必须在一个事务内全部成功或全部失败;
- 报告使用
report write --stdin或--body-file; - 相同任务、标题、正文和状态的重复报告返回
mutation=false。
- 单个创建与更新支持
- 参数合同:
- 多余位置参数返回
invalid_arguments; - 未知选项或命令不支持的选项返回
invalid_option; - 同一选项重复出现返回
duplicate_option; - 缺少选项值返回
missing_option_value; - 不得静默忽略、覆盖或猜测参数;
- 帮助中未列出的历史命令返回
unsupported_command。
- 多余位置参数返回
- 子任务层级:
- Task 的子级是 Subtask;
- Subtask 的子级是 Subsubtask;
- Subsubtask 禁止继续创建下级。
- 状态流转:
task start把任务标记为in_progress;task complete与task done要求至少一份 ExecutionReport;- 禁止使用
task update --status completed绕过报告门禁; task update --status blocked用于标记阻塞;task delete与task remove使用相同删除合同。
- 时间节点:
- Task 同时存在开始和截止时间时,开始时间不得晚于截止时间;
- 创建或更新形成反向范围时返回
invalid_time_range; - Milestone 绑定的 Task 必须属于同一 TaskGroup;
- 跨组绑定返回
task_group_mismatch。
- 查询与收口:
- 任务执行前用
task get读取当前状态与报告; - 批量查看使用
task list --group <group-id>; - 收口使用
group stats --group <group-id>; - 删除不存在的对象必须返回
not_found,不得伪装成功。
- 任务执行前用
- 配置与传输错误:
- L0 缺少数据库地址返回
missing_database_url; --overapi缺少 API URL 返回missing_api_url;- API 无法连接返回
api_unreachable; - API 返回非 JSON、错误 operation 或 HTTP/envelope 冲突时返回
invalid_api_response; - workflow 缺少 Temporal 地址返回
temporal_address_required。
- L0 缺少数据库地址返回
历史任务迁移
- 当前任务引用的 MDTODO 必须在继续实施前迁移:
- 用
group import-markdown --dry-run核对层级、任务、报告、缺失报告和压平 warning。 - 执行正式导入,并保存 TaskGroup、Task、Subtask、Subsubtask 与 ExecutionReport ID。
- 用
group stats和必要的task get、report list核对状态、层级和报告数量。 - 确认 GitHub 自动备份包含新快照;自动备份未生效时使用受控手动备份。
- 运行
backup verify,要求数据库 SHA 与 GitHub 快照 SHA 一致。 - 只有上述步骤全部成功后,才一次性删除原 MDTODO FILE 及其专属报告目录。
- 删除后从已导入的 TaskTree 对象继续任务,不再回写或重建原文件。
- 用
- 迁移失败、报告缺失未裁决或备份未验证时:
- 禁止删除原文件;
- 禁止在旧文件上继续推进;
- 保留现场并修复导入或备份入口。
- 只读历史材料不自动批量迁移:
- 当前任务真正恢复、修改或依赖其中任务状态时才触发迁移;
- 不篡改历史报告中的旧系统名称、命令和运行面事实。
- 迁移入口:
bun tools/hwlab-cli/bin/hwlab-cli.ts tasktree group import-markdown \
--file <path> --dry-run
- 映射规则:
- 一个历史任务文件映射为 TaskGroup;
- 顶层 R 项映射为 Task;
R2.9映射为R2的 Subtask;R2.9.1映射为R2.9的 Subsubtask;- 第四级及更深层级压平到第三级;
- 压平必须返回
nested_task_flattenedwarning。
- 标题与报告:
- 标题不得按冒号截断;
- Markdown 链接和 URL 后正文必须完整保留;
- 本地任务报告链接自动读取为 ExecutionReport;
- 报告文件缺失时保留任务;
- 缺失报告返回
report_file_missingwarning。
- 时间规则:
- 缺少显式时间时,以任务文件最后修改时间作为截止时间;
- 开始时间为截止时间前一天;
- 存在报告时,以最新报告文件修改时间为准;
- 父任务时间范围必须覆盖全部子任务;
- 导入报告的
createdAt使用报告文件修改时间; - 数据统一以 UTC 存储,显示时按用户时区渲染。
- 执行规则:
- 先用
--dry-run核对 task、subtask、report、missing 和 flattened 计数; - 实际导入必须在单个 PostgreSQL 事务内完成;
--overapi时由 CLI 读取本地文件并通过 DTO 传给 API;- API Pod 不挂载调用端文件系统。
- 先用
按需参考
- 日常 CLI 任务管理只使用本文件,不读取开发运维 reference。
- 出现以下任务时,完整读取
开发与运维参考:
- 修改 TaskTree 源码、数据库或 Temporal workflow;
- 启动 L1 API、worker 或 HMR Web;
- 使用部署态
--overapi; - 执行 Web 视觉验收;
- 创建 PR、进入 L2 或观察自动交付。