dsh-plugin-guide 0.3.42 → 0.4.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.
- package/LICENSE +0 -0
- package/NOTICE.md +8 -23
- package/PRIVACY.md +11 -0
- package/README-zh.md +45 -420
- package/README.md +50 -435
- package/SKILL.md +41 -99
- package/STANDARDS.md +14 -5
- package/cordis.patch.yml +0 -0
- package/docs/boost.md +76 -0
- package/docs/entry.md +88 -0
- package/docs/flow.md +59 -0
- package/docs/levels.md +76 -0
- package/icon.svg +0 -0
- package/index.js +7 -24
- package/locale/en.json +2 -2
- package/locale/zh.json +2 -2
- package/package.json +29 -78
- package/README-es.md +0 -455
- package/README-hi.md +0 -455
- package/README-pt.md +0 -455
- package/bin/dsh-plugin-dev.js +0 -6
- package/data/facts.json +0 -66
- package/data/seams/index.json +0 -397
- package/data/standards.json +0 -300
- package/dist/dsh-plugin-dev.js +0 -2261
- package/guide/choosing-a-plugin.md +0 -412
- package/guide/choosing-a-plugin.zh-CN.md +0 -414
- package/guide/family-toolchain.md +0 -260
- package/guide/links.md +0 -112
- package/guide/migration-0.2.md +0 -275
- package/guide/plugin-dev-guide.md +0 -629
- package/guide/quick-reference.es.md +0 -185
- package/guide/quick-reference.hi.md +0 -185
- package/guide/quick-reference.md +0 -185
- package/guide/quick-reference.pt.md +0 -185
- package/guide/quick-reference.zh-CN.md +0 -184
- package/guide/release-engineering.md +0 -198
- package/guide/release-engineering.zh-CN.md +0 -198
- package/guide/standards.md +0 -141
- package/guide/standards.zh-CN.md +0 -141
- package/guide/unfixed-issues.md +0 -155
- package/guide/version-matrix.md +0 -309
- package/guide/when-to-retire-a-plugin.md +0 -127
- package/guide/when-to-retire-a-plugin.zh-CN.md +0 -127
- package/index.d.ts +0 -32
- package/references/cli-positioning-decision.md +0 -78
- package/references/community-ecosystem.md +0 -202
- package/references/community-repo-deep-dive.md +0 -660
- package/references/cordis-paper-and-community.md +0 -326
- package/references/dev-resource-landscape.md +0 -294
- package/references/harness-repo.md +0 -673
- package/references/mirror-scope-decision.md +0 -79
- package/references/official-docs/AGENTS.md +0 -185
- package/references/official-docs/BENCHMARK.md +0 -3
- package/references/official-docs/CLAUDE.md +0 -1
- package/references/official-docs/CONTRIBUTING.i18n.yaml +0 -7
- package/references/official-docs/CONTRIBUTING.md +0 -23
- package/references/official-docs/CONTRIBUTING.zh.md +0 -23
- package/references/official-docs/LICENSE +0 -21
- package/references/official-docs/README.i18n.yaml +0 -34
- package/references/official-docs/README.md +0 -35
- package/references/official-docs/README.zh.md +0 -96
- package/references/official-docs/SNAPSHOT.md +0 -14
- package/references/official-docs/THIRD_PARTY_NOTICES.md +0 -304
- package/references/official-docs/docs/AGENTS.md +0 -77
- package/references/official-docs/docs/agent-lifecycle.i18n.yaml +0 -10
- package/references/official-docs/docs/agent-lifecycle.md +0 -91
- package/references/official-docs/docs/agent-lifecycle.zh.md +0 -93
- package/references/official-docs/docs/api-gateway.i18n.yaml +0 -31
- package/references/official-docs/docs/api-gateway.md +0 -172
- package/references/official-docs/docs/api-gateway.zh.md +0 -178
- package/references/official-docs/docs/architecture.i18n.yaml +0 -37
- package/references/official-docs/docs/architecture.md +0 -165
- package/references/official-docs/docs/architecture.zh.md +0 -169
- package/references/official-docs/docs/capability-seams.i18n.yaml +0 -10
- package/references/official-docs/docs/capability-seams.md +0 -714
- package/references/official-docs/docs/capability-seams.zh.md +0 -716
- package/references/official-docs/docs/cli-help.i18n.yaml +0 -34
- package/references/official-docs/docs/cli-help.md +0 -203
- package/references/official-docs/docs/cli-help.zh.md +0 -205
- package/references/official-docs/docs/config-catalog.i18n.yaml +0 -19
- package/references/official-docs/docs/config-catalog.md +0 -4801
- package/references/official-docs/docs/config-catalog.zh.md +0 -4803
- package/references/official-docs/docs/cookbook/adding-a-package.i18n.yaml +0 -28
- package/references/official-docs/docs/cookbook/adding-a-package.md +0 -170
- package/references/official-docs/docs/cookbook/adding-a-package.zh.md +0 -170
- package/references/official-docs/docs/cookbook/adding-a-plugin-preview.i18n.yaml +0 -22
- package/references/official-docs/docs/cookbook/adding-a-plugin-preview.md +0 -52
- package/references/official-docs/docs/cookbook/adding-a-plugin-preview.zh.md +0 -52
- package/references/official-docs/docs/cookbook/adding-a-remote-api.i18n.yaml +0 -25
- package/references/official-docs/docs/cookbook/adding-a-remote-api.md +0 -197
- package/references/official-docs/docs/cookbook/adding-a-remote-api.zh.md +0 -197
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.i18n.yaml +0 -40
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.md +0 -153
- package/references/official-docs/docs/cookbook/adding-a-session-format-version.zh.md +0 -153
- package/references/official-docs/docs/cookbook/adding-a-settings-card.i18n.yaml +0 -22
- package/references/official-docs/docs/cookbook/adding-a-settings-card.md +0 -72
- package/references/official-docs/docs/cookbook/adding-a-settings-card.zh.md +0 -72
- package/references/official-docs/docs/cookbook/adding-a-tool.i18n.yaml +0 -31
- package/references/official-docs/docs/cookbook/adding-a-tool.md +0 -101
- package/references/official-docs/docs/cookbook/adding-a-tool.zh.md +0 -103
- package/references/official-docs/docs/cookbook/adding-a-vendored-package.i18n.yaml +0 -19
- package/references/official-docs/docs/cookbook/adding-a-vendored-package.md +0 -59
- package/references/official-docs/docs/cookbook/adding-a-vendored-package.zh.md +0 -59
- package/references/official-docs/docs/cookbook/adding-an-llm-adapter.i18n.yaml +0 -19
- package/references/official-docs/docs/cookbook/adding-an-llm-adapter.md +0 -43
- package/references/official-docs/docs/cookbook/adding-an-llm-adapter.zh.md +0 -43
- package/references/official-docs/docs/cookbook/extension-cookbook.i18n.yaml +0 -25
- package/references/official-docs/docs/cookbook/extension-cookbook.md +0 -132
- package/references/official-docs/docs/cookbook/extension-cookbook.zh.md +0 -136
- package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.i18n.yaml +0 -22
- package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.md +0 -64
- package/references/official-docs/docs/cookbook/maintaining-dsh-code-review.zh.md +0 -64
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.i18n.yaml +0 -16
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.md +0 -32
- package/references/official-docs/docs/cookbook/responding-to-pr-review-on-a-stack.zh.md +0 -32
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.i18n.yaml +0 -31
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.md +0 -122
- package/references/official-docs/docs/cookbook/reviewing-persistence-type-changes.zh.md +0 -122
- package/references/official-docs/docs/cordis-api/context.i18n.yaml +0 -73
- package/references/official-docs/docs/cordis-api/context.md +0 -364
- package/references/official-docs/docs/cordis-api/context.zh.md +0 -366
- package/references/official-docs/docs/cordis-api/events.i18n.yaml +0 -37
- package/references/official-docs/docs/cordis-api/events.md +0 -207
- package/references/official-docs/docs/cordis-api/events.zh.md +0 -209
- package/references/official-docs/docs/cordis-api/fiber.i18n.yaml +0 -76
- package/references/official-docs/docs/cordis-api/fiber.md +0 -375
- package/references/official-docs/docs/cordis-api/fiber.zh.md +0 -377
- package/references/official-docs/docs/cordis-api/inherited.md +0 -38
- package/references/official-docs/docs/cordis-api/registry.i18n.yaml +0 -22
- package/references/official-docs/docs/cordis-api/registry.md +0 -152
- package/references/official-docs/docs/cordis-api/registry.zh.md +0 -154
- package/references/official-docs/docs/cordis-api/service.i18n.yaml +0 -37
- package/references/official-docs/docs/cordis-api/service.md +0 -102
- package/references/official-docs/docs/cordis-api/service.zh.md +0 -104
- package/references/official-docs/docs/cordis-primer.i18n.yaml +0 -22
- package/references/official-docs/docs/cordis-primer.md +0 -45
- package/references/official-docs/docs/cordis-primer.zh.md +0 -51
- package/references/official-docs/docs/cordis-tutorial/01-first-plugin.i18n.yaml +0 -22
- package/references/official-docs/docs/cordis-tutorial/01-first-plugin.md +0 -95
- package/references/official-docs/docs/cordis-tutorial/01-first-plugin.zh.md +0 -95
- package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.i18n.yaml +0 -16
- package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.md +0 -98
- package/references/official-docs/docs/cordis-tutorial/02-lifecycle-and-effects.zh.md +0 -98
- package/references/official-docs/docs/cordis-tutorial/03-services.i18n.yaml +0 -22
- package/references/official-docs/docs/cordis-tutorial/03-services.md +0 -98
- package/references/official-docs/docs/cordis-tutorial/03-services.zh.md +0 -98
- package/references/official-docs/docs/cordis-tutorial/04-events.i18n.yaml +0 -16
- package/references/official-docs/docs/cordis-tutorial/04-events.md +0 -144
- package/references/official-docs/docs/cordis-tutorial/04-events.zh.md +0 -144
- package/references/official-docs/docs/cordis-tutorial/05-config.i18n.yaml +0 -19
- package/references/official-docs/docs/cordis-tutorial/05-config.md +0 -111
- package/references/official-docs/docs/cordis-tutorial/05-config.zh.md +0 -111
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.i18n.yaml +0 -16
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.md +0 -113
- package/references/official-docs/docs/cordis-tutorial/06-composition-and-hmr.zh.md +0 -113
- package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.i18n.yaml +0 -19
- package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.md +0 -108
- package/references/official-docs/docs/cordis-tutorial/07-into-the-harness.zh.md +0 -108
- package/references/official-docs/docs/cordis-tutorial/index.i18n.yaml +0 -16
- package/references/official-docs/docs/cordis-tutorial/index.md +0 -60
- package/references/official-docs/docs/cordis-tutorial/index.zh.md +0 -62
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.i18n.yaml +0 -34
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.md +0 -162
- package/references/official-docs/docs/deepseek-llm-api-wire-extensions.zh.md +0 -162
- package/references/official-docs/docs/defensive-patterns/README.i18n.yaml +0 -10
- package/references/official-docs/docs/defensive-patterns/README.md +0 -25
- package/references/official-docs/docs/defensive-patterns/README.zh.md +0 -27
- package/references/official-docs/docs/defensive-patterns/client-components.i18n.yaml +0 -46
- package/references/official-docs/docs/defensive-patterns/client-components.md +0 -493
- package/references/official-docs/docs/defensive-patterns/client-components.zh.md +0 -495
- package/references/official-docs/docs/defensive-patterns/conversation-and-session.i18n.yaml +0 -31
- package/references/official-docs/docs/defensive-patterns/conversation-and-session.md +0 -316
- package/references/official-docs/docs/defensive-patterns/conversation-and-session.zh.md +0 -316
- package/references/official-docs/docs/defensive-patterns/general.i18n.yaml +0 -52
- package/references/official-docs/docs/defensive-patterns/general.md +0 -222
- package/references/official-docs/docs/defensive-patterns/general.zh.md +0 -252
- package/references/official-docs/docs/defensive-patterns/package-surface.i18n.yaml +0 -28
- package/references/official-docs/docs/defensive-patterns/package-surface.md +0 -231
- package/references/official-docs/docs/defensive-patterns/package-surface.zh.md +0 -231
- package/references/official-docs/docs/defensive-patterns/remote-and-api.i18n.yaml +0 -16
- package/references/official-docs/docs/defensive-patterns/remote-and-api.md +0 -115
- package/references/official-docs/docs/defensive-patterns/remote-and-api.zh.md +0 -115
- package/references/official-docs/docs/dependency-catalog.json +0 -7312
- package/references/official-docs/docs/development.i18n.yaml +0 -49
- package/references/official-docs/docs/development.md +0 -214
- package/references/official-docs/docs/development.zh.md +0 -221
- package/references/official-docs/docs/event-producer-consumer.i18n.yaml +0 -13
- package/references/official-docs/docs/event-producer-consumer.md +0 -110
- package/references/official-docs/docs/event-producer-consumer.zh.md +0 -112
- package/references/official-docs/docs/experimental-persistence-catalog.i18n.yaml +0 -10
- package/references/official-docs/docs/experimental-persistence-catalog.md +0 -17
- package/references/official-docs/docs/experimental-persistence-catalog.zh.md +0 -17
- package/references/official-docs/docs/glossary.i18n.yaml +0 -25
- package/references/official-docs/docs/glossary.md +0 -46
- package/references/official-docs/docs/glossary.zh.md +0 -46
- package/references/official-docs/docs/graph-atlas.i18n.yaml +0 -10
- package/references/official-docs/docs/graph-atlas.md +0 -22
- package/references/official-docs/docs/graph-atlas.zh.md +0 -24
- package/references/official-docs/docs/i18n/README.i18n.yaml +0 -19
- package/references/official-docs/docs/i18n/README.md +0 -69
- package/references/official-docs/docs/i18n/README.zh.md +0 -71
- package/references/official-docs/docs/i18n/style-samples.md +0 -87
- package/references/official-docs/docs/i18n/terminology.md +0 -215
- package/references/official-docs/docs/i18n/translation-prompt.md +0 -263
- package/references/official-docs/docs/i18n/translation-rules.i18n.yaml +0 -28
- package/references/official-docs/docs/i18n/translation-rules.md +0 -69
- package/references/official-docs/docs/i18n/translation-rules.zh.md +0 -69
- package/references/official-docs/docs/module-graph.i18n.yaml +0 -10
- package/references/official-docs/docs/module-graph.md +0 -1776
- package/references/official-docs/docs/module-graph.zh.md +0 -1778
- package/references/official-docs/docs/persistence-catalog.i18n.yaml +0 -2152
- package/references/official-docs/docs/persistence-catalog.md +0 -9140
- package/references/official-docs/docs/persistence-catalog.zh.md +0 -9142
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.md +0 -280
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.schema.json +0 -13557
- package/references/official-docs/docs/persistence-changes/2026-09-11-initial.zh.md +0 -280
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.md +0 -52
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.schema.json +0 -910
- package/references/official-docs/docs/persistence-changes/2026-09-12-auto-review-error-metadata.zh.md +0 -52
- package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.schema.json +0 -76
- package/references/official-docs/docs/persistence-changes/2026-09-13-working-directory.zh.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.md +0 -96
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.schema.json +0 -8478
- package/references/official-docs/docs/persistence-changes/2026-09-14-image-offload.zh.md +0 -96
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.schema.json +0 -72
- package/references/official-docs/docs/persistence-changes/2026-09-14-workspace-changes-event.zh.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.md +0 -120
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.schema.json +0 -16212
- package/references/official-docs/docs/persistence-changes/2026-09-16-session-format-v4.zh.md +0 -120
- package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.schema.json +0 -302
- package/references/official-docs/docs/persistence-changes/2026-09-18-schedule-optional-title.zh.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.schema.json +0 -290
- package/references/official-docs/docs/persistence-changes/2026-09-19-external-subagent-catalog.zh.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.schema.json +0 -250
- package/references/official-docs/docs/persistence-changes/2026-09-20-unknown-child-catalog.zh.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.md +0 -60
- package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.schema.json +0 -11405
- package/references/official-docs/docs/persistence-changes/2026-09-21-user-question-reply.zh.md +0 -60
- package/references/official-docs/docs/persistence-changes/2026-09-30-job-session-lifecycle.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-09-30-job-session-lifecycle.md +0 -52
- package/references/official-docs/docs/persistence-changes/2026-09-30-job-session-lifecycle.schema.json +0 -297
- package/references/official-docs/docs/persistence-changes/2026-09-30-job-session-lifecycle.zh.md +0 -52
- package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.schema.json +0 -457
- package/references/official-docs/docs/persistence-changes/2026-10-05-ptc-operation-metadata.zh.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.md +0 -60
- package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.schema.json +0 -11474
- package/references/official-docs/docs/persistence-changes/2026-10-05-working-directory-attribution.zh.md +0 -60
- package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.schema.json +0 -2990
- package/references/official-docs/docs/persistence-changes/2026-10-07-title-reasoning-effort.zh.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-10-13-deepseek-search-thinking.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-10-13-deepseek-search-thinking.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-10-13-deepseek-search-thinking.schema.json +0 -231
- package/references/official-docs/docs/persistence-changes/2026-10-13-deepseek-search-thinking.zh.md +0 -48
- package/references/official-docs/docs/persistence-changes/2026-10-13-user-rpc-principal.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/2026-10-13-user-rpc-principal.md +0 -60
- package/references/official-docs/docs/persistence-changes/2026-10-13-user-rpc-principal.schema.json +0 -11559
- package/references/official-docs/docs/persistence-changes/2026-10-13-user-rpc-principal.zh.md +0 -60
- package/references/official-docs/docs/persistence-changes/README.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/README.md +0 -90
- package/references/official-docs/docs/persistence-changes/README.zh.md +0 -90
- package/references/official-docs/docs/persistence-changes/finalized/v4.json +0 -379
- package/references/official-docs/docs/persistence-changes/historical-formats/README.i18n.yaml +0 -28
- package/references/official-docs/docs/persistence-changes/historical-formats/README.md +0 -75
- package/references/official-docs/docs/persistence-changes/historical-formats/README.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.i18n.yaml +0 -1285
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.md +0 -5105
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.schema.json +0 -49308
- package/references/official-docs/docs/persistence-changes/historical-formats/v0.zh.md +0 -5105
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.i18n.yaml +0 -1285
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.md +0 -5107
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.schema.json +0 -49411
- package/references/official-docs/docs/persistence-changes/historical-formats/v1.zh.md +0 -5107
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.i18n.yaml +0 -1345
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.md +0 -5362
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.schema.json +0 -56466
- package/references/official-docs/docs/persistence-changes/historical-formats/v2.zh.md +0 -5362
- package/references/official-docs/docs/persistence-changes/historical-formats/v3.i18n.yaml +0 -1441
- package/references/official-docs/docs/persistence-changes/historical-formats/v3.md +0 -5634
- package/references/official-docs/docs/persistence-changes/historical-formats/v3.schema.json +0 -61307
- package/references/official-docs/docs/persistence-changes/historical-formats/v3.zh.md +0 -5634
- package/references/official-docs/docs/persistence-changes/releases/README.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/README.md +0 -103
- package/references/official-docs/docs/persistence-changes/releases/README.zh.md +0 -103
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.md +0 -201
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.schema.json +0 -39868
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.1.zh.md +0 -201
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.md +0 -261
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.schema.json +0 -43342
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.2.zh.md +0 -261
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.md +0 -126
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.schema.json +0 -19452
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.3.zh.md +0 -126
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.4.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.0.1-rc.5.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.1.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.2.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.3.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.5.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.6.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.md +0 -82
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.schema.json +0 -5320
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.7.zh.md +0 -82
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.md +0 -110
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.schema.json +0 -21258
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.0-rc.8.zh.md +0 -110
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.md +0 -82
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.schema.json +0 -417
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.1.zh.md +0 -82
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.md +0 -119
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.schema.json +0 -29672
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.1-rc.2.zh.md +0 -119
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.md +0 -295
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.schema.json +0 -48429
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.1.zh.md +0 -295
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.md +0 -286
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.schema.json +0 -49347
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.2.zh.md +0 -286
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.3.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.md +0 -95
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.schema.json +0 -17642
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.4.zh.md +0 -95
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-alpha.5.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.2-rc.1.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.md +0 -154
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.schema.json +0 -38678
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.1.zh.md +0 -154
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.md +0 -86
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.schema.json +0 -783
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.3-alpha.2.zh.md +0 -86
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.md +0 -139
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.schema.json +0 -24597
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.1.zh.md +0 -139
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.md +0 -95
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.schema.json +0 -2132
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-alpha.2.zh.md +0 -95
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.1.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.i18n.yaml +0 -31
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.schema.json +0 -5
- package/references/official-docs/docs/persistence-changes/releases/dsh-v0.1.5-rc.2.zh.md +0 -75
- package/references/official-docs/docs/persistence-changes/releases/manifest.json +0 -162
- package/references/official-docs/docs/persistence-schema.json +0 -26177
- package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.i18n.yaml +0 -34
- package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.md +0 -113
- package/references/official-docs/docs/postmortem/0001-acp-default-export-drops-inject.zh.md +0 -113
- package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.i18n.yaml +0 -28
- package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.md +0 -47
- package/references/official-docs/docs/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +0 -47
- package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.i18n.yaml +0 -28
- package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.md +0 -53
- package/references/official-docs/docs/postmortem/0003-web-agent-gui-feedback-loop.zh.md +0 -53
- package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.i18n.yaml +0 -28
- package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.md +0 -55
- package/references/official-docs/docs/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +0 -55
- package/references/official-docs/docs/postmortem/README.i18n.yaml +0 -7
- package/references/official-docs/docs/postmortem/README.md +0 -18
- package/references/official-docs/docs/postmortem/README.zh.md +0 -18
- package/references/official-docs/docs/rescope.i18n.yaml +0 -19
- package/references/official-docs/docs/rescope.md +0 -53
- package/references/official-docs/docs/rescope.zh.md +0 -53
- package/references/official-docs/docs/session-format-status.i18n.yaml +0 -28
- package/references/official-docs/docs/session-format-status.md +0 -63
- package/references/official-docs/docs/session-format-status.zh.md +0 -63
- package/references/official-docs/docs/subsystems/README.i18n.yaml +0 -7
- package/references/official-docs/docs/subsystems/README.md +0 -76
- package/references/official-docs/docs/subsystems/README.zh.md +0 -76
- package/references/official-docs/docs/subsystems/agent-team.i18n.yaml +0 -22
- package/references/official-docs/docs/subsystems/agent-team.md +0 -231
- package/references/official-docs/docs/subsystems/agent-team.zh.md +0 -231
- package/references/official-docs/docs/subsystems/approval.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/approval.md +0 -170
- package/references/official-docs/docs/subsystems/approval.zh.md +0 -170
- package/references/official-docs/docs/subsystems/attachment.i18n.yaml +0 -13
- package/references/official-docs/docs/subsystems/attachment.md +0 -361
- package/references/official-docs/docs/subsystems/attachment.zh.md +0 -361
- package/references/official-docs/docs/subsystems/boot.i18n.yaml +0 -16
- package/references/official-docs/docs/subsystems/boot.md +0 -447
- package/references/official-docs/docs/subsystems/boot.zh.md +0 -447
- package/references/official-docs/docs/subsystems/browser-use.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/browser-use.md +0 -67
- package/references/official-docs/docs/subsystems/browser-use.zh.md +0 -67
- package/references/official-docs/docs/subsystems/claude-code-mods.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/claude-code-mods.md +0 -146
- package/references/official-docs/docs/subsystems/claude-code-mods.zh.md +0 -146
- package/references/official-docs/docs/subsystems/client-modules.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/client-modules.md +0 -198
- package/references/official-docs/docs/subsystems/client-modules.zh.md +0 -198
- package/references/official-docs/docs/subsystems/client-resources.i18n.yaml +0 -22
- package/references/official-docs/docs/subsystems/client-resources.md +0 -92
- package/references/official-docs/docs/subsystems/client-resources.zh.md +0 -92
- package/references/official-docs/docs/subsystems/commands.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/commands.md +0 -223
- package/references/official-docs/docs/subsystems/commands.zh.md +0 -223
- package/references/official-docs/docs/subsystems/compaction.i18n.yaml +0 -22
- package/references/official-docs/docs/subsystems/compaction.md +0 -284
- package/references/official-docs/docs/subsystems/compaction.zh.md +0 -284
- package/references/official-docs/docs/subsystems/computer-use.i18n.yaml +0 -16
- package/references/official-docs/docs/subsystems/computer-use.md +0 -59
- package/references/official-docs/docs/subsystems/computer-use.zh.md +0 -59
- package/references/official-docs/docs/subsystems/conversation.i18n.yaml +0 -31
- package/references/official-docs/docs/subsystems/conversation.md +0 -301
- package/references/official-docs/docs/subsystems/conversation.zh.md +0 -303
- package/references/official-docs/docs/subsystems/core.i18n.yaml +0 -37
- package/references/official-docs/docs/subsystems/core.md +0 -1113
- package/references/official-docs/docs/subsystems/core.zh.md +0 -1125
- package/references/official-docs/docs/subsystems/credentials.i18n.yaml +0 -25
- package/references/official-docs/docs/subsystems/credentials.md +0 -493
- package/references/official-docs/docs/subsystems/credentials.zh.md +0 -493
- package/references/official-docs/docs/subsystems/deliverables.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/deliverables.md +0 -178
- package/references/official-docs/docs/subsystems/deliverables.zh.md +0 -178
- package/references/official-docs/docs/subsystems/extensions.i18n.yaml +0 -7
- package/references/official-docs/docs/subsystems/extensions.md +0 -384
- package/references/official-docs/docs/subsystems/extensions.zh.md +0 -384
- package/references/official-docs/docs/subsystems/feedback.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/feedback.md +0 -400
- package/references/official-docs/docs/subsystems/feedback.zh.md +0 -400
- package/references/official-docs/docs/subsystems/filesystem.i18n.yaml +0 -34
- package/references/official-docs/docs/subsystems/filesystem.md +0 -530
- package/references/official-docs/docs/subsystems/filesystem.zh.md +0 -530
- package/references/official-docs/docs/subsystems/goal.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/goal.md +0 -313
- package/references/official-docs/docs/subsystems/goal.zh.md +0 -313
- package/references/official-docs/docs/subsystems/jobs.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/jobs.md +0 -554
- package/references/official-docs/docs/subsystems/jobs.zh.md +0 -554
- package/references/official-docs/docs/subsystems/llm-streaming.i18n.yaml +0 -49
- package/references/official-docs/docs/subsystems/llm-streaming.md +0 -1196
- package/references/official-docs/docs/subsystems/llm-streaming.zh.md +0 -1202
- package/references/official-docs/docs/subsystems/lsp.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/lsp.md +0 -202
- package/references/official-docs/docs/subsystems/lsp.zh.md +0 -202
- package/references/official-docs/docs/subsystems/mcp.i18n.yaml +0 -34
- package/references/official-docs/docs/subsystems/mcp.md +0 -139
- package/references/official-docs/docs/subsystems/mcp.zh.md +0 -139
- package/references/official-docs/docs/subsystems/office-to-pdf.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/office-to-pdf.md +0 -87
- package/references/official-docs/docs/subsystems/office-to-pdf.zh.md +0 -87
- package/references/official-docs/docs/subsystems/otel.i18n.yaml +0 -7
- package/references/official-docs/docs/subsystems/otel.md +0 -44
- package/references/official-docs/docs/subsystems/otel.zh.md +0 -44
- package/references/official-docs/docs/subsystems/permission-presets.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/permission-presets.md +0 -167
- package/references/official-docs/docs/subsystems/permission-presets.zh.md +0 -167
- package/references/official-docs/docs/subsystems/persistence.i18n.yaml +0 -37
- package/references/official-docs/docs/subsystems/persistence.md +0 -418
- package/references/official-docs/docs/subsystems/persistence.zh.md +0 -418
- package/references/official-docs/docs/subsystems/plan.i18n.yaml +0 -22
- package/references/official-docs/docs/subsystems/plan.md +0 -87
- package/references/official-docs/docs/subsystems/plan.zh.md +0 -87
- package/references/official-docs/docs/subsystems/product-telemetry.i18n.yaml +0 -10
- package/references/official-docs/docs/subsystems/product-telemetry.md +0 -81
- package/references/official-docs/docs/subsystems/product-telemetry.zh.md +0 -81
- package/references/official-docs/docs/subsystems/ptc-runtime.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/ptc-runtime.md +0 -250
- package/references/official-docs/docs/subsystems/ptc-runtime.zh.md +0 -250
- package/references/official-docs/docs/subsystems/sandbox.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/sandbox.md +0 -221
- package/references/official-docs/docs/subsystems/sandbox.zh.md +0 -221
- package/references/official-docs/docs/subsystems/schedule.i18n.yaml +0 -40
- package/references/official-docs/docs/subsystems/schedule.md +0 -550
- package/references/official-docs/docs/subsystems/schedule.zh.md +0 -550
- package/references/official-docs/docs/subsystems/scope.i18n.yaml +0 -16
- package/references/official-docs/docs/subsystems/scope.md +0 -59
- package/references/official-docs/docs/subsystems/scope.zh.md +0 -61
- package/references/official-docs/docs/subsystems/session-projection.i18n.yaml +0 -16
- package/references/official-docs/docs/subsystems/session-projection.md +0 -356
- package/references/official-docs/docs/subsystems/session-projection.zh.md +0 -356
- package/references/official-docs/docs/subsystems/session-query.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/session-query.md +0 -511
- package/references/official-docs/docs/subsystems/session-query.zh.md +0 -511
- package/references/official-docs/docs/subsystems/session-reference.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/session-reference.md +0 -224
- package/references/official-docs/docs/subsystems/session-reference.zh.md +0 -224
- package/references/official-docs/docs/subsystems/session-telemetry.i18n.yaml +0 -22
- package/references/official-docs/docs/subsystems/session-telemetry.md +0 -212
- package/references/official-docs/docs/subsystems/session-telemetry.zh.md +0 -212
- package/references/official-docs/docs/subsystems/session-title.i18n.yaml +0 -16
- package/references/official-docs/docs/subsystems/session-title.md +0 -213
- package/references/official-docs/docs/subsystems/session-title.zh.md +0 -213
- package/references/official-docs/docs/subsystems/session.i18n.yaml +0 -70
- package/references/official-docs/docs/subsystems/session.md +0 -1339
- package/references/official-docs/docs/subsystems/session.zh.md +0 -1343
- package/references/official-docs/docs/subsystems/settings.i18n.yaml +0 -13
- package/references/official-docs/docs/subsystems/settings.md +0 -155
- package/references/official-docs/docs/subsystems/settings.zh.md +0 -155
- package/references/official-docs/docs/subsystems/shell.i18n.yaml +0 -25
- package/references/official-docs/docs/subsystems/shell.md +0 -314
- package/references/official-docs/docs/subsystems/shell.zh.md +0 -314
- package/references/official-docs/docs/subsystems/sidebar-right.i18n.yaml +0 -37
- package/references/official-docs/docs/subsystems/sidebar-right.md +0 -160
- package/references/official-docs/docs/subsystems/sidebar-right.zh.md +0 -160
- package/references/official-docs/docs/subsystems/skills.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/skills.md +0 -352
- package/references/official-docs/docs/subsystems/skills.zh.md +0 -352
- package/references/official-docs/docs/subsystems/slots.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/slots.md +0 -200
- package/references/official-docs/docs/subsystems/slots.zh.md +0 -204
- package/references/official-docs/docs/subsystems/spill.i18n.yaml +0 -16
- package/references/official-docs/docs/subsystems/spill.md +0 -124
- package/references/official-docs/docs/subsystems/spill.zh.md +0 -124
- package/references/official-docs/docs/subsystems/ssh.i18n.yaml +0 -22
- package/references/official-docs/docs/subsystems/ssh.md +0 -146
- package/references/official-docs/docs/subsystems/ssh.zh.md +0 -146
- package/references/official-docs/docs/subsystems/storage.i18n.yaml +0 -25
- package/references/official-docs/docs/subsystems/storage.md +0 -259
- package/references/official-docs/docs/subsystems/storage.zh.md +0 -259
- package/references/official-docs/docs/subsystems/subagent.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/subagent.md +0 -686
- package/references/official-docs/docs/subsystems/subagent.zh.md +0 -688
- package/references/official-docs/docs/subsystems/subprocess.i18n.yaml +0 -31
- package/references/official-docs/docs/subsystems/subprocess.md +0 -321
- package/references/official-docs/docs/subsystems/subprocess.zh.md +0 -321
- package/references/official-docs/docs/subsystems/system-prompt.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/system-prompt.md +0 -254
- package/references/official-docs/docs/subsystems/system-prompt.zh.md +0 -254
- package/references/official-docs/docs/subsystems/terminal.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/terminal.md +0 -184
- package/references/official-docs/docs/subsystems/terminal.zh.md +0 -184
- package/references/official-docs/docs/subsystems/todo.i18n.yaml +0 -13
- package/references/official-docs/docs/subsystems/todo.md +0 -32
- package/references/official-docs/docs/subsystems/todo.zh.md +0 -32
- package/references/official-docs/docs/subsystems/token-meter.i18n.yaml +0 -13
- package/references/official-docs/docs/subsystems/token-meter.md +0 -106
- package/references/official-docs/docs/subsystems/token-meter.zh.md +0 -106
- package/references/official-docs/docs/subsystems/tools.i18n.yaml +0 -25
- package/references/official-docs/docs/subsystems/tools.md +0 -747
- package/references/official-docs/docs/subsystems/tools.zh.md +0 -747
- package/references/official-docs/docs/subsystems/translation.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/translation.md +0 -103
- package/references/official-docs/docs/subsystems/translation.zh.md +0 -103
- package/references/official-docs/docs/subsystems/typert.i18n.yaml +0 -25
- package/references/official-docs/docs/subsystems/typert.md +0 -690
- package/references/official-docs/docs/subsystems/typert.zh.md +0 -690
- package/references/official-docs/docs/subsystems/user-questions.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/user-questions.md +0 -307
- package/references/official-docs/docs/subsystems/user-questions.zh.md +0 -307
- package/references/official-docs/docs/subsystems/voice-input.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/voice-input.md +0 -164
- package/references/official-docs/docs/subsystems/voice-input.zh.md +0 -164
- package/references/official-docs/docs/subsystems/web-client.i18n.yaml +0 -37
- package/references/official-docs/docs/subsystems/web-client.md +0 -100
- package/references/official-docs/docs/subsystems/web-client.zh.md +0 -100
- package/references/official-docs/docs/subsystems/web-server.i18n.yaml +0 -16
- package/references/official-docs/docs/subsystems/web-server.md +0 -302
- package/references/official-docs/docs/subsystems/web-server.zh.md +0 -302
- package/references/official-docs/docs/subsystems/web.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/web.md +0 -206
- package/references/official-docs/docs/subsystems/web.zh.md +0 -206
- package/references/official-docs/docs/subsystems/webhook.i18n.yaml +0 -19
- package/references/official-docs/docs/subsystems/webhook.md +0 -70
- package/references/official-docs/docs/subsystems/webhook.zh.md +0 -70
- package/references/official-docs/docs/subsystems/workflow.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/workflow.md +0 -278
- package/references/official-docs/docs/subsystems/workflow.zh.md +0 -278
- package/references/official-docs/docs/subsystems/working-directory.i18n.yaml +0 -13
- package/references/official-docs/docs/subsystems/working-directory.md +0 -64
- package/references/official-docs/docs/subsystems/working-directory.zh.md +0 -64
- package/references/official-docs/docs/subsystems/workspace.i18n.yaml +0 -28
- package/references/official-docs/docs/subsystems/workspace.md +0 -647
- package/references/official-docs/docs/subsystems/workspace.zh.md +0 -647
- package/references/official-docs/docs/subsystems/worktrees.i18n.yaml +0 -13
- package/references/official-docs/docs/subsystems/worktrees.md +0 -76
- package/references/official-docs/docs/subsystems/worktrees.zh.md +0 -76
- package/references/official-docs/docs/testing.i18n.yaml +0 -34
- package/references/official-docs/docs/testing.md +0 -55
- package/references/official-docs/docs/testing.zh.md +0 -55
- package/references/official-docs/docs/tool-catalog.i18n.yaml +0 -331
- package/references/official-docs/docs/tool-catalog.md +0 -2824
- package/references/official-docs/docs/tool-catalog.zh.md +0 -2832
- package/references/official-docs/docs/tool-execution-pipeline.i18n.yaml +0 -10
- package/references/official-docs/docs/tool-execution-pipeline.md +0 -65
- package/references/official-docs/docs/tool-execution-pipeline.zh.md +0 -67
- package/references/official-docs/docs/ui-radius.i18n.yaml +0 -31
- package/references/official-docs/docs/ui-radius.md +0 -117
- package/references/official-docs/docs/ui-radius.zh.md +0 -117
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.md +0 -22
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/schedule-optional-bundle/guide.zh.md +0 -22
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.md +0 -25
- package/references/official-docs/docs/upgrade-guide/v0.1.7-rc.2/transcript-view-legacy-normal/guide.zh.md +0 -25
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/account-sign-in-errors/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/bundled-python-tests/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/primary-runtime-python-aliases/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/primary-runtime-python-aliases/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/primary-runtime-python-aliases/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.md +0 -23
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants/guide.zh.md +0 -23
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.md +0 -22
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/schedule-bundle-retired/guide.zh.md +0 -22
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.md +0 -27
- package/references/official-docs/docs/upgrade-guide/v0.2.0-rc.2/subpath-plugin-display-manifest/guide.zh.md +0 -27
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.md +0 -17
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/deepseek-model-discovery/guide.zh.md +0 -17
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/desktop-test-auth-popup/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.md +0 -28
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/experimental-package-composition/guide.zh.md +0 -28
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/instruction-home-override/guide.zh.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/job-id-identity/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/job-id-identity/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/job-id-identity/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/jsonl-persistence-plugin/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.md +0 -17
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/mock-messages-events/guide.zh.md +0 -17
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.md +0 -31
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/native-subagent-bundle-tools/guide.zh.md +0 -31
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/new-session-generations/guide.zh.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/plugin-option-placement/guide.zh.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-optional-resources/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/python-ptc-sandbox/guide.zh.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-adapters/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/session-title-provider-strategy/guide.zh.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.md +0 -19
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/ssh-helper-launch/guide.zh.md +0 -19
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.md +0 -59
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-activations/guide.zh.md +0 -59
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-preset-composition/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-preset-composition/guide.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/subagent-preset-composition/guide.zh.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/team-direct-inbox/guide.zh.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/terminal-command-labels/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/tool-presentation-mode/guide.zh.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.md +0 -36
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/web-listener-trust-config/guide.zh.md +0 -36
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.md +0 -25
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.1/working-directory/guide.zh.md +0 -25
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/deepseek-account-identity-watch/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/deepseek-account-identity-watch/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/deepseek-account-identity-watch/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/deepseek-account-model-catalog/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/deepseek-account-model-catalog/guide.md +0 -27
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/deepseek-account-model-catalog/guide.zh.md +0 -27
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/desktop-font-size-shortcuts/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/desktop-font-size-shortcuts/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/desktop-font-size-shortcuts/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/from-default-profile-replaces-target/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/from-default-profile-replaces-target/guide.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/from-default-profile-replaces-target/guide.zh.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/operator-connect/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/operator-connect/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/operator-connect/guide.zh.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/pi-ai-azure-provider/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/pi-ai-azure-provider/guide.md +0 -19
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/pi-ai-azure-provider/guide.zh.md +0 -19
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/pi-ai-model-discovery/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/pi-ai-model-discovery/guide.md +0 -17
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/pi-ai-model-discovery/guide.zh.md +0 -17
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/plugin-install-over-installed/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/plugin-install-over-installed/guide.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/plugin-install-over-installed/guide.zh.md +0 -20
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/sdk-minimal-image-compaction/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/sdk-minimal-image-compaction/guide.md +0 -32
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/sdk-minimal-image-compaction/guide.zh.md +0 -32
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/stored-credentials-precedence/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/stored-credentials-precedence/guide.md +0 -25
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.2/stored-credentials-precedence/guide.zh.md +0 -25
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.3/plugin-engines-dsh/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.3/plugin-engines-dsh/guide.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.3/plugin-engines-dsh/guide.zh.md +0 -21
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.4/account-notification-fields/guide.i18n.yaml +0 -16
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.4/account-notification-fields/guide.md +0 -18
- package/references/official-docs/docs/upgrade-guide/v0.2.1-alpha.4/account-notification-fields/guide.zh.md +0 -18
- package/references/official-docs/docs/user/develop/basic/config.i18n.yaml +0 -28
- package/references/official-docs/docs/user/develop/basic/config.md +0 -106
- package/references/official-docs/docs/user/develop/basic/config.zh.md +0 -106
- package/references/official-docs/docs/user/develop/basic/index.i18n.yaml +0 -37
- package/references/official-docs/docs/user/develop/basic/index.md +0 -144
- package/references/official-docs/docs/user/develop/basic/index.zh.md +0 -144
- package/references/official-docs/docs/user/develop/basic/publish.i18n.yaml +0 -31
- package/references/official-docs/docs/user/develop/basic/publish.md +0 -191
- package/references/official-docs/docs/user/develop/basic/publish.zh.md +0 -191
- package/references/official-docs/docs/user/develop/basic/tool.i18n.yaml +0 -16
- package/references/official-docs/docs/user/develop/basic/tool.md +0 -52
- package/references/official-docs/docs/user/develop/basic/tool.zh.md +0 -52
- package/references/official-docs/docs/user/develop/framework/events.i18n.yaml +0 -46
- package/references/official-docs/docs/user/develop/framework/events.md +0 -143
- package/references/official-docs/docs/user/develop/framework/events.zh.md +0 -143
- package/references/official-docs/docs/user/develop/framework/index.i18n.yaml +0 -31
- package/references/official-docs/docs/user/develop/framework/index.md +0 -137
- package/references/official-docs/docs/user/develop/framework/index.zh.md +0 -137
- package/references/official-docs/docs/user/develop/framework/service.i18n.yaml +0 -40
- package/references/official-docs/docs/user/develop/framework/service.md +0 -148
- package/references/official-docs/docs/user/develop/framework/service.zh.md +0 -150
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.i18n.yaml +0 -10
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.md +0 -15
- package/references/official-docs/docs/user/develop/practice/dynamic-cordis.zh.md +0 -15
- package/references/official-docs/docs/user/develop/practice/index.i18n.yaml +0 -46
- package/references/official-docs/docs/user/develop/practice/index.md +0 -155
- package/references/official-docs/docs/user/develop/practice/index.zh.md +0 -155
- package/references/official-docs/docs/user/develop/practice/llm-adapter.i18n.yaml +0 -34
- package/references/official-docs/docs/user/develop/practice/llm-adapter.md +0 -189
- package/references/official-docs/docs/user/develop/practice/llm-adapter.zh.md +0 -189
- package/references/official-docs/docs/user/guide/github-review.i18n.yaml +0 -25
- package/references/official-docs/docs/user/guide/github-review.md +0 -99
- package/references/official-docs/docs/user/guide/github-review.zh.md +0 -99
- package/references/official-docs/docs/user/guide/index.i18n.yaml +0 -19
- package/references/official-docs/docs/user/guide/index.md +0 -31
- package/references/official-docs/docs/user/guide/index.zh.md +0 -31
- package/references/official-docs/docs/user/guide/mcp-memory.i18n.yaml +0 -37
- package/references/official-docs/docs/user/guide/mcp-memory.md +0 -101
- package/references/official-docs/docs/user/guide/mcp-memory.zh.md +0 -101
- package/references/official-docs/docs/user/guide/network-proxy.i18n.yaml +0 -25
- package/references/official-docs/docs/user/guide/network-proxy.md +0 -85
- package/references/official-docs/docs/user/guide/network-proxy.zh.md +0 -85
- package/references/official-docs/docs/user/guide/plugin-market.i18n.yaml +0 -34
- package/references/official-docs/docs/user/guide/plugin-market.md +0 -148
- package/references/official-docs/docs/user/guide/plugin-market.zh.md +0 -148
- package/references/official-docs/docs/user/guide/providers-custom-form.png +0 -0
- package/references/official-docs/docs/user/guide/providers-custom-form.zh.png +0 -0
- package/references/official-docs/docs/user/guide/providers-models-page.png +0 -0
- package/references/official-docs/docs/user/guide/providers-models-page.zh.png +0 -0
- package/references/official-docs/docs/user/guide/providers.i18n.yaml +0 -40
- package/references/official-docs/docs/user/guide/providers.md +0 -227
- package/references/official-docs/docs/user/guide/providers.zh.md +0 -227
- package/references/official-docs/docs/user/guide/public-deployments.i18n.yaml +0 -19
- package/references/official-docs/docs/user/guide/public-deployments.md +0 -37
- package/references/official-docs/docs/user/guide/public-deployments.zh.md +0 -37
- package/references/official-docs/docs/user/guide/python-sdk.i18n.yaml +0 -28
- package/references/official-docs/docs/user/guide/python-sdk.md +0 -185
- package/references/official-docs/docs/user/guide/python-sdk.zh.md +0 -185
- package/references/official-docs/docs/user/guide/schedule.i18n.yaml +0 -31
- package/references/official-docs/docs/user/guide/schedule.md +0 -79
- package/references/official-docs/docs/user/guide/schedule.zh.md +0 -79
- package/references/official-docs/docs/user/index.i18n.yaml +0 -10
- package/references/official-docs/docs/user/index.md +0 -11
- package/references/official-docs/docs/user/index.zh.md +0 -11
- package/references/official-docs/docs/web-styling.i18n.yaml +0 -19
- package/references/official-docs/docs/web-styling.md +0 -39
- package/references/official-docs/docs/web-styling.zh.md +0 -39
- package/references/official-docs/packages/AGENTS.md +0 -29
- package/references/official-docs/packages/README.md +0 -117
- package/references/official-docs/vendor/README.md +0 -73
- package/references/official-docs/website-docs.ts +0 -591
- package/references/official-plugin-dev-skill.md +0 -124
- package/references/sources.md +0 -143
- package/references/upstream-cordis.md +0 -594
- package/references/website-pages.md +0 -673
- package/scripts/archive-discussions.ps1 +0 -162
- package/scripts/build-llms-full.mjs +0 -73
- package/scripts/check-docs-drift-detail.mjs +0 -145
- package/scripts/check-docs-drift.ps1 +0 -55
- package/scripts/check-facts.mjs +0 -162
- package/scripts/check-ps1-bom.mjs +0 -68
- package/scripts/check-readme-parity.mjs +0 -149
- package/scripts/check-readme-sync.mjs +0 -96
- package/scripts/download-community-articles.ps1 +0 -188
- package/scripts/download-community-repos.ps1 +0 -232
- package/scripts/download-sources.ps1 +0 -195
- package/scripts/gen-topic-snapshot.ps1 +0 -91
- package/scripts/install-skill.ps1 +0 -63
- package/scripts/measure-mirror-references.mjs +0 -117
- package/scripts/sync-official-docs.ps1 +0 -138
- package/scripts/verify-artifacts.mjs +0 -145
- package/scripts/verify-kit.ps1 +0 -197
- package/templates/js/LICENSE +0 -15
- package/templates/js/README-es.md +0 -46
- package/templates/js/README-hi.md +0 -46
- package/templates/js/README-pt.md +0 -46
- package/templates/js/README-zh.md +0 -46
- package/templates/js/README.md +0 -46
- package/templates/js/cordis.patch.yml +0 -10
- package/templates/js/icon.svg +0 -4
- package/templates/js/index.js +0 -38
- package/templates/js/locale/en.json +0 -6
- package/templates/js/locale/zh.json +0 -6
- package/templates/js/package.json +0 -49
- package/templates/js/tests/index.test.js +0 -12
- package/templates/ts/LICENSE +0 -15
- package/templates/ts/README-es.md +0 -48
- package/templates/ts/README-hi.md +0 -48
- package/templates/ts/README-pt.md +0 -48
- package/templates/ts/README-zh.md +0 -48
- package/templates/ts/README.md +0 -48
- package/templates/ts/cordis.patch.yml +0 -10
- package/templates/ts/icon.svg +0 -4
- package/templates/ts/locale/en.json +0 -6
- package/templates/ts/locale/zh.json +0 -6
- package/templates/ts/package.json +0 -58
- package/templates/ts/src/config.ts +0 -12
- package/templates/ts/src/index.ts +0 -36
- package/templates/ts/tests/index.test.ts +0 -12
- package/templates/ts/tsconfig.json +0 -17
- package/templates/ts/tsdown.config.mjs +0 -21
- package/templates/ts/vitest.config.ts +0 -8
|
@@ -1,629 +0,0 @@
|
|
|
1
|
-
# DeepSeek Harness 插件开发综合指南
|
|
2
|
-
|
|
3
|
-
> 本文档是 `dsh-plugin-guide` 的核心成果之一:把官方文档、上游 Cordis 资料与社区经验汇总成一条完整的插件开发路径。
|
|
4
|
-
> 事实来源全部记录在 [sources.md](../references/sources.md);官方原文全文副本在 [references/official-docs/](../references/official-docs/)。
|
|
5
|
-
> 本文档为"指引",不是"替代品":开发中遇到精确签名/字段,永远以官方文档副本与生成式参考(subsystems 页、cordis-api 页)为准。
|
|
6
|
-
> 组合级运营(多仓版本编排、发布流水线、宿主破坏兼容时的迁移波)见 [release-engineering.md](release-engineering.md);中文稿:[release-engineering.zh-CN.md](release-engineering.zh-CN.md)。
|
|
7
|
-
|
|
8
|
-
---
|
|
9
|
-
|
|
10
|
-
## 0. 一分钟心智模型
|
|
11
|
-
|
|
12
|
-
DeepSeek Harness(DSH)是一个**以插件组成的代理框架**("Everything is a Plugin"),底层是 vendored 的 [Cordis](https://github.com/cordiverse/cordis) 插件运行时。
|
|
13
|
-
|
|
14
|
-
- **插件 = 一个模块**:导出 `name`、可选的 `inject`(依赖的服务名数组)、`apply(ctx, config)` 函数(或对象/类形态)。
|
|
15
|
-
- **上下文 `ctx` = 服务仓库**:`ctx.tools`、`ctx.llm`、`ctx.agents` 等都是"服务";插件通过键名找服务,而不是 import 具体实现。
|
|
16
|
-
- **注册 = 可逆副作用(effect)**:事件监听、工具注册、定时器等一律经 `ctx.on()` / `ctx.effect()` / 各服务的 `register()` 挂接;插件卸载时框架自动全部撤销 —— 这是 HMR 与热插拔成立的基础。
|
|
17
|
-
- **事件 = 扩展点**:`emit`(广播)/ `waterfall`(可短路管线,必须调 `next()`)/ `parallel` / `serial` 四种派发模式;类型经 TypeScript 声明合并(declaration merging)保证类型安全。
|
|
18
|
-
- **能力 = 三层接缝(seam)**:Service Definition(声明接口)→ Service Provider(实现)→ Consumer(消费,通常是工具)。
|
|
19
|
-
- **配置 = cordis.yml 分层补丁**:bundle(`dsh.bundle`)→ profile(`dsh.profile`)→ 用户/机器层 patch → `--patch` 覆盖层,后者逐行覆盖前者。
|
|
20
|
-
|
|
21
|
-
最小插件:
|
|
22
|
-
|
|
23
|
-
```ts
|
|
24
|
-
import type { Context } from '@deepseek-ai/cordis'
|
|
25
|
-
|
|
26
|
-
export const name = 'hello-plugin'
|
|
27
|
-
export const inject = ['tools'] // 需要 ctx.tools 时声明;无依赖可省略
|
|
28
|
-
|
|
29
|
-
export function apply(ctx: Context) {
|
|
30
|
-
// 需要的服务此时已就绪;注册你的能力。
|
|
31
|
-
}
|
|
32
|
-
```
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
## 1. 官方资料地图(先读哪个)
|
|
37
|
-
|
|
38
|
-
| 层级 | 文档 | 位置 |
|
|
39
|
-
|---|---|---|
|
|
40
|
-
| 官网入口 | [deepseek.com/harness](https://www.deepseek.com/harness/) | 在线快照 downloads/web/deepseek-com-harness.html |
|
|
41
|
-
| 文档站(用户向,中/英双语) | [develop/basic 系列](https://deepseek-harness.github.io/deepseek-harness/develop/basic/) | 本地副本 references/official-docs/docs/user/develop/basic/ |
|
|
42
|
-
| 框架概念 5 分钟版 | [Cordis Primer](https://deepseek-harness.github.io/deepseek-harness/reference/cordis-primer)(`docs/cordis-primer.md`,有 `.zh.md`) | 本地副本 references/official-docs/docs/cordis-primer.md |
|
|
43
|
-
| 框架 7 章动手教程 | [Cordis tutorial 01-07](https://deepseek-harness.github.io/deepseek-harness/develop/cordis-tutorial/)(均双语) | references/official-docs/docs/cordis-tutorial/ |
|
|
44
|
-
| 插件开发四步教程 | [第一个插件 → 工具 → 配置 → 打包安装](https://deepseek-harness.github.io/deepseek-harness/develop/basic/) | references/official-docs/docs/user/develop/basic/ |
|
|
45
|
-
| 框架能力三篇 | [生命周期 / 服务与依赖 / 事件系统](https://deepseek-harness.github.io/deepseek-harness/develop/framework/) | references/official-docs/docs/user/develop/framework/ |
|
|
46
|
-
| 实战两篇 | [三层能力拆分 / LLM 适配器](https://deepseek-harness.github.io/deepseek-harness/develop/practice/) | references/official-docs/docs/user/develop/practice/ |
|
|
47
|
-
| 用户指南 | [快速开始 / 模型配置 / Python SDK](https://deepseek-harness.github.io/deepseek-harness/guide/quickstart)(含 [python-sdk](https://deepseek-harness.github.io/deepseek-harness/guide/python-sdk)) | references/official-docs/docs/user/guide/ |
|
|
48
|
-
| 架构总纲 | [architecture.md](https://deepseek-harness.github.io/deepseek-harness/reference/)(改 `packages/` 前必读) | references/official-docs/docs/architecture.md |
|
|
49
|
-
| 扩展点全景 | [extension-cookbook.md](https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/extension-cookbook)(feature → mechanism 表) | references/official-docs/docs/cookbook/extension-cookbook.md |
|
|
50
|
-
| 工具契约权威参考 | [adding-a-tool.md](https://deepseek-harness.github.io/deepseek-harness/reference/cookbook/adding-a-tool) + `dsh-tools` README | references/official-docs/docs/cookbook/adding-a-tool.md |
|
|
51
|
-
| 事件生产/消费矩阵 | [event-producer-consumer.md](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/event-producer-consumer.md)(生成式,全事件表;未上站) | references/official-docs/docs/event-producer-consumer.md |
|
|
52
|
-
| 每个子系统的服务/事件 API | [subsystems/*.md](https://deepseek-harness.github.io/deepseek-harness/reference/subsystems/) 的生成式 Cordis API 区 | references/official-docs/docs/subsystems/ |
|
|
53
|
-
| Cordis 核心 API 参考 | [cordis-api/*](https://deepseek-harness.github.io/deepseek-harness/reference/cordis-api/context)(context、events、fiber、registry、service) | references/official-docs/docs/cordis-api/ |
|
|
54
|
-
| 上游 Cordis 框架 | [cordiverse/cordis](https://github.com/cordiverse/cordis)(README/docs 已下载) | downloads/github/cordis/ + references/upstream-cordis.md |
|
|
55
|
-
| Cordis 论文 | [cordiverse/paper](https://github.com/cordiverse/paper) | downloads/github/paper/ + references/cordis-paper-and-community.md |
|
|
56
|
-
| 生态/社区 | [社区开发文档与生态链接](../references/community-ecosystem.md)(topic 清单、awesome 列表、注册中心) | references/community-ecosystem.md + downloads/community/ |
|
|
57
|
-
| **官方自带插件开发技能(0.2 世代新增,务必先读)** | 无站点路由(在 preset 包内) | `references/official-plugin-dev-skill.md`(原文抄录)+ 上游 `packages/preset/agent-preset/skills/cordis-plugin-development/**` |
|
|
58
|
-
| **逐版本迁移指南(0.2 世代新增)** | 无站点路由 | `references/official-docs/docs/upgrade-guide/**`;本库综述 [migration-0.2.md](migration-0.2.md) |
|
|
59
|
-
| 会话格式版本状态 | 无站点路由 | `references/official-docs/docs/session-format-status.md` |
|
|
60
|
-
| 运行时自查(比文档更权威) | 会话内 `cordis_inspect_list` / `cordis_inspect_query`(Service / Event / Config / Tool / Slots / Theme) | — |
|
|
61
|
-
|
|
62
|
-
网站与本地文档是同源的:GitHub Pages 站点由 `website/docs.ts`(副本在 references/official-docs/website-docs.ts)把仓库 `docs/` 投影成中/英两棵路由树;`develop/basic/` 页面 = `docs/user/develop/basic/index.zh.md`。**想"离线全量"看官方文档,读 references/official-docs/docs/ 即可。** 线上 URL 与本地副本的**完整对照**(含 `en/` 英文投影、全部 reference/cookbook/cordis-api/subsystems 路由与 GitHub 直链)见 [links.md](links.md)。
|
|
63
|
-
|
|
64
|
-
---
|
|
65
|
-
|
|
66
|
-
## 2. 工程形态与开发环境
|
|
67
|
-
|
|
68
|
-
### 2.1 三种开发方式
|
|
69
|
-
|
|
70
|
-
1. **仓库内开发(scratch 目录)**:clone `deepseek-ai/deepseek-harness`,`pnpm install` 后建 `scratch-plugin/`,用 `--patch` 覆盖层挂载本地插件(`pnpm dsh web --patch ./scratch-plugin/cordis.yml`)。适合学教程、改核心。
|
|
71
|
-
2. **独立插件包(发布形态)**:一个 npm 包 + `cordis.patch.yml`,经 `dsh plugin --profile <name> add <包>` 装入 profile。适合对外发布。
|
|
72
|
-
3. **会话内直接装(0.2 世代官方首选路径)**:在工作区写 bundle,然后用 **`plugin_manager` 工具的 `install_bundle`**(`target` 传**绝对包目录**)装进当前 profile——插件立刻对该 profile 的所有会话生效并跨重启保留。官方明确:**不要**手写 profile 的 `package.json`/`cordis.patch.yml`,**不要**在 profile 目录里跑 pnpm;`install_bundle` 负责这些步骤,而且 profile 之外的每一次手写都需要单独审批。详见 [references/official-plugin-dev-skill.md](../references/official-plugin-dev-skill.md)。
|
|
73
|
-
|
|
74
|
-
### 2.2 三个概念、三种清单(package.json 的 `dsh` 键)
|
|
75
|
-
|
|
76
|
-
- **bundle(分发层)**:npm 包,`package.json` 声明 `"dsh": { "bundle": { "patch": "./cordis.patch.yml" } }`;patch 里是"插入/覆盖插件行"的 YAML 数组。**`patch` 也可以是有序数组**:`{ "patch": ["./base.patch.yml", "./web.patch.yml"] }`,按序作为同一层应用,且每个文件里的相对插件路径**相对该文件所在目录**解析(校验失败信息:`dsh.bundle.patch must be a file path or a list of file paths`)。
|
|
77
|
-
- **profile(可运行组合)**:`$DSH_HOME/profiles/<name>/`,`package.json` 声明 `"dsh": { "profile": { "bundles": [...] } }`;由 `dsh plugin` / `plugin_manager` 维护,手写不允许。
|
|
78
|
-
- **client(浏览器半侧)**:`package.json` 声明 `"dsh": { "client": { "platform": "web", "inject": [...], "immediately": true, "external": [...] } }` 并导出编译好的 `./client`。`inject` **只决定激活顺序**(不是 cordis 服务注入),`immediately` 标记一阶段预取,`external` 列出基线之外的精确模块请求。客户端半侧只挂在**说明符恰为裸包名**的那一行上。
|
|
79
|
-
- 另有两个可选作者字段:`dsh.manifestVersion`(清单格式标识,当前 `1`,与 npm 版本、会话格式版本无关)与 `engines.dsh`(兼容范围声明,**当前安装器/加载器都不校验**;会被校验的是 `@deepseek-ai/dsh-*` 的 peerDependencies,见 §7.3)。类型定义来自 `@deepseek-ai/dsh-package-manifest`。
|
|
80
|
-
|
|
81
|
-
bundle 最小结构:
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
hello-plugin/
|
|
85
|
-
├── package.json # dsh.bundle → cordis.patch.yml;可选 dsh.client + icon + exports
|
|
86
|
-
├── cordis.patch.yml # - insert: [{ id, name: 'dsh-hello-plugin' }]
|
|
87
|
-
├── index.js # export const name / export function apply
|
|
88
|
-
├── locale/en.json # { "meta": { "title": "...", "description": "..." } }(Plugin Manager 展示用)
|
|
89
|
-
└── icon.svg # 导出的 ./icon,≤ 256 KiB 且必须在包内
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
### 2.3 配置分层顺序(后层覆盖前层,逐行按 `id` 整段替换 config)
|
|
93
|
-
|
|
94
|
-
1. profile 的 `dsh.profile.bundles` 列表顺序(`@deepseek-ai/dsh-base` 永远第一层)
|
|
95
|
-
2. profile 自己的 `cordis.patch.yml`
|
|
96
|
-
3. 机器级 `$DSH_HOME/cordis.patch.yml`
|
|
97
|
-
4. 命令行 `--patch <path>`(argv 顺序)
|
|
98
|
-
|
|
99
|
-
patch 覆盖某行时**整行 config 被替换而非深合并**——覆盖方必须重述该行需要的全部键。**上游删行/改名后,targeting 该 id 的 override 会静默失效**(只在启动日志里留一行 `patch: entry <id> not found`),所以每次升级后都要跑一次 `--dump-config`。验证实际组合:`dsh --profile <name> --dump-config`。
|
|
100
|
-
|
|
101
|
-
### 2.4 常用命令
|
|
102
|
-
|
|
103
|
-
```sh
|
|
104
|
-
dsh --version # 先确认宿主版本(0.1.7-alpha.1 起 = 会话格式 V4)
|
|
105
|
-
dsh --profile web # 启动 Web UI
|
|
106
|
-
dsh --profile headless "任务文本" # 一次性无界面执行
|
|
107
|
-
dsh --profile <name> --dump-config # 打印实际生效的插件树;查 patch: entry not found
|
|
108
|
-
dsh plugin --profile <name> add <pkg> # 安装 bundle(转发给 pnpm)
|
|
109
|
-
dsh plugin --profile <name> remove <pkg>
|
|
110
|
-
dsh plugin --profile <name> install # 仅补装/修复 profile 依赖(自愈入口)
|
|
111
|
-
pnpm dsh web --patch ./scratch-plugin/cordis.yml # 仓库内开发调试
|
|
112
|
-
```
|
|
113
|
-
|
|
114
|
-
会话内优先用 `plugin_manager` 工具(`list_plugins` / `list_bundles` / `install_bundle` / `set_plugin` / `set_bundle` / `remove_bundle`)而不是 shell:它把安装、bundle 选择、失败与 pending 状态一并返回。注意 `list_plugins`/`list_bundles` 在非 Full access 下同样需要审批,只在结果决定下一步时才调;**用免审批的 `cordis_inspect_query` 确认新行是否真的挂上**。`application: applied` 才算生效;`overridden` 表示被更高优先层盖住,`restart-required` 表示**尚未生效**。
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
## 3. 插件契约(必守规则)
|
|
119
|
-
|
|
120
|
-
### 3.1 三种插件形态
|
|
121
|
-
|
|
122
|
-
- **函数形态**(最常用):`export const name`、`export const inject`、`export function apply(ctx, config)`。
|
|
123
|
-
- **对象形态**:`export default { name, inject, apply(ctx) {} }`。
|
|
124
|
-
- **类形态**(提供服务时用):`export default class X extends Service { static inject = [...]; constructor(ctx) { super(ctx, '服务名') } }`。
|
|
125
|
-
|
|
126
|
-
### 3.2 生命周期状态机(Fiber)
|
|
127
|
-
|
|
128
|
-
```
|
|
129
|
-
PENDING → LOADING → ACTIVE
|
|
130
|
-
↘ FAILED
|
|
131
|
-
ACTIVE → UNLOADING → DISPOSED
|
|
132
|
-
```
|
|
133
|
-
|
|
134
|
-
- `inject` 声明的服务未就绪 → 停在 PENDING;就绪才执行 `apply`。
|
|
135
|
-
- 依赖的服务消失(provider 被换掉)→ 插件自动卸载,服务恢复后自动重载。
|
|
136
|
-
- `apply` 抛错 → FAILED。
|
|
137
|
-
- 手动停用:`const fiber = ctx.plugin(plugin); await fiber.dispose()`(保证所有注册撤销、子插件递归卸载、异步清理完成后才 resolve)。
|
|
138
|
-
- 卸载时 disposer **逆注册序**触发,但多个异步 disposer 并发执行、无串行完成保证 → 有顺序依赖的清理放进**同一个** `ctx.effect()` 返回的单个 disposer 里串行 await。
|
|
139
|
-
|
|
140
|
-
### 3.3 注册即 effect
|
|
141
|
-
|
|
142
|
-
```ts
|
|
143
|
-
ctx.on('some-event', handler) // 监听器:卸载自动移除
|
|
144
|
-
ctx.tools.register(tool) // 工具:卸载自动撤销
|
|
145
|
-
ctx.llm.registerAdapter(names, adapter) // 适配器
|
|
146
|
-
ctx.effect(() => { const t = setInterval(...); return () => clearInterval(t) }) // 自定义资源
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
框架代管:`ctx.on` / 服务 `register()` / `ctx.effect()`。`HMR`(`@deepseek-ai/cordis-plugin-hmr`)正因注册全部可逆而成立。
|
|
150
|
-
|
|
151
|
-
#### 3.3.1 ⚠️ async `apply()` 的注册顺序(最容易写成静默缺陷的一条)
|
|
152
|
-
|
|
153
|
-
`apply` **可以是 async**,但**第一个 `await` 之后再做注册是错的**:从 `await` 返回到注册完成之间存在一个
|
|
154
|
-
卸载窗口——插件已开始 `UNLOADING`、effect 却还没建立,于是那次注册**既不会被记入 fiber 的 disposer 集合,
|
|
155
|
-
也不会报错**。表现为"插件装了、日志全绿、能力却时有时无"(高负载下才复现)。
|
|
156
|
-
|
|
157
|
-
**规则:注册必须在第一个 `await` 之前完成。** 需要异步数据才能决定注册内容时,先取数据再注册:
|
|
158
|
-
|
|
159
|
-
```ts
|
|
160
|
-
// ✅ 正确:await 只用于取数据,注册全部落在 await 之前的同步段之后、但不再 await
|
|
161
|
-
export async function apply(ctx) {
|
|
162
|
-
const cfg = await loadRemoteConfig() // 允许 await
|
|
163
|
-
if (!cfg.enabled) return // 允许提前返回
|
|
164
|
-
ctx.effect(() => ctx.tools.register(buildTool(cfg))) // 注册紧随其后,不再 await
|
|
165
|
-
}
|
|
166
|
-
```
|
|
167
|
-
|
|
168
|
-
```ts
|
|
169
|
-
// ❌ 错误:await 之后才注册,卸载窗口内注册会丢
|
|
170
|
-
export async function apply(ctx) {
|
|
171
|
-
ctx.on('a', handlerA)
|
|
172
|
-
await something()
|
|
173
|
-
ctx.tools.register(toolB) // ← 这次注册可能永远不会被撤销
|
|
174
|
-
}
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
**自查**:`dsh-plugin-dev check` 的 `redline-async-apply-registration` 就是本条的机械检测
|
|
178
|
-
(家族内唯一检测器,见 [`family-toolchain.md`](family-toolchain.md) §3.2)。
|
|
179
|
-
**官方契约**:`apply` 返回 disposer 函数 / `null` / `undefined` / `Promise<disposer>` / (异步)可迭代——
|
|
180
|
-
async `apply` 合法,但**必须返回 `Promise<disposer>`**,不能靠"await 之后再注册"来隐式注册。
|
|
181
|
-
|
|
182
|
-
### 3.4 服务(Service)
|
|
183
|
-
|
|
184
|
-
- **消费**:`export const inject = ['tools']` → `apply` 里 `ctx.tools` 已就绪。可选依赖:不写 inject,用 `ctx.get('metrics')?.method()`。
|
|
185
|
-
- **提供**:`class MetricsService extends Service { constructor(ctx) { super(ctx, 'metrics') } }` + 声明合并 `declare module '@deepseek-ai/cordis' { interface Context { metrics: MetricsService } }`;消费方 `inject = ['metrics']`。
|
|
186
|
-
- **隔离**:cordis.yml 用 `@deepseek-ai/cordis-plugin-group` + `isolate: { shell: true }` 让不同插件组各见各的服务实例(如不同 timeout 的 bash)。
|
|
187
|
-
- 内建服务一览(`ctx` 键):`sessions`、`systemPrompt`、`tools`、`agents`、`agentLoop`、`llm`、`skills`、`commands`、`approval`、`jobs`、`fs`、`shell`、`subprocess`、`terminals`、`sandbox`、`codeRuntime`、`sessionPersistence`、`settings`、`credentials`、`workspaceRegistry`、`goals`、`planMode`…… 完整清单与每个服务的公开方法见 `docs/capability-seams.md`(图谱)与 `docs/subsystems/*.md`(生成式 API)。**不要维护第二份静态清单,以生成式区域为准。**
|
|
188
|
-
|
|
189
|
-
### 3.5 事件(Events)
|
|
190
|
-
|
|
191
|
-
派发模式(事件契约的一部分,新事件必须用 `@mode` 标注)。**官方共五种**——
|
|
192
|
-
权威定义见 `references/official-docs/docs/cordis-api/events.md`(`'emit' | 'parallel' | 'serial' | 'bail' | 'waterfall'`):
|
|
193
|
-
|
|
194
|
-
| 模式 | await? | 顺序 | 返回值 |
|
|
195
|
-
|---|---|---|---|
|
|
196
|
-
| `emit` | 否 | 注册序 | 无 |
|
|
197
|
-
| `parallel` | 是 | 并行 | 无 |
|
|
198
|
-
| `serial` | 是 | 注册序 | 有(首个非空即止) |
|
|
199
|
-
| `bail` | 否 | 注册序 | 有(首个非 `null/false/undefined` 即短路,**停止后续**) |
|
|
200
|
-
| `waterfall` | 否 | 注册序 | 有(管线结果,逐级传递) |
|
|
201
|
-
|
|
202
|
-
- **`serial` 与 `bail` 的区别是"停不停"**:`serial` 在首个非空值后停止后续监听器;`bail` 同样短路,但语义归类为"放弃/否决",`ctx.bail` 是其对应调用式。二者都**不是** `emit`(`emit` 永远跑完所有监听器)。
|
|
203
|
-
- **waterfall 铁律**:监听器签名 `(payload, next)`,**必须调 `next()` 才能下传**;不调即短路(这正是拦截/网关的语义)。协作式监听器改共享对象后 `next()`;替换结果的监听器负责让下游只看到替换后的结果。仅在"必须最先执行"时才用 `prepend: true`。
|
|
204
|
-
- **类型安全**:`declare module '@deepseek-ai/cordis' { interface Events { 'my-plugin/ready': (p: {id: string}) => void } }`。
|
|
205
|
-
- **命名空间**:`namespace/action`(`agent/step`、`tools/result`、`session/event`……)。
|
|
206
|
-
- **注意区分**:`turn/*`、`step/*`、`tool/call`、`tool/result`、`compaction/*` 是**持久化会话事件类型**(在 `session/event` 里以 `event.type` 出现),不是同名 Cordis 事件。
|
|
207
|
-
- **SessionEvent switch 规则**:`SessionEventMap` 是 merge-extensible union,对 `SessionEvent` 的 switch **禁用 `assertNever`**——处理已知 case 后落入文档化 `default` 放行;closed union(如 `StreamChunk`)才以 `assertNever` 收尾。
|
|
208
|
-
- **会话事件红线(官方 practices 原文)**:**绝不要用新的 `type` 追加会话事件**——读方只在事件带信封 `ignorable: true` 时接受未知类型,而运行时 `Session.append()` 写不了这个标记(第三参仅为 surface 事件的 `SurfaceIntent`),写了会让整个会话**打不开**。插件状态从既有事件推导,或放进 inspection 找到的 storage 服务。类型层的 merge-extensible 是给宿主新增事件用的,不是插件写入口。见 `references/official-docs/docs/subsystems/session.md` 与 `docs/cordis-primer.md`。
|
|
209
|
-
- 全量"谁发谁听"矩阵:`docs/event-producer-consumer.md`(副本在 references/official-docs/docs/)。
|
|
210
|
-
|
|
211
|
-
### 3.6 配置(Config)
|
|
212
|
-
|
|
213
|
-
```ts
|
|
214
|
-
import Schema from '@deepseek-ai/schemastery'
|
|
215
|
-
|
|
216
|
-
export interface Config { greeting: string; maxRetries: number }
|
|
217
|
-
export const Config: Schema<Config> = Schema.object({
|
|
218
|
-
greeting: Schema.string().default('Hello'),
|
|
219
|
-
maxRetries: Schema.number().default(3),
|
|
220
|
-
})
|
|
221
|
-
export function apply(ctx: Context, config: Config) { /* config 已校验+补默认 */ }
|
|
222
|
-
```
|
|
223
|
-
|
|
224
|
-
- **不能用普通对象当 `Config`**——必须是 Schemastery schema(实现 Standard Schema)。
|
|
225
|
-
- 校验发生在加载期;非法配置**响亮失败**(fail loud),绝不明吞。
|
|
226
|
-
- **红线:插件里不得硬编码可调参数**。判断标准:能否只改 cordis.yml 而不用改代码。协议常量、外部规范、安全不变式除外。
|
|
227
|
-
- 引用表达式 `!!js`(注意双感叹号)在**该插件的注入服务就绪后**才求值;其余元数据保持字面量。
|
|
228
|
-
- 配置热更新 = 卸载旧实例 + 装载新实例(effect 保证不残留旧注册)。
|
|
229
|
-
|
|
230
|
-
### 3.7 仓库级红线(写进 AGENTS.md,违反会挂门禁)
|
|
231
|
-
|
|
232
|
-
1. **注册即 effect**:所有贡献走 `ctx.effect()` / `ctx.on()`;registry 的 `register()` 返回 disposer。
|
|
233
|
-
2. **waterfall 监听器必须调 `next()`**。
|
|
234
|
-
3. **模型可见 ⟺ 已记录**(Model-visible ⟺ logged):任何进入模型请求的内容必须能从会话日志重建;新增模型可见输入必须新增会话事件。~~运行时不变式会断言这一点~~ —— ⚠️ **该强制手段已于 `0.2.1-alpha.1` 随运行时 invariants 整体移除**(`upgrade-guide/v0.2.0-rc.2/remove-runtime-invariants`),所以这条**现在完全靠评审与自觉**,没有任何机械兜底。见 §3.6 与 [`migration-0.2.md`](migration-0.2.md) §4。
|
|
235
|
-
4. **跨边界 opaque id 用 branded**:`Branded<B>`(`dsh-brand`,纯类型、零运行时依赖),从不裸 `string`;构造走 per-type factory(`SessionId` / `CallId` / `JobId` / `GoalId` 等),防止不同 id 在类型层互换。
|
|
236
|
-
5. **会话事件版本规则**:`SessionEventMap` 成员默认 required-on-read——不认识该事件类型的 build 一律拒绝整份日志,除非该事件带信封的 `ignorable: true`。**插件不得新增事件类型**(见 §3.5 红线):`Session.append()` 写不了信封标记。只有结构格式变更才 bump `SESSION_FORMAT_VERSION`(当前 **4**;V3→V4 把 results 提升为 tool-role 消息、把消息 source 改为生产者自有的 `source.kind`,V3 读方拒绝 V4 日志)。新增**模型可见输入**由宿主侧事件承担(红线 3),插件只消费。
|
|
237
|
-
6. **注入的提示词段落要短、且以角色句开头**:插件写进系统提示词的段落(`systemPrompt.section()` 的正文)**第一句应当是说明"你是谁/做什么"的短句**,整段保持精简。原因有二:它是每轮请求都付费的固定前缀;而且段落开头若不是完整句子,模型会把后续内容当作它的延续来读。**自查**:`dsh-plugin-dev check` 的 `redline-persona-role`(段落首句需以 `。.?!` 收尾、首句 ≤200 字符、整段 ≤600 字符)。**这条是"工程卫生"而非官方硬门禁**——官方文档没有对应条款,别在 README 里把它说成官方要求。
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## 4. 开发一个工具(最常用路径)
|
|
242
|
-
|
|
243
|
-
教程路径:docs/user/develop/basic/tool.md;权威参考:docs/cookbook/adding-a-tool.md;生产级范例:`packages/shell/tool-bash`(三层包结构)。
|
|
244
|
-
|
|
245
|
-
### 4.1 最小形态
|
|
246
|
-
|
|
247
|
-
```ts
|
|
248
|
-
import { readFile } from 'node:fs/promises'
|
|
249
|
-
import type { Context } from '@deepseek-ai/cordis'
|
|
250
|
-
import { defineTool } from '@deepseek-ai/dsh-tools'
|
|
251
|
-
|
|
252
|
-
export const name = 'my-tool'
|
|
253
|
-
export const inject = ['tools']
|
|
254
|
-
|
|
255
|
-
export function apply(ctx: Context) {
|
|
256
|
-
ctx.tools.register(defineTool({
|
|
257
|
-
name: 'read_file',
|
|
258
|
-
description: 'Read a file from disk.', // 模型看到的内容
|
|
259
|
-
parameters: {
|
|
260
|
-
path: { type: 'string', required: true, description: 'Absolute path' },
|
|
261
|
-
limit: { type: 'number' }, // 缺省即可选
|
|
262
|
-
},
|
|
263
|
-
output: {
|
|
264
|
-
schema: { type: 'string' }, // 规范值(canonical value)的 schema
|
|
265
|
-
render: (_args, value) => [{ type: 'text', text: value }], // 模型面向内容
|
|
266
|
-
},
|
|
267
|
-
async execute(args, exec) {
|
|
268
|
-
return readFile(args.path, { encoding: 'utf8', signal: exec.signal })
|
|
269
|
-
},
|
|
270
|
-
}))
|
|
271
|
-
}
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
schema 自动汇入系统提示词组装;模型可用原生函数调用或 Code Mode 直接 `await tools.read_file(...)`。
|
|
275
|
-
|
|
276
|
-
### 4.2 execute() 契约硬规则
|
|
277
|
-
|
|
278
|
-
1. **参数已被校验**:`defineTool` 在执行前按统一 `ParameterSchemaSpec` 校验(类型/必填/字面量/exact-one/嵌套);`execute` 内 `args` 即 `InferArgs` 类型。DSL 表达不了的约束(非空串、正数、跨字段规则)仍需自检。裸 JSON-Schema 工具(如 MCP 来源)自管输入校验。
|
|
279
|
-
2. **注册借用你的只读定义**:注册后不得改 schema 或换回调;热换工具 = 释放旧 effect + 注册新工具。
|
|
280
|
-
3. **执行身份不可变**:`arguments` 在策略开始前被一次性无损 JSON 快照并冻结;`exec.token` 为不透明 token;`callId/name/arguments/agent/token/signal/parent` 全程不可变。`args` 视为只读。只有 `tools/execute` 包装层可临时替换 `exec.signal`(且不能删除)。
|
|
281
|
-
4. **声明并返回一个规范 JSON 值**:`output.schema`(`ValueSchemaSpec`)可为对象/数组/标量/null 根;`execute` 只返回推导值;不要返回内容块、不要让调用方从散文里解析 id。
|
|
282
|
-
5. **抛错或返回非法值 ⇒ `isError`**:基础设施故障用 throw;成功的领域结果放进规范值(即使渲染层解释一个"不理想"状态,如非零退出码)。
|
|
283
|
-
6. **尊重 `exec.signal`**:触发时取消在途工作(前台工作与其绑定;后台任务改用任务自带取消信号)。
|
|
284
|
-
7. **`presentationMeta(args, value)`(可选)**:从同一规范值导出可回放的 JSON 持久化到 `tool/result`,供 UI 卡片回放。
|
|
285
|
-
8. **异步通知用 `exec.agent`**:`agent.inject({ content, source: { kind: '<你的 kind>' } })` 把上下文注入**下一条**模型请求(不是唤醒;空闲 agent 保持空闲)。⚠️ **本世代硬性变化**:`source` 不再接受退役的 `{ kind: 'plugin', plugin: '<name>' }` 包装——会话格式 V4 在**消息准入**处直接拒绝它(`packages/core/session/src/index.ts` 的 source 准入;官方 `docs/cookbook/adding-a-tool.md:49` 明写)。插件自己的 kind 必须先经声明合并注册,否则先用宿主已有的 kind:
|
|
286
|
-
|
|
287
|
-
```ts
|
|
288
|
-
declare module '@deepseek-ai/dsh-llm' {
|
|
289
|
-
interface MessageSourceMap {
|
|
290
|
-
'my-plugin': { kind: 'my-plugin' } // kind 必须与 MESSAGE_SOURCE_KIND_PATTERN 匹配
|
|
291
|
-
}
|
|
292
|
-
}
|
|
293
|
-
```
|
|
294
|
-
|
|
295
|
-
`agent.inject()` 只是 `send(input, 'next-step', false)`(`packages/core/agent-loop/src/agent.ts:171`);同族还有 `followup()`(下一回合,唤醒)与 `steer()`(下一步,唤醒)。对已释放的 agent 要 try/catch。
|
|
296
|
-
|
|
297
|
-
### 4.3 后台任务(长任务)
|
|
298
|
-
|
|
299
|
-
`run_in_background` 由生产者配置门控,然后 `ctx.jobs.start({ kind, label, owner: exec.agent, run })` 注册。成功分支返回类型化句柄(如 `{ kind: 'background', jobId }`)——**Code Mode 永远不得解析人类散文去恢复 id**。`ctx.jobs.start()` 发布 id 后改用任务自有取消信号:外层调用取消只停止等待、不杀已发布任务;`job_kill`、owner 释放、服务卸载负责其生命周期。参考 `dsh-tool-bash`。
|
|
300
|
-
|
|
301
|
-
### 4.4 策略钩子(按需选择)
|
|
302
|
-
|
|
303
|
-
- `tools/pre-execute`:可重排的 allow/deny/ask 门(permission-gate 范例见 extension-cookbook);返回 `PreToolDecision`(`allow | deny | ask`)。不能改写 `exec.arguments`。
|
|
304
|
-
- `ctx.tools.guard()`:pre-execute 之后的**单调最终 deny**(后注册的 waterfall 监听器无法翻转)。
|
|
305
|
-
- `tools/execute`:包裹实际派发生命周期(超时/重试/指标),仅可换 `exec.signal`。
|
|
306
|
-
- `tools/post-execute`:替换展示内容或值、阻断结果、附加模型上下文(改值会重新校验重渲染)。
|
|
307
|
-
- `tools/result`:只读观察不可变最终结果(审计/指标/采集用这个;要改结果才用 post-execute)。
|
|
308
|
-
- 沙箱化可放进工具执行器实现内;权限系统/AskUserQuestion 经 `tools/pre-execute` 返回 `ask` + `ctx.approval`。
|
|
309
|
-
|
|
310
|
-
### 4.5 Code Mode(免费获得)
|
|
311
|
-
|
|
312
|
-
每个可见工具自动成为 `await tools.<name>(args)`,参数/返回类型从同一 schema 推导(`ToolArgsMap`/`ToolOutputMap`)。成功 resolve 到**策略后的最终规范 JSON 值**;失败 reject 真实的 `ToolCallError`(只有 `name/toolName/message` 可查)。设计 `output.schema` 时要当作编程 API 设计:直接返回句柄与字段;人类解释放 `output.render`。
|
|
313
|
-
|
|
314
|
-
### 4.6 UI 卡片(presentCall/presentResult)
|
|
315
|
-
|
|
316
|
-
- 卡片类型:`generic`(默认)/ `terminal` / `diff` / `search` / `read` / `web`(`kind: search|fetch`)。
|
|
317
|
-
- **纯函数硬规则**:卡片方法在实时流与日志回放都会执行 ⇒ 只能依赖 `args`(+ 结果),**禁止 I/O、会话状态、时钟/随机**。diff 由 args 推导;需要旧文件内容/工作目录时——放进持久化结果元数据或 UI 适配器,而不是 presenter。
|
|
318
|
-
- **UI 专属格式不进模型结果**;`defineTool` 对展示路径软校验(老日志参数不崩溃,回退 generic)。
|
|
319
|
-
- **中性词表在 `dsh-tools`**;工具永不 import UI/传输类型。
|
|
320
|
-
|
|
321
|
-
### 4.7 两个新钩子(0.2 世代)
|
|
322
|
-
|
|
323
|
-
- **`ToolDefinition.projectContent(exec, result)`**:在 `tools/post-execute` 策略**之前**安装"执行期准备好的内容";策略的替换仍然权威(下游只看到策略结果),绕过 post-execute 的管线失败**不会**调用它。适合"结果本身是结构值、但要给模型附一段确定性正文"的场景。
|
|
324
|
-
- **`ToolSchema.deferLoading: true`**:标记该工具的 schema **延后加载**,经 `schemaOf()` 进入模型可见 schema。用于工具很多、不想每轮都付全量定义 token 的场景(与 0.1.7-rc.2 起的"动态增加工具且不破坏 KV Cache"配套)。
|
|
325
|
-
- **`PreToolDecision` 的 `ask` 新增 `displayReason`**:`{ kind:'ask'; reason?: string; displayReason?: { readonly en: string; readonly [locale: string]: string } }`——`reason` 是**审计用**的批准理由,`displayReason` 是**本地化**的提示文案(审批卡片会按界面语言显示,并引导 agent 用提问语言解释理由)。
|
|
326
|
-
|
|
327
|
-
### 4.8 插件 UI(Web)与性能:官方 `practices.md` 的硬规则
|
|
328
|
-
|
|
329
|
-
完整要点见 [references/official-plugin-dev-skill.md](../references/official-plugin-dev-skill.md) §3.2/§3.4;开发 UI 插件前**至少**记住这五条:
|
|
330
|
-
|
|
331
|
-
1. **先选渲染面**:插件页面必须渲染成 **slot 里的 React 组件**;**不要**从 Host 提供 HTML 再 iframe 嵌进去(iframe 拿不到宿主主题 token、明暗切换与 `ctx.locale`)。
|
|
332
|
-
2. **样式只用主题 token**(`cordis_inspect_query` 的 `Theme` 列出的 `--dsw-alias-*`);字面颜色只用于 artwork。**不要** `require` 任何 Harness Client 包(`@deepseek-ai/dsh-client-ui-primitives` 等)——它们会无预警变化,而**抛错的组件会把整个 slot 条目搞白**(console: `slot entry crashed in '<slot>'`)。要对齐宿主就"把 primitive 的标记/CSS/行为抄进插件"。
|
|
333
|
-
3. **只经 slot 贡献**:`ctx.slots.inject(ownerKey, () => ctx.slots.register(...))`;会话数据经 slot props 的 selector hook 读**最小切片**;**不要**在组件外写 DOM,也不要往 `document.body` 追加第二个应用。
|
|
334
|
-
4. **加 Chat 行**:`ctx.uiConversation.events.register()` 注册事件定义 + 在 `conversation.chat.node` slot 下按定义的 `kind` 注册视图(分页/落位/增量组装由 Conversation 层负责)。Client 需要会话派生值时,在 Host projection 上声明 **`wire.view`**——Client **不自己 fold 会话事件**。
|
|
335
|
-
5. **性能**:per-session 状态放进 `ctx.sessionProjections`(`apply(state, event)` 纯同步、忽略的事件返回同一引用;`stateOf()` 读;纯 JSON + 改语义就 bump `stateVersion`);**等持久事件**(`turn/end`/`assistant/message`/`tool/result`),实时 token 从 `agent/assistant-stream` 渲染;**不要轮询 `agent/status`**;注意 `whenIdle()` **不**等于"一次 followup 结束"。
|
|
336
|
-
|
|
337
|
-
另有一条最容易踩的工程坑:**`dsh.client` 的 `inject` 必须是静态数组**(cordis 不接受函数形式)。曾有一个已发布的 0.2.0 插件把它导出成函数 → 声明为零依赖 → `apply()` 抛 `cannot get property "sidebarRightTabs" without inject` → 日志只留一行 `web boot: 1 entry did not activate` → **插件自愈机制把整个 bundle 禁用了**。单测要断言"`inject` 是数组且覆盖 `apply()` 触及的每个服务"。
|
|
338
|
-
|
|
339
|
-
**工具的 `parameters` 是 DSH 自己的方言,不是 JSON Schema**;Remote 服务调用是**位置参数**而不是对象参数(`get()` 能用,最有欺骗性);往 `ctx` 上写**未声明**的属性会抛错并可能静默杀掉整个插件的激活——可选服务一律 `ctx.get(name)`,**`ctx.<service>` 只对自己 `inject` 里声明过的服务合法**。
|
|
340
|
-
|
|
341
|
-
### 4.9 插件内如何发布一个 skill(本仓库就是参考实现)
|
|
342
|
-
|
|
343
|
-
一个插件可以**自己携带一份 agent 技能**——这是把"知识/流程"交付给宿主的标准做法,也是本仓库
|
|
344
|
-
(`dsh-plugin-guide`)唯一在做的事。机制曾经在社区资料里被写错成"systemPrompt section + 工具注册",
|
|
345
|
-
**那不是这条路**。
|
|
346
|
-
|
|
347
|
-
**契约**(官方 `docs/subsystems/skills.md`):
|
|
348
|
-
|
|
349
|
-
- `ctx.skills` 是 **provider 注册表**,注册是**同步**的,必须在 `apply()` 内完成。
|
|
350
|
-
- 插件走的是**运行时贡献**入口 `ctx.skills.register(definition)`,其类型为
|
|
351
|
-
`SkillRegistration = Omit<SkillDefinition, 'invocation' | 'provider'> & { invocation?; provider? }`
|
|
352
|
-
——`invocation` 省略即模型与用户两侧都可见,`provider` 省略即落到注册表自有的 runtime provider。
|
|
353
|
-
- **返回的是 Cordis effect disposer**:撤销该贡献并使发现缓存失效。所以照例写成
|
|
354
|
-
`ctx.effect(() => ctx.skills.register({...}))`。
|
|
355
|
-
- 要携带随包资料,给 **`resourceBase: { kind: 'directory', path: <包目录> }`**;技能正文里的
|
|
356
|
-
`./guide/...`、`./references/...` 相对路径就按该目录解析。**这是"渐进披露"得以成立的关键**:
|
|
357
|
-
技能正文只放路由,重资料留在包里按需读,不必一次塞进模型上下文。
|
|
358
|
-
|
|
359
|
-
**最小可用实现**(取自本仓库 `index.js`,可直接抄):
|
|
360
|
-
|
|
361
|
-
```js
|
|
362
|
-
import { readFileSync } from 'node:fs'
|
|
363
|
-
import { dirname, join } from 'node:path'
|
|
364
|
-
import { fileURLToPath } from 'node:url'
|
|
365
|
-
|
|
366
|
-
export const name = 'my-skill-plugin'
|
|
367
|
-
export const inject = ['skills']
|
|
368
|
-
|
|
369
|
-
const packageRoot = dirname(fileURLToPath(import.meta.url))
|
|
370
|
-
|
|
371
|
-
export function apply(ctx) {
|
|
372
|
-
const { description, body } = splitFrontmatter(readFileSync(join(packageRoot, 'SKILL.md'), 'utf8'))
|
|
373
|
-
ctx.effect(() =>
|
|
374
|
-
ctx.skills.register({
|
|
375
|
-
name: 'my-skill-plugin',
|
|
376
|
-
source: 'bundled',
|
|
377
|
-
description, // 决定"何时被加载"
|
|
378
|
-
content: body, // 技能正文
|
|
379
|
-
resourceBase: { kind: 'directory', path: packageRoot },
|
|
380
|
-
}),
|
|
381
|
-
)
|
|
382
|
-
}
|
|
383
|
-
```
|
|
384
|
-
|
|
385
|
-
**四个实测要点**(每一条都踩过):
|
|
386
|
-
|
|
387
|
-
1. **`description` 就是触发器,要写"何时使用"而不是"这是什么"。** 宿主只把 name + description 放进目录给模型挑,
|
|
388
|
-
所以写 `Use when developing, reviewing, packaging, debugging, or answering questions about …`
|
|
389
|
-
这类带场景动词的句子,而不是名词短语。
|
|
390
|
-
2. **解析 frontmatter 要容忍 CRLF。** 用精确的 `startsWith('---\n')` 会在 Windows 检出(`core.autocrlf=true`)
|
|
391
|
-
上失配,后果是**静默退化**:描述掉回兜底字符串(技能变得不易被选中),且**整份文件连同 frontmatter 被当成技能正文**注入。
|
|
392
|
-
本仓库为此加了 `.gitattributes`(`* text=auto eol=lf`),并把解析改成行尾无关。
|
|
393
|
-
3. **截断 frontmatter 与裁掉正文前导空行是两件事。** 只做前者,正文会以换行开头;宿主的 filesystem provider
|
|
394
|
-
自己会裁,但**不是所有 provider 都裁**,自己裁更稳。
|
|
395
|
-
4. **单测要真的加载入口模块。** `index.js` 长期零测试,缺陷因此活到发布之后;测试只需一个
|
|
396
|
-
`{ effect, skills: { register } }` 桩,就能断言"注册的 name、用的是 frontmatter 描述还是兜底、
|
|
397
|
-
`resourceBase` 是否指向包目录"。本仓库 `tests/entry.test.ts` 就是这 8 条断言。
|
|
398
|
-
|
|
399
|
-
**与"工具"的区别**:注册工具(`ctx.tools.register`)会让**每一次请求**都付该工具定义的 token;
|
|
400
|
-
注册技能只在模型**按描述选中**它时才加载正文。给 agent 交付"资料/流程"用技能,交付"可执行动作"才用工具。
|
|
401
|
-
|
|
402
|
-
**相关**:`references/official-plugin-dev-skill.md`(官方自带开发技能的要点)、
|
|
403
|
-
`references/official-docs/docs/subsystems/skills.md`(完整契约与 ranked local discovery 表)。
|
|
404
|
-
|
|
405
|
-
---
|
|
406
|
-
|
|
407
|
-
## 5. 能力分层:Service Definition / Provider / Consumer
|
|
408
|
-
|
|
409
|
-
通用可替换能力(如 bash)拆三层:
|
|
410
|
-
|
|
411
|
-
- **Service Definition**(如 `dsh-shell`):声明 Cordis 服务(`ctx` 键)+ 请求/结果类型(抽象类,不是 TS interface)。
|
|
412
|
-
- **Service Provider**(如 `dsh-bash-local` / `dsh-bash-sandbox`):实现。
|
|
413
|
-
- **Consumer**(如 `dsh-tool-bash`):消费(`inject: ['shell']`),通常注册为工具。
|
|
414
|
-
|
|
415
|
-
规则:**不提前拆**(只有角色需要独立演化才分包);Provider 与 Consumer 互不依赖,都只依赖 Definition;默认值在显式 `resolve(request): Spec` 步骤解决(显式 > 隐式)。一个缝(seam)= 三个角色的完整能力,缺一个角色不叫缝。完整示例见 docs/user/develop/practice/(三步代码齐全)。
|
|
416
|
-
|
|
417
|
-
LLM 适配器同理:继承 `LlmAdapter` 实现 `stream(options)`,`ctx.llm.registerAdapter(providers, adapter)`;`StreamChunk` 协议要点:`block-start/text-delta/block-end/tool-call-delta/usage/finish`,`usage` 在 `finish` 前,`finish` 是最后一块;无法满足的字段抛带稳定 code 的 `LlmError` 而不是静默丢弃。完整见 docs/user/develop/practice/llm-adapter.md。
|
|
418
|
-
|
|
419
|
-
---
|
|
420
|
-
|
|
421
|
-
## 6. 扩展点全景(feature → mechanism)
|
|
422
|
-
|
|
423
|
-
新行为挂到已文档化的扩展点;**改 agent-loop 本身必须同步更新 architecture.md**(插件开发几乎永远不需要改 loop)。来源:architecture.md「Where new behavior goes」+ extension-cookbook「feature → mechanism map」。
|
|
424
|
-
|
|
425
|
-
| 想做什么 | 机制 |
|
|
426
|
-
|---|---|
|
|
427
|
-
| 加模型提供商 | `ctx.llm.registerAdapter` |
|
|
428
|
-
| 加模型可调能力 | `ctx.tools.register`(schema 自动进提示词组装) |
|
|
429
|
-
| 给某个会话换能力集 | agent preset 组合;服务行配 `isolate` realm |
|
|
430
|
-
| 加 shell 执行 | 注册 `ctx.shell` 后端(本地实现经 `ctx.subprocess` spawn) |
|
|
431
|
-
| 加持久终端 | 注册 `ctx.terminals` 后端 + `dsh-tool-terminal` |
|
|
432
|
-
| 加人类命令(斜杠命令) | `ctx.commands` 注册;不经模型回合直接派发 |
|
|
433
|
-
| 加后台任务 | `ctx.jobs` 注册;`job_*` 工具收集/停止 |
|
|
434
|
-
| 加文件访问/策略 | 注册 `ctx.fs` provider 或监听 `fs/*` 事件 |
|
|
435
|
-
| 限制进程 | `ctx.sandbox` 后端;消费者 spawn 前包 argv |
|
|
436
|
-
| 拦截请求/工具/回合 | `agent/*`、`tools/*` 事件;`agent/turn-stopping` 停回合 |
|
|
437
|
-
| 注入模型上下文 | `agent.inject()`;进入下一条被采纳的请求 |
|
|
438
|
-
| UI/编辑器集成 | 驱动 `ctx.agents`;从 `session/event` 渲染 |
|
|
439
|
-
| Web 会话业务节点 | 注册 `ConversationNodeDefinition` + keyed 渲染器 |
|
|
440
|
-
| 持久会话状态 | 扩展 `SessionEventMap`;从日志渲染与回放 |
|
|
441
|
-
| 会话标题 | 注册唯一的 `ctx.sessionTitle` provider |
|
|
442
|
-
| 同会话目标 | `ctx.goals`;经 `agent/*` 继续 |
|
|
443
|
-
| fork 活跃会话 | `ctx.sessions.fork(source, boundary?, childSessionId?)` |
|
|
444
|
-
| 只对一个 agent 注册 | 用该 agent 的 `agent.ctx`(作用域注册) |
|
|
445
|
-
| Hook 系统(用户/项目级) | `agent/created`(serial)、`agent/pre-step`、`agent/request`、`tools/pre-execute`、`tools/post-execute`、`agent/turn-stopping` 监听器 |
|
|
446
|
-
| 上下文压缩 | `ctx.compaction` 缝 + `dsh-compaction-basic`;自动压力走 serial `agent/pre-step`,溢出恢复走 `agent/request-error` |
|
|
447
|
-
| 系统提示词配置 | `ctx.systemPrompt.section()`(带排序与作用域内遮蔽) |
|
|
448
|
-
| 计划模式 | `@deepseek-ai/dsh-plan-mode`(`plan/mode` 日志态、`/plan`、`exit_plan_mode` 工具) |
|
|
449
|
-
| 会话预设组合 | preset 层:per-session agent composition from preset cordis.yml(`dsh-preset`) |
|
|
450
|
-
| 待办列表 | `dsh-todo` 的 `todo_write` 工具(状态进会话日志,可作参考实现) |
|
|
451
|
-
| 循环卫生/工具超时 | `dsh-guard`:重复调用提醒 + `tools/execute` 截止时间强制 |
|
|
452
|
-
| 子代理委派 | `ctx.subagents` provider 注册表 + `dsh-tool-subagent`(现有多家 provider:in-process spawn / fork / `dsh-subagent-acp` / `-codex` / `-claude-code` / `-dsh-sdk`) |
|
|
453
|
-
| 多代理编排 | `ctx.workflowEngine` 缝(Definition/Provider/Consumer)+ PTC workflow engine + `workflow`/`ralph` 工具 Consumer |
|
|
454
|
-
| MCP | 每服务器一个插件:发现工具 → `ctx.tools.register()` |
|
|
455
|
-
| Skills | ⚠️ **不是** section + 工具注册:插件用 **`ctx.skills.register()`** 注册一个运行时技能(`SkillRegistration` = `SkillDefinition` 去掉 `invocation`/`provider`,两者可省略走默认),**在同一 `apply()` 内同步注册**,返回的 disposer 撤销贡献并使发现缓存失效。随包携带资料时给 **`resourceBase: { kind: 'directory', path: <包目录> }`**,技能正文里的 `./...` 相对路径即按该目录解析。官方参考实现是 `dsh-skill-badge`(注册一个不可变的 `bundled` 候选 + 暴露打包资源目录)。**本仓库 `index.js` 是第二个可跑的例子**——见下方 §"插件内如何发布 skill" |
|
|
456
|
-
| 定时任务 | 注册模型可调的调度工具;定时器 → 空闲 `followup(source:{kind:'cron'})` / 忙碌 `inject()` |
|
|
457
|
-
| 遥测/回放 | `session/event` → JSONL;回放 = `sessions.create(id, {seed})` |
|
|
458
|
-
| 上报通道(0.2 新增) | `ctx.otel`:`createEventReporter(options)` / `createSessionLogReporter(options)`——自带传输与批处理,未用时**不分配** provider/transport;**消费者必须在自己 fiber 释放时 drain 通道** |
|
|
459
|
-
| 产品分析事件(0.2 新增) | `ctx.productAnalytics`(`ProductTelemetry`)——**只发显式选定的字段,不自动采集** Session 数据或标识;Desktop 消费者在 `packages/client/product-analytics`,普通 Web 不采集 |
|
|
460
|
-
| 语音输入(0.2 新增,实验) | Host 侧三角色(Service Definition / SenseVoice Provider / Remote Consumer);浏览器侧 `TranscriptionRequest`,UI 挂 `conversation.input.activity` 与 `plugins.bundle.activation` |
|
|
461
|
-
| Claude Code mod 桥(0.2 新增,实验) | `defineMod({ name, version, root, userConfig, register })` 挂在 `cordis.yml` 的 bridge 行之后;类型从 `@deepseek-ai/dsh-experimental-claude-code-mods` 导入。**官方安全提示:mod 不加沙箱,只挂你愿意当插件运行的 mod** |
|
|
462
|
-
| per-session 派生状态(性能首选) | `ctx.sessionProjections`:纯同步 `apply`、忽略的事件返回同引用、`stateOf()` 读、纯 JSON + `stateVersion`;Client 需要派生值时在 Host projection 上声明 `wire.view`(**Client 不自己 fold 会话事件**) |
|
|
463
|
-
| 热重载 | 所有注册是 effect → vendored HMR 天然可用。**但**:改 profile 的 `cordis.patch.yml` 会触发重载并可能丢工具/杀在途 turn(见 §7.0 警告与 `unfixed-issues.md` T1)——运行中不要改 |
|
|
464
|
-
|
|
465
|
-
Hook 的"原生 hook"就是挂在拦截点上的普通 Cordis 插件,不需要外部协议;`dsh-hooks-claude-code`/`dsh-hooks-codex` 是把 Claude Code/Codex hook 配置映射到这些扩展点的桥。
|
|
466
|
-
|
|
467
|
-
---
|
|
468
|
-
|
|
469
|
-
## 7. 打包、安装与分发(踩坑重点)
|
|
470
|
-
|
|
471
|
-
### 7.0 插件形态选型:bundle vs 纯 cordis(两条官方安装通道)
|
|
472
|
-
|
|
473
|
-
> 时间线(社区实测记录,归档仓库 `vlln/plugin-registry`,**该仓 2026-10-03 已归档**,继任者 `vlln/dsh-skills`):官方 0809 推出 repository-plugin 机制(`.dsh-plugin`),**0811 已从 `vendor/loader/src/repository.ts` 移除**(−258 行,`plugin_search/install/uninstall/status` 四个工具随之不复存在)。此后外部插件只有 web profile 一条官方路径,按是否声明 `dsh.bundle` 分两类。
|
|
474
|
-
> **预览期漂移提示**:官方文档里可能仍有残留旧表述(如 `docs/subsystems/skills.md` 的 "repository plugins land in the global layer"),且服务名在快照间会改名(0812 批量重命名:`httpServer→webServer`、`tasks→jobs`、`bash→shell`、`compact→compaction` 等 17 项)——遇到矛盾以**当前宿主的生成式参考**(subsystems 页 Cordis API 区)与社区事实源(`references/community-repo-deep-dive.md` §1.5)为准。
|
|
475
|
-
|
|
476
|
-
| 需求 | 类型 | 安装通道 | 生效 |
|
|
477
|
-
|---|---|---|---|
|
|
478
|
-
| 带组合层(多个 insert/config/disabled 行随包分发、官方 `dsh.client` UI 组件) | **bundle 插件**(`"dsh":{"bundle":{"patch":"./cordis.patch.yml"}}`) | `dsh plugin --profile <name> add <pkg>` → 进 `dsh.profile.bundles` 层栈 | **重启生效** |
|
|
479
|
-
| 单个 Cordis 插件(Node 工具 / 服务 / 自渲染 UI) | **纯 cordis 插件**(无 `dsh.bundle`,`main` 指向 Cordis entry) | `dsh plugin add` 装依赖 + 在 profile `cordis.patch.yml` 加 insert 行 | **配置 HMR 实时生效** |
|
|
480
|
-
|
|
481
|
-
安装状态管理文件:profile 的 `package.json`(`dsh.profile.bundles` 层栈)+ `cordis.patch.yml`(insert 行与 disabled 启停,HMR watched)。
|
|
482
|
-
Git 源安装支持子路径选择器:`dsh plugin --profile demo add "github:owner/repo#<ref>&path:<subdir>"`(构建产物已入库时可免构建直接装)。
|
|
483
|
-
|
|
484
|
-
> ⚠️ **"配置 HMR 实时生效"有代价(本世代实测,见 guide/unfixed-issues.md T1)**:`dsh-hmr` 精确监听 `profile/package.json`、`profile.patchPath`、`$DSH_HOME/cordis.patch.yml`,**任何写入**(包括逐字节相同的重写)都触发重载。实测后果:正在跑的会话会丢掉 preset 贡献的全部工具(65 → 41)、在途 turn 被杀,最坏情况重建 `session-controller` 时抛 `file-upload: Agent resolver is already registered` 并**永久失效**(只能整进程重启)。**结论:不要在会话运行期间改 profile patch**;配置改动走 `plugin_manager` / `dsh plugin` 入口,必须手改就先停进程。
|
|
485
|
-
|
|
486
|
-
### 7.0.1 展示元数据与图标(0.2 世代新增的硬性交付项)
|
|
487
|
-
|
|
488
|
-
Plugin Manager 与 Settings 会**在不激活插件的前提下**读展示信息,所以"能跑"不等于"交付完成"。官方清单(`references/official-plugin-dev-skill.md` §3.1):
|
|
489
|
-
|
|
490
|
-
- `locale/en.json`(以及用户语言,如 `locale/zh.json`)写 `{ "meta": { "title": "...", "description": "..." } }`,并在 `exports` 里导出 `"./locale/*.json"`;
|
|
491
|
-
- 图标导出为 `"./icon"`(包根插件也可在 `package.json` 顶层写 `icon`,它优先于 `./icon`);支持 SVG/PNG/JPEG/WebP,**≤ 256 KiB**,realpath 后必须仍在包内;
|
|
492
|
-
- `files` 必须包含 patch、locale、图标与**每个运行时文件**——但**本地目录安装是链接 checkout,`files` 不过滤链接目录**,要直接核对文件;
|
|
493
|
-
- **子路径插件(`my-plugins/search`)不是包,永远不读 `package.json`**:标题/描述走 `my-plugins/search/locale/*.json` 的 `meta.*`,图片走导出的 `my-plugins/search/icon`。
|
|
494
|
-
- 可选作者字段:`dsh.manifestVersion`(当前 `1`)与 `engines.dsh`(**当前不校验**,只作声明)。类型来自 `@deepseek-ai/dsh-package-manifest`。
|
|
495
|
-
- **真正会被强制的是 peerDependencies**(见 §7.3):`dsh plugin add` 会用运行时的版本比对插件声明的 `@deepseek-ai/dsh-*` 范围,不匹配即**拒绝安装**。
|
|
496
|
-
|
|
497
|
-
### 7.1 从 GitHub 安装的 build-script 坑
|
|
498
|
-
|
|
499
|
-
`dsh plugin add github:you/hello-plugin` 拉的是**源码不是构建产物**:不会跑 `build`,TS 包没有 `lib/` 会加载失败。双方配合:
|
|
500
|
-
|
|
501
|
-
- **作者**:写 `prepare` 脚本(git 安装后 pnpm 会执行)自包含地构建发布入口——不得假设 monorepo 兄弟目录等 dev-only 上下文。官方范例见 [publish.md](../references/official-docs/docs/user/develop/basic/publish.md)(其引用的 turtle-ui 仓库 08-14 核查已 404);活范例参考 [plugin-template](https://github.com/omdsh-dev/plugin-template) 的 `scripts/prepare.mjs`:`prepare` 用专用 tsdown 配置转译 `src/`,无 project references、无类型检查。
|
|
502
|
-
- **用户**:pnpm ≥10 默认拒绝运行 git 依赖的 `prepare`,第一次 `add` 会失败并在 profile 的 `pnpm-workspace.yaml` 加:
|
|
503
|
-
|
|
504
|
-
```yaml
|
|
505
|
-
allowBuilds:
|
|
506
|
-
dsh-hello-plugin: true
|
|
507
|
-
```
|
|
508
|
-
|
|
509
|
-
- 该 allowlist 本质是"**允许该包在安装时于沙箱外执行你的机器代码**":只放行可信源,并 pin commit(`github:you/hello-plugin#<sha>`)。
|
|
510
|
-
- 不想让用户放行 → 发布构建产物:npm 发布带 `lib/`,或 `pnpm pack` 出 tarball(`dsh plugin add ./xxx.tgz`)。
|
|
511
|
-
|
|
512
|
-
### 7.2 给 bundle 自己的命令行
|
|
513
|
-
|
|
514
|
-
bundle 挂一个普通 provider 插件:`inject = ['cmdlineArgs']`,用 `@deepseek-ai/dsh-cmdline` 的 `parseCmdline` 解析自己的 commander program,从 action 提供 app 自有服务;其余行经 `!!js ctx.myAppStartup.port ?? 8080` 读取(部署值作回退)。`--help` 时 provider 不提供服务 → 依赖它的行不激活。
|
|
515
|
-
|
|
516
|
-
### 7.3 常见坑清单(社区踩坑档案 omdsh-dev/dsh-plugin-dev + plugin-registry + 官方 postmortem,全部实测)
|
|
517
|
-
|
|
518
|
-
**身份与依赖(最致命)**
|
|
519
|
-
- **cordis 双副本 / 双 Cordis 分裂**:插件构建时若从 `.pnpm` 副本解析 cordis,与 harness 的 vendored 副本是"两个模块",`declare module` 增强合并不了 → 报 `Property 'tools' does not exist on type 'Context'`。构建期把 cordis 解析到 harness 的 `vendor/cordis`;npm 安装路径下 peer 必须与宿主同一身份——**scoped `@deepseek-ai/cordis` 与 unscoped `cordis` 混用同样分裂**(dsh-tools 的类型只增强 scoped 版本)。独立包把 cordis 设为 peerDependency(+ dev),版本对齐宿主。
|
|
520
|
-
- **官方 `@deepseek-ai/*` 包曾未发布公共 npm**(rc 早期):社区 bundle 的 `dependencies` 留空,靠 profile 的 pnpm 闭包 flat fallback(`$DSH_HOME/profiles/node_modules`)注入;声明了反而解析失败。rc.6 起公开包可用(from-scratch 教程锁 `0.1.0-rc.6`、cordis `4.0.1`),两条时间线的资料都要知道,按当时宿主版本取舍。
|
|
521
|
-
- **npm `latest` 标签是过期版本**:库包(`dsh-tools`、`dsh-base`、`dsh-headless`、`dsh-session-persistence-jsonl`、`dsh-settings`、`dsh-workflow` …)的 `latest` **至今**钉在 `0.0.1-rc.1`,所以写 `"latest"` 会装到远古版本,必须写死版本或钉 `next`/`alpha`。**2026-10-06 复核**:`@deepseek-ai/dsh` `latest`=`next`=`0.2.0-rc.2`、`alpha`=`0.2.1-alpha.1`;dsh-tools / dsh-base / dsh-headless / dsh-session-persistence-jsonl 的 `latest` 仍 `0.0.1-rc.1`、`next`=`0.2.0-rc.2`、`alpha`=`0.2.1-alpha.1`;`@deepseek-ai/cordis` `latest`=4.0.4 并有新标签 `dsh-0-2-1-alpha-1`=4.0.5-alpha.1;`@deepseek-ai/schemastery` `latest`=3.18.4;`create-dsh-plugin` `latest`=0.2.3;dsh-core、dsh-sdk 仍 404。历史两次复核(2026-08-14 与 09-04)的数值保留在上一条记录里,可见"`latest` 陷阱"从 rc 早期持续到 0.2 世代。**无作用域 `dsh` 包是无关项目 node-dsh**("A shell written in JavaScript")——官方 CLI 包是 `@deepseek-ai/dsh`,别装错。
|
|
522
|
-
- **profile 内安装的 `@deepseek-ai/*` 会静默遮蔽运行时自带版本**(解析优先级 `profile > runtime`):把共享实例的 dsh 包写进 **dependencies** 是错的做法——pnpm 会把它装进 profile,盖掉宿主自带的版本,然后核心服务注册失败(实测 `settings service is absent: mount @deepseek-ai/dsh-settings with @deepseek-ai/dsh-config-editor`,桌面端每次崩溃)。**共享实例的 dsh 包只放 `peerDependencies` + `devDependencies`**;独立版本演进或纯工具型包才放 `dependencies`。
|
|
523
|
-
- ⚠️ **peer 范围会被安装期强制**(本节早期版本写成"DSH 不校验 peer 版本范围",**已更正**):`dsh plugin add` 用运行时版本比对插件声明的 `@deepseek-ai/dsh-*` 范围,不匹配即**拒绝安装**,打印声明的范围并给出豁免命令。实测原文:
|
|
524
|
-
|
|
525
|
-
```
|
|
526
|
-
dsh: installation rejected: Plugin dsh-nurse-record-check@0.1.0 is incompatible with
|
|
527
|
-
dsh 0.2.1-alpha.1: peerDependencies {"@deepseek-ai/dsh-tools":">=0.1.2-rc.1 <0.2.0 || …"}.
|
|
528
|
-
To accept this risk explicitly, grant the exact-version exemption for
|
|
529
|
-
dsh-nurse-record-check@0.1.0 on dsh 0.2.1-alpha.1 with `dsh plugin allow-version` or the
|
|
530
|
-
plugin manager, then retry the installation or restart dsh.
|
|
531
|
-
```
|
|
532
|
-
|
|
533
|
-
两个后果:① 范围**少列一个 0.2.x 的 prerelease 元组**,插件在 0.2.x 宿主上就装不上(拦在安装期,不是运行期);② 用**旧版本宿主**打的 tarball 用新版本 `verify` 跑,报错会指向 base bundle 而不是你的插件(`dsh-plugin-dev verify` 的 `--base`/`--headless` 默认值因此必须与 compat workflow 同步)。
|
|
534
|
-
- **豁免机制**(被拒后唯一的出路,可用 `dsh plugin --profile <p> --help` 复核):
|
|
535
|
-
|
|
536
|
-
```sh
|
|
537
|
-
dsh plugin --profile <profile> version-exemptions # 列出已授予的豁免
|
|
538
|
-
dsh plugin --profile <profile> allow-version <pkg@version> \
|
|
539
|
-
--dsh-version <runtime> --accept-risk # 授予精确版本豁免
|
|
540
|
-
dsh plugin --profile <profile> revoke-version <pkg@version> # 撤销
|
|
541
|
-
```
|
|
542
|
-
|
|
543
|
-
豁免是**按 `<包@精确版本> × <宿主版本>` 的精确配对**(不是范围),所以宿主升级后要重新授予。`plugin_manager` 工具面里有对应入口,Web 侧边栏与插件管理页也能授予。**给用户写 README 排错节时把这三条命令抄进去**——这是被拒绝安装时用户唯一能自救的手段。
|
|
544
|
-
- **`file:` 安装载入的是副本**:`dsh plugin add file:../my-plugin` 之后,profile 的 `node_modules` 下是**拷贝**(`nodeLinker: hoisted` + 锁文件只记 `version: file:<path>`),所以**改源码不生效、`update` 是 no-op**——只有 `remove` + `add` 才会重装。调试期要频繁改就用 `--patch` 直挂源码目录,或每次显式重装。
|
|
545
|
-
|
|
546
|
-
**tsconfig 三件套 + 构建陷阱**
|
|
547
|
-
- 独立 TS 插件包实测可用形态:`module: esnext` + `moduleResolution: bundler` + `allowImportingTsExtensions: true`(否则 TS5097)+ `rewriteRelativeImportExtensions: true`(否则产物残留 `./x.ts` 导入 → 运行时 ESM 崩溃)+ `lib: ["ES2024"]` + `outDir: lib` + `declarationDir: lib/types`。用 `Buffer`/`node:` 时显式 `"types": ["node"]`(不写 `types` 字段会隐式包含全部 @types,脆弱)。
|
|
548
|
-
- **`tsc` 报错仍会 emit 产物**(`noEmitOnError` 默认 false)——构建脚本必须 `tsc ... || exit 1` 或加 `--noEmitOnError`;发布前 `grep -rE "from './[^']+\.ts'" lib/` 验证产物无 `.ts` 残留。
|
|
549
|
-
- `main`/`types` 声明 `lib/...` 但 tsconfig 无 `outDir` → 产物落到 src 旁,运行时找不到入口(坑 4)。
|
|
550
|
-
- git 安装跑 `prepare` 要**自包含**:不假设 monorepo 兄弟目录、不跑类型检查,用专用 tsdown 配置转译 `src/`(模板 `scripts/prepare.mjs`);`pnpm pack --dry-run --json` 检查最终文件清单。
|
|
551
|
-
|
|
552
|
-
**Windows 实测**
|
|
553
|
-
- junction 创建:`ln -s` 与 `cmd mklink /J`(MSYS 参数转换)都失败,**PowerShell `New-Item -ItemType Junction` 稳定可用**;`@types` 不能整体 junction(内部是 pnpm 符号链接,tsc 无法穿透),要直达 `.pnpm/@types+node@<ver>/node_modules/@types/node` 真实路径。
|
|
554
|
-
- `path.resolve()` 返回反斜杠,与外部正斜杠路径比较恒 false(路径逃逸误报);比较前两侧都 `resolve()` 或统一 `replace(/\//g,'/')`。
|
|
555
|
-
- vitest:盘符必须大写(`C:/`,小写 `c:/` 报 "Tests no tests");`| tail` 会截掉汇总行,用 `grep -E 'Test Files|Tests '` 取结果。
|
|
556
|
-
- **`DSH_PERMISSION_MODE=danger-full-access` 是高风险模式**(Windows 无沙箱后端时仅此可启动,且禁用审批提示)——只用于可信本地开发机,不要写进模板/CI/共享机器。
|
|
557
|
-
- `DSH_*` 特殊环境变量必须由启动环境传入,放 `~/.dsh/.env` 会启动报错;凭据在 `$DSH_HOME/.credentials.yaml`(LLM 配置只存引用)。
|
|
558
|
-
|
|
559
|
-
**运行时/数据**
|
|
560
|
-
- **多帧 zstd 会话文件**:会话按 200ms 窗口每批追加一个 zstd frame(19MB 会话 ≈ 12 万帧),单帧解压 API 会误判"只有 header"。逐帧扫描用 `scanZstdFrames`/`createZstdFrameDecoder`(真实导入路径 `@deepseek-ai/dsh-session-persistence-jsonl/src/zstd.ts`;npm 包无 `src/` 时 deep 模式降级 decoder-unavailable,帧级扫描不受影响)。
|
|
561
|
-
- worker 内跑 `.ts`(Node ≥23.6 原生 strip-types):worker URL 按源码/产物自适应——`new URL(import.meta.url.endsWith('.ts') ? './worker.ts' : './worker.js', import.meta.url)`。
|
|
562
|
-
- 批量 sed 替换后必须 grep 验证命中数(静默失效案例);计数矩阵(工具数等)改动后全局复查引用。
|
|
563
|
-
- `!!js` 不是 `!js`;`disabled` 字段在每次挂载决策时对 loader 上下文求值;裸 `cordis.yml` 插件必须出现在解析器 manifest 的 `dependencies`(`verify-cordis-config` 强制)。
|
|
564
|
-
|
|
565
|
-
---
|
|
566
|
-
|
|
567
|
-
## 8. 规范与质量门禁(对插件作者的实际影响)
|
|
568
|
-
|
|
569
|
-
- 包命名 `@deepseek-ai/dsh-<name>`;vendored 包改前缀且 `private: true`;`@deepseek-ai/cordis` 是每个 harness 包的 peerDependency(+dev)。
|
|
570
|
-
- ESM 全仓库;跨包用包名、包内相对导入用 `.ts`。
|
|
571
|
-
- 文档双语:README/文档有 `.zh.md` 成对;工具描述等模型可见文本即行为。
|
|
572
|
-
- 测试:包测试 + keyless snapshot(模型/产品可见行为必须有组装后应用级转录快照)+ CI 100% per-file coverage;fixtures 必须可跨平台回放。
|
|
573
|
-
- 门禁:`pnpm run typecheck / lint / build / hygiene / doc-sync`;提交前按 dsh-pre-push-checks 技能选最小检查集。
|
|
574
|
-
- Agent Note:非平凡变更必须在同 PR 加 Agent Note。
|
|
575
|
-
- 事件 JSDoc 需要 `@mode` 与 payload `@param`;公开服务方法文档化参数与非 void 返回值。
|
|
576
|
-
- **跨边界 opaque id 用 branded**(`Branded<B>` from `dsh-brand`):会话/任务/审批等 id 从不裸 `string`(红线 4)。
|
|
577
|
-
- **同进程 typed 边界信任 TypeScript**:不要为静态接口已保证的值加运行时校验/兜底;在 parser/config、queued、模型/工具 JSON、durable/file、worker、process、wire 边界必须运行时校验。
|
|
578
|
-
- **switch 按 discriminant tags**:closed union 以 `assertNever` 收尾;merge-extensible union 落入文档化 default(`SessionEvent` 是后者,见 §3.5)。
|
|
579
|
-
- **独立插件包测试路径**:包级 vitest(fixtures 跨平台回放)+ keyless snapshot(模型/产品可见行为必须有组装后转录快照)+ `pnpm pack` 后装进干净 profile 冒烟(含 `lib/` 构建产物);社区现成的健康检查见 omdsh-dev/dsh-plugin-check,测试结构范例见 plugin-template 的 `tests/`。
|
|
580
|
-
|
|
581
|
-
### 8.1 社区三层采用标准
|
|
582
|
-
|
|
583
|
-
社区标准仓 [`PerryLink/dsh-standards`](https://github.com/PerryLink/dsh-standards) 把 DSH 插件的"合格"拆成三个不同问题:**DSH-ENTRY**(兼容底线,G0–G5)、**DSH-FLOW**(采用体验,J1–J8)与 **DSH-BOOST**(Cordis 增效实践,LEV-1–LEV-8)。三者用"采用深度 × 证据状态"两轴记录,不折算成总分;`static` 不是 `runtime`,`runtime` 不是 UI 已渲染,`not-measured` 不是通过;认证 A–D 与三层正交。完整定义、GB / GB-T / GB-Z 类比(仅类比,非官方)、逐层自检与升级路径见 [standards.md](standards.md)(中文稿 [standards.zh-CN.md](standards.zh-CN.md)),本节不重复。
|
|
584
|
-
|
|
585
|
-
---
|
|
586
|
-
|
|
587
|
-
## 9. 生态与社区(找参考实现、发插件)
|
|
588
|
-
|
|
589
|
-
- **官方社群**:[Discord](https://discord.gg/Ycq5dCaS4) · [GitHub Discussions](https://github.com/deepseek-ai/deepseek-harness/discussions) · 发布插件时给仓库加 [`dsh-plugin` topic](https://github.com/topics/dsh-plugin) 提升可见度。
|
|
590
|
-
- **话题清单**:[GitHub topic `dsh-plugin`](https://github.com/topics/dsh-plugin)(三期早期快照 304/550/993 供续期对比;**08-15 第四期快照** `downloads/topic-snapshots/dsh-plugin-topic-2026-08-15/`:去重 998 个、抓取期间 API total_count 2668→2671 持续增长——search API 分页上限 1000 条)。
|
|
591
|
-
- **精选列表**:[awesome-dsh-plugins](https://github.com/AdamPlatin123/awesome-dsh-plugins)(每日兼容性追踪)、[awesome-deepseek-harness](https://github.com/0xsline/awesome-deepseek-harness)、[Alex-Yanggg/awesome-DSH-plugin](https://github.com/Alex-Yanggg/awesome-DSH-plugin)、[bruc3van/awesome-dsh-plugin](https://github.com/bruc3van/awesome-dsh-plugin);08-14 新增 [walkinglabs](https://github.com/walkinglabs/awesome-deepseek-harness-plugins)、[vvlife](https://github.com/vvlife/awesome-deepseek-harness-plugins) 的 awesome-deepseek-harness-plugins 与 [cccakeee/awesome-dsh-plugins](https://github.com/cccakeee/awesome-dsh-plugins)(完整清单见 community-ecosystem.md §5)。
|
|
592
|
-
- **插件注册/分发中心**:[vlln/dsh-skills](https://github.com/vlln/dsh-skills)(✅ **现行**:`make-dsh-plugin` 开发引导 skill + 0.1.6→0.2.0 改名症状表 + 实测踩坑,基线 0.2.0-rc.2);~~[vlln/plugin-registry](https://github.com/vlln/plugin-registry)~~(⚠️ **2026-10-03 归档**,冻结在 0.1.5 基线;其**机制时间线**仍可引用:repository-plugin 0809 推出、0811 移除)、[omdsh-dev/dsh-hub-workshop](https://github.com/omdsh-dev/dsh-hub-workshop)(插件市场/注册 workshop,`INTAKE.md` 是收录权威;dsh-external/hub 08-14 核查已 404);08-14 另出现多个 Web GUI 内插件市场([DSH-Plugins-Marketplace](https://github.com/bradeGithub/DSH-Plugins-Marketplace)、[dsh-plugin-installer](https://github.com/Toukaiteio/dsh-plugin-installer)、[dsh-plugin-marketplace](https://github.com/Scorp1o117/dsh-plugin-marketplace),未深读,信任边界同 dsh-hub-workshop"发现 ≠ 安装权限")。
|
|
593
|
-
- **模板与脚手架**:[omdsh-dev/plugin-template](https://github.com/omdsh-dev/plugin-template)(完整生产模板:src 四文件结构 + 7 个开发 skill + tsdown 自包含 prepare + 契约文档 docs/dsh-plugin-contracts.md)、[`npm create dsh-plugin@latest`](https://github.com/whyihaveyou/dsh-suite)(whyihaveyou/dsh-suite 的脚手架,tool/events/webui 三模板)、[omdsh-dev/dsh-plugin-skills](https://github.com/omdsh-dev/dsh-plugin-skills)、[omdsh-dev/dsh-plugin-dev](https://github.com/omdsh-dev/dsh-plugin-dev)(踩坑档案 skill+文档,20 个实测坑)。
|
|
594
|
-
- **教程与最小模板**:[Opr4Mp3r/deepseek-harness-plugin-from-scratch](https://github.com/Opr4Mp3r/deepseek-harness-plugin-from-scratch)(代码审计式渐进教程:checkpoint + 反模式 17 坑 + 交付检查单,锁 harness@47f9438/npm rc.6)、[randerous/dsh-turn-meta](https://github.com/randerous/dsh-turn-meta)(最小首插件:agent/pre-step + prepend:true + source 归属注入范例)、[omdsh-dev/fabric](https://github.com/omdsh-dev/fabric)(类 MC Fabric 的 hook 处理器)、[omdsh-dev/dsh-plugin-check](https://github.com/omdsh-dev/dsh-plugin-check)(插件健康检查:清单协议/patch 格式/构建陷阱)、[bobleer/deepseek-harness-plugin-mcp](https://github.com/bobleer/deepseek-harness-plugin-mcp)(经 MCP 发现/安装/运行插件)、[Nagi-ovo/dsh-find-plugins](https://github.com/Nagi-ovo/dsh-find-plugins)、[omdsh-dev/dsh-hub-workshop](https://github.com/omdsh-dev/dsh-hub-workshop)(插件市场/注册 workshop)。
|
|
595
|
-
- **兼容性追踪**:[whyihaveyou/dsh-suite](https://github.com/whyihaveyou/dsh-suite)(双语目录 + 每日兼容性 CI,167+ 插件带 🟢/⚪ 徽章)、[AdamPlatin123/awesome-dsh-plugins](https://github.com/AdamPlatin123/awesome-dsh-plugins)(每日兼容性追踪)。
|
|
596
|
-
- **社区/学习**:[hikariming/dshfind](https://github.com/hikariming/dshfind)(DSH 学习与分享社区,MDX)。
|
|
597
|
-
- **教程与文档型仓库(08-14 晚扫描新增归档)**:[flaqai/deepeseek-harness-guide](https://github.com/flaqai/deepeseek-harness-guide)(15 语言指南)、[Electricitysheep/dsh-handbook](https://github.com/Electricitysheep/dsh-handbook)(14 章双语手册 + PDF)、[flysheep-ai/learn_deepseek_harness](https://github.com/flysheep-ai/learn_deepseek_harness)(s01–s23 渐进课程)、[pingfanfan/hello-dsh](https://github.com/pingfanfan/hello-dsh)(零基础 22 技能实例)、[LaplaceYoung/dsh-book-deepseek-harness](https://github.com/LaplaceYoung/dsh-book-deepseek-harness)(源码拆解书)、[curtiseng/cordis-course](https://github.com/curtiseng/cordis-course)(Cordis 论文中文课程)、[NanmiCoder/dsh-agent-teams](https://github.com/NanmiCoder/dsh-agent-teams)(英文插件开发教程 developing-dsh-plugins.md);**08-15 第七批(14 个)**:桌面壳([anywhere-labs](https://github.com/anywhere-labs/deepseek-harness-desktop)、[cc1252](https://github.com/cc1252/deepseek-harness-desktop)、[ChisaAlter](https://github.com/ChisaAlter/Deepseek-Harness-Desktop) 等 7 个)、[banana770/dsh-qq-bridge](https://github.com/banana770/dsh-qq-bridge)(QQ 桥接)、[zzszmyf/dsh-security-pocs](https://github.com/zzszmyf/dsh-security-pocs)(安全 PoC)、[HenryZ838978/deepseek-harness](https://github.com/HenryZ838978/deepseek-harness)(Python 移植)、[Vengisk/deepseek-harness-termux](https://github.com/Vengisk/deepseek-harness-termux)(Termux);第八批 3 个:[orxz/deepseek-harness-themes](https://github.com/orxz/deepseek-harness-themes)(主题)、[vvlife/whalehub-dsh](https://github.com/vvlife/whalehub-dsh)(WhaleHub 市场)、[dsh-market/dsh-market](https://github.com/dsh-market/dsh-market)……完整 114 仓清单见 [community-ecosystem.md](../references/community-ecosystem.md) §4。
|
|
598
|
-
- **本工作区已有实例可参考**:`dsh-chat-import`(JS + cordis.patch.yml)、`dsh-resume-plugin`(多 skill 插件)、`dsh-plugin-claude-bridge`(TS + src/ + tsconfig);114 个社区仓库的**完整源码副本**在 `downloads/community-repos/`(首批 15 个深读报告见 [references/community-repo-deep-dive.md](../references/community-repo-deep-dive.md))。
|
|
599
|
-
- **官方 Discussions 最新动态**:官方 [RFC #1629](https://github.com/deepseek-ai/deepseek-harness/discussions/1629)(2026-08-15,官方插件脚手架 template repo + `pnpm create dsh-plugin` 提案,直指 dsh-tools `latest` 版本火车混淆问题)——**全量归档已刷新到 2026-10-06**(`downloads/github/harness/discussions/`:list=5000、精选线程 1648;REST 列表上限 5000 而仓库实际 total_count≈8850,脚本会显式告警)。仓库 API 核实 star≈244k、`has_issues=false`——**没有 issue tracker、不收 PR,Discussions 是唯一渠道,且 Announcements 分类只有 1 条**(官方不在讨论区发版)。**注意**:本轮通读窗口内 3100 条讨论,**没有任何维护者在任何帖里确认过修复或设计决定**;唯一权威的"官方决定"记录是 GitHub **Releases** 的说明(仓库无 CHANGELOG)。引用"官方已确认"时落到 Release 原文或提交号。
|
|
600
|
-
- **0.2 世代新增的作者工具(社区)**:[mengjiemy/dsh-plugin-devkit](https://github.com/mengjiemy/dsh-plugin-devkit)(四个命令对准四类"静默失败":`smoke` 在安装前用假 `window`/`react` 加载 client 插件——装一个坏 client 半侧会把整个 UI 拖下水;`sync` 对比源码目录与 `file:` 安装后 DSH **真正加载的副本**;`version` 比对 profile 与 client 自身的 `@deepseek-ai/*` 版本;`css` 检测插件间 `:root` CSS 变量冲突)、`dsh-composition-doctor`(把插件故障关联回组合来源——正对 T3 的诊断空白)、`dsh-xray`(声明能力 vs 实际能力)、`Noob-stupid/dsh-plugin-gating-hub`(升级契约预检 + 自动回滚)。生态规模参考:`topic:dsh-plugin` 约 **17,776 仓**(上限值,标签灌水严重),[dsh-plugin.org](https://dsh-plugin.org) 索引约 12,699,星数最高的市场是 [dsh-market/dsh-market](https://github.com/dsh-market/dsh-market)(约 5.6k)。
|
|
601
|
-
- 完整信息与更多链接见 [references/community-ecosystem.md](../references/community-ecosystem.md);官方文档 URL 对照见 [guide/links.md](links.md)。
|
|
602
|
-
|
|
603
|
-
|
|
604
|
-
---
|
|
605
|
-
|
|
606
|
-
## 9.1 版本兼容与迁移(0.2 世代必读)
|
|
607
|
-
|
|
608
|
-
- **先认版本**:`dsh --version`,然后读 [version-matrix.md](version-matrix.md)(版本适配矩阵:五个"最新"的区分、子包 `latest` 冻结陷阱、破坏性变更断层、peer 区间选择、会话格式谱系)。`0.1.7-alpha.1` 起包含本世代全部破坏性变更(会话格式 V4)。npm 上 `latest`=`next`=`0.2.0-rc.2`、`alpha`=`0.2.1-alpha.2`,而 master 最新 tag 是 `dsh-v0.2.1-alpha.2`——**这四个"最新"不是同一个东西**;**不存在稳定版**(全部 31 个 npm 版本都是 prerelease)。
|
|
609
|
-
- **peer 范围要写全两侧的 prerelease 元组**(如 `>=0.1.2-rc.1 <0.2.0 || … || >=0.2.0-0 <0.3.0 || >=0.2.1-0 <0.3.0`)。⚠️ **这个范围会被安装期强制**,不是文档意图:`dsh plugin add` 用运行时版本比对它,不匹配就拒绝安装并打印你声明的范围。所以少一个 0.2.x clause,插件在 0.2.x 宿主上**根本装不上**(拦在安装期,不是运行期)。范围之外仍要靠运行时特性探测——范围只表达"能不能装",表达不了"某个 API 在不在"。
|
|
610
|
-
- **共享实例的 dsh 包只放 peer + dev**,绝不放 dependencies(否则 profile 内副本会遮蔽运行时版本)。
|
|
611
|
-
- **升级后必做**:`dsh --profile <name> --dump-config` 看有没有 `patch: entry <id> not found`(上游删行/改名后,你的 override 会**静默失效**);再跑一次真实能力。
|
|
612
|
-
- **逐项迁移清单**:见 [migration-0.2.md](migration-0.2.md)(含会话格式 V4、settings 重写、invariants 删除、`readBytes`、客户端 slot/Remote 改名、`agent.inject()` 的 source 包装退役、preset 分叉等全部条目与官方原文出处)。
|
|
613
|
-
|
|
614
|
-
---
|
|
615
|
-
|
|
616
|
-
## 10. 从零到发布的标准路径(总结清单)
|
|
617
|
-
|
|
618
|
-
1. 读 Cordis Primer(5 个概念)→ 跑 Cordis tutorial 01-07(无 key)。
|
|
619
|
-
2. 按 docs/user/develop/basic 四步做第一个插件(scratch-plugin + `--patch`);或者在会话里直接走官方路径:写 bundle → `plugin_manager.install_bundle` → `cordis_inspect_query` 核对(见 [references/official-plugin-dev-skill.md](../references/official-plugin-dev-skill.md))。
|
|
620
|
-
3. 需要新能力时:先查 architecture「Where new behavior goes」与 extension-cookbook 表选扩展点(**用最弱的够用机制**);tool 类需求读 adding-a-tool.md 全文。
|
|
621
|
-
4. 需要可替换能力 → 三层拆分(practice 教程);需要接模型商 → LLM adapter 指南。
|
|
622
|
-
5. 配置全部 Schema 化、fail loud;不硬编码可调值;工具 `parameters` 是 DSH 方言不是 JSON Schema。
|
|
623
|
-
6. 打包:bundle manifest + cordis.patch.yml(可多文件数组);**补展示元数据**(`locale/*.json` 的 `meta.*` + 导出的 `./icon`);git 安装配 `prepare`;npm/tarball 分发免 allowBuilds。
|
|
624
|
-
7. 发布前:包级测试 + 关键 snapshot + typecheck/build/hygiene;README 双语并写明扩展点与模型可见效果;`inject` 是静态数组且覆盖 `apply()` 触及的每个服务。
|
|
625
|
-
8. 发布到 dsh-plugin topic / hub / awesome 列表,社区可见;显式声明跨线 peer 范围并按版本发版(组合包升级是社区最常见的"插件被判不兼容"来源)。
|
|
626
|
-
|
|
627
|
-
---
|
|
628
|
-
|
|
629
|
-
*本指南由 dsh-plugin-guide 维护;与官方文档冲突时以官方文档(references/official-docs/)为准。*
|