mirror of
https://git.openapi.site/https://github.com/desirecore/market.git
synced 2026-06-06 05:30:39 +08:00
## 背景 PR #4 翻译失败的根因:`translate.py` 总扫描整个 `skills/` 目录,任何一个 skill 的 stale source_hash 都会触发翻译并占用 GitHub Models quota。一个大文件(如 manage-skills 14KB)撞免费 tier 8K input 上限 → 413 → 整个 workflow fail → ruleset 阻塞合并。 虽然 GitHub Models 已升级付费 quota(200K input 不会再 413),但 scope 收敛仍是更稳健的做法:单 PR token 消耗与改动量成正比,而不是与整个 repo 的 stale skill 数成正比。 ## 改动 - `detect-changes` step 在 `pull_request` 事件下提取本 PR 实际触及的 skill 目录(去重到 `skills/<name>` 粒度),输出到 `GITHUB_OUTPUT skill_paths` - `precheck`(--check)与 `Translate stale locales` 步骤把 `skill_paths` 作为位置参数传给 `translate.py`,仅检查/翻译相关 skill - `manifest.json` / `categories.json` 变动时回退到全扫描(这些影响 i18n fallback 链 / supportedLocales 全局语义) - `workflow_dispatch` 仍默认全扫描;其 `skill` 输入参数优先级最高 ## 验证 - 本地测试 detect-changes shell 提取逻辑:skill 文件 → 正确去重;manifest.json → 全扫描;无相关改动 → relevant=false - 本地 `translate.py --check skills/<name>` 正常工作 - 本 PR 自身仅触及 `.github/workflows/i18n-translate.yml`,detect-changes 应输出 `relevant=false`,translate 整体走 skip 分支 ## Test plan - [ ] CI 上 `validate` / `translate` / `wait-for-copilot-review` 全绿 - [ ] Copilot 评审通过 / conversation resolved - [ ] Squash merge