dsh-plugin-dev-kb 1.0.3 → 1.0.5
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/CHANGELOG.md +35 -0
- package/README.md +14 -0
- package/kb/README.md +1 -1
- package/kb/extra/cookbook/adding-a-vendored-package.zh.md +3 -3
- package/kb/extra/cookbook/maintaining-dsh-code-review.zh.md +1 -1
- package/kb/extra/cookbook/responding-to-pr-review-on-a-stack.zh.md +1 -1
- package/kb/extra/defensive-patterns.zh.md +3 -1
- package/kb/extra/development.zh.md +15 -9
- package/kb/extra/event-producer-consumer.md +5 -2
- package/kb/extra/event-producer-consumer.zh.md +5 -2
- package/kb/extra/graph-atlas.zh.md +7 -7
- package/kb/extra/i18n/README.md +3 -3
- package/kb/extra/i18n/README.zh.md +9 -7
- package/kb/extra/i18n/style-samples.md +1 -1
- package/kb/extra/i18n/translation-prompt.md +3 -3
- package/kb/extra/i18n/translation-rules.md +2 -2
- package/kb/extra/i18n/translation-rules.zh.md +3 -3
- package/kb/extra/module-graph.md +18 -9
- package/kb/extra/module-graph.zh.md +18 -9
- package/kb/extra/postmortem/0001-acp-default-export-drops-inject.zh.md +1 -1
- package/kb/extra/postmortem/0002-js-expression-disabled-filesystem-tools.zh.md +1 -1
- package/kb/extra/postmortem/0004-landlock-partial-notice-misclassified-child-failures.zh.md +1 -1
- package/kb/extra/postmortem/README.zh.md +5 -5
- package/kb/extra/rescope.zh.md +1 -1
- package/kb/extra/subsystems/agent-team.md +2 -2
- package/kb/extra/subsystems/agent-team.zh.md +6 -6
- package/kb/extra/subsystems/attachment.md +63 -12
- package/kb/extra/subsystems/attachment.zh.md +63 -12
- package/kb/extra/subsystems/extensions.md +9 -9
- package/kb/extra/subsystems/extensions.zh.md +12 -12
- package/kb/extra/subsystems/feedback.md +2 -2
- package/kb/extra/subsystems/feedback.zh.md +2 -2
- package/kb/extra/testing.md +1 -1
- package/kb/extra/testing.zh.md +7 -7
- package/kb/extra/web-styling.zh.md +2 -2
- package/kb/meta/search-index.json +132 -132
- package/kb/meta/source.json +2 -2
- package/kb/site/develop/basic/index.md +1 -1
- package/kb/site/develop/basic/publish.md +3 -3
- package/kb/site/develop/cordis-tutorial/index.md +1 -1
- package/kb/site/en/reference/capability-seams.md +5 -0
- package/kb/site/en/reference/config-catalog.md +52 -17
- package/kb/site/en/reference/persistence-catalog.md +1 -1
- package/kb/site/en/reference/subsystems/approval.md +3 -3
- package/kb/site/en/reference/subsystems/client-modules.md +7 -7
- package/kb/site/en/reference/subsystems/code-runtime.md +2 -2
- package/kb/site/en/reference/subsystems/commands.md +3 -3
- package/kb/site/en/reference/subsystems/compaction.md +3 -3
- package/kb/site/en/reference/subsystems/core.md +19 -19
- package/kb/site/en/reference/subsystems/credentials.md +163 -8
- package/kb/site/en/reference/subsystems/filesystem.md +5 -5
- package/kb/site/en/reference/subsystems/goal.md +3 -3
- package/kb/site/en/reference/subsystems/invariants.md +2 -2
- package/kb/site/en/reference/subsystems/jobs.md +2 -2
- package/kb/site/en/reference/subsystems/llm-streaming.md +16 -4
- package/kb/site/en/reference/subsystems/lsp.md +2 -2
- package/kb/site/en/reference/subsystems/permission-presets.md +2 -2
- package/kb/site/en/reference/subsystems/persistence.md +2 -2
- package/kb/site/en/reference/subsystems/plan.md +2 -2
- package/kb/site/en/reference/subsystems/sandbox.md +3 -3
- package/kb/site/en/reference/subsystems/session-projection.md +60 -35
- package/kb/site/en/reference/subsystems/session-query.md +2 -2
- package/kb/site/en/reference/subsystems/session-reference.md +3 -3
- package/kb/site/en/reference/subsystems/session-telemetry.md +3 -3
- package/kb/site/en/reference/subsystems/session-title.md +2 -2
- package/kb/site/en/reference/subsystems/session.md +6 -6
- package/kb/site/en/reference/subsystems/settings.md +4 -4
- package/kb/site/en/reference/subsystems/shell.md +3 -3
- package/kb/site/en/reference/subsystems/skills.md +3 -3
- package/kb/site/en/reference/subsystems/spill.md +2 -2
- package/kb/site/en/reference/subsystems/storage.md +4 -4
- package/kb/site/en/reference/subsystems/subagent.md +6 -6
- package/kb/site/en/reference/subsystems/subprocess.md +3 -3
- package/kb/site/en/reference/subsystems/system-prompt.md +4 -4
- package/kb/site/en/reference/subsystems/terminal.md +2 -2
- package/kb/site/en/reference/subsystems/token-meter.md +2 -2
- package/kb/site/en/reference/subsystems/tools.md +8 -8
- package/kb/site/en/reference/subsystems/typert.md +4 -4
- package/kb/site/en/reference/subsystems/user-questions.md +2 -2
- package/kb/site/en/reference/subsystems/web-server.md +46 -6
- package/kb/site/en/reference/subsystems/web.md +2 -2
- package/kb/site/en/reference/subsystems/workflow.md +8 -8
- package/kb/site/en/reference/subsystems/workspace.md +3 -3
- package/kb/site/en/reference/tool-catalog.md +3 -3
- package/kb/site/guide/providers.md +2 -2
- package/kb/site/guide/python-sdk.md +2 -2
- package/kb/site/guide/quickstart.md +2 -2
- package/kb/site/reference/capability-seams.md +5 -0
- package/kb/site/reference/config-catalog.md +53 -18
- package/kb/site/reference/cookbook/adding-a-conversation-node.md +1 -1
- package/kb/site/reference/cookbook/adding-a-package.md +5 -3
- package/kb/site/reference/cookbook/adding-a-settings-card.md +1 -1
- package/kb/site/reference/cookbook/adding-a-tool.md +6 -6
- package/kb/site/reference/cookbook/adding-an-llm-adapter.md +2 -2
- package/kb/site/reference/cookbook/extension-cookbook.md +6 -4
- package/kb/site/reference/index.md +4 -4
- package/kb/site/reference/persistence-catalog.md +5 -5
- package/kb/site/reference/subsystems/approval.md +3 -3
- package/kb/site/reference/subsystems/client-modules.md +8 -8
- package/kb/site/reference/subsystems/code-runtime.md +4 -4
- package/kb/site/reference/subsystems/commands.md +5 -5
- package/kb/site/reference/subsystems/compaction.md +7 -7
- package/kb/site/reference/subsystems/core.md +26 -24
- package/kb/site/reference/subsystems/credentials.md +163 -8
- package/kb/site/reference/subsystems/filesystem.md +6 -6
- package/kb/site/reference/subsystems/goal.md +5 -5
- package/kb/site/reference/subsystems/index.md +5 -5
- package/kb/site/reference/subsystems/invariants.md +5 -5
- package/kb/site/reference/subsystems/jobs.md +4 -4
- package/kb/site/reference/subsystems/llm-streaming.md +21 -9
- package/kb/site/reference/subsystems/lsp.md +3 -3
- package/kb/site/reference/subsystems/permission-presets.md +3 -3
- package/kb/site/reference/subsystems/persistence.md +6 -6
- package/kb/site/reference/subsystems/plan.md +4 -4
- package/kb/site/reference/subsystems/sandbox.md +7 -5
- package/kb/site/reference/subsystems/schedule.md +1 -1
- package/kb/site/reference/subsystems/scope.md +1 -1
- package/kb/site/reference/subsystems/session-projection.md +61 -36
- package/kb/site/reference/subsystems/session-query.md +2 -2
- package/kb/site/reference/subsystems/session-reference.md +3 -3
- package/kb/site/reference/subsystems/session-telemetry.md +5 -5
- package/kb/site/reference/subsystems/session-title.md +2 -2
- package/kb/site/reference/subsystems/session.md +13 -11
- package/kb/site/reference/subsystems/settings.md +4 -4
- package/kb/site/reference/subsystems/shell.md +6 -6
- package/kb/site/reference/subsystems/skills.md +3 -3
- package/kb/site/reference/subsystems/spill.md +3 -3
- package/kb/site/reference/subsystems/storage.md +7 -7
- package/kb/site/reference/subsystems/subagent.md +11 -9
- package/kb/site/reference/subsystems/subprocess.md +4 -4
- package/kb/site/reference/subsystems/system-prompt.md +5 -5
- package/kb/site/reference/subsystems/terminal.md +3 -3
- package/kb/site/reference/subsystems/token-meter.md +2 -2
- package/kb/site/reference/subsystems/tools.md +9 -9
- package/kb/site/reference/subsystems/typert.md +5 -5
- package/kb/site/reference/subsystems/user-questions.md +2 -2
- package/kb/site/reference/subsystems/web-server.md +48 -8
- package/kb/site/reference/subsystems/web.md +3 -3
- package/kb/site/reference/subsystems/workflow.md +11 -11
- package/kb/site/reference/subsystems/workspace.md +5 -5
- package/kb/site/reference/tool-catalog.md +9 -5
- package/package.json +2 -1
|
@@ -93,7 +93,7 @@ interface PromptContext {
|
|
|
93
93
|
|
|
94
94
|
## Cordis API
|
|
95
95
|
|
|
96
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
96
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
97
97
|
|
|
98
98
|
<a id="ctxsystemprompt--systemprompt"></a>
|
|
99
99
|
|
|
@@ -159,7 +159,7 @@ variable(name: string, provider: (context: AssembleContext) => string | undefine
|
|
|
159
159
|
async assemble(context: AssembleContext = {}): Promise<PromptAssembly>
|
|
160
160
|
```
|
|
161
161
|
|
|
162
|
-
Source: [`packages/core/system-prompt/src/index.ts
|
|
162
|
+
Source: [`packages/core/system-prompt/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts)
|
|
163
163
|
|
|
164
164
|
<a id="system-prompt-events"></a>
|
|
165
165
|
|
|
@@ -189,7 +189,7 @@ Expert waterfall over the assembled sections, contexts, tools, and variables. Sc
|
|
|
189
189
|
|
|
190
190
|
Types: [Scoped](./scope.md)
|
|
191
191
|
|
|
192
|
-
Source: [`packages/core/system-prompt/src/index.ts
|
|
192
|
+
Source: [`packages/core/system-prompt/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts)
|
|
193
193
|
|
|
194
194
|
<a id="system-promptchange--emit"></a>
|
|
195
195
|
|
|
@@ -206,5 +206,5 @@ Emitted when any prompt provider changes. This registry notification is unfilter
|
|
|
206
206
|
'system-prompt/change'(): void
|
|
207
207
|
```
|
|
208
208
|
|
|
209
|
-
Source: [`packages/core/system-prompt/src/index.ts
|
|
209
|
+
Source: [`packages/core/system-prompt/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/system-prompt/src/index.ts)
|
|
210
210
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -99,7 +99,7 @@ interface TerminalSendResult {
|
|
|
99
99
|
|
|
100
100
|
## Cordis API
|
|
101
101
|
|
|
102
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
102
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
103
103
|
|
|
104
104
|
<a id="ctxterminals--terminalsessionservice"></a>
|
|
105
105
|
|
|
@@ -183,5 +183,5 @@ list(owner: Agent): TerminalSessionSnapshot[]
|
|
|
183
183
|
|
|
184
184
|
Types: [Agent](./core.md)
|
|
185
185
|
|
|
186
|
-
Source: [`packages/terminal/terminal/src/index.ts
|
|
186
|
+
Source: [`packages/terminal/terminal/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/terminal/terminal/src/index.ts)
|
|
187
187
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -51,7 +51,7 @@ Surface order is authoritative; replacement nodes can have higher durable seqs t
|
|
|
51
51
|
|
|
52
52
|
## Cordis API
|
|
53
53
|
|
|
54
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
54
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
55
55
|
|
|
56
56
|
<a id="ctxtokenmeter--tokenmeter"></a>
|
|
57
57
|
|
|
@@ -89,5 +89,5 @@ estimateMessage(message: Message): number
|
|
|
89
89
|
|
|
90
90
|
Types: [EpochHeader](./session.md) · [Message](./llm-streaming.md) · [Session](./session.md)
|
|
91
91
|
|
|
92
|
-
Source: [`packages/llm/token-meter/src/index.ts
|
|
92
|
+
Source: [`packages/llm/token-meter/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/token-meter/src/index.ts)
|
|
93
93
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -476,7 +476,7 @@ The full presentation field docs live in [`packages/core/tools/src/presentation.
|
|
|
476
476
|
|
|
477
477
|
## Cordis API
|
|
478
478
|
|
|
479
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
479
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
480
480
|
|
|
481
481
|
<a id="ctxtools--toolruntime"></a>
|
|
482
482
|
|
|
@@ -574,7 +574,7 @@ async execute(exec: ToolExecutionInput): Promise<ToolExecutionResult>
|
|
|
574
574
|
|
|
575
575
|
Types: [ScopeKey](./scope.md)
|
|
576
576
|
|
|
577
|
-
Source: [`packages/core/tools/src/index.ts
|
|
577
|
+
Source: [`packages/core/tools/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
|
|
578
578
|
|
|
579
579
|
<a id="tools-events"></a>
|
|
580
580
|
|
|
@@ -599,7 +599,7 @@ A tool was registered or unregistered, or a scoped restriction changed (the avai
|
|
|
599
599
|
'tools/change'(): void
|
|
600
600
|
```
|
|
601
601
|
|
|
602
|
-
Source: [`packages/core/tools/src/index.ts
|
|
602
|
+
Source: [`packages/core/tools/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
|
|
603
603
|
|
|
604
604
|
<a id="toolscode-dispatch-log--waterfall"></a>
|
|
605
605
|
|
|
@@ -626,7 +626,7 @@ Allow a listener to replace content in the DURABLE LOG COPY of one `run_code` su
|
|
|
626
626
|
|
|
627
627
|
Types: [ContentBlock](./llm-streaming.md) · [Scoped](./scope.md)
|
|
628
628
|
|
|
629
|
-
Source: [`packages/core/tools/src/index.ts
|
|
629
|
+
Source: [`packages/core/tools/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
|
|
630
630
|
|
|
631
631
|
<a id="toolsexecute--waterfall"></a>
|
|
632
632
|
|
|
@@ -650,7 +650,7 @@ Around-dispatch waterfall for timeout, retry, or metrics. `next()` returns a nor
|
|
|
650
650
|
|
|
651
651
|
Types: [Scoped](./scope.md)
|
|
652
652
|
|
|
653
|
-
Source: [`packages/core/tools/src/index.ts
|
|
653
|
+
Source: [`packages/core/tools/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
|
|
654
654
|
|
|
655
655
|
<a id="toolspost-execute--waterfall"></a>
|
|
656
656
|
|
|
@@ -675,7 +675,7 @@ Accept, replace, enrich, or block a normalized dispatch result. `next()` accepts
|
|
|
675
675
|
|
|
676
676
|
Types: [Scoped](./scope.md)
|
|
677
677
|
|
|
678
|
-
Source: [`packages/core/tools/src/index.ts
|
|
678
|
+
Source: [`packages/core/tools/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
|
|
679
679
|
|
|
680
680
|
<a id="toolspre-execute--waterfall"></a>
|
|
681
681
|
|
|
@@ -698,7 +698,7 @@ Allow, deny, or ask before dispatch. `next()` delegates to allow; missing approv
|
|
|
698
698
|
|
|
699
699
|
Types: [Scoped](./scope.md)
|
|
700
700
|
|
|
701
|
-
Source: [`packages/core/tools/src/index.ts
|
|
701
|
+
Source: [`packages/core/tools/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
|
|
702
702
|
|
|
703
703
|
<a id="toolsresult--emit"></a>
|
|
704
704
|
|
|
@@ -719,5 +719,5 @@ Observe the frozen, lossless-JSON final outcome. Listener failures are contained
|
|
|
719
719
|
|
|
720
720
|
Types: [Scoped](./scope.md)
|
|
721
721
|
|
|
722
|
-
Source: [`packages/core/tools/src/index.ts
|
|
722
|
+
Source: [`packages/core/tools/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/core/tools/src/index.ts)
|
|
723
723
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -234,7 +234,7 @@ interface TypertClientRemote extends TypertRemoteNamespaceMap {
|
|
|
234
234
|
|
|
235
235
|
## Cordis API
|
|
236
236
|
|
|
237
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
237
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
238
238
|
|
|
239
239
|
<a id="ctxapiproxy--apiproxy"></a>
|
|
240
240
|
|
|
@@ -251,7 +251,7 @@ Root interface of the unified API. New client-request domain = one new file pair
|
|
|
251
251
|
respond(message: ClientResponse): Promise<RpcReceipt>
|
|
252
252
|
```
|
|
253
253
|
|
|
254
|
-
Source: [`packages/host/apiproxy/src/api/index.ts
|
|
254
|
+
Source: [`packages/host/apiproxy/src/api/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/apiproxy/src/api/index.ts)
|
|
255
255
|
|
|
256
256
|
<a id="ctxtypert--typertregistry"></a>
|
|
257
257
|
|
|
@@ -317,7 +317,7 @@ toJSONSchema(key: string, params?: z.core.ToJSONSchemaParams): z.core.JSONSchema
|
|
|
317
317
|
|
|
318
318
|
Types: [TypertContribution](./invariants.md) · [TypertFace](./invariants.md) · [TypertPackageFilter](./invariants.md) · [TypertPackageRecord](./invariants.md) · [TypertSchemaFilter](./invariants.md) · [TypertSchemaRecord](./invariants.md)
|
|
319
319
|
|
|
320
|
-
Source: [`packages/typert/registry/src/service.ts
|
|
320
|
+
Source: [`packages/typert/registry/src/service.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/typert/registry/src/service.ts)
|
|
321
321
|
|
|
322
322
|
<a id="ctxtypertgateway--typertgatewayservice"></a>
|
|
323
323
|
|
|
@@ -335,5 +335,5 @@ Resolve strict generated definitions or conservative SRC markers against current
|
|
|
335
335
|
async invoke(request: InvokeRemoteRequest): Promise<unknown>
|
|
336
336
|
```
|
|
337
337
|
|
|
338
|
-
Source: [`packages/api/gateway/src/index.ts
|
|
338
|
+
Source: [`packages/api/gateway/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/api/gateway/src/index.ts)
|
|
339
339
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -142,7 +142,7 @@ class UserQuestionError extends HarnessError {
|
|
|
142
142
|
|
|
143
143
|
## Cordis API
|
|
144
144
|
|
|
145
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
145
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
146
146
|
|
|
147
147
|
<a id="ctxuserquestions--userquestionservice"></a>
|
|
148
148
|
|
|
@@ -177,5 +177,5 @@ registerProvider(provider: UserQuestionProvider): () => void
|
|
|
177
177
|
async ask(request: AskUserQuestionRequest): Promise<AskUserQuestionAnswer>
|
|
178
178
|
```
|
|
179
179
|
|
|
180
|
-
Source: [`packages/interaction/user-questions/src/index.ts
|
|
180
|
+
Source: [`packages/interaction/user-questions/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/interaction/user-questions/src/index.ts)
|
|
181
181
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -27,7 +27,7 @@ interface WebRoute {
|
|
|
27
27
|
}
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Match order is fixed: exact table first, then longest matching prefix, then the registered fallback. Registration order carries no request-facing semantics — named routes are composed to be disjoint, and the fallback seat answers anything no named route claims; one owner only, a second registration throws. The shipped Web composition claims the seat with [`dsh-host-frontend-static`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/frontend-static/src/index.ts), the SPA dist server with locked semantics: non-GET/HEAD is 405, traversal outside the dist root is 403,
|
|
30
|
+
Match order is fixed: exact table first, then longest matching prefix, then the registered fallback. Registration order carries no request-facing semantics — named routes are composed to be disjoint, and the fallback seat answers anything no named route claims; one owner only, a second registration throws. The shipped Web composition claims the seat with [`dsh-host-frontend-static`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/frontend-static/src/index.ts), the SPA dist server with locked semantics: non-GET/HEAD is 405, traversal outside the dist root is 403, a readable index renders at the dist root and configured index path, existing files are served directly, absent or non-file targets are empty 404 responses, and unknown extensions ship as octet-stream.
|
|
31
31
|
|
|
32
32
|
## Config
|
|
33
33
|
|
|
@@ -45,7 +45,7 @@ interface Config {
|
|
|
45
45
|
|
|
46
46
|
## The service
|
|
47
47
|
|
|
48
|
-
`WebServer` (`ctx.webServer`) listens immediately on activation; a listen failure (EADDRINUSE…) rejects initialization, and the boot process reports the failed fiber. `register(route)` adds one named route and returns its disposer; a duplicate `(kind, path)` throws because route patterns are a composition-level contract and a collision is a misconfiguration. `
|
|
48
|
+
`WebServer` (`ctx.webServer`) listens immediately on activation; a listen failure (EADDRINUSE…) rejects initialization, and the boot process reports the failed fiber. `register(route)` adds one named route and returns its disposer; a duplicate `(kind, path)` throws because route patterns are a composition-level contract and a collision is a misconfiguration. `collectIndexInjections()` gathers structured `IndexInjection` rows over one `webserver/index-inject` emit, and `renderIndex(html)` renders them into successful root and configured index responses before applying the raw `tapIndex(transform)` escape-hatch transforms in registration order; [dsh-client-modules](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/client/modules) answers the event with the boot manifest rows. `port` reads the listening port, including the port assigned by the OS when `config.port` is 0.
|
|
49
49
|
|
|
50
50
|
A request whose handling throws (a malformed %-escape hitting `decodeURIComponent`, a client dropping mid-body) is logged as a warning and answered 400 — or the socket destroyed when headers are already out — never a process exit. Disposal pairs `close()` with `closeAllConnections()` because a handler may hold its response open (SSE) and such connections never end on their own; without the force-close, teardown would hang. The package never prints: the URL line belongs to the shell. Per-package operational detail, including the dev-mode bundle watch pipeline, stays in the [README](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/webserver/README.md).
|
|
51
51
|
|
|
@@ -55,7 +55,7 @@ A request whose handling throws (a malformed %-escape hitting `decodeURIComponen
|
|
|
55
55
|
|
|
56
56
|
## Cordis API
|
|
57
57
|
|
|
58
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
58
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
59
59
|
|
|
60
60
|
<a id="ctxwebserver--webserver"></a>
|
|
61
61
|
|
|
@@ -91,8 +91,9 @@ registerUpgrade(route: WebUpgradeRoute): () => void
|
|
|
91
91
|
registerFallback(handler: WebRoute['handler']): () => void
|
|
92
92
|
|
|
93
93
|
/**
|
|
94
|
-
* Register
|
|
95
|
-
*
|
|
94
|
+
* Register a raw-HTML index transform, the escape hatch for markup no
|
|
95
|
+
* {@link IndexInjection} row expresses: {@link renderIndex} applies taps in
|
|
96
|
+
* registration order after rendering the structured rows.
|
|
96
97
|
* @param transform - pure html-to-html function.
|
|
97
98
|
* @returns the disposer removing the transform.
|
|
98
99
|
*/
|
|
@@ -105,7 +106,46 @@ tapIndex(transform: (html: string) => string): () => void
|
|
|
105
106
|
* @returns the transformed body.
|
|
106
107
|
*/
|
|
107
108
|
applyIndexTaps(html: string): string
|
|
109
|
+
|
|
110
|
+
/**
|
|
111
|
+
* Gather the structured injection table: one `webserver/index-inject` emit,
|
|
112
|
+
* every subscriber pushes its current rows. Fresh per call, so subscribers
|
|
113
|
+
* read live state (module graph, theme preference) at emit time.
|
|
114
|
+
* @returns rows in subscriber activation order.
|
|
115
|
+
*/
|
|
116
|
+
collectIndexInjections(): IndexInjection[]
|
|
117
|
+
|
|
118
|
+
/**
|
|
119
|
+
* Render one index.html body: the structured injection table first, then
|
|
120
|
+
* the raw `tapIndex` transforms over the result.
|
|
121
|
+
* @param html - the raw index.html body.
|
|
122
|
+
* @returns the transformed body.
|
|
123
|
+
*/
|
|
124
|
+
renderIndex(html: string): string
|
|
108
125
|
```
|
|
109
126
|
|
|
110
|
-
Source: [`packages/host/webserver/src/index.ts
|
|
127
|
+
Source: [`packages/host/webserver/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/webserver/src/index.ts)
|
|
128
|
+
|
|
129
|
+
<a id="webserver-events"></a>
|
|
130
|
+
|
|
131
|
+
### `webserver/*` events
|
|
132
|
+
|
|
133
|
+
<a id="webserverindex-inject--emit"></a>
|
|
134
|
+
|
|
135
|
+
#### `webserver/index-inject` — emit
|
|
136
|
+
|
|
137
|
+
Collect the structured index injection table. Emitted on every index render and every worker boot-payload request; listeners push their current rows, so a row's data is read fresh at emit time.
|
|
138
|
+
|
|
139
|
+
```ts cordis-catalog
|
|
140
|
+
/**
|
|
141
|
+
* Collect the structured index injection table. Emitted on every index
|
|
142
|
+
* render and every worker boot-payload request; listeners push their
|
|
143
|
+
* current rows, so a row's data is read fresh at emit time.
|
|
144
|
+
* @param table - Mutable row table; listeners append in activation order.
|
|
145
|
+
* @mode emit
|
|
146
|
+
*/
|
|
147
|
+
'webserver/index-inject'(table: IndexInjection[]): void
|
|
148
|
+
```
|
|
149
|
+
|
|
150
|
+
Source: [`packages/host/webserver/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/webserver/src/index.ts)
|
|
111
151
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -141,7 +141,7 @@ Selection never depends on registration, config, or HMR order: a capability has
|
|
|
141
141
|
|
|
142
142
|
## Cordis API
|
|
143
143
|
|
|
144
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
144
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
145
145
|
|
|
146
146
|
<a id="ctxweb--webruntime"></a>
|
|
147
147
|
|
|
@@ -199,5 +199,5 @@ async search(request: WebSearchRequest, signal?: AbortSignal): Promise<WebSearch
|
|
|
199
199
|
async fetch(request: WebFetchRequest, signal?: AbortSignal): Promise<WebFetchResult>
|
|
200
200
|
```
|
|
201
201
|
|
|
202
|
-
Source: [`packages/web/web/src/index.ts
|
|
202
|
+
Source: [`packages/web/web/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/web/web/src/index.ts)
|
|
203
203
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -136,7 +136,7 @@ The top-level `dsh-tool-workflow` consumer projects display facts into its calli
|
|
|
136
136
|
|
|
137
137
|
## Cordis API
|
|
138
138
|
|
|
139
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
139
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
140
140
|
|
|
141
141
|
<a id="ctxworkflowengine--workflowengine-abstract-seam"></a>
|
|
142
142
|
|
|
@@ -154,7 +154,7 @@ Workflow Service Definition contract. Invalid requests throw before publication;
|
|
|
154
154
|
abstract start(request: WorkflowStartRequest): WorkflowRun
|
|
155
155
|
```
|
|
156
156
|
|
|
157
|
-
Source: [`packages/workflow/workflow/src/index.ts
|
|
157
|
+
Source: [`packages/workflow/workflow/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts)
|
|
158
158
|
|
|
159
159
|
<a id="workflow-events"></a>
|
|
160
160
|
|
|
@@ -180,7 +180,7 @@ One `agent()` call settled (clean result, child failure, or run cancellation). P
|
|
|
180
180
|
'workflow/agent-end'(info: WorkflowRunInfo, agent: WorkflowAgentEndInfo): void
|
|
181
181
|
```
|
|
182
182
|
|
|
183
|
-
Source: [`packages/workflow/workflow/src/index.ts
|
|
183
|
+
Source: [`packages/workflow/workflow/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts)
|
|
184
184
|
|
|
185
185
|
<a id="workflowagent-start--emit"></a>
|
|
186
186
|
|
|
@@ -201,7 +201,7 @@ One `agent()` call established a published child run. Paired with Events['workfl
|
|
|
201
201
|
'workflow/agent-start'(info: WorkflowRunInfo, agent: WorkflowAgentInfo): void
|
|
202
202
|
```
|
|
203
203
|
|
|
204
|
-
Source: [`packages/workflow/workflow/src/index.ts
|
|
204
|
+
Source: [`packages/workflow/workflow/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts)
|
|
205
205
|
|
|
206
206
|
<a id="workflowend--emit"></a>
|
|
207
207
|
|
|
@@ -222,7 +222,7 @@ A workflow run settled (any stop reason). Fired when WorkflowRun.result resolves
|
|
|
222
222
|
'workflow/end'(info: WorkflowRunInfo, result: WorkflowResultInfo): void
|
|
223
223
|
```
|
|
224
224
|
|
|
225
|
-
Source: [`packages/workflow/workflow/src/index.ts
|
|
225
|
+
Source: [`packages/workflow/workflow/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts)
|
|
226
226
|
|
|
227
227
|
<a id="workflowlog--emit"></a>
|
|
228
228
|
|
|
@@ -240,7 +240,7 @@ The script emitted a narration line (a `log(message)` call).
|
|
|
240
240
|
'workflow/log'(info: WorkflowRunInfo, message: string): void
|
|
241
241
|
```
|
|
242
242
|
|
|
243
|
-
Source: [`packages/workflow/workflow/src/index.ts
|
|
243
|
+
Source: [`packages/workflow/workflow/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts)
|
|
244
244
|
|
|
245
245
|
<a id="workflowphase--emit"></a>
|
|
246
246
|
|
|
@@ -259,7 +259,7 @@ The script entered a phase (a `phase(title)` call) — progress grouping for obs
|
|
|
259
259
|
'workflow/phase'(info: WorkflowRunInfo, title: string): void
|
|
260
260
|
```
|
|
261
261
|
|
|
262
|
-
Source: [`packages/workflow/workflow/src/index.ts
|
|
262
|
+
Source: [`packages/workflow/workflow/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts)
|
|
263
263
|
|
|
264
264
|
<a id="workflowstart--emit"></a>
|
|
265
265
|
|
|
@@ -277,5 +277,5 @@ A workflow run started — the script's meta block validated, the body about to
|
|
|
277
277
|
'workflow/start'(info: WorkflowRunInfo): void
|
|
278
278
|
```
|
|
279
279
|
|
|
280
|
-
Source: [`packages/workflow/workflow/src/index.ts
|
|
280
|
+
Source: [`packages/workflow/workflow/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workflow/workflow/src/index.ts)
|
|
281
281
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -134,7 +134,7 @@ Sessions get their cwd at create time from whoever creates them, not from this r
|
|
|
134
134
|
|
|
135
135
|
## Cordis API
|
|
136
136
|
|
|
137
|
-
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) —
|
|
137
|
+
Generated from source by `scripts/gen-cordis-catalog.ts` (verified fresh by `pnpm run verify-cordis-catalog` in doc-sync; regenerate with `pnpm run gen-cordis-catalog`) — the language sides differ only in locale-specific paired document paths. Signature blocks use a `ts cordis-catalog` fence and keep the original source JSDoc; dispatch modes are defined in the [primer](../cordis-primer.md#dispatch-modes), and the framework-inherited `ctx` API lives in [cordis-api/inherited.md](../cordis-api/inherited.md).
|
|
138
138
|
|
|
139
139
|
<a id="ctxdirectorypicker--directorypicker-abstract-seam"></a>
|
|
140
140
|
|
|
@@ -150,7 +150,7 @@ Abstract directory-picking service. Subclass, implement `capability()`, and load
|
|
|
150
150
|
abstract capability(): DirectoryPickerCapability
|
|
151
151
|
```
|
|
152
152
|
|
|
153
|
-
Source: [`packages/host/directory-picker/src/index.ts
|
|
153
|
+
Source: [`packages/host/directory-picker/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/host/directory-picker/src/index.ts)
|
|
154
154
|
|
|
155
155
|
<a id="ctxworkspaceregistry--workspaceregistry"></a>
|
|
156
156
|
|
|
@@ -227,5 +227,5 @@ async resolveByPath(path: string): Promise<Workspace | undefined>
|
|
|
227
227
|
|
|
228
228
|
Types: [SessionId](./core.md)
|
|
229
229
|
|
|
230
|
-
Source: [`packages/workspace/workspace/src/index.ts
|
|
230
|
+
Source: [`packages/workspace/workspace/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/workspace/workspace/src/index.ts)
|
|
231
231
|
<!-- END GENERATED cordis-surface -->
|
|
@@ -28,7 +28,7 @@ This table connects model-visible tool names to the plugin package and service s
|
|
|
28
28
|
| `@deepseek-ai/dsh-tool-bash-persistent` | `bash` | `ctx.tools`, `ctx.terminals`, `an owning Agent at execution time` | `tool/call`, `PTY shell state`, `tool/result` | - | One owner-isolated persistent bash tool; deployment composition supplies the PTY backend and may override the model-facing environment description. |
|
|
29
29
|
| `@deepseek-ai/dsh-tool-pwsh-persistent` | `pwsh` | `ctx.tools`, `ctx.terminals`, `an owning Agent at execution time` | `tool/call`, `PTY shell state`, `tool/result` | - | One owner-isolated persistent pwsh tool, the Windows counterpart of the persistent bash tool; deployment composition supplies a pwsh-dialect PTY backend and may override the model-facing environment description. |
|
|
30
30
|
| `@deepseek-ai/dsh-tool-str-replace-editor` | `str_replace_editor` | `ctx.tools`, `ctx.fs` | `tool/call`, `fs/observed after view presence/absence, edit absence, or successful mutation`, `tool/result` | - | Standalone view/create/unique literal replace/line insert tool over the filesystem seam; it composes with any shell or terminal API. |
|
|
31
|
-
| `@deepseek-ai/dsh-tool-fs` | `edit`, `read`, `read_image`, `write` | `ctx.tools`, `ctx.fs`, `ctx.systemPrompt`, `ctx.attachments (
|
|
31
|
+
| `@deepseek-ai/dsh-tool-fs` | `edit`, `read`, `read_image`, `write` | `ctx.tools`, `ctx.fs`, `ctx.systemPrompt`, `ctx.attachments (image-tool registration)`, `ctx.llm + an image-capable route (image-tool execution)` | `tool/call`, `fs/write-intent or fs/edit-intent for mutations`, `fs/observed after read presence/absence or successful file operation`, `durable attachment (read_image)`, `tool/result` | - | The read-before-write/edit policy is added by `@deepseek-ai/dsh-fs-observation-policy` (an `fs/*` event-gate plugin, no schema change); a deployment that loads these tools is expected to also load it. The image tool is not registered without `ctx.attachments`; its schema is route-independent, and execution refuses unless the exact routed model declares image input. |
|
|
32
32
|
| `@deepseek-ai/dsh-tool-fs-search` | `glob`, `grep` | `ctx.tools`, `ctx.subprocess`, `ctx.systemPrompt` | `tool/call`, `tool/result` | - | glob and grep are unconditional discovery tools that spawn the packaged ripgrep binary (`@vscode/ripgrep`) through ctx.subprocess as ordinary foreground calls (never background jobs) — no host `rg` install and no shell layer. The catalog uses `sampleOverCapGlobResults: true`; deployments must choose that behavior explicitly. Capped results save the complete formatted list through the optional ctx.spillStore backend; returned locators are follow-up-readable/searchable when the backend exposes local paths in co-located deployments. |
|
|
33
33
|
| `@deepseek-ai/dsh-tool-terminal` | `terminal_close`, `terminal_list`, `terminal_open`, `terminal_read`, `terminal_send`, `terminal_signal` | `ctx.tools`, `ctx.terminals`, `ctx.systemPrompt`, `ctx.jobs at call time for run_in_background` | `tool/call`, `tool/result` | - | The six terminal tools are opt-in and complement one-shot shell/filesystem tools. `terminal_send(run_in_background: true)` registers with `ctx.jobs`; TUI, named key sequences, BEL, resize, auto-start, and cross-agent sharing are absent from the schema. |
|
|
34
34
|
| `@deepseek-ai/dsh-tool-goal` | `create_goal`, `get_goal`, `update_goal` | `ctx.tools`, `ctx.agents`, `ctx.goals`, `ctx.systemPrompt`, `a calling Agent in an authorized open turn` | `tool/call`, `goal/change for mutations`, `tool/result` | - | create, edit, pause, and resume require direct-human root authority; complete and blocked also accept the exact current goal round. The default blocked lower bound is three admitted rounds. |
|
|
@@ -699,7 +699,7 @@ Source: [`packages/fs/tool-fs/src/index.ts`](https://github.com/deepseek-ai/deep
|
|
|
699
699
|
|
|
700
700
|
### `read_image`
|
|
701
701
|
|
|
702
|
-
Read a PNG/JPEG/WebP/GIF file and return the image itself. Requires the current model to accept image input.
|
|
702
|
+
Read a PNG/JPEG/WebP/GIF file and return the image itself. Harness validates and downscales large supported images before the next model request, so use this tool directly instead of installing image libraries or creating thumbnails merely to inspect an image. Independent files may be read concurrently in small batches. Requires the current model to accept image input.
|
|
703
703
|
|
|
704
704
|
```json
|
|
705
705
|
{
|
|
@@ -744,7 +744,7 @@ Create or fully replace a UTF-8 text file.
|
|
|
744
744
|
|
|
745
745
|
Source: [`packages/fs/tool-fs/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/fs/tool-fs/src/index.ts)
|
|
746
746
|
|
|
747
|
-
The read-before-write/edit policy is added by `@deepseek-ai/dsh-fs-observation-policy` (an `fs/*` event-gate plugin, no schema change); a deployment that loads these tools is expected to also load it.
|
|
747
|
+
The read-before-write/edit policy is added by `@deepseek-ai/dsh-fs-observation-policy` (an `fs/*` event-gate plugin, no schema change); a deployment that loads these tools is expected to also load it. The image tool is not registered without `ctx.attachments`; its schema is route-independent, and execution refuses unless the exact routed model declares image input.
|
|
748
748
|
|
|
749
749
|
<a id="deepseek-aidsh-tool-fs-search"></a>
|
|
750
750
|
|
|
@@ -4,7 +4,7 @@ editSource: "docs/user/guide/providers.zh.md"
|
|
|
4
4
|
|
|
5
5
|
# 配置模型
|
|
6
6
|
|
|
7
|
-
本指南假定你已按照[根 README](https://github.com/deepseek-ai/deepseek-harness/blob/master/README.md#run)启动 Web UI。模型变更会在下一次请求时生效,不需要重启服务器。
|
|
7
|
+
本指南假定你已按照[根 README](https://github.com/deepseek-ai/deepseek-harness/blob/master/README.zh.md#run)启动 Web UI。模型变更会在下一次请求时生效,不需要重启服务器。
|
|
8
8
|
|
|
9
9
|
## 配置 DeepSeek
|
|
10
10
|
|
|
@@ -136,4 +136,4 @@ llm-pi-ai:
|
|
|
136
136
|
|
|
137
137
|
## 进阶配置
|
|
138
138
|
|
|
139
|
-
自动生成的[插件配置目录](../reference/config-catalog.md)列出每个插件的所有受支持字段与默认值;[`dsh-llm-pi-ai`](../reference/config-catalog.md#deepseek-aidsh-llm-pi-ai) 就是本页所配置的那个提供方段落。[`dsh-llm-pi-ai`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-pi-ai/README.md) 和 [`dsh-llm-deepseek`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-deepseek/README.md) 参考文档负责直接 `settings.yaml` 配置、目录解析、推理控制、凭据与适配器错误。
|
|
139
|
+
自动生成的[插件配置目录](../reference/config-catalog.md)列出每个插件的所有受支持字段与默认值;[`dsh-llm-pi-ai`](../reference/config-catalog.md#deepseek-aidsh-llm-pi-ai) 就是本页所配置的那个提供方段落。[`dsh-llm-pi-ai`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-pi-ai/README.zh.md) 和 [`dsh-llm-deepseek`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/llm/llm-deepseek/README.zh.md) 参考文档负责直接 `settings.yaml` 配置、目录解析、推理控制、凭据与适配器错误。
|
|
@@ -26,7 +26,7 @@ python -m venv .venv
|
|
|
26
26
|
python -m pip install deepseek-harness-sdk
|
|
27
27
|
```
|
|
28
28
|
|
|
29
|
-
安装后的运行时不需要系统提供 Node.js。需要从源码构建运行时或 wheel 包的仓库贡献者应使用 [Python 贡献者工作流](https://github.com/deepseek-ai/deepseek-harness/blob/master/python/development.md)。
|
|
29
|
+
安装后的运行时不需要系统提供 Node.js。需要从源码构建运行时或 wheel 包的仓库贡献者应使用 [Python 贡献者工作流](https://github.com/deepseek-ai/deepseek-harness/blob/master/python/development.zh.md)。
|
|
30
30
|
|
|
31
31
|
## 运行仓库内置示例
|
|
32
32
|
|
|
@@ -103,4 +103,4 @@ print(result.final_response)
|
|
|
103
103
|
|
|
104
104
|
该组合使用 `danger-full-access`。只能在可丢弃的 checkout 或容器内运行:Bash 与编辑器可以修改运行时进程有权访问的任何路径。持久 PTY 后端需要 POSIX 终端环境,因此该组合不支持 Windows agent。
|
|
105
105
|
|
|
106
|
-
准确的组合内容归 [`jsonrpc-agent` 示例参考](https://github.com/deepseek-ai/deepseek-harness/blob/master/examples/jsonrpc-agent/README.md)所有。[Python SDK 参考](https://github.com/deepseek-ai/deepseek-harness/blob/master/python/sdk/README.md)介绍生命周期、结果、通知、运行时选择和配置;[Cordis primer](../reference/cordis-primer.md)介绍组合语法。
|
|
106
|
+
准确的组合内容归 [`jsonrpc-agent` 示例参考](https://github.com/deepseek-ai/deepseek-harness/blob/master/examples/jsonrpc-agent/README.zh.md)所有。[Python SDK 参考](https://github.com/deepseek-ai/deepseek-harness/blob/master/python/sdk/README.zh.md)介绍生命周期、结果、通知、运行时选择和配置;[Cordis primer](../reference/cordis-primer.md)介绍组合语法。
|
|
@@ -4,7 +4,7 @@ editSource: "docs/user/guide/index.zh.md"
|
|
|
4
4
|
|
|
5
5
|
# 使用 Web UI
|
|
6
6
|
|
|
7
|
-
请先按照[根目录 README](https://github.com/deepseek-ai/deepseek-harness/blob/master/README.md#run) 中的说明启动 Web UI;命令会打印其访问地址。本指南从服务器已经运行的状态开始。`dsh` 进程会把启动时所在的目录作为默认文件系统位置;全新的 Web UI 则不会选中任何工作区,你需要添加一个工作区。
|
|
7
|
+
请先按照[根目录 README](https://github.com/deepseek-ai/deepseek-harness/blob/master/README.zh.md#run) 中的说明启动 Web UI;命令会打印其访问地址。本指南从服务器已经运行的状态开始。`dsh` 进程会把启动时所在的目录作为默认文件系统位置;全新的 Web UI 则不会选中任何工作区,你需要添加一个工作区。
|
|
8
8
|
|
|
9
9
|
## 配置模型
|
|
10
10
|
|
|
@@ -28,5 +28,5 @@ Agent(智能体)可以读取和编辑工作区文件、运行命令、委派
|
|
|
28
28
|
|
|
29
29
|
- [配置模型](./providers.md)
|
|
30
30
|
- [使用 Python SDK](./python-sdk.md)
|
|
31
|
-
- [使用其他 CLI 模式](https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.md)
|
|
31
|
+
- [使用其他 CLI 模式](https://github.com/deepseek-ai/deepseek-harness/blob/master/apps/cli/README.zh.md)
|
|
32
32
|
- [开发插件](../develop/basic/index.md)
|
|
@@ -55,6 +55,8 @@ flowchart LR
|
|
|
55
55
|
pkg_credentials["credentials"]
|
|
56
56
|
svc_credentials["ctx.credentials<br/>Credential seam"]
|
|
57
57
|
pkg_credentials_local["credentials-local"]
|
|
58
|
+
pkg_authorization["authorization"]
|
|
59
|
+
svc_authorization["ctx.authorization<br/>Authorization flow registry"]
|
|
58
60
|
pkg_session_telemetry["session-telemetry"]
|
|
59
61
|
svc_sessionTelemetry["ctx.sessionTelemetry<br/>Session telemetry seam"]
|
|
60
62
|
pkg_session_telemetry_otel["session-telemetry-otel"]
|
|
@@ -214,6 +216,7 @@ flowchart LR
|
|
|
214
216
|
pkg_approval --> svc_approval
|
|
215
217
|
pkg_attachment --> svc_attachments
|
|
216
218
|
pkg_attachment_local --> svc_attachments
|
|
219
|
+
pkg_authorization --> svc_authorization
|
|
217
220
|
pkg_bash_local --> svc_shell
|
|
218
221
|
pkg_bash_sandbox --> svc_shell
|
|
219
222
|
pkg_code_runtime --> svc_codeRuntime
|
|
@@ -319,6 +322,7 @@ flowchart LR
|
|
|
319
322
|
svc_approval --> pkg_tools
|
|
320
323
|
svc_attachments --> pkg_host_runtime
|
|
321
324
|
svc_attachments --> pkg_llm_pi_ai
|
|
325
|
+
svc_authorization --> pkg_llm_pi_ai
|
|
322
326
|
svc_clientModules --> pkg_hmr
|
|
323
327
|
svc_codeRuntime --> pkg_tools
|
|
324
328
|
svc_compaction --> pkg_compaction_basic
|
|
@@ -436,6 +440,7 @@ flowchart LR
|
|
|
436
440
|
| `ctx.sessionPersistence` | `seam` | [`session-persistence`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session/session-persistence) | [`session-persistence-jsonl`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session/session-persistence-jsonl), [`session-persistence-sqlite`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session/session-persistence-sqlite) | [`agent-loop`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/core/agent-loop), [`tool-bash`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/shell/tool-bash), [`hooks-claude-code`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/hooks/hooks-claude-code), [`hooks-codex`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/hooks/hooks-codex), [`session-query`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session-query/session-query), [`session-query-sqlite`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session-query/session-query-sqlite), [`message-feedback`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/feedback/message-feedback) | - | 各后端持久化同一套 SessionEvent 词汇;应用在组合时选择后端。 |
|
|
437
441
|
| `ctx.settings` | `seam` | [`settings`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/settings/settings) | [`settings-file`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/settings/settings-file) | [`llm-deepseek`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/llm/llm-deepseek), [`llm-pi-ai`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/llm/llm-pi-ai), `apiproxy` | - | 插件注册命名空间 schema 并解析分层值;提供方存储原始文档。LLM(大语言模型)适配器在用户分区下将其入口配置注册为组合基础;Web 网关提供经过脱敏的分层描述符,并写入用户层。 |
|
|
438
442
|
| `ctx.credentials` | `seam` | [`credentials`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/credentials/credentials) | [`credentials-local`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/credentials/credentials-local) | [`llm-deepseek`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/llm/llm-deepseek), [`llm-pi-ai`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/llm/llm-pi-ai), `apiproxy` | - | 配置携带对机密信息的引用;提供方拥有实际值。消费方按操作解析,因此轮换后的凭据会在紧接着的下一次请求中生效;Web 网关提供不含实际值的视图和只写存储。 |
|
|
443
|
+
| `ctx.authorization` | `seam` | [`authorization`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/credentials/authorization) | - | [`llm-pi-ai`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/llm/llm-pi-ai) | - | flow 由知道如何取得某份凭据的插件注册,并以其写入的记录为键;seam 拥有这段对话与"每个键同时只跑一次尝试"的生命周期,而非协议本身。 |
|
|
439
444
|
| `ctx.sessionTelemetry` | `seam` | [`session-telemetry`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session/session-telemetry) | [`session-telemetry-otel`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session/session-telemetry-otel) | - | - | 该 seam 捕获会话记录、进行脱敏并交给一个后端;没有其他组件消费该服务,其输出会离开当前进程。 |
|
|
440
445
|
| `ctx.storage` | `seam` | [`storage`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/storage/storage) | [`storage-json`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/storage/storage-json), [`storage-sqlite`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/storage/storage-sqlite) | [`storage-domain`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/storage/storage-domain) | - | 各后端以不同名称并列注册;数据形态(领域优先)挂载到枢纽上,并将类型化操作转换为不透明的 KV 单元原语。 |
|
|
441
446
|
| `ctx.storageDomain` | `core` | [`storage-domain`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/storage/storage-domain) | - | [`workspace`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/workspace/workspace), [`message-feedback`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/feedback/message-feedback) | - | 等待所有已配置后端就绪,然后将领域形态发布为一个受生命周期约束的服务,用于类型化持久状态。 |
|