资讯动态

OpenClaw PR Maintainer 实战指南:以源码证据驱动 Issue 审阅、修复与原生合入

发布时间:2026/9/17 0:11:55 来源:尧图企业网站定制
OpenClaw PR Maintainer 实战指南以源码证据驱动 Issue 审阅、修复与原生合入【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 项目地址: https://gitcode.com/GitHub_Trending/cl/openclawOpenClaw 是真正动手做事的 AI Agent 运行时其开源仓库维护工作同样高度自动化维护者可以通过.agents/skills/openclaw-pr-maintainer/SKILL.md定义的原生工作流完成 Issue/PR 的审阅、分诊、修复与合入。本文基于该技能文档并结合仓库内references/参考文档、scripts/github-activity.sh辅助脚本以及根目录AGENTS.md与scripts/AGENTS.md的治理约定完整还原一条只读审阅 → 本地修复 → 原生合入 → 远端核验的可信维护链路帮助你掌握 OpenClaw 维护者的决策边界、命令序列与证据纪律。技能定位谁拥有什么在深入操作之前必须先分清职责边界。技能文档开篇就划定了两条线根目录AGENTS.md拥有修复、产品、源码信任与审批策略它决定了哪些操作属于读操作、哪些属于写操作、未信任代码能否在本地执行、以及批量变更的审批上限本技能SKILL.md只拥有 GitHub 工作流本身即如何选择范围、如何取证、如何审查、如何落地。同时粘贴进来的 PR 引用a pasted ref只是上下文不是发布或扩大任务的授权。这意味着维护 Agent 不能因为用户贴了一条 PR 链接就自动获得评论、打标签、关闭或合入该 PR 的权限——每类动作都需要对应的授权范围。在仓库中这一责任划分的落点是 根目录 AGENTS.md其中明确任务定义范围与授权其选定的工作流拥有执行、审查、发布、恢复与清理。而工作流命令的拥有者是 scripts/AGENTS.mdauthorized maintainer workflow owns landing; nativescripts/prgates, recovery, and cleanup require scripts guide。第一步选择操作范围SKILL.md 定义了五类典型操作每类对应的权限与动作边界完全不同范围权限级别允许的动作Review / triage / list只读解释变更、给出可操作发现、提供证据、说明不确定项未经单独授权不得编辑、指派、打标签、评论或关闭Fix only本地写调查、本地修复并验证发布仍需 ship/land 或等价的范围授权Land/ship 或 autonomous repair完整写以当前源码证据完成审阅、exact-head CI、原生合入与远端核验保留贡献者署名与无关工作Queue/discovery只读批量发现相关 Issue/PR不把单个命名 PR 变成未经请求的队列大扫除Author / regression attribution条件查询查阅账户年龄与贡献历史见 attribution.md且不是每个 PR 的必经步骤值得强调的两条纪律常规步骤无需重复授权在获得 land/ship 权限后审阅、CI 检查、合入等例行步骤不需要每次重新申请但安全、schema、产品、发布等根级闸门仍然生效见 AGENTS.md。独立工人bounded independent workers只在能增加证据价值时使用且共享 checkout/ref 的变更与 GitHub 写入必须串行化禁止用用户拥有的 app 任务隐藏内部子任务。队列分诊的细节规则references/triage.md进一步补充了发现discovery阶段的行为准则优先使用本地的Gitcrawl 数据定位候选再用窄字段的gh实时查询验证相似度分数永远不能证明重复或可关闭请求计数时只返回合格项搜索耗尽要如实披露不能注水短 diff 不等于低风险通用短名单优先外部贡献者14 天以内的宽权限维护者 PR 默认排除除非点名或显式请求维护者自建的 Issue 在通用发现中保持抑制除非与请求范围相关。分诊的完整规则见 triage 参考文档。第二步检查实际条目Inspect the actual item对命名条目动手前先做三件事git status -sb——保留无关的本地改动在有用时使用本地gitcrawl数据用裸 PATH 下的gh 窄 JSON 字段做实时决策过期的归档自动回退到gh但不要为了开始工作而广泛同步归档。PR 来源只认gh pr view/diff与 checkout禁止用 Web 搜索替代。技能文档给出的标准取证命令gh pr view pr --repo openclaw/openclaw \ --json number,title,state,body,author,assignees,baseRefName,headRefName,headRefOid,files,comments,reviews gh issue view issue --repo openclaw/openclaw \ --json number,title,state,body,author,assignees,comments指派Assignment语义深挖之前先检查当前指派状态他人指派且不足 6 小时视为活跃归属只有用户明确指示才能继续更早的指派只是归属提示不是沉默否决无法验证指派时间时如实说未知认领未指派的命名条目必须处于指派或 landing/autonomous-resolution 权限之下并使用已验证的认证登录名未经指示绝不移除他人的指派账户/活动研究归属attribution.md的条件路由。第三步建立结论Establish the outcome技能文档要求围绕受影响的 owner、入口点、调用方、相关兄弟模块、测试、文档、历史与当前 main建立证据链依赖契约直接决定行为时必须直接检查适用时还要执行根目录对 Codex 源码的人工检查要求。四种典型结论分支Already fixed已修复在当前 main上证明原始行为已被修复给出规范 commit/PR 与匹配的源码或可运行证据在关闭权限下评论该证据后关闭否则只上报。Real defect真实缺陷复现它修复其归属的不变量owning invariant并证明修复路径与受影响的兄弟模块倾向连贯的简化而非症状补丁代码量与 LOC 只是上下文不是正确性闸门。Existing useful PR既有有效 PR优先改进可编辑的分支而不是替换它确实无法安全更新时先创建经授权的署名替换再关闭源 PR绝不在替换祖先后将贡献者拥有的 PR squash——必须使用维护者拥有的替换 PR。Uncertain / product decision不确定或产品决策如实陈述具体缺口不合并投机性修复也不自动以超出范围关闭。证据的取舍$openclaw-testing与源码信任证据等级由$openclaw-testing技能决定可信开发证明默认走本地远程证明需要环境或隔离理由不可用的可选 live 证明可用有意义的边界证明替代但必须声明限制显式 live 请求、外部 API 契约、以及风险要求认证执行authenticated execution的变更必须保留其要求的证明严禁把 mock、跳过的检查或旧 head 描述成 live 证据。这与 根目录 AGENTS.md 的立场一致未经信任的贡献者/fork 代码只能在无秘密的隔离环境运行源码审查本身不构成凭据执行授权。第四步审查与发布Review and publish$autoreview的使用时机提交或落地非平凡代码前运行$autoreview并解决已验证的可操作发现仅当请求明确要求独立 autoreview 时才为 review-only 请求使用它普通只给出发现的审查默认不需要第二评审人实质性变更或未解决顾虑要重新开启 reviewpatch 完全一致的 rebase 或机械 head 变更不需要真实的人工/机器人发现必须处理被拒绝的要解释原因bot 分数与 Rank-up 列表不构成额外义务。PR 模板与描述纪律使用当前 PR 模板先用平实语言写问题与具体用户影响解释保持简短实现清单留在 diff 或可选 details 中重要的风险、迁移、必做动作、有用证据、已知缺口与贡献者署名保持可见且最新内部工作不要编造用户收益有意义的权衡要解释不要求普适的 LOC 表、溯源字段或备选方案小作文CHANGELOG.md归发布所有用户可见的 release-note 上下文留在 PR/commit 中除非明确要求省略 agent 转录稿。公开变更前的硬约束验证 author/committer 与已验证的写者身份verified writer identityshell 敏感文本使用 body 文件--body-file只在授权写范围内发布发现更新已有评论/正文而不是重复新建发布、媒体、exact-head CI 与原生落地机制都在 landing 参考文档 中发布或合入前必须先读它。第五步原生合入Native landing——命令序列与前置条件landing 参考文档 规定针对 main 目标的 PR 只能使用原生序列native sequence其 wrapper 是仓库内的scripts/pr见 scripts/AGENTS.mdscripts/pr review-init pr scripts/pr review-checkout-main pr scripts/pr review-checkout-pr pr scripts/pr review-artifacts-init pr # 为这个精确 head 补全生成的 review 工件 scripts/pr review-validate-artifacts pr # 仅在 exact-head 必需 CI 全绿后调用 OPENCLAW_TESTBOX1 scripts/pr prepare-run pr scripts/pr merge-run pr关键纪律每一项都有源码/文档依据保持生成的review.md/review.json首行、PR 身份与 head 戳不变模板枚举值中land-ready 推荐是READY FOR /prepare-pr每次 push 后重新运行review-init——仅 checkout 不会刷新 guard必须从 PR-head 模式验证不得伪造通过的证据也不得抹掉失败的 review 条件OPENCLAW_TESTBOX1表示用托管证据代替本地跑全量 gates对已显式 owner 批准的 reviewed fork 代码且无托管 Testbox 时使用文档化的OPENCLAW_PR_GATES_REMOTEtestbox路径观察单个 exact head 用node scripts/watch-pr-ci.mjs pr head-sha窄 JSON 读取 check/run失败日志只拉一次非 main 目标不使用prepare-run/merge-run其 base 是 main改用 review 工件 exact base/head CI重新验证远端 head并在同一权限下用gh pr merge --match-head-commit verified-sha合入。Wrapper 信任边界与锁恢复scripts/AGENTS.md 强调scripts/pr按 PR 串行化 review/prepare/merge跨关联 worktreescripts/pr gc跳过活动或不确定的锁子命令分类表是 wrapper 信任边界不匹配的本地 wrapper 只能以--dev-wrapper或OPENCLAW_PR_DEV_WRAPPER1运行advisory子命令landing子命令永远要求 canonical/origin-main wrapper 代码失败的 PR 源获取会验证完整 head SHA 与身份在获取前后不变——GitHub 异步的refs/pull/PR/head投影不是源码权威锁恢复确认没有遗留子工具后只能使用 wrapper 打印的精确 token 与命令scripts/pr lock-recover恢复绝不允许手工删除锁或发起竞争重试。第六步合并结果核验与延迟收尾Recovery and closeoutlanding 文档给出了失败也可能已合并的处理模型这是防止双重合入的关键超时或失败的 merge 响应仍可能意味着 GitHub 已合并重试前先核对远端状态与祖先ancestry关系验证最终 merge commit 确实在当前 main上draft、pending check 或本地摘要都不算落地merge-run移除其 worktree 后命令执行要切回持久 checkout只清理任务自有的状态当核对确认已合并但收尾仍挂起时先完成归属范围内的清理再用精确的当前 receipt OID收尾git rev-parse refs/openclaw/pr-merge-outcomes/PR scripts/pr merge-complete PR OUTCOME_OID --confirmed-operator-completionmerge-complete会重新验证历史合并要求原生 worktree、PR 自有本地分支与远端 head 分支不存在它从不合并、从不删除资源最多在merged状态下发布第一条完成评论。缺失或不明确的 marker 保持 pending每次状态转换后都要重读 OID。与此配套scripts/AGENTS.md 规定merge-run在发起任何 merge/auto/queue 请求前会把仓库身份、PR、main 目标、prepared head、观察到的 main、合并方式、路由与尝试记录写入refs/openclaw/pr-merge-outcomes/PR这些 ref 禁止删除或推送进程锁恢复也不清除它们恢复性重试必须使用scripts/pr merge-recover PR OUTCOME_OID --confirmed-operator-recovery。归属与回归溯源Attribution当用户询问谁写的、贡献者身份影响具体信任决策、或需要把回归归因到引入 commit 时读取 attribution 参考文档使用PR/Issue 作者登录名而非聊天用户名字按需拉取一次 profile 元数据gh api users/login --jq {login,name,created_at,type} .agents/skills/openclaw-pr-maintainer/scripts/github-activity.sh login只有 GitHub 全局活动相关时才加--global该辅助脚本启用全局活动时每人最多 5 次调用不要默认对每个条目运行活动只是上下文不是补丁正确与否的证据查询缺失/不完整/缓存/失败不等于零活动保留真实贡献者署名时使用 PR commit 的公开作者邮箱或其 GitHub noreply 身份绝不编造名字或邮箱。引入 commit 的主张git log -S/-G、blame 与关联 PR 只能找到候选不能证明谁引入了缺陷必须检查原始父提交并对比受影响行为git --no-replace-objects cat-file -p candidate-sha git --no-replace-objects diff --no-ext-diff --no-textconv \ raw-parent candidate-sha -- path浅克隆/嫁接边界不是根 commit缺失父对象或不可验证的 patch 意味着归因未知而不是编造一个引入 SHA。要区分代码作者、PR 作者、合并者、提交者、自动化触发器与当前 PR 拥有者自动化只能凭已验证的时间线或命令证据归因给人类。github-activity.sh 的实现细节仓库中的 github-activity.sh 是上述命令的具体实现其行为可直接从源码确认默认仓库openclaw/openclaw、时间窗 12 个月支持--repo owner/repo、--months N、--global参数使用gh api search/issues/search/commits统计 PR、Issue 与 commit 数--cache 1h启用原生缓存全局贡献通过一次 GraphQLcontributionsCollection聚合请求获取 commits/PRs/issues/reviews 总数时间窗按已完成 UTC 日计算并做月末钳制全局贡献窗口封顶一年capped at one year脚本明示边界Repo counts: search index totals, default-branch commits; 1h cache; index/cache may lag以及Zero does not prove inactivity——即搜索索引总量会滞后零活动不能证明不活跃。证据媒体的上传规范Media当需要为 PR/Issue 附上审阅证据媒体时media 参考文档 规定首选当命令帮助暴露--attach时在gh issue create/edit/comment与对应gh pr命令上使用可重复的 flag例如gh pr comment pr --repo openclaw/openclaw --body-file comment.md --attach proof.mp4视频规则接受.mp4/.mov/.webm本地上限 100 MBGitHub 账户上限可能更低视频路径不要加#alt上传资产不可删除兼容回退gh缺--attach时直接用curl上传到 GitHub 的uploads.github.com/user-attachments/assets端点再把返回的.url以图片alt或视频裸行方式嵌入422表示类型不支持404表示 repo id 错误或无 push 权限webm 建议用ffmpeg转码为 H.264 mp4 以保证播放兼容上传失败不豁免根目录的 UI 截图完成/落地闸门AGENTS.md 的 UI screenshot completion/landing gate只有图片在目标位置内联渲染才算数仅 manifest URL 不算上传前必须检查并净化每个捕获禁止浏览器上传、禁止把证明媒体 commit 进产品分支上传是永久的并继承仓库可见性不要泄露私人桌面内容、标识符、模型路由或秘密。治理红线的速查贯穿整套工作流的授权与安全约束可从 根目录 AGENTS.md 提取为以下速查表Review/triage 是只读的变更必须来自任务授权已有授权贯穿同一范围的工作与恢复批量关闭/重开超过 50 项需要显式数量与范围未信任的贡献者/fork 代码只运行在无秘密隔离环境中源码审查本身不授权凭据执行更新协议/版本、依赖 patch/override、付费服务、发布与出版需要显式审批——fix/ship 授权不隐含发布授权修改/重启非你创建的 Gateway 或 live 状态需要按任务审批需要批准的范围新配置项、公共契约/schema/持久性/保留/权限变更、付费或破坏性操作CODEOWNERS 路由审查受限/安全路径与重大产品/行为/安全/归属变更需要列名 owner 参与。总结一条可信维护链路的五个检查点完整的 openclaw-pr-maintainer 工作流可以浓缩为五个依次通过的检查点范围——本次操作是只读、仅修复、还是 land权限是否覆盖取证——git status -sb 窄 JSONgh命令获取真实 PR/Issue 状态与源码不依赖 Web 搜索与过期归档结论——先确立已修复 / 真实缺陷 / 有效 PR / 不确定分支用$openclaw-testing选择与风险匹配的证明审查——$autoreview解决可操作发现PR 描述以问题与用户影响开头保留署名与风险可见落地与核验——走scripts/pr原生序列、exact-head CI、merge-run后核对远端祖先必要时用 outcome ref 与merge-complete做延迟收尾绝不手工清锁或盲发重试。这套工作流的价值在于它把维护开源仓库从依赖个人判断的灰色操作变成了可审计、可恢复、有明确责任归属的工程流程——每个动作都有权限边界每个结论都要求源码级证据每次失败都保留可核验的 recovery 路径。这正是 OpenClaw 仓库在 CONTRIBUTING.md 与 docs/reference/pull-request-review-flow.md 之外由维护者技能层承担的自动化治理内核。【免费下载链接】openclawThe AI that really does things. Any OS. Any Platform. The lobster way. 项目地址: https://gitcode.com/GitHub_Trending/cl/openclaw创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价