前言¶
DSH 的会话视图默认以对话流呈现。一次长任务跑下来,你能看到模型每一轮的输出,但很难一眼看出工程进度:哪些任务做完了、当前在哪个阶段、上一个出错是不是返工、这轮用了多少 token。用文本 todo 列表或日志去补,就得在对话和笔记之间来回切。
下面介绍 luotaiyu/dsh-worksite-plugin(工程现场插件,DSH Web GUI 会话视图插件)。它把当前 Session 的持久事件、任务清单和运行状态,翻译成一座正在施工的工地:拟人化工程师“小匠”、施工塔、工序航线、现场动态和工程仪表盘。项目由 LuoTaiyu 维护,版本 0.1.0,许可证 MIT。
这是什么¶
一句话定位:一个挂在 DSH 会话视图切换环里的主题化可视化插件,不改模型行为,只负责把会话信号渲染成工地视图。
- 包名:
@local/dsh-site-view - 仓库:https://github.com/LuoTaiyu/dsh-worksite-plugin
- 状态视图:安装后打开任意会话,顶部会话视图切换环会出现“工程现场 / Worksite”
环境要求写在 package.json 的 engines 里:
"engines": {
"dsh": ">=0.2.1-rc.5 <0.3.0"
}
GitHub 仓库名只接受 ASCII 字符,中文名会被清洗成 -,所以实际仓库使用稳定 slug dsh-worksite-plugin,项目中文名仍是“工程现场插件”。
核心功能¶
拟人化现场工程师“小匠”¶
六种状态:思考、施工、验收、交付、返工、待命。每种状态带表情、安全帽、图纸、扳手和状态气泡,状态直接来自 useSession() 的 running、blank、promptAttempted 和错误状态。
施工塔¶
把 todo 或会话阶段映射成楼层,楼层分已完成、施工中、待建三种状态,附带塔吊和作业面提示。多任务楼层会做折叠。
工序航线¶
四段式阶段轨:图纸会审 → 主体施工 → 质量验收 → 交付使用,对应 deriveSite() 推导出的会话阶段。
现场动态¶
最近 5 次工具调用,按改图、看图、勘测、施工、外勤、排期、分包、交付分类展示,数据来自 Session binding 的 eventSource(resident 会话事件窗口)。
施工清单与进度估算¶
直接读取 useProjection('todos') 的当前任务清单。没有 todo 时降级为按会话阶段估算。
需要明确的一点:这里的进度是会话信号估算,不是模型自报的完成度。todo 占主导,工具活动与验收信号作补充;界面上明确标注了这一点。
工程仪表盘¶
展示工序、改图、轮次、用时、令牌、异常六项。
主题与无障碍¶
全部 UI 使用 --dsw-alias-* 主题令牌,支持浅色/深色、键盘焦点与 prefers-reduced-motion。
安装与启用¶
README 给了三种方式,都没有 dsh plugin add 这样的单行命令,不要凭插件名拼接。
方式一:从 GitHub 安装¶
在 DSH 的 Plugin Manager 中使用“安装第三方插件”,填入 commit-pinned Git 地址:
git+https://github.com/LuoTaiyu/dsh-worksite-plugin.git#5c52c9019e461399feddcf060b4e86522d0c7b06
如果更希望跟随仓库更新,可以先用仓库地址安装,再做一次更新:
git+https://github.com/LuoTaiyu/dsh-worksite-plugin.git
方式二:从插件市场安装¶
DSH 当前没有官方中心市场;Plugin Manager 的 Discover 只列出用户自己添加的索引。该仓库自带一个 format 1 市场索引:
https://cdn.jsdelivr.net/gh/LuoTaiyu/dsh-worksite-plugin@main/market.json
启用 Plugins → Experimental plugins → Custom plugin markets,在 Discover 中添加这个索引,即可搜索并安装“工程现场”。
下面是插件市场索引地址,可用 web_fetch 打开核对:
https://cdn.jsdelivr.net/gh/LuoTaiyu/dsh-worksite-plugin@main/market.json
方式三:本地安装¶
本包是一个本地 Bundle。通过 Plugin Manager 的“安装第三方插件 → 本地目录”安装 dsh-site-view 目录的绝对路径,或由宿主侧 install_bundle 完成。
当前桌面 profile 以 link: 方式安装到本工作区;移动或重命名 dsh-site-view 目录后,需要重新安装一次。
装完后打开任意会话,顶部视图切换环里找“工程现场 / Worksite”。若暂时看不到,刷新一次页面即可加载新客户端 Bundle。
数据来源与文件结构¶
数据由五个入口喂给浏览器侧的 client.js:
| 数据源 | 用途 |
|---|---|
useSession() |
running、blank、promptAttempted、错误状态 |
useProjection('todos') |
当前任务清单 |
useProjection('goal') |
持久目标(可选) |
useProjection('title') |
会话标题(可选) |
Binding 的 eventSource |
resident 会话事件窗口:工具调用、轮次、错误、token 用量 |
仓库文件分工:
| 文件 | 作用 |
|---|---|
package.json |
Bundle 清单、dsh.bundle.patch、dsh.client |
cordis.patch.yml |
插入 site-view 行 |
index.js |
Host 半侧(空实现,负责 Loader 行) |
client.js |
浏览器半侧:conversation.view 注册、数据推导、React 组件、CSS |
locale/{en,zh}.json |
Plugin Manager / Settings 显示元数据 |
icon.svg |
原创图标 |
market.json |
DSH 插件市场索引(format 1) |
浏览器侧通过 deriveSite()、buildFloors() 和 Client apply() 注册契约把数据推导成视图模型。
典型用法与验证¶
装好后不需要额外配置,进任意会话切换到“工程现场”即可。要看推导逻辑本身是否成立,可以跑仓库自带的纯函数测试:
node test/derive.test.mjs
README 记录的已完成验证:
node --check通过;package.json/ locale JSON 解析通过;deriveSite()、buildFloors()与 Clientapply()注册契约的断言通过,覆盖空闲、施工、部分完成、全部完成、错误返工、多任务楼层折叠、slot 注册;- 已安装到
desktopprofile,dsh.profile.bundles包含@local/dsh-site-view; - 运行中的 Host
/plugins/events图已包含@local/dsh-site-view,最终客户端 Bundle 以200返回并通过语法检查; - Bundle 清单、locale 与 icon 导出检查通过。
未完成的验证:真实浏览器中的最终视觉验收(当前环境没有可用的页面控制/截图通道)。装上之后应以实际页面为准,检查浅色/深色主题、窄窗口、无 todo 会话与错误会话。
适用场景与注意¶
适合想在长会话中直接看到任务进度、工具活动和轮次消耗的 DSH 用户。它对模型能力没有要求,也不改变会话行为。
几点需要注意:
- 插件以当前 dsh 进程的权限运行,安装前应先检查源码与许可证(MIT),确认第三方索引和 commit pin 可信;
- 界面上的进度是会话信号估算,不是精确完成度,不要把它当作验收清单;
- 市场索引是用户自己添加的,DSH 没有官方中心市场,社区目录属于独立站点,与 DeepSeek / 幻方无官方从属关系;
- 版本仍是
0.1.0,视觉验收尚未在真实浏览器里做过,建议先在测试 profile 上装。
小结¶
这个插件的价值在于把零散的会话信号收拢成一个统一的工地视图:todo 变成施工塔楼层,阶段变成工序航线,工具调用变成现场动态,进度条变成仪表盘的轮次与令牌。它不替代 todo 列表,而是给长会话补了一块可扫读的进度面板。
- 目录页:https://www.skillhub.cn/plugins/LuoTaiyu/dsh-worksite-plugin
- GitHub:https://github.com/LuoTaiyu/dsh-worksite-plugin