在自托管 Forgejo 实例上的一条评论,如何变成一次代码变更,同时又不把人类 账户交给自主 agent 。三个部分协同完成:
| 组件 | 位置 | 职责 |
|---|---|---|
| Forgejo | https://forgejo.shylockhg.me | 代码托管平台:仓库、issue 、pull request 、评论与 CI 。它是对话与代码的权威记录。 |
| forge-bot | https://github.com/Shylock-Hg/forge-bot | 与具体 forge 无关的网关,把一次机器人提及转换为一次编码 agent 运行。 |
| AaaU (Agent-as-User) | https://github.com/AgentaaU/AaaU | 接入专用 agent 账户的 PTY 桥接,让被授权的人类可以启动、观察或加入一个 agent 会话。 |
| 人类 | shylock 账户 |
编写任务、审查结果,并可经 AaaU 接入同一个 agent 账户。 |
关键隔离在于 人类账户 与 agent 账户 之间。Forgejo 、forge-bot 与 agent 都以 agent 账户运行;人类不会交出自己的账户。AaaU 正是让被授权的人类 接入该账户进行交互式工作的桥梁。
@shylock-bot <task> on an issue / PR
│
▼
┌──────────────────────┐
│ Forgejo │ issues / PRs / CI
└──────────┬───────────┘
│ mention
▼
┌──────────────────────┐
│ forge-bot │ verify → authorize
│ │ queue → start agent
└──────────┬───────────┘
│ location + message
▼
┌──────────────────────┐ ┌──────────────────────┐
│ agent account │◀──────▶│ AaaU │
│ coding agent runs │ PTY │ human joins session │
└──────────┬───────────┘ └──────────────────────┘
│
▼ commit / push / reply
(Forgejo thread)
系统分为三层:
系统有两条贯穿始终的性质:
在 issue 或 pull request 上评论:
@shylock-bot fix the failing test in utils/
只接受允许名单中的用户与仓库,机器人自己写出的提及会被忽略以避免循环。要 指定某个 agent ,可以点名:
@shylock-bot:codex fix the failing test in utils/
普通提及会使用默认的 agent 序列。
在同一条讨论串中回复。如果已有运行在进行,消息会被合并进当前运行,从而可以 实时引导 agent ;否则会作为下一轮排队。每个 issue 或 pull request 同一时刻 至多一次运行,而不同讨论串可并行进行。
被授权的人类使用 aaau 客户端接入 agent 账户:
aaau pi # 在 agent 账户中启动 pi
aaau codex # 在 agent 账户中启动 codex
aaau -n <session-id> # 加入一个已存在的会话
aaau -n <session-id> -r # 只读观察
这正是人类复现、观察或抢救自动化运行所用同一环境的方式。只有被授权组的成员 才能接入,且 agent 无法反向连接人类。
一次提及在系统中的流转如下:
@shylock-bot <task>。如果 agent 报告用量、速率或配额限制,运行会用序列中的下一个 agent 重试;若 一个都不可用,讨论串会被告知原因。机器人会在任务排队后立即确认每条提及。
状态页面列出每个已知讨论串及其状态( running / queued / idle )、所涉及的 agent 及其最后一次结果。监控可用的健康与状态端点,日志记录每次运行。具体服务与路径 取决于部署方式。
最后咋说呢,整套流程倒是打磨得非常丝滑,但是拿着锤子找不到钉子,不知道要干嘛。公司也有自己的流程和平台,不可能接入进去。:)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.