跳转到正文
报告库
用途分类 / 开发辅助

Safe Debug Skill 安全审计

作者说它能做什么(原文)

Rigor Debug / Rigor Audit skill for deep learning research work. Use when the user pastes a traceback, terminal error, CUDA OOM, checkpoint load failure, shape mismatch, NaN loss symptom, or training failure and wants conservative diagnosis before any patching, with debug fixes clearly separated from research contributions. Do not use for broad refactoring, speculative adaptation, automatic explor

第三方安全检查结论

先别安装或运行

已检查文件
20
发现的风险
5
会不会运行危险命令?检查是否下载程序后直接运行、让他人远程控制电脑,或藏起要运行的命令。发现 1 项风险
高风险

启用 `--run-selected` 后,README 中自动选出的命令会在本机执行并继承完整环境

原文依据:5 处
发现了什么

复现入口从目标仓库的 README 或其链接文档提取命令并自动选择目标。启用执行后,该命令交给持久运行器;未提供隔离环境时,子进程复制控制器的全部环境变量。恶意或被篡改的仓库文档因此可能把危险命令伪装成示例。

为什么需要注意

命令可读取或修改用户可访问的文件、使用环境中的凭据并访问网络。超时和取消只能终止进程树,不能撤销已经发生的文件、账户或网络操作。

仅在用户启用 `--run-selected` 时触发,但随后脚本会自动选择从仓库文档提取的命令并在目标仓库目录执行。持久运行器在未传入 `child_env` 时复制当前进程的全部环境,因此不受信任仓库中的恶意文档命令可能读取文件、访问网络或接触环境变量。直接模式减少 shell 解析风险,但不是系统沙箱。用户可要求逐条确认命令,并在隔离环境中以最小环境变量运行。

ai-research-reproduction/scripts/orchestrate_repro.py:1107来自代码打开原文件
    parser.add_argument("--user-language", default="en", help="Language tag for human-readable reports.")    parser.add_argument("--run-selected", action="store_true", help="Execute the selected documented command.")    parser.add_argument("--include-analysis-pass", action="store_true", help="Run analyze-project and record its outputs in the stage ledger.")
查看另外 4 个位置
ai-research-reproduction/scripts/orchestrate_repro.py:1272来自代码打开原文件
        )    elif args.run_selected:        if chosen["selected_goal"] == "training":            run_data = maybe_run_training(                repo_path=repo_path,                command=chosen["documented_command"],                train_script=train_execute_script,                lane=args.lane,                user_language=args.user_language,                full_training_authorized=args.full_training_authorized,                train_timeout=args.train_timeout,                dataset_hint=dataset_hint,                checkpoint_hint=checkpoint_hint,                resume_from=args.resume_from,                max_train_steps=args.max_train_steps,                shell_mode=args.shell_mode,                runtime_root=runtime_root,                model_profile_json=args.model_profile_json,                required_model_capabilities=args.require_model_capability,                gpu_monitor_enabled=not args.no_gpu_monitor,            )        else:            run_data = maybe_run_command(                repo_path,                chosen["documented_command"],                args.timeout,                args.user_language,                args.shell_mode,                runtime_root,                model_adapter,                args.monitor_gpu,            )
ai-research-reproduction/_bundled/shared/scripts/runtime_runner.py:487来自代码打开原文件
    try:        argv = build_command(command, shell_mode)        environment = dict(os.environ if child_env is None else child_env)        spec["requested_argv"] = list(argv)        atomic_write_json(run_dir / "spec.json", spec)        if shell_mode == "direct":            argv = resolve_direct_argv(argv, repo, environment)        spec["argv"] = list(argv)        atomic_write_json(run_dir / "spec.json", spec)        creationflags = subprocess.CREATE_NEW_PROCESS_GROUP if os.name == "nt" else 0        process = subprocess.Popen(            argv,            env=environment,            cwd=repo,            stdout=subprocess.PIPE,            stderr=subprocess.PIPE,            text=True,            encoding="utf-8",            errors="replace",            bufsize=1,            creationflags=creationflags,            start_new_session=os.name != "nt",        )    except (FileNotFoundError, ShellSyntaxRequired, OSError, ValueError) as exc:
ai-research-reproduction/scripts/orchestrate_repro.py:1237来自代码打开原文件
    chosen = choose_goal(command_data.get("commands", []), repo_path)    dataset_hint = derive_dataset_hint(asset_data)
ai-research-reproduction/scripts/orchestrate_repro.py:1293来自代码打开原文件
        else:            run_data = maybe_run_command(                repo_path,                chosen["documented_command"],                args.timeout,                args.user_language,                args.shell_mode,                runtime_root,                model_adapter,                args.monitor_gpu,            )
会不会泄露文件和密钥?检查是否发送含密码或密钥的文件,以及代码里是否直接写了密钥。发现 3 项风险
中风险

可选模型入口会把读取的仓库内容发送给 Anthropic 或配置的 HTTPS 端点

原文依据:6 处
发现了什么

模型可以读取初始清单中的仓库文件;读取结果随后加入消息历史并传给 provider。端点还可以由模型配置或 `ANTHROPIC_BASE_URL` 指定,因此接收方不一定是官方服务。

为什么需要注意

私有源代码、配置内容、内部路径或任务详情可能离开本机,并受所选服务或网关的保存、访问和合规政策约束。`.env` 被排除不能保护其他文件中的秘密。

这是可选且由用户提供任务和模型配置的入口,但模型确实能读取初始仓库清单中的文件;读取内容被保存为工具结果并进入后续模型请求。接收端由配置的 endpoint、`ANTHROPIC_BASE_URL` 或官方地址决定,因此私有源码可能离开本机并发送给自定义服务。用户应确认端点和数据处理条款,并限制允许读取的文件或仅在可披露的仓库中使用。

ai-research-reproduction/scripts/run_agent.py:440来自代码打开原文件
                            value = {"files": sorted(files)}                        elif name == "read_file":                            if args["path"] not in files:                                raise ValueError("File was not in the permitted initial inventory")                            offset = max(0, int(args.get("offset", 0)))                            with safe_file(repo, args["path"]).open("r", encoding="utf-8") as handle:                                handle.seek(offset)                                value = {"path": args["path"], "text": handle.read(12000), "next_offset": handle.tell()}                        elif name == "update_plan":
查看另外 5 个位置
ai-research-reproduction/scripts/run_agent.py:495来自代码打开原文件
                        value = {"error": str(exc)}                    event("tool_result", tool=name, result=value)                    state["tool_results"].append({"type": "tool_result", "tool_use_id": call["id"],                        "content": json.dumps(value, ensure_ascii=False), "is_error": "error" in value})                    state["pending"].pop(0)                    tools_this_turn += 1                    save()                    if pause_after_tools and tools_this_turn >= pause_after_tools and state["status"] == "running":                        state["status"] = "paused"                        event("paused", reason="Explicit test/session checkpoint")                    continue                if state["tool_results"]:                    state["messages"].append({"role": "user", "content": state.pop("tool_results")})                    state["tool_results"] = []
ai-research-reproduction/scripts/run_agent.py:518来自代码打开原文件
                save()                event("model_request", call=state["model_calls"], reserved_tokens=reserve)                response = provider.complete(state["messages"], SYSTEM, TOOLS, budget["max_output_tokens"], min(60, remaining))                if not isinstance(response, dict):
ai-research-reproduction/references/agent-runner.md:110来自说明文档打开原文件
`endpoint` optionally names the final HTTPS endpoint. Without it, the clientuses `ANTHROPIC_BASE_URL` or the official endpoint. For an already configuredBearer gateway, set `metadata.auth_scheme` to `bearer` and name its credentialenvironment variable. Redirects are refused so credentials are not forwarded.
ai-research-reproduction/scripts/run_agent.py:343来自代码打开原文件
        raise ValueError("All budget limits must be positive integers")    endpoint_identity = fingerprint(profile.get("endpoint") or os.getenv("ANTHROPIC_BASE_URL") or "https://api.anthropic.com")    harness_identity = fingerprint([Path(__file__).read_bytes().replace(b"\r\n", b"\n").hex(), SYSTEM, TOOLS,
ai-research-reproduction/scripts/run_agent.py:519来自代码打开原文件
                event("model_request", call=state["model_calls"], reserved_tokens=reserve)                response = provider.complete(state["messages"], SYSTEM, TOOLS, budget["max_output_tokens"], min(60, remaining))                if not isinstance(response, dict):
中风险

错误文本未经脱敏便写入诊断文件并打印到标准输出

原文依据:4 处
发现了什么

脚本把错误的前 12 行原样放入 `error_excerpt`,随后写入 `DIAGNOSIS.md` 并打印整个分析对象。这里没有使用包中其他位置的秘密过滤器。

为什么需要注意

如果 traceback 含令牌、带凭据的 URL、个人目录、数据路径或私有参数,这些内容会被复制到持久报告、终端日志或调用该脚本的 CI 日志中。

输入错误文本的前 12 行未经秘密或个人数据脱敏便进入 `error_excerpt`。非 JSON 模式将其写入 `DIAGNOSIS.md`,两种模式都会把完整分析对象打印到标准输出。因此,若 traceback 含令牌、私有路径、请求参数或个人数据,这些内容会进入文件、终端日志或调用方捕获的输出。用户可先清理错误文本,并要求作者加入可靠的脱敏和敏感字段排除。

scripts/safe_debug.py:75来自代码打开原文件
def analyze_error(text: str) -> Dict[str, object]:    category = classify_error(text)    needs_savepoint = category in {"checkpoint_mismatch", "distributed_issue", "shape_mismatch", "loss_nan"}    return {        "category": category,        "summary": f"Detected debug category: `{category}`.",        "needs_explicit_patch_approval": True,        "needs_savepoint_before_patch": needs_savepoint,        "actions": suggested_actions(category),        "error_excerpt": "\n".join(text.splitlines()[:12]) or text,    }
查看另外 3 个位置
scripts/safe_debug.py:98来自代码打开原文件
        "",        "## Error excerpt",        "",        "```text",        data["error_excerpt"],        "```",        "",        "## Conservative analysis",        "",        data["summary"],        "",    ]    (output_dir / "DIAGNOSIS.md").write_text("\n".join(diagnosis), encoding="utf-8")
scripts/safe_debug.py:153来自代码打开原文件
    text = args.error_text or Path(args.error_file).read_text(encoding="utf-8", errors="ignore")    data = analyze_error(text)    if args.json:        print(json.dumps(data, indent=2, ensure_ascii=False))        return 0    write_outputs(Path(args.output_dir).resolve(), data)    print(json.dumps(data, indent=2, ensure_ascii=False))    return 0
scripts/safe_debug.py:84来自代码打开原文件
        "actions": suggested_actions(category),        "error_excerpt": "\n".join(text.splitlines()[:12]) or text,    }
中风险

复现运行默认把失败摘要和命令持久保存到用户主目录

原文依据:5 处
发现了什么

只要启用复现执行,部分或阻塞结果会自动记录主阻塞项和文档命令。记录功能默认开启,并把内容追加到 `~/.rigorpilot/lessons.jsonl`;关键词过滤器明确只是尽力而为。

为什么需要注意

私有仓库名称、README 指纹、内部路径、命令参数或过滤器未识别的秘密可能长期留在仓库之外,之后还可能被汇总进个人覆盖文件。

仅在用户请求执行且结果为 `partial` 或 `blocked` 时,编排器会自动保存阻塞摘要、文档命令及仓库指纹。记录默认开启,并追加到 `RIGORPILOT_HOME` 或用户主目录下的 `.rigorpilot/lessons.jsonl`。虽然有长度限制和尽力而为的凭据正则,但不能保证移除私有 URL、个人数据或未识别的令牌格式。用户可设置 `RIGORPILOT_LESSONS=0`,并在共享日志或备份前审查该文件。

ai-research-reproduction/scripts/orchestrate_repro.py:62来自代码打开原文件
    try:        if status in {"partial", "blocked"}:            path = store.record_lesson(                kind="failure-fix",                skill="ai-research-reproduction",                summary=f"[{status}] {context.get('main_blocker', 'unrecorded blocker')}",                detail=str(context.get("documented_command") or ""),                fingerprint=fingerprint,            )            return str(path) if path else None
查看另外 4 个位置
ai-research-reproduction/_bundled/shared/scripts/lessons_store.py:21来自代码打开原文件
VALID_KINDS = {"failure-fix", "user-correction", "preference", "generalization"}# Best-effort blocklist: keyword shapes plus common bare-credential formats.# This is a guardrail, not a guarantee — callers still must not pass secrets.SECRET_RE = re.compile(
ai-research-reproduction/_bundled/shared/scripts/lessons_store.py:41来自代码打开原文件
def lessons_home() -> Path:    root = os.environ.get("RIGORPILOT_HOME")    return Path(root).expanduser() if root else Path.home() / ".rigorpilot"def lessons_enabled() -> bool:    return os.environ.get("RIGORPILOT_LESSONS", "1") != "0"def lessons_path() -> Path:    return lessons_home() / "lessons.jsonl"def overlay_path() -> Path:    return lessons_home() / "PERSONAL_RIGOR.md"
ai-research-reproduction/_bundled/shared/scripts/lessons_store.py:125来自代码打开原文件
    }    path = lessons_path()    path.parent.mkdir(parents=True, exist_ok=True)    with path.open("a", encoding="utf-8") as handle:        handle.write(json.dumps(entry, ensure_ascii=False) + "\n")    return path
ai-research-reproduction/scripts/orchestrate_repro.py:1391来自代码打开原文件
    context["lesson_recorded"] = maybe_record_lesson(repo_path, context) if args.run_selected else None
会不会删除文件或一直在后台运行?检查是否大范围删除文件、改写磁盘,或设置自动启动。发现 1 项风险
中风险

自定义输出目录中的同名诊断文件会被直接覆盖

原文依据:4 处
发现了什么

`--output-dir` 接受任意目录;非 JSON 模式对 `DIAGNOSIS.md`、`PATCH_PLAN.md` 和 `status.json` 使用 `write_text`,没有所有权收据、存在检查或备份。

为什么需要注意

如果选择已有项目目录或包含同名重要文件的目录,原内容会不可恢复地被新的诊断结果替换。

`--output-dir` 可由调用者指定并被解析为任意路径;脚本随后用 `write_text` 写入三个固定文件名,没有检查文件是否已存在、是否由该工具创建,也没有备份。因此,只要该目录已有同名文件,运行就会截断并覆盖它们。默认目录降低了意外范围,但不消除碰撞。用户应选择全新专用目录,并可要求作者拒绝覆盖或采用所有权收据和原子备份。

scripts/safe_debug.py:109来自代码打开原文件
    ]    (output_dir / "DIAGNOSIS.md").write_text("\n".join(diagnosis), encoding="utf-8")
查看另外 3 个位置
scripts/safe_debug.py:123来自代码打开原文件
    ]    (output_dir / "PATCH_PLAN.md").write_text("\n".join(patch_plan), encoding="utf-8")
scripts/safe_debug.py:139来自代码打开原文件
    }    (output_dir / "status.json").write_text(json.dumps(status, indent=2, ensure_ascii=False), encoding="utf-8")
scripts/safe_debug.py:146来自代码打开原文件
    parser.add_argument("--error-text", help="Inline error or symptom text.")    parser.add_argument("--output-dir", default="debug_outputs", help="Directory for debug outputs.")    parser.add_argument("--json", action="store_true", help="Emit JSON to stdout instead of writing files.")    args = parser.parse_args()    if not args.error_file and not args.error_text:        raise SystemExit("Provide --error-file or --error-text.")    text = args.error_text or Path(args.error_file).read_text(encoding="utf-8", errors="ignore")    data = analyze_error(text)    if args.json:        print(json.dumps(data, indent=2, ensure_ascii=False))        return 0    write_outputs(Path(args.output_dir).resolve(), data)    print(json.dumps(data, indent=2, ensure_ascii=False))
会不会绕过安全保护?检查是否跳过网站安全验证、开放过多文件权限,或取消操作前的确认。未发现风险
会不会误导 AI 或隐藏内容?检查工作说明是否要求 AI 忽略你的指令、干扰检查结果,或夹带看不见的文字。未发现风险
会不会偷偷改推广链接或收款方?检查是否强制替换推广链接或收款对象,同时要求隐瞒更改。未发现风险

Skill 逻辑拆解

5 个说明模块

直接的 `safe-debug` 脚本只按关键词分类错误、截取前 12 行,并提出保守建议;它不包含自动补丁逻辑。

查看原文
scripts/safe_debug.py:75来自代码打开原文件
def analyze_error(text: str) -> Dict[str, object]:    category = classify_error(text)    needs_savepoint = category in {"checkpoint_mismatch", "distributed_issue", "shape_mismatch", "loss_nan"}    return {        "category": category,        "summary": f"Detected debug category: `{category}`.",        "needs_explicit_patch_approval": True,        "needs_savepoint_before_patch": needs_savepoint,        "actions": suggested_actions(category),        "error_excerpt": "\n".join(text.splitlines()[:12]) or text,    }
references/debug-policy.md:5来自说明文档打开原文件
1. read the error or symptom carefully2. diagnose without editing repository code3. state the likely cause, evidence, and smallest safe fix4. require explicit approval before patching

非 JSON 模式会创建 `debug_outputs`(或用户指定目录),并写入诊断、补丁计划和状态三个文件。

查看原文
scripts/safe_debug.py:88来自代码打开原文件
def write_outputs(output_dir: Path, data: Dict[str, object]) -> None:    output_dir.mkdir(parents=True, exist_ok=True)
scripts/safe_debug.py:133来自代码打开原文件
        "suggested_actions": data["actions"],        "outputs": {            "diagnosis": "debug_outputs/DIAGNOSIS.md",            "patch_plan": "debug_outputs/PATCH_PLAN.md",            "status": "debug_outputs/status.json",        },    }    (output_dir / "status.json").write_text(json.dumps(status, indent=2, ensure_ascii=False), encoding="utf-8")

该包还捆绑了一个范围明显更广的研究复现系统;其确定性入口可从目标仓库 README 提取并选择命令,在用户启用执行选项时启动该命令。

查看原文
ai-research-reproduction/SKILL.md:19来自说明文档打开原文件
The deterministic entrypoint is `scripts/orchestrate_repro.py`. It includes aself-contained `_bundled/` runtime, so this skill works when installed alone;separately installed companion skills remain optional reusable entrypoints.Executed commands persist lifecycle state, append-only events, and full streamedstdout/stderr under `repro_outputs/_runtime/<run_id>/`. A `CANCEL` file in theactive run directory requests process-tree cancellation.For recovery, queues or model gates, read `references/runtime-and-model-adapter.md`; for the optional model/tool loop, read `references/agent-runner.md` and use `scripts/run_agent.py`.
ai-research-reproduction/scripts/orchestrate_repro.py:1167来自代码打开原文件
    scan_data = run_json(scan_script, ["--repo", str(repo_path), "--json"])    readme_path = scan_data.get("readme_path")    command_data: Dict[str, Any] = {"commands": [], "counts": {}, "warnings": []}    if readme_path:        command_data = run_json(extract_script, ["--readme", readme_path, "--json"])        command_data = delegate_to_docs(readme_path, extract_script, command_data)
ai-research-reproduction/scripts/orchestrate_repro.py:1237来自代码打开原文件
    chosen = choose_goal(command_data.get("commands", []), repo_path)    dataset_hint = derive_dataset_hint(asset_data)    checkpoint_hint = derive_checkpoint_hint(asset_data)    run_data: Dict[str, Any] = {

可选的模型驱动入口要求预审任务 JSON,但文档明确说明其命令在本机执行,获准程序仍可访问主机和网络,并非操作系统沙箱。

查看原文
ai-research-reproduction/references/agent-runner.md:10来自说明文档打开原文件
The researcher supplies a repository, a reviewed task JSON, and a model profile.The agent reads files, records a plan, chooses reviewed command IDs, observesruntime results, and requests final verification. It cannot invent command argvor edit source through its tools. Every command cites an exact source snippet;argv changes require a recorded `adaptation`. Read task argv before approving it.This is local execution with credential environment filtering, not an OS sandbox.Approved programs can access the host and network; use only trusted repositoriesuntil an isolated executor is configured. Commands that change scientificconditions must be explicitly reviewed. P1 targets small evaluations, not full
从这里开始 · 工作说明SKILL.md
safe-debug
连线表示工作说明包含的模块,不是实际运行顺序。点击模块可查看原文。

文件引用关系图

20 处引用
哪些文件发起引用引用了什么
连线表示真实的文件引用,不是运行顺序。点击节点可高亮相关连线,并查看具体文件和原文位置。虚线表示还有文件需要定位。
文件与检查记录20 个文件

检查范围与遗漏

逐文件查看涉及的内容

下方列出本次涉及的原文范围;纳入检查不代表已查清所有问题。

  • SKILL.md已纳入全文
  • ai-research-reproduction/_bundled/shared/scripts/lessons_store.py已纳入全文
  • ai-research-reproduction/_bundled/shared/scripts/runtime_runner.py已纳入全文
  • ai-research-reproduction/_bundled/shared/scripts/task_queue.py已纳入全文
  • ai-research-reproduction/scripts/orchestrate_repro.py已纳入全文
  • ai-research-reproduction/scripts/run_agent.py已纳入全文
  • scripts/safe_debug.py已纳入全文
  • references/debug-policy.md已纳入全文
  • ai-research-reproduction/references/agent-operating-principles.md已纳入全文
  • ai-research-reproduction/references/agent-runner.md已纳入全文
  • ai-research-reproduction/references/continuous-learning-policy.md已纳入全文
  • ai-research-reproduction/references/deep-learning-experiment-principles.md已纳入全文
  • ai-research-reproduction/references/language-policy.md已纳入全文
  • ai-research-reproduction/references/output-spec.md已纳入全文
  • ai-research-reproduction/references/patch-policy.md已纳入全文
  • ai-research-reproduction/references/research-rigor-principles.md已纳入全文
  • ai-research-reproduction/references/research-safety-principles.md已纳入全文
  • ai-research-reproduction/references/runtime-and-model-adapter.md已纳入全文
  • ai-research-reproduction/SKILL.md已纳入全文
  • agents/openai.yaml已纳入全文

这份报告只针对上方版本。我们看了拿到的代码和说明文件,没有实际运行 Skill,也没有检查它另外安装的软件包。因此,这不是“保证安全”的承诺;换了版本或使用环境,结果也可能不同。

  • SKILL.md工作说明
  • agents/openai.yaml配套文件
  • references/debug-policy.md配套文件
  • scripts/safe_debug.py脚本
  • ai-research-reproduction/SKILL.md配套文件
  • ai-research-reproduction/references/agent-operating-principles.md配套文件
  • ai-research-reproduction/references/research-rigor-principles.md配套文件
  • ai-research-reproduction/references/deep-learning-experiment-principles.md配套文件
  • ai-research-reproduction/scripts/orchestrate_repro.py脚本
  • ai-research-reproduction/references/runtime-and-model-adapter.md配套文件
  • ai-research-reproduction/references/agent-runner.md配套文件
  • ai-research-reproduction/scripts/run_agent.py脚本
  • ai-research-reproduction/references/patch-policy.md配套文件
  • ai-research-reproduction/references/output-spec.md配套文件
  • ai-research-reproduction/references/language-policy.md配套文件
  • ai-research-reproduction/references/continuous-learning-policy.md配套文件
  • ai-research-reproduction/_bundled/shared/scripts/lessons_store.py脚本
  • ai-research-reproduction/references/research-safety-principles.md配套文件
  • ai-research-reproduction/_bundled/shared/scripts/runtime_runner.py脚本
  • ai-research-reproduction/_bundled/shared/scripts/task_queue.py脚本

代码和说明中提到的操作

修改文件
scripts/safe_debug.py:109来自代码打开原文件
    ]    (output_dir / "DIAGNOSIS.md").write_text("\n".join(diagnosis), encoding="utf-8")
scripts/safe_debug.py:123来自代码打开原文件
    ]    (output_dir / "PATCH_PLAN.md").write_text("\n".join(patch_plan), encoding="utf-8")
scripts/safe_debug.py:139来自代码打开原文件
    }    (output_dir / "status.json").write_text(json.dumps(status, indent=2, ensure_ascii=False), encoding="utf-8")
读取文件
scripts/safe_debug.py:153来自代码打开原文件
    text = args.error_text or Path(args.error_file).read_text(encoding="utf-8", errors="ignore")    data = analyze_error(text)
ai-research-reproduction/scripts/orchestrate_repro.py:205来自代码打开原文件
        if config_path.exists() and config_path.suffix.lower() in {".yaml", ".yml", ".json", ".toml", ".py"}:            text_content = config_path.read_text(encoding="utf-8", errors="replace")            step_match = None
ai-research-reproduction/scripts/orchestrate_repro.py:352来自代码打开原文件
        return command_data    readme_file = Path(readme_path)    readme_text = readme_file.read_text(encoding="utf-8-sig", errors="replace")
运行命令
ai-research-reproduction/scripts/orchestrate_repro.py:12来自代码打开原文件
import shleximport subprocessimport sys
ai-research-reproduction/scripts/orchestrate_repro.py:103来自代码打开原文件
    child_env["PYTHONIOENCODING"] = "utf-8"    result = subprocess.run(        command,
ai-research-reproduction/scripts/orchestrate_repro.py:121来自代码打开原文件
    try:        subprocess.run(            [
读取密钥或账号配置
ai-research-reproduction/scripts/orchestrate_repro.py:101来自代码打开原文件
    command = [sys.executable, str(script), *args]    child_env = os.environ.copy()    child_env["PYTHONIOENCODING"] = "utf-8"
ai-research-reproduction/scripts/run_agent.py:65来自代码打开原文件
    path = (repo / name).resolve()    if (not path.is_relative_to(repo) or any(p == ".git" or p.startswith(".env") for p in Path(name).parts)            or any(p == ".git" or p.startswith(".env") for p in path.relative_to(repo).parts)):
ai-research-reproduction/scripts/run_agent.py:66来自代码打开原文件
    if (not path.is_relative_to(repo) or any(p == ".git" or p.startswith(".env") for p in Path(name).parts)            or any(p == ".git" or p.startswith(".env") for p in path.relative_to(repo).parts)):        raise ValueError("File path is outside the permitted repository scope")
安装其他软件包
ai-research-reproduction/scripts/orchestrate_repro.py:252来自代码打开原文件
        score -= 10    if text_value.startswith(("pip install", "conda install", "conda env create", "conda activate", "git clone", "cd ")):        score -= 12
连接外部网站
ai-research-reproduction/scripts/orchestrate_repro.py:357来自代码打开原文件
        rel = match.group(1)        if rel.startswith(("http://", "https://")):            continue
ai-research-reproduction/scripts/run_agent.py:343来自代码打开原文件
        raise ValueError("All budget limits must be positive integers")    endpoint_identity = fingerprint(profile.get("endpoint") or os.getenv("ANTHROPIC_BASE_URL") or "https://api.anthropic.com")    harness_identity = fingerprint([Path(__file__).read_bytes().replace(b"\r\n", b"\n").hex(), SYSTEM, TOOLS,
ai-research-reproduction/references/runtime-and-model-adapter.md:65来自说明文档打开原文件
  "capabilities": ["text", "tool_calling", "structured_output"],  "endpoint": "https://gateway.example/v1",  "credential_env": "LAB_MODEL_API_KEY",
读取了多少行
4,948
文件校验值(用于核对版本)
9a8b2aae6168732116d5c1cb9c2c889b07f9b0892c1fea74b3d6ccbd25a1693d