首页/新闻资讯/正文详情

Codeg 会话解析器实现原理:15 种 AI Agent 本地会话文件如何聚合为统一可搜索模型

发布时间:2026/9/25 22:46:01 来源:云帆数科 栏目:资讯中心
Codeg 会话解析器实现原理:15 种 AI Agent 本地会话文件如何聚合为统一可搜索模型
Codeg 会话解析器实现原理15 种 AI Agent 本地会话文件如何聚合为统一可搜索模型【免费下载链接】codegCollaborative multi-agent AI coding workspace: aggregate sessions from Claude Code, Codex, OpenCode, Pi, Grok Build, etc. Desktop app, self-hosted server, or Docker.项目地址: https://gitcode.com/gh_mirrors/co/codeg如果你同时使用 Claude Code、Codex、OpenCode 等多个 AI 编程 Agent会话记录散落在各自工具的目录里格式互不兼容、无法统一搜索。Codeg是一个协作式多 Agent AI 编码工作区桌面应用 / 自托管服务 / Docker它的会话解析器Session Parser能反向解析 15 种 AI Agent 留在本地的原始会话文件——JSONL、SQLite、JSON 等——并聚合为统一的、可搜索的会话数据模型。本文用通俗的方式讲清楚这套解析器的实现原理几乎不需要你读代码。为什么需要会话解析器15 种文件格式的混乱现场 每个 AI Agent 都把历史会话写在自己家的目录里而且写法五花八门AI Agent会话存储形态默认位置Claude Code每会话一个 JSONL 文件~/.claude/projects/Codex CLIrollout-*.jsonl日志~/.codex/sessions/OpenCode单个 SQLite 数据库opencode.dbGemini CLIJSON 会话文件 .project_root~/.gemini/tmp/项目/chats/OpenClawAgent 目录~/.openclaw/agents/Clinesessions/目录 实时 SQLite 索引~/.cline/data/Hermes单个 SQLite 状态库~/.hermes/state.dbCodeBuddyJSONLOpenAI item 记录格式~/.codebuddy/projects/Kimi Code每会话一个目录 session_index.jsonl~/.kimi-code/sessions/Pi每会话一个 JSONL~/.pi/agent/sessions/Grok每会话一个目录~/.grok/sessions/Cursor每会话一个 SQLitestore.db~/.cursor/chats/md5/uuid/DeepSeek每会话目录 内容寻址附件库~/.dsh/sessions/Qoder每会话一个 JSONL~/.qoder/projects/AntigravitySQLite 轨迹 .meta伴随文件~/.gemini/antigravity-acp/conversations/要统一搜索所有 AI 会话等于要同时读懂这 15 套格式。Codeg 的解法是为每种 Agent 写一个专用解析器全部收敛到同一个 trait 和同一套数据模型。统一入口一个 trait 一个工厂函数整个解析器体系的核心只有两个小东西位于 parsers/mod.rsAgentParsertrait只有两个方法——list_conversations()列出所有会话摘要和get_conversation(id)读取某条会话的完整内容。任何 Agent 想接入 Codeg实现这两个方法即可。build_agent_parser()工厂函数parsers/mod.rs这是历史解析器唯一被构造的地方。按 Agent 类型分发到对应的解析器实现并额外包一层RouteSanitized把 Codeg 内部注入的agent路由标记从各家 Agent 的原始记录里干净剥离——无论哪个解析器都逃不过这道清洗。15 个内置 Agent 的类型定义在 models/agent.rs其中还预留了Custom变体用户自定义注册的 ACP Agent 没有本地格式可逆向直接复用 Codeg 自己的 ACP 转录parsers/acp_native.rs。从原始文件到统一模型解析器都产出什么所有解析器最终都吐出同一组 Rust 结构体这是聚合的关键——下游 UI 和搜索完全不关心原始文件长什么样ConversationSummary会话摘要标题、Agent 类型、工作目录、起止时间、消息数、模型、Git 分支……侧边栏列表就是由它驱动的。MessageTurn消息轮次统一的用户/助手回合模型文本、图片、工具调用都收敛为统一的ContentBlock并携带 token 用量TurnUsage。SessionStats会话统计聚合输入/输出/缓存 token 与总耗时供底部状态栏和 token 仪表盘使用。每个 Agent 解析器是独立模块一文件一 Agentclaude.rs、codex.rs、opencode.rs、cursor.rs、antigravity.rs 等全部在 src-tauri/src/parsers/ 目录下。几个典型的逆向工程细节Codex 解析器只认文件名以rollout-开头的 JSONL真实 Codex CLI 的命名惯例并从session_meta事件里恢复工作目录与 Git 分支可对照 tests/parsers_snapshot.rs 中的最小会话样例。Claude 解析器要用正则剔除 CLI 注入的system-reminder等内部 XML 标签过滤掉给模型看的记账记录只留下真正的对话claude.rs。SQLite 类 AgentOpenCode、Hermes、Cursor、Antigravity、Cline则用只读方式打开数据库读取绝不写库保证不影响 Agent 正常运行。路径解析尊重每个 Agent 的环境变量约定解析器定位会话目录时严格跟随各 Agent 自己的环境变量CLAUDE_CONFIG_DIR、CODEX_HOME、GEMINI_HOME、CURSOR_CONFIG_DIR、DSH_HOME等并对~前缀做了与各家 Agent逐一对齐的展开规则——有的 Agent 展开~有的按字面处理Codeg 的 expand_home_prefix 精确镜像了每个 Agent 的行为避免Codeg 指向了 Agent 根本没用的目录。这些路径还被同一张清单复用于备份external_transcript_sources()parsers/mod.rs用白名单精确圈定只归档会话数据绝不携带凭据——例如 Gemini 目录里混着oauth_creds.json白名单保证 API 密钥永远不会进备份包。这是读别人的数据时非常克制的一个设计。共享的后处理让 15 种格式产出一致的体验 ✨原始格式千差万别但展示体验必须一致靠的是一组共享工具函数标题生成title_from_user_text 先把你首条消息里的 Markdown 文件引用折叠成纯文本标签再截断到 100 字符保证任何 Agent 的会话标题都不会出现半截 file 用时间轴平铺策略推算不报告耗时的 Agent 的每轮耗时——一次回复若被拆成多个子轮次各轮耗时平铺分割整段时长而不是都从提问时刻重复计算否则一次 9 分钟的 Codex 回复会报出 49 分钟。统计聚合compute_session_stats 汇总 token 与时长某 Agent 不报告 token 时字段保持None而非显示 0——它没说和它说是免费的是两回事。上下文窗口推断按模型名推断窗口上限Claude 默认 200K、1m后缀识别 1M 通道、Gemini 1M 等让用户无需配置就能看到上下文占用百分比。聚合之后统一入库全量可搜索 解析只是第一步。导入流程以(external_id, agent_type)作为唯一身份把各 Agent 的会话登记进 Codeg 自己的本地数据库幂等重复导入只刷新标题、不产生重复行见 models/conversation.rs 的ImportResult。之后侧边栏按文件夹 → 会话聚合展示Search入口可对所有 Agent的会话统一检索会话按目录/Agent 分组统计SidebarData / AgentStats一眼看出哪个 Agent 产生了多少会话打开任意历史会话走的仍是同一个ConversationDetail结构和实时会话渲染路径共用一套 UI。质量保障快照测试锁住每一种格式 每种格式都是逆向出来的最怕的是某天 CLI 悄悄改了结构。Codeg 用快照测试snapshot test兜底tests/parsers_snapshot.rs 为 Claude、Codex、Gemini、Cline、Hermes、Kimi Code、OpenClaw、OpenCode 等构造最小化磁盘夹具跑一遍list_conversationsget_conversation再把 JSON 输出与 tests/snapshots/ 下已提交的.snap文件逐字节比对时间戳统一打码为[ts]。格式一旦漂移CI 立即报警。小结一张图看懂整套解析器各 Agent 本地文件JSONL / SQLite / JSON │ 15 个专用解析器一文件一 Agent ▼ AgentParser traitlist_conversations / get_conversation │ build_agent_parser 统一构造 RouteSanitized 清洗 ▼ 统一模型ConversationSummary → MessageTurn / SessionStats │ 以 (external_id, agent_type) 幂等入库 ▼ Codeg 本地库全 Agent 统一搜索、按文件夹/Agent 聚合统计核心设计思想只有一句话把读 15 种方言的复杂度全部封在解析器层向上只暴露一个 trait、一套数据模型聚合、搜索、统计、展示因此天然一致。延伸阅读解析器模块 src-tauri/src/parsers/、统一数据模型 src-tauri/src/models/conversation.rs、快照测试 src-tauri/tests/parsers_snapshot.rs。克隆仓库git clone https://gitcode.com/gh_mirrors/co/codeg后运行cargo test -p codeg-lib parsers_snapshot即可亲眼看到每种 Agent 的解析输出。【免费下载链接】codegCollaborative multi-agent AI coding workspace: aggregate sessions from Claude Code, Codex, OpenCode, Pi, Grok Build, etc. Desktop app, self-hosted server, or Docker.项目地址: https://gitcode.com/gh_mirrors/co/codeg创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

SAM2实战指南:用Ultralytics实现自动/框选/点选分割
SAM2实战指南:用Ultralytics实现自动/框选/点选分割

简介:面向需要快速上手SAM2的计算机视觉开发者,这套资源基于Ultralytics框架封装了Segment Anything Model 2的完整测试代码与预训练权重。压缩包共7个文件,包含4个pt格式的模型权重(覆盖tiny、base、small、large等不同规格&… · 2026/9/25 22:45:48

AI Agent 与 DolphinX 实现行情数据零代码接入实战
AI Agent 与 DolphinX 实现行情数据零代码接入实战

1. 行情中心的数据接入困局与破局思路做过金融行情类项目的人都有一个共同感受:数据接入这件事,表面上只是“把数据灌进数据库”,实际上能吃掉整个项目一半以上的工期。我参与过几个行情中心的搭建,从最早的纯手工写脚本&#xff… · 2026/9/25 22:45:10

企业级 Skill 完整封装流程:从 Node.js/Python 到 TaoToken 统一调用
企业级 Skill 完整封装流程:从 Node.js/Python 到 TaoToken 统一调用

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/25 22:45:10

特征处理进阶指南:从AUC 0.72到0.79的实战提升
特征处理进阶指南:从AUC 0.72到0.79的实战提升

在最近一次客户流失预测的项目里,我遇到了一件让自己印象很深的事:第一轮特征处理(缺失值填充、归一化、类别编码)做完之后,LightGBM的AUC停在0.72左右,不管怎么调参都上不去。后来我停下调参,回… · 2026/9/26 2:16:10

大促主从延迟与读写分离陷阱:复制链路优化与关键业务强一致读路由
大促主从延迟与读写分离陷阱:复制链路优化与关键业务强一致读路由

大促主从延迟与读写分离陷阱:复制链路优化与关键业务强一致读路由在大促活动的架构设计中,**读写分离(Read-Write Splitting)**是分摊数据库(MySQL)主库压力、提升系统整体只读吞吐的经典手段。通常架构师会… · 2026/9/26 2:16:04

基于 eBPF 的生产零侵入网络与系统延迟剖析:BCC 与 bpftrace 实战
基于 eBPF 的生产零侵入网络与系统延迟剖析:BCC 与 bpftrace 实战

基于 eBPF 的生产零侵入网络与系统延迟剖析:BCC 与 bpftrace 实战在大促活动的核心生产环境中,遇到偶发性网络长尾抖动或系统调度卡顿是最棘手的疑难杂症。此时,系统面临三重严苛的排查约束: 严禁重启服务:服务处于数十… · 2026/9/26 2:16:04

一份catalog.json生成45个Skill包:AlphaGBM Skills代码生成与一致性校验架构揭秘
一份catalog.json生成45个Skill包:AlphaGBM Skills代码生成与一致性校验架构揭秘

一份catalog.json生成45个Skill包:AlphaGBM Skills代码生成与一致性校验架构揭秘 【免费下载链接】skills Bring realtime market data and research workflows into Claude Code, Cursor & beyond — 29 open-source Skills for stocks, options and commoditi… · 2026/9/26 2:15:52

Moto 中 Kinesis Video Archived Media 服务的 Mock 实现指南:会话 URL 生成与视频剪辑获取
Moto 中 Kinesis Video Archived Media 服务的 Mock 实现指南:会话 URL 生成与视频剪辑获取

Mock测试 【免费下载链接】moto A library that allows you to easily mock out tests based on AWS infrastructure. 项目地址: https://gitcode.com/gh_mirrors/mo/moto 点击查看 免费下载 本指南聚焦开源仓库 moto 对 AWS Kinesis Video Archived Media&#xf… · 2026/9/26 2:15:52

Cursor账户问题排查手册:从登录失败到设备风控的完整指南
Cursor账户问题排查手册:从登录失败到设备风控的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 2:15:52

数据库课后习题答案别硬背:当测试用例集刷,效率翻倍
数据库课后习题答案别硬背:当测试用例集刷,效率翻倍

简介:万常选版《数据库原理与设计》课后习题答案资源,覆盖第2至6章及第9章,适合正在学习关系模型、数据库建模、关系数据理论与模式求精的本科生、自学者作为复习与自测材料。压缩包共7个文件,含3个doc参考答案、2个sql示例脚本、… · 2026/9/26 0:00:21

OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置
OpenClaw 替代品?Hermes Agent 踩坑实录:macOS 飞书接入 TaoToken 配置

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/9/26 0:00:40

向下兼容与向上兼容:接口设计中的兼容性策略与工程实践
向下兼容与向上兼容:接口设计中的兼容性策略与工程实践

一次版本升级事故,是很多团队绕不过去的坎。线上环境里,服务端明明已经上线了新版接口,老的移动端还在照着旧文档传参数。请求一到网关,校验直接拒绝,用户操作失败,客服群炸了锅,开发群里开始互… · 2026/9/26 0:00:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码