检查、触发并清理使用安全同步 GitHub Actions 工作流的 GitHub 镜像仓库,用于 Codex 需要进行仓库镜像同步时。
GitHub 安全同步是一项面向实际任务的技能,主要用于使用此技能来创建存储器, 以 security- sync. yml 工作流程 来映射上游 GitHub repo 并保存本地的 . github 工作流程文件;在运行 th 之前, 设置 GITHUB TOKEN。
实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;
涉及批量任务时,还应保存进度,避免中断后重复操作。该技能适合用于一次性任务,也可以接入自动化工作流,与其他技能或上层代理配合完成更完整的业务链路;在组合使用时,应明确每一步的输入输出关系,并避免不同步骤之间出现参数冲突。
此技能适用于镜像上游 GitHub 仓库的仓库,且需保留本地 .github 工作流文件,并配置了 safe-sync.yml 工作流。
GITHUB_TOKEN 环境变量。owner/repo 格式。检查一个镜像仓库:
export GITHUB_TOKEN=... ./scripts/github_safe_sync.py status --owner grey00758 --repo ai-code-board --upstream grey0758/ai-code-board
触发一次手动同步:
export GITHUB_TOKEN=... ./scripts/github_safe_sync.py dispatch --owner grey00758 --repo ai-code-board
在工作流修复后清理误报产生的残留产物:
export GITHUB_TOKEN=... ./scripts/github_safe_sync.py close-force-push-issues --owner grey00758 --repo ai-code-board ./scripts/github_safe_sync.py delete-backups --owner grey00758 --repo ai-code-board
status 检查镜像仓库状态。dispatch。close-force-push-issues 和 delete-backups。status,确认仓库状态已恢复正常。status 输出解读effective_state=exact:镜像仓库与上游仓库对应分支的 HEAD 完全一致。effective_state=metadata-ahead:镜像仓库仅在本地 .github 目录内有额外提交,其余内容与上游一致。此类状态在 safe-sync 镜像仓库中通常属于健康状态。effective_state=behind:上游仓库已有更新提交,而镜像仓库尚未同步跟进。effective_state=local-ahead:镜像仓库包含若干非元数据类提交(即修改了代码或文档等非 .github 内容),但这些提交在上游仓库中并不存在。请在执行任何强制操作前仔细审查。effective_state=metadata-diverged:双方历史记录存在差异,但镜像仓库独有的变更仅限于元数据(如 .github 文件)。这通常意味着同步工作流逻辑仍需进一步审查。effective_state=diverged:镜像仓库与上游仓库均发生了互不兼容的变更。除非另有明确证据,否则应视其为真实同步问题。status请始终优先使用 status。它将返回包含以下字段的 JSON 结果:
backup/ 分支数量若指定的上游分支不存在,脚本将自动回退至上游仓库的默认分支。
dispatch使用 dispatch 可向同步工作流触发 workflow_dispatch 事件。仅当您明确希望跳过常规的“无操作(no-op)”路径时,才添加 --force-sync 参数。
close-force-push-issues仅在您已确认相关强制推送告警确属误报后,方可使用该命令。它将关闭所有标题中包含 检测到上游强制推送 的已打开 Issue。
delete-backups仅在您已确认 backup/ 分支确属冗余噪声后,方可使用该命令。如需预览将被删除的内容,建议先加上 --dry-run 参数执行。
backup/ 分支。main;若仓库使用了其他上游默认分支,请显式传入 --branch 或 --upstream 参数。status 进行验证。