dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
会话页里多出一个 Git 页;左侧是未暂存 / 已暂存的改动,右侧是带行级操作条(暂存 / 丢弃)的 diff 预览。
DSH Web GUI 的 Git 面板插件:在会话界面的标签栏里,紧挨「对话 / 轨迹」再加一个 Git 页, 用来完成日常的查看改动、暂存、提交、看 diff、翻历史、切分支和推拉。
@fengbinmov/dsh-git-panelexports ".")+ 浏览器半(exports "./client")dsh >= 0.1.5-rc.1、Node ^22.19.0 || >=24.0.0、react ^18.2.0(peer)┌─ 会话页 ────────────────────────────────────────────────┐
│ 对话 │ 轨迹 │ Git ← conversation.view 槽位 │
├─────────────────────────────────────────────────────────┤
│ 更改 │ 历史 ← 面板内部的两个标签页 │
│ ┌───────────────┬──────────────────────────────────┐ │
│ │ 未暂存的更改 │ │ │
│ │ 已暂存的更改 │ 预览 / 提交详情 │ │
│ ├───────────────┤ │ │
│ │ 提交信息 [提交]│ │ │
│ └───────────────┴──────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘
AM 这类状态两侧各一行,各自带自己那一侧的增删行数)。Ctrl 点击多选、Shift 点击范围选择。merge / rebase。.git 里的操作标记文件),面板顶部会出现一条警告条,
带一个「中止」按钮(abort)。fetch / pull / push。当前分支没有上游时,推送自动带 --set-upstream origin <branch>。/gitpanel/events(SSE):分支、HEAD 或文件摘要(一个 spawn 的 digest)变化时通知浏览器重新拉取。面板里每个动作都是「先在本地动,再等 Git 答复」:
预测全是 core/types.ts 里的纯函数:predictStaged / predictDiscarded / predictCommitted /
predictLineSelection,都有单测覆盖。
插件以 profile bundle 的形式挂载:宿主半随 profile 启动,浏览器半由 client-modules
按 package.json 的 dsh.client 声明提供给 GUI。
# 需要 dsh >= 0.1.5-rc.1、Node ^22.19.0 || >=24.0.0
dsh plugin --profile web add @fengbinmov/dsh-git-panel@latest
# 重启 dsh web
包内已带构建产物(lib/index.js 宿主半 + lib/client.js 浏览器半),装完不需要本地编译。
# 1) 克隆并构建(仓库根即包根)
git clone https://github.com/fengbinmov/dsh-git-panel.git
cd dsh-git-panel
pnpm install
pnpm build # tsc -b && tsdown → lib/index.js(宿主)+ lib/client.js(浏览器)
# 2) 注册进 profile(link: 指向克隆目录,改完代码重建即可生效)
dsh plugin --profile web add link:<克隆目录的绝对路径>
# 3) 重启 dsh web
登记后 ~/.dsh/profiles/web/package.json 会长出两处(这是实际生效的写法):
{
"dependencies": { "@fengbinmov/dsh-git-panel": "link:<克隆目录的绝对路径>" },
"dsh": { "profile": { "bundles": ["@deepseek-ai/dsh-base", "...", "@fengbinmov/dsh-git-panel"] } }
}
卸载:
dsh plugin --profile web remove @fengbinmov/dsh-git-panel
生效范围
| 改动位置 | 需要做什么 |
|---|---|
lib/client.js(src/client/**) | 刷新页面即可(浏览器半由 client-modules 现取现发) |
lib/index.js(src/host/**、src/core/**) | 重启 dsh web —— 路由与服务在宿主进程里 |
改了源码别忘了 pnpm build:link: 方式下 profile 直接读这个包的 lib/,不会自动编译。
克隆后先 pnpm install(Node ^22.19.0 || >=24.0.0;packageManager 固定为 pnpm 11.7.0):
pnpm typecheck # tsc -b --pretty false
pnpm test # vitest run
pnpm build # tsc -b && tsdown
发版:改 package.json 的版本 → 提交 → 打 vX.Y.Z tag 推上去。GitHub Actions 会跑完整门禁,
再经 OIDC Trusted Publishing 发布到 npm(不需要 token、不需要 OTP),并附带 provenance 证明。
首次使用需在 npm 的包设置里登记一次 trusted publisher(GitHub Actions / fengbinmov / dsh-git-panel / release.yml)。