dsh-aiagent-taskboard:在 DSH 里一屏看清多 Agent 在干什么

前言

在 DSH(DeepSeek Harness)里同时跑 Claude Code、Codex、本机 DSH 任务或 Open Design 例行任务时,状态往往分散在各自会话目录、内部 HTTP 和本机日志里。想回答「现在谁在跑、刚失败的是哪条、产物在哪」,通常要在多个窗口之间切换。

dsh-aiagent-taskboard 是维护者 linglanxin 发布的客户端类 DSH 插件(当前 GitHub 星标为 0)。它不另起常驻进程,而是在 DSH 侧栏提供「任务台」入口,用列表和时间线(泳道)两种视图展示任务开始/结束、耗时与产物,并每 5 秒刷新;Open Design 与最近改动的会话目录也会一并出现在面板上。下面介绍它的定位、数据来源、安装与配置,以及使用前需要接受的限制。

这是什么

插件仓库:linglanxin/dsh-aiagent-taskboard。目录页:SkillHub 插件页。

一句话定位:极简实时任务台——一屏看清 Claude Code / Codex / DSH / Open Design 当前在做什么(列表 + 泳道时间线)。宿主半通过 GET /api/aiagent-taskboard/state 聚合只读状态(约 4 秒缓存);客户端半在 DSH Web 界面渲染侧栏与主视图。

界面与核心功能

布局

  • 侧栏一个入口(任务台),主视图是同一块面板。
  • 顶部:每个 agent 一个 chip(运行中蓝、今日成功绿、失败红、空闲灰),以及 Open Design daemon 的端口/版本。
  • 中部:列表视图与时间线视图,数据同一份。
  • 底部:最近的会话目录。整页约每 5 秒刷新一次。

列表视图

一行一个任务:状态点、名称、agent、耗时、多久之前。点击一行可展开目录、退出码、结果、产物。

时间线(泳道)视图

一条泳道对应一个 agent,一根横条对应一个任务,横轴为时间。

  1. 时间范围可切换 6 小时 / 24 小时 / 7 天,右端为「现在」(虚线)。
  2. 同泳道内时间重叠的任务会自动分到第二、第三行(贪心打包:找第一条「上一根已结束」的行),避免互相遮挡。
  3. 正在运行的任务横条延伸到「现在」。
  4. 颜色与列表一致:蓝=运行中、绿=成功、红=失败;过短任务按 0.7% 最小宽度绘制以保持可见。
  5. 点击横条同样可展开目录、退出码、结果、产物。

时间线布局由纯函数 buildTimeline(tasks, { now, windowMs }) 计算(仓库中 export,供测试使用):返回窗口、ticks 与各泳道的 rows。没有开始时间或完全落在窗口外的任务会被丢弃。

数据来源(无独立 daemon)

来源 位置 说明
事件日志 <stateDir>\events.jsonl 由本机 agent 包装器调用写入脚本追加 start/end/artifact 行(README 称 Windows 上常用 aiagent-log.ps1,未随本仓库发布)
Open Design daemon HTTP(端口随机) 轮询时用 data\diagnostics\daemon-health.json 的 pid 与 netstat 找端口,再读 /api/routines 与最近一次 run;找不到则显示「未运行」
会话目录 <sessionRoots>\* 最近改动的工作目录

路径均可配置(见下一节)。默认从家目录推导,例如 Windows 上 %USERPROFILE%\aiagent\.state\events.jsonl。

宿主注册 API 时必须声明 requestBody: 'buffered'。若缺失,DSH /api 桥接可能为 GET 请求带上 body,触发 TypeError,webserver 表现为裸 HTTP 400(面板上红字)。README 建议在 <AIAGENT_STATE_DIR>\host-loads.log 中确认是否有 taskboard-host v2 GET+buffered 行,以核对运行中的宿主半版本。

安装与启用

推荐通过 DSH 插件管理器从 GitHub 安装(由管理器接管依赖与更新):

dsh plugin --profile desktop add dsh-aiagent-taskboard@git+https://github.com/linglanxin/dsh-aiagent-taskboard.git
# 具体子命令以 `dsh plugin add --help` 为准;也可以 clone 到 <profile>\node_modules\ 下再用仓库内脚本

Windows 上也可使用仓库自带 PowerShell 脚本(目标 profile 默认 desktop):

powershell -ExecutionPolicy Bypass -File tools\install.ps1
powershell -ExecutionPolicy Bypass -File tools\uninstall.ps1

安装会做两件事:在 <profile>\node_modules\ 建立目录 junction;向 <profile>\cordis.patch.yml 追加 - insert: 行(原文件会备份到 ~\.dsh\.dsh-rollback-*)。

重载注意:修改宿主半 index.js 后须重载 DSH(未开 HMR 时 plugin-manager.reload() 会跳过);仅改客户端 client.js 时刷新页面即可。

环境要求(来自 package.json):Node ^22.19.0 || >=24.0.0;DSH >=0.2.0-rc.2 <0.3.0。许可证 MIT,当前包版本 0.1.0。

配置

优先级:环境变量 > 插件目录下 local.config.json(已 gitignore)> 家目录默认值。

设置 环境变量 local.config.json 默认(Windows)
agent 根目录 AIAGENT_HOME agentHome %USERPROFILE%\aiagent
事件日志目录 AIAGENT_STATE_DIR stateDir <agentHome>\.state
会话根目录 AIAGENT_SESSION_ROOTS(; 分隔) sessionRoots(数组) <agentHome>\{codex,claudecode,dsh}
Open Design 数据目录 OD_DATA_DIR odDataDir %APPDATA%\Open Design\namespaces\release-stable-win\data

复制 local.config.example.json 为 local.config.json 后修改;文件缺失或格式错误时静默回落默认值。

典型用法与自测

面板本身不负责启动 agent;要在任务台看到 Codex / Claude Code 等条目,需要本机另有包装器向 events.jsonl 写入事件。未配置这些脚本时,任务列表可能为空,面板仍可能显示「会话目录」与 Open Design 相关块。

清空历史:删除 <stateDir>\events.jsonl(追加写,不会自动清理)。

仓库内自测命令:

node test\host.test.mjs     # 事件折叠/状态/耗时/产物/agent 汇总 + 路由 requestBody 回归
node test\client.test.mjs   # bundle 注册、面板渲染、buildTimeline 布局

适用场景与注意

适合:已在 DSH desktop 等 profile 中使用多个 AI agent 或 Open Design,希望在一个 Web 面板里对照「谁在跑、刚完成/失败、目录与产物」,并愿意维护事件日志写入链路的开发者。

限制(README 原文要点):

  • Codex / Claude 的逐条消息进度不在此面板;只有任务开始/结束与产物,细节需看各自会话文件。
  • Open Design HTTP 为内部接口,升级后可能变化;端口发现失败不影响其他数据展示。
  • 本仓库仅含面板;aiagent-log.ps1 及 codex.cmd / claude.cmd 等包装器为另一套本机脚本,未随包发布。

安全与权限:插件以当前 DSH 进程权限读取本机路径、执行端口发现逻辑。安装前请阅读源码与 MIT 许可证,确认路径与数据目录符合你的环境策略。DSH 社区目录(如 SkillHub)为独立站点,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-aiagent-taskboard 把多源任务状态收进 DSH 侧栏:chip 概览、列表详情、泳道时间线与会话目录,适合需要「此刻全局视图」而不是深挖单会话 transcript 的场景。更多信息见 GitHub README 与 SkillHub 目录页。

羽毛球分组比赛记分
小程序二维码

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

Xiaoye