dsh-web
zhu1090093659/dsh-webDeepSeek Harness(DSH)Web 插件聚合生态包 · 一切皆插件,创意工坊分发(dsh-market.com)
GitHub 仓库 AI 自动管理通道插件 (DeepSeek Harness community bundle): 27 个工具(仓库/Issue/PR/分支/文件/标签/话题/Tags/Releases/搜索)+ Web 设置卡片 + dry-run 防护 + secret 令牌。
中文 | English
一个 DeepSeek Harness 插件,为 AI agent 提供 GitHub 仓库自动管理通道。它注册一组工具,让 agent 通过 GitHub REST API 自动管理仓库、Issue、Pull Request、分支、文件、标签、话题(topics)、Git 标签(tags)、发布(Releases)和搜索。
本插件按 DSH 社区插件规范 分发:bundle(
dsh.bundle.patch)+ Web 设置卡片(dsh.client),仓库已打上dsh-plugintopic 供社区发现。
| 工具 | 作用域 | 说明 |
|---|---|---|
github_ping | 连接性 | 验证通道与令牌是否有效,报告当前用户与剩余配额 |
github_list_repos | 仓库 | 列出认证用户或指定 owner 的仓库 |
github_get_repo | 仓库 | 获取单个仓库的详细元数据 |
github_create_repo | 仓库 | 创建新仓库(个人或组织) |
github_list_issues | Issue | 列出仓库的 issue,按状态/标签/指派过滤 |
github_create_issue | Issue | 在仓库中开启新 issue |
github_update_issue | Issue | 更新 issue(标题/正文/状态/标签/指派) |
github_comment_issue | Issue | 给 issue 或 PR 添加评论 |
github_list_pulls | PR | 列出仓库的 PR |
github_get_pull | PR | 获取单个 PR 的完整元数据 |
github_create_pull | PR | 创建 PR |
github_merge_pull | PR | 合并 PR(merge/squash/rebase) |
github_list_branches | 分支 | 列出仓库的分支 |
github_read_file | 文件 | 读取仓库中的文本文件 |
github_write_file | 文件 | 创建或更新文件(通过 commits API 版本化) |
github_delete_file | 文件 | 删除文件 |
github_list_labels | 标签 | 列出仓库的标签 |
github_create_label | 标签 | 创建标签 |
github_get_topics | 话题 | 获取仓库话题列表 |
github_update_topics | 话题 | 整组替换仓库话题(写) |
github_list_tags | Git 标签 | 列出 git tag 及对应提交 SHA |
github_list_releases | 发布 | 列出仓库发布(最新在前) |
github_get_latest_release | 发布 | 获取最新已发布版本 |
github_create_release | 发布 | 创建发布(标签缺失时自动打标签) |
github_update_release | 发布 | 更新发布(标题/正文/draft/prerelease) |
github_search_code | 搜索 | 跨 GitHub 搜索代码 |
github_search_issues | 搜索 | 搜索 issue 与 PR |
所有变更型工具在 dryRun: true 时描述将要执行的操作而不真正执行——适合在评审或预发环境中安全验证流程。
插件以 bundle 形式分发。在 DSH 中安装到一个 profile:
# 从本地目录安装
dsh plugin --profile demo add ./dsh-github-manager
# 从 GitHub 仓库安装(锁定 commit 更安全)
dsh plugin --profile demo add github:yuan-source-666/dsh-github-manager#<sha>
从 git 安装会拉取源码,
prepare脚本会编译lib/。pnpm ≥10 需要在 profile 的pnpm-workspace.yaml中显式允许构建:allowBuilds: dsh-github-manager: true只对源码可信的包授权。详见 DSH 打包与安装文档。
验证安装:
dsh --profile demo --dump-config # 看到 "# == dsh-github-manager" 层
dsh --profile demo
安装后打开 http://127.0.0.1:3080 → 设置 → Plugins → 可配置,会看到「GitHub 仓库管理」卡片,可以像其他插件一样直接操控:
GH_TOKEN / GITHUB_TOKEN 环境变量。保存走 DSH 设置命名空间 dsh-github-manager(revision 围栏写入),token 以 secret 角色注册、读取时脱敏。改完立即生效:下一次工具调用就用新令牌 / 新超时 / 新 dry-run 状态。
Contents(文件读写)、Issues(issue 管理)、Pull requests(PR 管理);建仓库另需 Administration;只读搜索/元数据 Metadata 即够。GH_TOKEN / GITHUB_TOKEN 环境变量。CLI/无 Web 部署也可以在 profile 的 cordis.patch.yml 中直接覆盖默认值(无需改动插件包):
- id: dsh-github-manager
name: dsh-github-manager
config:
enabled: true # 主开关:false 时不注册任何工具
# token 不要写进文件——用设置卡片或环境变量
baseUrl: 'https://api.github.com'
webUrl: 'https://github.com'
timeoutMs: 30000
dryRun: false
| 字段 | 默认值 | 说明 |
|---|---|---|
enabled | true | 主开关;关闭即从模型工具面注销全部 27 个工具 |
token | (无) | 个人访问令牌;设置界面写入为持久首选,留空则读 GH_TOKEN / GITHUB_TOKEN |
baseUrl | https://api.github.com | REST API 根(GitHub Enterprise 改这里) |
webUrl | https://github.com | 面向人类的链接根 |
timeoutMs | 30000 | 单次请求超时(毫秒) |
dryRun | false | 为 true 时,变更型工具只描述动作而不执行 |
如果是 fine-grained token,按需授权下列权限:
Contents: read(所有读取工具)Administration: write(github_create_repo)Issues: write(github_create_issue、github_update_issue、github_comment_issue)Pull requests: write(github_create_pull、github_merge_pull)Contents: write(github_write_file、github_delete_file)Issues: write 或 Metadata: read + 仓库管理员(github_create_label)Topics: write(github_update_topics;读取仅需 Metadata: read)Contents: write(github_create_release、github_update_release;列出 tags/releases 仅需 Metadata: read)# 1) 类型检查 + 构建(生成 lib/*.js 与 lib/types/*.d.ts)
pnpm install
pnpm run build
# 2) 运行时冒烟测试(stub ctx + mock fetch,无需网络与密钥;两个用例都相对定位,任意目录可跑)
node tests/smoke-test.mjs
node tests/client-smoke.mjs
# 或:pnpm run test
# 3) 在 DeepSeek Harness 里从源码加载(绝对路径 patch,免构建)
cd /path/to/deepseek-harness
pnpm dsh web --patch <本目录>/load.dev.patch.yml
打开 http://127.0.0.1:3080 后可以对模型说: 用 github_ping 检查 GitHub 通道是否连通;或者 列出 deepseek-harness/deepseek-harness 仓库的 open issues,把标记为 bug 且未指派的逐条添加 Triage 评论。
插件遵循 DSH 约定:
inject = ['tools'] 声明对工具注册表的依赖;设置命名空间通过 installSettingsSection 绑定,与浏览器卡片半按同一命名空间配对。installSettingsSection 注册命名空间 dsh-github-manager;浏览器半把卡片注册进 settings.plugin.item 键控槽(key = 同一命名空间字符串),设置界面自动配对。开关是活的:enabled 变化触发注销/重注册,不重启进程。defineTool 注册:parameters 由 DSL 推导并校验 args;execute 返回 output.schema 声明的规范值;output.render 把规范值转成面向模型的文本。ctx 注册的内容在插件卸载时自动清理(HMR 友好)。MIT