Kilo Gas Town Mayor 深度指南:用对话式协调 Agent 管理你的自治编码小镇
【免费下载链接】kilocodeKilo is the all-in-one agentic engineering platform. Build, ship, and iterate faster with the most popular open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kilocode
导读
在 Kilo 的 Gas Town 自治编码平台中,Mayor(镇长)是你与整个 agent 团队之间的唯一对话式入口:它常驻运行、负责把高层的自然语言需求转化为可执行的任务计划(convoy),并持续跟踪、调度、排查小镇内的所有工作。读完本文,你将掌握 Mayor 的核心职责、21 个底层管理工具、五大实战使用场景、高效沟通技巧以及它的能力边界,从而学会用自然语言指挥一整个 AI 开发团队。本文以 mayor.md 为骨架,并结合 concepts.md、sling-work.md、settings.md 等文档进行纵深展开。
Mayor 是什么:小镇的常驻技术负责人
Gas Town 的 agent 团队由三种角色构成,Mayor 是其中负责"统筹"的一环:
| Agent | 角色 | 职责 |
|---|---|---|
| Polecat(编码 agent) | 写代码 | 读取代码、在独立 git worktree 中修改、跑测试、推送分支;多个可并行工作 |
| Refinery(审查 agent) | 代码审查 | 审查 polecat 的输出、运行质量检查、合并通过的工作 |
| Mayor(镇长) | 协调 | 你的对话式接口:规划工作、回答问题、排查问题、让一切持续推进 |
与 polecat 这种"按需拉起、处理完单个 bead 就退出"的工作方式不同,Mayor 是持续运行的——即使当前没有任何编码 agent 在干活,Mayor 也随时在线,等待你的指令或问题。
从职责上看,Mayor 相当于一个"常驻技术负责人(technical lead)",它具体承担五类工作:
- 规划工作(Plans work)——把高层描述转化为 convoy(多任务编队)和 bead(工作单元)
- 汇报状态(Reports status)——清楚每个 agent 在做什么、什么卡住了、什么已经交付
- 排查问题(Triages issues)——调查失败任务、卡死 agent 和升级事件(escalation)
- 配置小镇(Configures the town)——更新设置、管理 rig、调整 agent 行为
- 回答问题(Answers questions)——回答关于代码库、工作历史和镇内状态的问题
值得一提的是,Mayor 的常驻特性与小镇的持久化设计相辅相成:town 会跨会话保留工作历史、agent 配置和关于代码库的机构知识(见 concepts.md),而 Mayor 正是读取和操作这些持久状态的最直接入口。
与 Mayor 对话:入口与会话模型
从你的小镇仪表盘(town dashboard)打开Mayor 面板即可开始对话。会话是持久化的——在同一个会话内,Mayor 会记住之前消息的上下文,因此你可以进行多轮追问而无需每次重复背景。
你可以把它想象成在小镇上"@ 了一下负责人":所有关于小镇的问题和指令都可以直接发给它,从"大家现在在干嘛"到"帮我创建一个三阶段的迁移 convoy"。
五大实战使用场景
场景一:规划工作(Planning Work)
让 Mayor 帮你创建工作是它的核心能力之一。例如:
"Create a convoy to add authentication to the API. We need JWT token generation, middleware for protected routes, and integration tests."
("创建一个 convoy 为 API 增加认证功能。需要 JWT token 生成、受保护路由的中间件,以及集成测试。")
Mayor 收到后会执行三步:
- 拆解——把这个需求分解成带依赖关系的多个 bead
- 提案——给出一个 convoy 计划供你审阅
- 创建——创建 convoy(默认处于 staged 暂存状态,你可以先审阅再让 agent 开工)
这里涉及两个 Gas Town 核心概念:bead(最小工作单元,有open/in_progress/in_review/closed/failed的生命周期)和convoy(多 bead 工作流,bead 之间可以互相依赖,形成 DAG,由 reconciler 保证只有前置依赖满足时才会派发 agent,详见 concepts.md)。staged convoy 的默认行为可以在小镇设置里调整(Staged Convoys Default,默认true,见 settings.md)。
场景二:检查状态(Checking Status)
Mayor 对镇内一切有完全可见性,可以直接问:
"What's everyone working on?"(大家都在忙什么?)"Is anything stuck?"(有什么卡住了吗?)"How did the last convoy go?"(上一个 convoy 结果如何?)
它能给出每个 agent 的状态、bead 的进展以及最近的历史记录。除了对话,你还可以在小镇的rig 页面看到 convoy 跟踪器(每条 bead 的状态和依赖关系一目了然)和实时更新的 kanban 看板(open / in progress / in review / closed 四列),或在beads 页面按状态、类型、rig 过滤所有工作项(详见 sling-work.md)。
场景三:排查问题(Investigating Problems)
当任务异常时,先问 Mayor 而不是自己去翻管理后台:
"The auth refactor bead has been in progress for 20 minutes — what's happening?""Why did the refinery reject the last review?"
Mayor 可以检查 agent 状态消息、审查反馈和容器日志来诊断问题。结合 Gas Town 的**微对抗循环(micro-adversarial loop)**设计——polecat 写完代码后由 refinery 独立审查,被拒后返回修订,超过最大修订轮数(默认 3 次)则 bead 标记为failed并创建 escalation 等待人工处理(见 code-review.md)——你可以让 Mayor 顺着这条链路定位"卡在哪一轮"。
场景四:更新配置(Updating Configuration)
Mayor 可以用自然语言直接修改小镇设置:
"Switch the model to Auto Frontier for this town"(把小镇模型切换到 Auto Frontier)"Set max polecats to 4"(把最大 polecat 数量设为 4)"Add a custom instruction: always use TypeScript strict mode"(添加自定义指令:始终使用 TypeScript strict 模式)
这些配置项对应小镇设置中的真实参数(详见 settings.md):
- 模型配置:默认模型可选Kilo Auto Frontier(最高质量、效果最好)或Kilo Auto Efficient(按任务难度匹配合适模型、成本最低);还可以为 mayor、refinery、polecat 分别设置角色级模型覆盖
- Agent 上限:Max Polecats Per Rig 默认 2,1-2 保守、3-4 适中、5+ 激进
- 自定义指令:一段注入到每个 agent 系统提示词的自由文本,可编码项目约定、架构决策、风格偏好、约束和测试要求
场景五:回答问题(Answering Questions)
Mayor 对代码库、工作历史和镇内状态都有了解,可以作为小镇的"机构知识查询入口"。当然需要说明的是,Mayor 的知识范围限于小镇内部可见的信息(见下文"能力边界")。
Mayor 的 21 个专用工具
Mayor 拥有21 个专用工具用于小镇管理,分为五类。这些工具在收到你的请求时自动调用,你不需要直接执行它们,但了解其能力能帮你更精准地提出需求。
工作创建(Work Creation)
| 工具 | 作用 |
|---|---|
gt_sling | 把单个任务委派给指定 rig 中的某个 polecat agent |
gt_sling_batch | 创建多 bead 的 convoy,支持依赖排序、合并模式和暂存选项 |
编队管理(Convoy Management)
| 工具 | 作用 |
|---|---|
gt_convoy_status | 显示 convoy 的详细状态——每个 bead 的进度和分配对象 |
gt_convoy_start | 启动一个 staged convoy——开始派发 agent |
gt_convoy_close | 强制关闭 convoy(可选地同时关闭其跟踪的 beads) |
gt_convoy_update | 编辑 convoy 元数据(合并模式、功能分支) |
gt_convoy_add_bead | 把一个已有 bead 加入 convoy 的跟踪范围 |
gt_convoy_remove_bead | 从 convoy 中移除某个 bead |
gt_list_convoys | 列出活动中的 convoy 及其进度计数 |
工作单元管理(Bead Management)
| 工具 | 作用 |
|---|---|
gt_bead_update | 编辑 bead 的状态、标题、正文、优先级、标签或依赖 |
gt_bead_reassign | 把 bead 重新分配给另一个 agent |
gt_bead_delete | 删除一个或多个 bead(支持批量,最多 5000 个) |
gt_list_beads | 列出 rig 中的 beads,可按状态和类型过滤 |
Agent 管理(Agent Management)
| 工具 | 作用 |
|---|---|
gt_agent_reset | 强制把 agent 重置为空闲状态,使其脱离当前 bead |
gt_nudge | 给某个 polecat 发送实时提醒(立即、等待空闲或排队模式) |
gt_list_agents | 列出 rig 中所有 agent 及其角色和状态 |
gt_mail_send | 向任意 rig 中的任意 agent 发送持久化的邮件消息 |
小镇与界面(Town & UI)
| 工具 | 作用 |
|---|---|
gt_list_rigs | 列出小镇中的所有 rig(仓库连接) |
gt_ui_action | 触发界面操作——打开抽屉、页面导航、高亮元素 |
gt_escalation_acknowledge | 确认某条升级事件已被审阅 |
gt_report_bug | 在 Gastown 的 GitHub 仓库提交 bug 报告(先检查重复项) |
从这五类工具可以看出 Mayor 的职责边界非常清晰:它负责调度、编排、状态管理、配置和沟通,而把"写代码"留给 polecat、把"审代码"留给 refinery——这与下文"Mayor 不写代码"的定位完全一致。
高效沟通技巧:如何让 Mayor 真正帮你干活
文档给出了三条经过验证的沟通原则,本质是"用明确的信息换取可靠的行为":
技巧一:把范围说具体
模糊的请求会得到模糊的执行。对比:
- 不要只说:"Fix the bugs"(修 bug)
- 而是说:"Fix the TypeScript type errors in src/auth/. There are 3 reported in the CI output."(修复 src/auth/ 下的 TypeScript 类型错误,CI 输出里报了 3 个)
技巧二:复杂工作交给 convoy
单次完成的 agent 输出存在质量天花板——任务越长,错误累积的可能性越大。对比:
- 不要只说:"Add a user dashboard with charts, settings, and notifications"
- 而是说:"Create a staged convoy for the user dashboard. Break it into: 1) dashboard layout and navigation, 2) chart components with mock data, 3) settings page, 4) notification system. Each should build on the previous."(创建一个 staged convoy,拆成 4 个相互承接的步骤)
convoy 的价值在于:分解成小而可审查的块、排序让后一步构建在已审查合并的代码之上、逐块审查每个独立贡献、隔离失败——如果第 3 步失败,前两步已经安全合并(见 sling-work.md)。结合微对抗循环,代码在进入 main 分支前会经过 per-bead 审查、上下文累积、landing review 等多轮审查,从源码结构看这正是 Gas Town 区别于单 agent 工具的核心设计。
技巧三:让 Mayor 先排查
出问题时,先让 Mayor 调查,而不是自己钻进管理后台:
"Bead abc123 has been stuck for 30 minutes — can you investigate?"
Mayor 通常能直接诊断并解决问题——重置卡死的 agent、关闭卡住的 convoy、重新派发工作——这些操作恰好对应gt_agent_reset、gt_convoy_close、gt_sling等工具。
沟通边界与注意事项
原文档明确列出了 Mayor 的四条限制,理解它们能避免错误预期:
- Mayor 负责协调但不写代码——写代码是 polecat 的职责
- 它只能看到小镇内部的情况——无法感知外部系统
- 复杂的多仓库编排可能需要在多个小镇之间手动协调
- 上下文窗口有限——非常长的对话可能丢失早期上下文,建议在长会话中适时开启新会话
另外值得补充的是,Mayor 的行为模型、模型选择(可以在设置中为 mayor 角色单独指定更快的模型)以及与 reconciler 的关系都值得了解:真正驱动小镇前进的是 reconciler——它在工作活跃时每 5 秒触发一次 alarm tick,负责排空事件、评估规则、发出动作、强制不变量(如不重复派发、无孤儿 hook、有界重试),而 Mayor 只是你面向这套自主引擎的"对话式遥控器"(见 concepts.md)。
小结
Mayor 是 Gas Town 这个多 agent 自治平台中"你与系统之间的那层人话翻译器":它把自然语言变成带依赖的 convoy 计划(gt_sling_batch),把状态查询变成对镇内数据的实时读取(gt_list_beads、gt_convoy_status),把配置调整变成对小镇设置的写入。想上手体验,可先阅读 quick-start.md 创建第一个小镇,再对照 index.md 理解整体架构,随后用本文的沟通技巧与 Mayor 对话,逐步把日常开发工作交给这支持续在线的技术负责人。
【免费下载链接】kilocodeKilo is the all-in-one agentic engineering platform. Build, ship, and iterate faster with the most popular open source coding agent.项目地址: https://gitcode.com/GitHub_Trending/ki/kilocode
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考