关于 verify
这是一份在没有 Docker 的主机上验证 harness 改动的操作指南。它通过 stub API 服务器运行固定版本的 Claude Code CLI,并记录请求头,以检查 harness 传入的环境。
主要功能
- 01无 Docker 运行固定版本 Claude Code CLI
- 02用 stub API 服务器捕获请求
- 03重建 harness 的 Agent 环境
- 04说明环境注意事项与测试限制
适用场景
- 01检查 harness 的认证环境注入
- 02在无 Docker 主机上测试 CLI 请求
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ anthropics/ defending-code-reference-harness --skill verify安装后在 Claude Code 中输入/verify确认已加载。
详细介绍
在无 Docker 主机上验证 harness 更改
流水线的实际运行界面是在容器内运行的 claude -p 进程及其发出的 API 请求。没有 Docker 时,可直接使用相同的固定版本 CLI 二进制文件,并传入 harness 会通过 docker -e 注入的环境变量字典。
操作步骤
- 获取固定版本的 CLI(版本号来自
harness/agent_image.py:CLAUDE_CODE_VERSION): 在临时目录中运行npm install --no-save @anthropic-ai/claude-code@<pin>→ 二进制文件位于node_modules/@anthropic-ai/claude-code/bin/claude.exe(.exe这个名称在 Linux 上也是实际的原生二进制入口,由该包的 postinstall 填充,并非 Windows 遗留文件)。 - 模拟 API 服务:启动一个小型 HTTP 服务,将每个请求的
headers 追加写入 JSONL 文件,并返回 400
invalid_request_error(此错误不会触发重试,因此 CLI 会快速退出;预期退出码为 1)。 - 完全按照流水线的方式构建 Agent 环境变量:
运行
python3 -c "from harness.auth import resolve_auth_env; ...",并使用shlex.quote将结果导出到一个export行文件(值中包含换行符——绝对不要通过env $(...)传递;分词会破坏这些值;请source该文件)。 - 模拟容器环境变量:在 source 前执行
unset ANTHROPIC_CUSTOM_HEADERS(以及任何其他不在解析结果字典中的环境变量)。本仓库中的 Claude Code 会话会将.claude/settings.json中的环境变量注入 shell,而容器无法看到这些变量。 - 运行:
ANTHROPIC_BASE_URL=http://127.0.0.1:<port> CLAUDECODE= IS_SANDBOX=1 timeout 30 <cli> -p hi --model claude-sonnet-4-5 --max-turns 1,然后读取捕获的 JSONL。
注意事项
tests/test_patch.py/tests/test_patch_grade.py中的单元测试需要 Docker,在无 Docker 的主机上会失败——这是原有问题,并非由你的更改导致。- 没有 Docker 时,无法实际测试 Docker 的
-e注入环节;该机制与生产环境中传递ANTHROPIC_API_KEY的机制相同。 - 对于交互式技能的运行界面,请将
.claude/settings.json复制到一个新的临时目录中,并从该目录运行主机上的claude(同时取消设置环境中的ANTHROPIC_CUSTOM_HEADERS,确保settings.json是唯一来源)。
评论
支持 Markdown