diff --git a/SESSION-HANDOFF.md b/SESSION-HANDOFF.md index 911d011e9..5c0c4e20b 100644 --- a/SESSION-HANDOFF.md +++ b/SESSION-HANDOFF.md @@ -2,24 +2,26 @@ > 状态:当前接班入口。旧的批量生产 session 快照已失效,不得用于恢复自动循环;持续运行使用只读 supervisor + 有界 writer epoch。 -## 2026-07-14 论文生产与部署 Epoch Contract +## 2026-07-14 新增 4 篇论文与部署 Epoch Contract - status:`running` -- objective:在当前用户明确授权下,新研究并发布 5 篇公开 arXiv 论文笔记,覆盖 agent planning、SWE skills、context engineering、MCP tool use、computer-use benchmark 五条相邻主线。 -- scope:允许新增 `src/content/docs/papers/*.md`、`data/review-receipts/papers/*.json`,以及由构建/atlas/索引/部署门禁确定性更新的派生文件;不改既有笔记正文,不恢复旧批量循环,不修改 policy/threshold。 -- activated_by:`explicit-user-request-2026-07-14-new-5-papers-full-deploy` +- objective:在当前用户明确授权下,新研究并发布 4 篇公开 arXiv 论文笔记:`OSWorld`、`ToolBench-X`、`MemGym`、`SWE-Bench-CL`,补齐 agent 环境、工具可靠性、长程记忆与 SWE 持续学习四条主线。 +- scope:允许新增 `src/content/docs/papers/*.md`、`data/review-receipts/papers/*.json`,以及由 atlas / note-index / 公开计数文案 / handoff / 部署门禁确定性更新的文件;不改候选队列,不改 policy/threshold,不改旧论文正文语义。 +- activated_by:`explicit-user-request-2026-07-14-new-4-papers-full-deploy` - review_after:`2026-07-14` - acceptance_checks: - `source "$HOME/.nvm/nvm.sh" && nvm use 22.23.1 >/dev/null && npm run status:supervisor` - - `source "$HOME/.nvm/nvm.sh" && nvm use 22.23.1 >/dev/null && STUDY_CHANGED_FROM= npm run verify:ci` + - `source "$HOME/.nvm/nvm.sh" && nvm use 22.23.1 >/dev/null && node scripts/quality-gate.mjs src/content/docs/papers/{osworld,toolbench-x,memgym,swe-bench-cl}.md` + - `source "$HOME/.nvm/nvm.sh" && nvm use 22.23.1 >/dev/null && npm run audit:content-contract` + - `source "$HOME/.nvm/nvm.sh" && nvm use 22.23.1 >/dev/null && STUDY_CHANGED_FROM=f487efbcd135faf1e1de9fcd2ccf043437a244fe npm run verify:ci` - `git diff --check` - - GitHub PR/merge/deploy checks for the final pushed branch. -- budget:最多 2 个内容小批次(按政策拆为 4 + 1)、5 篇新增 paper、1 个可写切片、1 个本地 writer、1 次部署窗口。 -- external_outcome:5 篇新增论文笔记进入公开 study 站点,并通过 GitHub Pages 线上部署验收;验证状态保持 `UNVERIFIED`,不声明人工审阅或真实执行复现。 -- stop_conditions:规范 Node/npm 不可用;内容契约或红线审计失败且无法在本 scope 内修复;需要修改 policy/threshold、旧正文、候选队列或隐私敏感内容;远端 CI/Pages 连续失败且需要新权限;用户停止。 + - GitHub PR / merge / Pages deploy checks for the final pushed branch. +- budget:1 个内容小批次、4 篇新增 paper、1 个可写切片、1 个本地 writer、1 次部署窗口。 +- external_outcome:4 篇新增论文笔记进入公开 study 站点,并通过 GitHub Pages 线上部署验收;验证状态保持 `UNVERIFIED`,不声明实际运行论文 benchmark。 +- stop_conditions:规范 Node/npm 不可用;内容契约或红线审计失败且无法在本 scope 内修复;需要修改 policy/threshold、候选队列或隐私敏感内容;远端 CI/Pages 连续失败且需要新权限;用户停止。 - superseded_by:`none` -## 当前接班点 +## 上一轮接班背景(保留历史) - supervisor 状态:`WAIT_HEALTHY`;`scale-budget-exceeded` 已通过批准的 legacy audit review 聚合迁移解除,当前无 hard blocker。 - scope:launch scope 内的本地 workflow 文档、测试、审计、工具链和站点非内容代码质量维护。 @@ -48,6 +50,26 @@ - 下一条命令:`source "$HOME/.nvm/nvm.sh" && nvm use 22.23.1 >/dev/null && npm run status:supervisor`;PR 状态用 GitHub API 或浏览器查看 `https://github.com/estelledc/study/pull/26`。 - 下一位独立 agent 必须先读 `AGENTS.md`,建立 supervisor / epoch contract;不得自动恢复旧数量循环。 +## 当前接班点:2026-07-14 4 篇论文本地执行状态 + +- 起始 ref:`f487efbcd135faf1e1de9fcd2ccf043437a244fe`(origin/main,PR #29 merge commit)。 +- 当前分支:`study/papers-20260714-four-more`。 +- dry-run 结果:`npm run round:dispatch -- --rewrite 0 --new 4 --dry-run` 因 `papers-new short: got 0, need 2` 被阻止;本轮未修改候选队列,改走显式授权的手工 Publication 路径。 +- 已完成切片: + 1. 规范工具链下 `status:supervisor` 从 Node 版本 blocker 恢复到 `WAIT_HEALTHY`; + 2. 新增 4 篇 `study-v2` paper note,均为 `STATIC_ANALYSIS` / `UNVERIFIED`; + 3. 新增 4 个 `study-review-receipt-v1` 静态 review receipt,receipt digest 已通过 `verifyReceiptAgainstNote` 校验; + 4. `npm run atlas` 刷新 `data/note-index.json`、`papers-atlas.md` 与 agent 主题 atlas chunk; + 5. 同步公开规模文案:论文 1023、项目 961、总数 1984。 +- 本地已通过: + - `node scripts/quality-gate.mjs` 针对 `osworld`、`toolbench-x`、`memgym`、`swe-bench-cl` 四篇; + - `npm run audit:counts`; + - `npm run audit:content-contract`; + - `git ls-files -co --exclude-standard -z | node scripts/audit-public-redlines.mjs --stdin0`; + - `npm run build:strict -- --log /tmp/study-build-check.log`; + - `git diff --check`。 +- 剩余动作:提交当前变更,提交后重跑 `STUDY_CHANGED_FROM=f487efbcd135faf1e1de9fcd2ccf043437a244fe npm run verify:ci`,随后推送分支、创建 PR、合并并等待 Pages deploy。 + ## 当前政策 - 不以内容总数作为本轮目标。 diff --git a/data/note-index.json b/data/note-index.json index b07f815dc..92d87edab 100644 --- a/data/note-index.json +++ b/data/note-index.json @@ -3,16 +3,16 @@ "taxonomy_version": "taxonomy-v1", "stats": { "summary": { - "total": 1980, - "classified": 1933, + "total": 1984, + "classified": 1937, "unclassified": 47, "unknown_difficulty": 1975, "empty_description": 1970 }, "by_area": { "papers": { - "total": 1019, - "classified": 1000, + "total": 1023, + "classified": 1004, "unclassified": 19, "unknown_difficulty": 1014, "empty_description": 1013 @@ -19237,6 +19237,38 @@ "chunk_route": "/study/atlas/papers/topic-papers-agents-and-llm-systems-01/" } }, + { + "id": "papers::memgym", + "area": "papers", + "slug": "memgym", + "title": "MemGym — 给长程 agent memory 做一间健身房", + "description": "用 MemGym 区分聊天记忆、执行记忆和可迁移的 agent 经验。", + "difficulty": "intermediate", + "canonical_topics": [ + "papers-agents-and-llm-systems" + ], + "classification": { + "state": "classified", + "source": "frontmatter-category", + "topic_id": "papers-agents-and-llm-systems", + "matched_category": "agent", + "raw_category": "AI Agent / Memory" + }, + "trust": { + "contract_state": "v2", + "verification_status": "UNVERIFIED" + }, + "freshness": { + "state": "NOT_EVALUATED", + "reviewed_at": "2026-07-14", + "review_after": null + }, + "route": "/study/papers/memgym/", + "atlas": { + "chunk_id": "topic-papers-agents-and-llm-systems-01", + "chunk_route": "/study/atlas/papers/topic-papers-agents-and-llm-systems-01/" + } + }, { "id": "papers::mencius-2008", "area": "papers", @@ -22074,6 +22106,38 @@ "chunk_route": "/study/atlas/papers/topic-papers-agents-and-llm-systems-01/" } }, + { + "id": "papers::osworld", + "area": "papers", + "slug": "osworld", + "title": "OSWorld — 把 GUI agent 放进真正的电脑里考试", + "description": "用 OSWorld 理解为什么电脑操作 agent 不能只在网页或脚本环境里评测。", + "difficulty": "intermediate", + "canonical_topics": [ + "papers-agents-and-llm-systems" + ], + "classification": { + "state": "classified", + "source": "frontmatter-category", + "topic_id": "papers-agents-and-llm-systems", + "matched_category": "agent", + "raw_category": "AI Agent / Computer Use" + }, + "trust": { + "contract_state": "v2", + "verification_status": "UNVERIFIED" + }, + "freshness": { + "state": "NOT_EVALUATED", + "reviewed_at": "2026-07-14", + "review_after": null + }, + "route": "/study/papers/osworld/", + "atlas": { + "chunk_id": "topic-papers-agents-and-llm-systems-01", + "chunk_route": "/study/atlas/papers/topic-papers-agents-and-llm-systems-01/" + } + }, { "id": "papers::ot-1989", "area": "papers", @@ -28747,6 +28811,38 @@ "chunk_route": "/study/atlas/papers/topic-papers-agents-and-llm-systems-01/" } }, + { + "id": "papers::swe-bench-cl", + "area": "papers", + "slug": "swe-bench-cl", + "title": "SWE-Bench-CL — coding agent 不能只刷静态题", + "description": "用 SWE-Bench-CL 理解软件工程 agent 的持续学习、迁移和灾难性遗忘。", + "difficulty": "intermediate", + "canonical_topics": [ + "papers-agents-and-llm-systems" + ], + "classification": { + "state": "classified", + "source": "frontmatter-category", + "topic_id": "papers-agents-and-llm-systems", + "matched_category": "agent", + "raw_category": "AI Agent / Software Engineering" + }, + "trust": { + "contract_state": "v2", + "verification_status": "UNVERIFIED" + }, + "freshness": { + "state": "NOT_EVALUATED", + "reviewed_at": "2026-07-14", + "review_after": null + }, + "route": "/study/papers/swe-bench-cl/", + "atlas": { + "chunk_id": "topic-papers-agents-and-llm-systems-01", + "chunk_route": "/study/atlas/papers/topic-papers-agents-and-llm-systems-01/" + } + }, { "id": "papers::swe-skills-bench-2026", "area": "papers", @@ -29925,6 +30021,38 @@ "chunk_route": "/study/atlas/papers/topic-papers-compilers-and-programming-language-theory-02/" } }, + { + "id": "papers::toolbench-x", + "area": "papers", + "slug": "toolbench-x", + "title": "ToolBench-X — 工具会坏时,agent 还能不能把事做完", + "description": "用 ToolBench-X 理解 tool-use benchmark 为什么要模拟规格漂移、调用错误、执行失败和结果冲突。", + "difficulty": "intermediate", + "canonical_topics": [ + "papers-agents-and-llm-systems" + ], + "classification": { + "state": "classified", + "source": "frontmatter-category", + "topic_id": "papers-agents-and-llm-systems", + "matched_category": "agent", + "raw_category": "AI Agent / Tool Use" + }, + "trust": { + "contract_state": "v2", + "verification_status": "UNVERIFIED" + }, + "freshness": { + "state": "NOT_EVALUATED", + "reviewed_at": "2026-07-14", + "review_after": null + }, + "route": "/study/papers/toolbench-x/", + "atlas": { + "chunk_id": "topic-papers-agents-and-llm-systems-01", + "chunk_route": "/study/atlas/papers/topic-papers-agents-and-llm-systems-01/" + } + }, { "id": "papers::toolformer", "area": "papers", @@ -62909,7 +63037,7 @@ "page": 1, "pages": 1, "route": "/study/atlas/papers/topic-papers-agents-and-llm-systems-01/", - "entries": 64 + "entries": 68 }, { "id": "topic-papers-ai-safety-and-interpretability-01", diff --git a/data/review-receipts/papers/memgym.json b/data/review-receipts/papers/memgym.json new file mode 100644 index 000000000..50bbe3ece --- /dev/null +++ b/data/review-receipts/papers/memgym.json @@ -0,0 +1,55 @@ +{ + "schema_version": "study-review-receipt-v1", + "generation": 1, + "predecessor_digest_sha256": null, + "note": { + "area": "papers", + "slug": "memgym", + "digest_sha256": "9939f45f2bd42198a5d78050f97acf1e28053d60bcaa7fafb3a4cfed290a9fb2" + }, + "source_revision": "arXiv:2605.20833v1", + "research_input_sha256": "4d7fd8d84bb0e51701d1bf50f44abac1732cf8935594c9a647ea90b69e8b382f", + "reviewers": [ + { + "role": "ZERO_BASE", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 89, + "warnings": [ + "Memory examples are manual toy traces; MemGym evaluation tracks were not executed." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "MANUAL_SIMULATION" + } + }, + { + "role": "ENGINEER", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 86, + "warnings": [ + "MemRM and memory-isolated score discussion is abstract-level; no reward model run was performed." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "NOT_APPLICABLE" + } + }, + { + "role": "ACADEMIC", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 85, + "warnings": [ + "Claims are constrained to arXiv metadata and public abstract text." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "NOT_APPLICABLE" + } + } + ], + "waivers": [], + "created_at": "2026-07-14T11:39:34.000Z" +} diff --git a/data/review-receipts/papers/osworld.json b/data/review-receipts/papers/osworld.json new file mode 100644 index 000000000..d15e2073e --- /dev/null +++ b/data/review-receipts/papers/osworld.json @@ -0,0 +1,55 @@ +{ + "schema_version": "study-review-receipt-v1", + "generation": 1, + "predecessor_digest_sha256": null, + "note": { + "area": "papers", + "slug": "osworld", + "digest_sha256": "0520c74cc4628692071bad26e15a8206fd649b0a780d0de49787c81d8173cbdb" + }, + "source_revision": "arXiv:2404.07972v2", + "research_input_sha256": "e155e4c3d6893198576ac46bc21a92f964f6fb49164692d0074161e0e057c385", + "reviewers": [ + { + "role": "ZERO_BASE", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 88, + "warnings": [ + "Computer-use explanation uses a toy file-copy task; OSWorld benchmark was not executed." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "MANUAL_SIMULATION" + } + }, + { + "role": "ENGINEER", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 86, + "warnings": [ + "Claims are limited to arXiv metadata, abstract, and static environment design reading." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "NOT_APPLICABLE" + } + }, + { + "role": "ACADEMIC", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 85, + "warnings": [ + "No independent reproduction of the reported success rates was performed." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "NOT_APPLICABLE" + } + } + ], + "waivers": [], + "created_at": "2026-07-14T11:39:34.000Z" +} diff --git a/data/review-receipts/papers/swe-bench-cl.json b/data/review-receipts/papers/swe-bench-cl.json new file mode 100644 index 000000000..b0c1624db --- /dev/null +++ b/data/review-receipts/papers/swe-bench-cl.json @@ -0,0 +1,55 @@ +{ + "schema_version": "study-review-receipt-v1", + "generation": 1, + "predecessor_digest_sha256": null, + "note": { + "area": "papers", + "slug": "swe-bench-cl", + "digest_sha256": "dbfd9c2cfbdc91196562156795e617cec5d303be7c1b7b230883dd70b1decc36" + }, + "source_revision": "arXiv:2507.00014v1", + "research_input_sha256": "b240b9b89e62a8096b2fa939ece3e983d34a5d49276e2b7c983a58af59fb8b24", + "reviewers": [ + { + "role": "ZERO_BASE", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 88, + "warnings": [ + "Continual-learning timeline is a manual toy example; SWE-Bench-CL framework was not executed." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "MANUAL_SIMULATION" + } + }, + { + "role": "ENGINEER", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 86, + "warnings": [ + "LangGraph and FAISS memory details are summarized from public arXiv metadata only." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "NOT_APPLICABLE" + } + }, + { + "role": "ACADEMIC", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 85, + "warnings": [ + "No independent reproduction of continual-learning metrics was performed." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "NOT_APPLICABLE" + } + } + ], + "waivers": [], + "created_at": "2026-07-14T11:39:34.000Z" +} diff --git a/data/review-receipts/papers/toolbench-x.json b/data/review-receipts/papers/toolbench-x.json new file mode 100644 index 000000000..c1a719760 --- /dev/null +++ b/data/review-receipts/papers/toolbench-x.json @@ -0,0 +1,55 @@ +{ + "schema_version": "study-review-receipt-v1", + "generation": 1, + "predecessor_digest_sha256": null, + "note": { + "area": "papers", + "slug": "toolbench-x", + "digest_sha256": "75446716639647a910f8daa1125de5d6416288462f08438989354adf9d343447" + }, + "source_revision": "arXiv:2606.25819v2", + "research_input_sha256": "dfe441438a312b98ad38dc3c9f6812246bc03e65d374b10ab7ff8f56b77e102a", + "reviewers": [ + { + "role": "ZERO_BASE", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 88, + "warnings": [ + "Hazard examples are manual simplifications; ToolBench-X tasks were not executed." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "MANUAL_SIMULATION" + } + }, + { + "role": "ENGINEER", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 87, + "warnings": [ + "Recovery strategy discussion is based on paper abstract and arXiv page, not local benchmark runs." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "NOT_APPLICABLE" + } + }, + { + "role": "ACADEMIC", + "reviewer_version": "study-static-review-20260714", + "decision": "PASS_WITH_NOTES", + "score": 85, + "warnings": [ + "The note does not verify dataset size or model scores beyond public arXiv metadata." + ], + "execution": { + "review_mode": "STATIC_REVIEW", + "code_mode": "NOT_APPLICABLE" + } + } + ], + "waivers": [], + "created_at": "2026-07-14T11:39:34.000Z" +} diff --git a/src/content/docs/about.md b/src/content/docs/about.md index 04078fc7e..7b83fd0a2 100644 --- a/src/content/docs/about.md +++ b/src/content/docs/about.md @@ -14,7 +14,7 @@ sidebar: 写到今天的硬数字: -- **1019 篇论文笔记** + **961 篇项目笔记**,合计 **1900+ 篇** +- **1023 篇论文笔记** + **961 篇项目笔记**,合计 **1900+ 篇** - 横跨 19 个主题:分布式系统 76 / 编程语言 76 / 数据库 47 / 操作系统 46 / 机器学习 44 / 区块链 44 / 后端 API 40 / 基础设施 38 / 网络协议 37 / 图形学 36 / 形式化方法 27 / 通信 27 / 信息检索 25 / Agent 24 / CLI 23 / NLP 11 / 编译器 11 / 等 - 近 30 天集中产出:基础设施(444 commits)、编译器与 PL(72)、自演化 Agent(10+ 新建)、分布式(47)、区块链(44) diff --git a/src/content/docs/atlas/papers/topic-papers-agents-and-llm-systems-01.md b/src/content/docs/atlas/papers/topic-papers-agents-and-llm-systems-01.md index 980e55117..be122b175 100644 --- a/src/content/docs/atlas/papers/topic-papers-agents-and-llm-systems-01.md +++ b/src/content/docs/atlas/papers/topic-papers-agents-and-llm-systems-01.md @@ -1,6 +1,6 @@ --- title: "智能体与 LLM 系统 · 论文 · 第 1 组" -description: "64 条 智能体与 LLM 系统 Atlas 分块" +description: "68 条 智能体与 LLM 系统 Atlas 分块" sidebar: hidden: true --- @@ -9,7 +9,7 @@ sidebar: [返回论文全景索引](/study/papers-atlas/) -本分块共 64 条,稳定上限为 100 条。 +本分块共 68 条,稳定上限为 100 条。 | 论文 | Slug | 难度 | 可信状态 | 简介 | |---|---|---|---|---| @@ -41,6 +41,7 @@ sidebar: | [MCP — 让一个 LLM 客户端能插任何外部能力的 USB 协议](/study/papers/mcp-spec/) | `mcp-spec` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [MCPWorld — API、GUI、混合 Computer Use 的统一测试床](/study/papers/mcpworld-2025/) | `mcpworld-2025` | intermediate | UNVERIFIED | MCPWorld 用 white-box apps 统一评估 API、GUI 和混合 computer-use agents | | [MemCoder — code agent 跟着你 git commit 一起成长](/study/papers/memcoder-co-evolution/) | `memcoder-co-evolution` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | +| [MemGym — 给长程 agent memory 做一间健身房](/study/papers/memgym/) | `memgym` | intermediate | UNVERIFIED | 用 MemGym 区分聊天记忆、执行记忆和可迁移的 agent 经验 | | [MetaGPT — 多智能体软件公司](/study/papers/metagpt/) | `metagpt` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [MIND-Skill — 用归纳和演绎双 agent 抽 skill 并保证质量](/study/papers/mind-skill/) | `mind-skill` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [Misevolution — 自进化 agent 也会"越改越坏",连顶配模型也躲不过](/study/papers/misevolution-2509/) | `misevolution-2509` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | @@ -50,6 +51,7 @@ sidebar: | [Orca — Transformer 生成模型的分布式推理调度](/study/papers/orca-2022/) | `orca-2022` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [Orca — 让一批 LLM 请求随到随走,不再排队等最长那个](/study/papers/orca-continuous-batching/) | `orca-continuous-batching` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [OSCAR — 离线转个方向,把 KV Cache 压到 2-bit](/study/papers/oscar-int2-kv/) | `oscar-int2-kv` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | +| [OSWorld — 把 GUI agent 放进真正的电脑里考试](/study/papers/osworld/) | `osworld` | intermediate | UNVERIFIED | 用 OSWorld 理解为什么电脑操作 agent 不能只在网页或脚本环境里评测 | | [PagedAttention — 把 KV cache 当虚拟内存页来管理](/study/papers/paged-attention/) | `paged-attention` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [PagedAttention — 以页替代整段内存的显存管理](/study/papers/paged-attention-vllm/) | `paged-attention-vllm` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [RAG (Lewis 2020) — 检索增强生成奠基](/study/papers/rag-lewis-2020/) | `rag-lewis-2020` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | @@ -70,7 +72,9 @@ sidebar: | [SpecInfer — 让大模型一次"猜一棵树"再并行验证](/study/papers/specinfer-2023/) | `specinfer-2023` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [SWE-Agent — Princeton SWE-bench 解法](/study/papers/swe-agent/) | `swe-agent` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [SWE-bench — 真实 GitHub Issue 评测](/study/papers/swe-bench/) | `swe-bench` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | +| [SWE-Bench-CL — coding agent 不能只刷静态题](/study/papers/swe-bench-cl/) | `swe-bench-cl` | intermediate | UNVERIFIED | 用 SWE-Bench-CL 理解软件工程 agent 的持续学习、迁移和灾难性遗忘 | | [SWE-Skills-Bench — Agent 技能真的帮得上软件工程吗](/study/papers/swe-skills-bench-2026/) | `swe-skills-bench-2026` | intermediate | UNVERIFIED | 用 paired evaluation 衡量 SWE skills 对真实软件工程 agent 的边际收益和 token 成本 | +| [ToolBench-X — 工具会坏时,agent 还能不能把事做完](/study/papers/toolbench-x/) | `toolbench-x` | intermediate | UNVERIFIED | 用 ToolBench-X 理解 tool-use benchmark 为什么要模拟规格漂移、调用错误、执行失败和结果冲突 | | [Toolformer — 教 LLM 自主调用 API](/study/papers/toolformer/) | `toolformer` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [Tree of Thoughts — 让 LLM 像下棋一样多想几步再答](/study/papers/tree-of-thoughts-2023/) | `tree-of-thoughts-2023` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | | [VeriCache: Turning Lossy KV Cache into Lossless LLM Inference — 有损压缩草稿,无损输出验收](/study/papers/vericache/) | `vericache` | unknown | UNVERIFIED | 暂无独立描述;可先从标题与正文定位开始。 | diff --git a/src/content/docs/career-plan.md b/src/content/docs/career-plan.md index 7325a36ea..acb2d2eae 100644 --- a/src/content/docs/career-plan.md +++ b/src/content/docs/career-plan.md @@ -5,7 +5,7 @@ sidebar: order: 1 --- -> 本页是路径说明。具体笔记见左侧分组;当前规模 1900+ 篇(论文 1019 + 项目 961)。 +> 本页是路径说明。具体笔记见左侧分组;当前规模 1900+ 篇(论文 1023 + 项目 961)。 ## 1. 路径模型的演化 diff --git a/src/content/docs/index.md b/src/content/docs/index.md index 242e5a292..e201f8521 100644 --- a/src/content/docs/index.md +++ b/src/content/docs/index.md @@ -144,7 +144,7 @@ head: -

当前规模:1019 篇论文 + 961 个项目 = 1980 篇笔记,按 19 个主题组织。数量已移出首屏,只作为覆盖面证据。

+

当前规模:1023 篇论文 + 961 个项目 = 1984 篇笔记,按 19 个主题组织。数量已移出首屏,只作为覆盖面证据。

diff --git a/src/content/docs/method.md b/src/content/docs/method.md index 766764356..0ee10015b 100644 --- a/src/content/docs/method.md +++ b/src/content/docs/method.md @@ -11,7 +11,7 @@ sidebar: ## 顶层结论(先看) -- 这套方法跑过 **961 篇项目 + 1019 篇论文 = 1980 篇**笔记,跨 19 个一级主题、约 1980 行写作密度 +- 这套方法跑过 **961 篇项目 + 1023 篇论文 = 1984 篇**笔记,跨 19 个一级主题、约 1984 行写作密度 - 最常被跳过的层是 **Layer 4 改一处**——但每次跳过都让整篇笔记从"机制"退回"翻译" - 真正变成"门面级"反向引用枢纽的笔记([React](/study/projects/react/) 68 / [[pytorch]] 67 / [[kubernetes]] 66 / [[postgresql]] 66),无一例外都做过 L3+L4 双层 - L0 / L1 / L2 / L7 即使做得平庸也不致命;L3+L4 任一项缺失 = 整篇笔记掉档 diff --git a/src/content/docs/papers-atlas.md b/src/content/docs/papers-atlas.md index ce66fc308..55cb70b7d 100644 --- a/src/content/docs/papers-atlas.md +++ b/src/content/docs/papers-atlas.md @@ -1,6 +1,6 @@ --- title: 论文全景索引 -description: 1019 篇论文的分块地图 · 稳定 taxonomy · 自动生成 +description: 1023 篇论文的分块地图 · 稳定 taxonomy · 自动生成 sidebar: order: 5 label: 论文全景索引 @@ -12,10 +12,10 @@ sidebar: ## 总览
-
1019论文总数
-
1000已有规范主题
+
1023论文总数
+
1004已有规范主题
19暂未收纳进主题路线
-
98.1%分类覆盖率(1000 / 1019,已分类 / 总数)
+
98.1%分类覆盖率(1004 / 1023,已分类 / 总数)
## 先选一条学习路径 @@ -41,7 +41,7 @@ Atlas 不替代精选路线。零基础读者先从下面六条路径选一条 | 主题 | English | 数量 | 分块 | |---|---|---:|---| -| 智能体与 LLM 系统 | Agents and LLM Systems | 64 | [第 1/1 组](/study/atlas/papers/topic-papers-agents-and-llm-systems-01/) | +| 智能体与 LLM 系统 | Agents and LLM Systems | 68 | [第 1/1 组](/study/atlas/papers/topic-papers-agents-and-llm-systems-01/) | | NLP 基础与 Scaling | NLP Foundations and Scaling | 111 | [第 1/2 组](/study/atlas/papers/topic-papers-nlp-foundations-and-scaling-01/) · [第 2/2 组](/study/atlas/papers/topic-papers-nlp-foundations-and-scaling-02/) | | 计算机视觉 | Computer Vision | 11 | [第 1/1 组](/study/atlas/papers/topic-papers-computer-vision-01/) | | 生成模型 / 扩散 | Generative Models and Diffusion | 10 | [第 1/1 组](/study/atlas/papers/topic-papers-generative-models-and-diffusion-01/) | @@ -79,4 +79,4 @@ Atlas 不替代精选路线。零基础读者先从下面六条路径选一条 - difficulty 未知:1014 - description 为空:1013 -- sidecar 主键:1019 个唯一 `area::slug` +- sidecar 主键:1023 个唯一 `area::slug` diff --git a/src/content/docs/papers-method.md b/src/content/docs/papers-method.md index 5a4938555..de7b80dc5 100644 --- a/src/content/docs/papers-method.md +++ b/src/content/docs/papers-method.md @@ -11,7 +11,7 @@ sidebar: ## 站点的论文体量 -截至 2026-07,论文目录共 1019 篇笔记,覆盖: +截至 2026-07,论文目录共 1023 篇笔记,覆盖: - 分布式系统 76 篇([[paxos-1998]] / [[raft]] / [[lamport-1978]] / [[spanner-2012]]) - 编程语言 + 类型论 76 篇([[hindley-milner]] / [[lambda-calculus]] / [[hoare-logic]]) diff --git a/src/content/docs/papers-queue.md b/src/content/docs/papers-queue.md index 973d155c5..e081e4bbf 100644 --- a/src/content/docs/papers-queue.md +++ b/src/content/docs/papers-queue.md @@ -1,11 +1,11 @@ --- title: 论文队列 -description: 按 topic 分组的 pillar 推荐 —— 站内 1019 篇论文笔记里,每条主线挑 3-5 篇代表作做切入点 +description: 按 topic 分组的 pillar 推荐 —— 站内 1023 篇论文笔记里,每条主线挑 3-5 篇代表作做切入点 sidebar: order: 4 --- -> 站内累计 1019 篇论文笔记,跨 14 个主题。这页不是"待读清单",是 +> 站内累计 1023 篇论文笔记,跨 14 个主题。这页不是"待读清单",是 > **入门指引** —— 每个 topic 给 3-5 篇 pillar 论文 + 一行说明它 > 为什么是该 topic 的支点。看完一条主线的 pillar,你就拿到了 > 该 topic 整张反向链接图的入口。 @@ -13,7 +13,7 @@ sidebar: ## 怎么用这页 - 不知道某个 topic 从哪读 → 来这里挑该主题 3-5 篇 pillar -- 想看完整 1019 篇分布与主题地图 → [papers-atlas](/study/papers-atlas/) +- 想看完整 1023 篇分布与主题地图 → [papers-atlas](/study/papers-atlas/) - 想要"如何精读一篇论文"的方法 → [papers-method](/study/papers-method/) - 想看跨论文 + 项目的混合阅读节奏 → [queue](/study/queue/) diff --git a/src/content/docs/papers/memgym.md b/src/content/docs/papers/memgym.md new file mode 100644 index 000000000..ff4973fe3 --- /dev/null +++ b/src/content/docs/papers/memgym.md @@ -0,0 +1,106 @@ +--- +title: 'MemGym — 给长程 agent memory 做一间健身房' +description: '用 MemGym 区分聊天记忆、执行记忆和可迁移的 agent 经验。' +来源: 'Xu et al., arXiv:2605.20833' +日期: 2026-07-14 +分类: AI Agent / Memory +难度: 中级 +difficulty: intermediate +trust: + version: study-v2 + source_kind: paper + note_type: paper + canonical_source: https://arxiv.org/abs/2605.20833v1 + source_authority: AUTHOR_PRIMARY + accessed_at: '2026-07-14' + publication_id: arXiv:2605.20833 + source_version: arXiv:2605.20833v1 + evidence_type: STATIC_ANALYSIS + verification_status: UNVERIFIED + reviewed_at: '2026-07-14' + review_after: null + applicable_version: arXiv v1 +--- + +## 是什么 + +MemGym 是一个面向 **长程 LLM agent memory** 的 benchmark。它不只测模型能不能记住用户偏好,而是测 agent 在长时间执行任务时,能不能形成、压缩、检索并复用有用记忆。 + +类比:聊天记忆像记住朋友喜欢喝冰美式;MemGym 关心的是一个实习生做了三周项目后,能不能把踩坑、代码结构、工具限制和成功路径沉淀成下次能用的经验。 + +论文把多个 agent gym 和自建 memory-grounded pipeline 统一到一个 memory-reasoning interface 下,并覆盖 tool-use dialogue、deep research、coding 和 computer use 等场景。 + +## 问题是什么 + +很多 memory benchmark 停留在多轮聊天:问你我叫什么、喜欢什么、昨天说过什么。这类任务能测 retention,但不一定能测 agent 做事时的动态记忆。 + +真实 agent memory 更难:它要在任务过程中决定哪些观察值得留下,如何压缩不丢关键条件,什么时候检索,检索后又如何不污染当前推理。 + +MemGym 的核心问题是:记忆系统能不能在 coding、web navigation、deep research 这些真实执行环境里帮 agent,而不是只在聊天问答里拿高分。 + +## 为什么重要 + +MemGym 的一个关键贡献是 memory-isolated scores。它试图把 memory performance 从 reasoning、retrieval 和 tool-use ability 里拆出来,让不同记忆策略可以更公平地比较。 + +这点很重要,因为一个 agent 做错任务,可能是不会推理,也可能是没检索到记忆,也可能是记忆压缩质量差。没有隔离分数,就容易把所有失败都归因给模型或工具。 + +它和 [[reflexion]]、[[voyager]] 的关系是:Reflexion 和 Voyager 都强调经验回写;MemGym 更像给这些经验回写系统提供一套统一训练场和评测口径。 + +## 核心方法 + +MemGym 覆盖五个 evaluation tracks,并归到四类 agentic regimes: + +| Regime | Track / 场景 | +|---|---| +| tool-use dialogue | tau2-bench | +| deep research search | MEMGYM-DR | +| coding | SWE-Gym 和 MEMGYM-CODEQA | +| computer use | WebArena-Infinity | + +论文还为 MEMGYM-CODEQA 和 MEMGYM-DR 构建了 length-controllable 的合成 pipeline,并在各阶段做 ablation verification。 + +为了让 coding 环境评测更容易跑,论文训练了 MemRM:一个 Qwen3-1.7B + QLoRA 的轻量 reward model,用来快速评分 compression quality,替代完整 Docker rollout 的高成本读取。 + +## 手工 toy 复现 + +假设 agent 要连续修 3 个同仓库 bug: + +| 任务 | 新观察 | 好记忆应该留下什么 | +|---|---|---| +| bug 1 | 登录失败来自 `AuthService` 的 token 过期 | token 刷新入口和测试命令 | +| bug 2 | 类似错误出现在移动端适配层 | “先查 AuthService,再查 adapter” 的排查路线 | +| bug 3 | 失败日志不同但根因仍是 token 刷新 | 复用路线,同时避免把旧日志当新事实 | + +MemGym 要测的不是 agent 是否死记每段日志,而是它能否把“可迁移经验”压缩出来,并在新任务里正确检索。 + +## 踩过的坑 + +1. **记忆越多不等于越好**:未经筛选的历史会制造噪声,甚至把过期结论带进新任务。 +2. **聊天记忆不能代表执行记忆**:用户偏好和任务轨迹的结构完全不同。 +3. **只测最终成功会混淆原因**:成功可能来自模型强推理,不一定来自 memory。 +4. **压缩质量本身要评估**:如果摘要漏掉约束,检索再准也会带来错误行动。 + +## 学到什么 + +MemGym 把 agent memory 从“能不能记住信息”推进到“能不能形成可迁移执行经验”。这对长期 study / harness 项目很贴近:我们真正需要的不是聊天记录堆积,而是能在下一轮任务中减少重复踩坑的结构化记忆。 + +对工程实现来说,memory 系统至少要拆成三步看:写入时筛选、保存时压缩、使用时校验。任何一步偷懒,都会把 memory 从资产变成污染源。 + +## 延伸阅读 + +- 原文: +- [[reflexion]]:用语言反思替代权重更新。 +- [[voyager]]:在长程环境里积累 skill library。 +- [[swe-bench-cl]]:软件工程任务流里的持续学习评测。 + +## 关联 + +- [[reflexion]] +- [[voyager]] +- [[swe-agent]] +- [[swe-bench]] +- [[agentic-context-engineering-2025]] + +## 反向链接 + + diff --git a/src/content/docs/papers/osworld.md b/src/content/docs/papers/osworld.md new file mode 100644 index 000000000..5c70b9684 --- /dev/null +++ b/src/content/docs/papers/osworld.md @@ -0,0 +1,103 @@ +--- +title: 'OSWorld — 把 GUI agent 放进真正的电脑里考试' +description: '用 OSWorld 理解为什么电脑操作 agent 不能只在网页或脚本环境里评测。' +来源: 'Xie et al., arXiv:2404.07972' +日期: 2026-07-14 +分类: AI Agent / Computer Use +难度: 中级 +difficulty: intermediate +trust: + version: study-v2 + source_kind: paper + note_type: paper + canonical_source: https://arxiv.org/abs/2404.07972v2 + source_authority: AUTHOR_PRIMARY + accessed_at: '2026-07-14' + publication_id: arXiv:2404.07972 + source_version: arXiv:2404.07972v2 + evidence_type: STATIC_ANALYSIS + verification_status: UNVERIFIED + reviewed_at: '2026-07-14' + review_after: null + applicable_version: arXiv v2 +--- + +## 是什么 + +OSWorld 是一个评测 **多模态电脑操作 agent** 的 benchmark。它不是让模型回答题目,也不是只在网页 DOM 里点按钮,而是把 agent 放进真实操作系统和真实应用里,让它完成开放式电脑任务。 + +类比:普通网页 benchmark 像在驾校封闭场地开车;OSWorld 像把车开到真实城市道路,红绿灯、行人、导航、停车、临时施工都会一起出现。 + +论文给出的核心规模是 369 个真实电脑任务,覆盖 web app、desktop app、文件系统 I/O,以及跨多个应用的 workflow。环境支持 Ubuntu、Windows 和 macOS,并为每个任务提供初始状态设置和执行式评测脚本。 + +## 问题是什么 + +很多 agent benchmark 的环境太干净:要么没有真正交互环境,要么只覆盖单一网站或单一应用。这样测出来的分数会高估 agent 的现实能力,因为真实电脑使用需要同时处理视觉定位、窗口状态、文件路径、菜单层级、应用切换和长步骤计划。 + +OSWorld 把评测对象从“会不会调用某个 API”推进到“会不会真的操作一台电脑”。这对 GUI agent 很关键,因为用户要的不是 click sequence,而是任务完成:下载文件、编辑表格、改设置、跨应用搬运信息。 + +## 为什么重要 + +OSWorld 的结果很刺眼:人类能完成 72.36% 以上任务,而论文评测中的最好模型只有 12.24% 成功率。这个差距说明,当时的多模态 agent 还没有接近“电脑助手”的产品线。 + +更重要的是,OSWorld 把失败原因具体化为 GUI grounding 和 operational knowledge。前者是“看见按钮但点不准”,后者是“不知道这个软件该怎么操作”。这两个问题在普通文本 benchmark 里很难暴露。 + +它和 [[mcp-bench-2025]]、[[mcpworld-2025]] 的关系是:MCP 线看工具协议和 tool invocation,OSWorld 看完整电脑环境。两者合在一起,才接近真实 AI 助手的工作面。 + +## 核心方法 + +OSWorld 的关键设计是三件事: + +| 设计 | 作用 | +|---|---| +| 真实操作系统环境 | 任务发生在真正的桌面、应用和文件系统里 | +| 任务初始状态配置 | 每个 case 可以从可复现的起点开始 | +| 执行式评测脚本 | 不只看 agent 说了什么,而是检查系统终态是否正确 | + +这套设计让 OSWorld 比“截图问答”更接近端到端电脑使用。agent 必须观察屏幕、决定动作、执行点击或输入,再从新屏幕继续判断。 + +## 手工 toy 复现 + +我用一个极小任务手推 OSWorld 的评测逻辑: + +任务:打开文件管理器,把 `report.txt` 复制到 `Archive` 文件夹,并确认文件存在。 + +| 阶段 | agent 需要做什么 | OSWorld 式检查 | +|---|---|---| +| setup | 初始桌面和文件夹存在 | 环境脚本准备状态 | +| act | 打开文件管理器、定位文件、复制或拖拽 | GUI grounding + 操作知识 | +| evaluate | 检查 `Archive/report.txt` 是否存在 | 执行式终态评测 | + +这个 toy 说明:OSWorld 不奖励“我会复制文件”的文字回答,只奖励真实环境里的正确状态变化。 + +## 踩过的坑 + +1. **把截图理解当电脑使用**:看懂截图只是第一步,真实任务还要跨应用、跨窗口和跨时间。 +2. **把 click 成功当任务成功**:按钮点到了不代表终态正确,评测必须看文件、设置或应用状态。 +3. **只优化网页 agent 会偏科**:浏览器任务不能覆盖桌面软件、文件系统和系统设置。 +4. **延迟和效率不能忽略**:OSWorld 原文先突出成功率,但真实产品还要继续看耗时和动作数,这也是后续 OSWorld-Human 的动机。 + +## 学到什么 + +OSWorld 给 agent 评测立了一条底线:如果目标是电脑助手,就必须在电脑里验收,而不是只在文本、API 或单网页里验收。 + +对 study 的 agent 线来说,它补上了 [[agent-planning-benchmark-2026]] 的下游环境:APB 诊断规划,OSWorld 验证规划能否穿过真实 GUI 和应用状态。 + +## 延伸阅读 + +- 原文: +- 项目页: +- [[mcpworld-2025]]:MCP 工具世界的 benchmark。 +- [[agent-planning-benchmark-2026]]:规划质量的上游诊断。 + +## 关联 + +- [[mcpworld-2025]] +- [[mcp-bench-2025]] +- [[agent-planning-benchmark-2026]] +- [[react-agent]] +- [[swe-agent]] + +## 反向链接 + + diff --git a/src/content/docs/papers/swe-bench-cl.md b/src/content/docs/papers/swe-bench-cl.md new file mode 100644 index 000000000..d4b444573 --- /dev/null +++ b/src/content/docs/papers/swe-bench-cl.md @@ -0,0 +1,105 @@ +--- +title: 'SWE-Bench-CL — coding agent 不能只刷静态题' +description: '用 SWE-Bench-CL 理解软件工程 agent 的持续学习、迁移和灾难性遗忘。' +来源: 'Joshi et al., arXiv:2507.00014' +日期: 2026-07-14 +分类: AI Agent / Software Engineering +难度: 中级 +difficulty: intermediate +trust: + version: study-v2 + source_kind: paper + note_type: paper + canonical_source: https://arxiv.org/abs/2507.00014v1 + source_authority: AUTHOR_PRIMARY + accessed_at: '2026-07-14' + publication_id: arXiv:2507.00014 + source_version: arXiv:2507.00014v1 + evidence_type: STATIC_ANALYSIS + verification_status: UNVERIFIED + reviewed_at: '2026-07-14' + review_after: null + applicable_version: arXiv v1 +--- + +## 是什么 + +SWE-Bench-CL 是一个面向 **coding agent continual learning** 的 benchmark。它基于 SWE-Bench Verified,把 GitHub issues 按真实时间顺序组织成任务流,用来评估 agent 是否能积累经验、跨任务迁移,并避免灾难性遗忘。 + +类比:普通 SWE-bench 像期末考试抽题;SWE-Bench-CL 像真实入职一个仓库,今天修 bug,明天改 feature,下周处理回归。你不只要会做一道题,还要越做越懂这个仓库。 + +论文还提供 LangGraph-based evaluation framework,并加入 FAISS-backed semantic memory module,用来比较 memory-enabled 和 memory-disabled agents。 + +## 问题是什么 + +静态 coding benchmark 的默认假设是:每个问题独立出现,agent 做完就结束。但真实软件工程不是这样。一个仓库会持续演进,今天的修复会改变明天的上下文,前一个 issue 的定位经验也可能帮下一个 issue。 + +SWE-Bench-CL 关心的问题是:agent 能不能把历史任务变成有用经验,而不是每次都像第一次打开仓库。 + +这也带来反面问题:如果 agent 把旧经验用错,就会发生 catastrophic forgetting 或 negative transfer。持续学习不只是记住更多,还要知道哪些经验还适用。 + +## 为什么重要 + +软件工程 agent 的产品价值不在于单次 pass@1,而在于长期维护同一个 repo 时能否越来越快、越来越稳。 + +SWE-Bench-CL 提出一组 continual learning metrics,包括 average accuracy、forgetting、forward/backward transfer、tool-use efficiency,以及 Composite Continual Learning Score 和 CL-F-beta score。 + +这些指标把“做对题”拆成了时间维度:新任务做得好不好,旧能力有没有掉,过去经验是否帮助未来任务,未来修复是否反过来暴露过去理解的问题。 + +## 核心方法 + +SWE-Bench-CL 的结构可以这样看: + +| 层 | 作用 | +|---|---| +| 数据层 | 从 SWE-Bench Verified 取人类验证过的 issue | +| 时间层 | 按仓库自然演进顺序组织任务 | +| 记忆层 | 用 FAISS semantic memory 存储和检索历史经验 | +| 编排层 | 用 LangGraph 组织 agent evaluation flow | +| 指标层 | 评估准确率、遗忘、迁移和工具效率 | + +这让 benchmark 从“单点修 bug”变成“持续维护一个仓库”。它和 [[swe-bench]] 的关系不是替代,而是在 SWE-bench 上加时间轴和经验轴。 + +## 手工 toy 复现 + +想象一个仓库连续出现三个 issue: + +| 时间 | issue | 没有记忆的 agent | 有好记忆的 agent | +|---|---|---|---| +| T1 | 登录测试失败 | 全仓搜索 auth | 记录 token 刷新入口 | +| T2 | OAuth 回调失败 | 再次从头找 | 先查同一认证模块 | +| T3 | 修复后旧登录测试回归 | 忘了 T1 约束 | 检查旧测试是否仍通过 | + +SWE-Bench-CL 要测的是这种时间线上的能力:不是 T2 单独能否修好,而是 T1 的经验是否帮助 T2,同时 T2 的修改有没有破坏 T1。 + +## 踩过的坑 + +1. **把持续学习理解成简单 RAG**:检索历史只是入口,还要判断历史是否适用于当前版本。 +2. **只看平均准确率会漏掉遗忘**:新题都做对但旧能力退化,长期维护仍然不可靠。 +3. **仓库时间线很重要**:乱序任务会破坏真实软件演进的因果关系。 +4. **记忆也可能负迁移**:相似 issue 不代表同一根因,错误复用会更快地失败。 + +## 学到什么 + +SWE-Bench-CL 把 coding agent 评测从“一次性解题”推进到“长期维护”。这和真实工程更接近:一个好 agent 不该只是会打补丁,还应该逐渐形成仓库地图、失败模式和验证习惯。 + +对 study 的 agent 线来说,它可以接在 [[swe-bench]] 和 [[memgym]] 后面读:SWE-bench 给任务底座,MemGym 讨论 memory 评测,SWE-Bench-CL 把 memory 放回持续软件工程时间线。 + +## 延伸阅读 + +- 原文: +- 代码: +- [[swe-bench]]:原始软件工程 benchmark。 +- [[memgym]]:agent memory 的统一评测环境。 + +## 关联 + +- [[swe-bench]] +- [[swe-agent]] +- [[memgym]] +- [[agentic-context-engineering-2025]] +- [[code-as-agent-harness]] + +## 反向链接 + + diff --git a/src/content/docs/papers/toolbench-x.md b/src/content/docs/papers/toolbench-x.md new file mode 100644 index 000000000..bff40d02f --- /dev/null +++ b/src/content/docs/papers/toolbench-x.md @@ -0,0 +1,113 @@ +--- +title: 'ToolBench-X — 工具会坏时,agent 还能不能把事做完' +description: '用 ToolBench-X 理解 tool-use benchmark 为什么要模拟规格漂移、调用错误、执行失败和结果冲突。' +来源: 'Tian et al., arXiv:2606.25819' +日期: 2026-07-14 +分类: AI Agent / Tool Use +难度: 中级 +difficulty: intermediate +trust: + version: study-v2 + source_kind: paper + note_type: paper + canonical_source: https://arxiv.org/abs/2606.25819v2 + source_authority: AUTHOR_PRIMARY + accessed_at: '2026-07-14' + publication_id: arXiv:2606.25819 + source_version: arXiv:2606.25819v2 + evidence_type: STATIC_ANALYSIS + verification_status: UNVERIFIED + reviewed_at: '2026-07-14' + review_after: null + applicable_version: arXiv v2 +--- + +## 是什么 + +ToolBench-X 是一个评测 **tool-using agent 在不可靠工具环境下能否恢复** 的 benchmark。它不满足于检查函数调用格式是否正确,而是故意让工具环境出现可恢复的坏情况,看 agent 是否能诊断、重试、fallback、验证或交叉检查。 + +类比:普通 tool benchmark 像在厨房里给你一套全新的刀具;ToolBench-X 像真实厨房,有的刀钝了、有的说明书变了、有的温度计读数飘了,但你仍然要把菜做熟。 + +论文设计了可执行的多步任务,覆盖 sequential、parallel 和 mixed workflows;每个任务都有 deterministic tools 和 canonical final answer,方便自动评测。 + +## 问题是什么 + +现有 tool-use benchmark 往往默认工具干净、稳定、可信。这个假设在真实 agent 系统里太乐观:API 会超时,schema 会变,返回值会漂,两个数据源会冲突,工具文档也可能过期。 + +ToolBench-X 问的是:当工具不是坏到完全不可用,而是坏到“需要恢复策略”时,agent 还能不能完成任务。 + +这个问题比 function calling 更接近生产环境。生产 agent 最大的风险不是不会调用工具,而是工具返回异常后继续相信旧计划,最后把错误包装成确定答案。 + +## 为什么重要 + +论文把不可靠性拆成五类结构化 hazard: + +| Hazard | 直觉 | +|---|---| +| Specification Drift | 工具说明或参数语义变了 | +| Invocation Error | 调用格式、参数或顺序出错 | +| Execution Failure | 工具执行失败、超时或抛异常 | +| Output Drift | 返回值偏离预期或格式变了 | +| Cross-source Conflict | 多个来源给出互相冲突的结果 | + +关键点是:每个注入后的 case 仍然至少存在一条 valid recovery path。这让 benchmark 不是单纯“折磨模型”,而是在测 agent 是否会恢复。 + +## 核心方法 + +ToolBench-X 从 clean tool environments 出发,再注入可恢复 hazard。这样可以比较同一个 agent 在“工具可靠”和“工具不可靠”两种条件下的差异。 + +论文的结论方向也很有用:失败更多来自 hazard diagnosis 和 ineffective recovery,而不是单纯的工具调用次数或推理预算不足。也就是说,加更多 test-time scaling 不一定能解决问题,agent 需要更明确的故障识别和恢复策略。 + +这和 [[mcp-bench-2025]] 很互补:MCP benchmark 关心协议与工具生态,ToolBench-X 关心工具生态不稳定时的恢复能力。 + +## 手工 toy 复现 + +任务:查一个城市今天的天气并给出穿衣建议。工具有: + +```text +get_weather(city) -> { temp_c, condition } +get_air_quality(city) -> { aqi } +``` + +ToolBench-X 式 hazard 可以这样注入: + +| 情况 | 工具表现 | 好 agent 应该做什么 | +|---|---|---| +| Specification Drift | `temp_c` 改名为 `temperature_celsius` | 识别 schema drift,适配字段 | +| Execution Failure | `get_weather` 第一次 timeout | 重试或使用备用来源 | +| Output Drift | AQI 返回字符串 `"good"` 而非数字 | 做类型校验,不直接算数 | +| Cross-source Conflict | 两个天气源温度差 15 度 | 交叉检查并说明不确定性 | + +这个 toy 的重点是:正确答案不只取决于函数调用成功,还取决于 agent 是否检查工具结果是否可信。 + +## 踩过的坑 + +1. **把 function call JSON 合法当成功**:格式合法只是入口,任务完成要看工具结果和恢复路径。 +2. **只靠重试不够**:重试能处理瞬时失败,处理不了规格漂移和跨源冲突。 +3. **预算不是万能药**:论文指出 test-time scaling 的收益有限,关键是 hazard diagnosis。 +4. **恢复路径必须可评测**:如果没有 canonical final answer,就很难区分“恢复成功”和“编了个解释”。 + +## 学到什么 + +ToolBench-X 给 tool agent 评测补了一层现实感:工具不是永远可信的外部 oracle,而是会漂移、失败和互相打架的环境。 + +对实际 harness 来说,这篇的启发是:工具调用层不只需要 schema,还需要错误分类、重试策略、fallback 策略、交叉验证和终态检查。 + +## 延伸阅读 + +- 原文: +- 代码: +- [[mcp-bench-2025]]:MCP 工具调用评测。 +- [[toolformer]]:让模型学习何时使用工具的早期路线。 + +## 关联 + +- [[mcp-bench-2025]] +- [[mcpworld-2025]] +- [[toolformer]] +- [[agent-planning-benchmark-2026]] +- [[react-agent]] + +## 反向链接 + + diff --git a/src/content/docs/queue.md b/src/content/docs/queue.md index d318e575d..886db47cd 100644 --- a/src/content/docs/queue.md +++ b/src/content/docs/queue.md @@ -6,7 +6,7 @@ sidebar: --- > 不是"读哪 20 个"的清单,是"先读哪 5 个就能撑起一个领域"的导航。 -> 当前站点 961 篇项目笔记 + 1019 篇论文笔记,凑数没有意义,**取舍**才有。 +> 当前站点 961 篇项目笔记 + 1023 篇论文笔记,凑数没有意义,**取舍**才有。 > 每个主题给 3-5 个 pillar:反向链接最多、跨主题被引最广、读完能形成判断。 ## 怎么用这页 @@ -189,7 +189,7 @@ PL 理论在论文侧根扎得最深:[[hindley-milner]] / [[lambda-calculus]] ## 全景 atlas - 项目全景(961 篇按主题分组、反向链接热度、消化状态):[projects-atlas](/study/projects-atlas/) -- 论文全景(1019 篇按子领域、pillar 标记、未消化队列):[papers-atlas](/study/papers-atlas/) +- 论文全景(1023 篇按子领域、pillar 标记、未消化队列):[papers-atlas](/study/papers-atlas/) - 论文推荐入口(与本页平行的论文版导航):[papers-queue](/study/papers-queue/) - 方法论与挑选标准:[about](/study/about/) / [method](/study/method/) / [papers-method](/study/papers-method/)