目录:ACP 协议API 网关与控制器附件启动与插件管理客户端运行时客户端 UI 包上下文压缩上下文注入核心运行时凭据与授权交付物文档处理实验特性宿主扩展反馈通道文件系统目标与计划工具守卫Hooks 扩展宿主服务交互命令作业调度LLM 适配LSP 集成MCP 协议规划模式Agent 预设代码执行运行时运行时诊断沙箱定时调度SDK 与协议会话核心会话检索设置Shell 执行技能溢出存储SSH 远程执行存储子代理子进程终端待办类型契约框架 vendorWeb 访问Webhook工作流工作区
依赖链 · 上游(该插件依赖的前驱):
dsh-agentdsh-agent-preset-registrydsh-invariantsdsh-llmdsh-permission-presetsdsh-sandbox-policydsh-scopedsh-sessiondsh-session-projectiondsh-system-promptdsh-toolsdsh-user-approvaldsh-workspace
依赖链 · 下游(依赖该插件的节点):
dsh-api-remotesdsh-api-session-controllerdsh-client-ui-subagentdsh-client-ui-workspacedsh-experimental-auto-reviewdsh-hooks-claude-codedsh-sdk-jsonrpc-serverdsh-session-referencedsh-subagent-acpdsh-subagent-claude-codedsh-subagent-codexdsh-subagent-dsh-sdkdsh-subagent-fork-in-processdsh-subagent-spawn-in-processdsh-tool-ralphdsh-tool-subagentdsh-tool-subagent-controldsh-workflow-ptc
同一拓扑层(Layer 6,层次遍历层序):
dsh-agent-presetdsh-command-goaldsh-compaction-basicdsh-experimental-auto-reviewdsh-goal-round-driverdsh-host-plugin-inventorydsh-mcp-clientdsh-office-to-pdfdsh-plan-modedsh-plugin-package-inventory-deepseekdsh-subagentdsh-terminal-bashdsh-tool-ask-userdsh-tool-bash-persistentdsh-tool-cordisdsh-tool-goaldsh-tool-pwsh-persistentdsh-tool-terminal
插件信息
| 包名 | @deepseek-ai/dsh-subagent |
|---|---|
| 分组 | G41 · 子代理 |
| 拓扑层 | Layer 6(层次遍历:被依赖方先于依赖方) |
| 源码路径 | packages/subagent/subagent |
① 实现逻辑
定义子代理 seam 服务 ctx.subagents(SubagentRuntime):命名 provider 注册表加 capability 校验的 start()、startContinuable()、sendMessage()、prompt/interruptByParent 远程面与 listChildren/listDescendants 发现 API (src/index.ts:199-661)。continuation.ts 管理可续子代理的稳定 id、descriptor 持久化、冷恢复与消息路由 (src/continuation.ts:82-550);child-agent.ts 统一 in-process 子代理的深度、血缘、策略播种与作用域组合 (src/child-agent.ts:50-280)。catalog/projection 记录并投影父目录子项身份,lifecycle 统一发射 subagent/start|end 生命周期边 (src/catalog.ts:143-165, src/projection.ts:68-190, src/lifecycle.ts:101-219)。
内部结构动态 DAG(深色主题:橙色=上游依赖 · 绿色=下游依赖 · 棕色=外部seam · 蓝=本插件)
本插件
上游依赖
下游依赖
外部 seam
② 注册/提供(provides)
- ctx.subagents (子代理 seam 服务定义:命名 provider 注册表 + 启动/续跑/消息/中断/发现 API)
③ 依赖(depends_on · 上游前驱)
dsh-agentE1+E2
创建与检索子 Agent、读取其会话与状态
src/index.ts:40 (import type Agent) + src/child-agent.ts:12 (import type Agent,AgentOptions,CreateAgentOptions) + src/index.ts:217 (ctx.inject(['agents'])) + src/continuation.ts:210 (ctx.agents.get)
dsh-agent-preset-registryE1+E2
让子代理加入父的 preset 组合
src/child-agent.ts:29 (type import) + src/child-agent.ts:205 (ctx.get('agentPresets')?.composeFrom)
dsh-invariantsE1+E2
注册 provider 注册表与 start/end 配对不变量
src/invariant.ts:4 (import type InvariantFailure, InvariantInstaller) + src/invariant.ts:12 (inject ['invariants']) + src/invariant.ts:92 (ctx.invariants.register)
dsh-llmE1+E2
内容块/流文本处理、推理强度与模型图像能力查询
src/descriptor.ts:26 (import type ReasoningEffortId) + src/assistant-output.ts:13 (import joinAssistantStreamText) + src/continuation.ts:515 (ctx.get('llm'))
dsh-permission-presetsE1+E2
继承 auto/full-access 权限预设身份
src/child-agent.ts:23 (type import) + src/child-agent.ts:250 (ctx.get('permissionPresets')?.current)
dsh-sandbox-policyE1+E2
捕获父会话沙箱覆盖并播种给子代理
src/child-agent.ts:21 (type import) + src/child-agent.ts:253 (ctx.get('sandboxPolicy')?.overrideOf)
dsh-scopeE1+E2
按委派父级做作用域过滤的事件派发
src/index.ts:36-37 (import scopeTarget, Scoped) + src/index.ts:216 (scopeTarget(this, parent))
dsh-sessionE1+E2
读写会话事件、会话 id 与会话注册表
src/descriptor.ts:25 (import type SessionEvent) + src/types.ts:15 (import type SessionEvent,SessionId) + src/list-children.ts:69 (ctx.get('sessions'))
dsh-session-projectionE1+E2
注册父目录、身份与时长投影
src/catalog.ts:17 (import type ProjectionDefinition) + src/index.ts:228 (ctx.inject(['sessionProjections'])) + src/index.ts:230 (projections.register)
dsh-system-promptE1+E2
为子代理注册委派作用域上下文与 persona 段
src/child-agent.ts:15 (type import) + src/child-agent.ts:206 (childCtx.systemPrompt.context)
dsh-toolsE1+E2
校验输出 schema、工具过滤与判定标准 send_message 工具
src/index.ts:38 (import assertObjectJsonSchema) + src/types.ts:16 (import type ObjectJsonSchema,ToolRestriction) + src/continuation.ts:179 (ctx.get('tools')?.get('send_message'))
dsh-user-approvalE1+E2
将子代理审批策略固定为 never
src/child-agent.ts:22 (type import) + src/child-agent.ts:254 (ctx.get('approval'))
dsh-workspaceE1+E2
响应工作区归档准入与活动上报
src/archive-admission.ts:13 (import type SessionActivity, SessionActivityItem) + src/archive-admission.ts:23 (ctx.on('workspace/session-activity')) + src/archive-admission.ts:30 (ctx.on('workspace/session-stop'))
④ 被依赖(dependents · 下游消费者)
dsh-api-remotes
装配 subagent 命名空间与客户端类型
src/client/index.ts:21 import remote + src/client/index.ts:53 import remote
dsh-api-session-controller
子代理所有权与客户端地址类型
src/history.ts:19 import + src/client/sessions/manager.ts:3 import
dsh-experimental-auto-review
解析子 Agent 的直接父指令初始提示边界
src/index.ts:26 import type {} from '@deepseek-ai/dsh-subagent'
dsh-hooks-claude-code
把子代理 start/end 映射到 SubagentStart/SubagentStop hook
src/index.ts:42 import SubagentRunId + src/index.ts:287 ctx.on('subagent/start') + src/index.ts:297 ctx.on('subagent/end')
dsh-session-reference
引入 subagent 投影值的类型以优先使用子代理创建标签作为显示标题
src/index.ts:20 type-only import (subagent label projection)
dsh-subagent-acp
复用 seam 契约并注册 acp provider
src/index.ts:14-19 (import 类型) + src/index.ts:24 (inject ['subagents','subprocess']) + src/index.ts:205 (ctx.subagents.registerProvider) + src/run.ts:22 (import settleRunResult, subprocessRunHandle)
dsh-subagent-claude-code
复用 seam 契约与共享辅助并注册 provider
src/index.ts:12-19 (import NO_START_CAPABILITIES, resolveChildCwd, 类型) + src/index.ts:31 (inject ['subagents','subprocess']) + src/index.ts:151 (ctx.subagents.registerProvider)
dsh-subagent-codex
复用 seam 契约与共享辅助并注册 provider
src/index.ts:12-19 (import NO_START_CAPABILITIES, resolveChildCwd, 类型) + src/index.ts:31 (inject ['subagents','subprocess']) + src/index.ts:135 (ctx.subagents.registerProvider)
dsh-subagent-dsh-sdk
复用 seam 契约与共享辅助并注册 provider
src/index.ts:19-20 (import NO_START_CAPABILITIES, resolveChildCwd, validateConfiguredCwd, 类型) + src/index.ts:31 (inject ['subagents']) + src/index.ts:199 (ctx.subagents.registerProvider)
dsh-subagent-fork-in-process
实现并注册 fork provider
src/index.ts:14-20 (import 类型) + src/index.ts:28 (static inject ['subagents']) + src/index.ts:95 (ctx.subagents.registerProvider)
dsh-subagent-spawn-in-process
实现并注册 spawn provider
src/index.ts:14-16 (import 类型) + src/index.ts:22 (static inject ['subagents']) + src/index.ts:69 (ctx.subagents.registerProvider)
dsh-tool-ralph
校验并指定每轮新子代理所用的 provider(新鲜、支持结构化输出)
package.json:32 peerDep + src/index.ts:12 import type { SubagentProvider } + src/index.ts:18 inject 'subagents' + src/index.ts:219 ctx.subagents.getProvider
dsh-tool-subagent
启动子代理并复用 seam 辅助
src/index.ts:21-26 (import assertSubagentMaxDepth, parentAgentOptionsForDelegation, settleRun, 类型) + src/index.ts:45 (inject ['tools','subagents','systemPrompt','sessionProjections']) + src/index.ts:530 (ctx.subagents.startContinuable) + src/index.ts:563 (ctx.subagents.start)
dsh-tool-subagent-control
转发消息/中断并复用相邻 Agent 工具标记
src/index.ts:17-18 (import 类型与 markAdjacentAgentSendMessageTool) + src/index.ts:21 (inject ['tools','subagents']) + src/index.ts:64 (ctx.subagents.sendMessage) + src/index.ts:108 (ctx.subagents.interrupt)
dsh-workflow-ptc
为脚本的 agent() 钩子启动/等待/释放子代理
package.json:34 peerDep + src/host.ts:7-8 import SubagentRuntime/SubagentRun + src/index.ts:103 inject 'subagents' + src/host.ts:200 subagents.start