External Task Context 插件:在 DSH 右侧栏查看外部子代理任务

前言

在使用 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 的提示词和返回内容会被截断,并在相应位置显示本地化的截断提示。

数据来源

插件通过读取父会话日志中的三类事件来构建视图:

  1. tool/call 事件:外部子代理工具调用的参数 JSON。description 为目录标签,prompt 为委派任务。可选字段包括 cwd、provider、model、reasoning_effort、agent_preset,这些是运行时上下文。
  2. subagent/catalog v2 事件:格式为 { version: 2, childId, childCreatedAt, mode: 'external', label? },用于建立稳定的子代理 ID。
  3. 后续的 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 客户端)。安装后在对应配置文件中启用该插件包,重启应用或重新打开会话,让主机投影和客户端包加载生效。

典型用法

  1. 在 DSH 会话中让模型通过外部子代理工具(Claude Code、Codex 或 ACP)委派任务。
  2. 委派完成后,会话头出现 “External tasks N” 按钮,点击打开插件视图。
  3. 在左侧列表中选中一个任务,右侧显示该任务的委派提示词、运行上下文和返回结果。
  4. 通过提示词和返回内容,快速定位问题或复现某个子代理的执行过程。

适用场景与注意

适合需要深入调试外部子代理行为的开发者,例如:
- 验证子代理是否接收到预期的提示词和上下文参数。
- 检查子代理的返回结果是否符合预期。
- 在多代理协作中追踪任务流转和结果。

注意:
- 外部子代理运行在独立进程,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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜