Synara代码审查与Auto-fix CI详解让AI自动修复你失败的PR【免费下载链接】synaraThe best place to build with your AI sub项目地址: https://gitcode.com/gh_mirrors/dpc/synaraSynara 是一款把 AI 编程助手、代码审查Code Review与 CI 自动修复融为一体的开发客户端。它的Auto-fix CI功能可以盯着你的 Pull Request一旦 CI 检查在某个新提交上变红就会自动唤起绑定该 PR 的 AI 会话让 AI 阅读失败日志、定位问题、提交修复并推送——相当于给你的 PR 配了一位 7×24 小时值守的修复机器人。本文带你用 3 步开启这项能力并拆解它背后的轮询机制与安全边界。先认识 Synara 的代码审查视图 在 Synara 左侧导航进入Code review面板你可以像浏览收件箱一样管理所有 PR 和 Issue列表按作者过滤、支持搜索 PR 链接、点开即可看到 Summary / Changes / Timeline 以及完整的 Checks 状态。每个 PR 还能问它一句话底部的Ask about this pull request可以直接把 PR 塞给 AI 会话配合右侧的 Sidechat 与 AI 讨论变更细节。一键开启 Auto-fix CI只需 3 步 第 1 步确认目标 PR 处于Open状态Auto-fix 只接受开启中的 PR。第 2 步在与该 PR 关联的聊天会话中打开 Auto-fix CI 开关。Synara 会先通过该会话自己的工作区验证 PR 确实存在且为打开状态然后进入watching观察中状态。第 3 步什么都不用做。之后你只管继续开发Auto-fix 会在后台每分钟轮询一次该 PR 的 Checks。有几个约束值得注意一个 PR 同一时间只能被一个聊天会话接管避免两个 AI 互相抢修轮询间隔为 60 秒与 Synara 环境面板自身的 PR 轮询节奏一致不会给 GitHub 增加额外压力会话忙正在跑任务、等待你审批或输入时自动让路绝不插队打断你。在 PR 的上下文菜单里你会看到 Checks 失败数量与 Repair 入口的直观提示方便随时判断当前 PR 的健康度工作原理60 秒一次的修复决策Auto-fix CI 的核心是一个纯函数决策器 一个后台轮询服务二者分工清晰组件职责决策器decidePullRequestAutoFix根据存储状态 会话状态 本地检出 PR Checks五种输入输出五种决策wait/disable/pause/update/fix轮询服务每分钟对所有被观察的 PR 执行一次决策并落地结果一轮决策的典型流程PR 被关闭或会话被归档→ 自动移除观察记录disableChecks 仍在跑pending→ 继续等待waitChecks 全绿→ 若之前修过重置尝试次数回到观察状态新提交上 Checks 定局且失败→ 发起一次修复回合fix向该会话注入一条简短指令让 AI 自己用gh pr checks读取失败日志只推送经过验证的修复修复后长时间没有新推送→ 自动暂停并在会话中留一条活动通知说明暂停原因。相关源码可以从 pullRequestAutoFixDecision.ts 和 PullRequestAutoFixService.ts 入手阅读。何时会自动暂停Auto-fix 不会死磕。以下三种情况会进入paused状态并给出中文可读的原因说明attempt-limit连续修复达到次数上限PULL_REQUEST_AUTO_FIX_MAX_ATTEMPTS定义于 pullRequestAutoFix.ts后 Checks 仍然失败no-push一轮修复回合结束却没有推送任何新提交dispatch-interrupted修复指令下发过程中被中断例如服务重启。暂停后只需在会话中重新打开 Auto-fix CI 即可恢复。每次暂停/停止都会在聊天流里追加一条Auto-fix CI活动记录行为完全可追溯。安全边界自动修复不会放飞设计上有几条很克制的规则值得你了解权限不升级修复回合复用会话本身的运行模式与交互模式AI 在无人值守时拿不到比你手动操作时更多的权限计划模式不修复会话处于plan模式时决策器只等待不会实际改动代码干净工作区才切分支如果会话当前检出在别的分支上只有在工作区无未提交修改时才会切到 PR 分支修复完成后切回原分支或恢复到原 HEAD绝不打断你手头的工作失败日志视为不可信数据注入给 AI 的提示词明确要求把检查日志与分支名当作不可信数据先验证 PR 与检出的 HEAD 一致再动手。你可以参考 PullRequestAutoFixService.test.ts 查看这些边界条件的完整测试覆盖。把 PR 交给 AI 之后会发生什么 修复回合发起后会话就像收到了一条来自 CI 的告警消息它自己拉取失败日志、分析原因、写补丁、推送然后回到观察状态等待下一轮 Checks。整个过程中你随时可以在代码审查视图里看到 PR 状态与 Checks 的实时变化。源码速查 模块路径修复决策逻辑apps/server/src/pullRequestAutoFix/pullRequestAutoFixDecision.ts后台轮询服务apps/server/src/pullRequestAutoFix/Layers/PullRequestAutoFixService.ts前端 PR 观察区组件apps/web/src/components/chat/environment/EnvironmentPullRequestSection.tsx输入框 Auto-fix 提示apps/web/src/components/chat/ComposerPullRequestAutoFixHint.tsx数据契约状态机与常量packages/contracts/src/pullRequestAutoFix.ts小贴士Auto-fix CI 是 Beta 特性需要服务端启用相应开关。如果你发现某个 PR 反复修不好通常意味着失败根因在 CI 环境本身如缓存、密钥这时建议关闭自动修复、先手动跑通一次流水线。让 AI 守着你的 PR、你安心睡觉——这就是 Synara 代码审查与 Auto-fix CI 想带给你的体验。【免费下载链接】synaraThe best place to build with your AI sub项目地址: https://gitcode.com/gh_mirrors/dpc/synara创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考