Files
market/.github/workflows
Yige 8610f19f7e ci(i18n-translate): 仅翻译本 PR 改动的 skill,避免 stale 雪崩 (#6)
## 背景

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
2026-05-13 17:32:19 +08:00
..