claude-cookbooks 的 CI 模型校验流水线/model-check 斜杠命令与 Claude Model Check 工作流详解【免费下载链接】claude-cookbooksA collection of notebooks/recipes showcasing some fun and effective ways of using Claude.项目地址: https://gitcode.com/GitHub_Trending/an/claude-cookbooks在 claude-cookbooks 这类以 Jupyter Notebook 为核心的示例仓库中代码会频繁引用 Claude 模型名而模型是滚动迭代的——一旦 Notebook 里写死了已下线的模型名示例就无法复现。本仓库通过一条「斜杠命令 GitHub Actions 工作流」的组合自动化地解决该问题PR 中所有涉及模型引用的改动都会由 Claude Code 对照官方当前公开模型清单进行校验并把结果以评论形式回写到 PR。读完本文你可以理解这条校验流水线的完整触发与执行链路并掌握在自己的仓库中搭建同类「模型名漂移」检查所需的命令定义、权限收敛与无密钥WIF鉴权配置。/model-check一条定义明确的模型引用校验命令命令定义在 .claude/commands/model-check.md是一个标准的 Claude Code 斜杠命令文件由 YAML frontmatter 加 Markdown 指令两部分组成。frontmatter 声明了命令的身份与工具边界model-check.md 第 1–4 行--- allowed-tools: Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*) description: Validate Claude model usage against current public models ---description是一句话功能说明将 PR 中的 Claude 模型用法与当前公开模型清单进行校验。allowed-tools只放行了三个gh子命令族gh pr comment回写结果、gh pr diff查看差异、gh pr view查看 PR 信息。注意这里没有gh pr checkout和gh pr review——该命令的定位是「只读校验 评论」不能切换分支也不能做出 approve/request-changes 这类结论性评审动作属于典型的工具最小权限设计。正文部分给出了命令的执行步骤可拆为四段职责评审范围强约束第 6 行开头即声明 “Only review the files explicitly listed in the prompt above. Do not search for or review additional files.”——只检查上游 prompt 中显式列出的变更文件禁止自行扩大搜索范围。这条约束直接服务于 CI 场景变更文件清单由工作流动态生成后注入命令不得越界审查全仓库。以官方模型总览页为事实基准第 10–11 行要求先从官方文档的模型总览页source of truth 的完整地址见源文件抓取当前允许的模型清单再进行比对。也就是说命令不依赖模型名硬编码在 prompt 里而是运行时拉取最新清单天然免疫模型版本漂移。四条具体检查规则第 13–17 行所有模型引用必须出自当前公开模型清单标记已弃用的模型文档中明确列举了“更早期的 Sonnet 3.5、Opus 3 系列”标记内部/非公开模型名防止 Notebook 中误用不可对外分发的模型标识建议改用-latest结尾的别名alias以获得更好的可维护性——这类别名始终指向同族的最新稳定版本避免每次模型升级都改代码。结果回写第 19、21 行要求输出「清晰、可执行」的反馈并强制通过命令gh pr comment $PR_NUMBER --body your findings将结论作为评论发布到对应 PR 上。$PR_NUMBER这个环境变量由 CI 侧注入见下文工作流的env配置命令本身不关心 PR 号从哪来。触发链路Claude Model Check 工作流如何驱动这条命令命令不会凭空运行它由 .github/workflows/claude-model-check.yml 工作流编排触发。逐段看这条流水线触发条件与路径过滤工作流监听pull_request的opened/synchronize事件并用paths过滤器把触发范围限定在与模型引用最相关的文件类型上claude-model-check.yml 第 3–15 行on: pull_request: types: [opened, synchronize] paths: - **/*.ipynb - **.py - **.md workflow_dispatch: inputs: pr_number: description: PR number to review required: true type: number同时支持workflow_dispatch手动触发输入一个必填的 PR 号即可对历史 PR 补跑校验。作业级还有一个准入条件第 25 行if: github.event_name workflow_dispatch || github.event.pull_request.head.repo.full_name github.repository即仅内部贡献者非 fork的 PR 自动触发fork PR 需手动 dispatch。这一模式在仓库的 code-reviewer 规范中也被明确列为 CI 设计惯例——昂贵的 AI 评审工作流只跑在可信来源上参见 .claude/agents/code-reviewer.md 第 94–106 行。权限与无静态密钥鉴权工作流权限声明为contents: read、pull-requests: write和id-token: write第 17–20 行。其中id-token: write是整条链路的关键它启用 Anthropic Workload Identity FederationWIF由anthropics/claude-code-action把作业自身的 GitHub OIDC 令牌换取一个短时效的 Anthropic 访问令牌全程不需要在 Secrets 中存放静态 API Key。工作流中通过三个字段完成 WIF 对接第 76–78 行anthropic_federation_rule_id: fdrl_01SqmTwzmEE547mtaYN1mqHL anthropic_organization_id: 1ec12c5c-6542-4da8-bf2f-c15919aef01c anthropic_service_account_id: svac_01BHcBBa1UWFvNrHMqJjuaUZ这三项分别指认 Anthropic 侧的联邦规则、组织与 Service Account是「GitHub CI 身份 → Anthropic 服务账号身份」的信任锚点。动态生成变更文件清单「只检查指定文件」这条命令约束靠工作流里的两步实现解析 PR 号第 29–36 行自动事件直接取github.event.pull_request.number手动 dispatch 则取inputs.pr_number结果写入$GITHUB_OUTPUT供后续步骤引用。Checkout PR 头第 38–42 行fetch-depth: 0拉取完整历史手动触发时用format(refs/pull/{0}/head, inputs.pr_number)拼出refs/pull/N/head作为 checkout ref。计算变更文件第 44–67 行先git fetch origin base_ref再git diff --name-only origin/base...HEAD并用grep -E \.(ipynb|py|md)$过滤出三类相关扩展名。有变更时把清单落盘为changed_files.txt并置has_filestrue无变更则直接打印 “No relevant files changed” 并短路后续步骤Claude 校验步骤带if: steps.changed-files.outputs.has_files true条件。手动触发分支还会先gh pr view ... --json baseRefName解析出 PR 基线分支再取 diff并显式传入GH_TOKEN——这两点同样与 code-reviewer 规范中总结的 workflow 模式一一对应。调用 Claude Code 执行 /model-check核心步骤第 69–88 行把前两步的产物组装成命令调用- name: Claude Model Validation if: steps.changed-files.outputs.has_files true uses: anthropics/claude-code-actionbbfaf8e1ffe3e688f7ab65ceee78de241e24a238 # v1.0.132 with: anthropic_federation_rule_id: ... anthropic_organization_id: ... anthropic_service_account_id: ... github_token: ${{ secrets.GITHUB_TOKEN }} prompt: | /model-check Changed files to review: $(cat changed_files.txt) claude_args: | --allowedTools Bash(gh pr comment:*),Bash(gh pr diff:*),Bash(gh pr view:*),Bash(echo:*),Read,Glob,Grep,WebFetch env: PR_NUMBER: ${{ steps.pr-number.outputs.number }}几个值得注意的细节prompt 即命令调用现场/model-check触发斜杠命令随后紧跟Changed files to review:与$(cat changed_files.txt)展开的文件清单——这正好对应命令正文中「explicitly listed in the prompt above」的措辞范围约束与清单注入在此闭环。CI 侧工具授权是 frontmatter 的超集frontmatter 里只有三个gh命令而claude_args --allowedTools额外追加了Bash(echo:*)、Read、Glob、Grep与WebFetch。从源码结构看WebFetch正是命令第 10 步「抓取官方模型总览页」所需的能力——frontmatter 声明的是命令的最小工具面CI 环境按需放宽为「最小够用」。PR_NUMBER经env注入命令最后一步的gh pr comment $PR_NUMBER --body ...由此解析到具体 PR。在命令族中的位置与对比.claude/commands/目录下共有多条评审类命令从工具权限的对比能清楚看出各命令的职责分层命令工具授权要点职责model-check.mdgh pr comment/diff/view只读校验模型引用仅回写评论notebook-review.md同 model-check另加echo、Read/Glob/Grep/WebFetchNotebook 与 Python 脚本质量评审link-review.md同 model-check变更文件内链接的质量与安全审查review-pr-ci.md / review-pr.md增加gh pr review、gh pr checkout、Task等完整代码评审并做出 APPROVE/REQUEST_CHANGES 结论model-check 是最「窄」的一条无Task不派生子 agent、无gh pr review不阻塞合并、无checkout不切换工作区。而 claude-pr-review.yml 走的是完整的/review-pr-ci链路并授权了gh pr review与 model-check 形成「轻量专项检查 vs 全量评审」的分工。两条工作流共享同一套 WIF 鉴权字段与 PR 号解析模式说明仓库内已把「事件解析 → 变更检测 → 斜杠命令执行 → 结果回写 PR」沉淀为可复制的模板。值得注意的是 link-review.md 第 22 行 也把「模型文档应引用当前模型而非已弃用模型」列入链接检查项——model-check 命令正是把这一条从「顺带检查」升级为「专职流水线」。可复用的设计要点从这份命令与工作流的实现中可以提炼出四条对自建「AI 辅助模型名漂移检查」直接有用的经验基准外置模型清单不写进 prompt而是运行时抓取官方总览页命令本身永远不需要随模型发布而修改。范围由编排层注入命令只承诺「审列出的文件」具体清单由工作流用git diff --name-only动态计算并注入 prompt既控制 token 消耗也杜绝评审漂移。工具最小授权 环境级放宽frontmatter 声明最小工具面只读gh三件套CI 通过--allowedTools精准补齐WebFetch/Read/Grep等必要能力不需要 approve 权限的专项检查就不给 approve 工具。WIF 替代静态密钥id-token: write 联邦规则三元组让 CI 用 OIDC 身份换取短时效令牌Secrets 中无长期 API Keyfork PR 又受「仅内部来源自动触发」的准入条件保护成本控制与凭证安全同时成立。复用到自己的仓库时最小改动路径是保留 claude-model-check.yml 的事件/路径过滤、PR 号解析与变更文件检测骨架替换 WIF 三元组为自己的 Anthropic 组织配置再按 model-check.md 的 frontmatter 步骤化正文格式重写检查规则即可若暂时用静态 API Key也可将 WIF 三个字段换成 action 对应的密钥输入链路其余部分不变。【免费下载链接】claude-cookbooksA collection of notebooks/recipes showcasing some fun and effective ways of using Claude.项目地址: https://gitcode.com/GitHub_Trending/an/claude-cookbooks创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考