dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
面向 DeepSeek Harness(DSH)Web UI 的单 workspace 多 Git 仓库工作台。
一个 DSH workspace 下可以同时发现和维护多个彼此独立的 Git 仓库,并在同一界面完成状态查看、暂存、提交、历史查看、分支与 Remote 维护、Fetch、Pull、Push 和批量网络操作。Remote 可按实际目标主机选择代理、直连、继承 Host 环境或阻止访问。
支持 DSH
>=0.2.0-rc.2 <0.3.0-0(插件源码版本 0.3.2)。升级前必须核对旧设置数据;详情见 0.2.1 迁移说明。
兼容性完整复查见 DSH 0.2.1 兼容性审计,包含已核对接口、已修复的测试和仍需运行的验收项目。
目标版本为 DSH 0.2.1-rc.2(官方标签 dsh-v0.2.1-rc.2,提交 687f282e)。
browserPeer(浏览器连接主体),兼容旧版 operator(操作主体),避免请求携带空主体。browser 条件选择入口,兼容新版服务器模块与浏览器模块分离的发布结构。0.2.1-rc.1,Cordis 为 4.0.5,Schemastery 为 3.18.5;附带重新生成的锁文件。核对时 rc.2 的依赖包尚未同步至包仓库;本插件使用的接口源码在 rc.1 与 rc.2 标签间没有差异。>=0.2.0-rc.2 <0.3.0-0,没有提高最低版本。升级源码目录后执行:
pnpm install --frozen-lockfile
pnpm check
node scripts/smoke-built.mjs
dsh plugin --profile web add ./
安装或更新后,支持热重载的环境按 DSH 提示刷新或重新加载;若提示无法热重载则重启。已有安装目录必须先更新源码并重新安装依赖、构建,单纯停用再启用插件不会替代这些步骤。
0.2.0-rc.2;本次目标:0.2.1-rc.2。dsh-git-workspace 详情页,配置绑定 git-workspace 条目。ctx.settings.register。engines.dsh(宿主版本声明)判断兼容性;旧版还会校验 DSH 宿主依赖,两个声明范围保持一致。git add -A。git branch -d)。--ff-only --no-rebase --no-autostash,允许不冲突的本地修改。>=0.2.0-rc.2 <0.3.0-0;本次核对的官方源代码提交为 687f282e。^22.19.0 或 >=24;pnpm 11.7.0。>=2.31(代理策略依赖 git --config-env)。@deepseek-ai/schemastery 精确版本 3.18.5,使用随包提供的新锁文件。在本仓库目录中执行:
pnpm install --no-frozen-lockfile
pnpm check
node scripts/smoke-built.mjs
dsh plugin --profile web add ./
pnpm check 依次执行类型检查、单元与集成测试、打包;smoke-built.mjs 则直接导入构建后的宿主模块并验证前端模块注册格式。
构建后包含:
lib/index.js # DSH Host 插件入口
lib/client.js # DSH Web 客户端入口
安装到隔离测试配置(例如 test)时可将 web 替换为 test,具体以已创建的 profile 为准;直接运行 dsh plugin add ./ 在需要 --profile 的发行版中会被拒绝。
升级原源码目录时,先备份 profile 的配置文件。现有 Git 工作区不会被清空,但旧 settings.yaml 中的代理策略不能保证自动迁移。详细说明见 升级迁移。
插件加载后,DSH 左侧原生全局面板列表中出现“Git 工作台”入口,折叠侧栏时显示图标。入口排序由 DSH 管理,不再依赖其他插件的 DOM 结构。
工作台每次打开都会重新读取 DSH 的 workspace 注册表,因此刚新增但尚未创建会话的 workspace 也会出现在选择器中;打开期间列表每 5 秒同步一次。
更完整的操作说明见 docs/USAGE.md。
进入:
DSH 左侧 Plugins(插件管理)→ dsh-git-workspace → Git 工作台网络
配置项:
| 配置 | 作用 |
|---|---|
| 代理地址 | HTTP(S) 代理,例如 http://127.0.0.1:7890;按 secret 处理,保存后不回显 |
| 走代理的主机 | 命中后为本次 HTTP(S) Git 子进程注入代理 |
| 强制直连的主机 | 清除本次子进程继承的代理环境并覆盖 Git HTTP proxy |
| 禁止访问的主机 | 在启动 Git 网络命令前阻止 |
| 未命中时 | inherit、direct 或 block |
每行一个主机,也可用逗号分隔。支持 * 通配符:
github.com
*.githubusercontent.com
git.company.local
决策优先级固定为:
禁止访问 → 强制直连 → 走代理 → 默认动作
示例:
github.com 放入“走代理的主机”。git.company.local 放入“强制直连的主机”。代理只作用于当前一次 Git 子进程,不写 git config --global,也不修改仓库配置。当前版本只为 HTTP(S) Remote 注入 HTTP 代理;SSH Remote 可继承、直连或阻止,但不会把 HTTP 代理错误套到 SSH 上。
workspaceId 和 repoId,不传可执行绝对 cwd。workspaceRegistry 解析 workspace,并用 canonical path 验证仓库仍位于 workspace 内。git status 中实际出现的路径。spawn('git', args, { shell: false }) 执行,分支、路径、URL 和提交信息不进入 shell 字符串。--ff-only --no-rebase --no-autostash;覆盖风险、已有冲突或分叉时停止。失败时 fetch 可能已更新远端跟踪引用,本地内容和 HEAD 由 Git 原生保护,不自动 stash、merge 或 rebase。/api/git-workspace/<endpoint> 精确路由,不会与 DSH API Gateway 的共享 /api interceptor 冲突。详细边界见 docs/SECURITY.md。
默认从 workspace 根目录扫描 4 层,识别 .git 目录和 worktree/submodule 使用的 .git 文件。以下目录默认跳过:
.git node_modules .pnpm-store .cache .next .nuxt .turbo
dist build coverage target vendor .venv venv __pycache__
Host 会对候选目录运行 git rev-parse --show-toplevel,canonical path 去重后再生成稳定 repoId。符号链接目录不会被递归跟随。
扫描深度和额外忽略目录属于插件 settings schema,默认安装无需配置。
批量操作分为两段:
弹窗在执行期间保持打开且不能误关闭;完成后可关闭,失败项可单独重试。工作台不再提供独立“操作中心”。
Git 不提供跨多个独立仓库的原子事务,本插件不会在部分成功后尝试危险的自动回滚。
pnpm typecheck
pnpm test
pnpm build
一次执行全部门禁:
pnpm check
测试包含:
/api interceptor。src/
├── index.ts Host 插件入口、Settings 与 RPC
├── host/
│ ├── repository-service.ts 仓库注册表和 Git 业务语义
│ ├── git-process.ts 无 shell 的 Git 子进程封装
│ ├── proxy-policy.ts Remote 主机决策和单进程代理注入
│ └── status-parser.ts porcelain v2 -z 解析
├── client/
│ ├── index.tsx Web 客户端入口
│ ├── Workbench.tsx 多仓库工作台
│ ├── DiffViewer.tsx 带行号和增删语义的 Diff 视图
│ ├── CommitDetailView.tsx 提交详情与变更文件
│ ├── NetworkSettingsCard.tsx DSH Settings 卡片
│ ├── native-panel.tsx 原生面板图标与 main slot 内容
│ └── panel-controller.ts 工作台显示生命周期
└── shared/protocol.ts Host/Client 共享协议
完整架构和 UCD 见 docs/DESIGN.md。
ProxyJump 不在当前版本范围内。Apache-2.0。第三方实现模式的来源说明见 NOTICE。