@angel-gp/dsh-client-ui-gitpeek
只读的 GitHub 数据查看面板,作为 DeepSeek Harness(DSH)会话的第三个标签页(紧跟「轨迹」之后),在浏览器中直接调用 GitHub REST API,并排展示 Actions 运行、Commits、Releases 三列数据。 <img width="2141" height="1375" alt="image" src="https://github.com/user-attachments/assets/3951a391-5986-4d09-ae20-4d07d6c06d09" />
功能
- 三列并排,各自独立滚动
- 记忆多个仓库地址 + 单个 PAT token:存入前先用 AES-256-GCM(Web Crypto)加密,
localStorage里不再有明文;密钥留在同一浏览器中 - 加载更多:每列通过 GitHub
Link响应头分页,带「加载更多」按钮(每页 30 条 runs / 30 条 releases / 100 条 commits) - 进入自动刷新:打开会话先秒显缓存,再后台自动拉取一次——重启后不会停留在旧数据
- 切换仓库自动刷新:点击已保存的仓库 chip 立即切换并拉取该仓库数据
- 缓存不过期:打开会话直接显示缓存,点「刷新」或进入会话时才重新拉取
- 国际化:界面文案随 DSH 语言偏好(zh / en)切换
- 三列数据并行拉取,任一接口失败单独提示,互不影响
安装
0. 前置条件
dsh和pnpm在 PATH 中(DSH Desktop 自带,重新开一个 PowerShell 即可生效)。git在 PATH 中且能访问 github.com。dsh plugin内部转发给 pnpm,pnpm 会从github:specifier 克隆仓库——走 HTTPS,或配置好 SSH(insteadOf重写 / 代理)后走 SSH。- 弄清楚你正在运行的 DSH 用的是哪个 profile。插件装进命令里指定的那个 profile,只有运行同一个 profile 的 GUI 才会显示它。DSH Desktop 默认是
desktopprofile,和web是不同的组合——要么装进你实际运行的 profile,要么把 GUI 切换到你要安装的 profile。
1. 安装插件
让 Agent 安装(推荐)
如果当前 Agent 可以执行终端命令,把下面这段话完整发送给它:
> 请为 DeepSeek Harness 的 web Profile 安装 gitpeek 插件。 > > 只执行下面两条命令,不要修改其他 Profile: > `` > dsh plugin --profile web add github:Angel-GP/dsh-gitpeek#main > dsh --profile web --dump-config > ` > 确认输出中出现 @angel-gp/dsh-client-ui-gitpeek` 后告诉我安装结果。 > 不要替我关闭或重启正在运行的 DSH;安装完成后提醒我手动重启 DSH Web Host。
把其中的 web 换成你的 GUI 实际运行的 profile(DSH Desktop 通常是 desktop)。
手动安装
也可以自己在 PowerShell 里执行同样的两条命令:
dsh plugin --profile web add github:Angel-GP/dsh-gitpeek#main
dsh --profile web --dump-config> DSH Desktop 用户注意:打包的 dsh 命令可能拒绝初始化它还不认识的 profile(报 ENOENT: lstat .../profiles/<name>)。遇到时先执行一次 dsh plugin --profile <name> add <任意包> 创建 profile,再重复上面的 add;或者让 Agent 直接调用等价的 dsh bin。
> 关于 peer 依赖警告:pnpm 会打印 [WARN] Issues with peer dependencies found,因为 react 和 @deepseek-ai/* 包由 DSH 的符号链接依赖树($DSH_HOME/profiles/node_modules)提供,而不是列在 profile 自己的 dependencies 里。这个警告是预期的、无害的——用下面的 --dump-config 验证即可。
2. 验证
确认 --dump-config 的输出中出现 @angel-gp/dsh-client-ui-gitpeek,说明插件已进入组合层:
# == @angel-gp/dsh-client-ui-gitpeek
- id: gitpeek
name: '@angel-gp/dsh-client-ui-gitpeek'3. 重启
手动重启 DSH Web Host。重启后 GitHub 标签页会出现在「轨迹」旁边。
4. 最终验证
在运行中的 GUI 里打开一个会话:会话标签页中应出现 GitHub 标签(在「轨迹」旁边),输入仓库(如 owner/repo)并点「刷新」后三列数据应正常加载。如果标签页没出现,请确认 GUI 运行的是你安装时的那个 profile(见第 0 步)。
卸载
完全卸载 = 从 profile 移除插件 + 重启使 GUI 生效 + 清除浏览器残留数据。
1. 移除插件依赖
dsh plugin --profile web remove @angel-gp/dsh-client-ui-gitpeek把 web 换成你安装时的 profile。dsh plugin 转发给 pnpm;成功后会自动把该包从 profile 的 dsh.profile.bundles 列表移除。
> DSH Desktop 用户注意:和安装时一样,打包的 dsh 命令可能报 ENOENT: lstat .../profiles/<name>,遇到时直接调用等价的 dsh bin。
验证插件已退出组合层:
dsh --profile web --dump-config输出中应不再出现 @angel-gp/dsh-client-ui-gitpeek。
2. 重启 DSH Web Host
手动重启 DSH Web Host。组合层重新解析后 GitHub 标签页消失——这一步才是真正从运行中的 GUI 卸载。
3. 清除浏览器残留数据(手动)
插件把配置和缓存存在浏览器 localStorage,卸载后不会自动清理:
dsh.ghwf.config—— 加密后的 PAT tokendsh.ghwf.key—— 解密所需的 AES-GCM 密钥(务必与 config 一起清除)dsh.ghwf.cache—— 缓存的 Actions / Commits / Releases 数据
在 DSH 网页里打开 DevTools(F12)→ Console 执行:
localStorage.removeItem("dsh.ghwf.config");
localStorage.removeItem("dsh.ghwf.key");
localStorage.removeItem("dsh.ghwf.cache");4.(可选)清理 pnpm store
pnpm store prune删除 pnpm 内容寻址存储里不再被任何 profile 引用的包(包括 gitpeek 及其下载缓存),不影响其他 profile。如果之后还可能重装,可以跳过。
获取 PAT token
插件用 PAT 提升 GitHub API 读取额度(匿名 60 次/小时,带 token 5000 次/小时)。只读查询,权限最小化即可:
1. 打开 https://github.com/settings/personal-access-tokens/new 2. 选 Fine-grained token 3. Repository access 选 Only select repositories,勾选你要查看的仓库 4. Permissions 里给: - Actions → Read-only(读 workflow runs) - Contents → Read-only(读 releases、commits) - Metadata → Read-only(通常自动包含) 5. 生成后把 token 粘贴到插件的「PAT」输入框
安全提示
PAT 先经 AES-256-GCM 加密再存储。加密密钥保留在同一个浏览器(localStorage 里的随机 32 字节),因此存储值不是明文——但任何能在这台浏览器里运行脚本的东西(扩展、开发者工具、同源脚本)仍能解密它。请:
- 只授予「只读 + 选定仓库」的最小权限(见上文);
- 不要把这个 token 用于其他服务或账号操作;
- 不再需要时,随时在 GitHub 上撤销或轮换它。
持久化(为什么保存的数据会"消失")
gitpeek 把已保存的仓库和加密 PAT 存在浏览器 localStorage,它按 origin(协议 + 主机 + 端口) 隔离。如果 DSH 每次启动监听不同的端口,每次启动都会看到空的 localStorage,已保存的数据就像"消失"了。
dsh --profile web(纯 Web 端):默认稳定——监听固定端口(未传--port时为3080),重启后数据仍在。只要每次都使用同一个端口即可。- DSH Desktop:默认随机端口(未设置
dsh-desktop.port时每次启动由系统挑选空闲端口),因此每次重启数据都会丢失。
DSH Desktop 的修复方法
在 $DSH_HOME/settings.yaml 里固定一个端口(若 3080 与其他程序冲突可改成别的):
dsh-desktop:
mode: advanced
port: 3080然后完全退出并重启 DSH Desktop。首次重启后 origin 稳定,已保存的仓库 / PAT 就能持久。注意:之前随机端口下保存的数据无法迁移到新端口(浏览器安全限制)——切换后需要重新输入一次仓库和 token。
经验法则:始终用同一个端口启动 DSH,数据就会一直在。
License
MIT