verify 用于在无 Docker 的主机上端到端验证 harness 改动。资料指出,管线的真实接口是容器内的 claude -p 进程及其对外 API 请求;在没有 Docker 的情况下,可以用 harness 原本会通过 docker -e 注入的环境字典,直接驱动同一个固定版本的 CLI 二进制文件。
主要能力
该技能提供一套可复现的验证流程:获取固定版本 CLI、搭建桩 API 服务器、按管线方式构建 agent 环境、模拟容器环境变量、运行 CLI 并读取捕获的请求头日志。全程无需 Docker。
使用方式
-
获取固定版本 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 服务器,把每个请求的请求头追加到 JSONL 文件,并返回 400 invalid_request_error(不可重试,使 CLI 快速退出;exit=1 属于预期结果)。
-
按管线方式构建 agent 环境:执行
python3 -c "from harness.auth import resolve_auth_env; ...",并用 shlex.quote 导出为 export-lines 文件。资料强调,值中包含换行符,绝不要通过env $(...)传递,因为分词会破坏它们,应改为 source 该文件。 -
模拟容器环境:在 source 之前 unset ANTHROPIC_CUSTOM_HEADERS 以及其他不在解析字典中的环境变量。资料说明,该仓库中的 Claude Code 会话会把 .claude/settings.json 的 env 注入 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。
适用场景
适用于需要在无 Docker 的主机上验证 harness 改动、检查 CLI 实际发出的请求头与环境变量是否正确注入的场景。
限制与注意事项
tests/test_patch.py 与 tests/test_patch_grade.py 中的单元测试需要 Docker,在无 Docker 主机上会失败,这是既有问题而非本次改动导致。docker -e 注入环节本身无法在没有 Docker 的情况下验证,而生产环境中正是同一机制承载 ANTHROPIC_API_KEY。对于交互式技能接口,需把 .claude/settings.json 复制到新的临时目录,并从那里运行宿主机 claude,同时 unset 环境中的 ANTHROPIC_CUSTOM_HEADERS,使 settings.json 成为唯一来源。