在 /admin/intelligence-check 管理固定账号的自动或手动检测。每次按题库顺序选取
一道启用题目,将最终可见答案和耗时与管理员配置比较,保存结果及配置快照。
支持 GPT/Codex、Responses 中转和 Claude 账号;Grok、Antigravity 暂不支持。
检测结果表示当前题目和判定规则下的表现,不用于证明上游实际模型身份。
首次初始化时自动检测总开关关闭,已有账号不参与检测。保存配置和题库后,开启 所需账号及总开关。新账号默认参与检测,但仍受总开关控制;此默认值可以修改。 手动检测使用已保存配置,不要求开启自动检测。
| 字段 | 默认值 | 说明 |
|---|---|---|
enabled |
false |
自动检测总开关 |
gpt_model / claude_model |
gpt-6-astra / claude-sonnet-4-6 |
各渠道检测模型,发送前验证账号能力 |
reasoning_effort |
high |
GPT 推理强度;Claude 不发送此字段 |
judge_mode |
answer |
answer、latency 或 both |
interval_seconds / retry_seconds |
300 / 60 | 正常检测间隔及异常后重试间隔,范围 1–86400 |
timeout_seconds |
180 | 请求超时,范围 1–3600 秒 |
concurrency |
4 | 手动和自动检测共享上限,范围 1–100 |
retention |
200 | 每账号终态历史保留数,范围 1–10000 |
new_accounts_enabled |
true |
仅影响以后创建的账号 |
action |
none |
none、pause 或 switch_group |
degrade_threshold / recover_threshold |
2 / 1 | 连续未通过及恢复阈值,范围 1–1000 |
target_group_id |
0 | 切组时必须指定与账号渠道相容的有效分组 |
每道题包含 id、name、prompt、expected_answer、match_mode、
max_duration_ms、enabled;最多 100 题。开启自动检测或提交手动任务前必须
有启用的题目。内置糖果配对样例使用预期答案 21,管理员可编辑或替换。
答案支持完整匹配 exact、包含匹配 contains、Go 正则匹配 regex。
判定前执行 Unicode NFKC 标准化并去除首尾空白和包裹整个答案的单层代码围栏。
耗时判定要求完整成功响应且耗时严格小于题目阈值;耗时不含本地排队时间。
配置和题库一起保存;API 使用 revision 检查并发编辑,冲突返回 409。
| 状态 | 显示 | 含义 |
|---|---|---|
queued / running |
等待执行 / 检测中 | 尚无判定结果 |
normal |
绿色 #22c55e |
满足所选判定规则 |
degraded |
红色 #ef4444 |
完整响应,但答案或耗时未通过 |
error |
深红色 #991b1b |
请求失败、超时、未收到成功终态等,不能判为答错 |
interrupted |
已中断 | 服务停止或执行租约失效等,不参与判定 |
账号表格、卡片及详情直接共用业务健康条的 AccountStatusBar 组件,检测条每格
对应一次检测,显示最近 20 次终态结果。通过率只计算正常 /(正常 + 未通过),
没有可判分结果时显示 --。悬浮查看摘要,点击色块打开该次详情。
状态徽标后提供紧凑的检测和历史图标;等待及执行期间显示转圈。历史弹窗支持分页, 保留题目、判定配置、最终输出、错误和处置记录,并可切换此账号自动检测。 关闭账号自动检测后隐藏检测条,仍可查看历史或手动检测。 当前页摘要批量轮询,页面隐藏时暂停;摘要查询不加载完整响应正文。
仅 normal 和 degraded 改变连续次数;请求错误及中断既不增加也不打断次数。
达到阈值可暂停业务调度或切换分组,账号继续参与已启用的检测以观察恢复。
- 暂停使用独立的检测暂停标记。恢复只解除本功能拥有的暂停,不会启用手动禁用 的账号或清除鉴权、额度等其他状态。关闭暂停策略后,已有暂停不自动解除。
- 切组保存原完整分组集合,恢复时还原仍存在且渠道未改变的原分组。关闭切组 策略后,已有切组仍可按恢复阈值还原。
- 手动修改账号调度开关取消旧动作归属并重置连续计数。手动修改分组取消旧分组 还原资格;包括写入相同值及批量操作。独立的检测暂停不因仅修改分组而解除。
- 运行期间配置或人工状态改变,旧任务可保留历史,但不能用旧配置覆盖新状态。
检测固定账号,复用现有 Codex/Responses/Claude 请求执行器和账号身份配置; 不换号兜底、不注入质量测试的 HTML 指令、不将管理员浏览器身份转发给上游。 成功判定要求协议成功终态,仅使用最终可见答案,不从思考内容或工具参数取答案。
检测仅使用账号绑定代理;未绑定时明确直连,绑定失败时记录错误且不回退直连。 检测不继承分组代理、全局代理池、全局单代理、Resin 或环境代理。 客户端身份、指纹和时区仍按原账号/全局配置解析。普通业务出站规则保持不变。
检测会产生上游用量,日志使用内部来源 intelligence_check,不归到用户 API Key。
历史中的错误和输出经过既有凭据脱敏,执行租约令牌不返回管理 API。
SQLite 和 PostgreSQL 初始化时新增 intelligence_check_settings、
intelligence_check_accounts、intelligence_check_runs 三张表及相应索引、
新账号初始化触发器。迁移可重复执行,已有账号默认关闭检测。
数据库事务约束共享检测并发及每账号最多一个活动任务,并使用租约和执行者令牌 拒绝过期提交。过期运行标记中断;检测也遵守本实例账号硬并发上限,忙时重新排队。 任务领取时刷新配置快照,结果和自动处置同事务提交;调度变化通过现有 outbox 同步。 历史按账号清理,原质量测试的表和接口继续保留。
API 列表和请求格式见 API 文档。
go test -race -count=1 ./internal/intelligencecheck ./database ./auth ./admin ./proxy ./proxy/wsrelay -run 'Intelligence|AccountBound|BoundEgress|UpstreamTrace'
npm --prefix frontend test
npm --prefix frontend run typecheck
npm --prefix frontend run test:intelligence
npm --prefix frontend run build浏览器用例使用模拟接口,需要先安装 Playwright Chromium。
PostgreSQL 行为集使用隔离 schema,设置 CODEX2API_TEST_POSTGRES_DSN 后运行
go test -race -count=1 ./database -run '^TestIntelligenceCheckPostgres$'。