dsh 零基础入门教程
一套面向初学者的 DeepSeek Harness(
dsh)入门教程。不讲术语,讲人话;不堆概念,打比方。读完这六篇,你应该能自己动手拼出一个属于你的 Agent 产品。
这套教程适合谁
适合你,如果:
- 你听过
dsh/ DeepSeek Harness,但打开仓库就被 250 个包吓退了 - 你知道什么是 AI Agent,但没搞懂「插件框架」「能力接缝」「Profile」这些词到底在说什么
- 你想在 dsh 之上做点自己的东西,却不知道从哪一刀切进去
- 你读官方文档时被「Service Definition」「waterfall」「effect」拦住了
不太适合你,如果:
- 你已经能熟练写 Cordis 插件 —— 直接去看 官方文档 更快
- 你只想找个能用的聊天机器人 —— dsh 不是拿来即用的软件,是拿来拼装的底座
- 你不想碰命令行和 YAML —— 这套教程里有大量配置和命令
三十秒版本
如果你现在只有半分钟,记住这一句就够了:
dsh不是一个 Agent 程序,而是一台「用一条命令拼出一个 Agent 程序」的发射台。
它内部的每一个零件 —— 包括「怎么调模型」「怎么执行 bash」「怎么记会话日志」,甚至「Agent 的主循环本身」—— 都是可以拆下来换掉的插件。你不需要改它的源码,只需要在配置文件里点名要哪些零件、不要哪些。
六篇阅读路线
| 篇目 | 主题 | 一句话收获 | 类比锚点 |
|---|---|---|---|
| 第 0 篇 | 先跑起来 | 用三条命令亲眼看到 dsh 动起来 | 先去 4S 店坐进车里 |
| 第 1 篇 | 核心原理与设计理念 | 明白「一切皆插件」到底意味着什么 | 乐高 vs 一体成型玩具 |
| 第 2 篇 | 整体组成与模块职责 | 看懂 250 个包是怎么分层的 | 一家餐厅的岗位表 |
| 第 3 篇 | 运行机制与启动流程 | 从敲回车到拿到答案,中间发生了什么 | 餐厅开门到一桌客人吃完 |
| 第 4 篇 | Profile / Bundle / Patch | 掌握定制 dsh 的唯一正确姿势 | 装修:套餐 / 建材包 / 红笔修改 |
| 第 5 篇 | 动手实战 | 真的拼出一个能跑的东西 | 照着菜谱做一道菜 |
赶时间?跳过第 0 篇直接读第 1、4 篇,也能拿到 80% 的收益。想动手?直接跳到第 5 篇,遇到不懂的再回头翻第 4 篇。
术语速查表
第一次看到这些词,先扫一眼这张表就够了。每篇正文里还会用「术语小卡片」再讲一遍。
| 术语 | 一句话解释 | 生活化类比 |
|---|---|---|
| Plugin(插件) | 一个往共享上下文里「贡献服务 / 监听事件 / 注册能力」的模块。dsh 里一切都是插件 | 餐厅里一个可替换的岗位 |
Context(ctx) | 所有插件共享的「服务仓库」。要什么能力就ctx.工具、ctx.模型,不用认识具体实现 | 一面工具墙,按需取用 |
| Service Definition | 一个能力的接口标准(「文件系统应该长什么样」) | 插座的国家标准 |
| Provider | 能力接口的具体实现(「本地文件系统」「沙箱文件系统」) | 某个品牌的插头 |
| Consumer | 使用能力的一方,通常是暴露给模型的工具 | 插在插座上的电器 |
| Seam(接缝) | 一个可替换能力 = Definition + Provider + Consumer 三件套 | 一套「标准 + 厂商 + 电器」的生态 |
| Effect(效应) | 通过ctx.effect()注册的贡献,插件卸载时会自动回滚 | 魔术贴,撕掉不留痕 |
| Profile | 一个命名的组合方案,存在$DSH_HOME/profiles/<名字> | 装修套餐名 |
| Bundle | 一个 npm 包,携带一份cordis.patch.yml,贡献「配置行 + 代码」 | 一层建材包 |
| Patch | cordis.patch.yml补丁清单,按 id 改写某行配置或插入新行 | 图纸上的红笔修改 |
| Step | 一次模型请求 + 它调用的工具 | 一轮「点菜 → 做菜」 |
| Turn | 零到多个 Step,直到没人再欠谁为止 | 一桌客人吃完整顿饭 |
| Session | 只追加的事件日志,是模型能看到的历史的唯一来源 | 餐厅的流水账本 |
三条贯穿全系列的原则
这三句话会在不同篇章里反复出现,因为它们就是 dsh 的立身之本:
- 没有特权核心。官方文档原话是“There is no privileged core to patch”(
docs/architecture.md:13)。你要加功能,就在旁边挂一个新插件,而不是去改核心代码。 - 注册即效应,卸载即回滚。所有贡献都通过
ctx.effect()/ctx.on()挂上去,撕得干净。这是热重载和安全卸载的基础。 - 模型可见即已落日志。任何送到模型面前的东西,都必须能从会话日志里重建出来(
docs/architecture.md:121)。
这套教程和官方文档是什么关系
本系列是「理解层」的转译,不是官方文档的替代品。
- 你想搞懂它为什么这么设计 → 读本系列
- 你要查某个字段的准确含义→ 读 docs/architecture.md 和 docs/cordis-primer.md
- 你要动手加一个包 / 工具 / 模型适配器→ 读 docs/cookbook/
- 你想看完整的包依赖关系→ 读 dsh-目录结构分析.md
本系列的每一处结论都标注了源码路径和行号,你可以随时回查验证。但教程为了好懂会做简化,真正动手时请以官方文档为准。
开始之前
你需要:
- 一台装了 Node.js 的机器(要求
^22.19 || >=24) - 一个终端(Windows 的 PowerShell / Git Bash,或 macOS / Linux 的终端都行)
- 大约 90 分钟的总阅读时间
不需要你提前懂 Cordis、懂 TypeScript、懂事件溯源 —— 这些都会在路上讲。
👉[从第 0 篇开始]