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