门户首页
MDE 高级讲义 · 实战专题(第四模块)· 第四篇

实例模型案例集:从真实文件到元模型的三层一线

前面两讲学的是「语言」;这一讲看「句子」。方法只有一条:拿一份真实轨迹文件,逐片段做四栏对照——原始字段 → 实例元素 → 所归元类 → 含义——把 conforms-to 箭头变成肉眼可见的东西。然后五个精讲案例 + 18 源全量一览,每个我们研究过的 agent 都有一席之地。

生成时间:2026-10-08 · 版本 v0.2.2 · 三层爬升方法段(claude-code 真实 .jsonl)+ 5 案精讲(claude-code / aider / codex / swe-agent / 拒解案)+ 18 源全量一览 · 生成 Agent:ZCode (LLM: GLM-5.3) · 载体:agentsoft-research-platform teaching-web-platform · 证据源:demo-corpus(已脱敏语料)+ TMR 实测作业 2026-10-08;实例图截图自 TMR「实例 M0」视图

概览

5
精讲案例
18
源全量一览
4
层一线对照
1
个拒解案例
项目说明
三层一线同一份文件的四个视角并排:原始字段(M0 素材)→ 实例元素(还原结果)→ 所归元类(M1 定义,链接回 05/06 讲类卡)→ 含义解释
精讲选案claude-code(业界标准格式)/ aider(Markdown 文本源)/ codex(Part 粒度爆炸)/ swe-agent(最小闭环)/ 拒解案(诚实边界)
实例数据全部来自 TMR 对 demo-corpus 真实文件的分析作业(2026-10-08 实测),分布数字逐案可复现

第一篇 · 方法段:一份文件的三层爬升

第一篇 · 怎么读三层
取 demo-corpus 里一份 claude-code 真实会话文件(8ee257b6-….jsonl,仅 4 行的小会话——正好练手),逐片段爬一遍。
本篇 · 四栏对照法

原始字段 → 实例元素 → 元类 → 含义

文件首行原文(Claude Code 的 JSONL 事件流,一行一个事件):

{"type":"queue-operation","operation":"enqueue","timestamp":"2026-08-30T11:03:23.610Z",
 "sessionId":"8ee257b6-b37e-4cb2-9a51-66e596cb14e5","content":"当前的模型是什么"}

四栏对照(右侧两栏的实例值取自 TMR 还原结果原文):

flowchart LR subgraph RAW["文件层(M0 素材)"] R1["原始字段
sessionId / content / type"] end subgraph INST["实例层(还原结果)"] I1["实例元素
Session.id / Part.content / m3"] end subgraph META["元模型层(M1 语言)"] M1["所归元类
Session / Part / Message"] end MEAN["含义解释
这个抽象在说什么"] R1 -->|"认源 + 映射"| I1 I1 -->|"conforms-to"| M1 M1 --> MEAN
图 0 · 三层一线方法:本讲所有案例都沿这条线走读——文件 → 实例 → 元类 → 含义;conforms-to 箭头由此变成肉眼可见的表格列
① 原始字段② 实例元素③ 所归元类④ 含义
sessionId: 8ee257b6-…Session.id = 8ee257b6-…Session会话唯一标识,整份文件归属一个 Session;lifecycle 还原为 active
content: 当前的模型是什么Part.content(partType=text)Part内容落到最小内容块上;text 型 Part 不带工具字段(callId/toolName 均为 null)
(用户输入的队列消息)Message m3(role=user)Message一条消息容纳若干 Part;m3 就是用户那句提问的容器
(全文只有一条轨迹)Trajectory(recordOf=Session)Trajectory会话内唯一轨迹,挂在 Session.trajectories 下;turns/steps 为空——这份小会话没有形成回合
(会话主体)Agent …#agent-root(origin=root)Agent根 agent,origin=root 说明没有子代理;toolSet 为空

这份文件的另一个教学细节:实例里还有一条 Message m9(content="[Request interrupted by user]")——用户中途打断也被诚实还原为一条 user 消息,而不是被丢弃。

claude-code 会话还原出的实例模型图:Session、Trajectory、Agent 三个骨架节点,容纳 2 个 Message,每个 Message 含 1 个 text Part
图 1 · claude-code 小会话的实例模型(TMR「实例 M0」视图实拍):Session → Trajectory → Agent 骨架 + Message m3/m9 → Part 两条内容链。分布:Session 1 / Trajectory 1 / Agent 1 / Message 2 / Part 2
读图口诀:先找 Session(根),沿容纳边下行到 Trajectory,再走 messages 名单——每个类节点的标签就是它的 _class,与 06 讲类图一一对应。这个对照法后面四案反复使用。

第二篇 · 五案精讲

第二篇 · 每案四步走读
原始片段 → 实例走读 → 钉回元类 → 这个实例揭示什么。
案例 1 · claude-code(JSONL 事件流)

业界标准格式:一切皆事件

① 原始片段
{"type":"queue-operation","operation":"enqueue", …,"content":"当前的模型是什么"}
{"type":"queue-operation","operation":"dequeue", …}
② 实例走读
  • 队列操作事件被过滤为会话语境,真正的对话内容落为 2 个 Message(m3 提问、m9 打断)各含 1 个 text Part
  • 分布:Session 1 / Trajectory 1 / Agent 1 / Message 2 / Part 2——最小但五脏俱全的实例
③ 钉回元类
  • queue-operation 事件 → 不直接成类,成为认源信号(06 讲:认源打分靠这类指纹字段判「这是 claude-code」)
  • content → Part.content(partType=text);sessionId → Session.id
④ 揭示什么
  • 事件流格式的还原策略:不是每个事件都配成为模型元素——元模型的筛子把「协议噪声」留在认源层,把「语义内容」放进实例层
案例 2 · aider(Markdown 对话史)

纯文本也能逆向成模——本批最丰满实例

① 原始片段
# aider chat started at 2026-09-29 21:34:16
> /tmp/w77-trae/venv/bin/aider --model openai/glm-4.5-flash … --message 创建 calc.py 实现两数相加函数…
> Warning for openai/glm-4.5-flash: Unknown context window size…
② 实例走读
  • 本批语料分布最富的实例:Session 1 / Trajectory 1 / Step 9 / Message 12 / Part 14 / Agent 1 / Tool 1
  • Markdown 的段落结构(标题、引用行、代码块)被解析为 Step 分组与 Message/Part 链
③ 钉回元类
  • chat 标题时间 → Session 起点;每个 > 交互块 → Turn/Step;正文与代码块 → Part(text / file 型)
  • aider 落盘里出现的编辑动作 → Tool(aider 内建 edit 工具面)+ tool_use/tool_result 型 Part
④ 揭示什么
  • 「格式多样性行不行」的试金石:连 Markdown 都能还原,说明筛子在「语义结构」层工作,不在「文件格式」层较劲
aider 会话还原出的实例模型图:长链 Message 节点与 Step、Part、Tool 节点互联
图 2 · aider 实例实拍:左路为消息长链,右路 Step/Part/Tool 聚成执行簇——对话体落盘还原后与 JSON 源同样规整
案例 3 · codex(rollout 事件 JSONL)

Part 粒度爆炸:同一句话切出 81 个内容块

① 原始片段
{"timestamp":"2026-08-28T20:40:52.01","type":"session_meta","payload":{…}}
{"timestamp":"…","type":"response_item","payload":{"type":"message","role":"user", …}}
② 实例走读
  • 分布:Session 1 / Trajectory 1 / Step 8 / Message 11 / Part 81 / Agent 1 / Tool 1
  • Part 数是 Message 数的 7 倍多——rollout 格式把细粒度事件(增量文本、推理块、工具交互)都切成了 Part
③ 钉回元类
  • response_item 事件流 → Step(8 步聚合 200+ 事件);payload 内的消息 → Message;细粒度内容/推理块 → Part(text / reasoning 型——reasoning 是 13 系一等公民)
④ 揭示什么
  • 同一元模型下不同源的自然「体型差」:粒度是源的属性,不是模型的属性——元模型不强迫各家一样细,只保证都能装下
  • 对比着看:claude 2 个 Part vs codex 81 个 Part,做跨源统计时 Part 数必须按源分层,不能直接平均
codex rollout 还原出的实例模型图:密集的 Part 节点群
图 3 · codex 实例实拍:Step/Message 数与 aider 相近,Part 数(81)显著膨胀——粒度差异一眼可见
案例 4 · swe-agent(单个 JSON 的 history 数组)

最小闭环:学术 agent 的教科书形态

① 原始片段
{"history":[
  {"role":"system","content":"SETTING: You are an autonomous programmer…","message_type":"system_prompt"},
  {"role":"user","content":"We're currently solving the following issue…","message_type":"observation"}]}
② 实例走读
  • 分布:Session 1 / Trajectory 1 / Step 5 / Message 7 / Part 7 / Agent 1——无 Tool(该样例走 function-calling 演示,工具交互内联在消息里)
③ 钉回元类
  • history 数组逐项 → Message(role 直接映射 Role 枚举 system/user);message_type 语义 → 消息在 Step 里的分组依据
  • 整个文件一个 JSON → 单 Trajectory,无父子轨迹
④ 揭示什么
  • 「最小合规实例」长什么样:Turn 为空、SubagentLink/CompactionRecord/ContextEpoch 全空——13 类中一大半允许为空,这正是 conforms-to 但不饱满的形态(对比 05 讲 I0「零帧即失败」:空的是现象类,骨架类一个不少)
swe-agent 会话还原出的实例模型图:规整的 Step-Message-Part 链
图 4 · swe-agent 实例实拍:Step 5 / Message 7 / Part 7 的规整链条,无 Tool 无子代理——最小闭环
案例 5 · 拒解案(伪装成轨迹的杂乱文本)

模型拒绝收编的边界:宁可拒答,不可错认

① 原始片段
{"role":"user","content":"hi"}
random text line
{"foo": 1}
② 实例走读
  • 认源打分不出任何一家的高置信信号——文件被判定为拒解(rejected),不生成实例
③ 钉回元类
  • 无实例可钉——这正是教学点:conforms-to 的前提是先通过认源门禁;元模型的守门在语言之前
④ 揭示什么
  • 错误模型比没有模型更危险:硬把杂文本塞成 Session/Trajectory,下游所有分析全部污染。四态里的 rejected 就是流水线的「熔断器」
  • 延伸:本仓 5-brand(kimi/mimo/opencode…)实验轨迹流也全部拒解——它们是平台自产的事件表格式,不在已登记源之列(08 讲习题:该不该为它立源?)
拒解作业页面:红色错误条显示「实例不可用(拒解/误派/未回译)」
图 5 · 拒解案实拍:工具直接给出红色横幅「实例不可用(拒解 / 误派 / 未回译)」——诚实四态在此现场兑现

第三篇 · 18 源全量一览

第三篇 · 每个已研究 agent 一张卡
demo-corpus 18 源全部实测(2026-10-08,TMR 样例分析);分布数字 = 实例中各 _class 的节点数。本机可经深链复现。
本篇 · 全量实测表

源 → 格式 → 实例分布 → 要点

源原生格式实例分布(_class 计数)一览要点
claude-codeJSONL 事件流S1 T1 A1 M2 P2queue-operation 指纹;协议噪声被滤在认源层
aiderMarkdown 对话史S1 T1 St9 M12 P14 Ag1 Tool1本批最丰满;文本格式照样成模
codexrollout JSONLS1 T1 St8 M11 P81 Ag1 Tool1Part 粒度爆炸(81 块);reasoning 一等公民
swe-agent单 JSON historyS1 T1 St5 M7 P7 Ag1最小闭环;现象类全空也合规
qwen-codeparentUuid 链 JSONLS1 T1 Ag1 M1 P1语料件极小(4 行);链式 parentUuid 是认源指纹
clinemessages JSONS1 T1 St1 M3 P4 Ag1IDE 插件形态;单步浅会话
continuelocal session JSONS1 T1 St1 M2 P2 Ag1IDE 助手形态;结构轻量
crushcrush.db(SQLite)S1 T1 St3 M6 P11 Ag1 Tool2数据库落盘也能吃;工具面 2 件
dsh快照式 JSONLS1 T1 Tu1 St2 M7 P7 Ag1 CR1(partial)compaction-recovery 场景;CompactionRecord 实证;partial 态现身
goosesessions.db(SQLite)S1 T1 M2 P2 Ag9 Tool2子代理实证:一会话 9 个 Agent 协作(SubagentLink 的现实土壤)
kilocodekilo.db(SQLite)S1 T1 St1 M2 P3 Ag1VS Code 扩展形态;浅会话
ocexport JSONS1 T1 St2 M3 P6 Ag1 Tool1oc-export 格式族(与部分 claude 导出同源)
octopoctop.db(SQLite)S1 T1 St11 M20 P32 Ag1 Tool3本批第二丰满;工具面 3 件
openclawevents.jsonlS1 T1 St200 M200 P194 Ag1超长会话(200 步);无工具记录——裸对话流
pi时间戳 JSONLS1 T1 St1 M3 P4 Ag1极简事件面
smolagentstraj JSONS1 T1 St2 M4 P6 Ag1 Tool2HuggingFace 系;工具演示轨迹
traetraj JSONS1 T1 St5 M7 P11 Ag1 Tool2国产 IDE agent;规模中等结构全
zcodemodel-io JSONL作业完成但实例未回译展示model-io 落盘;本机重跑 ?view=instance 可复现(样例名与盘上路径不一致是已知小坑)
表里三个「现象富矿」值得记住:goose(9 Agent,子代理)、dsh(CompactionRecord + partial 态)、openclaw(200 步长会话)。做过程分析实验时,它们分别是多 agent、上下文压缩、长程漂移三类研究的现成语料。
S=Session T=Trajectory Tu=Turn St=Step M=Message P=Part Ag=Agent CR=CompactionRecord 下一讲:自己动手复现这张表 →