Skip to content

core

Verified

@dsh-workbench/core · v0.1.15 · Web UI

个人工作台:Agent 工作台外壳(左栏 + 常驻对话 + 自研右侧数据面板)。

Install

dsh plugin add @dsh-workbench/core

Confirm the layer applied with dsh --profile default --dump-config — see the install guide.

Source

Published to npm without a public repository. Inspect the package contents before installing.

Creators

Readme

dsh-workbench

基于 DeepSeek Harness 的 Agent 工作台: 一个 dsh 插件包 —— 换掉 dsh 的左栏,中列保留 dsh 的对话,右侧加一列自研的数据面板。 dsh 本体一行不改,两个实例可以同时开着。

dsh web (:3080)                       dsh workbench (:3081)
┌ 左栏 ──────┬ 对话 ───┐             ┌ 左栏 ──────┬ 对话 ────┬ 数据面板 ──┐
│ ◆ 品牌     │         │             │ ◆ 品牌     │          │ 看板       │
│ [ + 新会话]│         │             │ [ + 新会话]│          │ 服务状态   │
│ ◧ 面板     │         │             │ ▸ 项目     │          │ 缺陷分布   │
│ 会话…      │         │             │  ▸ 会话    │ (常驻)    │ 最近缺陷   │
└────────────┴─────────┘             └────────────┴──────────┴────────────┘

所有事情都是「告诉 agent 去做」。 工作台不是操作台,是交代任务 + 看 agent 干得怎么样的地方; 所以界面只读 —— 面板上没有写按钮,写操作一律由 agent 的工具完成。

30 秒上手

先决条件(就三条):

要有 为什么 怎么有
dsh 本体。本包在 0.1.7-rc.2 上验过 npm i -g @deepseek-ai/dsh
node + pnpm dsh 的 plugin 子命令是转发给 pnpm 的;没有 pnpm 会直接报 dsh: pnpm was not found 各自装
跑过一次 dsh web setup 拿 ~/.dsh/profiles/web 当模板(bundle 清单 + 设置快照 + patch 点名的依赖)。没有它会明确报错,不会静默建出半个 profile dsh web,起来就行,然后 Ctrl-C

然后两条命令:

npx --yes @dsh-workbench/core@latest setup   # ① 建 workbench profile + 把工作台装进去(幂等,可重复跑)
npx @dsh-workbench/core                       # ② 起工作台,默认 :3081

打开 http://localhost:3081 就是工作台。你原来那份 dsh web 继续用 :3080,两边互不影响。

首次打开会自己做什么

  • 装 opencli 的隔离运行时:启动体检自己装,落在 ~/.dsh/workbench/opencli/, 完全不碰你本机的 ~/.opencli(插件目录靠改 HOME 分开)。装不上时(没网 / 源不通) 失败态里有一条能直接照抄到终端的命令 —— 那条得在终端跑,工作台自己发起的命令带文件沙箱。
  • 要面板有数据,得登录 Coding:卡片上点「去登录 ↗」,登完切回来按那颗「重试」 (刻意不做自动重试 —— 登录什么时候完成我们不知道)。
  • 没登录 / 装不上都是明确的失败态,不会留一块白屏让你猜。

面板上的具体模块(缺陷看板、构建发布、代码分析…)按需装:外壳本身零业务模块, 在 :3081 的「工作台模块市场」里装,也可以让 agent 去装。

日常

想做什么 怎么做
起工作台 npx @dsh-workbench/core
换端口 WORKBENCH_PORT=3091 npx @dsh-workbench/core
升级 重跑一次 npx --yes @dsh-workbench/core@latest setup(幂等),再重启工作台进程
重建 profile mv ~/.dsh/profiles/workbench ~/.dsh/profiles/workbench.bak,再跑一次 setup
彻底不用了 删 ~/.dsh/profiles/workbench 与 ~/.dsh/workbench 两个目录(都不影响 dsh web)
改设置 只有工作台要的(面板显示哪些模块、会话隔离)在 :3081 的 Settings 里改

和 dsh web 的关系

  • 另一个 profile、另一个端口、另一个进程:workbench profile 在 ~/.dsh/profiles/workbench; 会话 / 存储 / 附件 / 模块配置全走 ~/.dsh/workbench/**,与 web 数据分家。只有一样有意共享: API 凭据(~/.dsh/.credentials.yaml,一机一把 key)。
  • 两边都要的设置只在 dsh web 里配一次(模型供应商 / API key / 搜索源 / MCP):工作台启动时 把 web 的 profile patch 叠在自己上面(--patch,单向、实时)。被 web 管的行在工作台的 Settings 页里会显示 overridden by a home patch or command-line overlay —— 那是提示,不是故障。 反向不成立:工作台里配的不会流回 web。
  • ⚠️ 别在 Settings → 插件里把 @dsh-workbench/core 关掉:关掉 = 它那份 bundle patch 整份不再应用 (包括里面的"禁用出厂左栏"),界面会退化成原版 dsh web(左栏回来、右侧面板消失)。 数据一个都不丢;把开关拨回来就恢复 —— 进不去设置页就按 Meta+,。别当成故障去重建 profile。

常见问题

症状 原因 / 怎么办
setup 报 scripts/seed-profile.sh: Permission denied 0.1.6 的已知缺陷(发出去的包丢了脚本的可执行位)。应急:chmod +x ~/.npm/_npx/*/node_modules/@dsh-workbench/core/{scripts/seed-profile.sh,bin/opencli-isolated} 后重跑;0.1.7 起已修
页面白屏、只显示 Failed to load plugins 有插件往未声明的槽注册(抛错即整个 entry 激活失败)。看控制台里我们打的 [dsh-workbench] apply failed
面板一直空着 多半是没登录 Coding(见上);或这个工作区的 git origin 不指向 e.coding.net
打开面板 / 按刷新要等 5–8 秒 正常:opencli 每次调用有固定约 5 秒开销(起浏览器会话)。没有缓存,数据一律实时
体检那屏说「检测浏览器通道 · 没连上」,可面板照样能用 本机全局 opencli 与隔离运行时版本不一致,daemon 被顶成对方那版;下一条浏览器命令会自动把它重启回来,体检复检后改回「已连接」
一切正常,但左栏是出厂样子、右边没有面板 工作台插件在 Settings 里被关了(见上一条 ⚠️)

排障全表在仓库的 docs/OPERATIONS.md; 把工作台装到别人机器上的前置清单见 docs/HANDOFF.md。

从源码跑 / 参与开发

git clone [email protected]:code-farmer-i/dsh-workbench.git
cd dsh-workbench/packages/workbench
pnpm install
pnpm run dev     # 监听 src/**(重建产物)+ 起工作台 :3081;改完不用重启、不用刷新页面
pnpm run check   # 门禁:类型 / 覆盖率 / 架构 / 运行时边界 / 接线自检
./bin/dsh-workbench   # 只想起工作台、不需要监听改动时用它

pnpm run dev 会先替你把 profile 保障成本仓这份(不是源上那份),等首次构建完成再起实例; :3081 已经有实例在跑时就只监听、不重复起第二个。改界面时开着它就够了: 浏览器半侧重建 client.js 后由 dsh 的 HMR 热换插件(不刷新页面),宿主半侧按模块路径热重载。

只有两种情况要重启进程:改 cordis.patch.yml(组合层)与 package.json 的 bundle 清单。

结构与边界(两个运行时、槽位接线、模块包的门禁)见仓库的 docs/ARCHITECTURE.md · AGENTS.md。