dsh-subagent-profile 0.3.2 → 0.3.3

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.
@@ -1,271 +1,243 @@
1
- # The `orchestrator` agent preset: the main-agent coordinator mode.
2
- #
3
- # A full coding agent — identical to the shipped `standard` preset row-for-row
4
- # whose persona turns it into the MAIN orchestrator: decompose work, delegate
5
- # each subtask to the right subagent via the host-registered `dispatch` tool
6
- # (per-scenario profile / preset / model / reasoning-effort) plus the ordinary
7
- # `subagent` / `subagent_fork` / `workflow` / `ralph` delegation tools, then
8
- # integrate the results. The `dispatch` tool itself is registered by the
9
- # dsh-subagent-profile host row, so it is already visible to every preset
10
- # including this one; this preset only adds the delegation tools below.
11
- #
12
- # Adapted from the builtin `standard` preset (the persona section is the only
13
- # change). This file is an AGENT-PLANE composition. The roster mounts it ONCE
14
- # under a standing scope; every session naming it joins by scope parentage, so
15
- # the tools and prompt sections registered here cover each joined agent while a
16
- # session's own state stays keyed per Session/Agent inside the plugins. The
17
- # host composition (`base.cordis.yml` + `web.cordis.yml`) keeps everything a
18
- # preset must not own: the registries themselves, the sandbox and approval
19
- # stack, persistence, and the model route.
20
- #
21
- # A service row here MUST sit inside a group carrying an `isolate` realm.
22
- # Without one it publishes into the root realm, where it is process-global —
23
- # another preset publishing the same name collides, and a host reader would
24
- # resolve one preset's instance for every session; `dsh-agent-presets` rejects
25
- # that at mount. `true` means an entry-local realm: this standing mount's own
26
- # private instance, apart from every other preset's. (A shared label does NOT
27
- # pool instances `provide()` throws on the second registration under the
28
- # same realm symbol; labels join REALMS, and are not what this file needs.)
29
-
30
- # ── identity ────────────────────────────────────────────────────────────────
31
-
32
- # The orchestrator persona, shadowing the deployment default for this agent.
33
- # `{{model}}` and `{{cwd}}` resolve from the agent's own route and workspace.
34
- - id: persona
35
- name: '@deepseek-ai/dsh-persona'
36
- config:
37
- text: |-
38
- 你是主协调 Agent(Orchestrator),由 {{model}} 驱动,工作目录是 {{cwd}}。职责是「拆解 委派 集成」:把复杂任务拆成边界清晰的子任务,按场景交给合适的子 Agent,再亲自核对质量、整合成连贯交付(别原样堆砌)。
39
-
40
- 委派:优先 dispatch 按场景选方案(swap-standard=标准编码、researcher=调研检索,可在「子 Agent 方案」设置页自定义);多轮可续探索用 subagent/subagent_fork,多路批量并行用 workflow,长任务反复迭代用 ralph;能后台并行就 run_in_background,不要串行干等。
41
-
42
- prompt 必须自包含:子 Agent 看不到你的对话,写全背景、目标、期望产出、验收标准与禁止事项。
43
-
44
- 边界:子 Agent 能力 ⊆ 你,审批恒为「永不」;子 Agent 失败或超出权限时自己接手重做,或用 ask_user_question 向用户澄清。
45
-
46
- - id: agent-instructions
47
- name: '@deepseek-ai/dsh-agent-instructions'
48
- config:
49
- maxBytes: 65536
50
-
51
- # ── shell ───────────────────────────────────────────────────────────────────
52
-
53
- # `shell-env` stays in the HOST composition: `apps/cli/src/web.ts` injects it to
54
- # publish `DSH_WEB_URL`/`DSH_WEB_MODE`, and a host row that injects a service is
55
- # the criterion for host-plane ownership — injection resolves before any session
56
- # exists, so there is no agent to key by. Behind a preset realm those variables
57
- # never reached the model's shell at all. Both shell tools consume the host
58
- # registry from here; their executors (`bash-sandbox`/`pwsh-sandbox`) are
59
- # host-plane too.
60
- - id: tool-bash
61
- name: '@deepseek-ai/dsh-tool-bash'
62
- disabled: !!js process.platform === 'win32'
63
-
64
- - id: tool-pwsh
65
- name: '@deepseek-ai/dsh-tool-pwsh'
66
- disabled: !!js process.platform !== 'win32'
67
-
68
- # ── filesystem ──────────────────────────────────────────────────────────────
69
-
70
- # Both register into the host `tools` registry and provide nothing, so
71
- # they need no realm. The `fs` service and its policy stay in the host.
72
- - id: tool-fs
73
- name: '@deepseek-ai/dsh-tool-fs'
74
-
75
- - id: tool-fs-search
76
- name: '@deepseek-ai/dsh-tool-fs-search'
77
- config:
78
- sampleOverCapGlobResults: false
79
-
80
- # ── background jobs ────────────────────────────────────────────────────────
81
-
82
- # Only the model-facing controls. The task REGISTRY stays on the host plane:
83
- # its producers sit outside any realm this file could put it in — `tool-bash`
84
- # above resolves it with `ctx.get`, and an entry-local realm here is invisible
85
- # to every sibling row, so `run_in_background` would answer "background jobs
86
- # unavailable" while these controls sat in the catalog. The registry is keyed by
87
- # owning agent anyway, so one host instance serves every session. What a preset
88
- # chooses is whether its agent can collect and stop background work at all.
89
- - id: tool-jobs
90
- name: '@deepseek-ai/dsh-tool-jobs'
91
-
92
- # ── skills ──────────────────────────────────────────────────────────────────
93
-
94
- # The skill REGISTRY lives in the host composition and is layered per scope:
95
- # these rows register into THIS preset's layer of it, so they need no realm.
96
- # `skill-filesystem` contributes local-root discovery for agents on this preset, and
97
- # `tool-skill` gives them the catalog and loader; the merged catalog also
98
- # carries whatever the deployment registered globally (repository plugins).
99
- - id: skill-filesystem
100
- name: '@deepseek-ai/dsh-skill-filesystem'
101
-
102
- - id: tool-skill
103
- name: '@deepseek-ai/dsh-tool-skill'
104
-
105
- # ── goals ───────────────────────────────────────────────────────────────────
106
-
107
- # Only the model-facing tool. The goal SERVICE, its session driver, and the
108
- # `/goal` command stay on the host plane: the Gateway serves the goal domain as
109
- # Remote endpoints whose receiver comes from a generated descriptor, so it
110
- # resolves `goals` on the host and an entry-local realm here would hide it. The
111
- # registry is keyed by session anyway, so one host instance serves every
112
- # session. What a preset chooses is whether its agent can call the goal tool.
113
- - id: tool-goal
114
- name: '@deepseek-ai/dsh-tool-goal'
115
-
116
- # ── plan mode ───────────────────────────────────────────────────────────────
117
-
118
- # Plan state is per-agent by nature, so an entry-local realm is not a
119
- # workaround here it is the correct lifetime.
120
- - id: planning
121
- name: cordis:group
122
- group: true
123
- isolate:
124
- planMode: true
125
- config:
126
- - id: plan-mode
127
- name: '@deepseek-ai/dsh-plan-mode'
128
- config:
129
- section: |
130
- You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
131
-
132
- Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
133
-
134
- The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
135
-
136
- Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
137
-
138
- Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
139
-
140
- When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
141
-
142
- # ── compaction ──────────────────────────────────────────────────────────────
143
-
144
- # `compaction-basic` reads `toolResultPrune` through `ctx.get`, so the pruner must
145
- # share this realm rather than sit outside it.
146
- #
147
- # `tokenMeter` is deliberately NOT in this realm: the meter stays on the HOST
148
- # plane, and the rows here resolve that one instance. It takes no configuration,
149
- # keys every fold by Session, and owns the context-meter projection units the
150
- # browser reads for every session — behind a realm those units would come and go
151
- # with whichever presets happen to be mounted. What a preset chooses is whether
152
- # its agent compacts at all, which is `compaction-basic` below.
153
- - id: compaction
154
- name: cordis:group
155
- group: true
156
- isolate:
157
- compaction: true
158
- toolResultPruner: true
159
- config:
160
- - id: compaction-basic
161
- name: '@deepseek-ai/dsh-compaction-basic'
162
-
163
- - id: command-compact
164
- name: '@deepseek-ai/dsh-command-compact'
165
-
166
- - id: tool-result-pruner
167
- name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
168
- config:
169
- thresholdChars: 8192
170
- headChars: 4096
171
- tailChars: 1024
172
-
173
- # ── delegation and workflows ────────────────────────────────────────────────
174
-
175
- # The `subagents` registry and its spawn/fork backends live in the HOST
176
- # composition: the registry is a process singleton whose cross-session queries
177
- # the api-proxy serves to the browser, and a provider name may only be
178
- # registered once. This preset contributes the delegation TOOLS, which resolve
179
- # that host registry. The `dispatch` tool (and the `profile` provider it
180
- # drives) are registered by the dsh-subagent-profile host row, so they are
181
- # host-global and already visible here; this group adds the ordinary
182
- # subagent/workflow tools so the orchestrator can choose the cheapest fit.
183
- #
184
- # `workflows` is different — nothing outside an agent reads it — so every row
185
- # that reaches it shares one entry-local realm here, and a consumer left
186
- # outside would resolve a host registry this preset does not populate.
187
- #
188
- # `tool-subagent-report` is host-plane for the same reason as the registry,
189
- # not because a preset may not want it: it registers a CONTINUABLE SETUP on
190
- # that singleton rather than a tool this agent calls, and the setup list is
191
- # not scope-aware — one copy per mounted preset means every child gets
192
- # `report` registered once per live session, which throws on the second.
193
- - id: delegation
194
- name: cordis:group
195
- group: true
196
- isolate:
197
- workflowEngine: true
198
- config:
199
- - id: tool-subagent-control
200
- name: '@deepseek-ai/dsh-tool-subagent-control'
201
-
202
- - id: tool-subagent-list-agents
203
- name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
204
-
205
- - id: tool-subagent
206
- name: '@deepseek-ai/dsh-tool-subagent'
207
- config:
208
- provider: spawn
209
- toolName: subagent
210
- backgroundMode: continuable
211
-
212
- - id: tool-subagent-fork
213
- name: '@deepseek-ai/dsh-tool-subagent'
214
- config:
215
- provider: fork
216
- toolName: subagent_fork
217
- backgroundMode: continuable
218
-
219
- # Production dsh does not install these optional providers. Install the
220
- # matching Bundle in this Profile and restart the Host, then copy this
221
- # preset and remove `disabled` from the matching tool row. Host availability
222
- # alone grants no tool.
223
- - id: tool-subagent-codex
224
- name: '@deepseek-ai/dsh-tool-subagent'
225
- disabled: true
226
- config:
227
- provider: codex
228
- toolName: subagent_codex
229
- backgroundMode: one-shot
230
- maxDepth: provider-managed
231
-
232
- - id: tool-subagent-claude-code
233
- name: '@deepseek-ai/dsh-tool-subagent'
234
- disabled: true
235
- config:
236
- provider: claude-code
237
- toolName: subagent_claude_code
238
- backgroundMode: one-shot
239
- maxDepth: provider-managed
240
-
241
- - id: workflow-worker-thread
242
- name: '@deepseek-ai/dsh-workflow-worker-thread'
243
- config:
244
- provider: spawn
245
-
246
- - id: tool-workflow
247
- name: '@deepseek-ai/dsh-tool-workflow'
248
-
249
- - id: tool-ralph
250
- name: '@deepseek-ai/dsh-tool-ralph'
251
- config:
252
- subagentProvider: spawn
253
- maxRounds: 64
254
-
255
- # ── remaining model-facing rows ─────────────────────────────────────────────
256
-
257
- - id: tool-ask-user
258
- name: '@deepseek-ai/dsh-tool-ask-user'
259
-
260
- - id: tool-todo
261
- name: '@deepseek-ai/dsh-tool-todo'
262
- config:
263
- allowParallelInProgress: true
264
-
265
- # The `web` service and its search provider stay in the host composition; only
266
- # the model-facing tool is per-session.
267
- - id: tool-web
268
- name: '@deepseek-ai/dsh-tool-web'
269
- config:
270
- fetch: false
271
- searchTimeoutMs: 60000
1
+ # `orchestrator` 编排者预设:主 Agent 协调模式。
2
+ #
3
+ # 与官方 `standard` 预设逐行一致,仅 persona 段改写为「主协调 Agent」身份:
4
+ # 拆解任务、经宿主注册的 `dispatch` 工具(按场景选方案/预设/模型/推理强度)
5
+ # 加普通 `subagent` / `subagent_fork` / `workflow` / `ralph` 委派工具分派子任务,
6
+ # 再集成结果。`dispatch` 工具本身由 dsh-subagent-profile 宿主行注册,对所有
7
+ # 预设可见;本预设只补下面的委派工具。
8
+ #
9
+ # 改编自官方 `standard` 预设(仅 persona 段不同);原始 DeepSeek 版权与
10
+ # MIT 许可声明见开源仓库。
11
+ #
12
+ # 本文件是 agent 平面组成:由 roster 挂载一次到 standing scope,引用它的会话
13
+ # scope 父系加入,本文件注册的工具与 prompt 段覆盖每个加入的 agent;会话
14
+ # 自身状态仍按 Session/Agent 键控在插件内。宿主组成(base.cordis.yml +
15
+ # web.cordis.yml)保留预设不得拥有的东西:注册表、沙箱与审批栈、持久化、
16
+ # 模型路由。
17
+ #
18
+ # 服务行必须放在带 `isolate` realm group 内:否则发布进根 realm 成为
19
+ # 进程全局单例——另一预设发布同名会冲突,宿主读者会对每个会话解析同一实例,
20
+ # `dsh-agent-presets` 挂载时拒绝。`true` 表示条目本地 realm:本 standing mount
21
+ # 私有的实例。共享 label 不会合并实例(同一 realm 符号下二次 provide 抛错),
22
+ # label 只连接 REALMS,本文件不需要。
23
+
24
+ # ── identity ────────────────────────────────────────────────────────────────
25
+
26
+ # 编排者 persona,遮蔽本 agent 的部署默认人设。
27
+ # `{{model}}` `{{cwd}}` agent 自身的路由与工作目录解析。
28
+ - id: persona
29
+ name: '@deepseek-ai/dsh-persona'
30
+ config:
31
+ text: |-
32
+ 你是主协调 Agent(Orchestrator),由 {{model}} 驱动,工作目录是 {{cwd}}。职责是「拆解 委派 集成」:把复杂任务拆成边界清晰的子任务,按场景交给合适的子 Agent,再亲自核对质量、整合成连贯交付(别原样堆砌)。
33
+
34
+ 委派:优先 dispatch 按场景选方案(swap-standard=标准编码、researcher=调研检索,可在「子 Agent 方案」设置页自定义);多轮可续探索用 subagent/subagent_fork,多路批量并行用 workflow,长任务反复迭代用 ralph;能后台并行就 run_in_background,不要串行干等。
35
+
36
+ prompt 必须自包含:子 Agent 看不到你的对话,写全背景、目标、期望产出、验收标准与禁止事项。
37
+
38
+ 边界:子 Agent 能力 你,审批恒为「永不」;子 Agent 失败或超出权限时自己接手重做,或用 ask_user_question 向用户澄清。
39
+
40
+ - id: agent-instructions
41
+ name: '@deepseek-ai/dsh-agent-instructions'
42
+ config:
43
+ maxBytes: 65536
44
+
45
+ # ── shell ───────────────────────────────────────────────────────────────────
46
+
47
+ # `shell-env` 留在宿主组成:apps/cli/src/web.ts 注入它以发布
48
+ # DSH_WEB_URL/DSH_WEB_MODE,且宿主行注入服务即宿主平面归属标准——注入在
49
+ # 会话存在前解析,没有可归属的 agent;放预设 realm 里这些变量到不了模型
50
+ # 的 shell。两个 shell 工具在此消费宿主注册表;其执行器
51
+ # (bash-sandbox/pwsh-sandbox)也在宿主平面。
52
+ - id: tool-bash
53
+ name: '@deepseek-ai/dsh-tool-bash'
54
+ disabled: !!js process.platform === 'win32'
55
+
56
+ - id: tool-pwsh
57
+ name: '@deepseek-ai/dsh-tool-pwsh'
58
+ disabled: !!js process.platform !== 'win32'
59
+
60
+ # ── filesystem ──────────────────────────────────────────────────────────────
61
+
62
+ # 两者都注册进宿主 tools 注册表且不提供服务,无需 realm;fs 服务与其策略留在宿主。
63
+ - id: tool-fs
64
+ name: '@deepseek-ai/dsh-tool-fs'
65
+
66
+ - id: tool-fs-search
67
+ name: '@deepseek-ai/dsh-tool-fs-search'
68
+ config:
69
+ sampleOverCapGlobResults: false
70
+
71
+ # ── background jobs ────────────────────────────────────────────────────────
72
+
73
+ # 只放模型可见的控制。任务注册表留在宿主平面:其生产者在本文件任何 realm
74
+ # 之外(上面 tool-bash 用 ctx.get 解析它,条目本地 realm 对兄弟行不可见),
75
+ # 否则 run_in_background 会答「后台任务不可用」。注册表本就按所属 agent
76
+ # 键控,一个宿主实例服务所有会话;预设只决定其 agent 能否收集/停止后台任务。
77
+ - id: tool-jobs
78
+ name: '@deepseek-ai/dsh-tool-jobs'
79
+
80
+ # ── skills ──────────────────────────────────────────────────────────────────
81
+
82
+ # skill 注册表在宿主组成中按 scope 分层;以下行注册进本预设的那一层,
83
+ # 无需 realm。`skill-filesystem` 为本预设的 agent 提供本地根发现,
84
+ # `tool-skill` 提供目录与加载器;合并后的目录也包含部署全局注册的内容。
85
+ - id: skill-filesystem
86
+ name: '@deepseek-ai/dsh-skill-filesystem'
87
+
88
+ - id: tool-skill
89
+ name: '@deepseek-ai/dsh-tool-skill'
90
+
91
+ # ── goals ───────────────────────────────────────────────────────────────────
92
+
93
+ # 只放模型可见的工具。goal 服务、会话驱动与 /goal 命令留在宿主平面:
94
+ # Gateway Remote endpoint 服务 goal 域,接收方来自生成描述符,条目本地
95
+ # realm 会隐藏它。注册表本就按会话键控,一个宿主实例服务所有会话;预设
96
+ # 只决定其 agent 能否调用 goal 工具。
97
+ - id: tool-goal
98
+ name: '@deepseek-ai/dsh-tool-goal'
99
+
100
+ # ── plan mode ───────────────────────────────────────────────────────────────
101
+
102
+ # plan 状态按 agent 天然独立,条目本地 realm 正是正确的生命周期。
103
+ - id: planning
104
+ name: cordis:group
105
+ group: true
106
+ isolate:
107
+ planMode: true
108
+ config:
109
+ - id: plan-mode
110
+ name: '@deepseek-ai/dsh-plan-mode'
111
+ config:
112
+ section: |
113
+ You are in plan mode. Stay in plan mode until exit_plan_mode succeeds or the user switches the session mode. Imperative language to implement changes means plan the implementation, not execute it. A user's conversational agreement — including an answer confirming something you asked — approves nothing and does not end plan mode; fold the confirmed decision into the plan and submit it through exit_plan_mode.
114
+
115
+ Explore first. Use non-mutating reads, searches, static analysis, and checks to ground the plan in the actual repository. Do not edit or write files, change configuration, run formatters or code generation that rewrites tracked files, commit, or otherwise carry out the plan. Prefer existing functions and patterns over new machinery.
116
+
117
+ The tool catalog stays the same across modes for request-cache stability. These plan-mode rules override any later tool description or guidance that suggests using mutation tools; those tools remain listed to keep the tool catalog unchanged. Do not use todo_write to track this planning phase: it tracks implementation after an approved plan, while the plan itself belongs in exit_plan_mode.
118
+
119
+ Resolve discoverable facts by inspection. Use ask_user_question only for user-owned choices or material ambiguity that inspection cannot answer. Do not ask the user where code lives or how current behavior works when you can find out.
120
+
121
+ Make the plan decision-complete: state the goal and success criteria; group implementation changes by subsystem; identify public API, schema, and data-flow changes; cover edge cases, failure modes, tests, acceptance criteria, and explicit assumptions. Keep it concise enough to review but detailed enough that another engineer can implement it without making design decisions.
122
+
123
+ When ready, call exit_plan_mode with the complete plan markdown, starting with a # title. Make exit_plan_mode the only and final tool call in that assistant response: it presents the plan for approval, and implementation begins only in a later step after approval. Do not paste the final plan as a plain reply or ask "should I proceed?" through prose or ask_user_question. If review rejects it, incorporate the feedback and present again. If the review channel is unavailable or aborted, stay in plan mode and ask the user to switch modes manually; do not proceed with implementation.
124
+
125
+ # ── compaction ──────────────────────────────────────────────────────────────
126
+
127
+ # `compaction-basic` 经 ctx.get 读取 toolResultPrune,pruner 必须与本 realm
128
+ # 共享而非留在外面。
129
+ #
130
+ # `tokenMeter` 刻意不在本 realm:meter 留在宿主平面,此处各行解析那个单例。
131
+ # 它无配置、按 Session 键控每次 fold,且持有浏览器为每个会话读取的上下文
132
+ # 计量单位——进 realm 会随挂载的预设增减。预设只决定其 agent 是否压缩,
133
+ # 即下面的 compaction-basic。
134
+ - id: compaction
135
+ name: cordis:group
136
+ group: true
137
+ isolate:
138
+ compaction: true
139
+ toolResultPruner: true
140
+ config:
141
+ - id: compaction-basic
142
+ name: '@deepseek-ai/dsh-compaction-basic'
143
+
144
+ - id: command-compact
145
+ name: '@deepseek-ai/dsh-command-compact'
146
+
147
+ - id: tool-result-pruner
148
+ name: '@deepseek-ai/dsh-compaction-tool-result-pruner'
149
+ config:
150
+ thresholdChars: 8192
151
+ headChars: 4096
152
+ tailChars: 1024
153
+
154
+ # ── delegation and workflows ────────────────────────────────────────────────
155
+
156
+ # `subagents` 注册表及其 spawn/fork 后端在宿主组成中:注册表是进程单例,
157
+ # api-proxy 供浏览器跨会话查询,provider 名只能注册一次。本预设贡献
158
+ # delegation 工具,解析该宿主注册表。`dispatch` 工具(及其驱动的 profile
159
+ # provider)由 dsh-subagent-profile 宿主行注册,宿主全局可见;本组补普通
160
+ # subagent/workflow 工具,让编排者选最省成本的方式。
161
+ #
162
+ # `workflows` 不同——没有 agent 之外的东西读它——到达它的行共享本条目本地
163
+ # realm,留在外面的消费者会解析到本预设未填充的宿主注册表。
164
+ #
165
+ # `tool-subagent-report` 与注册表同理在宿主平面:它在那个单例上注册
166
+ # continuable setup 而非本 agent 调用的工具,且 setup 列表不感知 scope——
167
+ # 每个挂载的预设各注册一份,每个子 agent 都会重复注册 `report`,第二次抛错。
168
+ - id: delegation
169
+ name: cordis:group
170
+ group: true
171
+ isolate:
172
+ workflowEngine: true
173
+ config:
174
+ - id: tool-subagent-control
175
+ name: '@deepseek-ai/dsh-tool-subagent-control'
176
+
177
+ - id: tool-subagent-list-agents
178
+ name: '@deepseek-ai/dsh-tool-subagent-control/list-agents'
179
+
180
+ - id: tool-subagent
181
+ name: '@deepseek-ai/dsh-tool-subagent'
182
+ config:
183
+ provider: spawn
184
+ toolName: subagent
185
+ backgroundMode: continuable
186
+
187
+ - id: tool-subagent-fork
188
+ name: '@deepseek-ai/dsh-tool-subagent'
189
+ config:
190
+ provider: fork
191
+ toolName: subagent_fork
192
+ backgroundMode: continuable
193
+
194
+ # 生产版 dsh 不安装这些可选 provider。在本 Profile 安装对应 Bundle 并
195
+ # 重启宿主,再复制本预设、移除对应行的 disabled。宿主可用性本身不授予工具。
196
+ - id: tool-subagent-codex
197
+ name: '@deepseek-ai/dsh-tool-subagent'
198
+ disabled: true
199
+ config:
200
+ provider: codex
201
+ toolName: subagent_codex
202
+ backgroundMode: one-shot
203
+ maxDepth: provider-managed
204
+
205
+ - id: tool-subagent-claude-code
206
+ name: '@deepseek-ai/dsh-tool-subagent'
207
+ disabled: true
208
+ config:
209
+ provider: claude-code
210
+ toolName: subagent_claude_code
211
+ backgroundMode: one-shot
212
+ maxDepth: provider-managed
213
+
214
+ - id: workflow-worker-thread
215
+ name: '@deepseek-ai/dsh-workflow-worker-thread'
216
+ config:
217
+ provider: spawn
218
+
219
+ - id: tool-workflow
220
+ name: '@deepseek-ai/dsh-tool-workflow'
221
+
222
+ - id: tool-ralph
223
+ name: '@deepseek-ai/dsh-tool-ralph'
224
+ config:
225
+ subagentProvider: spawn
226
+ maxRounds: 64
227
+
228
+ # ── remaining model-facing rows ─────────────────────────────────────────────
229
+
230
+ - id: tool-ask-user
231
+ name: '@deepseek-ai/dsh-tool-ask-user'
232
+
233
+ - id: tool-todo
234
+ name: '@deepseek-ai/dsh-tool-todo'
235
+ config:
236
+ allowParallelInProgress: true
237
+
238
+ # `web` 服务及其搜索 provider 留在宿主组成;只有模型可见的工具按会话。
239
+ - id: tool-web
240
+ name: '@deepseek-ai/dsh-tool-web'
241
+ config:
242
+ fetch: false
243
+ searchTimeoutMs: 60000
@@ -1,3 +0,0 @@
1
- agent.cordis.yml 改编自 DeepSeek Harness 内置 standard preset(MIT)。
2
- 仅 persona 段改写为「主协调 Agent」身份;其余行与原 standard 预设一致。
3
- 原始 DeepSeek 版权与 MIT 许可声明见开源仓库。