dsh-waystation
DSH(DeepSeek Harness)Web 界面的 Waystation 控制面板插件(Client + Host 双端),
配合 Matt Pocock skills 的 wayfinder / triage / grilling / handoff 等技能使用:
输入区状态栏胶囊(可接/阻塞/沉淀/交接/环境/更新)+ 右侧 details 列面板(列表 / 技能 / 环境检查三视图,
唯一打开形式)+ GitHub issue 动作注入(诊断 / 修复 / 讨论 / 执行,均带 /wayfinder /triage 技能命令)
- 插件包名:
dsh-waystation(可分发 npm 包,见 package/,当前 v1.3.3:13 项 bug 修复 + UI 逐版定稿(C 卡片式两行结构 / 迷你圆环进度 / 标签贪心折叠 +N 弹窗 / 编号+map 竖排)+ 快照性能提速 + npm 发布)
- 动态版 pluginId:
wfst-1(v9–v24 迭代产物)
- 平台: Client(浏览器页面)+ Host(Node 进程,gh CLI 数据层)
- 配套: mattpocock/skills(wayfinder / triage / grilling / handoff / ask-matt 等)
- 两种形态: ① 正式安装(npm 一条命令,开机自启,推荐);② 动态加载(进程内,会话级)
功能
| 模块 | 说明 |
|---|
| 状态栏胶囊 | 输入区上方:可接 / 阻塞 / 沉淀(零丢失快照)/ 交接 / 环境 / 更新,点击直达对应面板视图 |
| 面板 · 列表 | GitHub issue 全列表(map 置顶 + 子票迷你圆环进度)、标签过滤 chips(GitHub 配置色)、阻塞筛选、已关闭折叠、行级动作按钮;行布局 = 两行结构(编号/map 竖排 + 标题占满整宽限 2 行 + 标签/按钮行) |
| 标签贪心折叠 | 单行不换行:宽面板显示多标签、窄面板少标签(最少 1 个),放不下的折叠为 +N 弹窗(fixed 定位 · 自适应面板左右边界 · 内容完整可见) |
| 进度显示 | map 行右侧 18px 迷你圆环 + n/total(等宽数字右缘对齐,圆环零间隙) |
| 面板 · 技能 | 技能雷达(推荐 / 列表 / 圆环),点击注入 /skill |
| 面板 · 环境检查 | 8 项前置检查(仓库定位 / setup / tracker / gh CLI / 登录 / API / 技能探测),红黄绿分组 + 一键处理 |
| tabs 行 | 列表 / 技能 / 环境检查 + 右侧刷新按钮 + 最右侧版本号(如 v1.3.3),便于核对已更新 |
| 行级动作 | 按 label 四选一:诊断(/triage) / 修复(/wayfinder) / 讨论(/wayfinder) / 执行(/wayfinder),按钮色 = GitHub label 配置色,点击预填输入框;执行/新会话按钮常显(复制/外链也常显) |
| map 详情 | 顶部「执行」+ 任务按状态动作、可接/已认领/被阻塞/已关闭垂直走廊、Decision/Fog/Out-of-scope 折叠 |
| 交接 | 第一击注入 /handoff 时间戳模板;第二击预填 /read + 复述确认 prompt 并开新会话 |
| 统一引导句 | 动作注入统一带「从第一性原理出发完成任务,并对抗式审查。」 |
使用方式
第 0 步:安装 DSH CLI(仅首次 · 一次性)
DSH CLI 提供 dsh 命令行工具(用于安装/更新/卸载插件、查看 DSH 状态)。
本插件的安装/更新/卸载都通过 dsh 命令完成。
推荐一 · npm 全局安装(最常用)
npm install -g @deepseek-ai/dsh
验证安装成功:
dsh --version
# 期望输出类似 dsh@1.0.x 或更新版本
⚠️ 如果 dsh 命令找不到(PATH 未配置):
- Windows:npm 会自动把全局 bin 加到
%APPDATA%\npm,重启 cmd/终端即可
- macOS / Linux:可能需要手动加
$(npm config get prefix)/bin 到 ~/.bashrc 或 ~/.zshrc
推荐二 · 不装 CLI,用 npx 临时跑(不需要全局装)
npx --yes @deepseek-ai/dsh --version
npx --yes @deepseek-ai/dsh 等价于 dsh(每次首次会缓存包)。
方式一:正式安装(推荐 · 一条命令 · 装进整个 Harness · 开机自启)
用 DSH CLI(dsh)或 npx 临时命令(跨平台,Windows / macOS / Linux 同一句;
~/.dsh = DSH 的家,DSH_HOME 自定义过就换成它的路径):
安装(已装过 DSH CLI):
dsh plugin --profile web add dsh-waystation
安装(未装 DSH CLI,用 npx):
npx --yes @deepseek-ai/dsh plugin --profile web add dsh-waystation
-
命令把插件装进 web profile(~/.dsh/profiles/web/node_modules),同步 web/package.json
并自动 reconcile 注册(bundle 装配)。装完刷新浏览器页面(http://127.0.0.1:3080)即生效,之后每次 DSH 启动自动加载。
-
✅ 一键装完即用(bundle 装配):本包声明 dsh.bundle.patch(包根 cordis.patch.yml),
dsh plugin add 自动把包加入 profile 的 dsh.profile.bundles,启动时 loadProfile 自动应用——
无构建脚本(pnpm v10 不再拦截),无需手动编辑任何文件;dsh plugin remove 自动移除。
-
⛔ 千万不要用 npm install --prefix ~/.dsh/profiles 安装:profiles/node_modules 是 DSH 的
扁平回退软链区(启动时 healProfilesModuleFallback 自动重建,装的是 npx 全家桶),
npm --prefix 会把它当新项目,把 package.json 未声明的包(含你的插件)全部 prune 掉。
2026-08-14 实测事故:一次安装插件连带删掉 511 个包,DSH 插件全部加载失败。
插件正确安装位 = profiles/web/node_modules(官方命令负责),注册写 web/cordis.patch.yml。
-
为什么不用 npm install -g:-g 装到 %APPDATA%\npm\node_modules,而 Node 的默认解析链
不包含该目录(本机实测 require.resolve 失败)——DSH 进程 require 不到,装了也白装。
独立 CLI 应用(如 dsh-feishu-bot)靠 bin 快捷方式运行所以能 -g;插件必须被 DSH 进程
解析,所以装 Harness 自己的 profile。
升级:
dsh plugin --profile web update dsh-waystation
# 或用 npx:npx --yes @deepseek-ai/dsh plugin --profile web update dsh-waystation
卸载:
dsh plugin --profile web remove dsh-waystation
# 或用 npx:npx --yes @deepseek-ai/dsh plugin --profile web remove dsh-waystation
# 并手动删除 cordis.patch.yml 里的 dsh-waystation insert 块(或保留,DSH 找不到包会忽略)
原理:DSH 的 dsh.client 插件机制(dsh-client-modules)会扫描组合里声明了
dsh.client: { platform: 'web' } 的包,把 exports["./client"] 指向的 bundle
伺服为 /plugins/<id>/client.js 并注入 window.__DSH_BOOT__,浏览器内核在启动
时自动挂载该插件条目。宿主半 lib/index.js 通过 ctx.connection.rpc 注册
/dsws RPC 通道(gh CLI 数据层),Client 半经同一通道取数。
方式二:动态加载(零安装 · 会话级 · 重启失效)
在 DSH 会话中由 Agent 通过 Cordis 工具链加载:
cordis_define —— plugin 用 kind: new、idPrefix: wfst,code.host 填入
host.js 的内容、code.client 填入 client.js 的内容。
cordis_run —— 首次运行需在界面批准(安全机制,Client 代码要在页面执行)。
- 生效后输入区出现 Waystation 胶囊;Run 卡片内出现控制面板。
数据层说明(宿主半)
- 依赖:
gh CLI(兜底路径 D:\0Tools\GitHubCLI\gh.exe)+ git 仓库工作目录(默认
D:\2Study\StudyNotes\SKILLS,可随会话 cwd 切换)。
- 数据流:
gh issue list 枚举全量 issues(map 列表从中过滤 wayfinder:map)→ GraphQL aliases 一次查询全部 map 详情(subIssues + labels + assignees + blockedBy)→ 组装快照(map 五区块解析 + tickets + stats)。
- RPC 通道
/dsws:status / snapshot / refresh / cwd / handoffLatest / claim。
- 刷新策略:纯手动(状态栏「更新」/ 列表「刷新」/ 打开面板即刷)+ 60s 快照缓存、30s 环境检查缓存。
- 性能:v1.3.3 起快照加载 ~35s → ~12s(aliases 批量 8 次 GraphQL → 1 次)。
v1.3.3 新增(2026-08-15)
- 13 项用户 bug 修复(配置面板全展开 / textarea 自适应 / 占用→阻塞 / 按钮常显 / map 完成态 / 双 loading 修复等)
- UI 逐版定稿:C 卡片式两行结构、编号/map 竖排、18px 迷你圆环进度、标签贪心折叠 +N 弹窗(自适应面板)、窄屏按钮正方形
- tabs 行刷新按钮 + 最右侧版本号 v1.3.3
- 快照性能提速 ~35s → ~12s(GraphQL aliases 批量 + 合并 fetchMaps + 缓存 60s)
- 开发工作流文档 DEV-WORKFLOW.md(改 bug → 实时生效完整流程)
完整变更历史见 CHANGELOG.md。
文件
host.js / client.js —— 动态版源码(cordis_define 的 code.host / code.client 函数体)
package/ —— 可分发插件包(正式安装用,标准 npm 包结构)
package.json —— 包声明:dsh.client(platform web / immediately)+ dsh.bundle.patch(装配)
cordis.patch.yml —— bundle 装配 patch(dsh plugin add 自动应用,无构建脚本)
lib/index.js —— 宿主半(ESM:gh 数据层 + /dsws RPC 通道注册)
lib/client.js —— 浏览器半 bundle(window.__ModuleLoader__.load 注册格式)
README.md —— 本说明
issues-checklist.html —— 迭代需求清单(v9–v24,43+ 项)
DESIGN.md / prototype.html —— 设计定稿与原型
tests/ —— host 逻辑测试(verify-status / verify-panel)
备注
- 若动态版(方式二)与正式安装版同时生效,两套 UI 会同时出现(同名插槽注册),
建议保留正式安装版即可,动态版
cordis_stop 掉。
- 本插件需要 GitHub 仓库工作目录(wayfinder 地图仓库)才能取到数据;
非仓库目录下环境检查会提示「仓库定位」未就绪。
- 用户界面偏好(开始模板等)存浏览器 localStorage,与动态版共用同一 key。