第十章:可合并结果
App Review 是合并前的主关口
▫️
看改了哪些文件。
看每个文件 diff。
确认是否超出任务范围。
确认测试是否运行。
必要时行内评论让 Codex 修。
人工决定是否 stage / commit / push。
一个完整 App 改动流程
代码块
Plain Text
目标:修复登录页移动端按钮换行问题。
范围:只改 src/pages/login.tsx 和 src/styles/login.css。
验证:运行 npm test -- login 和 npm run lint。
交付:展示 diff 摘要,不要自动提交。
#PicGeuqszwRq text { white-space: pre; }#PicGeuqszwRq .fb0 { stroke: var(--N900-FG, 0.15); }#PicGeuqszwRq .fb0 {stroke: rgba(31,35,41, 0.15)}#PicGeuqszwRq .fx0 { stroke-miterlimit: 10; }#PicGeuqszwRq .fx0 {stroke-miterlimit: 10}#PicGeuqszwRq .fa1 { fill: rgb(187, 191, 196); }#PicGeuqszwRq .fa1 {fill: rgb(187, 191, 196)}#PicGeuqszwRq .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#PicGeuqszwRq .fx1 {font-style: normal}#PicGeuqszwRq .fx2 { text-anchor: middle; }#PicGeuqszwRq .fx2 {text-anchor: middle}#PicGeuqszwRq .fx3 { dominant-baseline: central; }#PicGeuqszwRq .fx3 {dominant-baseline: central}#PicGeuqszwRq .fx4 { stroke: none; }#PicGeuqszwRq .fx4 {stroke: none}#PicGeuqszwRq .fc0 { fill: var(--text-caption); }#PicGeuqszwRq .fc0 {fill: #646a73}#PicGeuqszwRq .fa2 { fill: var(--text-link-disabled); }#PicGeuqszwRq .fa2 {fill: rgb(187, 191, 196)}#PicGeuqszwRq .fa3 { fill: rgb(222, 224, 227); }#PicGeuqszwRq .fa3 {fill: rgb(222, 224, 227)}#PicGeuqszwRq .fx5 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#PicGeuqszwRq .fx5 {font-style: normal}#PicGeuqszwRq .fx6 { text-anchor: start; }#PicGeuqszwRq .fx6 {text-anchor: start}#PicGeuqszwRq .fx7 { dominant-baseline: alphabetic; }#PicGeuqszwRq .fx7 {dominant-baseline: alphabetic}#PicGeuqszwRq .fc1 { fill: rgb(0, 0, 0); }#PicGeuqszwRq .fc1 {fill: rgb(0, 0, 0)}#PicGeuqszwRq .fb1 { fill: var(--N900-FG, 0.15); }#PicGeuqszwRq .fb1 {fill: rgba(31,35,41, 0.15)}#PicGeuqszwRq .fb2 { fill: rgb(209, 217, 224); }#PicGeuqszwRq .fb2 {fill: rgb(209, 217, 224)}#PicGeuqszwRq .fa4 { fill: var(--bg-body); }#PicGeuqszwRq .fa4 {fill: #fff}AB123456检查范围行为测试样式风险标准只改目标文件修复目标问题,没有顺手重构运行了相关测试和现有代码风格一致没有引入密钥、网络、权限变化
App Review 面板里具体看什么
Review 不是只看“Codex 说完成了”。逐项看:
#fZcpbDnaUCqZ text { white-space: pre; }#fZcpbDnaUCqZ .fb0 { stroke: var(--N900-FG, 0.15); }#fZcpbDnaUCqZ .fb0 {stroke: rgba(31,35,41, 0.15)}#fZcpbDnaUCqZ .fx0 { stroke-miterlimit: 10; }#fZcpbDnaUCqZ .fx0 {stroke-miterlimit: 10}#fZcpbDnaUCqZ .fa1 { fill: rgb(187, 191, 196); }#fZcpbDnaUCqZ .fa1 {fill: rgb(187, 191, 196)}#fZcpbDnaUCqZ .fx1 { font: 400 12px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#fZcpbDnaUCqZ .fx1 {font-style: normal}#fZcpbDnaUCqZ .fx2 { text-anchor: middle; }#fZcpbDnaUCqZ .fx2 {text-anchor: middle}#fZcpbDnaUCqZ .fx3 { dominant-baseline: central; }#fZcpbDnaUCqZ .fx3 {dominant-baseline: central}#fZcpbDnaUCqZ .fx4 { stroke: none; }#fZcpbDnaUCqZ .fx4 {stroke: none}#fZcpbDnaUCqZ .fc0 { fill: var(--text-caption); }#fZcpbDnaUCqZ .fc0 {fill: #646a73}#fZcpbDnaUCqZ .fa2 { fill: var(--text-link-disabled); }#fZcpbDnaUCqZ .fa2 {fill: rgb(187, 191, 196)}#fZcpbDnaUCqZ .fa3 { fill: rgb(222, 224, 227); }#fZcpbDnaUCqZ .fa3 {fill: rgb(222, 224, 227)}#fZcpbDnaUCqZ .fx5 { font: 400 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; }#fZcpbDnaUCqZ .fx5 {font-style: normal}#fZcpbDnaUCqZ .fx6 { text-anchor: start; }#fZcpbDnaUCqZ .fx6 {text-anchor: start}#fZcpbDnaUCqZ .fx7 { dominant-baseline: alphabetic; }#fZcpbDnaUCqZ .fx7 {dominant-baseline: alphabetic}#fZcpbDnaUCqZ .fc1 { fill: rgb(0, 0, 0); }#fZcpbDnaUCqZ .fc1 {fill: rgb(0, 0, 0)}#fZcpbDnaUCqZ .fb1 { fill: var(--N900-FG, 0.15); }#fZcpbDnaUCqZ .fb1 {fill: rgba(31,35,41, 0.15)}#fZcpbDnaUCqZ .fb2 { fill: rgb(209, 217, 224); }#fZcpbDnaUCqZ .fb2 {fill: rgb(209, 217, 224)}#fZcpbDnaUCqZ .fa4 { fill: var(--bg-body); }#fZcpbDnaUCqZ .fa4 {fill: #fff}AB1234567区域文件列表单文件 diff测试结果行内评论Stage / CommitPush / PR要看什么是否出现范围外文件、生成物、锁文件、配置文件是否有无关重构、删除、格式化噪音是否真的运行过命令,失败是否解释清楚能否针对具体行要求 Codex 修复是否由你确认提交范围和 message是否推到正确分支和远端
如果 Review 中发现问题,优先用行内评论或明确提示让 Codex 修,不要重新开一个含糊的大任务。
4. /review 的用法
GitHub Connector 的角色
GitHub Connector / integration 适合:
•
读取 issue。
•
读取 PR 上下文。
•
查 CI 状态。
•
评论或更新 PR(取决于权限)。
•
从 App / Cloud 之间接力任务。
授权前要确认:
•
访问哪些仓库。
•
是否有写权限。
•
是否能评论 PR。
•
是否能创建分支或提交。
从 App 到 GitHub PR
典型流程:
代码块
Plain Text
App thread
-> Codex 修改本地文件
-> Review 面板检查
提交信息建议让 Codex 先草拟,但由你确认:
代码块
Plain Text
根据当前 diff 写一个简短 commit message。不要执行 git commit。
PR 前验收清单
创建 PR 前确认:
#ifhTrTQkePDJ text{white-space:pre}.fb0{stroke:var(--N900-FG, 0.15)}.fx0{stroke-miterlimit:10}.fa1{fill:#bbbfc4}.fx1{font:normal 400 12px MonospacedNumber,LarkHackSafariFont,LarkEmojiFont,LarkChineseQuote,-apple-system,BlinkMacSystemFont,Helvetica Neue,Tahoma,PingFang SC,Microsoft Yahei,Arial,Hiragino Sans GB,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.fx2{text-anchor:middle}.fx3{dominant-baseline:central}.fx4{stroke:none}.fc0{fill:var(--text-caption)}.fa2{fill:var(--text-link-disabled)}.fx5{font:400 normal 13px MonospacedNumber, LarkHackSafariFont, LarkEmojiFont, LarkChineseQuote, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Tahoma, "PingFang SC", "Microsoft Yahei", Arial, "Hiragino Sans GB", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"}.fx6{text-anchor:start}.fx7{dominant-baseline:alphabetic}.fc1{fill:rgb(0, 0, 0)}.fx8{font:400 normal 13px LarkHackSafariFont, LarkEmojiFont, "ui-monospace", -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, "Noto Sans", Tahoma, "Nimbus Sans L", Arial, "Liberation Sans", "PingFang SC", "Hiragino Sans GB", "Noto Sans CJK SC", "Source Han Sans SC", "Source Han Sans CN", "Microsoft YaHei", "Wenquanyi Micro Hei", "WenQuanYi Zen Hei", STHeiti, SimHei, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji", system-ui}.fb1{fill:var(--N900-FG, 0.15)}.fb2{fill:rgb(209, 217, 224)}.fa3{fill:var(--bg-body)}AB1234567项分支Diff测试描述Secret连接器权限标准不是直接在 上提交没有范围外改动至少运行相关测试或说明不能运行原因Summary / Verification / Risk 写清楚没有 、token、账号信息GitHub 写权限只用于目标 repo / PRmain.env
什么时候用 Cloud / Web 处理 PR
适合 Cloud / Web:
•
远程仓库任务,不需要本机环境。
•
长时间跑的修复。
•
PR 评论和 CI 反复修。
•
你不想占用本机 App 线程。
不适合:
•
依赖本机私有服务。
•
需要本地 GUI / 本机文件。
•
需要你频繁交互判断的小任务。
CLI review 是辅助
CLI 可以在 CI 或终端中做补充:
codex review
codex review --help
适合:
•
CI 中自动审查 PR。
•
终端里快速检查当前 diff。
•
和 App Review 结果交叉验证。
不要用 CLI review 取代 App Review 面板。
PR 描述模板
## Summary- 修复登录页移动端按钮换行
- 限制按钮最小宽度,避免文本溢出
## Verification- npm test -- login
- npm run lint
## Risk- 仅影响登录页样式
- 已检查桌面断点
常见风险
常见问题
Q1:Codex 可以自动提交吗?
技术上可以,但学习阶段不建议。先让它展示 diff 和 commit message,再由你确认。
Q2:App Review 和 GitHub PR Review 哪个重要?
都重要。App Review 是本地合并前检查;GitHub PR Review 是团队协作关口。
Q3:Cloud 修 PR 后怎么回到 App?
看当前 App / Cloud 的 handoff 能力和 Git 分支状态。可靠做法是拉取远端分支,在 App 中继续 Review。