description: "面向用户与维护者的一次性 Claude Code subagent 提供方,用于选择产品后端、安装 Profile bundle 或配置无人值守的 Claude Code 委派。"
English | 中文
当委派任务应在父工作区中以全新、无人值守的 Claude Code 会话运行时,安装这个 Profile Bundle。每次运行接受一个自包含文本任务,并返回最终答案或安全的失败诊断;推理、工具通信、stderr、用量信息和工作区差异不会进入父 Session。Claude 原生设置与身份验证继续是权威来源,而 Profile 配置选择模型、环境和 permissionMode。针对平台锁定的运行时仅在需要时启动,并且绝不会回退到宿主 claude 可执行文件。当隔离和真实 Claude Code 行为比续接或提示更重要时,选择本包。
当委派应以父级工作区中的真实 Claude Code 会话运行时,挂载本提供方。常用路径是显式的:把 Bundle 安装进 Profile,可选地配置提供方行,并通过委派工具行把它暴露给模型。
把包安装进目标 Profile,然后重启该 Profile。安装会把锁定的 Agent SDK 与一个兼容的平台 CLI 载荷带入 Profile;声明的 patch 层只注册休眠的提供方,不启动任何 Claude 进程。
dsh plugin --profile <name> add @deepseek-ai/dsh-subagent-claude-code
dsh plugin --profile <name> remove @deepseek-ai/dsh-subagent-claude-code
dsh --profile <name>
移除包后,下一次 Profile 启动会撤回提供方及其私有运行时闭包。安装决定 Host 可用性,而不是模型权限:模型只能通过你组合的委派工具行触达提供方。
| 字段 | 默认值 | 含义 |
|---|---|---|
providerName |
claude-code |
ctx.subagents 上的非空注册名称;每个已挂载实例都需要唯一值 |
model |
Claude 原生设置 | 为本提供方实例的每次运行固定的可选非空模型名称;省略时不发送 SDK 覆盖 |
env |
{} |
叠加在已清理凭据的父环境之上的显式 SDK/CLI 环境 |
permissionMode |
dontAsk |
为本提供方实例的每次运行固定的原生非交互权限策略 |
disposeGraceMs |
3000 |
共享 managed-range owner 各终止层级之间的宽限 |
permissionMode 值 |
原生行为 |
|---|---|
dontAsk |
不弹出提示,直接拒绝尚未获授权的操作 |
acceptEdits |
接受文件编辑;其余权限提示由无人值守回调拒绝 |
auto |
由 Claude Code 原生分类器允许或拒绝权限请求 |
plan |
使用原生规划模式,拒绝执行审批,并把完整计划作为最终答案返回 |
bypassPermissions |
显式设置 SDK 的危险确认并跳过权限检查 |
生成的配置目录是每个受支持字段及其 JSDoc 的穷尽式真源。已配置的 model 会原样传给该提供方实例的每次 query;省略时保留原生模型选择。具有凭证特征的环境变量会在显式 env 覆盖生效前被移除,因此供子进程使用的 API 密钥必须在该配置中显式提供。提供方省略 SDK 的 settingSources 选项,因此 Claude Code 会相对于父会话 cwd 读取宿主机常规的用户、项目与本地设置。它不会复制或过滤这些文件、创建或修改登录状态、检查 PATH,也不会回退到宿主 claude 可执行文件。
每个委派工具行指名一个提供方,并需要独立的 toolName,因此模型看到的是静态工具,而不是动态提供方选择器。完整 Agent Preset 携带对应的默认工具行并设置 disabled: true;复制一个 preset 后删除该字段,即可只向由该副本组装的 agent 暴露 subagent_claude_code。
- id: jobs
name: '@deepseek-ai/dsh-jobs-local'
- id: tool-jobs
name: '@deepseek-ai/dsh-tool-jobs'
- id: tool-subagent-claude
name: '@deepseek-ai/dsh-tool-subagent'
config:
provider: claude-code
toolName: subagent_claude_code
backgroundMode: one-shot
maxDepth: provider-managed
one-shot 策略会让省略 run_in_background 或传入 false 的调用继续在前台等待,而显式传入 true 会返回由父 agent 拥有的 Job id,供 job_output 或 job_kill 使用;base host(基础宿主)与完整 preset 已提供通用作业注册表和控制工具。
前台调用会把严格的最终 Claude Code 答案交给模型;运行失败时则返回带停止原因与可选安全诊断的错误。后台调用先返回 Job id;随后通用作业控制面会送达完成通知,并通过 job_output 公开同一最终答案或失败状态。Claude Code 的推理、工具活动、中间消息、stderr 与工作区差异绝不会进入父级会话。
省略 optional dependencies、当前平台不受支持或所选载荷缺失的安装会让提供方保持休眠,并在第一次委派时于 SDK 启动边界以安全的 query-start / unknown 失败事实失败;不存在宿主 CLI 回退。原始产品错误只保留在内部 cause 链与提供方 Host 日志中。被取消的运行以 aborted 结算。
当包级约定不够用时阅读以下页面。它们从本提供方逐步进入它接入的 seam 与兄弟产品提供方。
Claude Code 子级会在一个全新的 SDK query 中接收独立文本任务。它的工作区是父会话 cwd;所选提供方实例会固定已配置的模型、环境与非交互权限模式,而省略的模型及其余产品设置来自 Claude 原生配置。可执行版本来自 Bundle 锁定的 SDK 平台载荷。
子级需为独立的 Claude Code 上下文和 query 承担 token 成本。子级 token 不会进入父级上下文。
与父级请求缓存相互独立。能否复用只取决于 Claude Code 自身的模型、指令、工具、原生设置和全新 query。
通过 dsh-tool-subagent,前台调用会让父级模型看到符合严格成功条件的 Claude Code 最终答案;若结果未完成,错误中会包含终止原因和可选的安全诊断。该诊断可以区分粗粒度行动类别、生命周期阶段和已观测的进程结果,而不复制原始产品文本或版本专属 subtype 名称。后台调用会先返回 Job id;随后通用作业控制面会送达完成通知,通过 job_output 公开同一最终答案或失败状态 detail,并允许 job_kill 请求取消。Claude Code 的推理、工具活动、中间消息、stderr、工作区差异、用量信息、产品标识符、工具输入和原始协议载荷均不会复制到父会话。
前台输入会增加工具结果中保留的最终答案或错误内容。后台输入还会包含启动确认、完成通知,以及 job_output、job_kill 或后续状态结果;子任务 token 仍不会进入父级上下文。本提供方自身不添加父级工具 schema。
仅追加:前台会在可复用的父请求前缀后增加一个结果,后台则会继续追加 Job 启动确认、通知以及后续控制或收集结果。后台调度可能增加一个由通知唤醒的轮次,但这些消息都不会改写更早的前缀。
这些限制说明本提供方何时不合适,或何时需要特别的运维注意。它们是当前包约束,不是通用 Claude Code 对比或任务积压。
toolName。model 时由项目与用户设置选择模型;原生设置始终保留其余工具和行为,本提供方不提供经过筛选或与宿主环境隔离的生产模式。unknown 回退,而不会增加单独的公开分类。AskUserQuestion 被禁用,权限提示会被拒绝,MCP elicitation 会被拒绝,阻塞对话会快速失败而不会挂起。agentOptions、输出 schema、子任务角色设定、工具筛选和 harness 深度强制约束。运行时不变式: 不发布伴生入口。生命周期配对属于共享 subagent service,受管范围的所有权属于 subprocess service。