ningl32/agent-workbench:给 DSH 的本地 AI 编码代理加一块可观测工作台

前言

用 DSH 跑本地编码代理(Claude Code、Codex、OpenCode、ZCode 等)时,常见的问题是「看不见」和「认不清」:任务分给了哪个代理、代理实际做了什么、提交是谁产生的、哪一步该验收,事后很难回溯。宥于本地环境,多数方案要么往云端导数据,要么需要自己写脚本拼日志。

下面介绍的插件 ningl32/agent-workbench 走的是另一条路:它以 DSH 客户端插件的形式,把本地多个代理的会话、提交和任务放进同一个只读观察面板里,数据只留在你机器上。README 里把核心循环概括为 See → Understand → Attribute → Accept,本文按这个思路展开。

这是什么

一句话定位:一个 local-first 的 DSH 工作台插件,把你的本地 AI 编码代理变成一个「可观测、可追责的代理团队」。

  • 维护者:ningl32(GitHub 仓库 ningL32/agent-workbench)
  • 插件名:fde-console,README 中显示为 fde-console — Super Workbench,package.json 版本 2.9.68
  • 许可证:MIT
  • 分类:客户端(社区目录 SkillHub 归类)
  • 星标:0(截至 2026-11-07)

设计上有几条明确约束,是它的核心价值,也是后面安装时要注意的前提:

  1. 零云依赖、零第三方运行时依赖,只用 Node 内置模块(node:sqlite)。
  2. 所有数据落在自有目录(默认 ~/.dsh/fde-console/),数据结构为 data/ + 配置。
  3. 对代理是只读观察,工作台不会写进你的代理进程。
  4. 凭据不落盘:git 凭据通过运行时读取 git config 获得,所有输出做 redaction,所有出站请求走 SSRF 白名单。

核心功能

README 列出的能力较多,下面只挑与日常使用直接相关的几项。

任务面板。 看板式任务管理,带 timeline、验收人签核(acceptor sign-off)、深链接、优先级、截止日期,每个任务还有每日 diary。

代理观测。 通过六个会话来源适配本地代理,提供会话列表、逐条 transcript 阅读器、running-now 检测、按项目分页;面板里能看到每个会话背后的 dispatch prompt(启动时的原始人类指令)。

提交归属。 AI 产生的提交可以按三种约定自动挂到任务上:分支名 task/<id>、提交信息里带 [#<id>]、或把任务绑定到项目目录。仓库侧有跨仓库误匹配的防护。约定细节在 docs/ATTRIBUTION.md,附一段可直接粘贴进 AGENTS.md 的片段和 commit-msg hook。

证据与验收。 每个任务上挂 timeline 和会话证据,证据按任务打分并支持一键或批量确认;另有自动生成的日报 / 周报,可导出为 Markdown。再用 Ctrl+K 在任务标题、会话标题、提交信息、diary 之间做全局搜索。

面板视图。 共七个视图:Overview、Task Radar(会议转写 → AI 拆解任务 → inbox 闸门)、Task Board、Agents、Members、Team Activity(多来源 commit/PR 流 + 任务归属)、Settings。

扩展接口。 MCP server 通过 stdio 暴露只读工具(列任务 / 搜工作 / 查代理状态),供任何 MCP 客户端使用;另有 webhook 出站、飞书 / 钉钉机器人通知、Gitea/GitHub/Gitee 动态流。想接 Cursor、Trae、Aider 等未覆盖的来源,可按 docs/ADAPTERS.md 自己写适配器。

热力图与积分卡(28 天活动网格、SVG 积分卡 endpoint)也属于观测层,适合做团队周会展示。

安装与启用

环境要求

README 明确列出:

  • Node.js ≥ 22.13(使用内置 node:sqlite)
  • DSH 0.2.1-rc.2(@deepseek-ai/dsh)
  • pnpm 在 PATH 上(插件安装会转发给它)

安装步骤

第一个坑:新 profile 默认只有 @deepseek-ai/dsh-base,Web 界面 bundle 是分开的。少了这一步插件会加载但不会激活,日志里是 fde-console: pending (waiting for service: webServer),端口不监听。README 给的命令如下,注意版本号要和你本地 dsh --version 对齐:

# 1. install / update the plugin into a profile (the profile is created on first use)
dsh plugin --profile fde-dev add <this repo path>

# 2. 安装与 dsh 版本对齐的 web surface bundle
dsh plugin --profile fde-dev add @deepseek-ai/dsh-web-app@0.2.1-rc.2   # ← use `dsh --version`

# 3. start(不要写 dsh --profile fde-dev web,web 是保留的 alias profile)
dsh --profile fde-dev --port 38082

第二个坑同样在 README 里:add @deepseek-ai/dsh-web-app@0.2.1-rc.2 如果不固定版本,会解析到一个不兼容的旧构建,所以版本号必须钉住。

启动后打开打印出的 URL(含 auth token),侧边栏会出现 Super Workbench。本地代理会自动被发现,第一个会话零配置就能看到。

数据目录与存储迁移

数据位于 <DSH_HOME|~/.dsh>/fde-console/。新数据目录先用 JSON 存储;要把自有单元迁到 SQLite + WAL,在所有实例停止的情况下运行迁移脚本:

node scripts/migrate-storage.js   # 所有实例先停掉再跑

JSON 仍是导出和互操作格式。README 另提供 docs/VERIFY.md,按 测试门槛 → 插件加载 → API 往返 → UI 的顺序做验收。

用合成数据试玩

在正式接代理之前想先看一个填满数据的面板,可以灌一份完全合成的种子数据(占位名字、零网络请求):

node scripts/seed-demo.js                            # 默认数据目录 ~/.dsh/fde-console/data
node scripts/seed-demo.js --data-dir <dir> --force   # 自定义目录 / 覆盖

种子脚本走 JSON 存储通道,因此只接受未迁移的空目录;如果目标是迁移后的 SQLite 目录,脚本会拒绝并提示改用新目录。想重置就删掉种子写入的 JSON 文件。

典型用法

1. 在 AGENTS.md 里落地归属约定。 把 docs/ATTRIBUTION.md 里的片段贴进项目,让代理按 task/<id> 分支名或 [#<id>] 提交信息产出,提交就会自动挂到对应任务,Team Activity 里可以直接验收。

2. 用 MCP server 让代理查询看板。 在 MCP 客户端配置里加:

{ "mcpServers": { "fde": { "command": "node", "args": ["<repo>/scripts/mcp-server.mjs"] } } }

这样代理可以自己查任务列表、搜工作项、看代理状态,形成「任务板 ↔ 代理」的双向查询。

3. 跑测试保持基线。 README 给的命令是 npm test,即 node --test test/*.test.js,400+ 用例、零网络。

适用场景与注意

适合谁:本地同时跑多个编码代理、需要按任务看板管理进度和验收、且不想把会话数据传上云的 DSH 用户;也适合想把代理活动做成日报 / 周报的团队。

务必注意的几点:

  1. 插件以当前 dsh 进程权限运行。安装前下载并检查源码与许可证(MIT),确认 cordis.patch.yml、plugin/、scripts/ 的内容符合你的安全要求。
  2. 端口以 --port 显式指定(示例 38082),URL 带 auth token,注意别把它暴露到公网;出站请求走 SSRF 白名单,涉及 webhook 和 IM 通知时要预先配好白名单。
  3. Node 版本和 DSH 版本都卡得比较死(≥ 22.13、0.2.1-rc.2 系),升级前先看 docs/ 下的说明;@deepseek-ai/dsh-web-app 必须钉版本。
  4. 星标为 0、维护者为单人,属于早期个人项目,采用前建议在测试 profile 上先跑一遍 npm test 和 docs/VERIFY.md。

结尾

ningl32/agent-workbench 的价值不在新概念,而是把本地代理的观测、提交归属、验收和报告收敛到同一个只读、本地优先的面板里,且不引入第三方运行时依赖。如果你已经在用 DSH 跑多个本地代理,值得放进一个专属 profile 试一轮。

目录页:https://www.skillhub.cn/plugins/ningL32/agent-workbench
GitHub:https://github.com/ningL32/agent-workbench

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

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

小夜