只读 smoke:一个三行指令里的协作智慧
那天我给 Agent 下了一条看起来很简单的指令:
"只读 smoke:检查当前工作目录是否存在 outputs/ 与 work/,不要写文件,不要读取凭证。用中文输出 3 行:status、evidence、next_action。"
指令本身不到三十个字,但里面藏着三个约束:只读、不写、不看凭证。每个约束都有具体的目的,但 Agent 把它们当成了限制,而不是意图的压缩表达。
约束不只是限制
Agent 返回了结果,格式正确,3 行,中文。但我看了一眼就觉得不对劲——内容模糊,像是套了模板而不是真正检查过。一般人到这里就用了,格式对了,内容也填了,差不多就行。但我停了下来。
我追问 Agent:"这个结果是怎么来的?你能展示一下工作过程吗?"
Agent 展示了它的思考路径。我继续追问:"outputs/ 和 work/ 这两个目录是怎么确定的?它们有什么特殊含义?"
Agent 解释说这是项目预设的标准结构——outputs/ 用于存放输出文件,work/ 用于存放工作文件。到此为止,信息已经足够了。但我意识到一个更深的问题:我给指令时加了三个约束,但 Agent 只把它们当成了限制,而没有理解每个约束背后的意图。
"只读"不是因为我讨厌写入操作,而是因为这次任务的目标是诊断,不是治疗。一旦写入操作改变了工作目录的状态,后续的 smoke 检查就失去了基准——你看到的不再是原始状态,而是被干预后的状态。就像医生体检时如果先给病人吃了药,体检结果就不是病人的真实健康状态,而是吃药后的状态。诊断的前提是环境不被扰动,只读约束确保了这个前提。
"不要写文件"不是为了保护文件系统,而是因为写操作会改变工作目录的状态,让后续诊断失真。一个 smoke 检查的任务,如果 Agent 在检查过程中写了临时文件,那 outputs/ 目录的存在状态就被改变了——原来的检查结果是"不存在",写完之后变成"存在"。这种自扰式的诊断毫无意义,因为你不知道 outputs/ 是本来就存在还是你的检查操作导致的。
"不要读取凭证"不是为了保护隐私,而是因为凭证信息对这次诊断毫无帮助,读取它只会增加噪声。smoke 检查的目标是确认目录结构是否完整,凭证文件是否存在是另一个层面的问题,混在一起只会让 3 行输出变得模糊。就像体检时如果你同时检查视力、听力、血压,每个指标都测了,但结果混在一起,你反而看不出哪个指标有问题。
约束不是限制,是意图的压缩表达。Agent 如果只把它当成限制来遵守,那它只做到了不犯错,但没有做到真正理解任务。不犯错和理解任务是两个层面的事——前者是守规矩,后者是做正确的判断。
从追问到判断链
这次追问让我看到了一条完整的判断链:我给约束 → Agent 按约束执行 → 我质疑结果 → Agent 展示过程 → 我追问意图 → 我发现约束被当成限制而非意图。
这条判断链的关键转折点是我停下来追问的那一刻。大多数人会直接接受格式正确的结果,因为格式对了就"看起来没问题"。但正是那个停顿,让我看到了约束和意图之间的鸿沟。鸿沟在哪里?在约束的遵守和意图的理解之间。遵守约束是"不做禁止的事",理解意图是"知道为什么禁止这些事"。前者导致模板式输出,后者导致有价值的输出。
这之后我调整了协作方式:给约束时,不只说"不要做什么",还要说"为什么不要做"。比如这条指令,更好的写法是:
"只读 smoke:检查 outputs/ 与 work/ 是否存在(诊断用,不要改变目录状态)。不看凭证(与诊断无关)。输出 3 行:status、evidence、next_action。"
加了原因说明,Agent 就不只是遵守限制,而是理解意图。理解意图的 Agent 会做出更好的判断——比如,它可能会主动告诉你"outputs/ 不存在但历史记录显示它曾被删除",这比单纯说"不存在"有用得多。因为"曾被删除"暗示 outputs/ 曾经存在过,可能是被清理了而不是从未创建。这个信息对诊断有实际价值。
小卡点里的大方法
这次经历提炼出一个具体方法,我后来反复使用:
给约束时同时给原因。 不是每次都要,但当你发现 Agent 的结果"格式对了但内容不对"时,大概率是约束被当成限制而非意图。
检查方法也很简单:看结果是否只回答了"是什么",而没有回答"为什么是这样"。如果只有"是什么",说明 Agent 在遵守约束但没有理解意图。补充原因说明后重新下指令,往往能得到更有价值的输出。
这个原则可以推广到更广的场景:任何时候你给 Agent 一个"不要做什么"的约束,顺手加一句原因。不是每次都需要,但需要的时候,它能把一个模板式的结果变成一个真正有用的诊断报告。
只读 smoke 的那条指令,不到三十个字,但拆开之后,每个字都指向一个协作方法的改进方向。小卡点里藏的东西,往往比大话题更实用——因为大话题你可以慢慢想,小卡点你不注意就过去了,过去了就反复踩。反复踩的坑,才是最值得提炼成方法的。