Pull Request已成功合入, 合并人@ascend-robot
(感谢 yi_jiabin 的贡献)变更摘要
此 PR 对 torch-npu-doc-writer、torch-npu-remote-runner 和 torch-npu-server-runner 三个技能进行了大规模重构与优化,核心目标是建立一套确定性、可审计的 Ascend torch-npu API 多版本文档生成流水线。主要引入统一的 config/versions.json 版本配置、doc_pipeline.py 两阶段(prepare/render)流水线、以及 commit_evidence.py、log_evidence.py、pytorch_evidence.py 三个并行证据收集脚本,替代此前的模型侧推理搜索方式。同时通过 utf8_runtime.py 实现全链路严格 UTF-8 编码约束,修复 Windows 中文路径被误判为文件哈希无效等问题。runner 侧则强化了 conda 自动发现、Docker 容器支持、版本级并发控制以及 Unicode 路径的 SSH/PAX/SCP 传输兼容性。
主要改动
-
引入版本配置与两阶段文档流水线:新增
config/versions.json统一维护启用版本、维护版本、各版本 PyTorch Git 引用及资料目录映射;新增doc_pipeline.py实现prepare阶段并行生成三类证据、render阶段统一生成 Issue 与逐版本 PR 并执行确定性审计,Issue 第一至第五章按证据签名自动归组,第六章保持逐版本结构。 -
脚本化证据收集替代模型推理:新增
commit_evidence.py通过 Git 拓扑分析(canonical_version_ref_evidence、branch_base_resolution等)自动识别 commit 版本归属;新增log_evidence.py从 manifest 选定的本轮日志完整提取第六章证据并进行哈希审计;新增pytorch_evidence.py通过 AST 解析 (resolve_definition、definition_status) 收集 API 定义、社区测试和设备约束证据。 -
预检脚本增强自动发现与版本分类:
evidence_preflight.py新增load_version_config校验版本配置、canonical_version_ref_evidence/upstream_version_evidence/branch_base_resolution多层 commit 归属判定逻辑,无法唯一确认时一次性返回commit_required状态并要求补充对应版本 commit,同时自动过滤维护版本与未激活版本。 -
渲染器支持多版本隔离与完整日志审计:
render_docs.py重写为按版本生成独立 PR(通过build_issue_chapters/finalize_issue_chapters归组与展开),新增validate_manifest_versions核验 manifest、PyTorch 证据、log 证据的 SHA-256 签名一致性,新增audit_documents逐版本检查日志完整行数、PR 版本隔离和测试表行数匹配。 -
全链路 UTF-8 编码统一:新增
utf8_runtime.py提供configure_utf8_stdio()和utf8_subprocess_env(),强制 CLI 标准输出/错误、Python 子进程和 Git 子进程均使用严格 UTF-8 编码,禁止替换或忽略模式,确保中文路径、空格及特殊字符在本地文件、SSH 参数、PAX 归档和 Markdown 输出中不产生乱码或误判。


代码审查
审查总结
本次审查覆盖了全部 17 个变更文件(含 2 个已删除文件),共发现 4 个 P3 级问题,无 P0-P2 级问题。总体风险判定:低。
各文件审查结论:
| 文件 | 结论 |
|---|---|
README.md |
2 个 P3:schema_version 示例与实际配置不一致;log_evidence.py 功能描述与实际实现不符 |
SKILL.md |
无问题 |
agents/openai.yaml |
无问题 |
assets/templates/pr-template.md |
无问题 |
config/versions.json |
无问题 |
references/core-rules.md |
无问题 |
references/path-mode.md |
无问题 |
references/special-mode.md |
无问题 |
references/document-rules.md |
(已删除) |
references/evidence-rules.md |
(已删除) |
scripts/commit_evidence.py |
无问题 |
scripts/doc_pipeline.py |
无问题 |
scripts/evidence_preflight.py |
无问题 |
scripts/log_evidence.py |
1 个 P3:focused_lines 函数为死代码且与完整保留规则冲突 |
scripts/pytorch_evidence.py |
无问题 |
scripts/render_docs.py |
1 个 P3:重复的无操作 render_issue 调用 |
scripts/utf8_runtime.py |
无问题 |
torch-npu-remote-runner/SKILL.md |
无问题 |
torch-npu-server-runner/SKILL.md |
无问题 |
4 个发现问题概况:
- P3 × 4:均为文档描述不一致(README 中 schema_version 和 log_evidence 功能描述过时)或死代码(
focused_lines函数和重复的render_issue调用)。这些问题不影响运行时正确性,但可能误导用户或增加维护负担。
| 类型 | 数量 |
|---|---|
| 🔴 阻塞 | 0 |
| 🟡 建议 | 1 |
💬 仅评论


Thanks for your pull-request.
The full list of commands accepted by me can be found at here。
You can get sig-info at here
PR Approval Progress
✅ Congratulations! All modules have met the lgtm and approve requirements.
Module Approval Details
| module | lgtm status | approve status |
|---|---|---|
| repo-Ascend/agent-skills | ✅ 许涛, 曾浩龙, 占杰 (3/2) | ✅ 许涛, 曾浩龙 (2/1) |
💡 Tip:
- Committer can comment
/approveor/lgtm- Commenting
/approveimplies both code review (lgtm) and intent to merge (approve)
CLA Signature Pass
yi_jiabin, thanks for your pull request. All authors of the commits have signed the CLA. 👍


🟡 Medium Priority
changed line → doc_pipeline.py:320 的正则 (?m)^FAILED$ 要求行刚好是 FAILED 且立即结束。
affected behavior → 该表达式用于从本章日志(chapter_6)推断测试结果状态,写入 analysis_context 的 log_summary.status 字段,供模型参考。
failure mode → Python 标准 unittest 的输出格式为 FAILED (failures=N) 或 FAILED (errors=N),行尾有空格和括号内容。^FAILED$ 不能匹配,导致 status 回退到 "unknown"。同文件中 log_evidence.py 的 SUMMARY_RE 使用了 ^\s*(?:OK|FAILED|PASSED)\b(词边界),可正确匹配,但此处未保持一致。 模型读取 analysis_context 时可能误判失败用例为"未知状态",降低分析准确性。
suggested fix → 将 (?m)^FAILED$ 改为 (?m)^FAILED\b(词边界),与 log_evidence.py 的对等正则对齐。
建议:将正则 (?m)^FAILED$ 改为 (?m)^FAILED\b,使其能匹配 FAILED (failures=N) 格式,与 log_evidence.py 的 SUMMARY_RE 保持一致。
| 320
| - status = "OK" if re.search(r"(?m)^OK$", chapter) else "FAILED" if re.search(r"(?m)^FAILED", chapter) else "unknown" |
|
320 | + status = "OK" if re.search(r"(?m)^OK$", chapter) else "FAILED" if re.search(r"(?m)^FAILED\b", chapter) else "unknown" |


changed this line on 45ba313b view diff detail
/lgtm


/approve


/approve


The MR is merging by another one
If you want to solve this problem, you can click here to do it in the FAQs.


Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


Pull Request 已合并或已关闭。
If you want to solve this problem, you can click here to do it in the FAQs.


变更说明
持续优化
torch-npu-doc-writer、torch-npu-remote-runner和torch-npu-server-runner三个技能,完善 Ascend torch-npu API 多版本测试适配中的证据分析、文档生成、远程测试编排、服务器执行、日志归档和结果报告流程。三个技能保持职责分离并可串联使用:
torch-npu-doc-writer基于本地 PyTorch Git 引用、torch-npu commit、测试文件和本轮日志,确定性生成 Issue 分析报告及逐版本 PR 描述。torch-npu-remote-runner在 Windows、Linux 或 macOS 本地通过 OpenSSH 免密连接完成测试扫描、上传、远端执行和日志下载。torch-npu-server-runner在已登录的 Linux 昇腾服务器或指定 Docker 容器内发现同名 conda 环境,执行多版本测试并写入本轮日志。本次更新重点提升执行效率、版本隔离、证据可追溯性、Unicode 路径兼容性和失败结果的可诊断性,减少模型侧重复检索、历史日志污染及父子进程编码不一致造成的误判。
主要内容
torch-npu-doc-writer
config/versions.json版本配置,集中维护启用版本、维护版本、各版本 PyTorch Git 引用以及 torch-npu master 资料目录映射。doc_pipeline.py prepare/render两阶段流水线:准备阶段完成 commit 门禁并并行生成 PyTorch、commit 结构和完整日志证据;渲染阶段统一生成文档并执行确定性审计。torch-npu-remote-runner
--testBase、--serverIp、--containerName旧参数别名,新命令统一使用--localBase、--server和--dockerContainer。torch-npu-server-runner
conda env list --json自动发现与版本目录同名的环境,不依赖调用进程预先执行conda activate。TestClass.test_method精确筛选测试;每个有测试文件的目标版本都必须匹配指定方法,避免静默漏测。--maxWorkers仅并行不同版本,同一版本内的测试文件保持顺序;默认并发数为1,并逐项记录耗时、退出码和日志绝对路径。<localBase>/result_log/<version>/<完整相对路径>.log,不创建或依赖run_manifest.json,结果分析范围由本轮标准输出中的任务和日志路径确定。跨技能协作
torch-npu-remote-runner/scripts/torch_npu_server_runner.py与torch-npu-server-runner/scripts/torch_npu_server_runner.py保持字节级一致。特性
--dryRun。验证
python -B -m unittest discover -s torch-npu-remote-runner/tests -p "test_torch_npu_remote_runner.py" -v:37 个测试全部通过。python -B -m unittest discover -s torch-npu-server-runner/tests -p "test_torch_npu_server_runner.py" -v:41 个测试全部通过。torch_npu_server_runner.py的 SHA-256 均为fa857c8dce065636939e0d96d448f42d2da81aabda8d1e204de8180687f6f35f。torch-npu-doc-writer的 6 个 CLI 脚本、版本配置、六章 Issue 模板、四章 PR 模板及严格 UTF-8 约束。prepare和render,生成一份 Issue 与四份版本 PR,内置审计结果为audit.valid=true;中文路径文件哈希复读、完整日志、测试表行数、资料版本和 PR 隔离均通过。风险说明
本次 runner 验证以本地单元测试为主,未连接真实 SSH 服务器、Docker 容器或昇腾 NPU 环境。真实执行结果仍受服务器网络、known_hosts 和密钥配置、目录权限、容器挂载、conda 环境、驱动/CANN、NPU 资源及 HCCL 状态影响。
torch-npu-remote-runner和torch-npu-server-runner各保存一份 server runner。后续修改任一副本时必须同步另一份,并运行跨技能一致性测试;否则本地远程执行与服务器直接执行可能产生行为差异。版本并发可能增加 NPU 显存、设备和 HCCL 资源争用风险,因此默认保持
--maxWorkers 1。只有确认设备隔离和资源充足后才建议提高并发数。torch-npu-doc-writer依赖本地 Git 引用、唯一 commit 和本轮日志作为证据,不访问线上仓库也不执行测试。严格 UTF-8 策略会主动拒绝非 UTF-8 文本或非法子进程输出,以避免乱码进入证据和文档;需要先修正输入编码后再重新执行。路径模式现在按非维护版本分别生成 PR,特殊说明模式只生成 Issue。依赖旧版“一份 Issue + 一份 PR”输出约定的调用方需要同步适配新的文件数量和命名规则。