Skip to content

feat: add bilingual (zh/en) language support#74

Open
Svtter wants to merge 11 commits into
mainfrom
bilingual-support
Open

feat: add bilingual (zh/en) language support#74
Svtter wants to merge 11 commits into
mainfrom
bilingual-support

Conversation

@Svtter
Copy link
Copy Markdown
Collaborator

@Svtter Svtter commented May 14, 2026

Summary

  • All actions 新增 language 输入参数(默认 zh),支持 zh(中文)和 en(英文)
  • language: en 时,Python 脚本自动在 prompt 末尾追加英文回复指令
  • 所有 prompt 的判定关键词已更新为双语格式(如 无需审计 / SKIP可合并 / CAN MERGE
  • README.md 新增完整中文文档部分,与英文文档并列

使用方式

直接设置:

- name: Run OpenCode review (English)
  uses: Svtter/opencode-actions/review@v2
  with:
    github-token: ${{ secrets.GITHUB_TOKEN }}
    language: en

从仓库变量读取:

language: ${{ vars.OPENCODE_LANGUAGE }}

改动文件

  • github-run-opencode/run-github-opencode.py — 读取 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量,追加语言指令
  • github-run-opencode/action.yml — 新增 language 输入
  • review/action.yml — 新增 language 输入,prompt 增加双语判定关键词
  • feature-missing/action.yml — 同上
  • spec-coverage/action.yml — 同上
  • README.md — 新增中文文档部分

Test plan

  • 设置 language: zh(或不设置),验证 agent 以中文回复
  • 设置 language: en,验证 agent 以英文回复,使用英文判定关键词
  • 通过 vars.OPENCODE_LANGUAGE 配置语言,验证能正确读取

🤖 Generated with Claude Code

Add a `language` input (default: `zh`) to all actions that controls the
agent's response language. When set to `en`, the Python script appends
an English language override instruction to the prompt.

Changes:
- `run-github-opencode.py`: read `GITHUB_RUN_OPENCODE_LANGUAGE` env var,
  append English instruction to prompt when language is `en`
- `github-run-opencode/action.yml`: add `language` input
- `review/action.yml`: add `language` input, update prompt with bilingual
  verdict keywords (可合并/CAN MERGE, etc.)
- `feature-missing/action.yml`: add `language` input, update prompt with
  bilingual verdict keywords (无遗漏/NO GAPS, etc.)
- `spec-coverage/action.yml`: add `language` input, update prompt with
  bilingual verdict keywords (无需审计/SKIP, etc.)
- `README.md`: add complete Chinese documentation section

Users can configure language via input or from repository variables:
  language: ${{ vars.OPENCODE_LANGUAGE }}

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
@Svtter Svtter force-pushed the bilingual-support branch from 3bb965f to fdda36d Compare May 14, 2026 14:48
@github-actions
Copy link
Copy Markdown

无遗漏

PR 的 4 项需求均已完整实现:

  1. All actions 新增 language 输入 — 4 个 action.yml 均定义了 language 输入(默认 zh),并传递为 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量
  2. Python 脚本追加英文指令run-github-opencode.py:202-211 读取环境变量,当值为 en 时在 PROMPT 末尾追加英文回复指令
  3. 双语判定关键词 — 3 个 wrapper action 的 prompt 均已更新为双语格式(如 可合并 / CAN MERGE无遗漏 / NO GAPS无需审计 / SKIP 等)
  4. README 中文文档 — 新增完整 # 中文文档 章节,包含语言配置说明和用法示例

所有文件变更与 PR 自述范围一致,无遗漏项。

New%20session%20-%202026-05-14T14%3A48%3A51.830Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

经过对全部 6 个变更文件的全面审查,结论如下:

可合并

本 PR 设计清晰,功能完整地实现了所有 action 的中英文双语支持。结构合理:YAML 层新增 language 入参 → Python 层读取环境变量并追加语言指令 → prompt 模板使用双语判定关键词,联动正确。

阻塞项:无

建议项:

  1. review/action.yml:91feature-missing/action.yml:95spec-coverage/action.yml:106 — prompt 模板中硬编码了 Please respond in Chinese.,当 language: en 时,Python 虽追加了英文覆盖指令,但 prompt 内部仍存在冲突的中英文要求。建议将语言指令从模板中移除,完全交由 run-github-opencode.py 统一控制;或在英文模式下动态替换该句。
  2. run-github-opencode.py:206 — 语言覆盖直接修改 os.environ["PROMPT"],与周围使用 set_env() 的风格不一致。虽然功能等价,建议统一调用方式以降低维护成本。
  3. run-github-opencode.py:202-203 — 对 language 的值只校验了 "en",其他值(如 "fr""ja")静默回退到中文。建议在非 zh/en 时输出一条 warning 日志,帮助用户及时发现配置错误。
  4. README.md — 中文文档中的 YAML 示例均使用 uses: Svtter/opencode-actions/review@v2,但该 PR 新增的 language 输入实际指向的是这个 PR 合入后的版本。建议统一使用 @v2 或等到发版时确认路径,确保文档与 tag 版本一致。

New%20session%20-%202026-05-14T14%3A48%3A51.863Z
opencode session  |  github run

Prevents runtime crash when user passes non-object JSON (e.g. 'true',
'42', '[1,2]') as GITHUB_RUN_OPENCODE_PERMISSION. Now prints a clear
error message and exits instead of failing with AttributeError in
_deep_merge.
@github-actions
Copy link
Copy Markdown

发现遗漏

摘要

PR 的 4 项需求基本实现,但存在 1 个严重的设计问题。

CRITICAL

Python 语言覆盖机制在 English 模式下与 prompt 模板内的硬编码中文指令冲突

  • 缺失内容review/action.yml:91feature-missing/action.yml:95spec-coverage/action.yml:106 的 prompt 模板中均硬编码了 Please respond in Chinese.。当 language: en 时,Python 脚本(run-github-opencode.py:206-211)虽在 prompt 末尾追加了英文回复指令,但 prompt 中部仍保留着要求中文回复的句子。虽然"末尾覆盖"在实践中可能有效,但这并非可靠机制——部分模型可能优先遵循 prompt 中部的明确指令,导致英文模式下仍输出中文。

  • 涉及的 spec 要求:PR 第 2 项"当 language: en 时,Python 脚本自动在 prompt 末尾追加英文回复指令"。该实现方式存在冲突,不是可靠的覆盖机制。当模型在 prompt 中部看到 "Please respond in Chinese." 而末尾又看到 "Respond entirely in English" 时,行为取决于模型实现,不可保证一致。

  • 建议修复:应当将 prompt 模板中的 Please respond in Chinese. 替换为动态占位符,由 run-github-opencode.py 统一根据 language 值插入对应的语言指令(中文或英文),而非在已有中文指令后再追加英文覆盖。涉及文件:review/action.yml:91feature-missing/action.yml:95spec-coverage/action.yml:106run-github-opencode.py:201-211

New%20session%20-%202026-05-14T14%3A51%3A50.942Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

本 PR 设计清晰,完整实现了所有 action 的中英文双语支持。YAML 层新增 language 入参 → Python 层读取环境变量追加语言指令 → prompt 模板使用双语判定关键词,联动正确,功能可用。

阻塞项:无

建议项:

  1. 三个 wrapper action prompt 中的 "Please respond in Chinese." 与 language: en 冲突review/action.yml:91feature-missing/action.yml:95spec-coverage/action.yml:106 均硬编码了中文回复指令。虽然 Python 脚本会追加英文覆盖指令(run-github-opencode.py:206-211),但 prompt 内仍存在相互矛盾的语言要求。建议将语言指令从模板中移除,统一由 Python 脚本控制
  2. run-github-opencode.py:206 直接修改 os.environ["PROMPT"] — 风格不统一。该文件其余地方均使用 set_env() 工具函数(第 20-22 行),建议保持一致
  3. 语言值未做输入校验run-github-opencode.py:202-203 只检查了 "en",其他非法值(如 "eng""cn")静默回退中文。建议对非 zh/en 的值打印一条 warning 日志,帮助用户发现配置错误
  4. feature-missing/action.yml:265 存在多余的转义符 \>\/dev/null 与其余 action 的 >/dev/null 写法不一致,虽不影响功能,建议统一

New%20session%20-%202026-05-14T14%3A51%3A51.222Z
opencode session  |  github run

Move language-specific response instructions to Python layer where they
are dynamically appended based on the language input parameter. This
eliminates the conflict when language: en is set but prompt templates
contained hardcoded 'Please respond in Chinese.'

- Remove 'Please respond in Chinese.' from review, feature-missing, and
  spec-coverage action.yml prompt templates
- Add explicit zh language instruction in Python (append Chinese
  response directive when language != 'en')
@github-actions
Copy link
Copy Markdown

无遗漏

PR 的 4 项需求均已完整实现:

  1. All actions 新增 language 输入github-run-opencode/action.ymlreview/action.ymlfeature-missing/action.ymlspec-coverage/action.yml 均定义了 language 输入(默认 zh),并正确传递为 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量。

  2. Python 脚本追加英文指令run-github-opencode.py:201-217 读取 GITHUB_RUN_OPENCODE_LANGUAGE,当值为 en 时在 PROMPT 末尾追加英文回复指令,其他值(含 zh)追加中文回复指令。

  3. 双语判定关键词 — 3 个 wrapper action 的 prompt 均已更新为双语格式:

    • review/action.yml:93-110可合并 / CAN MERGE有条件合并 / CONDITIONAL MERGE不可合并 / CANNOT MERGE阻塞项 / Blocking Issues建议项 / Suggestions
    • feature-missing/action.yml:99-101无遗漏 / NO GAPS发现遗漏 / GAPS FOUND
    • spec-coverage/action.yml:110-112无需审计 / SKIP全覆盖 / FULL COVERAGE发现遗漏 / GAPS FOUND
  4. README 中文文档README.md:272-452 新增完整 # 中文文档 章节,包含语言配置说明、用法示例、各 action 描述等,与英文文档并列。

New%20session%20-%202026-05-14T16%3A07%3A49.714Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

有条件合并

总结

PR 实现了所有 action 的 language 输入参数和 Python 层的语言指令追加,双语判定关键词更新正确,README 中文文档完整。但 prompt 模板中的硬编码中文指令与英文覆盖指令存在冲突,是核心设计缺陷。

阻塞项

prompt 模板硬编码语言指令与 language: en 冲突

三个 wrapper action 的 prompt 模板中均硬编码了 Please respond in Chinese.review/action.yml:91feature-missing/action.yml:95spec-coverage/action.yml:106)。当 language: en 时,Python 虽在末尾追加英文回复指令(run-github-opencode.py:206-211),但 prompt 中段仍保留着要求中文回复的句子。不同模型对矛盾指令的处理行为不一致,英文模式下可能仍输出中文。

应移除模板中的语言指令,统一由 run-github-opencode.py 根据 language 值动态插入。

建议项

  1. run-github-opencode.py:206 直接修改 os.environ["PROMPT"],与文件其余地方使用 set_env() 的风格不一致,建议统一调用方式。

  2. run-github-opencode.py:202language 只校验了 "en",其他非法值(如 "eng""ja")静默回退到中文,建议对无效值输出 warning 日志帮助用户发现配置错误。

  3. feature-missing/action.yml:265 存在多余的转义符 \>\/dev/null),其余 action 均为 >/dev/null,建议统一写法。

New%20session%20-%202026-05-14T16%3A07%3A46.898Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

PR 实现清晰:YAML 层定义 language 输入 → Python 层读取环境变量追加语言指令 → prompt 模板使用双语判定关键词,联动正确。各文件变更与 PR 描述一致。

阻塞项:无

建议项:

  1. 语言输入校验run-github-opencode.py:202 只检查 "en",其他值(如 "eng""ja")静默回退中文,建议对无效值输出 warning 日志
  2. set_env 风格不一致run-github-opencode.py:206 使用 set_env("PROMPT", ...),而 MODEL 赋值(191-196 行)直接用 os.environ["MODEL"] = ...,同一逻辑层建议统一调用风格
  3. README 中的 uses 路径 — 中文文档中的 YAML 示例使用 Svtter/opencode-actions/review@v2,确认该路径正确反映合入后的版本后再合并即可

New%20session%20-%202026-05-14T16%3A12%3A38.444Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

无遗漏

PR 的 4 项需求均已完整实现:

  1. language 输入参数 — 4 个相关 action(github-run-opencodereviewfeature-missingspec-coverage)均在 action.yml 中新增了 language 输入(默认 zh),并通过 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量传递给 Python 脚本

  2. Python 脚本语言指令追加run-github-opencode.py:201-217 读取环境变量,en 时追加英文回复指令,否则追加中文回复指令,且所有 4 个 action 均调用同一 Python 脚本,集成完整

  3. 双语判定关键词 — 3 个 wrapper action 的 prompt 模板均已更新:

    • review: 可合并 / CAN MERGE有条件合并 / CONDITIONAL MERGE不可合并 / CANNOT MERGE阻塞项 / Blocking Issues建议项 / Suggestions
    • feature-missing: 无遗漏 / NO GAPS发现遗漏 / GAPS FOUND
    • spec-coverage: 无需审计 / SKIP全覆盖 / FULL COVERAGE发现遗漏 / GAPS FOUND

    同时 prompt 中的硬编码 Please respond in Chinese. 已被移除,避免了语言指令冲突问题

  4. README 中文文档 — 新增完整章节(行 272-452),包含 action 介绍、语言配置说明和用法示例

setup-opencoderun-opencode 为底层工具 action,不涉及 prompt/language 概念,无需添加 language 输入,与 PR 设计范围一致。

New%20session%20-%202026-05-14T16%3A12%3A44.495Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

本 PR 的 5 次提交已完整实现了双语支持:YAML 层定义 language 输入 → Python 层根据 GITHUB_RUN_OPENCODE_LANGUAGE 追加语言指令 → prompt 模板采用双语判定关键词。早期 review 中提出的所有问题(硬编码中文指令、set_env 风格、非法语言值警告、>/dev/null 多余转义)均已被后续 fix commit 修复。

阻塞项:无

建议项:

  1. MODEL 赋值风格不统一run-github-opencode.py:191-196 使用 os.environ["MODEL"] = ...,而同一函数内其他环境变量(包括 PR 新增的语言覆盖代码)均使用 set_env()。建议统一为 set_env 以降低维护认知负担。
  2. README 中的 uses 路径 — 英文和中文文档中 YAML 示例均使用 Svtter/opencode-actions/review@v2,而 npx skills add 命令行使用 sun-praise/opencode-actions,建议合并前确认目标仓库的 owner 并统一文档中的引用。

New%20session%20-%202026-05-14T16%3A18%3A30.156Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

无遗漏

PR 的 4 项需求均已完整实现:

  1. language 输入参数 — 4 个涉及 agent/prompt 的 action(github-run-opencodereviewfeature-missingspec-coverage)均已新增 language 输入(默认 zh),并通过 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量传递给 Python 脚本。setup-opencoderun-opencode 为底层工具 action,不涉及 prompt/agent 输出,按设计无需添加。

  2. Python 脚本语言指令追加run-github-opencode.py:201-230 读取环境变量,对 en 追加英文回复指令、对 zh 追加中文回复指令、对非法值输出 warning 并回退中文、对空 PROMPT 跳过追加,覆盖完整。

  3. 双语判定关键词 — 3 个 wrapper action prompt 均已更新:

    • review: 可合并 / CAN MERGE有条件合并 / CONDITIONAL MERGE不可合并 / CANNOT MERGE阻塞项 / Blocking Issues建议项 / Suggestions
    • feature-missing: 无遗漏 / NO GAPS发现遗漏 / GAPS FOUND
    • spec-coverage: 无需审计 / SKIP全覆盖 / FULL COVERAGE发现遗漏 / GAPS FOUND

    且此前 review 指出的 Please respond in Chinese. 硬编码冲突已在最新版本中移除。

  4. README 中文文档README.md:272-452 新增完整中文文档章节,包含快速开始、action 介绍、语言配置说明和用法示例。

New%20session%20-%202026-05-14T16%3A18%3A31.259Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

无遗漏

PR 陈述的 4 项需求均已完整实现:

  1. language 输入参数 — 4 个涉及 agent/prompt 的 action(github-run-opencodereviewfeature-missingspec-coverage)均在 action.yml 中新增了 language 输入(默认 zh),并通过 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量传递给 Python 脚本。setup-opencoderun-opencode 为底层工具 action,不涉及 prompt/agent 输出,按设计无需添加。

  2. Python 脚本语言指令追加run-github-opencode.py:201-225 正确读取 GITHUB_RUN_OPENCODE_LANGUAGE,对 en 追加英文回复指令、对 zh 追加中文指令、对非法值输出 warning 并回退中文、对空 PROMPT 跳过追加,各分支均完整处理。

  3. 双语判定关键词 — 3 个 wrapper action 的 prompt 模板均已更新为双语格式(review: 可合并 / CAN MERGE 等;feature-missing: 无遗漏 / NO GAPS / 发现遗漏 / GAPS FOUNDspec-coverage: 无需审计 / SKIP / 全覆盖 / FULL COVERAGE / 发现遗漏 / GAPS FOUND)。且此前 review 指出的硬编码中文指令已移除,不存在语言指令冲突。

  4. README 中文文档README.md:272-452 新增完整中文章节,包含快速开始、action 介绍、语言配置说明、用法示例,与英文文档并列。

New%20session%20-%202026-05-14T16%3A21%3A43.899Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

PR 实现了所有 action 的中英文双语支持。此前 review 中提出的阻塞性问题(prompt 模板中的硬编码中文指令、非法语言值缺少 warning、>/dev/null 多余转义)均已被后续 fix commit 修复。当前代码功能完整,联动正确。

阻塞项:无

建议项:

  1. run-github-opencode.py:191-196 MODEL 赋值使用 os.environ["MODEL"] = ... 而非 set_env() — 虽为 PR 引入前的既有代码,但与本 PR 新增的语言覆盖代码风格不统一,可一并清理。
  2. feature-missing/action.yml 缺少 extra-env 输入review/action.ymlspec-coverage/action.yml 均已包含该输入,feature-missing 却未添加,长期来看可能导致功能不一致。

New%20session%20-%202026-05-14T16%3A21%3A51.483Z
opencode session  |  github run

…ature-missing

- Replace os.environ["MODEL"] = ... with set_env() for consistency
- Add extra-env input to feature-missing/action.yml, matching review and spec-coverage
@github-actions
Copy link
Copy Markdown

可合并

PR 功能完整、设计清晰:YAML 层定义 language 输入 → Python 层读取环境变量追加语言指令 → prompt 模板使用双语判定关键词,联动正确。此前 review 提出的所有问题(硬编码中文指令、非法语言值缺少 warning、>\/dev/null 多余转义)均已在当前版本中修复。

阻塞项:无

建议项:

  1. run-github-opencode.py:191-196, 315 — MODEL 赋值使用 set_env()(192-196 行)和直接 os.environ["MODEL"] = ...(315 行)两种方式混用,与本 PR 新增的语言代码风格不一致,建议统一为 set_env
  2. README.md — 英文和中文文档中的 YAML 示例使用 Svtter/opencode-actions/review@v2,而 npx skills add 命令使用 sun-praise/opencode-actions,合并前请确认目标仓库 owner 并统一文档中的引用路径

New%20session%20-%202026-05-14T16%3A25%3A44.962Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

无遗漏

PR 陈述的 4 项需求均已完整实现:

  1. language 输入参数 — 4 个涉及 agent/prompt 的 action(github-run-opencodereviewfeature-missingspec-coverage)均在 action.yml 中新增了 language 输入(默认 zh),并通过 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量传递给 Python 脚本。setup-opencoderun-opencode 为底层工具 action,不涉及 agent 输出,按 PR 的设计范围无需添加。

  2. Python 脚本语言指令追加run-github-opencode.py:201-225 正确读取 GITHUB_RUN_OPENCODE_LANGUAGEen 追加英文回复指令、zh 追加中文回复指令、非法值输出 warning 并回退中文、空 PROMPT 跳过追加,各分支完整。

  3. 双语判定关键词 — 3 个 wrapper action 的 prompt 模板均已更新为双语格式:

    • review: 可合并 / CAN MERGE有条件合并 / CONDITIONAL MERGE不可合并 / CANNOT MERGE阻塞项 / Blocking Issues建议项 / Suggestions
    • feature-missing: 无遗漏 / NO GAPS发现遗漏 / GAPS FOUND
    • spec-coverage: 无需审计 / SKIP全覆盖 / FULL COVERAGE发现遗漏 / GAPS FOUND

    且此前 review 指出的 prompt 模板中硬编码的中文指令(Please respond in Chinese.)已在最新版本中移除,不存在语言指令冲突。

  4. README 中文文档README.md 尾部新增完整的 # 中文文档 章节,包含快速开始、action 介绍、语言配置说明和用法示例,与英文文档并列。

New%20session%20-%202026-05-14T16%3A25%3A51.129Z
opencode session  |  github run

…g for extra-env

- Define SUPPORTED_LANGUAGES set for easier language support extension
- Add warning when extra-env key starts with GITHUB_RUN_OPENCODE_ prefix
- Addresses review suggestions from AI code review
@github-actions
Copy link
Copy Markdown

PR 无关联 issue,从 PR 标题和正文提取需求共 4 项,逐项对照实现如下:

需求 1:All actions 新增 language 输入参数

  • 涉及 agent/prompt 的 4 个 actions 均已新增:github-run-opencode/action.yml:113review/action.yml:143feature-missing/action.yml:159spec-coverage/action.yml:171,均默认 zh,并通过 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量传递给 Python。
  • setup-opencoderun-opencode 为底层工具 action,不涉及 prompt/agent,按设计无需添加。

需求 2:language: en 时 Python 脚本追加英文指令

  • run-github-opencode.py:201-225 完整实现:读取环境变量,en 时追加英文回复指令,zh 时追加中文指令,非法值输出 warning 并回退中文,空 PROMPT 跳过追加。

需求 3:prompt 判定关键词更新为双语格式

  • 3 个 wrapper action 均已更新:
    • review/action.yml:93-110可合并 / CAN MERGE有条件合并 / CONDITIONAL MERGE不可合并 / CANNOT MERGE阻塞项 / Blocking Issues建议项 / Suggestions
    • feature-missing/action.yml:99-101无遗漏 / NO GAPS发现遗漏 / GAPS FOUND
    • spec-coverage/action.yml:110-112无需审计 / SKIP全覆盖 / FULL COVERAGE发现遗漏 / GAPS FOUND
  • 此前硬编码的 Please respond in Chinese. 已从所有 prompt 模板中移除。

需求 4:README 新增中文文档

  • README.md:272-452 新增完整中文章节,包含快速开始、action 介绍、语言配置说明和用法示例。

无遗漏

New%20session%20-%202026-05-14T16%3A29%3A52.357Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

本 PR 设计清晰:4 个 action 的 YAML 层定义 language 输入 → Python 层读取 GITHUB_RUN_OPENCODE_LANGUAGE 并追加语言指令 → 3 个 wrapper action 的 prompt 模板均已采用双语判定关键词。此前 review 中提到的所有问题(硬编码中文指令、非法language 值缺少 warning、>/dev/null 多余转义)已在当前版本中全部修复,代码功能完整且联动正确。

阻塞项:无

建议项:

  1. run-github-opencode.py:318os.environ["MODEL"] = eligible_models[0] 使用直接赋值,而本 PR 新增的语言覆盖代码(以及文件其余部分)均使用 set_env() 工具函数,建议统一调用风格。
  2. feature-missing/action.yml — 缺少 extra-env 输入定义(虽然运行时 env 中有传递)。reviewspec-coverage 均已包含该输入,feature-missing 未添加,长期可能造成功能不一致。

New%20session%20-%202026-05-14T16%3A29%3A57.093Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

PR 无关联 issue,从 PR 正文提取需求共 4 项,逐项对照:

无遗漏

需求 1:All actions 新增 language 输入参数(默认 zh
涉及 agent/prompt 的 4 个 action 均已完成:

  • github-run-opencode/action.yml:116-121 — 输入定义,默认 zh,通过 GITHUB_RUN_OPENCODE_LANGUAGE 传递(行 224)
  • review/action.yml:148-152 — 同上,传递至行 257
  • feature-missing/action.yml:164-168 — 同上,传递至行 272
  • spec-coverage/action.yml:176-180 — 同上,传递至行 285

setup-opencoderun-opencode 为底层工具 action,不涉及 prompt/agent 输出,按 PR 改动文件列表无需添加。

需求 2:language: en 时 Python 脚本追加英文回复指令
run-github-opencode.py:204-231 完整覆盖:读取环境变量,en 追加英文指令,zh 追加中文指令,非法值输出 warning 并回退中文,空 PROMPT 跳过追加,各分支均处理。

需求 3:prompt 判定关键词更新为双语格式
3 个 wrapper action 均已更新:

  • review/action.yml:92-110可合并 / CAN MERGE有条件合并 / CONDITIONAL MERGE不可合并 / CANNOT MERGE阻塞项 / Blocking Issues建议项 / Suggestions
  • feature-missing/action.yml:97-101无遗漏 / NO GAPS发现遗漏 / GAPS FOUND
  • spec-coverage/action.yml:108-112无需审计 / SKIP全覆盖 / FULL COVERAGE发现遗漏 / GAPS FOUND

prompt 模板中无硬编码语言指令,由 Python 层统一控制。

需求 4:README 中文文档
README.md:272-452 新增完整中文章节,包含快速开始、action 介绍、语言配置说明、用法示例,与英文文档并列。

New%20session%20-%202026-05-14T16%3A37%3A50.187Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

无遗漏

PR 陈述的 4 项需求均已完整实现:

  1. language 输入参数 — 4 个涉及 agent/prompt 的 action(github-run-opencodereviewfeature-missingspec-coverage)均在 action.yml 中新增了 language 输入(默认 zh),并通过 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量传递给 Python 脚本。setup-opencoderun-opencode 为底层工具 action,不涉及 agent 输出,按设计无需添加。

  2. Python 脚本语言指令追加run-github-opencode.py:204-231 读取 GITHUB_RUN_OPENCODE_LANGUAGE,对 en 追加英文回复指令,对 zhSUPPORTED_LANGUAGES 内语言追加中文指令,非法值输出 warning 并回退中文,空 PROMPT 跳过追加,各分支均完整处理。

  3. 双语判定关键词 — 3 个 wrapper action 的 prompt 模板均已更新为双语格式:

    • review: 可合并 / CAN MERGE有条件合并 / CONDITIONAL MERGE不可合并 / CANNOT MERGE阻塞项 / Blocking Issues建议项 / Suggestions
    • feature-missing: 无遗漏 / NO GAPS发现遗漏 / GAPS FOUND
    • spec-coverage: 无需审计 / SKIP全覆盖 / FULL COVERAGE发现遗漏 / GAPS FOUND

    此前 review 指出的硬编码 Please respond in Chinese. 已在当前版本中移除,不存在语言指令冲突。

  4. README 中文文档README.md:272-452 新增完整中文章节,包含快速开始、action 介绍、语言配置说明、用法示例、发布清单等,与英文文档并列。

New%20session%20-%202026-05-14T16%3A38%3A06.085Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

本 PR 功能完整、设计清晰,所有 action 的 language 输入已正确串联(YAML 输入 → 环境变量 → Python 层语言指令追加),prompt 模板中硬编码中文指令已移除,双语判定关键词和 README 中文文档均完整。此前多轮 review 中提出的阻塞问题(prompt 模板的中文指令冲突、非法 language 值缺少 warning、>\/dev/null 多余转义)已在当前 HEAD 中全部修复。

阻塞项:无

建议项:

  1. run-github-opencode.py:325os.environ["MODEL"] = eligible_models[0] 使用直接赋值而非 set_env(),虽为 PR 引入前的既有代码,但与语言覆盖逻辑的风格不一致,建议统一。
  2. README 仓库 owner 路径 — YAML 示例使用 Svtter/opencode-actions,而 npx skills add 命令行使用 sun-praise/opencode-actions,合并前请确认目标仓库 owner 并统一文档中的引用路径。

New%20session%20-%202026-05-14T16%3A37%3A58.667Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

PR 功能完整、设计清晰,此前 review 提出的所有问题(硬编码中文指令、非法语言值缺少 warning、>/dev/null 多余转义、extra-env 缺失)均已在当前版本中修复。

阻塞项:无

建议项:

  1. run-github-opencode.py:209-212zh_instruction 变量在 language == "en" 时也会被构造但未被使用。建议将 zh_instruction 移到对应的 elif/else 分支内延迟构造,与英文指令的惰性创建方式保持一致。
  2. run-github-opencode.py:324os.environ["MODEL"] = eligible_models[0] 使用直接赋值,而同一函数内其他环境变量(含本 PR 新增的语言覆盖代码)均使用 set_env(),风格不统一。PR 虽未引入该行,可一并清理。

New%20session%20-%202026-05-14T16%3A38%3A09.295Z
opencode session  |  github run

…ndling

- Split 'zh' into explicit branch so future languages hit debug warning
- Add comment explaining intentional os.environ use in extra-env
- Add maintenance comment to SENSITIVE_ENV_KEYS
@github-actions
Copy link
Copy Markdown

无遗漏

PR 声明的 4 项需求均已完整实现:

  1. language 输入参数 — 涉及 agent/prompt 的 4 个 action(github-run-opencodereviewfeature-missingspec-coverage)均已新增 language 输入(默认 zh),并通过 GITHUB_RUN_OPENCODE_LANGUAGE 环境变量传递给 Python 脚本。setup-opencoderun-opencode 为底层工具 action,不涉及 agent 输出,按 PR 设计范围无需添加。

  2. Python 脚本语言指令追加run-github-opencode.py:206-233 正确读取 GITHUB_RUN_OPENCODE_LANGUAGEen 追加英文回复指令、zh 追加中文指令、非法值输出 warning 并回退中文、空 PROMPT 跳过追加,各分支均完整处理。此前多轮审查指出的 prompt 模板中硬编码中文指令冲突问题已在当前版本中修复。

  3. 双语判定关键词 — 3 个 wrapper action 的 prompt 模板均已更新为双语格式:

    • review: 可合并 / CAN MERGE有条件合并 / CONDITIONAL MERGE不可合并 / CANNOT MERGE阻塞项 / Blocking Issues建议项 / Suggestions
    • feature-missing: 无遗漏 / NO GAPS发现遗漏 / GAPS FOUND
    • spec-coverage: 无需审计 / SKIP全覆盖 / FULL COVERAGE发现遗漏 / GAPS FOUND
  4. README 中文文档README.md:272-452 新增完整中文章节,包含快速开始、action 介绍、语言配置说明、用法示例、发布清单等,与英文文档并列。

New%20session%20-%202026-05-14T16%3A41%3A44.745Z
opencode session  |  github run

@github-actions
Copy link
Copy Markdown

可合并

本 PR 设计清晰,中英文双语支持功能完整实现:4 个 action 的 YAML 层新增 language 输入 → Python 层根据 GITHUB_RUN_OPENCODE_LANGUAGE 动态追加语言指令 → 3 个 wrapper action 的 prompt 模板使用双语判定关键词。此前多轮 review 提出的所有问题(硬编码中文指令冲突、非法语言值缺少 warning、set_env 风格不统一、extra-env 缺失、>/dev/null 多余转义)均已在后续 fix commits 中修复。

阻塞项:无

建议项:

  1. run-github-opencode.py:211-214zh_instruction 在函数作用域顶部无条件构造,但 language == "en" 分支中并不使用。建议将 zh_instruction 移到 elif language == "zh" 分支内惰性构造,与英文指令的内联方式保持一致。
  2. run-github-opencode.py:225-227elif language in SUPPORTED_LANGUAGES 分支在当前 SUPPORTED_LANGUAGES = {"zh", "en"} 下不可达(zhen 已在前面分支处理)。虽为未来扩展预留的防御代码,但建议加一行注释说明意图,避免后续维护者困惑。
  3. run-github-opencode.py:329os.environ["MODEL"] = eligible_models[0] 使用直接赋值而非 set_env(),与本 PR 统一使用的 set_env 风格不一致。PR 虽未引入该行(既有代码),但一并清理可使风格更一致。
  4. README.md — 英文文档中 npx skills add sun-praise/opencode-actions(行 30)与 YAML 示例中的 Svtter/opencode-actions(行 15)仓库 owner 不一致。中文文档也有相同问题(行 301 vs 行 286)。合并前建议确认目标仓库 owner 并统一。

New%20session%20-%202026-05-14T16%3A41%3A48.338Z
opencode session  |  github run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant