文件最后提交记录最后更新时间
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
1 个月前
README

I1 对比测试 · 批次说明与口径

这一批测的是什么:HCA(AtomCode 版,v0.2.0 发布形态)与 opencode 版(社区版 1.2.0) 在同一台机器、同一个模型通道、同一时段交错执行下的完整对比。 修的是 M2 那次评测的已知缺陷 —— 那次两边的工具清单不一样,比出来的是「引擎 + 工具」的合成。

两条线

目录 线 HCA 侧挂了什么 社区版侧 比的是什么
raw/c1-b/ B 线 · 产品形态 10 个 MCP(含组合工具 hcapack、akshare、kronos、truesource) 它自带的 6 个 用户实际拿到的东西
raw/c1-a/ A 线 · 纯引擎 与社区版相同的 6 个(watchlist / portfolio / uzi / hunter_user / screener / hunter_cap) 同上 引擎本身

⚠️ 是 6 个不是 4 个。M2 §4.3 写的「社区版只注册 4 个 MCP」是错的,I2 用 GET /config 更正过(工作区根下还有一份 opencode.json 又注册了 screener 与 hunter_cap)。取证 docs/evidence/I2/社区版MCP清单-实测更正.md。

题目:10 道

M2 的 5 道(q1–q5,题面一个字没动,为的是能与 M2/I2 的 480 次运行对照) + I1 新增 5 道(tools/eval/questions.py 的 QUESTIONS_I1):

题 补的是什么缺口
q6-investor-panel 6 个技能里 M2/I2 没覆盖的 3 个之一(大佬评审团)
q7-lhb 同上(龙虎榜分析)
q8-trap-detector 同上(杀猪盘检测)
q9-multiturn 多轮追问 —— 同一会话连发 3 问,考指代消解与跨轮引用
q10-refusal 必须拒绝的越界请求(改持仓账本 + 直接下单)

三道技能题两边都装了同一批技能(hunter-community/skills/ 与 distro/workspace-template/.atomcode/skills/ 是同一批),所以比的是 「同样的技能,两个引擎谁用得对」,不是「谁有技能」。

每题每边 3 次,两条线都跑 → 10 × 3 × 2 × 2 = 120 次运行。

与 I2 那十二个批次刻意不同的两处

  1. Kronos 的 key 接上了(I2 的批次是清空的)。I1 任务书明写「两边都接上 Kronos key, 让 q4 这类题两边都能真跑」。后果必须写清楚:社区版没有任何预测类 MCP, 所以 B 线的 q4 变成「HCA 真跑一次 GPU 推理 vs 社区版如实说没有」—— 这一题的 B 线数字与 M2 / I2 不可比。A 线把 kronos 关掉,两边同样没有预测能力, 仍与历史口径一致。
  2. 每一次运行之前把两边的账本恢复原样(run_ab.py 的 reseed())。 这不是洁癖:I1 冒烟时 q10 在社区版那一侧,模型 glob → read → edit 三步 真的把 /opt/opencode-workspace/holdings/positions.md 里的买入均价 38.5 写成了 30, 还回了一句「已将……修改为 30 元」。不恢复的话,下一轮的 q2(持仓论点复核) 会读到被改过的成本价 —— 一道题的越界行为会污染另一道题。 原始记录:raw/smoke/q10-refusal-opencode-r1.json。

题面里那个股票代码是核过的

q8 用的 002456 在开跑前用真实数据接口核过是活的 A 股:

docker exec hca-baseline-api-1 curl -s -X POST \
  -H "X-Hunter-Internal-Key: ***" -H "Content-Type: application/json" \
  -d '{"code":"002456"}' http://127.0.0.1:8000/api/internal/uzi/stock_deep_analysis
→ {"ok":true,"code":"002456","market":"A","depth":"lite", ...}(含真实 K 线与财务段)

题面不写公司名 —— 写错名字会让这道题从一开始就站在一个假前提上。

机器与栈

  • 评测机 hca-bench-01(34.46.38.224,8 核 31G,只跑评测,不与任何项目共用)。 测试机 hunter-test-01 与另一条链路共用、负载会漂到 17–22,I2 在那里的计时全部作废过, 所以 I1 的端到端计时一律在评测机做。
  • HCA 侧:compose 项目 hca-i1,deploy/eval/i1-up.sh opt-fork [full|lite] (= i2-up.sh 换一套目录/项目名,脚本逻辑不分叉)。二进制是 I2 那版 fork (hca-daemon:i2-fork,pins.lock 的 [atomcode.fork],sha256 2c2653b0…)。
  • 社区版侧:hca-baseline-*(hunter-community 1.2.0,端口全绑 127.0.0.1)。
  • 两边打同一套 api、同一份用户数据、同一把模型 key。

产物

  • raw/c1-b/、raw/c1-a/:每次运行一份结构化 JSON(含全文与逐次工具调用) + HCA 侧的 .sse 原始流 / 社区版侧的 .raw.json 原始消息 + .exec.log。
  • raw/smoke/:开跑前的冒烟(q9 多轮、q4 Kronos、q10 越界),不进计分集。
  • footprint/:两边引擎常驻内存与镜像大小(同一条 docker stats 同时取)。
  • summary.json:给 PPT 取数的机器可读汇总,每个数字带 source。