QP内容库 Logo
首页
文章
文档
默认分类
关于
登录 →
QP内容库 Logo
首页 文章
文档
默认分类 关于
登录
  1. 首页
  2. 文档
  3. DeepSeek Harness
  4. 用户指南
  5. 入门
  6. 通过 GitHub Webhook 创建评审会话

通过 GitHub Webhook 创建评审会话

  • 入门
  • 发布于 2026-09-30
  • 0 次阅读
目录
当前文章没有目录

English | 中文

此可选 overlay 会为 dsh web 增加一个签名 GitHub 端点。当已配置仓库中的 pull request 从 draft 变为 ready for review 时,规则会在该仓库的 Web Workspace 下创建带标题的根 Session,并启动只读评审提示词。

前置条件

  • 一个可由 DSH 注册为 Web Workspace 的本地 checkout。
  • 一个可通过 DSH_GITHUB_WEBHOOK_SECRET 凭据引用访问的高熵 GitHub webhook 密钥。
  • 一个可以把单个公共 URL 转发到 loopback 监听器的 TLS 反向代理或 tunnel。
  • GitHub webhook 订阅 Pull requests 事件,且 content type 为 application/json。

overlay 默认使用启动目录作为 Workspace,并监听 127.0.0.1:3081。可通过 DSH_GITHUB_REVIEW_WORKSPACE 与 DSH_GITHUB_WEBHOOK_PORT 覆盖它们。

启动 DSH

生成密钥,并在重启后继续使用同一值:

export DSH_GITHUB_WEBHOOK_SECRET="$(openssl rand -hex 32)"
printf '%s\n' "$DSH_GITHUB_WEBHOOK_SECRET"

在开发 checkout 中运行:

export DSH_GITHUB_REVIEW_WORKSPACE=/path/to/deepseek-harness
pnpm dsh web --patch apps/cli/config/examples/github-review/cordis.yml

安装版 DSH 通过绝对路径使用同一 overlay:

dsh web --patch /absolute/path/to/github-review/cordis.yml

对于永久 profile,把 github-ready-review-rule.mjs 放在 $DSH_HOME/profiles/web/cordis.patch.yml 旁边,把 cordis.yml 中的行追加到该 patch,然后运行 dsh web。随附 CLI 已经包含两个 webhook 包;只需 overlay 即可激活它们。

暴露专用端点

主 Web UI 与 /api 继续位于端口 3080。overlay 会在隔离 realm 中挂载第二个 WebServer;其中只注册 POST /github,其他路径均返回 404。

Caddy 配置可以只暴露该监听器:

hooks.example.com {
  route {
    @github path /github
    reverse_proxy @github 127.0.0.1:3081
    respond 404
  }
}

GitHub 配置如下:

Payload URL:  https://hooks.example.com/github
Content type: application/json
Secret:       DSH_GITHUB_WEBHOOK_SECRET value
Events:       Pull requests
Active:       yes

规则行为

规则只接受来源 primary-github、仓库 deepseek-harness/deepseek-harness、事件 pull_request 与动作 ready_for_review。它会把精确 head SHA 和选定 PR 字段传给评审提示词,把 JSON 标为不受信任的元数据,并禁止修改文件、分支、PR 或 GitHub 状态。

Session 请求选择 standard agent preset 与 read-only permission preset。workspacePath 通过 WorkspaceRegistry.create() 规范化,因此第一次匹配交付会在 Workspace 不存在时创建它,后续交付会复用它。

HTTP 响应刻意弱于 Agent 结果:202 表示签名与 JSON 已被接受,规则调用已在内存中调度。它不表示此规则已经匹配,也不表示已创建 Session。

程序化扩展

run() 是普通受信任 JavaScript。部署可以在返回 Session 请求前查询内部策略服务:

const response = await fetch('https://policy.internal/pr-review', {
  method: 'POST',
  headers: { 'content-type': 'application/json' },
  body: JSON.stringify({ repository: payload.repository.full_name }),
  signal,
})
if (!response.ok || (await response.json()).automaticReview !== true) return null

它还可以把仓库映射到不同本地路径:

const workspacePath = {
  'deepseek-harness/deepseek-harness': '/path/to/deepseek-harness',
  'deepseek-harness/dsh-sdk': '/path/to/dsh-sdk',
}[payload.repository.full_name]
if (workspacePath === undefined) return null

交付语义

webhook runtime 不存储交付或执行状态。重复交付会运行规则,并可能创建另一个 Session。崩溃会丢失尚未接纳提示词的规则调用。提示词接纳后,工作由普通 Session 日志、persistence、Workspace 与 Agent 生命周期拥有。

webhook 密钥只验证入站 GitHub 数据。它不会向规则代码或所创建 Agent 授予出站 GitHub 访问权;规则或 Agent 需要时应单独配置该权限。

相关文章

Schedule 提醒

English | 中文 概述 在对话中创建提醒,再从自动化任务页面查看活动和未运行任务,并修改活动任务的名称、指令和运行时间。每日提醒遵循保存的本地时间与时区;固定速率提醒遵循经过的时间间隔。已投递的一次性任务会保留到显式删除为止。 目录 创建提醒 查看和删除任务 修改活动任务 时间与投递参考 延

Python SDK 入门

English | 中文 本教程安装已发布的 Python SDK,运行随附的独立极简 profile,并说明如何从自己的程序自定义同一个 dsh profile。 前置条件 Python 3.10 或更高版本 Git Linux x64、Linux arm64、arm64 上的 macOS 14

配置模型

English | 中文 本指南假定你已按照根 README启动 Web UI。模型变更会在下一次请求时生效,不需要重启服务器。 配置 DeepSeek 打开设置 → 模型。DeepSeek 卡片提供一个 API 密钥字段;输入密钥并保存。 密钥是只写的。保存后,页面只会收到脱敏描述符,永远不会收到

在网络代理后面运行 DSH

English | 中文 DSH 会把自身的出站请求——模型调用、web 搜索、页面抓取、走 HTTP 的 MCP 服务器——都经由标准代理环境变量所指定的代理发出。它在启动时读取这些变量,不需要其他配置。有几条路径出于设计或运行时限制保持直连,下文"哪些保持直连"一节列出了它们。 导出环境变量 e

连接第三方记忆 MCP 服务

English | 中文 这三份默认关闭的参考配置通过 @deepseek-ai/dsh-mcp-client 将一个记忆系统连接到 DSH。请选择其中一份,或复制相同的通用 MCP 配置项来连接其他服务器。 这些第三方配置仅作为互操作参考;收录不代表 DeepSeek 的认可、推荐、合作关系或持续

使用 Web UI

English | 中文 请先按照根目录 README 中的说明启动 Web UI;命令会打印其访问地址。本指南从服务器已经运行的状态开始。dsh 进程会把启动时所在的目录作为默认文件系统位置;全新的 Web UI 则不会选中任何工作区,你需要添加一个工作区。 配置模型 打开设置 → 模型,输入 D

目录
当前文章没有目录

星沉月落夜闻香,素手出锋芒。

Copyright © 2026 quping.com All Rights Reserved. Powered by Halo.
鲁ICP备09092435号