Files
claude-code/docs/task/task-003-templates-job-mvp.md
unraid 637c9081f6 feat: integrate 5 feature branches + daemon/job 命令层级化 + 跨平台后台引擎 + TypeScript 错误修复
Squashed merge of:
1. fix/mcp-tsc-errors — 修复上游 MCP 重构后的 tsc 错误和测试失败
2. feat/pipe-mute-disconnect — Pipe IPC 逻辑断开、/lang 命令、mute 状态机
3. feat/stub-recovery-all — 实现全部 stub 恢复 (task 001-012)
4. feat/kairos-activation — KAIROS 激活解除阻塞 + 工具实现
5. codex/openclaw-autonomy-pr — 自治权限系统、运行记录、managed flows

Additional:
6. daemon/job 命令层级化重构 (subcommand 架构)
7. 跨平台后台引擎抽象 (detached/tmux engines)
8. 修复 src/ 中 43 个预存在的 TypeScript 类型错误
9. 修复 langfuse isolated test mock 完整性
10. 修复 CodeRabbit 审查的 Critical/Major/Minor 问题
11. remote-control-server logger 抽象 (测试 stderr 静默化)
12. /simplify 审查修复 (代码复用、质量、效率)
2026-04-14 19:53:36 +08:00

2.2 KiB

Task 003: TEMPLATES — job 文件系统 MVP

来源: stub-recovery-design-1-4.md 第 3 项 优先级: P2 工作量: 中等 状态: DONE 阶段: MVP

目标

new / list / reply 做成可用的模板任务系统。第一阶段不碰复杂的自动分类与自动执行。

背景

  • 命令入口只有 fast-path (src/entrypoints/cli.tsx:249)
  • handler 是空的 (src/cli/handlers/templateJobs.ts)
  • markdownConfigLoader 已把 templates 纳入配置目录 (src/utils/markdownConfigLoader.ts:29)
  • query/stopHooks 已预留 job classifier 链路 (src/query/stopHooks.ts:103)
  • jobs/classifier.ts 仍是 stub (src/jobs/classifier.ts)

实现方案

新增文件

文件 说明
src/jobs/state.ts job 状态管理
src/jobs/templates.ts 模板解析与列表

修改文件

文件 改动
src/cli/handlers/templateJobs.ts 实现 new / list / reply handler

模板来源

.claude/templates/*.md

模板格式

复用现有 markdown + frontmatter 解析,不另外设计 DSL。

list 命令

  • 列出所有模板
  • 显示: 模板名, description, 路径

new 命令

  • 解析模板
  • ~/.claude/jobs/<job-id>/ 下创建 job 目录
  • 写入 template.md, input.txt, state.json
  • 返回 job id 与目录路径

reply 命令

  • 将回复写入 replies.jsonlinput.txt
  • 更新 state.json

验证步骤

  • list 能列出 .claude/templates 下的所有模板
  • new <template> [args...] 能创建 job 目录和状态文件
  • reply <job-id> <text> 能更新 job 内容和状态
  • frontmatter schema 最小字段集已定义

Phase 2 (后续)

  • 恢复 src/jobs/classifier.ts
  • 让带 CLAUDE_JOB_DIR 的 job session 在 turn 完成后自动更新 state.json
  • 再决定是否补自动 job runner

为什么拆分

  • 当前是 "template job commands",不是单纯模板列表
  • 自动 job 运行链路没有足够现成实现
  • 先做文件系统 job lifecycle 更稳

风险

  • frontmatter schema 需要先定义最小字段集
  • 一旦扩展到"自动运行 job",范围会明显膨胀

依赖

无硬性依赖,可独立实施。