7.2
深览指数
科技人人都是产品经理·叶小钗··AI 生成
DeepSeek Harness 桌面端来了!带你拆解核心机制
文章围绕 DeepSeek Harness(DSH)的插件化架构展开,核心论点是「Everything is a Plugin」——模型接入、工具、技能、会话、Agent Loop 等所有能力均通过插件实现,由 Cordis 管理生命周期与服务依赖。作者按插件的类型、运行机制和协作流程逐层拆解,并以订单查询插件为例,给出了从环境搭建到代码实现、再到配置加载与验证的完整教程,展示如何将业务逻辑接入 DSH。结尾对比了同样任务的手动编码与使用「创造模式」让 Agent 自生成插件的差异,指出后者仍需要人能看懂报错和修正代码。适合已了解基础 Agent 概念、想上手具体框架或评估插件化架构技术方案的开发者阅读。原文 ↗
核心观点
- ▍DeepSeek Harness 的核心机制是「Everything is a Plugin」——模型接入、工具、技能、Agent Loop 等所有能力都通过插件实现,由 Cordis 统一管理生命周期与服务依赖,使用者可以按需替换组合,无需修改主代码。
- 01Agent Loop 本身也是一个插件(agent-loop),负责组织任务:整理上下文 → 交给模型 → 模型选择工具 → 工具执行 → 结果返给模型 → 模型回答,直到无待续工作结束。
- 02插件类型按职责分为工具插件(如查询订单)、模型适配插件、服务插件(公共能力)、策略插件(权限/超时)、界面插件和外部系统接入插件;按运行位置分为 Host 插件(服务端)和 Client 插件(浏览器页面端)。
- 03Cordis 通过 inject 声明实现依赖管理:插件声明需要 tools 服务,Cordis 等待 tools 就绪后才激活该插件;依赖消失时自动停用并清理,恢复后重新加载。
- 04事件系统采用瀑布式(tools/pre-execute、tools/execute、tools/post-execute)和广播式(tools/result)两种方式,以营业时间禁止删单为例,展示了如何在工具执行前介入检查,事件中必须先调用 next() 才能让后续监听器处理。
- 05生命周期管理要求插件通过 ctx.effect() 注册需清理的资源(定时器、网络连接),插件卸载时 Cordis 自动撤销已注册的工具和监听器,也执行 effect 中登记的清理函数。
- 06插件通过 apply(ctx, config) 注册能力,通过 ctx.tools.register() 注册工具;工具注册后模型才有机会调用,执行时机由 Agent Loop 决定。
- 07文章给出了完整的订单查询插件代码(orders.ts + index.ts),包含参数声明(parameters)、输出结构声明(output.schema)、结果格式化(render)和执行逻辑(execute),并配以 YAML 配置文件的加载步骤。
- 08「创造模式」可以让 Agent 根据自然语言需求自行生成插件并安装,但实际测试中出现了参数格式不符合 DSH 当前版本接口要求的报错,需要人工检查并修改代码后应用才能恢复正常。
反方 / 局限
- — 作者提到插件替换(如替换 Agent Loop)后,任务执行、取消、会话恢复等工作必须一并重写,不能只写一个反复调用模型的循环——这暗示了插件化灵活性的代价是核心功能替换的门槛不低。
- — 创造模式生成插件的参数格式报错表明,尽管框架试图让 Agent 自生成代码,但当前版本下仍需要使用者能看懂报错、定位生成的文件并修正代码,不具备完全自动化的能力。
35 分钟 · 3 卡片 · 5 资料
读原文 →