# DeepSeek Harness 拆解：一套能拼装的 Agent 架构

- 原文链接：https://mp.weixin.qq.com/s/DeIty-Nn8tQvE4osy7_bpg
- 来源：微信公众号「腾讯程序员」；作者：chino（腾讯 WXG 微信小店前端开发工程师）
- 发布时间：2026-08-14 17:20 CST（页面元数据时间戳）
- 获取时间：2026-08-17
- 原文清洗：保留核心论证、机制、代码和引用结论；移除直播及插件清单等时效性推广信息。

## 正文

DeepSeek 发布的 Agent 产品 DeepSeek Harness（DSH）将模型接入、工具执行、会话记录、循环和界面都组织为插件。原文把重点放在运行时架构：Cordis 如何管理插件生命周期，preset 的 scope 继承链，Code Mode 的隔离选择，以及工具注册如何按作用域遮蔽。常见的“检测工具调用、执行、回填、循环”流程并非本文重点。

## Cordis：插件不是钩子，而是可卸载组件

DSH 使用 Cordis 作为插件运行时。Cordis 是一个 JavaScript 插件框架，关注依赖注入、作用域服务和生命周期清理；原文称 DSH 将其源码 vendor 到仓库并改名为 `@deepseek-ai/cordis`。相较于传统 DI 容器或只提供扩展钩子的方案，Cordis 的插件可声明依赖、响应依赖变化，并在卸载时撤销其对共享环境的影响。

原文把这一能力概括为两个目标：

- **时间可组合性**：组件卸载时，已分配资源、事件注册和状态变更应被安全逆转。
- **空间可组合性**：依赖出现或变化时，相关组件自动激活、停用或重载。

## Fiber 与 effect：将副作用和撤销写在一起

插件可由函数、类或带 `apply` 的对象表示，挂载后由 Fiber 管理生命周期。原文列举状态：`PENDING`、`LOADING`、`ACTIVE`、`FAILED`、`DISPOSED`、`UNLOADING`。声明依赖的插件在依赖未满足时停在 `PENDING`，依赖出现后再激活。

可逆性的核心是 `ctx.effect()`：插件通过它注册监听器、服务、定时器、子组件或上下文修改，并返回撤销函数。运行时累积这些 disposer，在卸载时按 LIFO 顺序执行。子插件的销毁也作为父 Fiber 的 effect 注册，因此父插件卸载会递归清理其子树。原文强调两项保护：disposer 幂等，且异步迭代式 effect 在 guard 失效时停止并仅撤销已经登记的部分。

```ts
ctx.effect(() => {
  const off = ctx.on('tool/result', appendToLog)
  const timer = setInterval(flushBuffer, 1000)
  return () => {
    clearInterval(timer)
    off()
  }
})
```

这种设计类似 React `useEffect` 的“创建与清理相邻”，但 Cordis 在注册时执行 effect，并以明确的逆序和父子级联处理卸载。原文将其价值归为 HMR、运行时插件装卸、自进化 Agent 的回滚前提，以及失败中断后的原子清理。

## 系统边界：运行时保证调用逆，不保证逆正确

Cordis 将框架能力收敛到 `ctx`，并通过 Proxy、生命周期状态机和 HMR 事务约束上下文变更。卸载后的 Fiber 创建 effect 会失败；模块导入失败时可回到旧版本。对外部共享资源、全局变量、公共文件或已经发送出去的数据，原文明确它们不自动可逆。工程上的处理是把资源访问封装为 service，让少数服务实现者承担撤销义务。

原文也给出重要边界：运行时可保证撤销函数会被调用，但不能证明作者提供的撤销函数语义上真的还原了原来的状态。恢复目标是“观察等价”，即恢复前后对可观察操作没有差异，而不要求物理内存布局完全相同。

## Preset、Code Mode 与工具遮蔽

原文把 preset 的继承拆成两层：全局到 preset 是真实的 Cordis scope；preset 到具体会话则是逻辑绑定，多个会话复用同一份已经挂载的预设插件树，避免每次会话重新加载。会话中的预设选择从事件日志中读取最新的 `agent-preset/selected`，缺失时回退到创建默认值。

Code Mode 让模型用 JavaScript 编排多次工具调用。原文称 DSH 选用 `node:worker_threads`，每次执行创建独立 V8 堆，并以内存限制、CPU 利用率和总时限中断执行；调用工具时通过消息通道向宿主请求，仍进入与普通结构化工具调用相同的前置检查、调度和后置处理。文中将其与 Codex 的 V8 isolate 方案比较，但比较内容属于公众号技术解读，未在本条目独立核验。

工具注册按作用域分层：先加载全局工具，再由祖先 scope 覆盖同名条目，经过限制规则后，当前 scope 的直接注册拥有最高优先级。注册本身也属于 effect，因此插件卸载时工具自动撤销。`run_code` 被保留为 Code Mode 传输入口，不能被插件覆盖。

## 结论与边界

原文的主张是：Agent 产品的竞争力不仅来自模型，还来自运行时如何组织组件、隔离修改、热更新能力与工具可见性。DSH 的独特性在于把 agent loop、界面、工具、会话等都放入同一插件生命周期模型，尝试让“装载”和“卸载”对称。

该文是腾讯程序员对 DeepSeek Harness、Cordis 论文和源码的二手技术拆解。文中关于源码结构、隔离比较、插件生态规模及“Agent 界 VSCode”等判断没有在此独立复核；尤其 1000+ 插件仓库、各项目 Star 数和产品前景属于写作时快照，不应作为稳定事实引用。

标签： #主题/AI-Agent #主题/Harness #主题/插件运行时 #节点/可逆副作用 #节点/Fiber生命周期 #节点/Scope继承 #节点/Code-Mode #场景/公众号长文
