- shylockhg2026-09-2848889
Agent 工作流
English | 中文
在自托管 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)系统分为三层: - **对话层。** Forgejo 托管讨论串。在 issue 或 pull request 上提及机器人是 唯一的触发方式,讨论串也是汇报与审查结果的地方。 - **网关层。** forge-bot 接收提及、校验并鉴权,按会话串行化运行,并启动 agent 。它刻意只交给 agent 一个 **位置** 和一条 **消息**,从不提供预先 构建的上下文。 - **执行与访问层。** Agent 以专用的 agent 账户、自动批准方式运行,因此可以 读取仓库、编辑、运行命令与测试并推送。AaaU 向人类暴露进入同一账户的 PTY 。 系统有两条贯穿始终的性质: - **隔离。** agent 账户与人类账户相互独立,人类的凭据从不交给 agent 。 - **最小交接。** agent 从位置与消息中得知要做什么,然后自行发现周围的上下文。 用法 触发一次运行 在 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 同一时刻 至多一次运行,而不同讨论串可并行进行。 与 agent 交互式协作 被授权的人类使用 `aaau` 客户端接入 agent 账户:``` aaau pi # 在 agent 账户中启动 pi aaau codex # 在 agent 账户中启动 codex aaau -n <session-id> # 加入一个已存在的会话 aaau -n <session-id> -r # 只读观察 ```这正是人类复现、观察或抢救自动化运行所用同一环境的方式。只有被授权组的成员 才能接入,且 agent 无法反向连接人类。 工作流 一次提及在系统中的流转如下: - 人类在 issue 或 pull request 上评论 `@shylock-bot <task>`。 - Forgejo 将评论投递给 forge-bot —— 尽可能走 webhook ,回退时使用轮询。 - forge-bot 校验并鉴权该提及,记录位置与消息,并为该会话排队任务。 - 仓库被检出到按会话划分的工作区,随后选择并以自动批准方式启动一个 agent 。 - agent 读取 forge 、编辑检出内容、运行命令与测试、提交、推送分支、打开 pull request ,并在讨论串中回复。它的工作方式与开发者完全一致。 - 人类审查 pull request ,然后合并或在同一条讨论串中提出修改——这会开始下一轮。 如果 agent 报告用量、速率或配额限制,运行会用序列中的下一个 agent 重试;若 一个都不可用,讨论串会被告知原因。机器人会在任务排队后立即确认每条提及。 运维 状态页面列出每个已知讨论串及其状态( running / queued / idle )、所涉及的 agent 及其最后一次结果。监控可用的健康与状态端点,日志记录每次运行。具体服务与路径 取决于部署方式。 参考资料 - forge-bot:https://github.com/Shylock-Hg/forge-bot - AaaU:https://github.com/AgentaaU/AaaU 最后咋说呢,整套流程倒是打磨得非常丝滑,但是拿着锤子找不到钉子,不知道要干嘛。公司也有自己的流程和平台,不可能接入进去。:)主楼 - kylix2026-09-2847922
👍研究下,刚好我用的 git 服务也是 Forgejo