skip to content
我的博客

DSH 插件开发:从零写出你的 Cordis 插件

/ 4 min read

DeepSeek Harness(下文简称 DSH)是一个插件化的 Agent Harness SDK,而支撑它“插件化”三个字的,是底层框架 Cordis:插件是普通的 TypeScript 模块,通过统一的上下文对象挂载服务、注册事件、声明工具,再由一个 YAML 文件组合成完整的运行时。

本站《从零实现 Agent》系列的第 9 章曾经对照过 harness 的插件架构——那是“看懂它在做什么”;这个系列是“亲手做一遍”:跟着官方 Cordis 教程的脉络,从第一个 apply 函数写到能被 Agent 调用的自定义工具。

系列内容依据官方教程 Cordis Tutorial(develop 分支)整理,代码示例在其基础上改编补充,每章开头都给出对应官方章节链接,方便对照阅读。

环境准备

Terminal window
git clone https://github.com/deepseek-ai/deepseek-harness.git
cd deepseek-harness
npm install

官方教程把练习代码放在仓库的 tmp/cordis-tutorial/ 目录下,每章一个子目录,组合文件是 cordis.yml。以第 7 章为例,运行方式是:

Terminal window
cd tmp/cordis-tutorial/07
node --import tsx ../../vendor/cordis/bin.js

--import tsx 让 Node 直接跑 TypeScript;vendor/cordis/bin.js 是随仓库内置的 Cordis 运行时入口。你不需要全局安装任何东西。

章节导航

章节 内容 官方对应
第 1 章:第一个插件 apply 约定、三种插件形态、cordis.yml 组合、两种失败语义 1. 你的第一个插件
第 2 章:生命周期与 effect effect 自动清理、fiber 状态机、dispose 的顺序与异步 2. 生命周期与 effect
第 3 章:服务 Service 类、类型合并、inject 依赖注入、动态重连 3. 服务
第 4 章:事件与分发模式 五种事件分发模式、waterfall 中间件纪律 4. 事件
第 5 章:配置与校验 Schemastery schema、校验失败即 FAILED、!!js 计算值 5. 配置
第 6 章:组合与热重载 id/disabled/分组/isolate、HMR 插件、诊断 PENDING 6. 组合与 HMR
第 7 章:注册工具,进入 Harness defineTool、tools 服务、tools/result 事件、完整组合 7. 进入 harness
附录:API 速查与排错 常用 API 速查表、六个高频坑位 —

学习路线建议

  • 只想要“能跑”:读第 1、7 章——会写插件、会注册工具,就够写大多数扩展了。
  • 想理解框架:按顺序读完 1–6 章,重点是第 2 章(effect 是整个框架的心智模型)和第 3 章(服务与 inject 是 harness 内部的组织方式)。
  • 想参与贡献:全部章节 + 官方 参考文档。

遗留问题

  • 事件系统五种模式的完整行为矩阵,在第 4 章只讲了语义,源码级分析留待后续。
  • harness 自带工具(文件读写、shell 等)的源码走读,可以参考《从零实现 Agent》第 9 章的对照笔记。