@feng0531/dsh-vcs
Read-only Git and SVN change preview for DSH 适合需要在DSH Web界面中快速扫读和对比代码变更的开发者。
インストール
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:f-e-n-g-0531/dsh-vcsドキュメント
README 全文を読む ↗DSH VCS
DeepSeek Harness(DSH)Web 的只读 Git / SVN 变更预览插件。最新正式发布版本 0.3.36,包名 @feng0531/dsh-vcs;GitHub 与 npm 安装包均已可下载,latest=0.3.36,两端下载包摘要一致。本次应用户明确要求在真实 DSH GUI 尚未验收时发布;自动验证不代表真实 GUI 验收通过。详见发布核验记录。非商业许可证不变。
项目仓库:https://github.com/f-e-n-g-0531/dsh-vcs 。采用 DSH VCS 非商业源码公开许可证 1.0:允许非商业使用、修改与分发,禁止商业使用(包括公司内部用于商业项目的开发、测试与维护),商业用途须另行书面授权。分发须保留许可证和版权,修改版须注明修改。第三方组件保持原许可。这是源码公开项目,不是 OSI 认可的开源软件。
功能
-
支持 Git 本地 HEAD 历史分页、提交详情、父提交选择及历史 Diff;可筛选已加载提交和提交内文件。历史 Diff 默认基础文本,可按需加载只读 Monaco。此功能尚待真实 DSH GUI 验收。
-
顶部下拉选择仓库,一次展示一个仓库;插件内没有额外的左侧仓库导航栏,文件列表仍在比较区左侧。
-
Git 全部 / 已暂存 / 未暂存变更;SVN 本地 BASE 与工作副本、属性差异。
-
Monaco 只读差异视图:并排 / 行内、忽略行尾空白、自动换行、差异导航;编辑器加载失败时提供简化文本比较。
-
文件搜索、目录分组 / 列表、中英文界面,以及新增、删除、重命名、未跟踪文件等状态预览。
-
不提供编辑、暂存、提交、回滚、推送、拉取或冲突解决操作。
仓库发现
发现范围来自当前 Session 的服务端工作目录,浏览器不能指定任意绝对目录。宿主使用 maxDepth: 1、shallow: true:检查当前目录与直接子目录,并查找包含当前目录的上级 Git / SVN 仓库,不递归扫描整棵项目树。
更深层项目可在界面输入相对当前 Session 目录的子目录(例如 packages/example)重新发现;目标同样采用浅层扫描。绝对路径、.. 越界与经符号链接 / junction 的定向扫描会被拒绝。定向发现补充已有项目,清空输入重新发现则回到默认范围。
包含仓库可能大于 Session 目录。 Session 位于仓库子目录时,预览范围可以覆盖整个已发现仓库,而不只该子目录。
比较语义
| 类型 / 模式 | 左侧 | 右侧 |
|---|---|---|
| Git 全部 | HEAD | 工作区 |
| Git 已暂存 | HEAD | Index |
| Git 未暂存 | Index | 工作区 |
| SVN | 本地 BASE | 工作副本 |
新增、未跟踪或没有 HEAD 的文件按适用情况使用空白基线。Git 冲突降级为 HEAD 对工作区,不提供三方合并;SVN 替换节点可能没有可用的本地 BASE,会提示并使用空白基线,不为此连接服务器。
构建与安装
需要 Node.js 22 或更新版本、npm、兼容插件接口的 DSH Web 宿主,以及 PATH 中可用的 Git 或 SVN。完整后端测试还需要 git、svn、svnadmin;缺少工具时应检查跳过项,不能把部分测试视为完整验收。
在项目根目录执行:
npm ci && npm run check
npm pack
check 构建并运行测试;npm pack 经 prepack 再次执行检查,生成含前端资源的安装包。推荐安装本地构建的 tgz,而不是让正式运行环境临时构建源码:
dsh plugin --profile web add
将占位符替换为生成包的绝对路径;路径有空格时加引号。安装会改变目标 profile,请先核对环境。需要重新加载宿主时,由用户自行重启 DSH,再刷新已有 Web 页面;不要启动另一台服务器代替现有 GUI。
从 Git 安装依赖 prepare 构建,需要构建依赖及生命周期脚本执行权限。pnpm 宿主可能还需显式批准构建(allowBuilds);按实际 pnpm 版本仅授权可信包,不要全局放行脚本。建议从本仓库检出后构建 tgz 安装。
限制与排错
- 单侧文本预览上限 2 MiB;二进制、超大文件和目录 / 特殊文件显示提示,不保证内容比较。
- 编码自动识别:UTF-16 LE / BE BOM 优先;其余先严格 UTF-8,再尝试 GBK。带 UTF-8 BOM 的损坏文本不会回退 GBK。无 BOM 的 UTF-16 不保证支持;自动识别并非任意编码检测器。
- 发现有时间、目录数和仓库数限制;警告或截断不等于没有其他仓库。Git 子模块和 SVN externals 不提供专门的递归管理界面。
- 工具不可用时检查 PATH;发现授权约 5 分钟后过期,需要手动重新发现。状态已变或 Session 工作目录变化时刷新 / 重新发现。
- 取消界面请求不保证立即停止正在执行的状态 / 比较子进程;命令仍受各自超时与输出上限约束。
- 编辑器资源不可用时检查构建与安装包。简化文本比较不等价于 Monaco 的完整功能。
- 自动化测试不替代真实 DSH 浏览器验收;本说明不宣称已通过特定宿主、浏览器或操作系统的端到端验收。
发布与安装验收
见 安装、升级与回滚 和 兼容性与验收矩阵。发布包必须通过 npm run verify:package 和 npm run test:install;后者验证生产依赖安装,不代表真实 DSH 浏览器验收。正式发布统一从 GitHub Actions 手动触发,使用 NPM_AUTOMATION_TOKEN 先发布 npm,再公开 GitHub Release;普通提交和标签 CI 不自动发布。
项目资料
见 贡献指南、发布清单、变更记录 和 安全说明。
界面交互参考 Fork。这仅说明设计灵感,不表示与 Fork 官方有关联、获得背书或继承其代码许可。