📄 一句话概括
写 YAML 之前先写清单——清单是给人看的,YAML 是给机器看的;清单过不了自己这一关,配置一定写不好。
📝 本节和前面几节的关系
8.3.1 定了题目,这一步把题目拆成任务清单与权限清单,然后才动 YAML。
一、两张清单
- 任务清单:审查这件事分几步做完(读 → 搜 → 记 → 报)。
- 权限清单:每一步允许碰什么(只读,不许写,不许执行)。
两张清单是一一对应的:每一条任务后面都跟一条约束。
二、清单怎么变成 YAML
一条任务 → 一件工具;一条约束 → 一个不装的决定。
注意后半句:约束在配置里往往表现为【少写一行】。 想禁止执行命令,不是加一条禁令,是不装执行类的件。
这是本课一整遍都在强调的路数:能力靠装配,边界靠不装配。
三、实测片段
写进你自己那一层的补丁,向树里插入第五套预设:
- id: preset-reviewer
name: '@deepseek-ai/dsh-agent-preset'
config:
id: reviewer
order: 5
plugins:
- id: persona
- id: tool-fs
- id: tool-fs-search
- id: tool-todo
- id: present
五件工具,对应任务清单的四步(persona 是人格,不占工具名额)。
四、实跑结果
把这段补丁跑一遍 --dump-config:树从 1259 行 → 1281 行,diff 共 24 行,0 条警告。
新预设落在树的末尾(顶层插入),表头写着「patched by ……exp8a_reviewer.yml」——改动自己报了出处。
五、动手 Demo:先列清单,再写 YAML
清单写完了,YAML 只是把清单翻译一遍:
todo = ["列任务清单", "列权限清单", "写 YAML",
"分平面", "控工具", "定格式", "测失败"]
for i, t in enumerate(todo, 1):
print(" 第 %d 步: %s" % (i, t))
print(" 写 YAML 只是第 3 步——前面两步是想清楚, 不是打字")
实跑输出:
--------------------------------------------------------------------
先列清单,再写 YAML
--------------------------------------------------------------------
清单写完了,YAML 只是把清单翻译一遍。实测片段:
- id: preset-reviewer
name: '@deepseek-ai/dsh-agent-preset'
config:
id: reviewer
order: 5
plugins:
- id: persona
- id: tool-fs
- id: tool-fs-search
- id: tool-todo
- id: present
四套官方预设的 `order` 是 1/2/3/4(standard/ptc/minimal/cordis),
第五套填 **5**,自然排在最后。
**清单是给人看的,YAML 是给机器看的**——先写前者。
五步里只有第三步是打字,前后四步都是判断。 约束落到配置上,常常表现为少写一行——不装执行类,就等于禁止执行。 清单是给人看的,YAML 是给机器看的——先过前者这一关。
30 秒实验
- 给你的题目列两张清单,逐条对应写下来。
- 把权限清单里每一条翻译成【少装哪件】,看能不能对上。
- 写完清单再去翻配置树,你会发现找件变快了很多。
常见误区
- 错误:直接开编辑器写 YAML 更快。——纠正:没有清单就不知道写完没有——写配置最难的不是语法,是【该不该有这一条】。
- 错误:禁止某件事,要在配置里写一条禁令。——纠正:本课的路数是【不装】——不装执行类工具,比写十条【不许执行】都管用。
- 错误:清单和配置可以不一致。——纠正:不一致就是漏洞——清单里写了不做、配置里装了那件,等于清单白写。
自测三问(点开对答案)
1. 为什么先列清单再写 YAML? —— 因为**清单回答【该不该有】,YAML 只回答【怎么写】**——没有前者,后者写完也不知道对不对。 2. 约束在配置里通常表现为什么? —— **少写一行**——想禁止执行,就不装执行类的件;能力靠装配,边界靠不装配。 3. 插入第五套预设的实测结果是什么? —— 树 **1259 → 1281 行**、diff **24 行**、**0 警告**,新预设落在树末尾并自带出处注释。- ☐ 下一节(8.3.3 第二步:把 Host 的共享能力与 Reviewer 的会话级组合分开)
相关笔记
- 第二步:把 Host 的共享能力与 Reviewer 的会话级组合分开 —— 清单有了,接下来分归处
- 注册也有生命周期 —— 补丁与层的关系
- 把可替换点放在正确的层 —— 分层的判据
- 🐳 DeepSeek Harness · 索引