Skip to content

参考资源与能力地图

这是本教程的收尾章节。前面各章带你写过一个插件、注册过服务与事件;这一章回答三个问题:接下来去哪查文档DSH 的能力分布在哪里想实现某个目标该动哪个扩展点。全文术语保留英文原词,中文仅作解释。

官方文档导航

DSH 官方文档站(中英双语,源码在仓库 docs/ 下,同目录 .zh.md 为经评审的中文对侧)位于:

https://deepseek-harness.github.io/deepseek-harness/

站点按 guide(入门)→ develop(开发)→ reference(参考) 组织,与仓库 docs/ 的对应关系如下:

站点模块站点路径仓库源(docs/)
入门 Guide/guide/quickstart/guide/providersuser/guide/(Web UI 使用、模型配置)
SDK/guide/python-sdkuser/guide/python-sdk.md
开发 · 基础 Basics/develop/basic/user/develop/basic/(第一个插件、开发 Tool、配置、打包)
开发 · 框架能力 Framework/develop/framework/user/develop/framework/(生命周期、服务与依赖、事件系统)
开发 · 实战 Practice/develop/practice/user/develop/practice/(能力三层拆分、LLM 适配器)
Cordis 框架教程/develop/cordis-tutorial/cordis-tutorial/(7 章动手实践)
参考 · 概念 Concepts/reference/(index=架构)、/reference/cordis-primer/reference/capability-seams/reference/agent-lifecycle/reference/tool-execution-pipelinearchitecture.mdcordis-primer.mdcapability-seams.mdagent-lifecycle.mdtool-execution-pipeline.md
参考 · 生成参考 Generated reference/reference/config-catalog/reference/tool-catalog/reference/persistence-catalog三份 catalog(见下文)
参考 · Cordis API/reference/cordis-api/cordis-api/(Context / Events / Fiber / Registry / Service)
参考 · 开发手册 Cookbook/reference/cookbook/cookbook/(新增 Package、Tool、LLM Adapter、Conversation Node、扩展模式)
参考 · 子系统 Subsystems/reference/subsystems/subsystems/(每个子系统一页,含生成的 Cordis API 小节)

另有部分仓库内部文档未发布到站点,但对贡献者重要:development.md(开发指南)、testing.md(测试策略)、defensive-patterns.md(防御性模式)、event-producer-consumer.md(事件生产方/消费方矩阵)。

能力地图

能力 seam(seam)是一个可替换能力,含三种角色:Service Definition(声明接口)、Service Provider(实现)、Consumer(通常是面向模型的工具)。core 是只有一份实现的核心主干服务;bundle 是组合包(如唯一的具体循环插件 ctx.agentLoop)。替换一个 seam 的后端即可改变整个产品行为。下表按域列出主要服务及其可替换后端(完整图与全部 60+ 服务见 capability-seams.md):

ctx 键(角色)可替换后端 / 说明
会话与持久化ctx.sessions(core)仅追加的 SessionEvent 日志;ctx.sessionPersistence(seam)→ session-persistence-jsonl / session-persistence-sqlitectx.sessionQuery(seam)→ session-query-sqlite(全文检索);ctx.sessionTitle(seam)→ session-title-first-prompt-llm / session-title-all-prompts-llmctx.sessionProjections / ctx.sessionProjectionCache(core);ctx.sessionTelemetry(seam)→ session-telemetry-otel
模型与提示词ctx.llm(seam)llm-deepseek / llm-pi-ai / llm-replayctx.compaction(seam)→ compaction-basicctx.systemPromptctx.tokenMeterctx.toolResultPrunerctx.agentDefaultModelctx.agentPresets(core)
工具与 Agentctx.toolsctx.agentsctx.commandsctx.planModectx.goals(core);ctx.agentLoop(bundle)ctx.subagents(seam)→ subagent-spawn-in-process / subagent-fork-in-process / subagent-acp / subagent-codex / subagent-claude-code / subagent-dsh-sdkctx.workflowEngine(seam)→ workflow-worker-threadctx.codeRuntime(seam)→ code-runtime-workerctx.skills(seam)→ skill-filesystem / skill-badgectx.userQuestions(seam,UI 前端提供回答方)
执行与沙箱ctx.sandboxPolicyctx.shellEnvctx.e2b(core)ctx.fs(seam)→ fs-local / fs-sandbox / fs-e2bctx.shell(seam)→ bash-local / bash-sandbox / pwsh-localctx.subprocess(seam)→ subprocess-local / subprocess-e2bctx.sandbox(seam)→ sandbox-localctx.terminals(seam)→ terminal-bashctx.jobs(seam)→ jobs-localctx.spillStore(seam)→ spill-localctx.lsp(seam)→ lsp-local
Web 与宿主ctx.webServerctx.clientModulesctx.apiProxyctx.typert / ctx.typertGatewayctx.dynamicCordisRunner / ctx.cordisInspectctx.workspaceRegistryctx.messageFeedback(core)ctx.web(seam)→ web-search-exa / web-search-perplexity / web-search-deepseek / web-fetch-httpctx.directoryPicker(seam)→ directory-picker-native / directory-picker-browsectx.attachments(seam)→ attachment-local
配置与安全ctx.storageDomainctx.permissionPresetsctx.invariants(core)ctx.settings(seam)→ settings-filectx.credentials(seam)→ credentials-localctx.storage(seam)→ storage-json / storage-sqlitectx.approval(seam)→ acp(桥接)等回答方

几个关键替换示例:ctx.fs 指向远程沙箱时,Bash、PTY 与 LSP 一并搬过去(共享同一个执行世界);ctx.subagents 同一接口后既能新建进程内子 agent,也能把轮次委派给 ACP、Codex、Claude Code 或 dsh-sdk 子进程。

生成式参考三目录

仓库把三类信息做成了生成 + 门禁的权威参考(中文版经双语配对维护,pnpm run doc-sync 校验新鲜度):

  • config-catalog(插件配置目录):以部署为轴,逐个列出可加载包的 config: 块声明与 Requires: 注入;由 scripts/gen-config-catalog.ts 生成,并与运行时 schemastery schema 交叉核对,粘贴内容无法隐藏 loader 接受的字段。
  • tool-catalog(Tool Schema 目录):以模型为轴,列出所有面向模型的工具的 name / description / JSON Schema 原文;由 gen-tool-catalog.ts 启动式生成(挂载每个工具包、调用 ctx.tools.schemas() 读取真实 schema),并带完整性守卫——新增工具包未登记即失败。
  • persistence-catalog(持久化事件目录):以记录为轴,是完整 SessionEventMap 词汇的权威参考(含 surface 徽章与 JSDoc);由 gen-persistence-catalog.ts 做 AST 遍历生成,强制每条事件有描述。

三者分别是部署配置面、模型工具面、持久化事件面;与 subsystems/(词汇)、cordis-api/(接线)互补,构成「如何配置、模型看到什么、磁盘记录什么」的三维坐标。

常见扩展点速查表

想实现什么,先找对扩展点(选自 architecture.md 的归属表):

目标扩展点
添加模型提供方ctx.llm 上注册适配器
添加面向模型的能力ctx.tools 上注册;其 schema 自动加入提示词组装
让会话拥有不同能力集合组装一个 agent preset(服务行需要 isolate realm)
添加 shell 执行注册 ctx.shell 后端;本地后端经 ctx.subprocess spawn
添加持久化终端执行注册 ctx.terminals 后端和 tool-terminal
添加用户命令ctx.commands 上注册;无需模型轮次即可分派
添加后台工作ctx.jobs 上注册;job_* 工具负责收集或停止
添加文件系统访问或策略注册 ctx.fs 提供方,或监听 fs/* 事件
限制所启动的进程使用 ctx.sandbox 后端;消费方在 spawn 前包装 argv
拦截请求、工具或轮次使用相应 agent/*tools/* 事件;agent/turn-stopping 可停止轮次
添加模型可见上下文调用 agent.inject();落入下一次获准的请求
添加 UI 或编辑器集成驱动 ctx.agents 并从 session/event 渲染
添加 Web Chat 节点注册 ConversationNodeDefinition + keyed renderer
添加持久会话状态扩展 SessionEventMap;从日志渲染和回放
生成会话标题注册唯一的 ctx.sessionTitle 提供方
管理同会话目标使用 ctx.goals;经 agent/* 续跑
fork 活跃会话ctx.sessions.fork(source, boundary?, childSessionId?)
限定注册到单个 agent使用该 agent 的 agent.ctx

下一步建议

  1. 动手改造:从 packages/ 里挑一个与你目标最接近的 tool-* 包复制改造,按 cookbook/adding-a-tool.mdadding-a-package.md 的步骤走一遍,再对照 subsystems/tools.mdToolDefinition 字段。
  2. 先读概念再写代码:开工前通读 cordis-primer.mddefensive-patterns.md(写生命周期、并发、子进程、清理代码前必读),能避开仓库踩过的绝大多数坑。
  3. 遵守仓库纪律:注册是 effect、每个注册都要有 disposer;面向模型/邻近模型的包 README 要有 Model Experience 章节;改动文档后跑 pnpm run doc-sync
  4. 查表定位:遇到新能力需求,先回到本页「常见扩展点速查表」,再从 capability-seams.md 找对应 seam 的三个角色和已有实现,最后读该子系统的参考页确认类型与事件签名。

至此,你已经拥有 DSH 插件开发的完整地图——祝改造愉快。