# PR #2373 完整报告

- 仓库：`radixark/miles`
- 标题：docs: NeMo-Gym server no longer needs a fork branch
- 合并时间：2026-08-11 12:58
- 原文链接：http://prhub.com.cn/radixark/miles/pull/2373

---

# 执行摘要

- 一句话：NeMo-Gym 文档去除 fork 分支指引，改用上游 main
- 推荐动作：可快速浏览确认文档一致性，值得精读的价值有限。设计上值得留意的是：在集成外部依赖的未合入特性时，作者在文档中留下 fork 分支指引并同步标注 "until it merges"，在特性合入后同一 PR 内同步清理三处引用，这种 " 临时指引 + 上游合入即回收 " 的做法对维护上游敏感集成很有参考价值。

# 功能与动机

NeMo-Gym connector 依赖上游 `responses-api agents` 的 per-request `policy_base_url` override 能力。该能力最初以 PR#2166 提案形式存在，集成落地时尚未合入，因此文档指示读者克隆 fork 分支；如今该功能已合入上游 `main`（>= `fcca3a8`），继续引导用户使用 fork 分支会造成误导和额外维护成本。PR body 明确说明："It is upstream now, so all three say `main` (>= `fcca3a8`) and the clone command points at `NVIDIA-NeMo/Gym`."

# 实现拆解

1. **适配器 docstring 更新 **（`examples/experimental/nemo-gym/nemogym_agent_function.py`）：将模块顶部 docstring 中指向 `NVIDIA-NeMo/Gym#2166` 与 fork 分支的说明，改为简洁的 `upstream main >= fcca3a8`。
2. **示例 README 更新 **（`examples/experimental/nemo-gym/README.md`）：移除关于 #2166 尚未合入的整段说明，将 clone 命令从 `-b mini-swe-agent-per-request-policy-url https://github.com/nblintao/Gym.git` 改为直接 clone `https://github.com/NVIDIA-NeMo/Gym.git`。
3. **用户指南更新 **（`docs/user-guide/nemo-gym.md`）：删除“proposed upstream in #2166, until it merges”的段落，将环境侧步骤改为“clone NeMo-Gym `main` (>= `fcca3a8`)”。
4. **eval 工具 docstring 更新 **（`examples/experimental/nemo-gym/eval_nemogym_via_api.py`）：将 API-policy scan 说明中的 `NVIDIA-NeMo/Gym#2166 field` 改为 `the exact field`，避免继续引用已过时的 PR 编号。
5. **无测试配套**：本次为纯文档 / 注释修订，不涉及行为逻辑，无需新增测试；仓库历史中该类变更通常也不影响 CI。

关键文件：
- `examples/experimental/nemo-gym/nemogym_agent_function.py`（模块 示例代码；类别 source；类型 core-logic）: 适配器模块 docstring 是用户接触该集成的第一入口，修改了 fork 分支指引并明确上游版本下限 `fcca3a8`。
- `examples/experimental/nemo-gym/README.md`（模块 示例代码；类别 docs；类型 documentation）: 集中承载了 NeMo-Gym 的安装与启动指引，是本 PR 修改量最大的文件，将 clone 命令从 fork 分支切换到上游主仓库。
- `docs/user-guide/nemo-gym.md`（模块 用户指南；类别 docs；类型 documentation）: 用户指南是面向普通用户的主文档，删除对 PR#2166 的引用并同步环境侧步骤。
- `examples/experimental/nemo-gym/eval_nemogym_via_api.py`（模块 示例代码；类别 source；类型 entrypoint）: eval 工具的 docstring 引用过期的 PR 编号，需同步清理，保证文档术语一致性。

关键符号：未识别

## 关键源码片段

### `examples/experimental/nemo-gym/nemogym_agent_function.py`

适配器模块 docstring 是用户接触该集成的第一入口，修改了 fork 分支指引并明确上游版本下限 `fcca3a8`。

```python
"""NeMo-Gym <-> miles adapter (agent function).

Targets upstream NVIDIA-NeMo/Gym's sandbox-backed ``mini_swe_agent_2`` agent,
which requires the per-request policy endpoint override (upstream ``main``,
>= ``fcca3a8``).
"""

# 其余 body 不变：miles 通过 --custom-agent-function-path 调用 run，
# 每次请求把 session 的 OpenAI 兼容 URL 作为 policy_base_url 传给 NeMo-Gym /run 端点，
# 使所有模型调用都走 miles session server，实现 token ids + logprobs + loss masks 无损记录。
import asyncio
import logging
import os
import random

```

# 评论区精华

本 PR 仅有审核人 Shi-Dong 的 APPROVED 评论 "LGTM!"，无其他讨论线程。变更内容为纯文档整理，未产生实质争议。

- 暂无高价值评论线程

# 风险与影响

- 风险：
 1. **上游版本兼容性**：文档宣称 `main >= fcca3a8` 包含该 override 能力，若用户在更早的提交上使用会失败；但这是文档指引问题，且 commit SHA 已明确标注，风险较低。
 2. **链接失效风险**：删除对 `NVIDIA-NeMo/Gym#2166` 的引用后，读者无法追溯该字段的原始设计讨论，对深度排查上游行为的用户略有不便。
 3. **无代码风险**：4 个文件均为 docstring/README/ 指南注释修改，不影响 `run` 或 `build_responses_create_params` 等函数执行路径，不会引入回归或安全问题。
 - 影响：对用户：使用 NeMo-Gym 示例的开发者不再需要绕道 fork 分支，安装步骤简化，文档与上游现状对齐。对系统：无运行时行为影响。对团队：作为 `examples/experimental` 与 `docs/user-guide` 的维护，降低了 fork 分支消亡后文档误导的风险；同时体现 miles 与上游 NeMo-Gym 集成进入稳定期。影响范围仅限文档阅读路径，程度较低。
 - 风险标记：上游版本依赖 , 文档链接失效

# 关联脉络

- PR #2220 Add the GLM-5.2 744B x terminal-bench-2 Daytona example: 同为 examples/experimental 下的环境集成示例（openenv/agents 方向），共同体现外部环境服务器与 miles 训练链路集成的演进脉络。
- PR #2274 refactor(openenv): move duplicated sandbox helpers into the TB2 recipe: 同一目录下对 example 工程化做的整理，与本 PR 一起反映 examples/experimental 的持续维护节奏。