Files
claude-code/docs/task/task-003-templates-job-mvp.md
claude-code-best c8d08d235b Feat/integrate lint preview (#285)
* feat: 适配 zed acp 协议

* docs: 完善 acp 文档

* feat: integrate feature branches + daemon/job 命令层级化 + 跨平台后台引擎

Cherry-picked from origin/lint/preview (637c908), excluding lint-only changes.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: correct detectMimeFromBase64 to decode raw bytes from base64

Cherry-picked from origin/lint/preview (ee36954).

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: daemon 子进程 spawn 跨平台修复 + CliLaunchSpec 集中化重构

Cherry-picked from origin/lint/preview (c5f52cd), excluding lint-only formatting changes.

- 新建 src/utils/cliLaunch.ts: 集中化 CLI 子进程启动层
- 修复 --daemon-worker=kind 等号格式解析
- 修复 daemon/bg fast path 缺少 setShellIfWindows()
- 修复 checkPathExists 用 existsSync 替代 execSync('dir')
- 7 个 spawn 站点迁移到 CliLaunchSpec

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: merge tsconfig.base.json into tsconfig.json with full compiler options

The cherry-pick from 637c908 dropped jsx/strict/etc settings when removing
tsconfig.base.json. This commit restores them in a single tsconfig.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* fix: merge tsconfig.base.json into tsconfig.json with full compiler options

The cherry-pick from 637c908 dropped jsx/strict/etc settings when removing
tsconfig.base.json. This commit restores them in a single tsconfig.json.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-16 20:59:29 +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",范围会明显膨胀

依赖

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