dsh-plugin-subagent-director 0.4.0-beta.1 → 0.4.0
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 +14 -4
- package/README.md +17 -9
- package/lib/index.d.ts +1 -1
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +1 -1
- package/lib/index.js.map +1 -1
- package/lib/orchestrate.d.ts +17 -0
- package/lib/orchestrate.d.ts.map +1 -1
- package/lib/orchestrate.js +215 -9
- package/lib/orchestrate.js.map +1 -1
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,22 +2,32 @@
|
|
|
2
2
|
|
|
3
3
|
本项目的所有显著变更都会记录在此文件中。格式遵循 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/),版本号遵循 [SemVer](https://semver.org/lang/zh-CN/)。
|
|
4
4
|
|
|
5
|
-
## [0.4.0
|
|
5
|
+
## [0.4.0] - 2026-08-31
|
|
6
6
|
|
|
7
7
|
### 新增
|
|
8
8
|
|
|
9
|
-
- **纯编排模式(`/orchestrate`)**(PR #3,@WinterSold1er):`/orchestrate on|off` 命令(无参数默认 on),开启后注入「纯编排者」系统提示——主代理只允许通过 `subagent_role` 委派、禁止亲自读/写/执行,角色清单从 `subagent-director.roles` 动态渲染(无硬编码 role id),未配置角色时提示先配置;`sessionProjections`
|
|
9
|
+
- **纯编排模式(`/orchestrate`)**(PR #3,@WinterSold1er):`/orchestrate on|off` 命令(无参数默认 on),开启后注入「纯编排者」系统提示——主代理只允许通过 `subagent_role` 委派、禁止亲自读/写/执行,角色清单从 `subagent-director.roles` 动态渲染(无硬编码 role id),未配置角色时提示先配置;`sessionProjections` 服务缺失时命令返回明确错误而非假装成功;
|
|
10
|
+
- **纯编排模式改为按轮自动检测(类似 `/using aegis`)**:不再需要规定 on/off——消息开头声明 `/orchestrate`(无参数),或用自然语言写「使用orchestrate模式」(含「请使用 orchestrate 模式」「use orchestrate mode」等变体),该轮会话即自动进入纯编排模式;未声明时保持普通模式。系统提示段按轮判定:先扫描当前轮首条用户消息(`user/message` 事件)与最近一次 `orchestrate` 命令的 `command/run` 事件(以 `turn/start` 为轮次边界),投影仅作向后兼容兜底;
|
|
11
|
+
- **`/orchestrate <任务>` 直接编排该任务**:声明与任务同一条消息即可生效——任意任务文本(如 `/orchestrate 分析上周A股走势`)会被 handler 视为「编排该任务」,经 `agent.followup(createUserMessage(...))` 排入下一轮并唤醒模型。
|
|
10
12
|
|
|
11
13
|
### 修复
|
|
12
14
|
|
|
13
15
|
- **真实 cordis 探针发现的隐性 bug**(issue #5):cordis 的 `ctx.effect(fn)` 契约是「立即执行 fn、以返回值为 disposer」,原先包在 effect 里的 `fiber.dispose()` 清理块会把 `/orchestrate` 命令与 projection 的 `ctx.inject` 子 fiber **在创建瞬间卸载**——真实宿主上命令从未注册成功过(既有测试全基于 fake,未覆盖该契约);子 fiber 本就随父 fiber 生命周期自动卸载,清理块已移除,并由新增的真实 cordis 探针测试永久钉住;
|
|
14
16
|
- **开发/测试环境对齐真实宿主 0.1.1 线**(issue #5):devDeps 与 peer ranges 由 `0.1.0-rc.6/rc.8` 升至 `^0.1.1-rc.2`(新增 `dsh-session-projection` peer);projection 注册改用真实类型契约(`SessionEventMap` / `SessionProjectionStateMap` / `SessionProjectionMap` 声明合并 + 类型化 `register`),契约形状漂移现在在 typecheck 期暴露,而不是运行期被 `snapshot()` 静默跳过;
|
|
15
17
|
- 顶层 `inject` 移除 `'commands'`(非 dsh-base 装配上主条目会永久 PENDING、核心委派功能全失效);命令 handler 增加 `invocation.agent.session` 可选链守卫;
|
|
16
|
-
- 移除未使用的 `@deepseek-ai/dsh-client-schema-form` 依赖(源码零引用,且其 0.1.0 线 peer 链与 0.1.1
|
|
18
|
+
- 移除未使用的 `@deepseek-ai/dsh-client-schema-form` 依赖(源码零引用,且其 0.1.0 线 peer 链与 0.1.1 线冲突);
|
|
19
|
+
- **「对话什么都不返回」**:`/orchestrate on` 后模型被「纯编排者」提示束缚,但 `subagent-director.roles` 未配置任何角色 → 无法委派、禁止亲自动手 → 对话无输出。现在未配置角色时不再注入束缚性的纯编排框架,而是注入一段简短「不可用提示」,指示模型明确告知用户需要先配置角色、并继续以普通模式处理请求——模型必然给出有意义的回复;
|
|
20
|
+
- **「不清楚是否已开启」**:`/orchestrate`(无参数)从「粘性 on」改为「本轮 on」(不写粘性事件,由 `command/run` 扫描按轮生效),命令反馈明确说明按轮/持久语义;`/orchestrate on` 保留为显式持久模式(向后兼容),`/orchestrate off` 退出持久模式;
|
|
21
|
+
- **`/orchestrate <任务>` 无响应**:commands 服务会整体消费斜杠命令行,任务文本到不了模型、命令返回错误 → 对话无输出。现在任意任务文本会被 handler 视为「编排该任务」:经 `agent.followup(createUserMessage(...))` 排入下一轮并唤醒模型,`command/run` 扫描(任务参数 → on)使该轮注入编排提示;
|
|
22
|
+
- **按轮检测被上下文注入事件击穿**(实测「分析上周A股走势」会话未编排):宿主会在用户消息之后把 runtime context / system-reminder / memos_context 作为**独立的 `user/message` 事件**追加进日志,导致「最新用户消息」「命令位于上一条与当前用户消息之间」的判定全部失效(命令被视为过期、声明消息被注入事件掩盖)。修复:检测改用 **`turn/start` 轮次边界**——消息检测取当前轮**首条**用户消息(忽略注入事件),命令扫描要求命令位于「上一轮最后一条用户消息之后、本轮 `turn/start` 之前」;无 turn 事件时回退旧逻辑。
|
|
23
|
+
|
|
24
|
+
### 兼容性
|
|
25
|
+
|
|
26
|
+
- `orchestrate/change` 事件类型注册与投影注册保留(旧会话日志加载兼容 + 客户端 wire 视图);`renderOrchestratorPrompt` / `renderOrchestratorRoles` / `buildOrchestratorFrame` 公共 API 不变;新增导出 `detectOrchestrateRequest`、`renderOrchestratorUnavailableNotice`。
|
|
17
27
|
|
|
18
28
|
### 测试
|
|
19
29
|
|
|
20
|
-
- 单元/集成测试由 197 增至
|
|
30
|
+
- 单元/集成测试由 197 增至 253:`detectOrchestrateRequest` 检测单测(斜杠/任务文本/自然语言/反例)、按轮段判定接线测试(用户消息声明、`command/run` 区间扫描、任务参数扫描、无角色不可用提示、投影兜底)、命令语义测试(无参数按轮不写事件、任务文本 followup 排队、on 持久、off 退出),以及真实 cordis `Context` + 真实 `SessionProjectionRegistry` 集成探针(无 commands 服务时主条目正常激活、核心服务缺失时保持 PENDING、commands 后到时命令经真实 `ctx.inject` 子 fiber 响应式注册、projection 经真实 `snapshot()` 驱动 on→off 折叠、按轮与任务文本探针)。
|
|
21
31
|
|
|
22
32
|
### 已知取舍
|
|
23
33
|
|
package/README.md
CHANGED
|
@@ -134,16 +134,24 @@ subagent_role({ role: "code-reviewer", model: "deepseek-chat", prompt: "..." })
|
|
|
134
134
|
### 纯编排模式(`/orchestrate`)
|
|
135
135
|
|
|
136
136
|
```text
|
|
137
|
-
/orchestrate
|
|
138
|
-
/orchestrate on
|
|
139
|
-
/orchestrate
|
|
137
|
+
/orchestrate 分析上周A股走势 # 本轮开启并直接编排该任务(推荐用法)
|
|
138
|
+
/orchestrate # 本轮开启(按轮生效,无需 on/off)
|
|
139
|
+
/orchestrate on # 持久开启(直到 /orchestrate off)
|
|
140
|
+
/orchestrate off # 退出持久模式
|
|
140
141
|
```
|
|
141
142
|
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
143
|
+
在消息开头声明 `/orchestrate`(可后接任务文本,如 `/orchestrate 分析上周A股走势`),
|
|
144
|
+
或用自然语言写「使用orchestrate模式」(含「请使用 orchestrate 模式」「use
|
|
145
|
+
orchestrate mode」等变体),该轮会话即自动进入纯编排模式——类似 `/using aegis`
|
|
146
|
+
的按轮声明式用法,无需记忆开关状态;未声明时保持普通模式。`/orchestrate <任务>`
|
|
147
|
+
会把任务文本排入下一轮并唤醒模型,该轮以纯编排模式处理任务。开启后注入一段
|
|
148
|
+
「纯编排者」系统提示:主代理只允许通过委派工具派活,角色清单从当前
|
|
149
|
+
`subagent-director.roles` 动态渲染(无硬编码 role id)。**未配置角色时**不会注入
|
|
150
|
+
束缚性的纯编排框架,而是注入一段简短提示,让模型明确告知需要先配置角色并继续
|
|
151
|
+
以普通模式处理请求(避免「对话无输出」)。该模式依赖宿主的 `commands` 与
|
|
152
|
+
`sessionProjections` 服务:标准 profile(dsh-base)都会提供二者;
|
|
153
|
+
`sessionProjections` 缺失时命令返回明确错误而不是假装成功,`commands` 缺失时
|
|
154
|
+
命令不注册,插件其余功能不受影响。
|
|
147
155
|
|
|
148
156
|
## 术语
|
|
149
157
|
|
|
@@ -156,7 +164,7 @@ subagent_role({ role: "code-reviewer", model: "deepseek-chat", prompt: "..." })
|
|
|
156
164
|
|
|
157
165
|
```bash
|
|
158
166
|
npm install
|
|
159
|
-
npm test # vitest(
|
|
167
|
+
npm test # vitest(253 用例)
|
|
160
168
|
npm run typecheck
|
|
161
169
|
npm run build # host(tsc) + client(rolldown bundle)
|
|
162
170
|
```
|
package/lib/index.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export { Config } from './config.js';
|
|
|
25
25
|
export type { DirectorConfig } from './config.js';
|
|
26
26
|
export { assertDelegationCapabilities, buildSubagentRequest, createDelegationParameters, createDelegationOutputSchema, createDelegationTool, DELEGATION_TOOL_PREFIX, resolveDelegationMode, renderDelegationResult, type DelegationToolArgs, type DelegationResult, type DelegationRoute, type DelegationModeDecision, type SubagentRequestParts, } from './delegation-tool.js';
|
|
27
27
|
export { applyGuidance, renderRolesGuidance, GUIDANCE_SECTION_ORDER, GUIDANCE_SECTION_NAME } from './guidance.js';
|
|
28
|
-
export { applyOrchestrate, renderOrchestratorPrompt, renderOrchestratorRoles, buildOrchestratorFrame, ORCHESTRATE_SECTION_NAME, ORCHESTRATE_SECTION_ORDER, ORCHESTRATE_PROJECTION_KEY, ORCHESTRATE_EVENT_TYPE, ORCHESTRATE_VALID_MODES, type OrchestrateMode, } from './orchestrate.js';
|
|
28
|
+
export { applyOrchestrate, renderOrchestratorPrompt, renderOrchestratorRoles, renderOrchestratorUnavailableNotice, buildOrchestratorFrame, detectOrchestrateRequest, ORCHESTRATE_SECTION_NAME, ORCHESTRATE_SECTION_ORDER, ORCHESTRATE_PROJECTION_KEY, ORCHESTRATE_EVENT_TYPE, ORCHESTRATE_VALID_MODES, type OrchestrateMode, type OrchestrateRequest, } from './orchestrate.js';
|
|
29
29
|
export { CLOSE_SUBAGENT_TOOL_NAME, createCloseSubagentTool } from './close-tool.js';
|
|
30
30
|
export { SUBAGENT_DIRECTOR_SETTINGS_NAMESPACE, SettingsSchema, validateDirectorSettings, installDirectorSettings, type RoleTemplate, type SubagentDirectorSettings, } from './settings.js';
|
|
31
31
|
export declare const name = "subagent-director";
|
package/lib/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAWnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,eAAe,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAWnD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,YAAY,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,kBAAkB,EACvB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,sBAAsB,EAC3B,KAAK,oBAAoB,GAC1B,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,mCAAmC,EACnC,sBAAsB,EACtB,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,EACvB,KAAK,eAAe,EACpB,KAAK,kBAAkB,GACxB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EACL,oCAAoC,EACpC,cAAc,EACd,wBAAwB,EACxB,uBAAuB,EACvB,KAAK,YAAY,EACjB,KAAK,wBAAwB,GAC9B,MAAM,eAAe,CAAC;AAEvB,eAAO,MAAM,IAAI,sBAAsB,CAAC;AAExC,eAAO,MAAM,MAAM,UAA4C,CAAC;AAEhE,wBAAgB,KAAK,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,aAAa,EAAE,cAAc,QAmE/E"}
|
package/lib/index.js
CHANGED
|
@@ -8,7 +8,7 @@ import { createSettingsSnapshot, installDirectorSettings } from './settings.js';
|
|
|
8
8
|
export { Config } from './config.js';
|
|
9
9
|
export { assertDelegationCapabilities, buildSubagentRequest, createDelegationParameters, createDelegationOutputSchema, createDelegationTool, DELEGATION_TOOL_PREFIX, resolveDelegationMode, renderDelegationResult, } from './delegation-tool.js';
|
|
10
10
|
export { applyGuidance, renderRolesGuidance, GUIDANCE_SECTION_ORDER, GUIDANCE_SECTION_NAME } from './guidance.js';
|
|
11
|
-
export { applyOrchestrate, renderOrchestratorPrompt, renderOrchestratorRoles, buildOrchestratorFrame, ORCHESTRATE_SECTION_NAME, ORCHESTRATE_SECTION_ORDER, ORCHESTRATE_PROJECTION_KEY, ORCHESTRATE_EVENT_TYPE, ORCHESTRATE_VALID_MODES, } from './orchestrate.js';
|
|
11
|
+
export { applyOrchestrate, renderOrchestratorPrompt, renderOrchestratorRoles, renderOrchestratorUnavailableNotice, buildOrchestratorFrame, detectOrchestrateRequest, ORCHESTRATE_SECTION_NAME, ORCHESTRATE_SECTION_ORDER, ORCHESTRATE_PROJECTION_KEY, ORCHESTRATE_EVENT_TYPE, ORCHESTRATE_VALID_MODES, } from './orchestrate.js';
|
|
12
12
|
export { CLOSE_SUBAGENT_TOOL_NAME, createCloseSubagentTool } from './close-tool.js';
|
|
13
13
|
export { SUBAGENT_DIRECTOR_SETTINGS_NAMESPACE, SettingsSchema, validateDirectorSettings, installDirectorSettings, } from './settings.js';
|
|
14
14
|
export const name = 'subagent-director';
|
package/lib/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAuBA,OAAO,EAAE,sBAAsB,EAAE,MAAM,2BAA2B,CAAC;AAGnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACpF,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,OAAO,EAAE,sBAAsB,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAEhF,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,OAAO,EACL,4BAA4B,EAC5B,oBAAoB,EACpB,0BAA0B,EAC1B,4BAA4B,EAC5B,oBAAoB,EACpB,sBAAsB,EACtB,qBAAqB,EACrB,sBAAsB,GAMvB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,aAAa,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,MAAM,eAAe,CAAC;AAClH,OAAO,EACL,gBAAgB,EAChB,wBAAwB,EACxB,uBAAuB,EACvB,sBAAsB,EACtB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,sBAAsB,EACtB,uBAAuB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/lib/orchestrate.d.ts
CHANGED
|
@@ -41,6 +41,23 @@ export declare const ORCHESTRATE_EVENT_TYPE = "orchestrate/change";
|
|
|
41
41
|
/** Accepted mode values. */
|
|
42
42
|
export declare const ORCHESTRATE_VALID_MODES: readonly ['on', 'off'];
|
|
43
43
|
export type OrchestrateMode = (typeof ORCHESTRATE_VALID_MODES)[number];
|
|
44
|
+
/** Per-turn orchestrate request parsed from one user message. */
|
|
45
|
+
export type OrchestrateRequest = 'on' | 'off' | undefined;
|
|
46
|
+
/**
|
|
47
|
+
* Detect whether a user message requests pure-orchestrator mode for this turn.
|
|
48
|
+
* Slash form: `/orchestrate` — `off` → off; no args, `on`, or any task text
|
|
49
|
+
* (e.g. `/orchestrate 分析上周A股走势`) → on.
|
|
50
|
+
* Natural-language form (case-insensitive, anchored at the start with an
|
|
51
|
+
* optional politeness prefix so questions like 什么是orchestrate模式 do not
|
|
52
|
+
* false-positive): 使用orchestrate模式 / 使用 orchestrate mode / use orchestrate mode.
|
|
53
|
+
*/
|
|
54
|
+
export declare function detectOrchestrateRequest(text: string): OrchestrateRequest;
|
|
55
|
+
/**
|
|
56
|
+
* Short notice injected instead of the pure-orchestrator frame when the mode
|
|
57
|
+
* is on but no roles are configured: the model must inform the user and
|
|
58
|
+
* continue in normal mode — never sit paralyzed (the "returns nothing" bug).
|
|
59
|
+
*/
|
|
60
|
+
export declare function renderOrchestratorUnavailableNotice(toolName: string): string;
|
|
44
61
|
interface OrchestrateState {
|
|
45
62
|
mode: OrchestrateMode;
|
|
46
63
|
}
|
package/lib/orchestrate.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../src/orchestrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrate.d.ts","sourceRoot":"","sources":["../src/orchestrate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAMnD,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,eAAe,CAAC;AAE9D,yCAAyC;AACzC,eAAO,MAAM,wBAAwB,qBAAqB,CAAC;AAE3D,gFAAgF;AAChF,eAAO,MAAM,yBAAyB,KAAK,CAAC;AAE5C,wEAAwE;AACxE,eAAO,MAAM,0BAA0B,gBAAgB,CAAC;AAExD,wDAAwD;AACxD,eAAO,MAAM,sBAAsB,uBAAuB,CAAC;AAE3D,4BAA4B;AAC5B,eAAO,MAAM,uBAAuB,YAAI,IAAI,EAAE,KAAK,CAAU,CAAC;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,uBAAuB,CAAC,CAAC,MAAM,CAAC,CAAC;AAEvE,iEAAiE;AACjE,MAAM,MAAM,kBAAkB,GAAG,IAAI,GAAG,KAAK,GAAG,SAAS,CAAC;AAE1D;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,MAAM,GAAG,kBAAkB,CAWzE;AAED;;;;GAIG;AACH,wBAAgB,mCAAmC,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAK5E;AAED,UAAU,gBAAgB;IACxB,IAAI,EAAE,eAAe,CAAC;CACvB;AAYD,OAAO,QAAQ,gCAAgC,CAAC;IAC9C,UAAU,eAAe;QACvB,oBAAoB,EAAE;YAAE,IAAI,EAAE,eAAe,CAAA;SAAE,CAAC;KACjD;CACF;AAED,OAAO,QAAQ,2CAA2C,CAAC;IACzD,UAAU,yBAAyB;QACjC,wEAAwE;QACxE,WAAW,EAAE,gBAAgB,CAAC;KAC/B;IACD,UAAU,oBAAoB;QAC5B,sEAAsE;QACtE,WAAW,EAAE;YAAE,IAAI,EAAE,eAAe,CAAA;SAAE,CAAC;KACxC;CACF;AAED;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAM/D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAepG;AAED;;;;GAIG;AACH,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,wBAAwB,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAUrG;AA4GD;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAC9B,GAAG,EAAE,OAAO,EACZ,WAAW,EAAE,MAAM,wBAAwB,EAC3C,QAAQ,EAAE,MAAM,GACf,IAAI,CA8QN"}
|
package/lib/orchestrate.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
+
import { createUserMessage } from '@deepseek-ai/dsh-llm';
|
|
2
3
|
import { KNOWN_SESSION_EVENT_TYPES } from '@deepseek-ai/dsh-session';
|
|
3
4
|
/** Stable system-prompt section name. */
|
|
4
5
|
export const ORCHESTRATE_SECTION_NAME = 'orchestrate-mode';
|
|
@@ -10,6 +11,38 @@ export const ORCHESTRATE_PROJECTION_KEY = 'orchestrate';
|
|
|
10
11
|
export const ORCHESTRATE_EVENT_TYPE = 'orchestrate/change';
|
|
11
12
|
/** Accepted mode values. */
|
|
12
13
|
export const ORCHESTRATE_VALID_MODES = ['on', 'off'];
|
|
14
|
+
/**
|
|
15
|
+
* Detect whether a user message requests pure-orchestrator mode for this turn.
|
|
16
|
+
* Slash form: `/orchestrate` — `off` → off; no args, `on`, or any task text
|
|
17
|
+
* (e.g. `/orchestrate 分析上周A股走势`) → on.
|
|
18
|
+
* Natural-language form (case-insensitive, anchored at the start with an
|
|
19
|
+
* optional politeness prefix so questions like 什么是orchestrate模式 do not
|
|
20
|
+
* false-positive): 使用orchestrate模式 / 使用 orchestrate mode / use orchestrate mode.
|
|
21
|
+
*/
|
|
22
|
+
export function detectOrchestrateRequest(text) {
|
|
23
|
+
const trimmed = text.trimStart();
|
|
24
|
+
const slash = trimmed.match(/^\/orchestrate(?:\s+(\S+))?/i);
|
|
25
|
+
if (slash) {
|
|
26
|
+
const arg = (slash[1] ?? '').trim().toLowerCase();
|
|
27
|
+
if (arg === 'off')
|
|
28
|
+
return 'off';
|
|
29
|
+
return 'on';
|
|
30
|
+
}
|
|
31
|
+
if (/^(请|麻烦|麻烦你|帮我|请帮我|我想|我要)?\s*使用\s*orchestrate\s*(模式|mode)/i.test(trimmed))
|
|
32
|
+
return 'on';
|
|
33
|
+
if (/^use\s+orchestrate\s+mode/i.test(trimmed))
|
|
34
|
+
return 'on';
|
|
35
|
+
return undefined;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Short notice injected instead of the pure-orchestrator frame when the mode
|
|
39
|
+
* is on but no roles are configured: the model must inform the user and
|
|
40
|
+
* continue in normal mode — never sit paralyzed (the "returns nothing" bug).
|
|
41
|
+
*/
|
|
42
|
+
export function renderOrchestratorUnavailableNotice(toolName) {
|
|
43
|
+
return (`Orchestrator mode is active, but no subagent-director roles are configured (subagent-director.roles is empty), so you cannot delegate work via \`${toolName}\`. ` +
|
|
44
|
+
`Inform the user that orchestrator mode requires roles to be configured first, then handle their request in normal mode.`);
|
|
45
|
+
}
|
|
13
46
|
/**
|
|
14
47
|
* Build the data-independent framing of the orchestrator prompt for a given
|
|
15
48
|
* delegation tool name. The role list is appended separately by
|
|
@@ -61,6 +94,126 @@ export function renderOrchestratorPrompt(settings, toolName) {
|
|
|
61
94
|
7. For independent fan-out you may set run_in_background: true and collect results later; for relay steps set run_in_background: false so you wait for the result before dispatching the next stage.
|
|
62
95
|
8. Finish only when every subagent has completed. Then output a summary report: who produced what, and remaining todos.`;
|
|
63
96
|
}
|
|
97
|
+
/**
|
|
98
|
+
* Full orchestrator prompt when roles are configured, else the short
|
|
99
|
+
* unavailable notice. The notice (not the paralyzing pure-orchestrator frame)
|
|
100
|
+
* is what prevents the "conversation returns nothing" failure: a model that
|
|
101
|
+
* cannot delegate must be told to inform the user and continue normally.
|
|
102
|
+
* @param settings - current resolved settings snapshot.
|
|
103
|
+
* @param toolName - the configured model-facing delegation tool name.
|
|
104
|
+
*/
|
|
105
|
+
function renderOrchestratorSection(settings, toolName) {
|
|
106
|
+
const roles = settings.roles ?? {};
|
|
107
|
+
const hasRoles = Object.values(roles).some((role) => role !== undefined);
|
|
108
|
+
if (!hasRoles)
|
|
109
|
+
return renderOrchestratorUnavailableNotice(toolName);
|
|
110
|
+
return renderOrchestratorPrompt(settings, toolName);
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Text of the user message that started the CURRENT turn, or undefined when
|
|
114
|
+
* the log has no user message in the current turn.
|
|
115
|
+
*
|
|
116
|
+
* The harness appends runtime-context injections (runtime snapshot,
|
|
117
|
+
* system-reminder, memos_context) as SEPARATE `user/message` events AFTER the
|
|
118
|
+
* real user message, so the FIRST user/message at or after the latest
|
|
119
|
+
* `turn/start` — not the latest event — carries the user's actual prompt.
|
|
120
|
+
* Without a `turn/start` (degenerate seed), falls back to the latest
|
|
121
|
+
* user/message. Text blocks are concatenated in order; non-text blocks skipped.
|
|
122
|
+
* @param session - a live Session (or a faithful fake with `.events`).
|
|
123
|
+
*/
|
|
124
|
+
function currentTurnUserMessageText(session) {
|
|
125
|
+
const events = session?.events;
|
|
126
|
+
if (!Array.isArray(events))
|
|
127
|
+
return undefined;
|
|
128
|
+
let turnStart = -1;
|
|
129
|
+
for (const ev of events) {
|
|
130
|
+
if (ev && ev.type === 'turn/start' && typeof ev.seq === 'number')
|
|
131
|
+
turnStart = ev.seq;
|
|
132
|
+
}
|
|
133
|
+
for (const ev of events) {
|
|
134
|
+
if (!ev || ev.type !== 'user/message')
|
|
135
|
+
continue;
|
|
136
|
+
if (turnStart >= 0 && typeof ev.seq === 'number' && ev.seq < turnStart)
|
|
137
|
+
continue;
|
|
138
|
+
const blocks = ev.data?.content;
|
|
139
|
+
if (!Array.isArray(blocks))
|
|
140
|
+
return '';
|
|
141
|
+
let text = '';
|
|
142
|
+
for (const b of blocks) {
|
|
143
|
+
if (b && b.type === 'text' && typeof b.text === 'string')
|
|
144
|
+
text += b.text;
|
|
145
|
+
}
|
|
146
|
+
return text;
|
|
147
|
+
}
|
|
148
|
+
return undefined;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* Per-turn slash path: an `orchestrate` command/run that happened since the
|
|
152
|
+
* previous turn marks the current turn (the command itself is consumed by the
|
|
153
|
+
* commands service and never appears in a user/message event). The command is
|
|
154
|
+
* "recent" when it sits strictly AFTER the last user message of the previous
|
|
155
|
+
* turn and BEFORE the current turn's `turn/start` — context-injection
|
|
156
|
+
* user/message events inside the current turn do not count as "previous".
|
|
157
|
+
* Without any `turn/start` (degenerate seed) falls back to the strictly
|
|
158
|
+
* between previous/current user-message check. Returns 'on' | 'off' | undefined.
|
|
159
|
+
* @param session - a live Session (or a faithful fake with `.events`).
|
|
160
|
+
*/
|
|
161
|
+
function recentOrchestrateCommandRun(session) {
|
|
162
|
+
const events = session?.events;
|
|
163
|
+
if (!Array.isArray(events))
|
|
164
|
+
return undefined;
|
|
165
|
+
let turnStart = -1;
|
|
166
|
+
let cmdSeq = -1;
|
|
167
|
+
let cmdArgs;
|
|
168
|
+
for (const ev of events) {
|
|
169
|
+
if (!ev || typeof ev.seq !== 'number')
|
|
170
|
+
continue;
|
|
171
|
+
if (ev.type === 'turn/start')
|
|
172
|
+
turnStart = ev.seq;
|
|
173
|
+
if (ev.type === 'command/run' && ev.data?.name === 'orchestrate') {
|
|
174
|
+
cmdSeq = ev.seq;
|
|
175
|
+
cmdArgs = ev.data.args;
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
if (cmdSeq < 0)
|
|
179
|
+
return undefined;
|
|
180
|
+
if (turnStart >= 0) {
|
|
181
|
+
// The command must have happened after the last user message of the
|
|
182
|
+
// previous turn(s) AND before the current turn started.
|
|
183
|
+
let lastUserBeforeTurn = -1;
|
|
184
|
+
for (const ev of events) {
|
|
185
|
+
if (!ev || ev.type !== 'user/message')
|
|
186
|
+
continue;
|
|
187
|
+
const s = typeof ev.seq === 'number' ? ev.seq : -1;
|
|
188
|
+
if (s >= 0 && s < turnStart && s > lastUserBeforeTurn)
|
|
189
|
+
lastUserBeforeTurn = s;
|
|
190
|
+
}
|
|
191
|
+
if (cmdSeq <= lastUserBeforeTurn || cmdSeq >= turnStart)
|
|
192
|
+
return undefined;
|
|
193
|
+
}
|
|
194
|
+
else {
|
|
195
|
+
// Fallback: strictly between the previous and the current user message.
|
|
196
|
+
let prevUserSeq = -1;
|
|
197
|
+
let currentUserSeq = -1;
|
|
198
|
+
for (const ev of events) {
|
|
199
|
+
if (!ev || ev.type !== 'user/message')
|
|
200
|
+
continue;
|
|
201
|
+
const s = typeof ev.seq === 'number' ? ev.seq : -1;
|
|
202
|
+
if (s < 0)
|
|
203
|
+
continue;
|
|
204
|
+
prevUserSeq = currentUserSeq;
|
|
205
|
+
currentUserSeq = s;
|
|
206
|
+
}
|
|
207
|
+
if (cmdSeq <= prevUserSeq || cmdSeq >= currentUserSeq)
|
|
208
|
+
return undefined;
|
|
209
|
+
}
|
|
210
|
+
const arg = (cmdArgs ?? '').trim().toLowerCase();
|
|
211
|
+
if (arg === 'off')
|
|
212
|
+
return 'off';
|
|
213
|
+
// '' (bare), 'on', or task text (e.g. 分析上周A股走势 — the handler queued
|
|
214
|
+
// it as a follow-up turn) all mark this turn orchestrated.
|
|
215
|
+
return 'on';
|
|
216
|
+
}
|
|
64
217
|
/**
|
|
65
218
|
* Wire the `/orchestrate` command, its session projection, and the
|
|
66
219
|
* orchestrator prompt section into the host. Each host-plane service is
|
|
@@ -165,13 +318,12 @@ export function applyOrchestrate(ctx, getSettings, toolName) {
|
|
|
165
318
|
const commands = injectedCtx.get('commands');
|
|
166
319
|
commands.register({
|
|
167
320
|
name: 'orchestrate',
|
|
168
|
-
description: 'Enter pure-orchestrator mode —
|
|
169
|
-
input: { hint: 'on|off (no args =
|
|
321
|
+
description: 'Enter pure-orchestrator mode for this turn — /orchestrate <task> (e.g. /orchestrate 分析上周A股走势) or say 使用orchestrate模式. No args = this turn; on = persistent until off.',
|
|
322
|
+
input: { hint: '<task> | on | off (no args = this turn)' },
|
|
170
323
|
handler: (invocation) => {
|
|
171
|
-
const
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
}
|
|
324
|
+
const raw = (invocation.rawInput || '').trim();
|
|
325
|
+
const lower = raw.toLowerCase();
|
|
326
|
+
const mode = lower || 'on';
|
|
175
327
|
// Without sessionProjections the projection is never registered, so
|
|
176
328
|
// /orchestrate cannot take effect. Refuse with an honest message
|
|
177
329
|
// instead of falsely reporting success (P0 silent-degradation fix).
|
|
@@ -186,15 +338,47 @@ export function applyOrchestrate(ctx, getSettings, toolName) {
|
|
|
186
338
|
`Provide the dsh-session-projection sessionProjections service to enable orchestrator mode.`,
|
|
187
339
|
};
|
|
188
340
|
}
|
|
189
|
-
const
|
|
341
|
+
const agent = invocation?.agent;
|
|
342
|
+
const session = agent?.session;
|
|
190
343
|
if (session === undefined || typeof session.append !== 'function') {
|
|
191
344
|
return {
|
|
192
345
|
kind: 'error',
|
|
193
346
|
text: `Orchestrator mode "${mode}" was NOT applied: this command invocation carries no agent session to append the mode change to.`,
|
|
194
347
|
};
|
|
195
348
|
}
|
|
349
|
+
if (!ORCHESTRATE_VALID_MODES.includes(mode)) {
|
|
350
|
+
// Task text: orchestrate THIS task. The commands service consumes the
|
|
351
|
+
// whole line, so queue the task as a follow-up turn (wakes the agent);
|
|
352
|
+
// the per-turn command/run scan marks that turn orchestrated.
|
|
353
|
+
if (typeof agent?.followup !== 'function') {
|
|
354
|
+
return {
|
|
355
|
+
kind: 'error',
|
|
356
|
+
text: `Orchestrator mode was NOT applied: this agent cannot queue a follow-up turn (no followup method).`,
|
|
357
|
+
};
|
|
358
|
+
}
|
|
359
|
+
agent.followup(createUserMessage({
|
|
360
|
+
content: [{ type: 'text', text: raw }],
|
|
361
|
+
source: { kind: 'user' },
|
|
362
|
+
}));
|
|
363
|
+
const preview = raw.length > 60 ? `${raw.slice(0, 60)}…` : raw;
|
|
364
|
+
return {
|
|
365
|
+
kind: 'success',
|
|
366
|
+
text: `Orchestrator mode: on for this turn — task queued: "${preview}"`,
|
|
367
|
+
};
|
|
368
|
+
}
|
|
369
|
+
if (mode === 'on' && raw === '') {
|
|
370
|
+
// Per-turn: no sticky event. The section detects this command/run
|
|
371
|
+
// and orchestrates the NEXT user-message turn only.
|
|
372
|
+
return {
|
|
373
|
+
kind: 'success',
|
|
374
|
+
text: 'Orchestrator mode: on for this turn. Declare /orchestrate at the start of your message (or say 使用orchestrate模式) to enable it per turn; use /orchestrate on to keep it on until /orchestrate off.',
|
|
375
|
+
};
|
|
376
|
+
}
|
|
196
377
|
session.append(ORCHESTRATE_EVENT_TYPE, { mode });
|
|
197
|
-
return {
|
|
378
|
+
return {
|
|
379
|
+
kind: 'success',
|
|
380
|
+
text: mode === 'off' ? 'Orchestrator mode: off' : 'Orchestrator mode: on (persistent until /orchestrate off)',
|
|
381
|
+
};
|
|
198
382
|
},
|
|
199
383
|
});
|
|
200
384
|
});
|
|
@@ -233,6 +417,28 @@ export function applyOrchestrate(ctx, getSettings, toolName) {
|
|
|
233
417
|
// skipped here (no per-assembly re-warning).
|
|
234
418
|
if (projections === undefined)
|
|
235
419
|
return '';
|
|
420
|
+
// Per-turn detection (the /using-aegis-like usage): the user message
|
|
421
|
+
// that started THIS turn, or a just-run /orchestrate command, decides
|
|
422
|
+
// this turn. The sticky projection below is only the backward-compat
|
|
423
|
+
// fallback. (Context-injection user/message events after the real
|
|
424
|
+
// message are ignored: currentTurnUserMessageText reads the FIRST
|
|
425
|
+
// message of the turn, and recentOrchestrateCommandRun bounds the
|
|
426
|
+
// command by turn/start, not by those injection events.)
|
|
427
|
+
for (const candidate of sessionCandidates) {
|
|
428
|
+
const msgText = currentTurnUserMessageText(candidate);
|
|
429
|
+
if (msgText !== undefined) {
|
|
430
|
+
const req = detectOrchestrateRequest(msgText);
|
|
431
|
+
if (req === 'on')
|
|
432
|
+
return renderOrchestratorSection(getSettings(), toolName);
|
|
433
|
+
if (req === 'off')
|
|
434
|
+
return '';
|
|
435
|
+
}
|
|
436
|
+
const cmdReq = recentOrchestrateCommandRun(candidate);
|
|
437
|
+
if (cmdReq === 'on')
|
|
438
|
+
return renderOrchestratorSection(getSettings(), toolName);
|
|
439
|
+
if (cmdReq === 'off')
|
|
440
|
+
return '';
|
|
441
|
+
}
|
|
236
442
|
let resolvedMode;
|
|
237
443
|
let sawError = false;
|
|
238
444
|
for (const candidate of sessionCandidates) {
|
|
@@ -269,7 +475,7 @@ export function applyOrchestrate(ctx, getSettings, toolName) {
|
|
|
269
475
|
// Legitimate off: no section, no warning (intended behavior).
|
|
270
476
|
if (resolvedMode === 'off')
|
|
271
477
|
return '';
|
|
272
|
-
return
|
|
478
|
+
return renderOrchestratorSection(getSettings(), toolName);
|
|
273
479
|
},
|
|
274
480
|
});
|
|
275
481
|
}
|
package/lib/orchestrate.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../src/orchestrate.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"orchestrate.js","sourceRoot":"","sources":["../src/orchestrate.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-plugin-subagent-director",
|
|
3
|
-
"version": "0.4.0
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Subagent Director: choose an LLM provider/model for each subagent (call args > role binding > plugin default > inherit parent) and plan main-agent/subagent responsibilities with role templates, plus a settings UI.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "lib/index.js",
|