前言¶
在使用 DeepSeek Harness(DSH)进行多代理开发时,经常需要委托 Claude Code、Codex 或 ACP 等外部子代理执行任务。这些子代理运行在独立进程,其内部推理、工具调用链和私有上下文无法直接在 DSH 中查看。当前的做法是依赖父会话日志,但日志内容分散、缺少结构化展示,难以快速定位某个委派任务的具体提示词、运行参数和最终结果。
External Task Context(dsh-external-task-context)插件在 DSH Web 右侧栏提供了一组结构化的视图,将外部子代理任务的委派提示词、运行上下文和返回结果按任务维度组织展示。插件不产生新的会话事件,也不改变模型可见行为,仅读取并投影已记录在父会话日志中的事件。
插件定位¶
这是一个 DSH 客户端插件,由 LiFenrir 维护。它的核心作用是:在 DSH Web 界面中按任务维度展示外部子代理的委派上下文和返回结果,包括状态、时间、工具名称、提示词、工作目录、提供商/模型/推理努力、代理预设、返回内容以及结算摘要。数据全部来源于父会话日志,不引入额外的会话事件或副作用。
核心功能¶
会话头按钮¶
当当前会话存在已记录的外部任务时,DSH 会话头会出现 “External tasks N” 按钮(N 为任务数量)。点击该按钮会在右侧栏打开插件视图,布局允许时显示为独立面板。
右侧栏面板¶
面板分为左右两列:
- 左列:列出所有外部任务,每项显示标签或简短 ID、状态、开始时间。
- 右列:显示当前选中的任务详情。默认选中最新任务;选中后只要任务存在就保持选中,任务消失后回退到最新任务。
任务详情¶
选中任务后,右侧显示以下信息:
- 状态
- 开始/完成时间
- 工具名称
- 委派提示词(delegation prompt)
- 工作目录
- 提供商、模型、推理努力、代理预设
- 返回内容
- 结算摘要(settlement summary)
超过 64 KiB 的提示词和返回内容会被截断,并在相应位置显示本地化的截断提示。
数据来源¶
插件通过读取父会话日志中的三类事件来构建视图:
tool/call事件:外部子代理工具调用的参数 JSON。description为目录标签,prompt为委派任务。可选字段包括cwd、provider、model、reasoning_effort、agent_preset,这些是运行时上下文。subagent/catalogv2 事件:格式为{ version: 2, childId, childCreatedAt, mode: 'external', label? },用于建立稳定的子代理 ID。- 后续的
user/message事件,其中source.kind === 'subagent-settled':source.summary描述任务结束方式,包括结算摘要行、”Its closing message:” 或 “It left no closing message.”、子代理的最终文本、可选的 “Structured result:” 块以及可选的诊断信息。
DSH 主机将这些事件折叠到 externalTaskContexts 投影中,插件仅读取该投影。
安装与启用¶
环境要求¶
- DSH 0.2.1-rc.2 或更新
- Node.js ^22.19 或 >=24
从 npm 安装¶
dsh plugin add @lifenrir/dsh-external-task-context
从 git 安装¶
dsh plugin add git+https://github.com/LiFenrir/dsh-external-task-context.git
从本地目录安装¶
git clone https://github.com/LiFenrir/dsh-external-task-context.git
cd dsh-external-task-context
pnpm install
pnpm run build
dsh plugin add /absolute/path/to/dsh-external-task-context
本地构建会生成 lib/index.js(主机)和 lib/client.js(Web 客户端)。安装后在对应配置文件中启用该插件包,重启应用或重新打开会话,让主机投影和客户端包加载生效。
典型用法¶
- 在 DSH 会话中让模型通过外部子代理工具(Claude Code、Codex 或 ACP)委派任务。
- 委派完成后,会话头出现 “External tasks N” 按钮,点击打开插件视图。
- 在左侧列表中选中一个任务,右侧显示该任务的委派提示词、运行上下文和返回结果。
- 通过提示词和返回内容,快速定位问题或复现某个子代理的执行过程。
适用场景与注意¶
适合需要深入调试外部子代理行为的开发者,例如:
- 验证子代理是否接收到预期的提示词和上下文参数。
- 检查子代理的返回结果是否符合预期。
- 在多代理协作中追踪任务流转和结果。
注意:
- 外部子代理运行在独立进程,DSH 不持久化其内部步骤或工具调用记录;插件只能展示委派上下文和返回结果,无法访问子代理的私有上下文、内部推理或完整工具调用链。
- 在 DSH 0.2.1-rc.2 中,Claude Code 提供商使用 persistSession: false,因此其进程本地会话也不会被保留。
- 标签匹配仅在歧义时生效:最早未配对的相同目录标签优先;无标签时使用唯一的未配对调用;有多个候选时,提示词和选项保持缺失而不做猜测。
- 仅保留最新的 20 个未配对委派调用。
- 继承的 fork 事件(seq < inheritedEventCount)不归入当前会话。
结尾¶
External Task Context 插件将分散在外部子代理进程中的上下文和结果,按任务维度整理到 DSH 右侧栏,便于开发者查看和调试。需要了解插件目录页或源码,可访问:
- 目录页:https://www.skillhub.cn/plugins/LiFenrir/dsh-external-task-context
- GitHub:https://github.com/LiFenrir/dsh-external-task-context