dsh-waystation
Verifieddsh-waystation · v1.5.0 · MIT · Web UI
DSH(DeepSeek Harness)上的 Waystation 控制面板插件,配合 Matt Pocock skills(github.com/mattpocock/skills)的 wayfinder / triage / grilling / handoff 等技能使用:右侧 details 列面板(GitHub issue 地图/列表/技能/环境检查)、输入区状态栏胶囊、动作注入与交接开新会话。打开形式仅右侧 details 列(无 PiP/悬浮)。npm 标准安装(bundle 装配,一条命
Install
dsh plugin add dsh-waystation Confirm the layer applied with dsh --profile default --dump-config — see the install guide.
Source
Tags
Readme
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
# 期望输出类似 [email protected] 或更新版本
⚠️ 如果 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注册/dswsRPC 通道(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 卡片内出现控制面板。
数据层说明(宿主半)
- 依赖:
ghCLI(兜底路径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 数据层 +/dswsRPC 通道注册)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。