兰 亭 墨 苑
期货 · 量化 · AI · 终身学习
首页
归档
编辑文章
标题 *
URL 别名 *
内容 *
(支持 Markdown 格式)
# DeepSeek Harness:当 Agent 学会“自己组装自己” > 一个开源框架如何重新定义 AI 与代码的关系 2026 年 8 月 13 日深夜,DeepSeek 在发布 V4 Pro 正式版几个小时后,悄悄开源了一个叫 **DeepSeek Harness** 的项目。命令行工具名 `dsh`,MIT 协议,仓库挂在 GitHub 上。 当时没人能预料到接下来发生的事。 **发布半小时内,GitHub Star 破万。24 小时内突破 5 万。五天后,14.9 万**。社区在五天里开发了超过 **5100 个插件**,涉及 3500 多位作者。国家超算互联网在 8 月 15 日宣布上线它,腾讯 QQ 在同一天宣布接入它。 一个“Agent 运行时框架”——这个听起来有点抽象的定位——为什么能让开发者社区如此疯狂? 答案藏在一个公式里:**Model + Harness = Agent**。 ## 一、Harness 到底是个什么东西 理解 Harness,可以从一个直白的比喻开始。 **模型是一匹马力很强的马**——它能跑、能拉车、能理解复杂指令。但你没法直接骑它上路,你需要**缰绳、挽具和车厢**。Harness(挽具)就是那一整套把马力转化为“实际载具”的东西:它连接模型与文件系统、终端、网页、API、权限、计划、上下文。 DeepSeek 官方给出的定义很清晰:**Harness 是“Agent 的执行神经系统”**。模型负责“思考和生成”,Harness 负责“把思考接入现实世界”。两者合起来,才是能自主行动、把任务真正干完的 Agent。 这和 Claude Code、Codex 有本质区别。Claude Code 和 Codex 是**成品**——模型、工具、Agent 循环被厂商深度封装进一个壳里,用户拿到的是一套配置好的“精装房”。而 DeepSeek Harness 是**底盘**——它把房子的施工图和所有预制件都开源了,并告诉你:墙随便拆,零件随便换。 这个定位差异,决定了后面所有事情。 ## 二、核心原则:一切皆插件 “一切皆插件”听起来像是一句营销口号,但在 DeepSeek Harness 里,它是**字面意义上的工程现实**。 官方架构文档列出的最核心七个包——**Session(会话日志)、System Prompt(系统提示组装)、Tools(工具系统)、Agent(Agent 注册与接口)、Agent Loop(智能体循环)、Scope(作用域注册)、LLM(模型适配接口)**——在传统 Harness 中都属于“不更新版本不会动的核心组件”。但在 DSH 里,它们全部是插件。 再往外展开,默认模型选择、持久化存储、Sandbox、审批策略、设置、凭据管理,也都是插件。甚至**前端 UI 组件**也是插件。 这意味着什么?意味着**没有“特权核心”**。官方架构文档的原话是:**“不存在需要打补丁的特权核心:你通过把插件挂载到其他插件旁边来扩展 dsh。”** ### 2.1 Cordis:让“可逆”成为基建 这套插件体系的底层是 **Cordis**,一个基于时空可组合性理论的元框架。Cordis 只提供六种最基础的操作:装一个组件(use)、记录一次可撤销修改(effect)、提供一种能力(set)、读取一种能力(get)、隔离一种能力(isolate)、加一层使用规则(intercept)。 剩下的事情由 Runtime 自动完成。**关键机制是“可逆副作用”**: 每一次插件对共享环境的修改,都会向 runtime 返回一个对应的**逆操作**。插件卸载时,runtime 按相反顺序执行这些逆操作,**把插件留下的一切痕迹干干净净地撤销**。 传统插件框架卸载插件时,需要开发者手动清理自己注册的 listener 或 timer,漏一个就是内存泄漏。Cordis 把这类注册动作统一包装成可撤销的操作,**卸载时由框架自动回滚**。 这带来的直接收益是:**热替换是安全的**。换掉一个模型适配器、替换一个工具,不需要重启整个进程。依赖被替换服务的插件会自动重新加载,不依赖的插件完全不受影响。 ### 2.2 三种核心抽象 理解了 Cordis 的约束,再看 Harness 内部如何组织代码。三个概念反复出现: **Context(上下文)**:所有插件共享的同一个实例,承担服务注册、事件发布/订阅的职责。可以理解成一条共享的服务总线。 **Service(服务)**:插件向外暴露能力的出口。插件把具名服务挂到 `ctx` 上(例如 `ctx.tools`),其他插件按 key 消费,不关心实现方是谁。 **inject(注入)**:插件声明自己依赖哪些服务,例如 `inject: ['tools']`,表示“等 `ctx.tools` 就绪后我才启动”。 三者组合成一张依赖图,Cordis 据此自动调度加载和卸载顺序。 ## 三、四种模式:一套框架,四种用法 DeepSeek Harness 预置了四种运行模式,每种模式自动加载不同的插件集: **标准模式**:功能完整的编码 Agent,涵盖文件编辑、Shell 访问、网页搜索、Skills、计划模式、子代理和工作流。这是“默认的那套”。 **PTC 模式(程序化工具调用)**:在标准模式基础上增加 Code Mode SDK。模型不再逐个调用工具,而是**生成 TypeScript 程序来组合多步操作**,将原本需要五次往返的调用压缩为一次执行。 **极简模式**:仅保留两个工具——持久化 bash 和字符串替换编辑器。这正是 DeepSeek V4-Pro 模型卡脚注中标注的、厂商运行代码智能体基准测试所用的 Agent 框架。 **创造模式**:在标准模式全部能力之上,提供运行时检查、Cordis 插件实验和预设编写指导。开发者可以用它来**创建自定义 Agent 预设**——相当于“用 Agent 造 Agent”。 一个值得注意的细节:**四种模式全部由插件组合定义**,模式本身不是硬编码的枚举值,而是“一套预先配置好的插件清单”。 ## 四、会话日志:模型看到的一切,都可以回溯 DeepSeek Harness 的 Session Event Log 有一个硬性约束,被写成仓库级架构不变量: **任何进入模型请求的信息,都必须能够从 Session Event Log 重建。** 这意味着 Loop 不维护一份独立的、可偷偷修改的 conversation array。用户消息、助手消息、工具调用、工具结果——全部由事件日志派生。原始 assistant/chunk 保留 UI 与回放细节,但不会作为重复消息进入模型请求。 配套的 **Trajectory 视图**让开发者可以按来源追溯:哪些系统提示词段落被激活、每次工具调用的输入和返回、模型的原始响应(含思维链)、每个步骤的耗时。 **找到问题节点后,可以从该节点 Fork 出新会话,修改配置后重新运行,而不需要从头开始整个任务。** 这种“在任意步骤分叉重放”的能力,是传统 Harness 做不到的。 ## 五、真实的落地场景:DSH 到底能干什么 ### 5.1 跨仓库大规模代码迁移(Headless 批量模式) 将大型 TypeScript 项目从 fetch API 迁移到内部 HTTP 客户端,涉及 200 个文件。使用 Headless 模式逐文件批量运行,每次任务独立会话。 ### 5.2 Agent 行为取证调试 Agent 完成复杂重构后,某个中间步骤出错。在 Trajectory 视图里定位到问题节点,从该节点 Fork,修改提示词后重新运行。 ### 5.3 把 Claude Code 和 Codex 当子 Agent 编排 DSH 内置了将 Claude Code 和 Codex 作为子 Agent 调用的 Provider——通过解析 PATH 里的对应二进制实现委托。一个复杂任务可以:前端样式调整交给 Claude Code,后端 API 重构交给 Codex,整体编排用 DSH。 ### 5.4 自定义 Agent Preset 团队需要一个专门做 API 文档生成的 Agent:固定工具集(只读文件 + OpenAPI 解析脚本),固定模型(长上下文擅长结构化输出),固定系统提示词。在 Creator 模式里写成 `cordis.patch.yml`,提交到仓库,团队成员直接使用。 ## 六、代价与注意事项 DeepSeek Harness 目前仍是**开发者预览版**,官方明确提示:**存在破坏兼容性变更的可能,会话格式不提供兼容承诺**,升级后旧会话可能无法读取。建议用于评估和内部试验,不适合作为唯一的生产工具。 **官方安全说明也强调:DSH 尚未接受安全审计,沙箱、审批与权限控制不能保证隔离**。 此外,DSH **目前不接受外部代码贡献**,鼓励的是 GitHub Discussions 和插件开发。 ## 七、真正的野心:自进化的 Agent 运行时 如果只看到“可替换的插件”,会低估 DeepSeek 的野心。 与 DSH 一同被摆上台面的,还有一篇由北京大学和 DeepSeek-AI Harness 负责人**崔添翼**共同完成的论文《A Programming Paradigm for Spatiotemporal Composability》。论文中提出的模式与 DSH 架构基本一致——**它是理论基础,DSH 是工程验证**。 DSH 最值得注意的包是 **`@deepseek-ai/dsh-tool-cordis`**,官方称之为“**自指的 Cordis 工具集**”。它给 Agent 提供五个工具: - `cordis_inspect`:对当前进程只读巡检——哪些服务在运行、注册了哪些工具 - `cordis_define`:现场定义一个小插件包 - `cordis_run`:把插件放入沙箱执行 - `cordis_stop` / `cordis_undefine`:卸载动态包 **Agent 可以检查自己运行的框架、现场编写并运行动态插件、用完再卸载——全程不动配置文件、不装 npm 包、不重启进程**。 配合“双半插件”设计(宿主半跑在服务端管逻辑,浏览器半跑在网页里管 UI),DSH 的“一切皆插件”在字面意义上成立:**前端 UI 组件也是插件,浏览器里运行着一个独立的 Cordis 客户端运行时**。 自省 + 现场改装——**这是“可进化 Agent”的雏形**。论文的结论部分恰好把“自进化 Agent 运行时”列为这套理论未来的验证方向。 ## 八、DeepSeek 为什么做 Harness 这件事需要和同一周发生的另外两件事放在一起看。 **第一件**:V4 Pro 正式版。相比预览版,正式版重点补齐的是 **Agent 能力**——工具链式执行、软件工程任务、长任务持续工作。一句话:模型本身正在为“被放进一个强 Harness 里持续干活”做准备。 **第二件**:API 涨价。V4 系列改为峰谷分时计价,高峰时段价格明显上浮。当价格优势缩水,DeepSeek 更需要从“卖模型”升级到“**卖模型 + 执行层**”。 **Harness 是这场升级的载体。** ## 九、和你的 PAOS 的关系 DSH 的“一切皆插件”和你 PAOS 的“各组件各司其职”是**同一个方向**:WeClaw 负责连接与编排、Knowly 负责记忆、yuangs 负责执行。而 DSH 提供的是一个**可被定制、可被替换的 Agent 运行时底座**。 它的“Seam(能力接缝)”设计尤其值得关注:**只要插件实现了同一个 Seam 接口,就能零侵入地替换系统能力**。这意味着你可以把自己的组件以插件形式接入 DSH,而不需要修改它的源码。 “Agent 可以检查自己、现场改装自己”——这个能力,恰好是你一直在做的事:**用工程化方法,把 AI 从辅助工具推向生产力跃迁**。 ## 结语 DeepSeek Harness 的爆火,本质上是一个被长期忽视的需求终于被看见了: **AI Agent 不应该是一个被厂商封装死的黑箱。它应该是一个可以被理解、被检查、被改装、被进化的系统。** 当每一个组件都可以被替换,当模型看到的一切都可以被回溯,当 Agent 可以检查并改装自己的运行时——**Agent 就从“工具”变成了“可成长的系统”**。 Model + Harness = Agent。 而这个等式里,Harness 才是那个真正决定 Agent 能走多远的变量。
配图 (可多选)
选择新图片文件或拖拽到此处
标签
更新文章
删除文章