dsh-git:将本地 Git 工作台与 GitHub 页签集成到 DeepSeek Harness 右侧栏

前言

DeepSeek Harness (DSH) 的设计理念是“一切皆插件”。在开发智能体或进行代码调试时,频繁在本地终端、浏览器和 DSH 界面之间切换会打断心流。dsh-git 插件通过在 DSH 的官方右侧栏提供本地 Git 操作与 GitHub 远端页签,减少了窗口切换的开销,让 Git 工作流可以直接在 DSH 环境中完成。

核心功能

该插件通过一个 npm 包实现了浏览器端 UI 和 Host 端逻辑的结合,提供以下能力:

  1. 本地 Git 工作台:提供“Changes”和“History”页签。在“Changes”中可查看文件 diff、暂存修改,并通过 DSH 配置的模型生成提交信息;在“History”中查看提交历史和具体变更。
  2. 多仓库管理:支持显式添加的本地仓库列表,登录 GitHub 后可列出有权限的远端仓库。
  3. 远端 GitHub 页签:集成 Code(文件树)、Issues、Pull Requests 和 Actions 页签。当仓库没有远端时,Code 页签会退化为本地工作区视图,而 Issues/PR/Actions 页签会显示说明而非报错。
  4. 智能提交生成:利用 DSH 的 ctx.llm 接口,根据暂存的 diff 自动生成符合规范的提交信息。
  5. 安全与架构:本地操作通过 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) 权限。

典型用法

  1. 添加仓库:在右侧栏插件界面中添加需要管理的本地仓库路径。
  2. 登录 GitHub:点击“登录 GitHub.com”,选择设备码或填入 PAT。
  3. 暂存与提交:在“Changes”页签勾选文件,点击“✨ 生成”让模型编写摘要,点击“提交”。
  4. 查看历史:在“History”页签查看提交记录,支持查看 diff 和 cherry-pick 等操作。
  5. 管理远端:在“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 仓库。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜