源码精读

一切皆插件:DeepSeek Harness 源码精读

一个 coding agent 的运行时,怎样把「一切皆插件」做到底,同时保证任何插件组合下模型看到的一切都能从日志重建。十二章逐行精读,每一处论断都能回溯到源码的具体某一行。

Peng

0
0处源码引用
0万字

commit b150a551b8 · tag course-anchor-20260823 · 2026-08-21

github.com/deepseek-ai/deepseek-harness 开始阅读

目录

  1. 01一切皆插件:Cordis 的五个思想假设你接手了一个需求:给 DeepSeek Harness 加一条规则,模型每次执行 Bash 命令前,先检查命令里有没有访问 /etc/passwd,有就拦下来。
  2. 02从 cordis.yml 到运行中的树一台内网机器上跑着 dsh --profile web,浏览器形态的 agent 服务,几十个同事在用。
  3. 03会话日志:Model-visible ⟺ logged假设你接手了一个审计任务:一个 subagent 在崩溃前最后一次模型请求里,到底看到了什么。
  4. 04turn/step:ReactLoopAgent 的驱动循环你在一个 agent 平台上挂了一个「输入审核」插件:按文档在 agent/pre-step 上注册监听,碰到敏感词就返回 { kind: 'reject' }。
  5. 05系统提示与工具 schema 组装你在一份部署里给子 agent 定了两件事:把它自己的角色说明换上去,工具只留只读的三件。
  6. 06工具执行管线与审批假设你在维护一个 agent harness,要加一条安全策略:模型调用 Bash 时,命令里出现 rm -rf 必须先问用户。
  7. 07capability seam 解剖:shell 三件套「把 Bash 换掉」,听起来像一次查找替换。但如果你的代码库里「bash 工具」是一个八百行的文件,工具描述、权限检查、进程拉起、结果渲染全在里面,这一次替换要回答一串问题:工具
  8. 08沙箱与进程树你在终端里跑一个本地 agent,让它「帮我跑一下这个测试脚本」。
  9. 09文件系统 capability 与策略模型在一个会话里第一次 write 文件 A,动作是「创建」,它没见过内容。
  10. 10LLM 适配层:twin adapters 与流式词汇给一个 agent harness 接新的模型供应商,是那种看起来简单、做起来翻车的活。
  11. 11委托与并行:subagent、workflow、goal你在 IDE 里对一个 agent 说:调研三个开源库,各写一份评估。
  12. 12协议边界:Typert、MCP、ACP、双 SDK你的团队把 agent 接进了发布流水线。你分到的任务是:写一个程序,让它给 harness 发一个任务、拿回结果,过程中可能还要替它答一次权限问题。
  13. 13附录 A:术语表精校版
  14. 14附录 B:语料与检索记录
关于这本书