dsh-plugin-dev-kb 1.0.8 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (188) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.en.md +6 -6
  3. package/README.md +6 -6
  4. package/kb/INDEX.md +21 -5
  5. package/kb/README.md +11 -10
  6. package/kb/extra/AGENTS.md +4 -4
  7. package/kb/extra/cookbook/adding-a-remote-api.md +197 -0
  8. package/kb/extra/cookbook/adding-a-remote-api.zh.md +197 -0
  9. package/kb/extra/cookbook/adding-a-vendored-package.md +2 -2
  10. package/kb/extra/cookbook/adding-a-vendored-package.zh.md +2 -2
  11. package/kb/extra/deepseek-llm-api-wire-extensions.md +163 -0
  12. package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +163 -0
  13. package/kb/extra/development.md +8 -14
  14. package/kb/extra/development.zh.md +8 -14
  15. package/kb/extra/event-producer-consumer.md +55 -48
  16. package/kb/extra/event-producer-consumer.zh.md +58 -51
  17. package/kb/extra/glossary.md +1 -1
  18. package/kb/extra/glossary.zh.md +1 -1
  19. package/kb/extra/graph-atlas.md +0 -2
  20. package/kb/extra/graph-atlas.zh.md +0 -2
  21. package/kb/extra/i18n/README.md +4 -4
  22. package/kb/extra/i18n/README.zh.md +4 -4
  23. package/kb/extra/i18n/style-samples.md +2 -2
  24. package/kb/extra/module-graph.md +646 -926
  25. package/kb/extra/module-graph.zh.md +648 -928
  26. package/kb/extra/postmortem/0001-acp-default-export-drops-inject.md +2 -2
  27. package/kb/extra/postmortem/0001-acp-default-export-drops-inject.zh.md +2 -2
  28. package/kb/extra/postmortem/0002-js-expression-disabled-filesystem-tools.md +2 -2
  29. package/kb/extra/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +2 -2
  30. package/kb/extra/postmortem/0003-web-agent-gui-feedback-loop.md +2 -2
  31. package/kb/extra/postmortem/0003-web-agent-gui-feedback-loop.zh.md +2 -2
  32. package/kb/extra/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +1 -1
  33. package/kb/extra/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +1 -1
  34. package/kb/extra/rescope.md +2 -2
  35. package/kb/extra/rescope.zh.md +2 -2
  36. package/kb/extra/subsystems/agent-team.md +28 -4
  37. package/kb/extra/subsystems/agent-team.zh.md +28 -4
  38. package/kb/extra/subsystems/attachment.md +168 -7
  39. package/kb/extra/subsystems/attachment.zh.md +168 -7
  40. package/kb/extra/subsystems/extensions.md +18 -0
  41. package/kb/extra/subsystems/extensions.zh.md +18 -0
  42. package/kb/extra/subsystems/feedback.md +4 -4
  43. package/kb/extra/subsystems/feedback.zh.md +4 -4
  44. package/kb/extra/subsystems/todo.md +32 -0
  45. package/kb/extra/subsystems/todo.zh.md +32 -0
  46. package/kb/extra/subsystems/webhook.md +70 -0
  47. package/kb/extra/subsystems/webhook.zh.md +70 -0
  48. package/kb/extra/testing.md +15 -10
  49. package/kb/extra/testing.zh.md +13 -8
  50. package/kb/extra/web-styling.md +4 -0
  51. package/kb/extra/web-styling.zh.md +4 -0
  52. package/kb/meta/search-index.json +309 -177
  53. package/kb/meta/site-pages.txt +183 -167
  54. package/kb/meta/source.json +5 -5
  55. package/kb/meta/topics.md +14 -6
  56. package/kb/site/develop/basic/publish.md +2 -2
  57. package/kb/site/develop/basic/tool.md +1 -1
  58. package/kb/site/develop/cordis-tutorial/07-into-the-harness.md +5 -4
  59. package/kb/site/develop/framework/events.md +1 -1
  60. package/kb/site/develop/practice/dynamic-cordis.md +17 -0
  61. package/kb/site/develop/practice/llm-adapter.md +4 -3
  62. package/kb/site/en/develop/basic/publish.md +2 -2
  63. package/kb/site/en/develop/basic/tool.md +1 -1
  64. package/kb/site/en/develop/cordis-tutorial/07-into-the-harness.md +5 -4
  65. package/kb/site/en/develop/framework/events.md +1 -1
  66. package/kb/site/en/develop/practice/dynamic-cordis.md +17 -0
  67. package/kb/site/en/develop/practice/llm-adapter.md +4 -3
  68. package/kb/site/en/guide/github-review.md +104 -0
  69. package/kb/site/en/guide/mcp-memory.md +103 -0
  70. package/kb/site/en/guide/network-proxy.md +87 -0
  71. package/kb/site/en/guide/providers.md +70 -17
  72. package/kb/site/en/guide/python-sdk.md +80 -34
  73. package/kb/site/en/guide/schedule.md +23 -0
  74. package/kb/site/en/reference/agent-lifecycle.md +6 -4
  75. package/kb/{extra → site/en/reference}/api-gateway.md +12 -10
  76. package/kb/site/en/reference/capability-seams.md +128 -73
  77. package/kb/site/en/reference/config-catalog.md +481 -360
  78. package/kb/site/en/reference/cookbook/adding-a-package.md +3 -4
  79. package/kb/site/en/reference/cookbook/adding-a-settings-card.md +12 -10
  80. package/kb/site/en/reference/cookbook/adding-a-tool.md +11 -4
  81. package/kb/site/en/reference/cookbook/adding-an-llm-adapter.md +1 -1
  82. package/kb/site/en/reference/cookbook/extension-cookbook.md +20 -17
  83. package/kb/site/en/reference/cordis-api/inherited.md +1 -1
  84. package/kb/site/en/reference/cordis-primer.md +2 -1
  85. package/kb/site/en/reference/index.md +30 -11
  86. package/kb/site/en/reference/persistence-catalog.md +148 -80
  87. package/kb/site/en/reference/subsystems/approval.md +10 -10
  88. package/kb/site/en/reference/subsystems/client-modules.md +58 -16
  89. package/kb/site/en/reference/subsystems/code-runtime.md +10 -6
  90. package/kb/site/en/reference/subsystems/commands.md +25 -16
  91. package/kb/site/en/reference/subsystems/compaction.md +11 -11
  92. package/kb/site/en/reference/{cookbook/adding-a-conversation-node.md → subsystems/conversation.md} +50 -24
  93. package/kb/site/en/reference/subsystems/core.md +156 -17
  94. package/kb/site/en/reference/subsystems/credentials.md +44 -3
  95. package/kb/site/en/reference/subsystems/filesystem.md +12 -2
  96. package/kb/site/en/reference/subsystems/goal.md +1 -1
  97. package/kb/site/en/reference/subsystems/index.md +7 -2
  98. package/kb/site/en/reference/subsystems/jobs.md +1 -1
  99. package/kb/site/en/reference/subsystems/llm-streaming.md +154 -12
  100. package/kb/site/en/reference/subsystems/permission-presets.md +6 -6
  101. package/kb/site/en/reference/subsystems/persistence.md +185 -175
  102. package/kb/site/en/reference/subsystems/plan.md +2 -2
  103. package/kb/site/en/reference/subsystems/sandbox.md +2 -0
  104. package/kb/site/en/reference/subsystems/schedule.md +9 -3
  105. package/kb/site/en/reference/subsystems/session-projection.md +115 -48
  106. package/kb/site/en/reference/subsystems/session-query.md +28 -14
  107. package/kb/site/en/reference/subsystems/session-reference.md +53 -8
  108. package/kb/site/en/reference/subsystems/session-telemetry.md +8 -8
  109. package/kb/site/en/reference/subsystems/session-title.md +6 -6
  110. package/kb/site/en/reference/subsystems/session.md +401 -99
  111. package/kb/site/en/reference/subsystems/settings.md +101 -6
  112. package/kb/site/en/reference/subsystems/skills.md +23 -0
  113. package/kb/site/en/reference/subsystems/slots.md +178 -0
  114. package/kb/site/en/reference/subsystems/spill.md +2 -2
  115. package/kb/site/en/reference/subsystems/storage.md +34 -3
  116. package/kb/site/en/reference/subsystems/subagent.md +122 -109
  117. package/kb/site/en/reference/subsystems/system-prompt.md +17 -4
  118. package/kb/site/en/reference/subsystems/token-meter.md +27 -12
  119. package/kb/site/en/reference/subsystems/tools.md +39 -39
  120. package/kb/site/en/reference/subsystems/typert.md +62 -55
  121. package/kb/site/en/reference/subsystems/user-questions.md +33 -33
  122. package/kb/site/en/reference/subsystems/web-client.md +98 -0
  123. package/kb/site/en/reference/subsystems/web-server.md +11 -5
  124. package/kb/site/en/reference/subsystems/web.md +7 -1
  125. package/kb/site/en/reference/subsystems/workspace.md +102 -9
  126. package/kb/site/en/reference/tool-catalog.md +86 -82
  127. package/kb/site/en/reference/tool-execution-pipeline.md +1 -1
  128. package/kb/site/guide/github-review.md +104 -0
  129. package/kb/site/guide/mcp-memory.md +103 -0
  130. package/kb/site/guide/network-proxy.md +87 -0
  131. package/kb/site/guide/providers.md +70 -17
  132. package/kb/site/guide/python-sdk.md +87 -41
  133. package/kb/site/guide/schedule.md +23 -0
  134. package/kb/site/reference/agent-lifecycle.md +6 -4
  135. package/kb/{extra/api-gateway.zh.md → site/reference/api-gateway.md} +12 -10
  136. package/kb/site/reference/capability-seams.md +128 -73
  137. package/kb/site/reference/config-catalog.md +481 -360
  138. package/kb/site/reference/cookbook/adding-a-package.md +3 -4
  139. package/kb/site/reference/cookbook/adding-a-settings-card.md +12 -10
  140. package/kb/site/reference/cookbook/adding-a-tool.md +11 -4
  141. package/kb/site/reference/cookbook/adding-an-llm-adapter.md +1 -1
  142. package/kb/site/reference/cookbook/extension-cookbook.md +20 -17
  143. package/kb/site/reference/cordis-api/inherited.md +1 -1
  144. package/kb/site/reference/cordis-primer.md +2 -1
  145. package/kb/site/reference/index.md +30 -11
  146. package/kb/site/reference/persistence-catalog.md +148 -80
  147. package/kb/site/reference/subsystems/approval.md +10 -10
  148. package/kb/site/reference/subsystems/client-modules.md +58 -16
  149. package/kb/site/reference/subsystems/code-runtime.md +10 -6
  150. package/kb/site/reference/subsystems/commands.md +25 -16
  151. package/kb/site/reference/subsystems/compaction.md +11 -11
  152. package/kb/site/reference/{cookbook/adding-a-conversation-node.md → subsystems/conversation.md} +50 -24
  153. package/kb/site/reference/subsystems/core.md +156 -17
  154. package/kb/site/reference/subsystems/credentials.md +44 -3
  155. package/kb/site/reference/subsystems/filesystem.md +12 -2
  156. package/kb/site/reference/subsystems/goal.md +1 -1
  157. package/kb/site/reference/subsystems/index.md +7 -2
  158. package/kb/site/reference/subsystems/jobs.md +1 -1
  159. package/kb/site/reference/subsystems/llm-streaming.md +154 -12
  160. package/kb/site/reference/subsystems/permission-presets.md +5 -5
  161. package/kb/site/reference/subsystems/persistence.md +184 -174
  162. package/kb/site/reference/subsystems/plan.md +2 -2
  163. package/kb/site/reference/subsystems/schedule.md +9 -3
  164. package/kb/site/reference/subsystems/session-projection.md +115 -48
  165. package/kb/site/reference/subsystems/session-query.md +28 -14
  166. package/kb/site/reference/subsystems/session-reference.md +53 -8
  167. package/kb/site/reference/subsystems/session-telemetry.md +8 -8
  168. package/kb/site/reference/subsystems/session-title.md +6 -6
  169. package/kb/site/reference/subsystems/session.md +401 -99
  170. package/kb/site/reference/subsystems/settings.md +101 -6
  171. package/kb/site/reference/subsystems/skills.md +23 -0
  172. package/kb/site/reference/subsystems/slots.md +178 -0
  173. package/kb/site/reference/subsystems/spill.md +2 -2
  174. package/kb/site/reference/subsystems/storage.md +34 -3
  175. package/kb/site/reference/subsystems/subagent.md +122 -109
  176. package/kb/site/reference/subsystems/system-prompt.md +17 -4
  177. package/kb/site/reference/subsystems/token-meter.md +27 -12
  178. package/kb/site/reference/subsystems/tools.md +39 -39
  179. package/kb/site/reference/subsystems/typert.md +62 -55
  180. package/kb/site/reference/subsystems/user-questions.md +33 -33
  181. package/kb/site/reference/subsystems/web-client.md +98 -0
  182. package/kb/site/reference/subsystems/web-server.md +11 -5
  183. package/kb/site/reference/subsystems/web.md +7 -1
  184. package/kb/site/reference/subsystems/workspace.md +102 -9
  185. package/kb/site/reference/tool-catalog.md +85 -81
  186. package/kb/site/reference/tool-execution-pipeline.md +1 -1
  187. package/package.json +2 -2
  188. package/skills/dsh-plugin-dev-kb.md +8 -6
package/CHANGELOG.md CHANGED
@@ -1,5 +1,26 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.1.0] - 2026-09-05
4
+
5
+ - 知识库同步至上游 master `d347e703`(2026-09-05,对应 dsh `0.1.2-rc.1`):站点镜像 182 → 184 页
6
+ (中英 92/92),89 页内容更新(config-catalog / tool-catalog / api-gateway / 全部 46 个子系统页 /
7
+ cookbook 3 篇 / guide providers+schedule / cordis-tutorial 07 / llm-adapter 等);
8
+ 新增 `guide/network-proxy`(代理后运行 DSH,中英一对)。
9
+ - 补充文档 56 → 58 篇:新增 `cookbook/adding-a-remote-api`(ctx.remote 端点五步操作,中英一对)。
10
+ - 更新 `kb/meta/source.json` 与 `site-pages.txt`;重建检索索引(241 → 245 文件)与 INDEX.md;
11
+ `topics.md` 新增 network-proxy 入口与 adding-a-remote-api 扩展条目。
12
+
13
+ ## [1.0.9] - 2026-08-30
14
+
15
+ - 知识库同步至上游 master `cd5ef814`(2026-08-30):站点镜像 168 → 182 页(中英 91/91),
16
+ 101 页内容更新;新增 `guide/github-review`、`guide/schedule`、`guide/mcp-memory`、
17
+ `develop/practice/dynamic-cordis`、`reference/api-gateway`、`reference/subsystems/conversation|slots|web-client`
18
+ (各中英一对);移除上游已下线的 `reference/cookbook/adding-a-conversation-node`。
19
+ - 补充文档 52 → 56 篇:`api-gateway` 升入站点,新增 `deepseek-llm-api-wire-extensions`、
20
+ `subsystems/todo`、`subsystems/webhook`(各中英一对)。
21
+ - 更新 `kb/meta/source.json` 与 `site-pages.txt`;重建检索索引(223 → 241 文件)与 INDEX.md;
22
+ `topics.md` 修复断链并新增「API Gateway 与服务接入」「使用指南进阶」主题。
23
+
3
24
  ## [1.0.8] - 2026-08-29
4
25
 
5
26
  - 文档:首屏数字带(168 页 · 52 篇 · 223 索引 · 0 依赖);安装 yaml 标注「唯一的一步,复制即用」;新增「5 分钟验证」节;
package/README.en.md CHANGED
@@ -6,7 +6,7 @@
6
6
  ![License](https://img.shields.io/github/license/Pasumao/dsh-plugin-dev-kb)
7
7
  ![AI Assisted](https://img.shields.io/badge/AI-Assisted-8A2BE2)
8
8
 
9
- > **168-page official mirror · 52 supplementary docs · 223-file search index · 0 runtime dependencies**
9
+ > **184-page official mirror · 58 supplementary docs · 245-file search index · 0 runtime dependencies**
10
10
 
11
11
  **The official docs at your side whenever you write dsh plugins**: the entire content of the DeepSeek Harness official documentation site
12
12
  <https://deepseek-harness.github.io/deepseek-harness/> is organized into a form natively usable by dsh —
@@ -15,16 +15,16 @@ once this plugin is installed, the agent automatically loads the knowledge base
15
15
  ## What is this
16
16
 
17
17
  - **Complete site mirror**: the official docs (VitePress) are generated as a projection of the raw Markdown in
18
- `docs/` of the `deepseek-ai/deepseek-harness` repository (links rewritten to site routes, verbatim identical to the live site). 168 pages in both Chinese and English.
19
- - **Supplementary docs**: 52 development references from the repo's `docs/` that were not published to the site (glossary, defensive patterns, module graph, testing strategy, incident postmortems, i18n specs, etc.).
18
+ `docs/` of the `deepseek-ai/deepseek-harness` repository (links rewritten to site routes, verbatim identical to the live site). 184 pages in both Chinese and English.
19
+ - **Supplementary docs**: 58 development references from the repo's `docs/` that were not published to the site (glossary, defensive patterns, module graph, testing strategy, incident postmortems, i18n specs, etc.).
20
20
  - **Agent-friendly**: the `skills/dsh-plugin-dev-kb.md` skill lets dsh auto-load it during plugin development tasks, providing the knowledge base location,
21
21
  topic navigation, and search strategy; `kb/meta/topics.md` maps task scenarios to the files to read; `kb/meta/search-index.json` provides full search coverage.
22
22
 
23
23
  ## Features
24
24
 
25
25
  - **Complete mirror of the official docs**: the entire content of the deepseek-ai/deepseek-harness official documentation site, organized into a form natively usable by dsh,
26
- 168 pages in both Chinese and English, links rewritten to site routes, verbatim identical to the live site;
27
- - **Repo supplementary docs**: 52 development references not published to the site (glossary, defensive patterns, module graph, testing strategy, incident postmortems, i18n specs, etc.);
26
+ 184 pages in both Chinese and English, links rewritten to site routes, verbatim identical to the live site;
27
+ - **Repo supplementary docs**: 58 development references not published to the site (glossary, defensive patterns, module graph, testing strategy, incident postmortems, i18n specs, etc.);
28
28
  - **Agent-friendly**: the `dsh-plugin-dev-kb` skill lets dsh auto-load the knowledge base during plugin development tasks;
29
29
  `kb/meta/topics.md` maps task scenarios to the files to read, and `kb/meta/search-index.json` provides full search coverage;
30
30
  - **Human-usable**: browse the `kb/` directory directly, or open `kb/INDEX.md` to look things up by URL mapping;
@@ -90,7 +90,7 @@ dsh-plugin-dev-kb/
90
90
  │ ├── extra/ repo supplementary docs: glossary, defensive-patterns, module-graph, postmortem/, i18n/ …
91
91
  │ ├── meta/
92
92
  │ │ ├── topics.md ★ topic navigation: task scenario → files
93
- │ │ ├── search-index.json full index (223 files)
93
+ │ │ ├── search-index.json full index (245 files)
94
94
  │ │ ├── source.json source commit / time / stats
95
95
  │ │ └── site-pages.txt list of live site pages
96
96
  │ ├── INDEX.md site URL ↔ local file mapping
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  [**中文**](./README.md) | [English](./README.en.md)
8
8
 
9
- > **168 页官方镜像 · 52 篇补充文档 · 223 文件搜索索引 · 0 运行时依赖**
9
+ > **184 页官方镜像 · 58 篇补充文档 · 245 文件搜索索引 · 0 运行时依赖**
10
10
 
11
11
  **写 dsh 插件时的随身官方文档**:把 DeepSeek Harness 官方文档站点
12
12
  <https://deepseek-harness.github.io/deepseek-harness/> 的全部内容整理为 dsh 原生可用的形态——
@@ -15,16 +15,16 @@
15
15
  ## 这是什么
16
16
 
17
17
  - **站点完整镜像**:官方文档(VitePress)由仓库 `deepseek-ai/deepseek-harness` 的 `docs/` 原始 Markdown
18
- 投影生成(链接已按站点路由重写,与线上逐字一致)。中英双语共 168 页。
19
- - **补充文档**:仓库 `docs/` 中未发布到站点的 52 篇开发参考(术语表、防御模式、模块图、测试策略、事故复盘、i18n 规范等)。
18
+ 投影生成(链接已按站点路由重写,与线上逐字一致)。中英双语共 184 页。
19
+ - **补充文档**:仓库 `docs/` 中未发布到站点的 58 篇开发参考(术语表、防御模式、模块图、测试策略、事故复盘、i18n 规范等)。
20
20
  - **agent 友好**:`skills/dsh-plugin-dev-kb.md` 技能让 dsh 在插件开发任务中自动加载,获知知识库位置、
21
21
  主题导航与检索策略;`kb/meta/topics.md` 按任务场景映射要读的文件;`kb/meta/search-index.json` 提供全量检索。
22
22
 
23
23
  ## 功能
24
24
 
25
25
  - **官方文档完整镜像**:deepseek-ai/deepseek-harness 官方文档站全部内容整理为 dsh 原生可用的形态,
26
- 中英双语共 168 页,链接按站点路由重写,与线上逐字一致;
27
- - **仓库补充文档**:未发布到站点的 52 篇开发参考(术语表、防御模式、模块图、测试策略、事故复盘、i18n 规范等);
26
+ 中英双语共 184 页,链接按站点路由重写,与线上逐字一致;
27
+ - **仓库补充文档**:未发布到站点的 58 篇开发参考(术语表、防御模式、模块图、测试策略、事故复盘、i18n 规范等);
28
28
  - **agent 友好**:`dsh-plugin-dev-kb` 技能让 dsh 在插件开发任务中自动加载知识库;
29
29
  `kb/meta/topics.md` 按任务场景映射要读的文件,`kb/meta/search-index.json` 提供全量检索;
30
30
  - **人侧可用**:直接浏览 `kb/` 目录,或打开 `kb/INDEX.md` 按 URL 对照查阅;
@@ -90,7 +90,7 @@ dsh-plugin-dev-kb/
90
90
  │ ├── extra/ 仓库补充文档:glossary、defensive-patterns、module-graph、postmortem/、i18n/ …
91
91
  │ ├── meta/
92
92
  │ │ ├── topics.md ★ 主题导航:任务场景 → 文件
93
- │ │ ├── search-index.json 全量索引(223 文件)
93
+ │ │ ├── search-index.json 全量索引(245 文件)
94
94
  │ │ ├── source.json 来源 commit / 时间 / 统计
95
95
  │ │ └── site-pages.txt 线上页面清单
96
96
  │ ├── INDEX.md 站点 URL ↔ 本地文件 对照
package/kb/INDEX.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # DeepSeek Harness 文档索引
2
2
 
3
- > 由 `scripts/rebuild-index.mjs` 自动生成。共 168 个站点页面(中英双语),另有 52 个补充文档在 `extra/`。
3
+ > 由 `scripts/rebuild-index.mjs` 自动生成。共 184 个站点页面(中英双语),另有 58 个补充文档在 `extra/`。
4
4
 
5
5
  ## 中文站点(根路径)
6
6
 
@@ -14,9 +14,13 @@
14
14
 
15
15
  | 页面 | 站点 URL | 本地文件 |
16
16
  | --- | --- | --- |
17
+ | 通过 GitHub Webhook 创建评审会话 | [https://deepseek-harness.github.io/deepseek-harness/guide/github-review](https://deepseek-harness.github.io/deepseek-harness/guide/github-review) | `site/guide/github-review.md` |
18
+ | 连接第三方记忆 MCP 服务 | [https://deepseek-harness.github.io/deepseek-harness/guide/mcp-memory](https://deepseek-harness.github.io/deepseek-harness/guide/mcp-memory) | `site/guide/mcp-memory.md` |
19
+ | 在网络代理后面运行 DSH | [https://deepseek-harness.github.io/deepseek-harness/guide/network-proxy](https://deepseek-harness.github.io/deepseek-harness/guide/network-proxy) | `site/guide/network-proxy.md` |
17
20
  | 配置模型 | [https://deepseek-harness.github.io/deepseek-harness/guide/providers](https://deepseek-harness.github.io/deepseek-harness/guide/providers) | `site/guide/providers.md` |
18
- | Python SDK 快速上手 | [https://deepseek-harness.github.io/deepseek-harness/guide/python-sdk](https://deepseek-harness.github.io/deepseek-harness/guide/python-sdk) | `site/guide/python-sdk.md` |
21
+ | Python SDK 入门 | [https://deepseek-harness.github.io/deepseek-harness/guide/python-sdk](https://deepseek-harness.github.io/deepseek-harness/guide/python-sdk) | `site/guide/python-sdk.md` |
19
22
  | 使用 Web UI | [https://deepseek-harness.github.io/deepseek-harness/guide/quickstart](https://deepseek-harness.github.io/deepseek-harness/guide/quickstart) | `site/guide/quickstart.md` |
23
+ | 安排会话内提醒 | [https://deepseek-harness.github.io/deepseek-harness/guide/schedule](https://deepseek-harness.github.io/deepseek-harness/guide/schedule) | `site/guide/schedule.md` |
20
24
 
21
25
  ### 开发(/develop/)
22
26
 
@@ -37,6 +41,7 @@
37
41
  | 事件系统 | [https://deepseek-harness.github.io/deepseek-harness/develop/framework/events](https://deepseek-harness.github.io/deepseek-harness/develop/framework/events) | `site/develop/framework/events.md` |
38
42
  | 插件与生命周期 | [https://deepseek-harness.github.io/deepseek-harness/develop/framework](https://deepseek-harness.github.io/deepseek-harness/develop/framework) | `site/develop/framework/index.md` |
39
43
  | 服务与依赖 | [https://deepseek-harness.github.io/deepseek-harness/develop/framework/service](https://deepseek-harness.github.io/deepseek-harness/develop/framework/service) | `site/develop/framework/service.md` |
44
+ | 用 Cordis 工具扩展运行中的智能体 | [https://deepseek-harness.github.io/deepseek-harness/develop/practice/dynamic-cordis](https://deepseek-harness.github.io/deepseek-harness/develop/practice/dynamic-cordis) | `site/develop/practice/dynamic-cordis.md` |
40
45
  | 能力的三种角色设计 | [https://deepseek-harness.github.io/deepseek-harness/develop/practice](https://deepseek-harness.github.io/deepseek-harness/develop/practice) | `site/develop/practice/index.md` |
41
46
  | LLM 适配器 | [https://deepseek-harness.github.io/deepseek-harness/develop/practice/llm-adapter](https://deepseek-harness.github.io/deepseek-harness/develop/practice/llm-adapter) | `site/develop/practice/llm-adapter.md` |
42
47
 
@@ -45,9 +50,9 @@
45
50
  | 页面 | 站点 URL | 本地文件 |
46
51
  | --- | --- | --- |
47
52
  | Agent 轮次与步骤生命周期 | [https://deepseek-harness.github.io/deepseek-harness/reference/agent-lifecycle](https://deepseek-harness.github.io/deepseek-harness/reference/agent-lifecycle) | `site/reference/agent-lifecycle.md` |
53
+ | API Gateway | [https://deepseek-harness.github.io/deepseek-harness/reference/api-gateway](https://deepseek-harness.github.io/deepseek-harness/reference/api-gateway) | `site/reference/api-gateway.md` |
48
54
  | 能力 Seams 与核心服务 | [https://deepseek-harness.github.io/deepseek-harness/reference/capability-seams](https://deepseek-harness.github.io/deepseek-harness/reference/capability-seams) | `site/reference/capability-seams.md` |
49
55
  | 插件配置目录 | [https://deepseek-harness.github.io/deepseek-harness/reference/config-catalog](https://deepseek-harness.github.io/deepseek-harness/reference/config-catalog) | `site/reference/config-catalog.md` |
50
- | 添加 Web Client Conversation Node | [https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-conversation-node](https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-conversation-node) | `site/reference/cookbook/adding-a-conversation-node.md` |
51
56
  | 实操手册:添加 workspace 包 | [https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-package](https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-package) | `site/reference/cookbook/adding-a-package.md` |
52
57
  | Cookbook: 新增设置卡片 | [https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-settings-card](https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-settings-card) | `site/reference/cookbook/adding-a-settings-card.md` |
53
58
  | 工具编写参考 | [https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-tool](https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-tool) | `site/reference/cookbook/adding-a-tool.md` |
@@ -67,6 +72,7 @@
67
72
  | 代码运行时 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/code-runtime](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/code-runtime) | `site/reference/subsystems/code-runtime.md` |
68
73
  | 用户命令 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/commands](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/commands) | `site/reference/subsystems/commands.md` |
69
74
  | 压缩(compaction) | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/compaction](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/compaction) | `site/reference/subsystems/compaction.md` |
75
+ | Conversation 组装 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/conversation](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/conversation) | `site/reference/subsystems/conversation.md` |
70
76
  | 核心 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/core](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/core) | `site/reference/subsystems/core.md` |
71
77
  | 用户凭据 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/credentials](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/credentials) | `site/reference/subsystems/credentials.md` |
72
78
  | 文件系统 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/filesystem](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/filesystem) | `site/reference/subsystems/filesystem.md` |
@@ -91,6 +97,7 @@
91
97
  | 用户设置 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/settings](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/settings) | `site/reference/subsystems/settings.md` |
92
98
  | Bash 执行器 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/shell](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/shell) | `site/reference/subsystems/shell.md` |
93
99
  | Skills | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/skills](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/skills) | `site/reference/subsystems/skills.md` |
100
+ | Web Client Slots | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/slots](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/slots) | `site/reference/subsystems/slots.md` |
94
101
  | spill 存储 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/spill](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/spill) | `site/reference/subsystems/spill.md` |
95
102
  | 存储 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/storage](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/storage) | `site/reference/subsystems/storage.md` |
96
103
  | Subagent | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/subagent](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/subagent) | `site/reference/subsystems/subagent.md` |
@@ -101,6 +108,7 @@
101
108
  | 工具 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/tools](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/tools) | `site/reference/subsystems/tools.md` |
102
109
  | Typert 远程调用 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/typert](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/typert) | `site/reference/subsystems/typert.md` |
103
110
  | 用户交互 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/user-questions](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/user-questions) | `site/reference/subsystems/user-questions.md` |
111
+ | Web Client 架构 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/web-client](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/web-client) | `site/reference/subsystems/web-client.md` |
104
112
  | HTTP 服务器 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/web-server](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/web-server) | `site/reference/subsystems/web-server.md` |
105
113
  | Web 访问 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/web](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/web) | `site/reference/subsystems/web.md` |
106
114
  | 工作流 | [https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/workflow](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/workflow) | `site/reference/subsystems/workflow.md` |
@@ -135,15 +143,20 @@
135
143
  | Event system | [https://deepseek-harness.github.io/deepseek-harness/en/develop/framework/events](https://deepseek-harness.github.io/deepseek-harness/en/develop/framework/events) | `site/en/develop/framework/events.md` |
136
144
  | Plugins and lifecycle | [https://deepseek-harness.github.io/deepseek-harness/en/develop/framework](https://deepseek-harness.github.io/deepseek-harness/en/develop/framework) | `site/en/develop/framework/index.md` |
137
145
  | Services and dependencies | [https://deepseek-harness.github.io/deepseek-harness/en/develop/framework/service](https://deepseek-harness.github.io/deepseek-harness/en/develop/framework/service) | `site/en/develop/framework/service.md` |
146
+ | Extend a running agent with Cordis tools | [https://deepseek-harness.github.io/deepseek-harness/en/develop/practice/dynamic-cordis](https://deepseek-harness.github.io/deepseek-harness/en/develop/practice/dynamic-cordis) | `site/en/develop/practice/dynamic-cordis.md` |
138
147
  | Three-role capability design | [https://deepseek-harness.github.io/deepseek-harness/en/develop/practice](https://deepseek-harness.github.io/deepseek-harness/en/develop/practice) | `site/en/develop/practice/index.md` |
139
148
  | LLM adapters | [https://deepseek-harness.github.io/deepseek-harness/en/develop/practice/llm-adapter](https://deepseek-harness.github.io/deepseek-harness/en/develop/practice/llm-adapter) | `site/en/develop/practice/llm-adapter.md` |
149
+ | Create review Sessions from GitHub webhooks | [https://deepseek-harness.github.io/deepseek-harness/en/guide/github-review](https://deepseek-harness.github.io/deepseek-harness/en/guide/github-review) | `site/en/guide/github-review.md` |
150
+ | Connect a third-party memory MCP server | [https://deepseek-harness.github.io/deepseek-harness/en/guide/mcp-memory](https://deepseek-harness.github.io/deepseek-harness/en/guide/mcp-memory) | `site/en/guide/mcp-memory.md` |
151
+ | Run DSH behind a network proxy | [https://deepseek-harness.github.io/deepseek-harness/en/guide/network-proxy](https://deepseek-harness.github.io/deepseek-harness/en/guide/network-proxy) | `site/en/guide/network-proxy.md` |
140
152
  | Configure models | [https://deepseek-harness.github.io/deepseek-harness/en/guide/providers](https://deepseek-harness.github.io/deepseek-harness/en/guide/providers) | `site/en/guide/providers.md` |
141
153
  | Get started with the Python SDK | [https://deepseek-harness.github.io/deepseek-harness/en/guide/python-sdk](https://deepseek-harness.github.io/deepseek-harness/en/guide/python-sdk) | `site/en/guide/python-sdk.md` |
142
154
  | Use the Web UI | [https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart](https://deepseek-harness.github.io/deepseek-harness/en/guide/quickstart) | `site/en/guide/quickstart.md` |
155
+ | Schedule session-local reminders | [https://deepseek-harness.github.io/deepseek-harness/en/guide/schedule](https://deepseek-harness.github.io/deepseek-harness/en/guide/schedule) | `site/en/guide/schedule.md` |
143
156
  | Agent Turn And Step Lifecycle | [https://deepseek-harness.github.io/deepseek-harness/en/reference/agent-lifecycle](https://deepseek-harness.github.io/deepseek-harness/en/reference/agent-lifecycle) | `site/en/reference/agent-lifecycle.md` |
157
+ | API Gateway | [https://deepseek-harness.github.io/deepseek-harness/en/reference/api-gateway](https://deepseek-harness.github.io/deepseek-harness/en/reference/api-gateway) | `site/en/reference/api-gateway.md` |
144
158
  | Capability Seams And Core Services | [https://deepseek-harness.github.io/deepseek-harness/en/reference/capability-seams](https://deepseek-harness.github.io/deepseek-harness/en/reference/capability-seams) | `site/en/reference/capability-seams.md` |
145
159
  | Plugin Config Catalog | [https://deepseek-harness.github.io/deepseek-harness/en/reference/config-catalog](https://deepseek-harness.github.io/deepseek-harness/en/reference/config-catalog) | `site/en/reference/config-catalog.md` |
146
- | Add a Web Client conversation node | [https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-conversation-node](https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-conversation-node) | `site/en/reference/cookbook/adding-a-conversation-node.md` |
147
160
  | Cookbook: adding a workspace package | [https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-package](https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-package) | `site/en/reference/cookbook/adding-a-package.md` |
148
161
  | Cookbook: adding a settings card | [https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-settings-card](https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-settings-card) | `site/en/reference/cookbook/adding-a-settings-card.md` |
149
162
  | Tool authoring reference | [https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-tool](https://deepseek-harness.github.io/deepseek-harness/en/reference/cookbook/adding-a-tool) | `site/en/reference/cookbook/adding-a-tool.md` |
@@ -163,6 +176,7 @@
163
176
  | Code Runtime | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/code-runtime](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/code-runtime) | `site/en/reference/subsystems/code-runtime.md` |
164
177
  | Human Commands | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/commands](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/commands) | `site/en/reference/subsystems/commands.md` |
165
178
  | Compaction | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/compaction](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/compaction) | `site/en/reference/subsystems/compaction.md` |
179
+ | Conversation assembly | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/conversation](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/conversation) | `site/en/reference/subsystems/conversation.md` |
166
180
  | Core | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/core](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/core) | `site/en/reference/subsystems/core.md` |
167
181
  | User Credentials | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/credentials](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/credentials) | `site/en/reference/subsystems/credentials.md` |
168
182
  | Filesystem | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/filesystem](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/filesystem) | `site/en/reference/subsystems/filesystem.md` |
@@ -187,6 +201,7 @@
187
201
  | User Settings | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/settings](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/settings) | `site/en/reference/subsystems/settings.md` |
188
202
  | Bash Executor | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/shell](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/shell) | `site/en/reference/subsystems/shell.md` |
189
203
  | Skills | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/skills](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/skills) | `site/en/reference/subsystems/skills.md` |
204
+ | Web Client Slots | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/slots](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/slots) | `site/en/reference/subsystems/slots.md` |
190
205
  | Spill Storage | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/spill](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/spill) | `site/en/reference/subsystems/spill.md` |
191
206
  | Storage | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/storage](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/storage) | `site/en/reference/subsystems/storage.md` |
192
207
  | Subagent | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/subagent](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/subagent) | `site/en/reference/subsystems/subagent.md` |
@@ -197,6 +212,7 @@
197
212
  | Tools | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/tools](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/tools) | `site/en/reference/subsystems/tools.md` |
198
213
  | Typert remote calls | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/typert](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/typert) | `site/en/reference/subsystems/typert.md` |
199
214
  | User Interaction | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/user-questions](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/user-questions) | `site/en/reference/subsystems/user-questions.md` |
215
+ | Web Client architecture | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/web-client](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/web-client) | `site/en/reference/subsystems/web-client.md` |
200
216
  | HTTP Server | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/web-server](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/web-server) | `site/en/reference/subsystems/web-server.md` |
201
217
  | Web Access | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/web](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/web) | `site/en/reference/subsystems/web.md` |
202
218
  | Workflow | [https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/workflow](https://deepseek-harness.github.io/deepseek-harness/en/reference/subsystems/workflow) | `site/en/reference/subsystems/workflow.md` |
@@ -206,5 +222,5 @@
206
222
 
207
223
  ---
208
224
 
209
- *站点页面:168(中文 84,英文 84)*
225
+ *站点页面:184(中文 92,英文 92)*
210
226
 
package/kb/README.md CHANGED
@@ -11,11 +11,12 @@ knowledge/deepseek-harness/
11
11
  ├── INDEX.md 全部页面的 站点 URL ↔ 本地文件 对照索引(自动生成)
12
12
  ├── site/ 线上站点的完整镜像(中英双语,链接已按站点路由重写)
13
13
  │ ├── index.md 中文首页(/deepseek-harness/)
14
- │ ├── guide/ 入门:quickstart / providers / python-sdk
14
+ │ ├── guide/ 入门:quickstart / providers / python-sdk / github-review /
15
+ │ │ schedule / mcp-memory
15
16
  │ ├── develop/ 开发:basic(第一个插件/tool/config/publish)、
16
17
  │ │ framework(生命周期/service/事件)、practice、cordis-tutorial(7 章)
17
18
  │ ├── reference/ 参考:架构、capability-seams、config-catalog、tool-catalog、
18
- │ │ cordis-api、cookbook、subsystems(43 个子系统页)…
19
+ │ │ api-gateway、cordis-api、cookbook、subsystems(46 个子系统页)…
19
20
  │ └── en/ 英文站镜像(/deepseek-harness/en/...),结构同上
20
21
  ├── extra/ 仓库 docs/ 中未发布到站点的补充文档(开发参考)
21
22
  │ ├── glossary.md 术语表(capability seam 等核心概念)
@@ -27,7 +28,7 @@ knowledge/deepseek-harness/
27
28
  │ └── i18n/ 文档双语规范与术语
28
29
  └── meta/
29
30
  ├── source.json 来源信息:仓库 commit、抓取时间、统计
30
- └── site-pages.txt 线上站点 hashmap.json 的页面清单(168 页)
31
+ └── site-pages.txt 线上站点页面清单(由投影结果生成,184 页)
31
32
  ```
32
33
 
33
34
  ## 插件开发学习路径(从 `site/` 开始)
@@ -37,13 +38,13 @@ knowledge/deepseek-harness/
37
38
  3. **插件配置** — `site/develop/basic/config.md`;**打包安装** — `site/develop/basic/publish.md`
38
39
  4. **框架能力** — `site/develop/framework/index.md`(生命周期)、`service.md`(服务与依赖注入)、`events.md`(事件系统)
39
40
  5. **Cordis 框架教程** — `site/develop/cordis-tutorial/`(7 章:插件/生命周期/服务/事件/配置/组合与热重载/进入 Harness)
40
- 6. **实战** — `site/develop/practice/index.md`(能力三层拆分)、`llm-adapter.md`
41
+ 6. **实战** — `site/develop/practice/index.md`(能力三层拆分)、`llm-adapter.md`、`dynamic-cordis.md`(运行时动态装配 Cordis)
41
42
  7. **按需查阅** — `site/reference/`:
42
43
  - 架构总览 `reference/index.md`;能力服务 `reference/capability-seams.md`;Agent 生命周期 `reference/agent-lifecycle.md`
43
- - 插件配置目录 `reference/config-catalog.md`;Tool Schema 目录 `reference/tool-catalog.md`;持久化事件 `reference/persistence-catalog.md`
44
+ - 插件配置目录 `reference/config-catalog.md`;Tool Schema 目录 `reference/tool-catalog.md`;持久化事件 `reference/persistence-catalog.md`;API Gateway `reference/api-gateway.md`(Typert Remote 方法/RPC 约定)
44
45
  - Cordis API `reference/cordis-api/`(Context / Events / Fiber / Registry / Service / 继承接口面)
45
- - Cookbook `reference/cookbook/`(新增 package / tool / LLM adapter / 设置卡片 / 扩展模式 / Conversation Node)
46
- - 子系统 `reference/subsystems/`(core / scope / session / tools / shell / filesystem / subagent / sandbox / approval … 共 43 页)
46
+ - Cookbook `reference/cookbook/`(新增 package / tool / LLM adapter / 设置卡片 / 扩展模式)
47
+ - 子系统 `reference/subsystems/`(core / scope / session / tools / shell / filesystem / subagent / sandbox / approval / conversation / slots / web-client … 共 46 页)
47
48
 
48
49
  ## 更新方法
49
50
 
@@ -75,6 +76,6 @@ node scripts/rebuild-index.mjs
75
76
 
76
77
  ## 统计
77
78
 
78
- - 站点页面:168 个 Markdown(中文 84 + 英文 84),4 张图片
79
- - 补充文档:52 个 Markdown(`extra/`)
80
- - 来源 commit:`b150a551b8d465e31e418e1b2eaf5e79bbb7d28e`(master)
79
+ - 站点页面:184 个 Markdown(中文 92 + 英文 92),4 张图片
80
+ - 补充文档:58 个 Markdown(`extra/`)
81
+ - 来源 commit:`d347e703908d0406b7a7ef80e3a0e594d86b2215`(master)
@@ -1,6 +1,6 @@
1
1
  # AGENTS.md — The documentation standard
2
2
 
3
- This file defines document structure, Markdown tiers, writing rules, and `verify-doc-budgets` ceilings. Use [dsh-doc-standards](../.agents/skills/dsh-doc-standards/SKILL.md) for placement and validation, and [dsh-prose-standard](../.agents/skills/dsh-prose-standard/SKILL.md) for required coverage and editorial judgment; the [doc-tiers Agent Note](../.agents/notes/implemented/process/2026-07-04-doc-tiers-and-budgets.md) owns rationale.
3
+ This file defines document structure, Markdown tiers, writing rules, and `verify-doc-budgets` ceilings. Use [dsh-doc](../.agents/skills/dsh-doc/SKILL.md) for placement and validation, and [dsh-prose-standard](../.agents/skills/dsh-prose-standard/SKILL.md) for required coverage and editorial judgment; the [doc-tiers Agent Note](../.agents/notes/implemented/process/2026-07-04-doc-tiers-and-budgets.md) owns rationale.
4
4
 
5
5
  ## Document structure
6
6
 
@@ -19,7 +19,7 @@ Each fact has one home: the tier whose job it is; elsewhere, link there.
19
19
  | Tier | Job | Does NOT belong there |
20
20
  |---|---|---|
21
21
  | Root `AGENTS.md` | Standing orders: rules an agent needs in context in every session, one to three lines each, linking its home | Stories, worked examples, situational procedures, anything restated from a linked home |
22
- | Subtree `AGENTS.md` (`packages/`, `examples/`, `docs/`, `.agents/notes/`) | Orders specific to that subtree | Repo-wide rules the root file already carries |
22
+ | Subtree `AGENTS.md` (`packages/`, `docs/`, `.agents/notes/`) | Orders specific to that subtree | Repo-wide rules the root file already carries |
23
23
  | [architecture.md](architecture.md) | Ordered map: composition, core packages, loop, seams, extension points; read before changing `packages/` | Type definitions (→ subsystems), per-package detail (→ package READMEs), decision rationale (→ Agent Notes), implementation-status annotations |
24
24
  | [subsystems/](subsystems/README.md) | One reference page per subsystem: type definitions, semantics, and the generated Cordis API | Behavior narration (→ architecture.md) |
25
25
  | [Agent Notes](../.agents/notes/README.md) | Active decision records: the why, what-was-given-up, and required verification; `implemented/` notes describe shipped reality in present tense | Migration plans, acceptance-task checklists, fixture walkthroughs, and spec-speak ("should…") once the decision has shipped; archived notes are frozen history, never current authority |
@@ -54,11 +54,11 @@ When the gate goes red:
54
54
  2. **Condense** content that belongs here but can be shorter.
55
55
  3. **Raise** the ceiling only when the words need the space; justify the manifest diff in the PR. A too-low ceiling is a budget bug.
56
56
 
57
- Ceilings are guardrails, not reduction targets. At or below target, retain at least 5% headroom; above target, freeze the ceiling until relocation or condensation brings the document under target. Lower a ceiling only when the document still has room, and raise it when content would otherwise be deleted. Targets: root `AGENTS.md` ≤ 1,600 words; `architecture.md` ≤ 1,800; subtree `AGENTS.md` ≤ 600, except `packages/AGENTS.md` ≤ 650 and this file ≤ 1,250; `packages/README.md` ≤ 600. Review governs unbudgeted tiers.
57
+ Ceilings are guardrails, not reduction targets. At or below target, retain at least 5% headroom; above target, freeze the ceiling until relocation or condensation brings the document under target. Lower a ceiling only when the document still has room. Targets: root `AGENTS.md` ≤ 1,950; `architecture.md` ≤ 2,400; subtree `AGENTS.md` ≤ 600, except `packages/AGENTS.md` ≤ 750 and this file ≤ 1,320; `packages/README.md` ≤ 994; plus `cordis-primer.md` 600, `defensive-patterns.md` 550, `testing.md` 1,300, `examples/AGENTS.md` 310. Review governs unbudgeted tiers.
58
58
 
59
59
  ## The slop checklist
60
60
 
61
- Hunt these in any doc; [dsh-doc-standards](../.agents/skills/dsh-doc-standards/SKILL.md) runs this list as an audit:
61
+ Hunt these in any doc; [dsh-doc](../.agents/skills/dsh-doc/SKILL.md) runs this list as an audit:
62
62
 
63
63
  - The same rule stated in more than one home. Grep a distinctive phrase; keep one home and link the rest.
64
64
  - Narrated history or war stories: "previously", "now", "no longer", "used to", "renamed", "was moved", PRs, or commits. State the current fact; link an Agent Note or postmortem when needed.
@@ -0,0 +1,197 @@
1
+ # Cookbook: adding a Remote API
2
+
3
+ English | [中文](adding-a-remote-api.zh.md)
4
+
5
+ Adding or changing a `ctx.remote` endpoint takes the five steps on this page: declare the method, declare its failures, register it on the package, consume it on the Client, and test it. Decorator semantics, lookup resolution, the generation pipeline, and the `/api` route are the mechanism and belong to the [API Gateway reference](../api-gateway.md); this page gives the action for each step and the conventions it must satisfy. Why the programming interface looks like this is in the [Typert Remote method calls Agent Note](../../.agents/notes/implemented/architecture/2026-08-02-typert-remote-method-calls.md), and why a failure is one `RemoteError` plus a code table is in the [failure vocabulary Agent Note](../../.agents/notes/implemented/architecture/2026-08-28-ctx-remote-failure-vocabulary.md).
6
+
7
+ ## 1. Declare the API
8
+
9
+ The owner is a Host-side Cordis service: extend `TypertRemoteService` so the service key and the wire namespace are bound together, then mark the exposed methods with `@Remote`. Mark the business method itself when its signature already satisfies the wire conventions; write a `remoteExport*` adapter only when the shape has to change (adding `signal`, reordering parameters, exporting another name), and let that adapter call the unrenamed business method. Lookup objects (`Agent`, `Session`) may only occupy top-level parameter positions, and a method that supports cooperative cancellation takes `signal: AbortSignal` as its final parameter.
10
+
11
+ ```ts
12
+ import type { Context } from '@deepseek-ai/cordis'
13
+ import type { Agent } from '@deepseek-ai/dsh-agent'
14
+ import { Remote, TypertRemoteService } from '@deepseek-ai/dsh-typert-protocol'
15
+
16
+ /** One stored note as a Client reads it. */
17
+ export interface NoteRow {
18
+ readonly noteId: string
19
+ readonly title: string
20
+ }
21
+
22
+ declare module '@deepseek-ai/cordis' {
23
+ interface Context {
24
+ notesController: NotesController
25
+ }
26
+ }
27
+
28
+ export class NotesController extends TypertRemoteService {
29
+ constructor(ctx: Context) {
30
+ super(ctx, 'notesController', { namespace: 'notes' })
31
+ }
32
+
33
+ /**
34
+ * @param agent - lookup parameter the Gateway resolves from its wire identity.
35
+ * @param signal - carrier cancellation, always the final parameter.
36
+ * @returns the notes this Agent's session owns.
37
+ */
38
+ @Remote('list')
39
+ async remoteExportList(agent: Agent, signal: AbortSignal): Promise<NoteRow[]> {
40
+ return await this.list(agent, signal)
41
+ }
42
+
43
+ /** The in-process API the adapter above delegates to, unchanged by it. */
44
+ async list(agent: Agent, signal: AbortSignal): Promise<NoteRow[]> {
45
+ signal.throwIfAborted()
46
+ return await Promise.resolve([{ noteId: `${agent.id}-1`, title: 'draft' }])
47
+ }
48
+ }
49
+ ```
50
+
51
+ ## 2. Declare the failures
52
+
53
+ A Remote failure is one class, `RemoteError`: merge the domain codes into `RemoteErrorDetailsMap` through declaration merging and `throw new RemoteError(code, message, details)` at the failure point. Do not build a family of domain error classes, and do not write an exit-mapping function; an exception unrelated to this endpoint is not pre-classified, because the Gateway folds it into `gateway/internal`. Write a `catch` only to classify an arbitrary provider exception as one domain code, and attach the original exception as `cause`.
54
+
55
+ A code reads `<domain>/<reason>`, and its declaration has four placement rules:
56
+
57
+ - One producer only: declare it in the producing package, next to the throw.
58
+ - Several packages produce it: declare it in the lowest domain package both depend on (`session/not-found` in `core/session`, `workspace/not-found` in `dsh-workspace`).
59
+ - The carrier codes `gateway/bad-request`, `gateway/cancelled`, and `gateway/internal` are declared in protocol, and the Gateway infrastructure codes in gateway — use them, never copy them.
60
+ - A local failure that never crosses the wire stays out of the code table; express it with the caller's own type.
61
+
62
+ ```ts
63
+ import { RemoteError } from '@deepseek-ai/dsh-typert-protocol'
64
+
65
+ declare module '@deepseek-ai/dsh-typert-protocol' {
66
+ interface RemoteErrorDetailsMap {
67
+ /** No stored note carries that id. */
68
+ 'note/not-found': { readonly noteId: string }
69
+ /** The store refused an otherwise valid write. */
70
+ 'note/rejected': { readonly noteId: string }
71
+ }
72
+ }
73
+
74
+ declare const stored: ReadonlyMap<string, string>
75
+ declare function persist(noteId: string, title: string): Promise<void>
76
+
77
+ export async function rename(noteId: string, title: string): Promise<void> {
78
+ if (!stored.has(noteId)) {
79
+ throw new RemoteError('note/not-found', `no note "${noteId}"`, { noteId })
80
+ }
81
+ try {
82
+ await persist(noteId, title)
83
+ } catch (error: unknown) {
84
+ const message = error instanceof Error ? error.message : String(error)
85
+ throw new RemoteError('note/rejected', message, { noteId }, { cause: error })
86
+ }
87
+ }
88
+ ```
89
+
90
+ ## 3. Register it on the package
91
+
92
+ `@Remote` must live in a Loader entry plugin package; when the owner is an abstract seam, the controller goes in the matching package under `packages/api/`. The manifest gains the two generated entries and the protocol peer dependency, while on the Client side the `@deepseek-ai/dsh-api-remotes` assembly mounts the contribution and re-exports the type vocabulary that consumers need. Which generated artifact each entry points at, and how the generation pipeline is ordered, are in the [API Gateway reference](../api-gateway.md).
93
+
94
+ ```json
95
+ {
96
+ "exports": {
97
+ "./typert": { "types": "./lib/typert.host.d.ts", "default": "./lib/typert.host.js" },
98
+ "./remote": { "types": "./lib/typert.remote-client.d.ts", "default": "./lib/typert.remote-client.js" }
99
+ },
100
+ "peerDependencies": { "@deepseek-ai/dsh-typert-protocol": "workspace:^" },
101
+ "devDependencies": { "@deepseek-ai/dsh-typert-protocol": "workspace:^" }
102
+ }
103
+ ```
104
+
105
+ Rerun `pnpm run build:lib` after changing a signature, the code table, the namespace, or an export name, because that is what hands the Client its new declarations and codecs; changing only an implementation body needs no regeneration.
106
+
107
+ ## 4. Consume it on the Client
108
+
109
+ The calling plugin declares both `remote` and `remote.<namespace>` in its `inject`, and the call site writes `ctx.remote.<namespace>.<method>(...)` directly: no `Pick<ClientRemote, …>` narrowing, no hand-written method signature, no wire relay object. The result is a `RemoteResult<T>`, so branch on `if (!result.ok)` in place and discriminate by `code` rather than `instanceof` — a code branch narrows `details` on its own. An exception-flow site writes `throw result.error` (it is a real Error); whoever catches it uses `isRemoteFailure` to tell a Remote failure from a local defect and rethrows the defect. Do not write a defensive catch: a Remote call does not reject, and an assembly mistake should crash.
110
+
111
+ Fixed Host facts come from `ctx.remote.$host`: `home` and `isLoopback` are plain reads with no subscription and no generation counter, and `home` is `undefined` until the first ready frame. Refresh after a reconnect through `ctx.on('connection/reset')` or a domain's own remote event. When the caller aborts a unary call, the outcome is `gateway/cancelled` on the error branch rather than a throw.
112
+
113
+ ```ts ignore-check
114
+ import type { Context } from '@deepseek-ai/cordis'
115
+ import { isRemoteFailure } from '@deepseek-ai/dsh-api-gateway/client'
116
+ import type {} from '@deepseek-ai/dsh-api-remotes/client'
117
+
118
+ export const inject = ['remote', 'remote.notes']
119
+
120
+ declare const ctx: Context
121
+
122
+ /** Store-side read: the error branch is handled where the code is meaningful. */
123
+ export async function noteTitles(): Promise<readonly string[]> {
124
+ const result = await ctx.remote.notes.list()
125
+ if (!result.ok) {
126
+ if (result.error.code === 'note/not-found') return []
127
+ throw result.error
128
+ }
129
+ return result.value.map(row => row.title)
130
+ }
131
+
132
+ /** Action-side: a Remote failure becomes copy; a local fault keeps crashing. */
133
+ export async function renderTitles(): Promise<string> {
134
+ try {
135
+ return (await noteTitles()).join(', ')
136
+ } catch (error: unknown) {
137
+ if (!isRemoteFailure(error)) throw error
138
+ return `unavailable (${error.code})`
139
+ }
140
+ }
141
+
142
+ /** Fixed Host facts as plain reads. */
143
+ export function hostLabel(): string {
144
+ const { home, isLoopback } = ctx.remote.$host
145
+ return home ?? (isLoopback ? 'local host' : 'remote host')
146
+ }
147
+ ```
148
+
149
+ ## 5. Test it
150
+
151
+ On the owner side, assert the code that was thrown: recover the failure with `remoteErrorOf` after catching, then compare `code` and the details fields you care about with `toMatchObject` — never deep-compare the error object with `toEqual`, and never assert `instanceof`.
152
+
153
+ ```ts
154
+ import { remoteErrorOf } from '@deepseek-ai/dsh-typert-protocol'
155
+ import { expect, it } from 'vitest'
156
+
157
+ declare function rename(noteId: string, title: string): Promise<void>
158
+
159
+ it('refuses an unknown note before writing', async () => {
160
+ const failure = await rename('n-404', 'fresh title').catch((error: unknown) => error)
161
+
162
+ expect(remoteErrorOf(failure)).toMatchObject({
163
+ code: 'note/not-found',
164
+ details: { noteId: 'n-404' },
165
+ })
166
+ })
167
+ ```
168
+
169
+ A Client-side double returns real instances: take the `RemoteError` and `TestRemote` value imports from `@deepseek-ai/dsh-client-test-runtime`, because a value import from the `api-remotes` facade would load the unbuilt assembly chain. `TestRemote.$host` is a plain field a spec assigns directly.
170
+
171
+ ```ts ignore-check
172
+ import { Context } from '@deepseek-ai/cordis'
173
+ import { RemoteError, TestRemote } from '@deepseek-ai/dsh-client-test-runtime'
174
+ import { expect, it } from 'vitest'
175
+
176
+ it('renders the failure code the Host reported', async () => {
177
+ const ctx = new Context()
178
+ const remote = new TestRemote(ctx, {
179
+ notes: {
180
+ list: () => Promise.resolve({
181
+ ok: false as const,
182
+ error: new RemoteError('note/not-found', 'no note "n-404"', { noteId: 'n-404' }),
183
+ }),
184
+ },
185
+ })
186
+ remote.$host = { home: '/home/fixture', isLoopback: true }
187
+
188
+ await expect(ctx.remote.notes.list()).resolves.toMatchObject({ error: { code: 'note/not-found' } })
189
+ })
190
+ ```
191
+
192
+ ## Verify
193
+
194
+ 1. `pnpm run build:lib`: mandatory once a signature, the code table, the namespace, or an export name changed, because it produces the Client declarations and codecs.
195
+ 2. `pnpm run typecheck`: both the Host and the Client program, where a code merged into an unreachable package turns red.
196
+ 3. Run both sides' specs by name: `npx vitest run <owner spec> <client spec>`.
197
+ 4. Add a recorded-session snapshot when the endpoint reaches a product-visible surface, per the [testing policy](../testing.md).