Xinlong-Wu/dsh-github-reviewer

一个 DeepSeek Harness 插件:轮询配置的 GitHub 仓库中开放的 pull request,并自动发布 COMMENT 评审。它是 LingoBridge 内置 GitHub reviewer 的 TypeScript 移植,并且每次评审和 /bot 对话都通过 harness agent 主循环驱动:每个 PR 一个常驻 Agent、每个 PR 一条会话日志,通过 harness 的 session-persistence 机制持久化。

catalog 简介 / catalog descriptioncatalog description:A github reviewer based on the Deepseek Harness

项目介绍Project Overview

dsh-github-reviewer 是轮询 GitHub 开放 PR 并自动发布 COMMENT 评审的 DSH 插件。它以 GitHub App 或 PAT 认证,按 PR 维持常驻 Agent 与会话,读取基础仓库 .github/review_instructions.md,守卫工具调用,并支持 /review/bot 及中断续跑。适用于需要自动化 PR 评审和对话的仓库。注意:安装后仍需在 profile patch 中补齐认证与 MCP server 配置。

dsh-github-reviewer is a DSH plugin that polls open GitHub pull requests and automatically posts COMMENT reviews. It authenticates as a GitHub App or with a PAT, keeps one persistent agent and session per PR, reads trusted instructions from the base repository, guards tool access, and supports /review, /bot, and resumable reviews. Use it for automated PR review workflows. Caveat: after installation, authentication and the MCP server must still be configured in the profile patch.

或使用命令行安装(适合开发者)Or use CLI install (for developers)

命令行安装CLI Install

dsh plugin --profile web add dsh-github-reviewer

Xinlong-Wu/dsh-github-reviewer 加入你的 DSH 配置(web profile)即可启用。

READMEREADME

dsh-github-reviewer

English | 中文

npm version CI license node

一个 DeepSeek Harness 插件:轮询配置的 GitHub 仓库中开放的 pull request,并自动发布 COMMENT 评审。它是 LingoBridge 内置 GitHub reviewer 的 TypeScript 移植,并且每次评审和 /bot 对话都通过 harness agent 主循环驱动:每个 PR 一个常驻 Agent、每个 PR 一条会话日志,通过 harness 的 session-persistence 机制持久化。

功能特性

  • 轮询配置的仓库中的开放 PR;跳过 draft PR。
  • 以 GitHub App 身份认证:签名 RS256 应用 JWT,换取短期安装访问令牌(临近过期前缓存复用);也可用个人访问令牌(PAT)模式。
  • PR 首次出现或 head.sha 变化时触发评审;未变化的 PR 记录在存储域的每账户游标记录中,不会重复评审。
  • 只从基础仓库的 .github/review_instructions.md 读取可信评审指令(先按 base 分支,再按 base SHA);文件缺失且配置了 defaultInstructions 时使用该默认文本,否则该 PR 被标记为 missing_instructions,仅当 head SHA 变化后才重试。
  • 每个 PR 一个 harness Agent 与会话。 同一 PR 的评审和 /bot 对话在同一个会话中进行,主循环会重放该 PR 的完整对话历史——模型记得之前的发现和讨论。挂载了持久化 provider 时,会话跨重启保留,评审器恢复既有会话而非新建。
  • 评审走真实 agent 主循环:评审系统提示以 complete 系统提示段注册在 PR agent 上,被守卫的 GitHub 工具以作用域工具形式注册——主循环的日志、检查点、压缩全部生效。
  • 每个回合启动一个全新的 github-mcp-server(stdio),注入安装令牌为 GITHUB_PERSONAL_ACCESS_TOKEN,配置的 web URL 为 GITHUB_HOST;工具 schema 每进程发现一次并缓存。
  • 守卫每一次工具调用:调用必须指向当前 PR,读取被限制在允许的方法和 ref,写入被限制在 create → 行内评论 → submit_pending(event=COMMENT) 的 pending-review 工作流。
  • 处理已处理 PR 上的评论命令:/review 触发重新评审,/bot <消息> 继续 PR 对话并把回复发回对应的 issue 线程或 review 线程。
  • 评审中断可续跑:reviewing 游标状态在重启后重新触发评审,从持久化会话恢复剩余工作。
  • 默认实例可启用 Web 设置卡片;保存后只热重启内部 reviewer runtime。settings、工作区与 Client UI 都是可选 inject 伴生能力,缺失时不影响 Host reviewer。
  • 在把不可信 PR 标题/正文放入提示词前做清洗(HTML 注释/隐藏属性、不可见/控制字符、markdown 图片 alt 文本、markdown 链接标题、类 GitHub 令牌字符串)。

快速开始

dsh plugin --profile web add dsh-github-reviewer

安装会把 bundle 加入 web profile,并注册一个默认启用的 github-reviewer 实例;uiSettings 默认也是 true。在下一次重启前,必须在 profile 的 cordis.patch.yml 中按 id 为该实例补齐认证和 MCP server,并按需配置仓库(无需再写 disabled: falseuiSettings: true,完整步骤见部署与挂载)。设置页的 GitHub Reviewer 卡片默认折叠,仓库以“所有者(组织或用户)/仓库”行编辑:聚焦后会使用当前配置的 GitHub 凭据加载可访问仓库,并提供可搜索、可自由输入的候选菜单;目录加载失败或手动值不在目录中都不会阻止编辑和保存。增删操作使用图标按钮;评审模型从 DSH 当前配置的 provider/model 下拉列表中选择,并按从上到下的优先级拖拽排序。仓库列表可以为空,此时 reviewer 保持运行但不轮询仓库。

文档

主题 中文 English
部署与挂载:要求、profile patch 语法、MCP server、验证 docs/deploy.md docs/deploy.en.md
配置参考:字段表、环境变量注入、!!js 表达式 docs/config.md docs/config.en.md
工作原理:轮询/游标、评审流程、工具守卫、信任模型 docs/architecture.md docs/architecture.en.md
开发与已知限制 docs/development.md docs/development.en.md

带注释的最小组合示例见 cordis.yml.example

License

Apache-2.0

上一个 Prev dsh-theme-stardew 下一个 Next dsh-deepseek-balance