dsh · 学习指南
DeepSeek Harness · dsh · 交互式学习指南

从跑起来,
到读懂它。

DeepSeek Harness 是一个「一切皆插件」的开源 agent harness,跑在 Cordis 框架上。 这份指南带你从第一次启动 dsh,到顺着 turn flow 读懂插件化架构, 再到动手写第一个扩展、加入社区。路线图进度会保存在你的浏览器里,随时可以接着学。

# 三分钟跑起来(Node.js ^22.19 或 >=24) $ git clone https://github.com/deepseek-ai/deepseek-harness.git $ cd deepseek-harness && pnpm install && pnpm run build $ pnpm dsh web # → http://127.0.0.1:3080
01 · Mental Model

先建立心智模型

读这个仓库之前,先记住三句话。它们解释了几乎所有设计决策, 也是你在代码里反复遇到的三个模式。

EVERYTHING IS A PLUGIN

一切皆插件

没有特权核心:模型适配器、工具注册表、会话日志、agent loop 本身都是插件,全部可在 cordis.yml 中替换。扩展 = 在树里挂一个新插件;注册 = 可逆的 effect,插件卸载时自动回收。

CAPABILITY SEAM

能力缝隙三角色

一个可替换能力 = Service Definition(接口)+ Service Provider(实现)+ Consumer(使用者)。shell / fs / llm / subagent 都是这个模式——换一个 provider,整个产品的能力随之切换。

MODEL-VISIBLE ⟺ LOGGED

模型可见即可日志重建

凡是进入模型请求的内容,必须能从 session 事件日志重建。只增的 SessionEvent 日志是全仓库的中心:fork、resume、transcript、telemetry 都从这条流派生。

主线剧情:一次 turn 的生命周期

一个 step 是一次模型请求加上它调用的工具;一个 turn 是零到多个 step。 下面这张交互式流程图来自 docs/architecture.md 的 Turn flow, 点击每个阶段看它在做什么——读代码时把调用链往这条主线上挂,就不会迷路。

02 · Roadmap

五步学习路线

按顺序执行,每完成一步就勾掉它(进度存在本地浏览器)。 总计约 2–3 天的精读时间,之后你就可以独立探索了。

STEP 0 · 约 30 分钟
跑起来:先当用户,再当读者

没有上下文的通读效率最低。先把系统跑起来,触发一次核心流程,再带着问题去读代码。

  • 启动 Web UI,像普通用户一样玩一会儿
  • 用 headless profile 跑一次无头任务
  • --dump-config 看你机器实际启动的插件树——任何一行都能被你自己的 patch 替换
pnpm install && pnpm run build && pnpm dsh web
pnpm dsh --profile headless "帮我总结这个仓库"
dsh --profile web --dump-config
STEP 1 · 约半天
读三篇入口文档

先建词汇表,再看代码。这三篇是官方指定的入口,读完你就掌握了全仓库 80% 的关键概念。

  • docs/development.md — 开发指南:命令、目录布局、测试政策
  • docs/cordis-primer.md — Cordis 入门(想更系统就看 docs/cordis-tutorial/);不懂 Cordis 读不懂这个仓库
  • docs/architecture.md — 架构文档,改 packages/ 前必读;里面的 Turn flow 图是整个系统的主线
STEP 2 · 1–2 天
顺着主线读核心包

不要按目录通读。按架构文档里的核心包表,沿 turn flow 的顺序读,每个子系统配 docs/subsystems/ 下的对应文档。

  • packages/core/session — 只增的 SessionEvent 日志,一切的源头
  • packages/core/agent + core/agent-loop — Agent 接口与默认驱动
  • packages/core/tools — 工具注册表与执行管线
  • packages/core/system-prompt — prompt 段落与工具 schema 组装
  • packages/llm/llm — 消息/流式词汇表与模型适配器缝隙
STEP 3 · 约半天
动手改一点东西

能给项目加一个真实可用的小功能,才算读懂了。docs/cookbook/ 就是为此准备的。

  • docs/cookbook/adding-a-tool.md 加一个自己的 tool
  • 进阶:adding-an-llm-adapter.md 接一个自己的模型
  • 系统学扩展点:extension-cookbook.mdadding-a-package.md
  • 平台方向:adding-a-remote-api.md(经 ctx.remote 给远程客户端开 Remote API)、adding-a-session-format-version.md(演进会话日志格式)
STEP 4 · 持续进行
读「为什么」

代码告诉你 what,决策记录告诉你 why 和「为什么不那样做」。这是这个仓库最特别的学习资源。

  • .agents/notes/implemented/ — Agent Notes:按 architecture / process / testing 分类的设计决策记录
  • docs/postmortem/ — 真实故障的事后分析
  • docs/glossary.md — 术语表,读代码卡壳时回来查
学完了?来一场「面试」验证理解

覆盖整条路线的 42 道面试式问答:先自己作答,再点击展开对照答案。

进入深度问答 →
想要更系统的课程?

11 课 × 30 分钟:每课 20 分钟图解精读 + 10 分钟即时批改练习(单选 / 多选 / 问答),从会用、读懂、会改到维护者视角。

进入实战课程 →
03 · Methodology

可复用的开源学习方法论

这八条方法从这个仓库提炼出来,放到任何一个成熟开源项目上都适用。

01

先跑后读

把项目跑起来、触发一次核心流程,再带着具体问题读代码。没有上下文的通读效率最低。

02

先建词汇表

每个成熟项目都有自己的术语(turn / step / seam / bundle / profile)。先读 glossary 和架构文档,把词汇和代码实体对上,之后读代码只是填细节。

03

追一条端到端主线

选一个核心场景(发一条消息到收到回复),顺着调用链追完。主线通了,分支都是挂上去的。

04

找「生成的地图」

机器生成的索引是定位代码的最快路径:module-graphevent-producer-consumer(每个事件谁生产谁消费)、tool-catalogconfig-catalog

05

把测试当行为规格读

snapshot / e2e 测试告诉你「系统对外应该长什么样」,比实现代码更稳定,也更能经得起重构。

06

读决策记录,不只是代码

代码是 what,ADR / Agent Notes / postmortem 是 why。判断一个项目值不值得深入,看它的决策记录质量就知道。

07

用一个小改动验证理解

能给项目加一个无关紧要但真实可用的小功能,才算读懂了。cookbook 类文档价值最高就是这个道理。

08

用 agent 辅助探索

架构文档自己就推荐这么做——让 AI 帮你定位、总结、画调用链,你负责提问和验证。

04 · Community

加入社区

社区入口分中英文两圈。想被社区认识,最快的方式不是提问, 而是用 cookbook 写一个小插件并挂到 dsh-plugin topic 上。

DeepSeek Harness 企微小助手二维码
企微小助手
扫码添加,填问卷后受邀入群
DeepSeek Harness 团队微信公众号二维码
微信公众号
团队动态与发布公告

建议的参与节奏

  1. 先潜水两周:读 GitHub Discussions、Discord / 企微群,摸清大家在关心的问题
  2. docs/cookbook/ 写一个自己的小插件
  3. 给插件仓库挂上 dsh-plugin topic 发布——这是被社区认识最快的方式
  4. 想从学习走向贡献时,读仓库根目录的 CONTRIBUTING.md
05 · Reference Map

资源速查

仓库内的关键路径,按用途分组。点击任意路径即可复制。

入口文档

生成的地图 · 定位代码的最快路径

核心包 · 沿 turn flow 阅读

动手与深入