# CodeIQ **Repository Path**: ketty9527/code-iq ## Basic Information - **Project Name**: CodeIQ - **Description**: 个人自用iq测试 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-08-17 - **Last Updated**: 2026-08-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # CodeIQ 本地测试中转站模型的编码能力(IQ):让模型作为 agent 解 DeepSWE 真题,用任务自带的 verifier 本地判分,通过率换算成 IQ 分(百分制)。 - 源码在 Windows,Docker 跑在 WSL2(Ubuntu-22.04) - 从你已配置好的 CCSwitch 读中转站信息(base_url / api_key / model / 协议),不重复配置 - 支持三种协议:anthropic `/v1/messages`、responses `/v1/responses`、chat_completions `/v1/chat/completions` - 本地判分,不依赖 DRadar 服务端 - 交互菜单全程中文,只输数字或 y/n,跑完直接给 IQ 分 ## 准备 ```bash # Windows 上:安装依赖(含 dev) pip install -e ".[dev]" # 拉取 deep-swe 题库(默认放在 D:\code\ai\deep-swe\tasks) git -c core.autocrlf=false clone --depth 1 https://github.com/datacurve-ai/deep-swe.git # 注意:必须用 LF。构建 verifier 镜像时会再做一次 LF 归一化兜底。 # WSL 里拉取需要的任务镜像(以 abs-module-cache-flags 为例) wsl -d Ubuntu-22.04 -- docker pull \ public.ecr.aws/d3j8x8q7/swe-bench-202605:kh75679ajj3b8dtd7se3h7z0a1833y6r-v1.1 ``` ## 使用 ### 交互菜单(默认) ```bash codeiq # 装了 entry point 后 # 或 python -c "from codeiq.cli import main; main()" ``` 流程:选供应商编号 → 选协议 → 选是否代理 → 选范围(单题/小5/大20/全量113) → 选 effort 和 max_steps → 确认 → 跑。进度实时打印,跑完输出 IQ 分数, 结果写到 `reports/<时间戳>_.json`,汇总写到 `reports/<时间戳>_summary.json`。 IQ 分数 = 通过题数 / 有效判分题数 × 100(取整)。没拿到判分(agent 没产出补丁)的题 不计入分母。 ### 单题命令行 ```bash codeiq run \ --provider 百胜-企业 \ --app-type codex \ --protocol chat_completions \ --task abs-module-cache-flags \ --max-steps 30 \ --no-proxy \ --report reports/abs.json ``` ### 辅助命令 ```bash codeiq providers # 列出 CCSwitch 供应商 codeiq tasks # 列出题库 ``` ## 判分原理(已用参考答案验证 reward=1) 每个任务跑两段容器: 1. **agent 容器**:用任务镜像(`/app` 已在 base commit),注入 `agent_runtime.py` + 中转站配置。模型用 bash + str_replace_editor 两个工具解题并 commit。容器开网 (内网主机用 `--add-host` 直连,不走代理)。 2. **verifier 容器**:从 `tests/Dockerfile` 构建(同任务镜像 + 隐藏测试),`--network none`, 跑 `tests/test.sh`:`grader.py prepare` 应用 `model.patch` + `test.patch`,跑测试, `grader.py grade` 产出 `/logs/verifier/reward.json`(二值 0/1 + f2p/p2p 计数)。 两段容器共享 `/logs` 卷,`model.patch` = agent 容器内 `git diff --binary HEAD`。 ## 已知注意点 - **协议覆盖**:部分中转站在 CCSwitch 里记的是 `responses`,但网关只实现了 `chat_completions`(如百胜-企业内网)。菜单里选 `chat_completions` 即可,无需改 CCSwitch。 - **内网直连**:`api.llm.prd.yumc.local` 这类内网主机,容器通过 `--add-host` 注入 Windows 侧解析到的 IP 直连,不走代理。 - **CRLF**:Windows git 可能把题库脚本变成 CRLF 导致 bash 解析失败;构建 verifier 镜像时已自动归一化为 LF。 ## 测试 ```bash python -m pytest -q # 23 个单测,全 mock,不碰真实 CCSwitch/中转站 ```