任务:真实评审可以用所有者 Circle 里配置的 GLM 端点(独立复核需要另一个模型家族)
Hub 把名字里有共同词的模型算同一家族,不认作独立;环境配置文件里现在只有千问家族的端点,所以初评之后的独立复核(case-review-verify)没法用真实模型做。所有者自己的 Circle 里配了 GLM(settings.json 的 auth:协议、地址、模型名、密钥引用;credentials.json 的 api_key),这是所有者配置的端点,评审用 GLM 已在批准的计划里(“Circle 用 qwen 或 GLM 评审”)。这个任务让真实评审的驱动脚本能从那份 Circle 配置取端点。
- 分支和工作树:
hub-glm,目录circle-hub-glm - 可以改的路径:
scripts/real/circle-home.ts、scripts/real/review-circle.ts、scripts/real/lib/**(及其测试)。别的路径不动。 - 先读:
AGENTS.md、docs/hub-r4-handoff.md、scripts/real/circle-home.ts(endpointFrom、writeHome)、scripts/real/review-circle.ts、scripts/real/lib/env-file.ts(密钥只通过pick()离开,屏幕上只有键名和长度)。 - 要做的事:
- 一个只读的取端点函数:从一个 Circle 数据目录(默认
~/.circle,用--circle-dir指定别处,测试用临时目录)读settings.json的auth和credentials.json的api_key,给出和endpointFrom同形的Endpoint(协议、地址、模型名、密钥、来源说明只写文件名和键名)。api_key_ref指的是credentials.json里的哪一项(目前就是api_key),不认识的引用要报错,错误里不带任何值。 review-circle.ts加--endpoint-from circle --circle-dir <目录>(与现有的--env-file --provider --section二选一),其余流程不变;密钥只写进专用 Circle 目录的 0600 文件,屏幕和日志只显示协议、主机名、模型名和密钥长度。- 测试:用临时目录里伪造的
settings.json和credentials.json(假的地址用 192.0.2.0/24 或 example.invalid,假的密钥),覆盖:正常取出、缺文件、缺字段、引用不认识、输出里没有密钥(把密钥当探针检查所有打印的行)、权限不是 0600 时的处理(只警告)。
- 一个只读的取端点函数:从一个 Circle 数据目录(默认
- 不要运行真实评审,不要读
~/.circle里的真实文件(测试只用临时目录);监督者会在合并以后自己跑。 - 验证:
npx tsc --noEmit;node --test --test-concurrency=2 "scripts/real/**/*.test.ts"。 - 提交只暂存明确的路径,
git commit -s,一句首字母大写的英文祈使句,不加前缀和句号,空一行后写你自己的署名行;不推送、不建 PR;不碰 7420 上的持久部署、钥匙串、环境配置文件和任何真实系统。 - 完成后在终端里回报:提交号、测试通过/跳过/todo 的数量、没做完或拿不准的地方。