Sora代码评审提示词怎么按平台生成不同版本
在跨平台做Sora代码评审时,一个绕不开的痛就是——不同平台对评审数据的“口味”完全不一样。GitHub认死理,GitLab要结构,Bitbucket更极端,只吃纯文本。如果提示词不跟着平台走,评审结果要么挂不上行,要么直接被系统吞掉,白忙活一场。下面的内容,就是把三个平台各自的路数拆开讲清楚。
GitHub 平台专用提示词生成
GitHub那边,第一步得在prompt开头塞进一个硬性占位符:
【repository_owner/repo_name#pull_request_number】
执行的时候,调用 sora2 review --platform github --inject-context,系统会自动把owner、repo、pr_id三个字段补全。这里有个细节:评审结论要写在 comment_body 字段里,而不是 summary。GitHub Actions的review-comment模块只认comment_body,写错了位置等于没写。
输出JSON里还有一个关键改动——别再用 suggestion_range 了,改成GitHub原生的 start_line 和 end_line。Code Scanning Alert只认后者,你用了前者,关联行就丢了。
GitLab 平台专用提示词生成
GitLab的路数完全不一样。它的prompt根节点必须套用 merge_request_diff_refs 结构,下面藏着三个键:source_branch、target_branch、base_sha。缺任何一个,GitLab API都会返回400错误,评审结果直接空掉。别问为什么,问就是架构设计使然。
另外,prompt里还得显式声明
【diff_mode: unified】
--diff-mode unified 就完事。
Bitbucket 平台专用提示词生成
Bitbucket是最“挑食”的一个。它不支持结构化JSON评审注入,只能用 commit_comment 接口走纯文本。所以必须开启 --text-only 模式,prompt里严禁出现任何Markdown符号——星号、反引号、大于号都不行,否则会被截断。
更关键的一点:每条评审意见的结尾必须带上 [BB-REF:commit_hash] 标签。Bitbucket的后端校验模块只认这个标签,没有它,系统会认为这是个“用户手动输入”的普通评论,直接屏蔽掉,不展示。
生成命令也很有讲究:sora2 review --platform bitbucket --commit-hash $(git rev-parse HEAD)。要是漏了 --commit-hash,那 [BB-REF:] 标签就是空的,整条评论等于白写。