DeepSeek Harness 架构:为什么「一切皆插件」不是海报
用官方 architecture.md 把 profile、bundle、session log 和 turn/step 讲清。不复制包表,只讲你改行为时该挂哪里。
打开官方原教程| 项目 | 详情 |
|---|---|
| 提供方 | DeepSeek Harness |
| 难度 | 进阶 |
| 发布日期 | 2026-08-13 |
| 官方来源 | DeepSeek Harness |
| 主题 | #agents · #engineering · #open-source |
先记一句话
官方架构文档的前提是:你知道 Cordis。不知道就先记它的作用——插件往共享上下文里注册服务、类型化事件和可逆副作用。没有一块不能换的核心:模型适配、工具注册表、会话日志、agent 循环都是插件。
profile 和 bundle
一次运行中的 dsh 是启动时组合出来的插件树。
- profile:一套命名组合。自带模板是
web和headless。里面记它要叠哪些 bundle,以及你自己的cordis.patch.yml。 - bundle:一层可打补丁的插件包。
dsh-base是每套 profile 的第一层(模型、工具、持久化、沙箱、凭证);dsh-web-app加浏览器界面;dsh-headless做一次性无服务端跑法。
叠加顺序是:各 bundle → profile 的 patch → home 级 patch → --patch。想看机器上真正启动的树:
sh dsh --profile web --dump-config
它打印的任一行都可以被你的 patch 换掉。
会话日志才是模型看到的东西
官方有一句硬规律:Model-visible means logged. 能进模型请求的东西,必须能从 session log 重建。Fork、续跑、转录、遥测都从这条流来。你要给模型看到新输入,就要加一条会话事件,不是在循环里偷塞一段文字。
turn 和 step
官方把一次模型请求加它调的工具叫 step;零个或多个 step 组成 turn。输入进一个 inbox。agent/pre-step 决定模型看到什么;监听器可以改写或拒绝。拒绝也会留一条耐久 turn,只是没花 step。
你要拦截请求、工具或 turn,挂 agent/* 或 tools/* 事件,不要去改循环本体。
新行为挂哪
官方给了对照表。常用几条:
| 你想做 | 挂哪 |
|---|---|
| 加模型厂商 | ctx.llm |
| 加面向模型的能力 | ctx.tools,它的 schema 会进提示组装 |
| 加人类命令 | ctx.commands,不走模型 turn |
| 加文件系统或策略 | ctx.fs 或 fs/* 事件 |
| 限制进程 | ctx.sandbox |
常见问题
dsh、profile、bundle 有什么区别?
dsh 是启动器。profile 是一套组合。bundle 是一层可打补丁的插件包。
为什么不要直接改 agent loop?
官方说新行为应挂在已文档的扩展点上。改循环本身要同步更新架构图。开发者预览阶段,贴核心循环会让你每次升级都要合并冲突。
官方来源:DeepSeek Harness architecture.md。本文只提炼决策导图,包名与事件表以仓库为准。
📚 来源与延伸
本页内容基于以下权威来源整理,可验证、可引用。
- 🔗 官方原始来源
- 👤 人物档案:DeepSeek Harness
- # 主题:Agent 智能体AI Agent 的构建、协作与落地
- # 主题:工程实践API 调用、提示词与系统设计
- # 主题:开源开源模型、框架与生态
引用规范:请注明来源为老金出海(laojinchuhai.com)并保留原文链接。
老金出品 · 用 AI 提效
AllModelsAPI一个 key,调多家大模型
AllModelsAPI 是多模型 API 中转站:一个 key 调多家模型,OpenAI 兼容接口,现有代码改个 base_url 就能迁。它不是演示品——我们自己的生产环境每天都在用。
更多老金产品:Sellenca · 365AIOrg · 365Loopa · 365 Ops · 365Skill
相关内容
按主题 / 人物 / 专区自动互通