Open Code Review 项目解析知识图谱 / 分组目录 / 审查引擎 / 会话 JSONL 持久化

会话 JSONL 持久化

审查引擎高级方法机制G-B · 审查引擎

What · 是什么

~/.opencodereview/sessions/ 下 JSONL 记录全部任务记录(Plan/Main/压缩/重定位/反思),可回放可审计
会话持久化把每次代码审查的完整执行轨迹以 JSONL 落盘,默认目录 ~/.opencodereview/sessions/
GetOrCreateFileSession(newPath) 按文件路径建立独立会话文件,一文件一会话
AppendTaskRecord 记录 Plan/Main/MemoryCompression/ReLocation/ReviewFilter 等任务类型的事件
session_end 事件落盘标记会话正常结束
会话可回放、可审计:任何一次审查都能重建执行过程

Why · 为什么

原理 · Principle

审查过程可审计:企业级代码审查需要知道每条评论怎么来的、走了哪条定位链、用了多少轮

支持断点续审:JSONL 会话记录是 --resume 恢复执行的基础数据源

故障排查:LLM 超时、定位失败、压缩事故都能从会话记录还原现场

一文件一会话保证并行审查互不串扰,且单文件会话文件增长可控

How · 怎么做

会话文件位于 ~/.opencodereview/sessions/,按文件路径派生(GetOrCreateFileSession(newPath))
会话生命周期内所有关键任务通过 AppendTaskRecord 追加 JSONL 行,任务类型包括 Plan(规划)、Main(主审查)、MemoryCompression(记忆压缩)、ReLocation(重定位)、ReviewFilter(评论过滤)
会话结束时写入 session_end 记录并落盘,标识完整生命周期
回放时逐行读取 JSONL 重建任务时序与决策过程
审计时可按任务类型过滤查询,如只查所有 ReLocation 事件

案例 · Cases

代表性案例
审查结束后 3 天复盘,回放 JSONL 确认某条评论经历了三级定位回退才落位
线上会话崩溃后读取 JSONL 恢复现场,通过 session_end 缺失定位崩溃点
用 --resume 读取旧会话,跳过已完成指纹任务直接续审未决项
审计团队过滤 ReviewFilter 事件统计被过滤掉的低质量评论数量

反模式 · Anti-patterns

正反实例论证 · Evidence

正例 · Pro
一文件一会话,AppendTaskRecord 全量记录
sess := GetOrCreateFileSession(newPath) // ~/.opencodereview/sessions/sess.AppendTaskRecord(Plan)sess.AppendTaskRecord(Main)sess.AppendTaskRecord(ReLocation)sess.AppendTaskRecord(session_end) // 结束标记落盘
每个文件独立 JSONL 会话,Plan/Main/MemoryCompression/ReLocation/ReviewFilter 全任务类型落盘,session_end 标记正常结束,可回放可审计。
反例 · Con
多文件共用单一会话文件且不写 session_end
# 错误:全局单会话文件sess := GetOrCreateFileSession("all-files")sess.AppendTaskRecord(taskA) // 并行事件交错# 崩溃后无法区分正常结束与中断
并行审查事件交错无法还原单文件时序,session_end 缺失使回放无法区分『正常结束』与『中断』,审计与断点续审双双失效。
正例 · Pro
会话文件可回放定位崩溃点与审计决策
# 审计:只查 ReLocation 事件grep '"task":"ReLocation"' ~/.opencodereview/sessions/<session>.jsonl# 回放:逐行重建任务时序cat ~/.opencodereview/sessions/<session>.jsonl
JSONL 逐行记录全部关键任务,审计时可按任务类型过滤,回放时逐行重建执行过程,崩溃现场可通过缺失的 session_end 精确定位。
反例 · Con
只记结果不记过程,审计失去意义
# 错误:只记最终评论sess.AppendTaskRecord(ReviewResult)# 缺少 Plan/Main/ReLocation 中间过程
跳过中间任务类型后,无法回答『每条评论怎么来的、走了哪条定位链』,审计与故障排查价值归零。

实践资产 · Assets

源码节选
agent.go 核心节选:Run 流水线 / dispatchSubtasks / executeSubtask / REVIEW_FILTER
internal/agent/agent.go · 3451 B
源码节选
Run Manifest 覆盖度契约节选:RegisterSelected / FailureClass
internal/session/manifest.go · 2464 B
源码节选
viewer 服务器节选:路由 / hostGuard 防 DNS-rebind
internal/viewer/server.go · 2089 B
源码节选
OpenTelemetry 双管道初始化节选
internal/telemetry/provider.go · 1317 B

相关边