用法:在 Web 界面新建会话,预设选 总监模式,本会话模型选一个高价值模型 (如
deepseek-v4-pro),工作目录建议为~/Desktop/dp-harness/learning/ducheck-test(先手动建好空目录)。然后把下方"任务文本"整段粘贴给总监,再按文末清单验收。 对照实验(可选):用标准模式跑同一任务,对比子代理模型、返工次数与总成本。
请帮我从零构建一个 Python CLI 工具 ducheck——递归扫描目录、找出内容完全相同的重复文件、按组输出。我只需要你做判断、计划、分工与验收,具体编码工作全部委派给子代理。
- 输出格式:stdout 输出单个 JSON 对象:
{"groups": [{"hash": "<sha256十六进制>", "files": ["<相对路径>", ...]}]}——每组至少 2 个文件;无重复时输出{"groups": []}。输出中不得混入任何其他文本。 - 模块边界(供你分工时使用,可自行微调但必须先在计划中写明接口):
core.py:提供find_duplicate_groups(root: Path, chunk_size: int = 65536) -> list[dict], 返回[{"hash": ..., "files": [...]}, ...]。负责哈希、分组与全部边界处理。cli.py:参数解析与主入口,调用core,负责退出码与 JSON 输出。test_ducheck.py:按契约驱动编写测试(不依赖 core 的内部实现细节)。
- 边界要求(每条都必须实现并被测试覆盖):
- 零字节文件:所有空文件应归为一组(这是最常见的遗漏点)。
- 符号链接:跳过,不跟随。
- 大文件:必须按 64KB 块流式读取哈希,禁止一次性读入内存。
- 错误处理:目录不存在 → 退出码 2 + stderr 报错;无权限文件 → 跳过并在 stderr 提示。
- 交付物:上述 3 个文件(仅用 Python 标准库),以及整合后
python3 -m pytest test_ducheck.py全绿。
- 先给出任务分解计划(用 todo_write),再动手;契约与模块接口由你定死,写进每个子代理的提示词。
- 3 个子任务(实现 / 测试 / 设计一个含零字节文件、软链、嵌套子目录的 fixture 目录) 互相独立,必须在同一条消息里并行启动 3 个后台 subagent,启动后继续你的准备工作。
- 子代理提示词必须自包含:背景、目标、模块接口契约、边界要求、产出格式、验收方式。
- 全部子代理返回后:由你亲自整合并实际运行
pytest与 CLI 抽查 (含空文件组、软链、错误目录),不能只信子代理的完成报告;不合格的用 send_message 要求返工。 - 最后给我一份验收报告:每个文件的职责、测试结果、CLI 示例输出,以及你的分工与返工记录。
| # | 验证点 | 观察方式 | 通过标准 |
|---|---|---|---|
| 1 | 计划先行 | 总监首轮回复 | 先出现任务分解/接口契约/todo_write,而不是直接写代码 |
| 2 | 并行委派 | 总监消息序列 | 同一条 assistant 消息里出现 3 个 subagent 调用(后台) |
| 3 | 提示词自包含 | 打开任一子代理会话 | 提示词含背景/契约/边界/产出/验收,不依赖父对话 |
| 4 | 模型分层 | 打开子代理会话看模型选择器 | 子代理运行在 deepseek-v4-flash;总监会话是高价值模型 |
| 5 | 工具净化 | 子代理会话工具列表 | 无 subagent / subagent_fork / workflow / ask_user_question;子代理试图再委派会被拒绝 |
| 6 | 验收返工 | 总监后续轮次 | 总监亲自跑 pytest + CLI 抽查;有失败则 send_message 返工而非自己悄悄改或直接放过 |
| 7 | 最终产物 | 运行命令 | pytest 全绿;CLI 输出严格符合 JSON 契约;空文件组、软链、错误目录行为正确 |
| 8 | 成本分层 | 会话用量统计 | 子代理 token 全部按 flash 计价;总监只消耗规划/整合/验收的 token |
- 全部通过:双层委派架构按设计工作——高价值模型掌舵、低价值模型执行、结构上杜绝子代理再委派。
- 部分失败时的读法:
- 4 失败 → agentOptions 未生效(检查
~/.dsh/.agent-presets/director/agent.cordis.yml两处agentOptions)。 - 5 失败 → toolFilter 名单不匹配实际工具名(以子代理会话实际工具列表为准修正 deny 列表)。
- 6 失败 → persona 约束不足(加强「验收与把关」段),这是行为层面而非结构问题。
- 2/3 失败 → 总监模型能力不足或 persona 委派纪律没写够,考虑换更强的高价值模型。
- 4 失败 → agentOptions 未生效(检查