切换外观
composite 演示数据的打磨记录
状态:2026-10-15,随 edits.json 维护,对着第二次自由运行重做。每处修正都写在 edits.json 里,由 scripts/build_demo_data.py composite 从空状态逐帧重放生成 scenario.mjs,Python 内存内核与原型引擎都要能完整回放;不手改最终 JSON。来源、许可与公开前要决定的事见 SOURCES.md。
起点
| 项 | 内容 |
|---|---|
| Agent 判断 | 自由运行 free-20261015-161501:claude-opus-5-5 读 skill/SKILL.md(sha256 30b6a7ae10ff…,与第一次相同),从空状态逐帧维护 28 帧。28 帧全部提交成功,3 次被退回(标题超过 24 字 2 次、摘要超过 60 字 1 次),看到回执后都改对;31 次调用,23.23 美元。结果与作者标注的对照见评测记录。 |
| 被打磨的批次 | agent-batches.json:每帧被接受的声明、确认与逐条处置,由 --import-run .local/eval/free-20261015-161501 导出。 |
| 人物背景 | 交给 Agent 的是 frames.json 的人物设定:前四条流的设定见 MIX.md,另加一句家人与联系方式(伴侣 Kajsa、女儿 Signe、儿子 Ture、母亲、妹妹 Ulrika、猫 Smilla),说明家庭往来是瑞典语、由作者编写。 |
| 演示正文 | 混合语料 v1.1 加家庭流(3217 条),去掉 21 封 Enron 营销邮件后 3196 条;正文截到 500 字符、保留链接。自由运行看到的就是这一版。 |
| 第三次运行 | free-20261015-201110 用同一份语料、换回第一次的手写背景重跑,只用于归因(见第三次自由运行)。演示数据仍依据第二次:家庭六条线的结构判定两次几乎相同,差在档位(第三次母亲住处一直是 12 份,更接近作者),而第二次已经打磨并验收,换底稿要重做全部修正、旁白与回应路径,得不偿失。 |
第一次自由运行(free-composite-2026-10-15,不含家庭流)打磨出的旧演示数据整份作废:事项 ID、修正、旁白、回应路径与反馈都按这次运行重做。
原则
- Agent 的批次是底稿。 只在三种情况下改:判断会误导读者(该等你的被记成知会、不相关的事并成一件、随口的事占着最大份额);语料的接缝或版本差异让 Agent 写错了事实;份额腾挪是上面两类修正的连带结果。措辞偏好、差一档的分歧都不改。
- 只改批次,再重放。 修正写成对批次的
patch、replace、add、drop,重放被内核拒绝就停下;腾份额时优先提前撤下 Agent 自己后来也撤下的痕迹,并沿用它的理由。 - 不改原文。 MIX.md“接缝”一节列的不一致(公寓与房子、住在法国、问的是狗而人物养猫)与家庭流和其他流之间的接缝都不改输入,影响理解时在旁白里带一句。
- 回应路径与反馈是演示数据先行定下的形态(见原型说明),不是 Agent 的输出:ask 由打磨时登记,反馈从本人的后续动作推出;家庭流的后续动作是作者编写的。
统计
- 28 帧全部写了叙事标题与旁白,分成 6 章;两周出现过 60 件根层事项,都写了短名。
- 对 Agent 批次的修正 9 处,分布在 6 帧;另有 4 处手写反馈链接。处置(
disposition)没有改。 - 登记回应路径 26 条:choose 9、approve 6、confirm 5、reply 3、defer 2、schedule 1;家庭流 13 条(照 OUTLINE.md“Fold 应当怎么判”与
labels.json的family.asks),航班 2 条(生活流的提问并在家里的事项里),工作流 10 条,生活流 1 条。11 条在窗口内被本人在来源处的动作回答,7 条到最后仍开着,8 条没被回答就随条目改写、撤下或并入而关上。 - 反馈链接 160 条,挂在 160 条本人输入上:32 条指回具体的 ask,128 条只指向事项。按流:工作 91、家庭 49、生活 20;家庭流本人 78 条里另外 29 条当时没有已展示的事项可挂(多是同一帧里刚出现的事,或杂事、零碎请求)。
新旧两次运行
两次用同一份 SKILL.md、同一个模型,区别在语料多了家庭流(388 条,本人 78 条)。
| 项 | 第一次(不含家庭流) | 第二次 |
|---|---|---|
| 处置(含本人发言) | 采用 1486、噪音 836、暂缓 491、重复 12 | 采用 1177、噪音 885、暂缓 1117、重复 33 |
| 他人输入里的暂缓 | 418(工作 388) | 889(工作 671、家庭 86、生活 98) |
| 生活流他人输入的采用 | 227 | 130 |
| 根层 64 份平均来自 | 工作 48.9、生活 13.1、社区 0.4 | 家庭 37.7、工作 20.3、生活 2.6 |
| 两周出现的根层事项 | 88 件,同一时刻最多 33 件 | 60 件,同一时刻最多 26 件 |
| 提交被退回 | 5 次 | 3 次 |
逐帧看,上一次的三类错误这次大多没再出现,所以修正从 31 处降到 9 处:
- 生活里要他决定的事不再被低估。 航班改经停 f08 就记成等你、6 份(上次知会 3 份,f11 撤下);猫的药量 f18 给 12 份,看到失明风险后 f22 升到 24 份(上次 6 → 12);车道下的主水管 f26 给 24 份(上次 3 份)。三件都是 Agent 把生活流的提问与家里的消息并成了一件:家人在追问,这件事就成了“家里在等你”。
- 长期事项不再一直占着大份额。 master CI 只在 f01–f10 记等你,12 份只有 f02 一帧,f11 起 Agent 自己降为进行中(上次 27 帧都是等你、12 份,打磨改了 14 帧)。每日的合并记录滚成一条“合并留档”,过几天就撤下。
- 把不相关的提问并成一件,这次变成把问答站上自己提问的新回复收成一条“问答新回复”的知会(1–3 份),而不是两三个提问共用一件事的份额与问题。
最常见的几类错误
按自由运行的全部 28 帧,不只是被修正的那些:
- 家里的事普遍高一档。 家庭流平均占根层 37.7 份,工作降到 20.3。母亲九月住哪有 12 帧占 24 份(作者标 high,即 12 份),猫的药量 f22、车道下的水管 f26–f28 也到 24 份;几次升到 24 份都有截止或家人催促,算差一档的分歧,不改。反过来,作者写定为“当帧最高”的 Ture 发烧(f20)只给了 1 份知会,手机首页会把它折进“其余”,打磨时升到 3 份。
- 随口的约定被时间信号抬高。 Joakim 把“明早 9 点骑不骑”发错到派对群,Agent 因为“今早 9 点就要出发”给了 12 份、排在根层第一,高过同帧邻居说车道湿了一整周(作者:骑车最多一条痕迹)。打磨时降为 3 份。
- 把接缝当成事实。 家庭流里他 8/9 早上对 Joakim 说“晚上发 rc1”,工作流里 rc1 在 8/8 23:10 已经发出。Agent 以家里那句为准,把“已发”改回“今晚发”,此后 15 帧挂着“rc1 发布待确认”。同类的小错还有:把“下周六”写成 16 日(应为 15 日),把“诊所回过电话、他没回拨”写成“诊所还没回电”。这几处都改了。
- 了结之后降得慢,零碎的事并进别的事。 猫的药量 8/14 答上后又占 12 份三帧;母亲 f28 约下周日吃饭、Ulrika 提的 9 月 30 日生日,都并进已经了结的“住哪”那件;f01 的浇番茄并进了猫;开学同意书在 f22 并进了作者判为噪音的头虱提醒;两条钓鱼短信都单列了提醒(BankID 那条挂了六帧,假关税那条一帧),没有丢弃。这些是措辞与粒度上的分歧,不改;对回应路径的影响见下文(一件事此刻只能登记一个问题,母亲的生日就没有登记)。
- 生活问答收成一条知会,f21 之后整体暂缓。 与家里有关的五个提问(猫的药量、航班、漫画、后刹、铜水管)都并进了家里的事;其余问答回复只进那条知会,f21 撤下之后,新提问的回复全部暂缓(空调、地暖找平、斜切锯、修车价、预算表、天花板凸线、车道厚度)。有人在问答站等他澄清的两处(Tilda 问是否只要美国的方案、汤底是甲壳还是贝类)都没有单独成件。不改。
- 工作里暂缓翻倍,评审请求并成一行。 工作流他人输入的暂缓从 388 升到 671,多是 Mastodon 回复、评论与评审:它们关联到他的事(所以不是噪音),但不改变他的理解,这正是 SKILL.md 里
deferred的定义,不算漏判。评审请求 f18 起被并成一行(#13530、#12088、#13295、#13350),f22 又把 #13567 和它的修复 #13572 并进来,#13572 批准之后,三个旧 PR 在 f23–f27 一起占 6 份。不改,回应路径登记在这一行上。
此外,提交被退回的 3 次都是字段长度(标题超过 24 字、摘要超过 60 字),回执说明后一次改对,不影响演示数据。
逐帧修正
| 帧 | 事项 | 改了什么 | 为什么 |
|---|---|---|---|
| f13 | release-8-22-rc1 | 不改成“今晚发 rc1”,保持已发、3 份 | 家庭流与工作流的接缝:rc1 已在 8/8 23:10 发出 |
| f13 | joakim-ride-16 | 标题“下周六16日”→“下周六15日” | 他说的下周六是 8 月 15 日 |
| f14 | release-8-22-rc1 | 去掉改写成“rc1 发布待确认” | 同 f13 |
| f18 | release-8-22-rc1 | 降到 1 份时保持已完成,理由改为“发出已三天” | 同 f13;Agent 的理由是“还是没看到 rc1 发布记录” |
| f20 | smilla-vet | 标题“诊所还没回电”→“未回诊所电话” | 诊所 9:42 回过电话、留了语音,是他没回拨 |
| f20 | ture-pickup-0812 | 1 份 → 3 份,仍是知会 | 4 岁的儿子发烧 38.4、Kajsa 在手术室,是这一帧家里最大的事 |
| f20 | benchmark-13465 | 提前撤下 | 给 Ture 腾 1 份;Agent 在 f21 撤下,理由相同 |
| f21 | benchmark-13465 | 去掉撤下 | 已在 f20 撤下 |
| f24 | joakim-ride-16 | 12 份 → 3 份,仍等你 | 见“最常见的几类错误”第 2 条 |
手写反馈链接 4 处:他开 #13484(undef NDEBUG)回答 NDEBUG 之争;家里“约好了周一 10:15”回答“约好兽医了吗”;告诉 Kajsa“只是技术经停、19:40 落地”回答“改签还是照旧”;热浪里给母亲打的电话挂到母亲那件事上(Ulrika 的提醒与通话在同一帧,自动推导找不到可挂的事项)。
保留未改、但读演示时会碰到的问题:上面第 1、4、5、6 条;社区流 738 条 Agent 一条也没采用;Mastodon 提及里本人账号写成 @jberglund@mastodon.social,与人物设定的 @jonasb 不一致(语料化名的遗漏)。
回应路径与反馈
- 登记。 edits.json 的
asks按事项与帧登记,按钮从模板来(review → approve,issue → choose,answer → reply,confirm、schedule、defer),也可以直接写;short是 16 字以内的短问法,供腕上一瞥,这次每条都写了。ask 属于登记时的条目版本:条目此后每被改写一次就以同一 id 重登记,直到until或条目不再 active;改写后没有重登记的,视为问题失效。一件事同一时刻只登记一个问题。 - 反馈从动作推出。 本人在 GitHub 上的评审、合并(含“closed this in 提交”)、关闭,在论坛、问答站、邮件列表、Mastodon 上的回复,以及家庭流里的消息、通话、表情、Swish 转账,按线程挂到当时已经展示过、引用了同一线程的 active 事项上,
via记为source。同一线程被几件事引用时,挂到 Agent 在处置里把这条输入关联到的那件;没有关联的,挂到以这个线程为主的那件。家庭流的杂事线程(浇番茄、收快递、照片)不推导。 - 映射到按钮。 那件事登记着 ask 时,动作映射到 ask 的按钮(合并算批准,通话对应“打给诊所”);没有对应按钮或没有 ask 时只指向事项,动作取自
feedback.sourceActions。批准某个 PR 的 ask 只认那个 PR 上的动作,也可以用answer_threads指定哪几个线程能回答它:条目顺带引用了别的线程时,他在那边的回复只记在事项上。家里的多数问题只给选项、不给“回一句”,所以他和 Kajsa 的来回消息只记在事项上,不算回答了问题。 - 11 条被回答的 ask:水碗尺寸、约兽医、#13473、NDEBUG(他开 #13484)、vdns、航班信息、改签还是照旧、#13528、猫的药量(8/14 打给诊所)、机票退款、#13572。
- 7 条到最后仍开着:主水管挖开换还是免挖(截止 8/17 10:00)、开学同意书、VAB、三个旧 PR 推到哪天、#13596、派对的 Swish、母亲 23 日来吃饭。
- 8 条没被回答就关上:master CI 谁来查(f11 有人在修)、母亲九月住哪(f23 母亲自己交了回执)、后刹排气定哪天(f21 Kajsa 直接买了新车)随改写失效;派对回几个人(f22 Kajsa 在群里替他报了 4 人)、Göran 抬棚屋随事项撤下;#13350、#13295 随事项并进“待审 PR”,第一处开学同意书随事项并进开学准备,在新事项上重新登记。
旁白、章节与信号
- 每帧的
title与narrative由打磨时按输入、家庭流节拍表与 Agent 的批次手写,提到 Agent 原判断与打磨改动的地方都直接说明。帧是“此前 12 小时”的窗口:f15 是 8/10 周一上午,f16 是周一下午到夜里。 - 6 章按日期与主线分:漏洞报告重开与母亲的换管通知、最忙的一天撞上航班改经停、rc1 回城与看兽医、猫的药量与 Ture 发烧、热浪里母亲自己定了与车道下的水管、周日水管还没定。
frame.signal保留 Agent 看到的宿主信号(每 12 小时定时整理、收到条数与窗口),另加coverage写各流条数,并注明这一帧有几封营销邮件没有收入演示(所以received可能比演示里的输入多)。- 第二轮草图的选用帧写在
sketchFrames,说明写在sketchNotes。 - 根层事项的短名写在
categories.<id>.short(60 件,手写):取标题里的事(“猫看病”“主水管”“NTLM 复用”),不用 PR 编号;让位图与批次记谱在色块和记号旁用它。