🐳 第八章 设计自己的Harness
📄 一句话概括

Standard 的 19 件里,审查预设只留 5 件——只读的保证不是靠自律,是靠工具表里根本没有写操作。

📝 本节和前面几节的关系

8.3.3 把清单分到两个平面,这一步把会话平面里那一堆再筛一遍:哪些工具真的需要露给模型。

一、19 件怎么收到 5 件

结果是 5 件:四件干活,一件定人格。

二、两条关键取舍

① 执行类一件不留。只读就是只读——留一件执行工具,前面所有的边界讨论都白做。

② tool-ask-user 也去掉。审查不该半路停下来问人:它是一份一次交完的活;一旦能问,输出格式与节奏都不受控。

第 ② 条容易被忽略——看起来无害的工具,也可能破坏设计意图。

三、这是一个老规矩的 Agent 版

17 课的 5-18 封装化、访问修饰符 讲过同一个道理: 只对外公开必要的信息和步骤。

区别只在于:面向对象的封装,靠语言的关键字;Agent 的封装,靠装配清单里少写那几行。

四、少给工具的额外好处

五、动手 Demo:只暴露审查真正需要的工具

Standard 有 19 件,审查预设留 5 件,逐类核对:

std, rev = 19, 5
print("  Standard 19 件 -> 审查预设 %d 件" % rev)
print("  去掉执行类 2 件, 其余 12 件与审查无关")
print("  只读的保证不是靠自律, 是靠工具表里根本没有写操作")

实跑输出:

--------------------------------------------------------------------
只暴露审查真正需要的工具
--------------------------------------------------------------------
  Standard 有 19 件,审查预设留 5 件。逐类核对:

  类别           Standard 里有                    审查预设
  -----------------------------------------------------------
  人格与指令     persona、agent-instructions      留 persona
  读写与搜索     tool-fs、tool-fs-search          两件都留
  执行           tool-bash、tool-pwsh             **全去掉**
  登记与交付     tool-todo、present               两件都留
  其余 11 件     goal/plan/web/delegation…     **全去掉**
  -----------------------------------------------------------

  两条关键:①执行类**一件不留**(只读就是只读);
  ②`tool-ask-user` 也去掉——审查不该半路停下来问人。

执行类一件不留——这是只读能不能成立的分水岭。 tool-ask-user 也去掉:看起来无害的工具也会破坏设计意图。 少给工具不损失本事,反而让模型更不容易跑偏。

30 秒实验

  1. 把审查预设在纸上写一遍,标出每一件工具对应清单上的哪一步。
  2. 找出 Standard 里那些【看着有用但不属于审查】的件,数一数有几件。
  3. 想想你自己的场景里,哪些工具是【宁可不要】的。

常见误区

  1. 错误:多留几件无所谓,模型不一定用。——纠正:工具表就是权限边界——留着就代表可以调,「不一定用」不是安全保证。
  2. 错误:只读靠提示词约束就够了。——纠正:提示是建议,装配是事实——写十遍【不许写文件】,不如工具表里没有写文件。
  3. 错误:tool-ask-user 无副作用,留着方便。——纠正:它会打断一次交完的节奏——审查要的是一份完整报告,不是一个来回问答。
自测三问(点开对答案) 1. 19 件收到 5 件,留的是哪几件? —— `persona`、`tool-fs`、`tool-fs-search`、`tool-todo`、`present`——**四件干活,一件定人格**。 2. 为什么执行类一件都不能留? —— 因为**工具表就是权限边界**——留一件执行工具,前面所有的边界讨论都作废。 3. 这件事对应 17 课的哪个概念? —— **封装化、访问修饰符**(`5-18`)——只对外公开必要的信息和步骤;面向对象用关键字,Agent 用装配清单。

相关笔记