
字节笔记本
2026年10月6日 · 约 5 分钟读完
ACP 智能体的基线提示词,DeepSeek 写了什么
DeepSeek 把自家的 agent 框架 DeepSeek Harness(命令行名 dsh)放上了 GitHub,MIT 协议,主打一切皆插件,底层由 Cordis 依赖注入框架驱动,目前还处在开发者预览阶段。仓库里有一个容易被忽略的角落:examples/acp-agent 示例的测试快照,把一份基线系统提示词原样固化了下来。它不长,却把这套框架希望模型遵守的行为纪律写得清清楚楚,相当于一份公开的提示词工程范本。
这份提示词从哪里来
acp-agent 示例是一个通过 JSON-RPC stdio 提供服务的 Agent Client Protocol 服务器,面向父 agent、subagent 提供方这类程序化客户端,而不是给人用的产品界面。测试用例驱动它走完 initialize、newSession、prompt 三步,然后把模型实际收到的系统提示词存成快照,提示词一变,测试立刻报警。本文分析的这份快照来自 lsp-definition 场景,测试指令只有一句:用 lsp 工具恰好一次找到 subject.ts 第一行第七个字符的定义,然后只回复 DONE。
提示词开头先交代环境:你是一个由 DeepSeek Harness 驱动的编码助手,模型是 deepseek-v4-pro,工作目录是占位符 {{cwd}},bash 工具运行在文件沙箱之下。

沙箱拒绝是策略,不是故障
整份提示词里最有态度的一句,是让模型把 [sandbox: file access denied] 当作策略结果,而不是命令写错了。这句话背后是示例的权限模型:每次 session/new 带来一个绝对 cwd,受沙箱限制的 bash 和文件系统修改都以它为基准套用 workspace-write;模型重试索要更宽的访问权限时,框架会发起一次性的 session/request_permission,客户端以 allow_once 或 reject_once 程序化作答,选择只对这一次重试生效,服务器不持久化任何客户端策略。把环境限制和命令错误区分开,模型就不会对着沙箱高墙反复撞墙。
文件操作的三条铁律
读写文件的纪律占了提示词近三分之一。看文本文件必须用 read 工具而不是 cat,因为结果自带行号,大文件用 offset 和 limit 续读;write 工具会整体覆盖现有文件,所以默认的文件观察策略要求先读后写;edit 工具做字面量替换,old_string 默认必须恰好命中一次,出现多次就要写得更加具体,或者显式声明 replace_all。配套的还有一条:每条 bash 结果都要检查 [exit code: N] 标记,失败先查原因再往前走。
后台任务与精确导航
提示词要求模型记下自己启动的每个后台任务 id,任务完成会收到会话内通知,不许空转轮询;收尾阶段用 job_output 收集仍然相关的结果,只有真被阻塞才允许等待,不重要的任务用 job_kill 清理。导航方面,普通查找用 search 和 read,文本匹配含糊、或者改动需要精确到定义与引用时才动用 lsp;它的坐标是一起步的行号加 UTF-16 字符位,位置偏一个符号就可能查无结果,findReferences 的结果总是包含声明本身。
长目标与多 agent 编排的三道闸门
goal 工具被限定为一次只跟踪一个长期目标:例行单轮工作不许建目标;更新前必须先 get_goal,原样复制 goal_id 和 revision;会话恢复或派生后目标处于解除武装状态,要用 resume 动作重新武装;只有目标真达成才标完成,同一阻塞条件连续持续三轮才有资格标阻塞,而且必须在 blocked_reason 里写清具体条件,困难、不确定、还有活没干完都不算阻塞。
更重的武器闸门更高。workflow 工具只在用户明确要求工作流或大规模多 agent 编排时使用,它让模型写一段 JavaScript 脚本,把工作分给大量带阶段和结构化结果的 subagent,一两次委派直接调普通 subagent 就够。ralph 工具只在用户点名 Ralph 循环时启用,每轮都启动一个没有会话种子的全新子 agent,共享工作区充当持久记忆,完成与阻塞都只是 worker 的报告,不是独立评估。subagent 则默认后台运行:相互独立的委派要在同一条消息里一起派出,只有下一步依赖其结果时才改成前台。

一份值得抄作业的行为契约
把这份提示词当范本读,能看到几条可迁移的经验:失败要分类,策略性拒绝和执行错误要教模型区别对待;写操作要守恒,先读后写、替换必须唯一命中;后台异步要有账本,id、通知、收尾缺一不可;重武器必须显式点名,编排工具不能被模型自作主张地拉出来。仓库 README 给的门槛也很低:装好 Node.js 后 npx @deepseek-ai/dsh web 就能跑起本地界面,不过开发者预览阶段随时可能出现破坏性变更,照抄这份提示词前记得对一眼最新快照。



