| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
docs(m0): 仓库骨架与 M0 预研成果文档 建仓: - README(中文 + 英文段):定位、状态、架构图、与 hunter-community / AtomCode 的关系 - LICENSE(Apache-2.0)、NOTICE(保留 AtomCode MIT 与 hunter-community 版权与商标条款) - .gitignore、pins.lock(AtomCode v5.1.0 · 双重校验方式与实测 sha256) 文档: - docs/daemon-api.md · daemon API 实测手册,52 个端点 + 19 种 SSE 事件 + 真实样例 - docs/来源说明.md · 导入清单、不同步声明、9 个 MCP 的来源与缺口核查 - docs/questions-for-atomgit.md · 14 条上游文档与实现不符 / 语义待确认 - docs/design/ · 开发计划 v0.2 与技术方案 v0.1 - docs/开发文档/M0-预研结论.md · 每项结论 + 证据 + 对 M1-M5 的影响 - docs/开发文档/总进度表.md、待办池.md - docs/evidence/M0/ · 实测原始输出(SSE 抓包、hook 输入、MCP 返回) - tools/probe/ · 可复现的探针脚本 主要实测结论: - AtomCode 不需要 llm-shim,工具 schema 经 hunter 网关(Gemini 3.8)直接可用 - POST /chat 不挂载 MCP 工具,只有 GET /live 挂载(36 vs 39 个工具) - plan 档拦写类工具但拦不住 bash 写文件;hook 的 deny 能压住 bypass 档 - 6 个 hunter 系 MCP 全部拿到,无私有仓缺口 - /chat 多工作目录并发无串话;/live 只服务一个工作目录 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
feat(i4): 响应时间专项评测跑完 —— 400 次运行、七条同库判据全绿、报告与三份文档同步 四个批次(i4-b 200 次 / i4-a 120 次 / idle-b 40 / idle-a 40),每批开跑前七条判据 全绿、社区版 199 次会话归属登记全部 200、每次运行前恢复两边账本、交错换先手。 三个数: · **空载题 A 线 4.57 s / 4.52 s = 1.01** —— 工具清单拉平之后引擎本身不慢, 这是任务书要的「最干净的一组对照」; · **产品形态十题墙钟 217.9 / 282.4 = 0.77**、答案首字 0.74、工具段 0.45、 token 0.98。快在调得少(20 次 vs 40 次、27 轮 vs 38.5 轮),不是单次更快; · **A 线反过来 1.19** —— 没有组合工具时 HCA 退回 akshare 的三连, 工具段 54.8 s → 157.4 s。与 I1 A 线的 1.18 两轮独立复现。 还差多少:只剩 q3 / q5 的模型段(+1.54 s / +3.59 s)。q5 那个量与 I3 的 +3.84 s 对得上(P2-23 拿到第二份证据),已知杠杆 U-23 只够补五分之一。 出字段慢 1.52 倍不是可优化项 —— 写了 1.74 倍的字,每字耗时反而更快。 hook 单独直测:每次工具调用 32.8 ms、每个提示 16.5 ms,十题合计约 0.85 s(0.4%)。 连带更正三处既有结论:对比文档 §3 开头改写并新增 §3.-2、§3.-1 的墙钟与 token 两行打上注记、I1 报告开头补一段口径更正(四维分不受影响,两边是对称地没有 用户上下文;速度与成本偏乐观)。待办池加 P1-28 / P2-24 / P2-25 / P2-26, P2-23 与 U-23 补新证据。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
feat(i4): 响应时间专项评测跑完 —— 400 次运行、七条同库判据全绿、报告与三份文档同步 四个批次(i4-b 200 次 / i4-a 120 次 / idle-b 40 / idle-a 40),每批开跑前七条判据 全绿、社区版 199 次会话归属登记全部 200、每次运行前恢复两边账本、交错换先手。 三个数: · **空载题 A 线 4.57 s / 4.52 s = 1.01** —— 工具清单拉平之后引擎本身不慢, 这是任务书要的「最干净的一组对照」; · **产品形态十题墙钟 217.9 / 282.4 = 0.77**、答案首字 0.74、工具段 0.45、 token 0.98。快在调得少(20 次 vs 40 次、27 轮 vs 38.5 轮),不是单次更快; · **A 线反过来 1.19** —— 没有组合工具时 HCA 退回 akshare 的三连, 工具段 54.8 s → 157.4 s。与 I1 A 线的 1.18 两轮独立复现。 还差多少:只剩 q3 / q5 的模型段(+1.54 s / +3.59 s)。q5 那个量与 I3 的 +3.84 s 对得上(P2-23 拿到第二份证据),已知杠杆 U-23 只够补五分之一。 出字段慢 1.52 倍不是可优化项 —— 写了 1.74 倍的字,每字耗时反而更快。 hook 单独直测:每次工具调用 32.8 ms、每个提示 16.5 ms,十题合计约 0.85 s(0.4%)。 连带更正三处既有结论:对比文档 §3 开头改写并新增 §3.-2、§3.-1 的墙钟与 token 两行打上注记、I1 报告开头补一段口径更正(四维分不受影响,两边是对称地没有 用户上下文;速度与成本偏乐观)。待办池加 P1-28 / P2-24 / P2-25 / P2-26, P2-23 与 U-23 补新证据。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(i2): 上游 PR 已提交 #1106,并更正 §5.4 的构建口径(musl→gnu) - fork agentpit-io/atomcode 已建,feat/domain-persona 提交 039752efb, 在 v5.1.0 上开发、rebase 到上游 main 再提,零冲突;PR 正文与 docs/fork-patch/PR.md 一字不差。 - 报告 §5.4 原来照抄上游 CI 写的是 musl 目标,那是抄错的 —— 实际用的是默认 gnu 三元组, 理由(官方发布件本身是 glibc 链接的)现在写进报告,不只留在 fork-build/build.sh 的注释里。 | 1 个月前 | |
docs(i3): 两台部署升级到 v0.2.1 并各跑一次真浏览器(5/5)+ 升级撞出的密钥缺陷归档 测试机(rsync + 只重建 daemon 镜像 + 重叠 fork 层)与香港(install.sh --upgrade --ref v0.2.1 + 重叠 fork 层)都在 v0.2.1、MCP 10/10、网页 200; 两台都核过容器里 persona.md 与 .atomcode.md 真的换成了改对版。 真浏览器各发一轮真实对话:测试机评分 78、香港评分 76,末尾免责三句齐全,5/5。 顺带记下:升级会重建 daemon 基础镜像,**fork 那一层就旧了**,up.sh 会警告 但不会自动重叠 —— 不补跑 switch-to-fork.sh 的表现是「代码更新了模型行为没变」。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
fix(m5): 上游差异抽取器会把「枚举改名」抽成「无变化」—— 最危险的那种假阴性 对抗性自测:把 v5.1.0 源码里的 pub enum HookEvent 改成 HookEventKind (模拟上游一次重构),抽取器**照样抽出 8 个变体**,报告写「hook 面无变化」。 换底座的人看到一片绿就换了。 两个根因,都在 brace_block(): · enum\s+HookEvent\s* 会匹配上 enum HookEventKind 的**前缀**, 然后 find("{") 跨过 Kind 找到后面的 {; · find("{", ...) 本来就能跨几百行抓到一个毫不相干的块 (比如声明其实是 type HookEvent = ...;)。 加两道闸:匹配末尾不许切在标识符中间;{ 与声明头之间只允许泛型 / where / 空白这类字符。四处调用方的正则补 \b。 加固后 SSE 载荷那处先坏了一次(它故意用宽松正则扫 item 原文,会先匹配到 文档注释里的大写词 /// Persistence warning:,新闸一拦就变成「(无字段)」—— 等于把载荷字段静默丢掉)。改成在去掉注释/属性的正文上按变体名精确匹配。 **对真实数据行为保持**:v5.1.0 四个面的事实清单与加固前逐字一致; 两组正式差异报告重跑,除时间戳与临时目录路径外无变化。 对抗复验:HookEvent / LiveWireEvent 改名 → rc=3 并如实写 !! 抽取失败; struct Skill / McpServerConfig / McpConfigSource 改名 → 作为 diff 行可见 (这类是「条目」不是「容器」,本来就该由 diff 体现,不是失败)。 补 3 条单测,tools/tests 194 → 197 条。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(i4): 报告收口 —— 运行次数改成实测的 399、两处结论收窄、补修好前后的同题对照表 三处订正,都是自己复核时发现说过头了: 1. 「400 次有效运行」→ **399 次有产出记录**(i4-b 199 + i4-a 120 + 空载 40 + 40), 另有 1 次社区版 q9 撞 600 s 上限没产出,预热 18 次不计。三份文档一起改。 2. 「首字两条线都领先」后面补清楚:换成「答案真正开始出字」这个口径, B 线 0.74 领先、**A 线 1.16 落后** —— 先说一句在干什么两条线都成立, 答案来得更早只在发行形态下成立。 3. 「B 线 0.77 与 I1 1.057 之差主要来自身份缺陷」收窄为:跨轮绝对值本来就不能相减 (代码 v0.2.0→v0.2.1、还有 U-19 的漂移),但身份这一项**方向明确**、只会让 社区版偏快;要比就比同一批次内的同题对照。 并把那张同题对照表补进 §6.1:只有真正用到用户域数据的题才变(q2 4.12 倍), q8 那个 0.50 单独说明是工具段波动、与身份无关(中位与 P90 同向)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m2): 用真实渲染的系统提示验证开关生效;M2 报告骨架与证据落盘 - coding-bias-analysis §2.3:从 /live 第一帧 snapshot dump 出模型真正看到的 三条 system 消息(20855 / 7199 / 1450 字符)。同时证实四件事:四个开关真的 生效(TASK TRACKING / ASKING THE USER / MEMORY / DELEGATING 全不见了)、 ATOMGIT TOOLS 在(原标「未测」)、CODE REVIEW 关不掉、没有 GIT STATUS 段 - context hook 的注入用会话 rewind.json 的 prompt_preview 验证(/live 的 user 事件回显的是请求原文,看那个会误以为没注入) - docs/eval/{prompt-size,smoke}/ 原始记录入库(已扫过无密钥) - docs/开发文档/M2-成果与测试报告.md:A/B 与 fork 两节留空待跑 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m5): /live 的 SSE 事件补上「枚举 28 种 vs 实际抓到 11 种」的区分 daemon-api.md 只列了本轮抓到的 11 种,README 又把 /chat 的 22 种写成 「22 种 SSE 事件」—— 接第三方前端的人照着做兜底会漏掉 17 种。 现在两边都写清楚:抓到 11 种(有证据),枚举里 28 种(upstream_diff 从 v5.1.0 源码抽的),**没抓到不等于没有**,不认识的 type 忽略不要抛错。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m5): 演示脚本里那条「瞎编数字」的答复按 v0.1.1 的实际做法改写 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs: fork-patches 状态补上「已上两台部署」与切换/回滚方式 | 1 个月前 | |
docs(m4): 对齐文档里的数字与措辞(25 条 hook 用例、163 条单测、五组 hook) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
feat(i3): 「按结构卡」改对并留下 + U-20 分档实测答掉「schema 吃多少时间」 任务书两件事都做完,**验收口径没达到**:逐题「墙钟 ≤ 社区版×1.05」**1/5**、 D **22.2 / 25**(目标 5/5 与 ≥ 24)。守住的:**A 25.0 / C 25.0 一分没掉**、 五道题的工具调用次数全部 ≤ 社区版。 **本轮最要紧的产出不是分数,是一个反面事实**:I2 发布的那一版配置(opt3) 在同一台机器上原样重测,只有 D **21.8** / 逐题 **1 的 5**(I2 记的是 23.2 / 2 的 5), 配置一个字没改。而社区版那一侧没有跟着一起慢 —— 漂的是 HCA 这种大请求在不同 时段拿到的服务质量。**性能数字跨天不可比**,已写进报告 §1、对比文档、 docs/eval/summary.json 与待办池 U-19。评测因此改成每档拆两段、两档交错、 每题 12 遍(6 遍时 q3 一度量到 1.51,12 遍是 1.19 —— 差别全是抽样)。 ## 一、「按结构卡」按三条改对(I2 §2.9.4 那一版是按护栏回退的) 1. 题面点名要的不在可砍范围:包含式白名单「只列题面点名要的指标」改成排除式 「题面点名要的指标**一项都不能少**」(I2 那句正是 q2 把持仓整段删掉的原因); 2. 风险提示段单独给一行「必须原样附上、**不算额外段**、不计入字数上限」; 3. 篇幅只卡铺陈与重复解释 —— **把卡内容条数的规则整个删掉** (依据「最多 4 条」、风险项「最多 3 条」→「每条 ≤ 1 句、条数不限」)。 实测(每题 12 遍,同一天同机的 opt3 对照档):**出字五题全降 474~1 441 ms**、 墙钟四题降(−494 ~ −1 264 ms)一题持平。护栏**全量逐次核**(不靠人工抽样): q2 持仓成本价 **12/12**(I2 坏卡是 2/4)、免责段 **59/60**(对照档 58/60)。 人工评分 A 25.0 / C 25.0。**处置:留下。** 如实写两处:① 出字降幅大于「少写字数 × 2.3 ms/字」,每字单价本身也降了 (2.89 → 2.30 ms),网关回的 completion_tokens 在这批记录里是坏的,没查出来, **只报测到的不给归因**;② 买入日期从 7/12 掉到 3/12 —— 不扣分但确实少写了(P2-22)。 ## 二、U-20:工具 schema 体积分档实测(五臂 × 每臂 26 次) 人设一个字不动、只改工具清单,因变量取 shim 追踪里的上游首字, **自变量与它记在同一行**(这是比 I2 §4.5「两次实验相减」硬的地方): 62 个工具 62 732 字节 → 3 799 ms 39 个(发行版默认)39 642 → 3 576 ms 5 个 9 475 → 3 229 ms 2 个(全关) 1 944 → 3 223 ms 最小二乘:3 173 ms + 10.0 ms/千字节,R² 0.99 只动正文那一格(工具清单逐字节相同)是 **6.0 ms/千字节** —— 同一量级。 **所以准确的说法是「吃时间的是请求大小本身」**,不是 I2 猜的「是 schema 不是正文」; I2 §2.7b 的「省 token 不省时间」与本轮不一致,两条都留档、不替它下结论。**U-20 关闭。** **有因果,但本轮没有把白名单按场景细分**,理由用数说:天花板 347 ms/轮 补不上任何一道题(q3 还差 1.5 s、q4 1.4 s、q5 3.7 s),而实现要动内核两处 (技能级 allowed-tools 上游解析了却从来没被读过、会话级白名单要在引擎里加过滤), 与本轮「不动架构」和红线 7「只提一个 PR」冲突。处置:部署级用法写进运维文档 并**明标没做过端到端 A/C 评测**,排进待办池 U-23,并把那张四档表补进 questions-for-atomgit 的 A7(M5 已记的那条,本轮只是给了它一个可量化的用处)。 ## 三、本轮自己做错、又自己查出来的四条(报告 §6) 1. U-20 第一批整批作废:改完 compose 与 i2-up.sh **之后没重新 rsync**, t-full 悄悄退回成 t-rel(两臂量出一模一样的 39 个工具); 2. 合并两段批次时只改了文件名没改记录里的 id —— score.py 按 id 建表, 119 份塌成 60 份,**而且后读到的覆盖先读到的,人工评分会贴到别的运行上**。 这类错不报错,报告照样好看; 3. 第一批 6 遍差点把改对版判成性能回归(q3 1.51 / q4 1.58); 4. 探针把机器压到负载 6~7 还在计时(换臂要冷启 10 个 MCP),已加静置。 顺带修两处配置坑,**对既有批次都是惰性的**:compose 的 ${HCA_TOOLS_DENY:-默认} 空值会掉回默认清单(改成 ${VAR-默认});i2-up.sh 的 unset HCA_LLM_TOOL_DENY 加了 HCA_KEEP_SHIM_DENY=1 逃生口。 单测 330 passed + shim 46;人设那条反向用例改成钉三条护栏, **该失败时会失败当场验过**。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
feat(brand): 模型选择器显示真实模型名、Hunter 改 Hunter-AtomCode、页脚加 GitCode 开源地址与 AtomGit logo 三件事,都在香港环境(http://34.92.73.207:3200)用真浏览器验过(9/9)。 一、模型选择器显示真实模型名 原来右下角与下拉里显示的是请求用的模型 ID hunter-chat(全局生效)、分组标题是 provider id ONEAPI,用户看不懂背后是什么模型。改成 Gemini 3.8 Flash(全局生效) 与 Google Gemini。 真实模型是**实测**出来的:POST /chat/completions 的 model 字段回显的是别名 hunter-chat,从那里看不出真相;GET .../llm/v1/models 回读到 hunter-chat 的 display_name 是 Gemini 3.8 Flash(hunter-deep 是 Gemini 3.1 Pro),同一时刻让 模型自报身份得到 gemini-3.8-flash,两条互相印证。 做法是新增两个运行时环境变量 HCA_LLM_MODEL_LABEL / HCA_LLM_PROVIDER_LABEL (apps/web/app/lib/atomcode/labels.ts): - **请求用的模型 ID 一个字没改**,返回体里 id 仍是 hunter-chat,只改给人看的 name; - 不配置就显示原始 ID,代码里没有任何内置猜测 —— 自建 OneAPI 的同名模型可能是别的 东西,写死一个名字就是红线 1 说的冒充; - install.sh 按通道给默认值(oneapi 且网关就是官方地址才填 Gemini 名字,自建留空; official/ollama 用用户填的模型名),另加 --model-label / --provider-label; - 前端只动一行样式:分组标题去掉 uppercase,否则会喊成「GOOGLE GEMINI」。 二、Hunter → Hunter-AtomCode 页头、<title>、侧栏、登录/注册/设置/总览、公开分享页页头共 12 个文件;中文名「猎鹿人」 保留;**法律页里对上游 Hunter Community 的版权表述不动**。侧栏顺带修了名字变长带来的 换行/截断(改成上下两行),验收脚本把「不换行、不被省略号截断」钉住了。 三、开源地址 + AtomGit logo 页脚那行原来指向上游 hunter-community 的「GitHub」链接,换成本发行版的 GitCode 主仓 https://gitcode.com/agentpit-io/huntercode-atomcode,旁边放 AtomGit logo(按高度 20px 等比,63×20),GitHub 本仓留作次要链接;设置→关于同一个地址(logo 24px)并补上 上游出处。页脚是 fixed 的全站底栏,不挤占对话区。关于卡片里那行写死的 版本:v0.1.0-alpha (P4 provider layer) 是从上游带过来的、和本发行版对不上,去掉。 验收:tsc --noEmit 0 错;适配层单测 43 pass(原 39 + 显示名 4 条);真浏览器 9/9, **一句对话都没发**(M5 的 4 小时浸泡同时在跑,不能插一轮生成),断言只认被测系统这次 产出的东西(logo 查 naturalWidth/naturalHeight 真解码出像素、旧文案 hunter-chat/ONEAPI 必须消失、侧栏后缀 scrollWidth 不超可见宽度)。香港只替换了 web 一个容器,三次替换都 卡在浸泡两轮之间(r015/r016、r020/r021、r023/r024),每次 10 秒内 healthy,浸泡未中断。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m5): 出 docs/stability-report.md —— 两跑合并,各自的限制写明 主跑(测试机,跑的就是要发布的 v0.1.1)3 小时 03 分 / 38 轮,被外部 docker 重启打断(今天第 4 次);旁证跑(香港)4.00 小时 / 48 轮 / 48 成功,但 20:06 起 hca-web 镜像被另一方重建过。两跑都不完美,合起来才够用,结论里凡是只有一跑 支持的都写明出处。 顺带修了生成器一个真 bug:§2 循环里的展示字符串变量与目录 Path 同名(都叫 src), 把它覆盖掉了 —— 报告最后一行打出「原始记录: 全程(未重起)/rounds.jsonl」, 照着去找只会找到一个不存在的目录。改名 + 补一条回归测试(219 条)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m5): 补 E4 —— 被 hook 拒绝的调用,审计里记不下是哪个工具 M5 回归时从真实部署的 audit.jsonl 里翻出来的(不是构造的):guard 拒掉一条 内联爬虫命令之后,PostToolUseFailure 照常触发、tool_response 里原样带着我们的 拒绝说明,**但 tool_name 是缺的**。同一份 hook 在成功的 PostToolUse 上每次都 拿得到 tool_name,所以不是解析错了。 对以「可审计」为卖点的发行版,"哪个工具被拦了"恰恰是最该留痕的一条。 工具名在 guard.jsonl 里有,但两个文件只能靠时间戳对,配不出唯一解 —— 所以汇总 issue 里把它引到更一般的请求上:两个事件都给一个 call_id。 questions 33→34 条,汇总 issue 32→33 条。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m5): 发布说明 v0.1.1、适配层设计补出口守卫、开发者指南补 upstream_diff、运维补会话增长与大小闸 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m4): 发布说明 v0.1.0 + M4 报告前三节 + 回归报告骨架 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m5): 发布说明补第 7/8 条(Ollama 通道三处修复、探活判据) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m5): 发布说明 v0.1.2 + 报告 §9(含一处流程失误:tag 打早了) Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs: v0.2.0 发布说明补「升级之后第一轮可能失败,重发一次即可」(P0-10 的实测处置) | 1 个月前 | |
docs: v0.2.1 发布说明补两台部署的验证结果、tag 指向哪个提交、以及那个密钥缺陷的升级提示 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(i4): 报告收口 —— 运行次数改成实测的 399、两处结论收窄、补修好前后的同题对照表 三处订正,都是自己复核时发现说过头了: 1. 「400 次有效运行」→ **399 次有产出记录**(i4-b 199 + i4-a 120 + 空载 40 + 40), 另有 1 次社区版 q9 撞 600 s 上限没产出,预热 18 次不计。三份文档一起改。 2. 「首字两条线都领先」后面补清楚:换成「答案真正开始出字」这个口径, B 线 0.74 领先、**A 线 1.16 落后** —— 先说一句在干什么两条线都成立, 答案来得更早只在发行形态下成立。 3. 「B 线 0.77 与 I1 1.057 之差主要来自身份缺陷」收窄为:跨轮绝对值本来就不能相减 (代码 v0.2.0→v0.2.1、还有 U-19 的漂移),但身份这一项**方向明确**、只会让 社区版偏快;要比就比同一批次内的同题对照。 并把那张同题对照表补进 §6.1:只有真正用到用户域数据的题才变(q2 4.12 倍), q8 那个 0.50 单独说明是工具段波动、与身份无关(中位与 P90 同向)。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(dev): web 单测那条命令在 worktree 里跑不起来 —— 补上怎么跑与条数更正(46 → 50) node --test apps/web/tests/atomcode.test.ts 要 apps/web/node_modules,而 node_modules 被 .gitignore 挡着、不随 git worktree 走 —— 在 wt-i2 里跑直接 ERR_MODULE_NOT_FOUND: Cannot find package 'undici'。这是 R-15 / R-20 那一族 (文档里写着取证命令、跑不通)的又一例,所以把办法写进去:软链主工作树那份、跑完删掉。 顺带更正条数:M5 合入之后是 50 条(原写 46),刚在 wt-i2 里实跑 50 passed / 0 fail。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
docs(m0): 仓库骨架与 M0 预研成果文档 建仓: - README(中文 + 英文段):定位、状态、架构图、与 hunter-community / AtomCode 的关系 - LICENSE(Apache-2.0)、NOTICE(保留 AtomCode MIT 与 hunter-community 版权与商标条款) - .gitignore、pins.lock(AtomCode v5.1.0 · 双重校验方式与实测 sha256) 文档: - docs/daemon-api.md · daemon API 实测手册,52 个端点 + 19 种 SSE 事件 + 真实样例 - docs/来源说明.md · 导入清单、不同步声明、9 个 MCP 的来源与缺口核查 - docs/questions-for-atomgit.md · 14 条上游文档与实现不符 / 语义待确认 - docs/design/ · 开发计划 v0.2 与技术方案 v0.1 - docs/开发文档/M0-预研结论.md · 每项结论 + 证据 + 对 M1-M5 的影响 - docs/开发文档/总进度表.md、待办池.md - docs/evidence/M0/ · 实测原始输出(SSE 抓包、hook 输入、MCP 返回) - tools/probe/ · 可复现的探针脚本 主要实测结论: - AtomCode 不需要 llm-shim,工具 schema 经 hunter 网关(Gemini 3.8)直接可用 - POST /chat 不挂载 MCP 工具,只有 GET /live 挂载(36 vs 39 个工具) - plan 档拦写类工具但拦不住 bash 写文件;hook 的 deny 能压住 bypass 档 - 6 个 hunter 系 MCP 全部拿到,无私有仓缺口 - /chat 多工作目录并发无串话;/live 只服务一个工作目录 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 | |
feat(i3): 「按结构卡」改对并留下 + U-20 分档实测答掉「schema 吃多少时间」 任务书两件事都做完,**验收口径没达到**:逐题「墙钟 ≤ 社区版×1.05」**1/5**、 D **22.2 / 25**(目标 5/5 与 ≥ 24)。守住的:**A 25.0 / C 25.0 一分没掉**、 五道题的工具调用次数全部 ≤ 社区版。 **本轮最要紧的产出不是分数,是一个反面事实**:I2 发布的那一版配置(opt3) 在同一台机器上原样重测,只有 D **21.8** / 逐题 **1 的 5**(I2 记的是 23.2 / 2 的 5), 配置一个字没改。而社区版那一侧没有跟着一起慢 —— 漂的是 HCA 这种大请求在不同 时段拿到的服务质量。**性能数字跨天不可比**,已写进报告 §1、对比文档、 docs/eval/summary.json 与待办池 U-19。评测因此改成每档拆两段、两档交错、 每题 12 遍(6 遍时 q3 一度量到 1.51,12 遍是 1.19 —— 差别全是抽样)。 ## 一、「按结构卡」按三条改对(I2 §2.9.4 那一版是按护栏回退的) 1. 题面点名要的不在可砍范围:包含式白名单「只列题面点名要的指标」改成排除式 「题面点名要的指标**一项都不能少**」(I2 那句正是 q2 把持仓整段删掉的原因); 2. 风险提示段单独给一行「必须原样附上、**不算额外段**、不计入字数上限」; 3. 篇幅只卡铺陈与重复解释 —— **把卡内容条数的规则整个删掉** (依据「最多 4 条」、风险项「最多 3 条」→「每条 ≤ 1 句、条数不限」)。 实测(每题 12 遍,同一天同机的 opt3 对照档):**出字五题全降 474~1 441 ms**、 墙钟四题降(−494 ~ −1 264 ms)一题持平。护栏**全量逐次核**(不靠人工抽样): q2 持仓成本价 **12/12**(I2 坏卡是 2/4)、免责段 **59/60**(对照档 58/60)。 人工评分 A 25.0 / C 25.0。**处置:留下。** 如实写两处:① 出字降幅大于「少写字数 × 2.3 ms/字」,每字单价本身也降了 (2.89 → 2.30 ms),网关回的 completion_tokens 在这批记录里是坏的,没查出来, **只报测到的不给归因**;② 买入日期从 7/12 掉到 3/12 —— 不扣分但确实少写了(P2-22)。 ## 二、U-20:工具 schema 体积分档实测(五臂 × 每臂 26 次) 人设一个字不动、只改工具清单,因变量取 shim 追踪里的上游首字, **自变量与它记在同一行**(这是比 I2 §4.5「两次实验相减」硬的地方): 62 个工具 62 732 字节 → 3 799 ms 39 个(发行版默认)39 642 → 3 576 ms 5 个 9 475 → 3 229 ms 2 个(全关) 1 944 → 3 223 ms 最小二乘:3 173 ms + 10.0 ms/千字节,R² 0.99 只动正文那一格(工具清单逐字节相同)是 **6.0 ms/千字节** —— 同一量级。 **所以准确的说法是「吃时间的是请求大小本身」**,不是 I2 猜的「是 schema 不是正文」; I2 §2.7b 的「省 token 不省时间」与本轮不一致,两条都留档、不替它下结论。**U-20 关闭。** **有因果,但本轮没有把白名单按场景细分**,理由用数说:天花板 347 ms/轮 补不上任何一道题(q3 还差 1.5 s、q4 1.4 s、q5 3.7 s),而实现要动内核两处 (技能级 allowed-tools 上游解析了却从来没被读过、会话级白名单要在引擎里加过滤), 与本轮「不动架构」和红线 7「只提一个 PR」冲突。处置:部署级用法写进运维文档 并**明标没做过端到端 A/C 评测**,排进待办池 U-23,并把那张四档表补进 questions-for-atomgit 的 A7(M5 已记的那条,本轮只是给了它一个可量化的用处)。 ## 三、本轮自己做错、又自己查出来的四条(报告 §6) 1. U-20 第一批整批作废:改完 compose 与 i2-up.sh **之后没重新 rsync**, t-full 悄悄退回成 t-rel(两臂量出一模一样的 39 个工具); 2. 合并两段批次时只改了文件名没改记录里的 id —— score.py 按 id 建表, 119 份塌成 60 份,**而且后读到的覆盖先读到的,人工评分会贴到别的运行上**。 这类错不报错,报告照样好看; 3. 第一批 6 遍差点把改对版判成性能回归(q3 1.51 / q4 1.58); 4. 探针把机器压到负载 6~7 还在计时(换臂要冷启 10 个 MCP),已加静置。 顺带修两处配置坑,**对既有批次都是惰性的**:compose 的 ${HCA_TOOLS_DENY:-默认} 空值会掉回默认清单(改成 ${VAR-默认});i2-up.sh 的 unset HCA_LLM_TOOL_DENY 加了 HCA_KEEP_SHIM_DENY=1 逃生口。 单测 330 passed + shim 46;人设那条反向用例改成钉三条护栏, **该失败时会失败当场验过**。 Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> | 1 个月前 |
| 文件 | 最后提交记录 | 最后更新时间 |
|---|---|---|
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 | ||
| 1 个月前 |