前言¶
DeepSeek Harness (DSH) 的设计理念是“一切皆插件”。在开发智能体或进行代码调试时,频繁在本地终端、浏览器和 DSH 界面之间切换会打断心流。dsh-git 插件通过在 DSH 的官方右侧栏提供本地 Git 操作与 GitHub 远端页签,减少了窗口切换的开销,让 Git 工作流可以直接在 DSH 环境中完成。
核心功能¶
该插件通过一个 npm 包实现了浏览器端 UI 和 Host 端逻辑的结合,提供以下能力:
- 本地 Git 工作台:提供“Changes”和“History”页签。在“Changes”中可查看文件 diff、暂存修改,并通过 DSH 配置的模型生成提交信息;在“History”中查看提交历史和具体变更。
- 多仓库管理:支持显式添加的本地仓库列表,登录 GitHub 后可列出有权限的远端仓库。
- 远端 GitHub 页签:集成 Code(文件树)、Issues、Pull Requests 和 Actions 页签。当仓库没有远端时,Code 页签会退化为本地工作区视图,而 Issues/PR/Actions 页签会显示说明而非报错。
- 智能提交生成:利用 DSH 的
ctx.llm接口,根据暂存的 diff 自动生成符合规范的提交信息。 - 安全与架构:本地操作通过 loopback 路由访问 Host;令牌仅存储在 Host 侧,浏览器界面仅显示令牌尾 4 位;强推操作仅允许
--force-with-lease。
安装与启用¶
使用 DSH 的插件管理器安装该插件。
dsh plugin --profile <profile> add @linxueyuan/dsh-git
安装完成后,必须重启 DSH 并在浏览器中进行硬刷新,因为 Host 端的模块不会随页面刷新自动重新加载。
登录与权限配置¶
插件支持两种登录 GitHub 的方式:
- 设备码:通过内置的 GitHub App 登录,开箱即用。但需确保 GitHub App 已安装到你的账号或组织,否则登录成功但无法看到仓库。该方式生成的令牌 8 小时后过期,插件会自动续期。
- Personal Access Token (PAT):手动填入 PAT。Classic Token 需拥有
repo权限,细粒度 Token 需包含 Contents (R)、Issues (RW)、Pull requests (RW) 和 Actions (RW) 权限。
典型用法¶
- 添加仓库:在右侧栏插件界面中添加需要管理的本地仓库路径。
- 登录 GitHub:点击“登录 GitHub.com”,选择设备码或填入 PAT。
- 暂存与提交:在“Changes”页签勾选文件,点击“✨ 生成”让模型编写摘要,点击“提交”。
- 查看历史:在“History”页签查看提交记录,支持查看 diff 和 cherry-pick 等操作。
- 管理远端:在“Code”、“Issues”、“PR”或“Actions”页签进行文件浏览、Issue 管理或 Workflow 运行控制。
注意事项¶
- 令牌安全:令牌仅存在于 Host 侧,浏览器不可见完整内容。文件以明文形式存储,权限为
0600。 - 强制推送限制:为了防止误操作,插件强制要求使用
--force-with-lease进行强制推送,不支持裸--force。 - Code 树视图:本地未推送的提交在“Code”页签的文件树中不会显示,该视图以 GitHub 远端为准。
- 环境要求:需要 Node.js 环境满足
^22.19.0 || >=24.0.0。
结语¶
dsh-git 通过将 Git 工作流和 GitHub 页签下沉到 DSH 右侧栏,结合 LLM 辅助生成提交信息,为开发者提供了一个集成度较高的代码管理入口。更多细节与源码,可参考其 GitHub 仓库。