agent-first
你的 AI agent 需要的是地图,不是猜测。
当 AI 编程助手承担越来越多的执行工作时,关键问题变成了:你的仓库是否给了它们清晰的操作模型——还是让它们猜测?Plumego 的控制平面给 Agent 提供了资深评审者同样的路由信号。
控制平面
五个文件定义操作模型。
Agent 在做任何变更前按顺序读取这些文件。同样的文件也是人工评审者的权威参考。一套模型,两类受众。
specs/task-routing.yaml 任务路由器 把每种工作意图(添加中间件、修改扩展行为、更新边界规则)映射到归属模块路径和 start_with 文件列表。Agent 在接触任何 Go 文件之前先读这份文件。
任务: "添加限流" → 模块: middleware/ → 读取: middleware/module.yaml specs/dependency-rules.yaml 边界执行器 声明哪些包可以 import 哪些包。违规由 go run ./internal/checks/dependency-rules 机械地捕获——不依赖评审者的记忆。
稳定根不得 import x/* — 在 CI 中强制执行 specs/change-recipes/ 变更模板 15 个标准任务形态的可复用 recipe:add-middleware、new-extension-family、promote-to-beta 等。每个 recipe 都有有序步骤和明确的 stop condition。
15 个 recipe 覆盖所有常见变更类型 <module>/module.yaml 模块作用域 每个模块自声明归属、风险等级、测试命令和评审清单。Agent 只运行与被改动模块相关的检查。
validation: go test -race ./middleware/... && go vet ./middleware/... make gates CI 等效循环 一条命令镜像 CI:边界检查、go vet、gofmt、竞态测试和普通测试。Agent 在每次 push 前运行——不会在 CI 中遇到意外。
make gates → boundary + vet + fmt + race + tests Agent 执行模型
变更如何流经控制平面。
这是每个 Agent(以及每位贡献者)遵循的有序工作流。每个步骤都有确定性输出,然后再进入下一步。
读取 task-routing.yaml
在打开任何 Go 文件之前,Agent 先读 specs/task-routing.yaml,找到该任务类型的归属模块。这在变更发生前就阻止了误路由。
读取 module.yaml
目标模块的 module.yaml 声明了作用域、风险、in-scope 路径、out-of-scope 路径以及要运行的确切验证命令。Agent 现在有了有界的操作上下文。
执行变更
Agent 只编辑声明模块作用域内的文件。边界规则是机器可读的,所以它无需逐包阅读就知道哪些 import 是允许的。
运行 make gates
一条命令在本地运行 CI 等效验证循环:边界检查、vet、格式检查、竞态测试。结果与 CI 相同——push 不会有意外。
Agent-ready
为现代团队的工作方式而生。
本节讨论的是 AI 编码助手——Copilot、Claude、Cursor——帮助写代码或评审代码的工具。这不是关于构建 AI agent 服务的内容;那是 x/ai 模块的范围。
当 AI 编程助手承担越来越多的执行工作时,关键问题变成了:你的仓库是否给了它们清晰的操作模型——还是让它们猜测?Plumego 的控制平面给 Agent 提供了资深评审者同样的路由信号。
specs/task-routing.yaml 任务路由 将工作类型映射到归属模块。Agent 在写任何代码前先读这份文件。
specs/dependency-rules.yaml 边界执行 import 违规由机器捕获,不依赖评审者的记忆。
<module>/module.yaml 模块级 scope 每个模块自声明检查命令。Agent 只运行相关的验证。
选择一个场景,看看它会路由到哪里
middleware middleware/ 阅读完整的 Agent 工作流规范。
概念文档覆盖每个 stop condition、完整的 AGENTS.md 权威顺序、上下文预算规则以及完整的变更 recipe 列表。