dsh-plugin-dev-kb 1.8.0 → 1.8.1

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 (229) hide show
  1. package/CHANGELOG.md +186 -178
  2. package/README.en.md +172 -172
  3. package/README.md +183 -183
  4. package/kb/INDEX.md +236 -234
  5. package/kb/README.md +88 -88
  6. package/kb/extra/AGENTS.md +77 -77
  7. package/kb/extra/deepseek-llm-api-wire-extensions.md +162 -162
  8. package/kb/extra/deepseek-llm-api-wire-extensions.zh.md +162 -162
  9. package/kb/extra/defensive-patterns/package-surface.md +233 -232
  10. package/kb/extra/defensive-patterns/package-surface.zh.md +233 -232
  11. package/kb/extra/defensive-patterns/remote-and-api.md +117 -117
  12. package/kb/extra/defensive-patterns/remote-and-api.zh.md +117 -117
  13. package/kb/extra/development.md +221 -221
  14. package/kb/extra/development.zh.md +228 -228
  15. package/kb/extra/event-producer-consumer.md +133 -123
  16. package/kb/extra/event-producer-consumer.zh.md +135 -125
  17. package/kb/extra/module-graph.md +1961 -1888
  18. package/kb/extra/module-graph.zh.md +1963 -1890
  19. package/kb/extra/persistence-changes/2026-11-05-timeline-priority-notice.md +60 -0
  20. package/kb/extra/persistence-changes/2026-11-05-timeline-priority-notice.zh.md +60 -0
  21. package/kb/extra/persistence-changes/README.md +92 -92
  22. package/kb/extra/persistence-changes/README.zh.md +92 -92
  23. package/kb/extra/persistence-changes/historical-formats/README.md +75 -75
  24. package/kb/extra/persistence-changes/historical-formats/README.zh.md +75 -75
  25. package/kb/extra/persistence-changes/releases/README.md +103 -103
  26. package/kb/extra/persistence-changes/releases/README.zh.md +103 -103
  27. package/kb/extra/rescope.md +55 -55
  28. package/kb/extra/rescope.zh.md +55 -55
  29. package/kb/extra/subsystems/boot.md +631 -621
  30. package/kb/extra/subsystems/boot.zh.md +631 -621
  31. package/kb/extra/subsystems/computer-use.md +179 -137
  32. package/kb/extra/subsystems/computer-use.zh.md +179 -137
  33. package/kb/extra/subsystems/extensions.md +387 -384
  34. package/kb/extra/subsystems/extensions.zh.md +387 -384
  35. package/kb/extra/subsystems/feedback.md +418 -400
  36. package/kb/extra/subsystems/feedback.zh.md +418 -400
  37. package/kb/extra/subsystems/forge.md +2169 -1226
  38. package/kb/extra/subsystems/forge.zh.md +2171 -1226
  39. package/kb/extra/subsystems/liveshare.md +167 -158
  40. package/kb/extra/subsystems/liveshare.zh.md +167 -158
  41. package/kb/extra/subsystems/mcp.md +237 -234
  42. package/kb/extra/subsystems/mcp.zh.md +237 -234
  43. package/kb/extra/subsystems/office-kit.md +122 -0
  44. package/kb/extra/subsystems/office-kit.zh.md +122 -0
  45. package/kb/extra/subsystems/working-directory.md +95 -64
  46. package/kb/extra/subsystems/working-directory.zh.md +95 -64
  47. package/kb/extra/subsystems/worktrees.md +187 -127
  48. package/kb/extra/subsystems/worktrees.zh.md +187 -127
  49. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +21 -21
  50. package/kb/extra/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +21 -21
  51. package/kb/extra/upgrade-guide/v0.2.1-rc.4/sandbox-unsupported-policy-error/guide.md +18 -0
  52. package/kb/extra/upgrade-guide/v0.2.1-rc.4/sandbox-unsupported-policy-error/guide.zh.md +18 -0
  53. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/llm-error-builtin-codes/guide.md +18 -0
  54. package/kb/extra/upgrade-guide/v0.2.2-alpha.2/llm-error-builtin-codes/guide.zh.md +18 -0
  55. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-kit-package/guide.md +34 -0
  56. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-kit-package/guide.zh.md +34 -0
  57. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-operation-tools/guide.md +49 -0
  58. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-operation-tools/guide.zh.md +49 -0
  59. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-skill-resources/guide.md +36 -0
  60. package/kb/extra/upgrade-guide/v0.2.2-alpha.3/office-skill-resources/guide.zh.md +36 -0
  61. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-notification-fields/guide.md +26 -0
  62. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-notification-fields/guide.zh.md +26 -0
  63. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-remote-provider/guide.md +22 -0
  64. package/kb/extra/upgrade-guide/v0.2.2-rc.1/account-remote-provider/guide.zh.md +22 -0
  65. package/kb/extra/upgrade-guide/v0.2.2-rc.1/archive-worktrees/guide.md +21 -0
  66. package/kb/extra/upgrade-guide/v0.2.2-rc.1/archive-worktrees/guide.zh.md +21 -0
  67. package/kb/extra/upgrade-guide/v0.2.2-rc.1/attachment-error-codes/guide.md +23 -0
  68. package/kb/extra/upgrade-guide/v0.2.2-rc.1/attachment-error-codes/guide.zh.md +23 -0
  69. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-ax-read-limits/guide.md +20 -0
  70. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-ax-read-limits/guide.zh.md +20 -0
  71. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-hover-ax-only/guide.md +18 -0
  72. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-hover-ax-only/guide.zh.md +18 -0
  73. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-native-platform/guide.md +23 -0
  74. package/kb/extra/upgrade-guide/v0.2.2-rc.1/cua-native-platform/guide.zh.md +23 -0
  75. package/kb/extra/upgrade-guide/v0.2.2-rc.1/dsh-doc-skill/guide.md +35 -0
  76. package/kb/extra/upgrade-guide/v0.2.2-rc.1/dsh-doc-skill/guide.zh.md +35 -0
  77. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-change-request-overview/guide.md +26 -0
  78. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-change-request-overview/guide.zh.md +26 -0
  79. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-pinned-diff/guide.md +26 -0
  80. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-pinned-diff/guide.zh.md +26 -0
  81. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-review-reads/guide.md +19 -0
  82. package/kb/extra/upgrade-guide/v0.2.2-rc.1/forge-review-reads/guide.zh.md +19 -0
  83. package/kb/extra/upgrade-guide/v0.2.2-rc.1/package-export-cleanup/guide.md +26 -0
  84. package/kb/extra/upgrade-guide/v0.2.2-rc.1/package-export-cleanup/guide.zh.md +26 -0
  85. package/kb/extra/upgrade-guide/v0.2.2-rc.1/plugin-update-method/guide.md +22 -0
  86. package/kb/extra/upgrade-guide/v0.2.2-rc.1/plugin-update-method/guide.zh.md +22 -0
  87. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-bootstrap-protocol/guide.md +25 -0
  88. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-bootstrap-protocol/guide.zh.md +25 -0
  89. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-inspect-output/guide.md +48 -0
  90. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-inspect-output/guide.zh.md +48 -0
  91. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-scoped-repl-default/guide.md +45 -0
  92. package/kb/extra/upgrade-guide/v0.2.2-rc.1/ptc-scoped-repl-default/guide.zh.md +45 -0
  93. package/kb/extra/upgrade-guide/v0.2.2-rc.1/runtime-context-reminders/guide.md +19 -0
  94. package/kb/extra/upgrade-guide/v0.2.2-rc.1/runtime-context-reminders/guide.zh.md +19 -0
  95. package/kb/extra/upgrade-guide/v0.2.2-rc.1/session-append-overloads/guide.md +17 -0
  96. package/kb/extra/upgrade-guide/v0.2.2-rc.1/session-append-overloads/guide.zh.md +17 -0
  97. package/kb/extra/upgrade-guide/v0.2.2-rc.1/subagent-interrupt-default/guide.md +27 -0
  98. package/kb/extra/upgrade-guide/v0.2.2-rc.1/subagent-interrupt-default/guide.zh.md +27 -0
  99. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-backend-cleanup-error/guide.md +20 -0
  100. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-backend-cleanup-error/guide.zh.md +20 -0
  101. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-bundle-sidebar-backend/guide.md +19 -0
  102. package/kb/extra/upgrade-guide/v0.2.2-rc.1/terminal-bundle-sidebar-backend/guide.zh.md +19 -0
  103. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-fetch-transport-error-codes/guide.md +18 -0
  104. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-fetch-transport-error-codes/guide.zh.md +18 -0
  105. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-search-billing/guide.md +41 -0
  106. package/kb/extra/upgrade-guide/v0.2.2-rc.1/web-search-billing/guide.zh.md +41 -0
  107. package/kb/extra/upgrade-guide/v0.2.2-rc.1/window-drag-regions/guide.md +21 -0
  108. package/kb/extra/upgrade-guide/v0.2.2-rc.1/window-drag-regions/guide.zh.md +21 -0
  109. package/kb/extra/upgrade-guide/v0.2.2-rc.2/client-module-metadata/guide.md +29 -0
  110. package/kb/extra/upgrade-guide/v0.2.2-rc.2/client-module-metadata/guide.zh.md +29 -0
  111. package/kb/extra/upgrade-guide/v0.2.2-rc.2/connection-page-peer/guide.md +25 -0
  112. package/kb/extra/upgrade-guide/v0.2.2-rc.2/connection-page-peer/guide.zh.md +25 -0
  113. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cordis-root-and-intercept-metadata/guide.md +31 -0
  114. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cordis-root-and-intercept-metadata/guide.zh.md +31 -0
  115. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-agents-without-preset/guide.md +24 -0
  116. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-agents-without-preset/guide.zh.md +24 -0
  117. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-macos-provider/guide.md +24 -0
  118. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-macos-provider/guide.zh.md +24 -0
  119. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-partial-observations/guide.md +19 -0
  120. package/kb/extra/upgrade-guide/v0.2.2-rc.2/cua-partial-observations/guide.zh.md +19 -0
  121. package/kb/extra/upgrade-guide/v0.2.2-rc.2/deepseek-files-timeout/guide.md +15 -0
  122. package/kb/extra/upgrade-guide/v0.2.2-rc.2/deepseek-files-timeout/guide.zh.md +15 -0
  123. package/kb/extra/upgrade-guide/v0.2.2-rc.2/experimental-tool-error-codes/guide.md +28 -0
  124. package/kb/extra/upgrade-guide/v0.2.2-rc.2/experimental-tool-error-codes/guide.zh.md +28 -0
  125. package/kb/extra/upgrade-guide/v0.2.2-rc.2/package-export-cleanup/guide.md +36 -0
  126. package/kb/extra/upgrade-guide/v0.2.2-rc.2/package-export-cleanup/guide.zh.md +36 -0
  127. package/kb/extra/upgrade-guide/v0.2.2-rc.2/python-ptc-removal/guide.md +22 -0
  128. package/kb/extra/upgrade-guide/v0.2.2-rc.2/python-ptc-removal/guide.zh.md +22 -0
  129. package/kb/extra/upgrade-guide/v0.2.2-rc.2/session-status-package/guide.md +31 -0
  130. package/kb/extra/upgrade-guide/v0.2.2-rc.2/session-status-package/guide.zh.md +31 -0
  131. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shared-search-filter/guide.md +18 -0
  132. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shared-search-filter/guide.zh.md +18 -0
  133. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shell-fs-tool-error-codes/guide.md +30 -0
  134. package/kb/extra/upgrade-guide/v0.2.2-rc.2/shell-fs-tool-error-codes/guide.zh.md +30 -0
  135. package/kb/extra/web-styling.md +57 -57
  136. package/kb/extra/web-styling.zh.md +57 -57
  137. package/kb/meta/search-index.json +4508 -3980
  138. package/kb/meta/source.json +18 -18
  139. package/kb/site/develop/practice/llm-adapter.md +192 -192
  140. package/kb/site/en/develop/practice/llm-adapter.md +192 -192
  141. package/kb/site/en/guide/desktop-uninstall-cleanup.md +63 -0
  142. package/kb/site/en/guide/plugin-market.md +153 -151
  143. package/kb/site/en/guide/providers.md +234 -234
  144. package/kb/site/en/guide/quickstart.md +35 -34
  145. package/kb/site/en/reference/capability-seams.md +789 -767
  146. package/kb/site/en/reference/config-catalog.md +5432 -5128
  147. package/kb/site/en/reference/cookbook/adding-a-package.md +175 -175
  148. package/kb/site/en/reference/cookbook/adding-a-tool.md +105 -104
  149. package/kb/site/en/reference/cookbook/extension-cookbook.md +178 -135
  150. package/kb/site/en/reference/cordis-api/context.md +373 -369
  151. package/kb/site/en/reference/cordis-api/fiber.md +457 -433
  152. package/kb/site/en/reference/cordis-api/inherited.md +44 -44
  153. package/kb/site/en/reference/cordis-api/service.md +118 -107
  154. package/kb/site/en/reference/experimental-persistence-catalog.md +36 -23
  155. package/kb/site/en/reference/index.md +174 -174
  156. package/kb/site/en/reference/persistence-catalog.md +9453 -9432
  157. package/kb/site/en/reference/subsystems/compaction.md +288 -288
  158. package/kb/site/en/reference/subsystems/core.md +1172 -1171
  159. package/kb/site/en/reference/subsystems/credentials.md +526 -497
  160. package/kb/site/en/reference/subsystems/filesystem.md +708 -708
  161. package/kb/site/en/reference/subsystems/index.md +82 -82
  162. package/kb/site/en/reference/subsystems/llm-streaming.md +1290 -1288
  163. package/kb/site/en/reference/subsystems/lsp.md +230 -206
  164. package/kb/site/en/reference/subsystems/persistence.md +451 -432
  165. package/kb/site/en/reference/subsystems/plan.md +91 -91
  166. package/kb/site/en/reference/subsystems/ptc-runtime.md +295 -261
  167. package/kb/site/en/reference/subsystems/sandbox.md +250 -232
  168. package/kb/site/en/reference/subsystems/session-query.md +525 -515
  169. package/kb/site/en/reference/subsystems/session-reference.md +231 -229
  170. package/kb/site/en/reference/subsystems/session.md +1478 -1431
  171. package/kb/site/en/reference/subsystems/sidebar-right.md +165 -165
  172. package/kb/site/en/reference/subsystems/skills.md +356 -356
  173. package/kb/site/en/reference/subsystems/slots.md +235 -231
  174. package/kb/site/en/reference/subsystems/terminal.md +188 -188
  175. package/kb/site/en/reference/subsystems/tools.md +902 -891
  176. package/kb/site/en/reference/subsystems/user-questions.md +330 -327
  177. package/kb/site/en/reference/subsystems/web-client.md +161 -104
  178. package/kb/site/en/reference/subsystems/web-server.md +434 -351
  179. package/kb/site/en/reference/subsystems/web.md +268 -268
  180. package/kb/site/en/reference/subsystems/workflow.md +287 -282
  181. package/kb/site/en/reference/subsystems/workspace.md +743 -651
  182. package/kb/site/en/reference/tool-catalog.md +2867 -2704
  183. package/kb/site/guide/desktop-uninstall-cleanup.md +63 -0
  184. package/kb/site/guide/plugin-market.md +153 -151
  185. package/kb/site/guide/providers.md +234 -234
  186. package/kb/site/guide/quickstart.md +35 -34
  187. package/kb/site/reference/capability-seams.md +789 -767
  188. package/kb/site/reference/config-catalog.md +5432 -5128
  189. package/kb/site/reference/cookbook/adding-a-package.md +175 -175
  190. package/kb/site/reference/cookbook/adding-a-tool.md +107 -106
  191. package/kb/site/reference/cookbook/extension-cookbook.md +182 -139
  192. package/kb/site/reference/cordis-api/context.md +373 -369
  193. package/kb/site/reference/cordis-api/fiber.md +459 -435
  194. package/kb/site/reference/cordis-api/inherited.md +44 -44
  195. package/kb/site/reference/cordis-api/service.md +118 -107
  196. package/kb/site/reference/experimental-persistence-catalog.md +36 -23
  197. package/kb/site/reference/index.md +178 -178
  198. package/kb/site/reference/persistence-catalog.md +9453 -9432
  199. package/kb/site/reference/subsystems/compaction.md +288 -288
  200. package/kb/site/reference/subsystems/core.md +1184 -1183
  201. package/kb/site/reference/subsystems/credentials.md +526 -497
  202. package/kb/site/reference/subsystems/filesystem.md +708 -708
  203. package/kb/site/reference/subsystems/index.md +82 -82
  204. package/kb/site/reference/subsystems/llm-streaming.md +1296 -1294
  205. package/kb/site/reference/subsystems/lsp.md +230 -206
  206. package/kb/site/reference/subsystems/persistence.md +451 -432
  207. package/kb/site/reference/subsystems/plan.md +91 -91
  208. package/kb/site/reference/subsystems/ptc-runtime.md +295 -261
  209. package/kb/site/reference/subsystems/sandbox.md +250 -232
  210. package/kb/site/reference/subsystems/session-query.md +525 -515
  211. package/kb/site/reference/subsystems/session-reference.md +231 -229
  212. package/kb/site/reference/subsystems/session.md +1482 -1435
  213. package/kb/site/reference/subsystems/sidebar-right.md +165 -165
  214. package/kb/site/reference/subsystems/skills.md +356 -356
  215. package/kb/site/reference/subsystems/slots.md +239 -235
  216. package/kb/site/reference/subsystems/terminal.md +188 -188
  217. package/kb/site/reference/subsystems/tools.md +902 -891
  218. package/kb/site/reference/subsystems/user-questions.md +330 -327
  219. package/kb/site/reference/subsystems/web-client.md +161 -104
  220. package/kb/site/reference/subsystems/web-server.md +434 -351
  221. package/kb/site/reference/subsystems/web.md +268 -268
  222. package/kb/site/reference/subsystems/workflow.md +287 -282
  223. package/kb/site/reference/subsystems/workspace.md +743 -651
  224. package/kb/site/reference/tool-catalog.md +2872 -2709
  225. package/lib/index.js +359 -359
  226. package/package.json +68 -68
  227. package/skills/dsh-plugin-dev-kb.md +71 -70
  228. package/kb/extra/subsystems/office-to-pdf.md +0 -87
  229. package/kb/extra/subsystems/office-to-pdf.zh.md +0 -87
@@ -1,435 +1,459 @@
1
- ---
2
- editSource: "docs/cordis-api/fiber.zh.md"
3
- rawMarkdownPath: "reference/cordis-api/fiber.md"
4
- ---
5
-
6
- <!-- 英文源文件由 scripts/gen-cordis-catalog.ts 生成;本中文文件是通过双语配对维护的经评审对侧。
7
- 更新时先运行 `pnpm run gen-cordis-catalog` 更新英文,再更新本文件并运行 `pnpm run verify-translation-pairing --write docs/cordis-api/fiber.md` 重新记录配对。 -->
8
-
9
- # Fiber
10
-
11
- fiber 是一个已加载的插件实例,包含其生命周期状态、经过校验的配置以及已注册的作用。`ctx.fiber` 是当前 fiber,`ctx.effect()` 会将调用委托给它。
12
-
13
- ### ctx.effect(execute, label?)
14
-
15
- ```ts cordis-catalog
16
- /**
17
- * Register a cleanup-aware effect on this fiber.
18
- *
19
- * `execute` runs immediately; the disposers it produces are collected and
20
- * run (in reverse order) either when the returned disposer is called or
21
- * when the fiber unloads, whichever comes first. Calling the disposer twice
22
- * is a no-op. Throws `CordisError('INACTIVE_EFFECT')` if the fiber is
23
- * already disposed, and `TypeError` if `execute` returns an invalid shape.
24
- *
25
- * @param execute — the effect body; see {@link Effect} for accepted shapes.
26
- * @param label — effect label shown in `getEffects()` diagnostics.
27
- * @returns a disposer that tears the effect down and settles once done.
28
- */
29
- effect(execute: () => SyncEffect, label?: string): Disposable<Promise<void>>
30
- effect(execute: () => Effect, label?: string): AsyncDisposable<Promise<void>>
31
- ```
32
-
33
- 在此 fiber 上注册一个支持清理的作用。
34
-
35
- `execute` 会立即运行;它产生的清理函数将被收集,并在调用返回的清理函数或卸载 fiber 时按相反顺序运行,以先发生者为准。重复调用清理函数不会产生任何效果。如果 fiber 已经 dispose(资源释放),则抛出 `CordisError('INACTIVE_EFFECT')`;如果结构无效,则抛出 `TypeError`,表示 `execute` 返回了不受支持的结果。
36
-
37
- - `execute`:作用主体;可接受的结构见 `Effect`。
38
- - `label`:在 `getEffects()` 诊断信息中显示的作用标签。
39
-
40
- **返回**一个用于撤销该作用的清理函数,并在清理完成后结算。
41
-
42
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L421)
43
-
44
- ### ctx.fiber
45
-
46
- ```ts cordis-catalog
47
- /** The fiber (plugin runtime instance) that owns this context. */
48
- fiber: Fiber
49
- ```
50
-
51
- 拥有此上下文的 fiber(插件运行时实例)。
52
-
53
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L12)
54
-
55
- ## Fiber 类
56
-
57
- 单次插件应用的运行时实例。
58
-
59
- fiber 会跟踪 `ctx.plugin()` 返回的插件上下文所对应的依赖状态、原始配置与有效配置、生命周期作用和清理操作。
60
-
61
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L184)
62
-
63
- ### fiber.uid
64
-
65
- ```ts cordis-catalog
66
- /** Unique id within the registry; 0 for the root fiber, `null` once disposed. */
67
- public uid: number | null
68
- ```
69
-
70
- 在注册表中的唯一 id;根 fiber 的 id 为 0,dispose 后为 `null`。
71
-
72
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L186)
73
-
74
- ### fiber.ctx
75
-
76
- ```ts cordis-catalog
77
- /** The context this fiber's plugin runs in (extends the parent context). */
78
- public readonly ctx: Context
79
- ```
80
-
81
- 此 fiber 的插件运行所在的上下文(扩展自父上下文)。
82
-
83
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L188)
84
-
85
- ### fiber.config
86
-
87
- ```ts cordis-catalog
88
- /** Raw plugin input retained for the next activation. */
89
- public config: any
90
- ```
91
-
92
- 为下次激活保留的原始插件输入。
93
-
94
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L190)
95
-
96
- ### fiber.state
97
-
98
- ```ts cordis-catalog
99
- /** Current lifecycle state; transitions emit `internal/status`. */
100
- public state
101
- ```
102
-
103
- 当前生命周期状态;状态转换会发出 `internal/status`。
104
-
105
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L192)
106
-
107
- ### fiber.dispose
108
-
109
- ```ts cordis-catalog
110
- /** Dispose this fiber: unload the plugin, then settle once cleanup finished. */
111
- public readonly dispose: () => Promise<void>
112
- ```
113
-
114
- dispose 此 fiber:卸载插件,并在清理完成后结算。
115
-
116
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L194)
117
-
118
- ### fiber.committed
119
-
120
- ```ts cordis-catalog
121
- /** Required implementations retained through dependent teardown. */
122
- public committed: Readonly<Dict<Impl>> | undefined
123
- ```
124
-
125
- 在依赖方清理完成前保留的所需服务实现。
126
-
127
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L196)
128
-
129
- ### fiber.provisions
130
-
131
- ```ts cordis-catalog
132
- /** Service implementations owned by this fiber, including isolated provisions. */
133
- public readonly provisions: Set<Impl>
134
- ```
135
-
136
- 此 fiber 拥有的服务实现,包括隔离域中的服务。
137
-
138
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L198)
139
-
140
- ### fiber.inertia
141
-
142
- ```ts cordis-catalog
143
- /** The in-flight load/unload transition, if one is currently running. */
144
- public inertia: Promise<void> | undefined
145
- ```
146
-
147
- 当前正在进行的加载或卸载转换;如果没有此类转换,则为 undefined。
148
-
149
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L200)
150
-
151
- ### fiber.name
152
-
153
- ```ts cordis-catalog
154
- /** The plugin's display name, inherited from the nearest named ancestor, else `'root'`. */
155
- get name()
156
- ```
157
-
158
- 插件的显示名称,继承自最近的具名祖先;如果不存在,则为 `'root'`。
159
-
160
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L342)
161
-
162
- ### fiber.assertActive()
163
-
164
- ```ts cordis-catalog
165
- /**
166
- * Throw if the fiber has already been disposed.
167
- *
168
- * @returns nothing when the fiber is still active.
169
- * @throws {CordisError} `INACTIVE_EFFECT` when the fiber's uid has been cleared.
170
- */
171
- assertActive()
172
- ```
173
-
174
- 如果 fiber 已经 dispose,则抛出异常。
175
-
176
- **返回**:fiber 仍处于活动状态时不返回任何内容。
177
-
178
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L357)
179
-
180
- ### fiber.effect(execute, label?)
181
-
182
- ```ts cordis-catalog
183
- /**
184
- * Register a cleanup-aware effect on this fiber.
185
- *
186
- * `execute` runs immediately; the disposers it produces are collected and
187
- * run (in reverse order) either when the returned disposer is called or
188
- * when the fiber unloads, whichever comes first. Calling the disposer twice
189
- * is a no-op. Throws `CordisError('INACTIVE_EFFECT')` if the fiber is
190
- * already disposed, and `TypeError` if `execute` returns an invalid shape.
191
- *
192
- * @param execute — the effect body; see {@link Effect} for accepted shapes.
193
- * @param label — effect label shown in `getEffects()` diagnostics.
194
- * @returns a disposer that tears the effect down and settles once done.
195
- */
196
- effect(execute: () => SyncEffect, label?: string): Disposable<Promise<void>>
197
- effect(execute: () => Effect, label?: string): AsyncDisposable<Promise<void>>
198
- ```
199
-
200
- 在此 fiber 上注册一个支持清理的作用。
201
-
202
- `execute` 会立即运行;它产生的清理函数将被收集,并在调用返回的清理函数或卸载 fiber 时按相反顺序运行,以先发生者为准。重复调用清理函数不会产生任何效果。如果 fiber 已经 dispose,则抛出 `CordisError('INACTIVE_EFFECT')`;如果结构无效,则抛出 `TypeError`,表示 `execute` 返回了不受支持的结果。
203
-
204
- - `execute`:作用主体;可接受的结构见 `Effect`。
205
- - `label`:在 `getEffects()` 诊断信息中显示的作用标签。
206
-
207
- **返回**一个用于撤销该作用的清理函数,并在清理完成后结算。
208
-
209
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L421)
210
-
211
- ### fiber.getEffects()
212
-
213
- ```ts cordis-catalog
214
- /**
215
- * Return metadata for currently registered effects.
216
- *
217
- * @returns one {@link EffectMeta} tree per labeled live effect.
218
- */
219
- getEffects()
220
- ```
221
-
222
- 返回当前已注册作用的元数据。
223
-
224
- **返回**:每个带标签的活动作用对应一棵 `EffectMeta` 树。
225
-
226
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L574)
227
-
228
- ### fiber.rawConfig
229
-
230
- ```ts cordis-catalog
231
- /** Raw input retained for the next activation, without evaluating expressions or validating it. */
232
- get rawConfig(): unknown
233
- ```
234
-
235
-
236
- 保留供下次激活使用的原始输入,不执行表达式求值或验证。
237
-
238
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L649)
239
-
240
- ### fiber.effectiveConfig
241
-
242
- ```ts cordis-catalog
243
- /**
244
- * The object passed to plugin activation or the latest successful update that retained the instance.
245
- * Candidate resolution does not publish it; volatile updates retain its references.
246
- * Undefined before activation and readable after unload; callers requiring a live instance check `state`.
247
- */
248
- get effectiveConfig(): unknown
249
- ```
250
-
251
- 传给插件激活过程或最近一次成功保留实例的更新的对象。候选配置求值不发布结果;volatile 更新保留其中的引用。激活前为 undefined,卸载后仍可读取;需要运行中实例的调用方还应检查 `state`。
252
-
253
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L664)
254
-
255
- ### fiber.resolveConfig(config)
256
-
257
- ```ts cordis-catalog
258
- /**
259
- * Evaluate and validate a candidate using this fiber's `internal/config` hooks and runtime schema.
260
- * Does not publish the result, replace raw input, or commit running volatile references.
261
- * Required injections must be available when a hook uses them.
262
- * @param config Raw candidate input.
263
- * @returns The candidate's resolved config, retaining the schema's result identity.
264
- * @throws {ValidationError} when the runtime schema rejects the candidate; hook errors propagate.
265
- */
266
- resolveConfig(config: unknown): unknown
267
- ```
268
-
269
-
270
- 通过此 fiber 的 `internal/config` 钩子和运行时 schema 对候选值求值并验证。此操作不发布结果、不替换原始输入,也不提交运行中的 volatile 引用。钩子访问的注入服务必须已经可用。
271
-
272
- - `config`:原始候选输入。
273
-
274
- **返回**候选配置的解析结果,保留 schema 返回对象的身份。
275
-
276
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L676)
277
-
278
- ### fiber.await()
279
-
280
- ```ts cordis-catalog
281
- /**
282
- * Wait for current lifecycle work and rethrow startup errors.
283
- *
284
- * @returns this fiber, once it has settled into a stable state.
285
- * @throws the config-validation or plugin-startup error, if any.
286
- */
287
- async await()
288
- ```
289
-
290
- 等待当前生命周期工作完成,并重新抛出启动错误。
291
-
292
- **返回**:进入稳定状态后的此 fiber。
293
-
294
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L754)
295
-
296
- ### fiber.restart()
297
-
298
- ```ts cordis-catalog
299
- /**
300
- * Dispose and immediately reload this plugin with its current config.
301
- *
302
- * @returns a promise resolving once the reload settled.
303
- * @throws {CordisError} `INACTIVE_EFFECT` when the fiber is already disposed.
304
- */
305
- async restart()
306
- ```
307
-
308
- dispose 此插件,并立即使用其当前配置重新加载。
309
-
310
- **返回**一个在重新加载完成后兑现的 promise。
311
-
312
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L768)
313
-
314
- ### fiber.update(config, noSave?)
315
-
316
- ```ts cordis-catalog
317
- /**
318
- * Resolve a candidate, retain its raw config and apply it through the update waterfall.
319
- * @param config Raw config; pending fibers defer resolution until activation.
320
- * @param noSave Suppress the persistence notification when true.
321
- * @returns The awaited update/restart result, or undefined when a synchronous listener handles it.
322
- * @throws {ValidationError} when an active fiber's candidate is invalid.
323
- */
324
- update(config: any, noSave = false): Awaitable<void>
325
- ```
326
-
327
- 求值候选配置,保留原始输入,并通过更新 waterfall 应用结果。
328
-
329
- - `config` — 原始配置;pending fiber 将求值推迟到激活时。
330
- - `noSave` — 为 true 时不发出持久化通知。
331
-
332
- **返回** 可等待的更新或重启结果;同步监听器处理更新时为 undefined。
333
-
334
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L783)
335
-
336
- ## Effect
337
-
338
- `ctx.effect()` 和插件启动所接受的作用主体结果。
339
-
340
- 可以是单个清理函数、兑现为清理函数的 promise,或生成多个清理函数的(可能为异步的)可迭代对象。生成器作用会在每个清理函数产生时将其注册。
341
-
342
- ```ts cordis-catalog
343
- /**
344
- * Effect body result accepted by `ctx.effect()` and plugin startup.
345
- *
346
- * Either a single disposer, a promise of one, or a (possibly async) iterable
347
- * yielding several — generator effects register each yielded disposer as it
348
- * is produced.
349
- */
350
- type Effect<T = any> =
351
- | SyncEffect<T>
352
- | AsyncEffect<T>
353
- ```
354
-
355
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L83)
356
-
357
- ## Disposable
358
-
359
- 作用返回的函数,用于在资源释放期间释放资源。
360
-
361
- 拥有该函数的 fiber 卸载时,清理函数会按注册的相反顺序运行;清理函数可以是异步的,此时卸载过程会等待其完成。
362
-
363
- ```ts cordis-catalog
364
- /**
365
- * Function returned by an effect to release resources during disposal.
366
- *
367
- * Disposers run in reverse registration order when the owning fiber unloads;
368
- * they may be async, in which case unloading awaits them.
369
- */
370
- type Disposable<T = any> = () => T
371
- ```
372
-
373
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L74)
374
-
375
- ## EffectMeta
376
-
377
- 用于在诊断信息中公开嵌套作用标签的树节点。
378
-
379
- ```ts cordis-catalog
380
- /** Tree node used to expose nested effect labels for diagnostics. */
381
- interface EffectMeta {
382
- /** Human-readable effect label, e.g. `ctx.on("event")` or `ctx.provide("name")`. */
383
- label: string
384
- /** Metadata of nested effects registered while this effect ran. */
385
- children: EffectMeta[]
386
- }
387
- ```
388
-
389
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L96)
390
-
391
- ## CordisError
392
-
393
- 具有稳定机器可读错误码的框架错误。
394
-
395
- ```ts cordis-catalog
396
- /** Framework error with a stable machine-readable code. */
397
- class CordisError extends Error {
398
- /**
399
- * @param code — the stable error code; also the default message.
400
- * @param message — optional human-readable override.
401
- */
402
- constructor(public code: CordisError.Code, message?: string)
403
- }
404
-
405
- /** Cordis error code definitions. */
406
- namespace CordisError {
407
- export type Code = keyof typeof Code
408
-
409
- export const Code = {
410
- INACTIVE_EFFECT: 'cannot create effect on inactive context',
411
- } as const
412
- }
413
- ```
414
-
415
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L157)
416
-
417
- ## ValidationError
418
-
419
- 插件配置未通过 standard-schema 校验时抛出的错误。
420
-
421
- ```ts cordis-catalog
422
- /** Error raised when plugin configuration fails standard-schema validation. */
423
- class ValidationError extends TypeError {
424
- name = 'ValidationError'
425
-
426
- /**
427
- * Build the aggregated message from schema issues.
428
- *
429
- * @param issues — the standard-schema issues, one message line each.
430
- */
431
- constructor(issues: readonly StandardSchemaV1.Issue[])
432
- }
433
- ```
434
-
435
- [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L19)
1
+ ---
2
+ editSource: "docs/cordis-api/fiber.zh.md"
3
+ rawMarkdownPath: "reference/cordis-api/fiber.md"
4
+ ---
5
+
6
+ <!-- 英文源文件由 scripts/gen-cordis-catalog.ts 生成;本中文文件是通过双语配对维护的经评审对侧。
7
+ 更新时先运行 `pnpm run gen-cordis-catalog` 更新英文,再更新本文件并运行 `pnpm run verify-translation-pairing --write docs/cordis-api/fiber.md` 重新记录配对。 -->
8
+
9
+ # Fiber
10
+
11
+ fiber 是一个已加载的插件实例,包含其生命周期状态、经过校验的配置以及已注册的作用。`ctx.fiber` 是当前 fiber,`ctx.effect()` 会将调用委托给它。
12
+
13
+ ### ctx.effect(execute, label?)
14
+
15
+ ```ts cordis-catalog
16
+ /**
17
+ * Register a cleanup-aware effect on this fiber.
18
+ *
19
+ * `execute` runs immediately; the disposers it produces are collected and
20
+ * run (in reverse order) either when the returned disposer is called or
21
+ * when the fiber unloads, whichever comes first. Calling the disposer twice
22
+ * is a no-op. Throws `CordisError('INACTIVE_EFFECT')` if the fiber is
23
+ * already disposed, and `TypeError` if `execute` returns an invalid shape.
24
+ *
25
+ * @param execute — the effect body; see {@link Effect} for accepted shapes.
26
+ * @param label — effect label shown in `getEffects()` diagnostics.
27
+ * @returns a disposer that tears the effect down and settles once done.
28
+ */
29
+ effect(execute: () => SyncEffect, label?: string): Disposable<Promise<void>>
30
+ effect(execute: () => Effect, label?: string): AsyncDisposable<Promise<void>>
31
+ ```
32
+
33
+ 在此 fiber 上注册一个支持清理的作用。
34
+
35
+ `execute` 会立即运行;它产生的清理函数将被收集,并在调用返回的清理函数或卸载 fiber 时按相反顺序运行,以先发生者为准。重复调用清理函数不会产生任何效果。如果 fiber 已经 dispose(资源释放),则抛出 `CordisError('INACTIVE_EFFECT')`;如果结构无效,则抛出 `TypeError`,表示 `execute` 返回了不受支持的结果。
36
+
37
+ - `execute`:作用主体;可接受的结构见 `Effect`。
38
+ - `label`:在 `getEffects()` 诊断信息中显示的作用标签。
39
+
40
+ **返回**一个用于撤销该作用的清理函数,并在清理完成后结算。
41
+
42
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L443)
43
+
44
+ ### ctx.fiber
45
+
46
+ ```ts cordis-catalog
47
+ /** The fiber (plugin runtime instance) that owns this context. */
48
+ fiber: Fiber
49
+ ```
50
+
51
+ 拥有此上下文的 fiber(插件运行时实例)。
52
+
53
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L12)
54
+
55
+ ## Fiber 类
56
+
57
+ 单次插件应用的运行时实例。
58
+
59
+ fiber 会跟踪 `ctx.plugin()` 返回的插件上下文所对应的依赖状态、原始配置与有效配置、生命周期作用和清理操作。
60
+
61
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L214)
62
+
63
+ ### fiber.uid
64
+
65
+ ```ts cordis-catalog
66
+ /** Unique id within the registry; 0 for the root fiber, `null` once disposed. */
67
+ public uid: number | null
68
+ ```
69
+
70
+ 在注册表中的唯一 id;根 fiber 的 id 为 0,dispose 后为 `null`。
71
+
72
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L216)
73
+
74
+ ### fiber.ctx
75
+
76
+ ```ts cordis-catalog
77
+ /** The context this fiber's plugin runs in (extends the parent context). */
78
+ public readonly ctx: Context
79
+ ```
80
+
81
+ 此 fiber 的插件运行所在的上下文(扩展自父上下文)。
82
+
83
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L218)
84
+
85
+ ### fiber.config
86
+
87
+ ```ts cordis-catalog
88
+ /** Raw plugin input retained for the next activation. */
89
+ public config: any
90
+ ```
91
+
92
+ 为下次激活保留的原始插件输入。
93
+
94
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L220)
95
+
96
+ ### fiber.state
97
+
98
+ ```ts cordis-catalog
99
+ /** Current lifecycle state; transitions emit `internal/status`. */
100
+ public state
101
+ ```
102
+
103
+ 当前生命周期状态;状态转换会发出 `internal/status`。
104
+
105
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L222)
106
+
107
+ ### fiber.dispose
108
+
109
+ ```ts cordis-catalog
110
+ /** Dispose this fiber: unload the plugin, then settle once cleanup finished. */
111
+ public readonly dispose: () => Promise<void>
112
+ ```
113
+
114
+ dispose 此 fiber:卸载插件,并在清理完成后结算。
115
+
116
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L224)
117
+
118
+ ### fiber.committed
119
+
120
+ ```ts cordis-catalog
121
+ /** Required implementations retained through dependent teardown. */
122
+ public committed: Readonly<Dict<Impl>> | undefined
123
+ ```
124
+
125
+ 在依赖方清理完成前保留的所需服务实现。
126
+
127
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L226)
128
+
129
+ ### fiber.provisions
130
+
131
+ ```ts cordis-catalog
132
+ /** Service implementations owned by this fiber, including isolated provisions. */
133
+ public readonly provisions: Set<Impl>
134
+ ```
135
+
136
+ 此 fiber 拥有的服务实现,包括隔离域中的服务。
137
+
138
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L228)
139
+
140
+ ### fiber.inertia
141
+
142
+ ```ts cordis-catalog
143
+ /** The in-flight load/unload transition, if one is currently running. */
144
+ public inertia: Promise<void> | undefined
145
+ ```
146
+
147
+ 当前正在进行的加载或卸载转换;如果没有此类转换,则为 undefined。
148
+
149
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L230)
150
+
151
+ ### fiber.name
152
+
153
+ ```ts cordis-catalog
154
+ /** The plugin's display name, inherited from the nearest named ancestor, else `'root'`. */
155
+ get name()
156
+ ```
157
+
158
+ 插件的显示名称,继承自最近的具名祖先;如果不存在,则为 `'root'`。
159
+
160
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L364)
161
+
162
+ ### fiber.assertActive()
163
+
164
+ ```ts cordis-catalog
165
+ /**
166
+ * Throw if the fiber has already been disposed.
167
+ *
168
+ * @returns nothing when the fiber is still active.
169
+ * @throws {CordisError} `INACTIVE_EFFECT` when the fiber's uid has been cleared.
170
+ */
171
+ assertActive()
172
+ ```
173
+
174
+ 如果 fiber 已经 dispose,则抛出异常。
175
+
176
+ **返回**:fiber 仍处于活动状态时不返回任何内容。
177
+
178
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L379)
179
+
180
+ ### fiber.effect(execute, label?)
181
+
182
+ ```ts cordis-catalog
183
+ /**
184
+ * Register a cleanup-aware effect on this fiber.
185
+ *
186
+ * `execute` runs immediately; the disposers it produces are collected and
187
+ * run (in reverse order) either when the returned disposer is called or
188
+ * when the fiber unloads, whichever comes first. Calling the disposer twice
189
+ * is a no-op. Throws `CordisError('INACTIVE_EFFECT')` if the fiber is
190
+ * already disposed, and `TypeError` if `execute` returns an invalid shape.
191
+ *
192
+ * @param execute — the effect body; see {@link Effect} for accepted shapes.
193
+ * @param label — effect label shown in `getEffects()` diagnostics.
194
+ * @returns a disposer that tears the effect down and settles once done.
195
+ */
196
+ effect(execute: () => SyncEffect, label?: string): Disposable<Promise<void>>
197
+ effect(execute: () => Effect, label?: string): AsyncDisposable<Promise<void>>
198
+ ```
199
+
200
+ 在此 fiber 上注册一个支持清理的作用。
201
+
202
+ `execute` 会立即运行;它产生的清理函数将被收集,并在调用返回的清理函数或卸载 fiber 时按相反顺序运行,以先发生者为准。重复调用清理函数不会产生任何效果。如果 fiber 已经 dispose,则抛出 `CordisError('INACTIVE_EFFECT')`;如果结构无效,则抛出 `TypeError`,表示 `execute` 返回了不受支持的结果。
203
+
204
+ - `execute`:作用主体;可接受的结构见 `Effect`。
205
+ - `label`:在 `getEffects()` 诊断信息中显示的作用标签。
206
+
207
+ **返回**一个用于撤销该作用的清理函数,并在清理完成后结算。
208
+
209
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L443)
210
+
211
+ ### fiber.getEffects()
212
+
213
+ ```ts cordis-catalog
214
+ /**
215
+ * Return metadata for currently registered effects.
216
+ *
217
+ * @returns one {@link EffectMeta} tree per labeled live effect.
218
+ */
219
+ getEffects()
220
+ ```
221
+
222
+ 返回当前已注册作用的元数据。
223
+
224
+ **返回**:每个带标签的活动作用对应一棵 `EffectMeta` 树。
225
+
226
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L596)
227
+
228
+ ### fiber.rawConfig
229
+
230
+ ```ts cordis-catalog
231
+ /** Raw input retained for the next activation, without evaluating expressions or validating it. */
232
+ get rawConfig(): unknown
233
+ ```
234
+
235
+
236
+ 保留供下次激活使用的原始输入,不执行表达式求值或验证。
237
+
238
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L671)
239
+
240
+ ### fiber.effectiveConfig
241
+
242
+ ```ts cordis-catalog
243
+ /**
244
+ * The object passed to plugin activation or the latest successful update that retained the instance.
245
+ * Candidate resolution does not publish it; volatile updates retain its references.
246
+ * Undefined before activation and readable after unload; callers requiring a live instance check `state`.
247
+ */
248
+ get effectiveConfig(): unknown
249
+ ```
250
+
251
+ 传给插件激活过程或最近一次成功保留实例的更新的对象。候选配置求值不发布结果;volatile 更新保留其中的引用。激活前为 undefined,卸载后仍可读取;需要运行中实例的调用方还应检查 `state`。
252
+
253
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L686)
254
+
255
+ ### fiber.resolveConfig(config)
256
+
257
+ ```ts cordis-catalog
258
+ /**
259
+ * Evaluate and validate a candidate using this fiber's `internal/config` hooks and runtime schema.
260
+ * Does not publish the result, replace raw input, or commit running volatile references.
261
+ * Required injections must be available when a hook uses them.
262
+ * @param config Raw candidate input.
263
+ * @returns The candidate's resolved config, retaining the schema's result identity.
264
+ * @throws {ValidationError} when the runtime schema rejects the candidate; hook errors propagate.
265
+ */
266
+ resolveConfig(config: unknown): unknown
267
+ ```
268
+
269
+
270
+ 通过此 fiber 的 `internal/config` 钩子和运行时 schema 对候选值求值并验证。此操作不发布结果、不替换原始输入,也不提交运行中的 volatile 引用。钩子访问的注入服务必须已经可用。
271
+
272
+ - `config`:原始候选输入。
273
+
274
+ **返回**候选配置的解析结果,保留 schema 返回对象的身份。
275
+
276
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L698)
277
+
278
+ ### fiber.await()
279
+
280
+ ```ts cordis-catalog
281
+ /**
282
+ * Wait for current lifecycle work and rethrow startup errors.
283
+ *
284
+ * @returns this fiber, once it has settled into a stable state.
285
+ * @throws the config-validation or plugin-startup error, if any.
286
+ */
287
+ async await()
288
+ ```
289
+
290
+ 等待当前生命周期工作完成,并重新抛出启动错误。
291
+
292
+ **返回**:进入稳定状态后的此 fiber。
293
+
294
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L776)
295
+
296
+ ### fiber.restart()
297
+
298
+ ```ts cordis-catalog
299
+ /**
300
+ * Dispose and immediately reload this plugin with its current config.
301
+ *
302
+ * @returns a promise resolving once the reload settled.
303
+ * @throws {CordisError} `INACTIVE_EFFECT` when the fiber is already disposed.
304
+ */
305
+ async restart()
306
+ ```
307
+
308
+ dispose 此插件,并立即使用其当前配置重新加载。
309
+
310
+ **返回**一个在重新加载完成后兑现的 promise。
311
+
312
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L790)
313
+
314
+ ### fiber.update(config, noSave?)
315
+
316
+ ```ts cordis-catalog
317
+ /**
318
+ * Resolve a candidate, retain its raw config and apply it through the update waterfall.
319
+ * @param config Raw config; pending fibers defer resolution until activation.
320
+ * @param noSave Suppress the persistence notification when true.
321
+ * @returns The awaited update/restart result, or undefined when a synchronous listener handles it.
322
+ * @throws {ValidationError} when an active fiber's candidate is invalid.
323
+ */
324
+ update(config: any, noSave = false): Awaitable<void>
325
+ ```
326
+
327
+ 求值候选配置,保留原始输入,并通过更新 waterfall 应用结果。
328
+
329
+ - `config` — 原始配置;pending fiber 将求值推迟到激活时。
330
+ - `noSave` — 为 true 时不发出持久化通知。
331
+
332
+ **返回** 可等待的更新或重启结果;同步监听器处理更新时为 undefined。
333
+
334
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L805)
335
+
336
+ ## Effect
337
+
338
+ `ctx.effect()` 和插件启动所接受的作用主体结果。
339
+
340
+ 可以是单个清理函数、兑现为清理函数的 promise,或生成多个清理函数的(可能为异步的)可迭代对象。生成器作用会在每个清理函数产生时将其注册。
341
+
342
+ ```ts cordis-catalog
343
+ /**
344
+ * Effect body result accepted by `ctx.effect()` and plugin startup.
345
+ *
346
+ * Either a single disposer, a promise of one, or a (possibly async) iterable
347
+ * yielding several — generator effects register each yielded disposer as it
348
+ * is produced.
349
+ */
350
+ type Effect<T = any> =
351
+ | SyncEffect<T>
352
+ | AsyncEffect<T>
353
+ ```
354
+
355
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L113)
356
+
357
+ ## Disposable
358
+
359
+ 作用返回的函数,用于在资源释放期间释放资源。
360
+
361
+ 拥有该函数的 fiber 卸载时,清理函数会按注册的相反顺序运行;清理函数可以是异步的,此时卸载过程会等待其完成。
362
+
363
+ ```ts cordis-catalog
364
+ /**
365
+ * Function returned by an effect to release resources during disposal.
366
+ *
367
+ * Disposers run in reverse registration order when the owning fiber unloads;
368
+ * they may be async, in which case unloading awaits them.
369
+ */
370
+ type Disposable<T = any> = () => T
371
+ ```
372
+
373
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L104)
374
+
375
+ ## EffectMeta
376
+
377
+ 用于在诊断信息中公开嵌套作用标签的树节点。
378
+
379
+ ```ts cordis-catalog
380
+ /** Tree node used to expose nested effect labels for diagnostics. */
381
+ interface EffectMeta {
382
+ /** Human-readable effect label, e.g. `ctx.on("event")` or `ctx.provide("name")`. */
383
+ label: string
384
+ /** Metadata of nested effects registered while this effect ran. */
385
+ children: EffectMeta[]
386
+ }
387
+ ```
388
+
389
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L126)
390
+
391
+ ## CordisError
392
+
393
+ 具有稳定机器可读错误码的框架错误。
394
+
395
+ ```ts cordis-catalog
396
+ /** Framework error with a stable machine-readable code. */
397
+ class CordisError extends Error {
398
+ /**
399
+ * @param code — the stable error code; also the default message.
400
+ * @param message — optional human-readable override.
401
+ */
402
+ constructor(public code: CordisError.Code, message?: string)
403
+ }
404
+
405
+ /** Cordis error code definitions. */
406
+ namespace CordisError {
407
+ export type Code = keyof typeof Code
408
+
409
+ export const Code = {
410
+ INACTIVE_EFFECT: 'cannot create effect on inactive context',
411
+ } as const
412
+ }
413
+ ```
414
+
415
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L187)
416
+
417
+ ## ValidationError
418
+
419
+ 插件配置未通过 standard-schema 校验时抛出的错误。
420
+
421
+ ```ts cordis-catalog
422
+ /** Error raised when plugin configuration fails standard-schema validation. */
423
+ class ValidationError extends TypeError {
424
+ name = 'ValidationError'
425
+
426
+ /**
427
+ * Build the aggregated message from schema issues.
428
+ *
429
+ * @param issues — the standard-schema issues, one message line each.
430
+ */
431
+ constructor(public issues: readonly StandardSchemaV1.Issue[])
432
+
433
+ /**
434
+ * Test whether a value is a config `ValidationError`, including one from another copy of Cordis.
435
+ *
436
+ * @param error — the value to test.
437
+ * @returns `true` if `error` carries the global validation-error brand.
438
+ */
439
+ static is(error: unknown): error is ValidationError
440
+
441
+ /**
442
+ * Convert an issue path to plain property keys.
443
+ *
444
+ * @param path — the standard-schema issue path; segments may be `{ key }` objects.
445
+ * @returns the property keys, or an empty array when the issue has no path.
446
+ */
447
+ static normalizePath(path: StandardSchemaV1.Issue['path'] = [])
448
+
449
+ /**
450
+ * Format an issue path as a dotted string.
451
+ *
452
+ * @param path — the standard-schema issue path.
453
+ * @returns the keys joined with `.`.
454
+ */
455
+ static formatPath(path: StandardSchemaV1.Issue['path'])
456
+ }
457
+ ```
458
+
459
+ [源码](https://github.com/deepseek-ai/deepseek-harness/blob/master/vendor/cordis/src/fiber.ts#L19)