创建一个 Gitea / Forgejo 令牌(Codeberg)
带有 provider = "gitea" 或 provider = "forgejo" 的 Git channel 使用 personal access token 对实例的 Gitea 兼容 REST API 进行身份验证,并以该 token 所有者的身份回复。两个 provider 共用一个内部实现;与 GitHub 的唯一区别是没有 app,只有 token 和明确的 API 基础 URL。
下面的示例使用 Codeberg(一个公共的 Forgejo 实例)。对于自托管的 Gitea 或 Forgejo,请替换为你自己的主机。
官方文档: Forgejo 的 Access Token Scope 是令牌范围的上游参考;在 Codeberg 上,请遵循 Generating an Access Token。Gitea 实例提供相同的令牌界面。
1. 使用专用的机器人账号
请在一个独立的机器人账户上创建该令牌,不要使用你的操作员账户。该频道会忽略其自身的活动:如果令牌所有者也是 @-提及该应用的人类用户,这些消息就会被静默跳过。使用专用账户可以让机器人的回复和你的评论保持区分。
在 Codeberg 上,为 bot 注册一个普通的第二个账户,并将其邀请到目标仓库(或该组织)并授予写入权限。
2. 生成令牌
作为机器人账户:设置 → 应用程序 → 管理访问令牌(Codeberg: https://codeberg.org/user/settings/applications)。
- 为该 token 取一个名称(例如
zeroclaw)。 - 选择作用域。 该通道至少需要:
read:user:该通道在启动时从/user解析其自身的机器人身份。- Repository 读取以及 issue/PR 写入。在 Forgejo/Codeberg 中,作用域分组为
read:repository+write:repository和read:issue+write:issue。如果 UI 只提供粗粒度的repository/issue作用域,请勾选这些。
- 生成 Token 并复制它。它只会显示一次。
该令牌需要对仓库的读取访问权限,以及对 issue/PR 评论的写入访问权限,用于回复和表情反应。除目标仓库所需的权限外,不要授予任何其他权限。
3. 查找 API 基础 URL
这是没有默认值的部分。如果 api_base_url 未设置,通道在启动时会默认关闭而失败,因为每个请求都会将令牌作为 bearer 凭据携带,它不会猜测要将其发送到哪个主机。
该值是实例根路径加上 /api/v1:
- Codeberg:
https://codeberg.org/api/v1 - 公共 Gitea 服务:
https://gitea.com/api/v1 - 自托管:
https://git.example.org/api/v1
4. 映射到配置
在您偏好的任意界面上设置以下每个字段。访问令牌是一个加密密钥,并且会有自己单独的掩码控件;其余的都是普通字段。
provider: Gitea 实例使用 gitea,Forgejo 实例(包括 Codeberg)使用 forgejo。它们的行为完全相同,且未知值会导致明确的启动错误,而不是静默回退。
网关仪表板
打开 /config/channels/git 并在其中设置 channels.git.<alias>.provider 字段。
zerocode
在 Config 窗格中,设置 channels.git.<alias>.provider 字段。
zeroclaw config
zeroclaw config set channels.git.<alias>.provider <value>
api_base_url:实例根路径加上 /api/v1(步骤 3)。必需;如果没有它,启动将失败并关闭。
网关仪表板
打开 /config/channels/git 并在那里设置 channels.git.<alias>.api_base_url 字段。
zerocode
在 Config 面板中,设置 channels.git.<alias>.api_base_url 字段。
zeroclaw config
zeroclaw config set channels.git.<alias>.api_base_url <value>
access_token:第 2 步中的令牌。
channels.git.<alias>.access_token是机密。 以加密形式存储,绝不会以明文写入config.toml。请通过以下任一方式设置,它们会在写入时加密:
网关仪表板
打开 /config/channels/git,并在那里设置 channels.git.<alias>.access_token 字段。
zerocode
在 Config 面板中,设置 channels.git.<alias>.access_token 字段(输入会被掩码)。
zeroclaw config
zeroclaw config set channels.git.<alias>.access_token # 提示输入掩码内容,以加密形式存储
repos:要监视的 owner/repo 列表。留空则轮询该 token 可见的每个仓库。
网关仪表板
打开 /config/channels/git 并在其中设置 channels.git.<alias>.repos 字段。
zerocode
在 Config 面板中,设置 channels.git.<alias>.repos 字段。
zeroclaw config
zeroclaw config set channels.git.<alias>.repos <value>
有关完整字段参考,请参阅 Git channel 页面。
5. 验证
Git 通道包含在标准分发构件中,但不包含在精简版 Cargo 默认配置中。对于自定义源码构建,请包含 channel-git(禁用默认特性时还需包含 agent-runtime):
cargo build --features channel-git
channel-git 会在一次构建中拉入所有已连接的 forge provider;没有更小的按 provider 划分的子集,而且在不包含 channel-git 的情况下构建一个裸的 provider-* feature 不会注册该 channel。
启动时,该 channel 会调用 /user 来解析其 bot 登录名,记录一行 IDENTITY OK,并开始轮询。在已配置的仓库中的 issue 或 PR 上 @ 提及该 bot,以确认它会回复。如果启动失败并提示 api_base_url,则表示 base URL 缺失或为空。有关事件路由、peer-group 绑定和操作说明,请参见 Git channel 页面。
下一步
- 返回频道: Git channel 用于事件路由、流式传输、速率预算和安全性。
- 限制哪些人可以访问该代理: Peer Groups。
- 从 forge 事件驱动自动化: 标准操作程序 和 Git SOP fan-in。
- 刚接触 ZeroClaw? 快速入门 和 概念。