dsh-plugin-dev-kb 1.0.0 → 1.0.2
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/README.md +60 -9
- package/kb/INDEX.md +1 -1
- package/kb/README.md +22 -11
- package/kb/extra/development.md +2 -0
- package/kb/extra/development.zh.md +2 -0
- package/kb/extra/event-producer-consumer.md +9 -9
- package/kb/extra/event-producer-consumer.zh.md +9 -9
- package/kb/extra/i18n/README.md +1 -1
- package/kb/extra/i18n/README.zh.md +1 -1
- package/kb/extra/module-graph.md +251 -210
- package/kb/extra/module-graph.zh.md +251 -210
- package/kb/extra/subsystems/agent-team.md +183 -0
- package/kb/extra/subsystems/agent-team.zh.md +183 -0
- package/kb/extra/subsystems/attachment.md +16 -2
- package/kb/extra/subsystems/attachment.zh.md +16 -2
- package/kb/meta/search-index.json +54 -42
- package/kb/meta/source.json +3 -3
- package/kb/meta/topics.md +1 -1
- package/kb/site/en/guide/providers.md +40 -1
- package/kb/site/en/reference/capability-seams.md +12 -0
- package/kb/site/en/reference/config-catalog.md +238 -72
- package/kb/site/en/reference/index.md +2 -0
- package/kb/site/en/reference/persistence-catalog.md +76 -13
- package/kb/site/en/reference/subsystems/client-modules.md +11 -3
- package/kb/site/en/reference/subsystems/commands.md +28 -5
- package/kb/site/en/reference/subsystems/index.md +1 -0
- package/kb/site/en/reference/subsystems/llm-streaming.md +11 -2
- package/kb/site/en/reference/subsystems/persistence.md +3 -3
- package/kb/site/en/reference/subsystems/plan.md +1 -1
- package/kb/site/en/reference/subsystems/session-reference.md +71 -5
- package/kb/site/en/reference/subsystems/session.md +6 -2
- package/kb/site/en/reference/subsystems/subagent.md +22 -3
- package/kb/site/en/reference/subsystems/web.md +5 -4
- package/kb/site/en/reference/tool-catalog.md +353 -5
- package/kb/site/guide/providers.md +40 -1
- package/kb/site/reference/capability-seams.md +12 -0
- package/kb/site/reference/config-catalog.md +252 -86
- package/kb/site/reference/index.md +2 -0
- package/kb/site/reference/persistence-catalog.md +76 -13
- package/kb/site/reference/subsystems/client-modules.md +11 -3
- package/kb/site/reference/subsystems/commands.md +28 -5
- package/kb/site/reference/subsystems/index.md +1 -0
- package/kb/site/reference/subsystems/llm-streaming.md +11 -2
- package/kb/site/reference/subsystems/persistence.md +3 -3
- package/kb/site/reference/subsystems/plan.md +1 -1
- package/kb/site/reference/subsystems/session-reference.md +71 -5
- package/kb/site/reference/subsystems/session.md +6 -2
- package/kb/site/reference/subsystems/subagent.md +22 -3
- package/kb/site/reference/subsystems/web.md +5 -4
- package/kb/site/reference/tool-catalog.md +352 -5
- package/lib/index.js +113 -0
- package/package.json +14 -2
- package/scripts/rebuild-index.mjs +2 -1
- package/scripts/selfcheck.mjs +30 -0
- package/skills/dsh-plugin-dev-kb.md +2 -2
|
@@ -26,6 +26,7 @@ This table connects model-visible tool names to the plugin package and service s
|
|
|
26
26
|
| `@deepseek-ai/dsh-tool-pwsh` | `pwsh` | `ctx.tools`, `ctx.shell`, `ctx.systemPrompt`, `ctx.shellEnv`, `ctx.jobs at call time for run_in_background` | `tool/call`, `tool/result` | - | The pwsh tool is the PowerShell-dialect consumer of the bash executor seam for Windows compositions (a PowerShell executor such as `@deepseek-ai/dsh-pwsh-local` backs `ctx.shell`); it mirrors the bash tool call-for-call minus sandbox controls — `run_in_background` runs register with the generic `ctx.jobs` runtime and are collected/stopped through the `job_*` tools, and the managed `DSH_*` environment comes from `@deepseek-ai/dsh-shell-env`. Each call runs in a fresh process (no persistent PTY session), with native `C:\...` paths and `$env:NAME` variables. |
|
|
27
27
|
| `@deepseek-ai/dsh-tool-cordis` | `cordis_define`, `cordis_inspect_list`, `cordis_inspect_query`, `cordis_inspect_self`, `cordis_run`, `cordis_stop`, `cordis_undefine` | `ctx.tools`, `ctx.dynamicCordisRunner` | `tool/call`, `tool/result`, `process-local dynamic package lifecycle` | - | Not in any shipped tree (a deliberate opt-in — dynamic package code reaches the real runtime, see .agents/notes/implemented/feature/2026-07-08-self-referential-cordis-toolset.md). The toolset injects `ctx.dynamicCordisRunner` from `@deepseek-ai/dsh-cordis-host-runner`, which owns the definition registry and the vm sandbox; a composition missing it never activates the tools. A running package may register ADDITIONAL model-visible tools until it is stopped, undefined, or DSH restarts; a full changed request header logs those tool-set changes. |
|
|
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
|
+
| `@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. |
|
|
29
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. |
|
|
30
31
|
| `@deepseek-ai/dsh-tool-fs` | `edit`, `read`, `read_image`, `write` | `ctx.tools`, `ctx.fs`, `ctx.systemPrompt`, `ctx.attachments (read_image registration)`, `ctx.llm + an image-capable route (read_image 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. `read_image` is not registered without `ctx.attachments`; its schema is route-independent, and execution refuses unless the exact routed model declares image input. |
|
|
31
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. |
|
|
@@ -40,6 +41,7 @@ This table connects model-visible tool names to the plugin package and service s
|
|
|
40
41
|
| `@deepseek-ai/dsh-tool-subagent-control` | `interrupt_agent`, `list_agents`, `send_message` | `ctx.tools`, `ctx.subagents`, `ctx.agents and ctx.sessionProjections (list_agents only)` | `tool/call`, `tool/result`, `child session events through ctx.subagents` | - | The globally named control tools over continuable background subagents: provider-bound `tool-subagent` instances register distinct delegation tools, while this package registers `send_message` and `interrupt_agent` once, plus `list_agents` from its separately loaded `/list-agents` plugin (whose catalog rows use the sessionProjections and live Agent registries). |
|
|
41
42
|
| `@deepseek-ai/dsh-tool-subagent-report` | `report` | `ctx.subagents`, `ctx.systemPrompt`, `a live continuable in-process child Agent` | `tool/call`, `tool/result`, `a user-role message in the direct parent session` | - | Registered per continuable in-process child rather than globally, so this schema is visible only inside such a child and survives its global `toolFilter`. The same contribution installs the child-scoped `tool:report` prompt section, which this catalog does not render. The parent-facing `send_message` tool is installed independently. |
|
|
42
43
|
| `@deepseek-ai/dsh-tool-jobs` | `job_kill`, `job_list`, `job_output` | `ctx.tools`, `ctx.jobs`, `ctx.systemPrompt` | `tool/call`, `tool/result`, `user/message via agent.inject() for background completion notices` | - | The kind-agnostic background-job controller: background bash commands, PTY sends, and subagents are read, listed, and killed through the same three tools. Loading the plugin attaches the controller that arms producers' `ctx.jobs.start()`. |
|
|
44
|
+
| `@deepseek-ai/dsh-experimental-tool-agent-team` | `followup_task`, `interrupt_agent`, `list_agents`, `send_message`, `spawn_teammate`, `team_task_create`, `team_task_get`, `team_task_list`, `team_task_update`, `wait_agent` | `ctx.tools`, `ctx.systemPrompt`, `ctx.agentTeams`, `an exact live Team member Agent` | `tool/call`, `team/member`, `team/message/queued`, `team/message/delivered`, `team/task`, `tool/result` | - | All ten tools are scoped to implicit Team Leads and durable teammates. The shipped dsh-base bundle keeps the package disabled; the documented Agent Teams profile patch enables it while disabling the legacy continuable-child control names. |
|
|
43
45
|
| `@deepseek-ai/dsh-tool-todo` | `todo_write` | `ctx.tools`, `owning Agent session` | `tool/call`, `todo/write`, `tool/result` | - | todo_write is session-owned state; UIs render the latest todo/write event as a checklist. `allowParallelInProgress` is required with no default, so the catalog states its choice: `true`, whose description invites several `in_progress` items. A deployment choosing `false` receives the same tool with a description asking for exactly one active task. |
|
|
44
46
|
| `@deepseek-ai/dsh-tool-workflow` | `workflow` | `ctx.tools`, `ctx.workflowEngine`, `ctx.systemPrompt`, `a calling Agent (exec.agent parents the script children)` | `tool/call`, `tool/result` | - | - |
|
|
45
47
|
| `@deepseek-ai/dsh-tool-web` | `web_fetch`, `web_search` | `ctx.tools`, `ctx.web`, `ctx.systemPrompt` | `tool/call`, `tool/result` | - | web_search and web_fetch keep provider selection behind ctx.web so model-visible schemas stay stable across backend swaps. |
|
|
@@ -530,6 +532,33 @@ Source: [`packages/shell/tool-bash-persistent/src/index.ts`](https://github.com/
|
|
|
530
532
|
|
|
531
533
|
One owner-isolated persistent bash tool; deployment composition supplies the PTY backend and may override the model-facing environment description.
|
|
532
534
|
|
|
535
|
+
<a id="deepseek-aidsh-tool-pwsh-persistent"></a>
|
|
536
|
+
|
|
537
|
+
## `@deepseek-ai/dsh-tool-pwsh-persistent`
|
|
538
|
+
|
|
539
|
+
### `pwsh`
|
|
540
|
+
|
|
541
|
+
Run commands in a persistent PowerShell shell. State, including the current directory and exported environment variables, persists across calls for this agent.
|
|
542
|
+
|
|
543
|
+
```json
|
|
544
|
+
{
|
|
545
|
+
"type": "object",
|
|
546
|
+
"properties": {
|
|
547
|
+
"command": {
|
|
548
|
+
"type": "string",
|
|
549
|
+
"description": "The PowerShell command to run. Relative path is preferred in the command."
|
|
550
|
+
}
|
|
551
|
+
},
|
|
552
|
+
"required": [
|
|
553
|
+
"command"
|
|
554
|
+
]
|
|
555
|
+
}
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
Source: [`packages/shell/tool-pwsh-persistent/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/shell/tool-pwsh-persistent/src/index.ts)
|
|
559
|
+
|
|
560
|
+
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.
|
|
561
|
+
|
|
533
562
|
<a id="deepseek-aidsh-tool-str-replace-editor"></a>
|
|
534
563
|
|
|
535
564
|
## `@deepseek-ai/dsh-tool-str-replace-editor`
|
|
@@ -1683,6 +1712,322 @@ Source: [`packages/jobs/tool-jobs/src/index.ts`](https://github.com/deepseek-ai/
|
|
|
1683
1712
|
|
|
1684
1713
|
The kind-agnostic background-job controller: background bash commands, PTY sends, and subagents are read, listed, and killed through the same three tools. Loading the plugin attaches the controller that arms producers' `ctx.jobs.start()`.
|
|
1685
1714
|
|
|
1715
|
+
<a id="deepseek-aidsh-experimental-tool-agent-team"></a>
|
|
1716
|
+
|
|
1717
|
+
## `@deepseek-ai/dsh-experimental-tool-agent-team`
|
|
1718
|
+
|
|
1719
|
+
### `followup_task`
|
|
1720
|
+
|
|
1721
|
+
Send a durable follow-up task to another Team member and start a turn when needed.
|
|
1722
|
+
|
|
1723
|
+
```json
|
|
1724
|
+
{
|
|
1725
|
+
"type": "object",
|
|
1726
|
+
"properties": {
|
|
1727
|
+
"target": {
|
|
1728
|
+
"type": "string",
|
|
1729
|
+
"description": "Team member name, or lead."
|
|
1730
|
+
},
|
|
1731
|
+
"message": {
|
|
1732
|
+
"type": "string",
|
|
1733
|
+
"description": "Self-contained message for the target."
|
|
1734
|
+
}
|
|
1735
|
+
},
|
|
1736
|
+
"required": [
|
|
1737
|
+
"target",
|
|
1738
|
+
"message"
|
|
1739
|
+
]
|
|
1740
|
+
}
|
|
1741
|
+
```
|
|
1742
|
+
|
|
1743
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
1744
|
+
|
|
1745
|
+
### `interrupt_agent`
|
|
1746
|
+
|
|
1747
|
+
Interrupt one teammate's current turn while preserving its pending inbox. Team Lead only.
|
|
1748
|
+
|
|
1749
|
+
```json
|
|
1750
|
+
{
|
|
1751
|
+
"type": "object",
|
|
1752
|
+
"properties": {
|
|
1753
|
+
"target": {
|
|
1754
|
+
"type": "string",
|
|
1755
|
+
"description": "Teammate name."
|
|
1756
|
+
}
|
|
1757
|
+
},
|
|
1758
|
+
"required": [
|
|
1759
|
+
"target"
|
|
1760
|
+
]
|
|
1761
|
+
}
|
|
1762
|
+
```
|
|
1763
|
+
|
|
1764
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
1765
|
+
|
|
1766
|
+
### `list_agents`
|
|
1767
|
+
|
|
1768
|
+
List the Lead and every durable teammate with current runtime status.
|
|
1769
|
+
|
|
1770
|
+
```json
|
|
1771
|
+
{
|
|
1772
|
+
"type": "object",
|
|
1773
|
+
"properties": {}
|
|
1774
|
+
}
|
|
1775
|
+
```
|
|
1776
|
+
|
|
1777
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
1778
|
+
|
|
1779
|
+
### `send_message`
|
|
1780
|
+
|
|
1781
|
+
Send durable information to another Team member without starting an idle member.
|
|
1782
|
+
|
|
1783
|
+
```json
|
|
1784
|
+
{
|
|
1785
|
+
"type": "object",
|
|
1786
|
+
"properties": {
|
|
1787
|
+
"target": {
|
|
1788
|
+
"type": "string",
|
|
1789
|
+
"description": "Team member name, or lead."
|
|
1790
|
+
},
|
|
1791
|
+
"message": {
|
|
1792
|
+
"type": "string",
|
|
1793
|
+
"description": "Self-contained message for the target."
|
|
1794
|
+
}
|
|
1795
|
+
},
|
|
1796
|
+
"required": [
|
|
1797
|
+
"target",
|
|
1798
|
+
"message"
|
|
1799
|
+
]
|
|
1800
|
+
}
|
|
1801
|
+
```
|
|
1802
|
+
|
|
1803
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
1804
|
+
|
|
1805
|
+
### `spawn_teammate`
|
|
1806
|
+
|
|
1807
|
+
Create one named, durable teammate. Only the Team Lead may call this tool.
|
|
1808
|
+
|
|
1809
|
+
```json
|
|
1810
|
+
{
|
|
1811
|
+
"type": "object",
|
|
1812
|
+
"properties": {
|
|
1813
|
+
"name": {
|
|
1814
|
+
"type": "string",
|
|
1815
|
+
"description": "Unique lower-kebab-case teammate name."
|
|
1816
|
+
},
|
|
1817
|
+
"description": {
|
|
1818
|
+
"type": "string",
|
|
1819
|
+
"description": "Short description of the delegated responsibility."
|
|
1820
|
+
},
|
|
1821
|
+
"prompt": {
|
|
1822
|
+
"type": "string",
|
|
1823
|
+
"description": "Complete initial task for the teammate."
|
|
1824
|
+
},
|
|
1825
|
+
"context": {
|
|
1826
|
+
"type": "string",
|
|
1827
|
+
"description": "fresh starts without Lead history; fork inherits completed Lead turns. Defaults to fresh.",
|
|
1828
|
+
"enum": [
|
|
1829
|
+
"fresh",
|
|
1830
|
+
"fork"
|
|
1831
|
+
]
|
|
1832
|
+
}
|
|
1833
|
+
},
|
|
1834
|
+
"required": [
|
|
1835
|
+
"name",
|
|
1836
|
+
"description",
|
|
1837
|
+
"prompt"
|
|
1838
|
+
]
|
|
1839
|
+
}
|
|
1840
|
+
```
|
|
1841
|
+
|
|
1842
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
1843
|
+
|
|
1844
|
+
### `team_task_create`
|
|
1845
|
+
|
|
1846
|
+
Create one unowned pending task on the shared Team task board.
|
|
1847
|
+
|
|
1848
|
+
```json
|
|
1849
|
+
{
|
|
1850
|
+
"type": "object",
|
|
1851
|
+
"properties": {
|
|
1852
|
+
"subject": {
|
|
1853
|
+
"type": "string",
|
|
1854
|
+
"description": "Concise task title."
|
|
1855
|
+
},
|
|
1856
|
+
"description": {
|
|
1857
|
+
"type": "string",
|
|
1858
|
+
"description": "Complete task details and acceptance criteria."
|
|
1859
|
+
},
|
|
1860
|
+
"blocked_by": {
|
|
1861
|
+
"type": "array",
|
|
1862
|
+
"description": "Task ids that must complete first.",
|
|
1863
|
+
"items": {
|
|
1864
|
+
"type": "string"
|
|
1865
|
+
}
|
|
1866
|
+
},
|
|
1867
|
+
"write_scopes": {
|
|
1868
|
+
"type": "array",
|
|
1869
|
+
"description": "Advisory workspace-relative file or directory prefixes this task expects to modify.",
|
|
1870
|
+
"items": {
|
|
1871
|
+
"type": "string"
|
|
1872
|
+
}
|
|
1873
|
+
}
|
|
1874
|
+
},
|
|
1875
|
+
"required": [
|
|
1876
|
+
"subject",
|
|
1877
|
+
"description"
|
|
1878
|
+
]
|
|
1879
|
+
}
|
|
1880
|
+
```
|
|
1881
|
+
|
|
1882
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
1883
|
+
|
|
1884
|
+
### `team_task_get`
|
|
1885
|
+
|
|
1886
|
+
Read the complete latest value of one shared task before changing or executing it.
|
|
1887
|
+
|
|
1888
|
+
```json
|
|
1889
|
+
{
|
|
1890
|
+
"type": "object",
|
|
1891
|
+
"properties": {
|
|
1892
|
+
"task_id": {
|
|
1893
|
+
"type": "string",
|
|
1894
|
+
"description": "Shared task id."
|
|
1895
|
+
}
|
|
1896
|
+
},
|
|
1897
|
+
"required": [
|
|
1898
|
+
"task_id"
|
|
1899
|
+
]
|
|
1900
|
+
}
|
|
1901
|
+
```
|
|
1902
|
+
|
|
1903
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
1904
|
+
|
|
1905
|
+
### `team_task_list`
|
|
1906
|
+
|
|
1907
|
+
List shared tasks, including readiness, owner, revision, blockers, and write-scope warnings.
|
|
1908
|
+
|
|
1909
|
+
```json
|
|
1910
|
+
{
|
|
1911
|
+
"type": "object",
|
|
1912
|
+
"properties": {
|
|
1913
|
+
"status": {
|
|
1914
|
+
"type": "string",
|
|
1915
|
+
"description": "Optional exact status filter.",
|
|
1916
|
+
"enum": [
|
|
1917
|
+
"pending",
|
|
1918
|
+
"in_progress",
|
|
1919
|
+
"completed"
|
|
1920
|
+
]
|
|
1921
|
+
},
|
|
1922
|
+
"owner": {
|
|
1923
|
+
"type": "string",
|
|
1924
|
+
"description": "Optional member-name filter; use unowned for tasks without an owner."
|
|
1925
|
+
},
|
|
1926
|
+
"ready": {
|
|
1927
|
+
"type": "boolean",
|
|
1928
|
+
"description": "Optional readiness filter."
|
|
1929
|
+
},
|
|
1930
|
+
"cursor": {
|
|
1931
|
+
"type": "integer",
|
|
1932
|
+
"description": "Zero-based result offset. Defaults to 0."
|
|
1933
|
+
},
|
|
1934
|
+
"limit": {
|
|
1935
|
+
"type": "integer",
|
|
1936
|
+
"description": "Number of rows, 1 through 100. Defaults to 50."
|
|
1937
|
+
}
|
|
1938
|
+
}
|
|
1939
|
+
}
|
|
1940
|
+
```
|
|
1941
|
+
|
|
1942
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
1943
|
+
|
|
1944
|
+
### `team_task_update`
|
|
1945
|
+
|
|
1946
|
+
Compare-and-set a shared task action using the latest revision from team_task_get or team_task_list.
|
|
1947
|
+
|
|
1948
|
+
```json
|
|
1949
|
+
{
|
|
1950
|
+
"type": "object",
|
|
1951
|
+
"properties": {
|
|
1952
|
+
"task_id": {
|
|
1953
|
+
"type": "string",
|
|
1954
|
+
"description": "Shared task id."
|
|
1955
|
+
},
|
|
1956
|
+
"expected_revision": {
|
|
1957
|
+
"type": "integer",
|
|
1958
|
+
"description": "Current task revision used as the CAS precondition."
|
|
1959
|
+
},
|
|
1960
|
+
"action": {
|
|
1961
|
+
"type": "string",
|
|
1962
|
+
"description": "Task transition to apply.",
|
|
1963
|
+
"enum": [
|
|
1964
|
+
"claim",
|
|
1965
|
+
"release",
|
|
1966
|
+
"edit",
|
|
1967
|
+
"set_dependencies",
|
|
1968
|
+
"complete",
|
|
1969
|
+
"reopen",
|
|
1970
|
+
"reassign",
|
|
1971
|
+
"delete"
|
|
1972
|
+
]
|
|
1973
|
+
},
|
|
1974
|
+
"subject": {
|
|
1975
|
+
"type": "string",
|
|
1976
|
+
"description": "Replacement title for edit."
|
|
1977
|
+
},
|
|
1978
|
+
"description": {
|
|
1979
|
+
"type": "string",
|
|
1980
|
+
"description": "Replacement details for edit."
|
|
1981
|
+
},
|
|
1982
|
+
"blocked_by": {
|
|
1983
|
+
"type": "array",
|
|
1984
|
+
"description": "Complete blocker list for set_dependencies.",
|
|
1985
|
+
"items": {
|
|
1986
|
+
"type": "string"
|
|
1987
|
+
}
|
|
1988
|
+
},
|
|
1989
|
+
"write_scopes": {
|
|
1990
|
+
"type": "array",
|
|
1991
|
+
"description": "Replacement advisory write scopes for edit.",
|
|
1992
|
+
"items": {
|
|
1993
|
+
"type": "string"
|
|
1994
|
+
}
|
|
1995
|
+
},
|
|
1996
|
+
"owner": {
|
|
1997
|
+
"type": "string",
|
|
1998
|
+
"description": "Member name for Lead-only reassign; omit to unassign."
|
|
1999
|
+
}
|
|
2000
|
+
},
|
|
2001
|
+
"required": [
|
|
2002
|
+
"task_id",
|
|
2003
|
+
"expected_revision",
|
|
2004
|
+
"action"
|
|
2005
|
+
]
|
|
2006
|
+
}
|
|
2007
|
+
```
|
|
2008
|
+
|
|
2009
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
2010
|
+
|
|
2011
|
+
### `wait_agent`
|
|
2012
|
+
|
|
2013
|
+
Wait for the next teammate status, mailbox, or shared-task change after this call starts. This never wakes inactive members and returns noProgress immediately when no other member is running or provisioning. Re-list after wakeup or timeout instead of polling.
|
|
2014
|
+
|
|
2015
|
+
```json
|
|
2016
|
+
{
|
|
2017
|
+
"type": "object",
|
|
2018
|
+
"properties": {
|
|
2019
|
+
"timeout_ms": {
|
|
2020
|
+
"type": "integer",
|
|
2021
|
+
"description": "Wait duration in milliseconds, from 10000 through 3600000. Defaults to 30000."
|
|
2022
|
+
}
|
|
2023
|
+
}
|
|
2024
|
+
}
|
|
2025
|
+
```
|
|
2026
|
+
|
|
2027
|
+
Source: [`packages/experimental/tool-agent-team/src/index.ts`](https://github.com/deepseek-ai/deepseek-harness/blob/master/packages/experimental/tool-agent-team/src/index.ts)
|
|
2028
|
+
|
|
2029
|
+
All ten tools are scoped to implicit Team Leads and durable teammates. The shipped dsh-base bundle keeps the package disabled; the documented Agent Teams profile patch enables it while disabling the legacy continuable-child control names.
|
|
2030
|
+
|
|
1686
2031
|
<a id="deepseek-aidsh-tool-todo"></a>
|
|
1687
2032
|
|
|
1688
2033
|
## `@deepseek-ai/dsh-tool-todo`
|
|
@@ -1855,19 +2200,22 @@ Source: [`packages/web/tool-web/src/index.ts`](https://github.com/deepseek-ai/de
|
|
|
1855
2200
|
|
|
1856
2201
|
### `web_search`
|
|
1857
2202
|
|
|
1858
|
-
Search the web for current information. Returns an optional summary answer and a list of source URLs.
|
|
2203
|
+
Search the web for current information. Provide 1–4 queries in the required queries array. Returns an optional summary answer and a list of source URLs.
|
|
1859
2204
|
|
|
1860
2205
|
```json
|
|
1861
2206
|
{
|
|
1862
2207
|
"type": "object",
|
|
1863
2208
|
"properties": {
|
|
1864
|
-
"
|
|
1865
|
-
"type": "
|
|
1866
|
-
"description": "
|
|
2209
|
+
"queries": {
|
|
2210
|
+
"type": "array",
|
|
2211
|
+
"description": "Required search queries; accepts 1–4 items and merges their results.",
|
|
2212
|
+
"items": {
|
|
2213
|
+
"type": "string"
|
|
2214
|
+
}
|
|
1867
2215
|
}
|
|
1868
2216
|
},
|
|
1869
2217
|
"required": [
|
|
1870
|
-
"
|
|
2218
|
+
"queries"
|
|
1871
2219
|
]
|
|
1872
2220
|
}
|
|
1873
2221
|
```
|
|
@@ -81,6 +81,42 @@ llm-pi-ai:
|
|
|
81
81
|
|
|
82
82
|
这两个字段都是对你端点的断言,而不是对它的检查。声明了端点并不提供的图片能力的模型不会在这里被拦下,改由提供方拒绝该请求。
|
|
83
83
|
|
|
84
|
+
### 请求兼容性
|
|
85
|
+
|
|
86
|
+
网关可能持有可用的密钥、地址也通得到,却仍然拒绝每一个请求。pi-ai 依据端点的 URL 决定请求的形状——系统提示词由哪个角色承载、输出上限写在哪个字段、思考级别如何传输——而对于它无法识别的地址,会当作 OpenAI 本身来对待。多数 OpenAI 兼容网关至少会拒绝 OpenAI 所接受的某一样东西。
|
|
87
|
+
|
|
88
|
+
其中两样占了绝大多数。声明了推理能力的模型,其系统提示词会以 `role: "developer"` 发出,很多网关直接拒绝;输出上限则写作 `max_completion_tokens`,只认 `max_tokens` 的服务端会拒绝。表单里没有这两个字段;请在 `$DSH_HOME/settings.yaml` 的路由上更正:
|
|
89
|
+
|
|
90
|
+
```yaml
|
|
91
|
+
llm-pi-ai:
|
|
92
|
+
providers:
|
|
93
|
+
my-gateway:
|
|
94
|
+
apiKeyEnv: GATEWAY_API_KEY
|
|
95
|
+
api: openai-completions
|
|
96
|
+
baseURL: https://gateway.example/v1
|
|
97
|
+
compat:
|
|
98
|
+
supportsDeveloperRole: false
|
|
99
|
+
maxTokensField: max_tokens
|
|
100
|
+
models:
|
|
101
|
+
- id: my-model
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
路由的 `compat` 是其模型的默认值,模型自身的则逐字段胜出,因此更正某一个模型无需重述整条路由:
|
|
105
|
+
|
|
106
|
+
```yaml
|
|
107
|
+
models:
|
|
108
|
+
- id: my-model
|
|
109
|
+
- id: my-reasoner
|
|
110
|
+
compat:
|
|
111
|
+
thinkingFormat: deepseek
|
|
112
|
+
```
|
|
113
|
+
|
|
114
|
+
两者都未设置的字段,沿用已安装 catalog 为该模型记录的值;catalog 也未描述的,落到 pi-ai 的检测。凡是写下的开关都要给值:冒号后留空的键(`supportsDeveloperRole:`)会被拒绝而不是被忽略,因为空值会抹掉 catalog 已知的信息,却又没有给出任何替代。任何协议都不接受的名字同样会被拒绝,报错会列出可用的那些。
|
|
115
|
+
|
|
116
|
+
每个开关归属于声明了它的那些协议,因此在某个 `api` 上合法的开关,在另一个上可能被拒绝——报错会点名该协议实际提供哪些。与上面的 `input` 一样,开关陈述的是关于你的端点的一个断言,而不是对它的检查:设置一个网关其实并不需要的开关,只是发出一个不同的请求而已。
|
|
117
|
+
|
|
118
|
+
全部开关、各自接受的取值,以及接受它们的协议,都列在[生成的 `dsh-llm-pi-ai` 配置参考](../reference/config-catalog.md#deepseek-aidsh-llm-pi-ai)的 `PiAiCompatProfile` 之下——该参考派生自源码,因此不会落后于适配器实际接受的内容。
|
|
119
|
+
|
|
84
120
|
## 选择模型
|
|
85
121
|
|
|
86
122
|
已配置的提供方会出现在模型选择器中。选择模型也会将其设为新会话的默认值。已发送过请求的会话会保留自身日志中记录的模型。
|
|
@@ -92,9 +128,12 @@ llm-pi-ai:
|
|
|
92
128
|
- **`MISSING_CREDENTIAL`**:通过模型页存储提供方密钥,或提供被引用的环境变量。
|
|
93
129
|
- **`UNKNOWN_MODEL`**:选择已配置的模型,或向自定义提供方添加缺失的模型。
|
|
94
130
|
- **获取可用模型返回 401**:检查密钥。模型发现会调用 OpenAI 兼容的 `GET /models` 端点;对于不提供该端点的服务,请手动输入模型。
|
|
131
|
+
- **密钥与地址都正确,网关却拒绝每一个请求**:它的请求形状与 OpenAI 不同。先在路由上设 `compat.supportsDeveloperRole: false` 与 `compat.maxTokensField: max_tokens`。
|
|
132
|
+
- **只有推理模型失败**:pi-ai 把它们的系统提示词以 `developer` 角色发出,而网关拒绝该角色。设 `compat.supportsDeveloperRole: false`。
|
|
133
|
+
- **某个 compat 开关因没有值而被拒绝**:冒号后什么都没写。给它一个值,或删掉该键以沿用已安装 catalog 的值。
|
|
95
134
|
- **图片在发送前被拒绝**:该模型未声明图片模态。请给自定义提供方的模型加上 `input: [text, image]`;DeepSeek 自身的 chat-completions 路由是纯文本的,且无法通过配置改变。
|
|
96
135
|
- **提供方拒绝了带图片的请求**:该模型声明了其端点实际并不提供的图片能力。请从授予它图片能力的那个列表中移除 `image`——可能是模型的 `input`,也可能是路由的 `defaultInput`——然后开启新会话:附加的图片会留在会话日志里,因此在会话离开它之前,同一个请求会不断重复。
|
|
97
136
|
|
|
98
137
|
## 进阶配置
|
|
99
138
|
|
|
100
|
-
自动生成的[插件配置目录](../reference/config-catalog.md)
|
|
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` 配置、目录解析、推理控制、凭据与适配器错误。
|
|
@@ -70,6 +70,9 @@ flowchart LR
|
|
|
70
70
|
svc_sessionQuery["ctx.sessionQuery<br/>Session reads, traces, filters, and search"]
|
|
71
71
|
pkg_session_reference["session-reference"]
|
|
72
72
|
pkg_tool_session_query["tool-session-query"]
|
|
73
|
+
pkg_file_reference["file-reference"]
|
|
74
|
+
svc_fileReferences["ctx.fileReferences<br/>File reference discovery"]
|
|
75
|
+
pkg_file_reference_local["file-reference-local"]
|
|
73
76
|
svc_sessionReferenceResolver["ctx.sessionReferenceResolver<br/>Cross-session snapshot preparation"]
|
|
74
77
|
pkg_session_title["session-title"]
|
|
75
78
|
svc_sessionTitle["ctx.sessionTitle<br/>Log-backed session titles"]
|
|
@@ -161,6 +164,9 @@ flowchart LR
|
|
|
161
164
|
pkg_subagent_dsh_sdk["subagent-dsh-sdk"]
|
|
162
165
|
pkg_tool_subagent_control["tool-subagent-control"]
|
|
163
166
|
pkg_tool_ralph["tool-ralph"]
|
|
167
|
+
pkg_agent_team["agent-team"]
|
|
168
|
+
svc_agentTeams["ctx.agentTeams<br/>Agent Teams coordination domain"]
|
|
169
|
+
pkg_tool_agent_team["tool-agent-team"]
|
|
164
170
|
pkg_jobs["jobs"]
|
|
165
171
|
svc_jobs["ctx.jobs<br/>Background job registry"]
|
|
166
172
|
pkg_jobs_local["jobs-local"]
|
|
@@ -202,6 +208,7 @@ flowchart LR
|
|
|
202
208
|
pkg_agent_default_model --> svc_agentDefaultModel
|
|
203
209
|
pkg_agent_loop --> svc_agentLoop
|
|
204
210
|
pkg_agent_presets --> svc_agentPresets
|
|
211
|
+
pkg_agent_team --> svc_agentTeams
|
|
205
212
|
pkg_api_gateway --> svc_typertGateway
|
|
206
213
|
pkg_apiproxy --> svc_apiProxy
|
|
207
214
|
pkg_approval --> svc_approval
|
|
@@ -223,6 +230,8 @@ flowchart LR
|
|
|
223
230
|
pkg_directory_picker_browse --> svc_directoryPicker
|
|
224
231
|
pkg_directory_picker_native --> svc_directoryPicker
|
|
225
232
|
pkg_e2b --> svc_e2b
|
|
233
|
+
pkg_file_reference --> svc_fileReferences
|
|
234
|
+
pkg_file_reference_local --> svc_fileReferences
|
|
226
235
|
pkg_fs --> svc_fs
|
|
227
236
|
pkg_fs_e2b --> svc_fs
|
|
228
237
|
pkg_fs_local --> svc_fs
|
|
@@ -301,6 +310,7 @@ flowchart LR
|
|
|
301
310
|
svc_agentDefaultModel --> pkg_headless
|
|
302
311
|
svc_agentDefaultModel --> pkg_host_apiproxy
|
|
303
312
|
svc_agentLoop --> pkg_agent_spine_demo
|
|
313
|
+
svc_agentTeams --> pkg_tool_agent_team
|
|
304
314
|
svc_agents --> pkg_acp
|
|
305
315
|
svc_agents --> pkg_agent_loop
|
|
306
316
|
svc_agents --> pkg_subagent_inprocess
|
|
@@ -432,6 +442,7 @@ flowchart LR
|
|
|
432
442
|
| `ctx.messageFeedback` | `core` | [`message-feedback`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/feedback/message-feedback) | - | - | - | 拥有本地逐 assistant 消息反馈、生命周期与目标校验、逐条目 compare-and-set 及 Host 一元 Remote 契约,且不进入 Session 历史或遥测。 |
|
|
433
443
|
| `ctx.workspaceRegistry` | `core` | [`workspace`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/workspace/workspace) | - | `apiproxy` | - | 通过领域设施拥有带 WorkspaceId 品牌类型的记录;稳定的 sessionIds 账户驱动 Host RPC 与 GUI 投影。 |
|
|
434
444
|
| `ctx.sessionQuery` | `seam` | [`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) | [`session-reference`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/context/session-reference), [`tool-session-query`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session-query/tool-session-query) | - | 该接口提供精确读取、过滤和追踪;具体后端还提供全文协调、排序、摘要片段和游标世代,而模型消费方负责工作区权限与不含游标的渲染。 |
|
|
445
|
+
| `ctx.fileReferences` | `seam` | [`file-reference`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/context/file-reference) | [`file-reference-local`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/context/file-reference-local) | - | - | 该接口通过其一元 Remote 契约返回指定 Agent cwd 内仅含路径的补全候选;提供方负责命名空间访问和排序,但不会读取文件内容。 |
|
|
435
446
|
| `ctx.sessionReferenceResolver` | `core` | [`session-reference`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/context/session-reference) | - | - | - | 将当前表层中有界的对话快照投影为持久但不可信的消息上下文;Host 适配器负责提及语法。 |
|
|
436
447
|
| `ctx.sessionTitle` | `seam` | [`session-title`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session/session-title) | [`session-title-first-prompt-llm`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session/session-title-first-prompt-llm), [`session-title-all-prompts-llm`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/session/session-title-all-prompts-llm) | - | - | 负责确定性回退、最新标题折叠区,以及唯一的可选异步提供方注册。 |
|
|
437
448
|
| `ctx.systemPrompt` | `core` | [`system-prompt`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/core/system-prompt) | - | [`agent-loop`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/core/agent-loop), [`tools`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/core/tools), [`tool-fs`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/fs/tool-fs), [`tool-terminal`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/terminal/tool-terminal), [`tool-web`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/web/tool-web) | - | 为每个步骤收集提示词各部分和面向模型的工具 schema。 |
|
|
@@ -460,6 +471,7 @@ flowchart LR
|
|
|
460
471
|
| `ctx.fs` | `seam` | [`fs`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/fs/fs) | [`fs-local`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/fs/fs-local), [`fs-sandbox`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/fs/fs-sandbox), [`fs-e2b`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/e2b/fs-e2b) | [`tool-fs`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/fs/tool-fs) | [`fs-observation-policy`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/fs/fs-observation-policy) | tool-fs 通过 ctx.fs 执行读取/写入/编辑;fs-sandbox 按共享沙箱模式限制变更;fs-observation-policy 通过 fs/* 事件门禁贡献基于观测状态的检查。 |
|
|
461
472
|
| `ctx.compaction` | `seam` | [`compaction`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/compaction/compaction) | [`compaction-basic`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/compaction/compaction-basic) | [`compaction-basic`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/compaction/compaction-basic) | - | 基础后端消费步骤后的压力事件和请求错误恢复事件;不存在面向模型的压缩工具。 |
|
|
462
473
|
| `ctx.subagents` | `seam` | [`subagent`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/subagent) | [`subagent-spawn-in-process`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/subagent-spawn-in-process), [`subagent-fork-in-process`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/subagent-fork-in-process), [`subagent-acp`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/subagent-acp), [`subagent-codex`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/subagent-codex), [`subagent-claude-code`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/subagent-claude-code), [`subagent-dsh-sdk`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/subagent-dsh-sdk) | [`tool-subagent`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/tool-subagent), [`tool-subagent-control`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/tool-subagent-control), [`tool-ralph`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/workflow/tool-ralph) | - | 提供方实现传输;该服务还负责可选的、基于 Activation 的延续编排,tool-subagent 选择一次性或可延续委派,tool-subagent-control 传递后续消息,而 tool-ralph 要求一条全新的结构化输出路由。 |
|
|
474
|
+
| `ctx.agentTeams` | `core` | `agent-team` | - | `tool-agent-team` | - | 负责隐式 Root roster、持久 peer mailbox、共享任务 DAG 与 continuable child 生命周期;tool-agent-team 提供作用域化模型策略和控制工具。 |
|
|
463
475
|
| `ctx.jobs` | `seam` | [`jobs`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/jobs/jobs) | [`jobs-local`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/jobs/jobs-local) | [`tool-bash`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/shell/tool-bash), [`tool-terminal`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/terminal/tool-terminal), [`tool-subagent`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/subagent/tool-subagent), [`tool-jobs`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/jobs/tool-jobs) | - | 生产方(后台 bash、PTY 发送和 subagent 委派)登记正在运行的工作;tool-jobs 是面向模型的控制器,用于读取、列出和终止这些工作;jobs-local 是进程本地注册表。 |
|
|
464
476
|
| `ctx.web` | `seam` | [`web`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/web/web) | [`web-search-exa`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/web/web-search-exa), [`web-search-perplexity`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/web/web-search-perplexity), [`web-search-deepseek`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/web/web-search-deepseek), [`web-fetch-http`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/web/web-fetch-http) | [`tool-web`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/web/tool-web) | - | 搜索和抓取提供方注册到同一个 ctx.web seam;tool-web 负责稳定的面向模型名称。 |
|
|
465
477
|
| `ctx.spillStore` | `seam` | [`spill`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/spill/spill) | [`spill-local`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/spill/spill-local) | [`spill-policy`](https://github.com/deepseek-ai/deepseek-harness/tree/master/packages/spill/spill-policy) | - | 后端保存过大的工具文本,并返回面向模型的定位信息和取回提示;spill-policy 是 tools/post-execute 消费方,负责决定何时 spill。 |
|