Inkitt以状态机实现一次性PR自动创建
Inkitt构建了一套面向小型、低风险代码修改的一次性拉取请求创建系统,能够从接收任务开始,自动完成实现、验证并生成可供测试和审查的草稿PR。任务可由Slack、Linear或其他智能体通过API触发,整个流程运行在远程基础设施上,目前已按日投入生产使用,减少了开发者在本地配置和持续监督编码智能体的工作量。
该系统采用事件驱动的编排器,协调多个短生命周期的智能体容器,而不是依赖一条固定流水线。不同阶段分别处理需求说明、代码实现、验证、CI失败修复和合并冲突解决。每次运行的状态都会写入数据库,流程中断后可以从已记录的阶段继续执行。其核心状态转换函数只依据当前状态和外部事件决定下一步动作,不直接操作数据库、网络或语言模型,从而将决策逻辑与副作用分开。
外部系统凭证由编排器统一管理,智能体容器只能获得短期有效的代码仓库Token和模型凭证,无法接触Slack、Linear凭证或云身份,也不能任意建立网络连接。系统还会独立检查实际Git Diff,确认修改没有触及受限制的路径,以避免智能体偏离任务边界。
自动化范围被严格限定。涉及数据库迁移、Schema或共享契约、CI及容器构建配置、身份验证、支付代码,以及新增或升级软件包的任务都会被拒绝。验证、CI修复和合并冲突处理最多各尝试两次。针对可能重复投递的Webhook,系统结合事件去重和条件数据库写入实现幂等;判断CI是否完成时,则会查询GitHub确认所有相关任务均已结束,而不是把单个任务事件误认为整个流程已经完成。
该方案的重点并不只是让模型生成代码,还包括锁、重试预算、权限和状态管理等工程机制。它与云端编码智能体一样限制权限并保留人工审查,但更强调持久化工作流、有限重试和集中控制外部操作。系统始终只创建草稿PR,不能绕过分支保护或自行合并;CI通过且变更进入预发布环境后,会通知任务发起者。之后仍需人工将PR标记为可审查,并处理审查者邀请和审批。对于更大规模的任务,Inkitt还保留本地版本,让人工持续参与开发过程。
本文基于公开渠道信息整理,内容可能存在不准确或遗漏之处,不代表本站立场,如内容涉及侵权或错误,请联系我们处理。
阅读原文