OpenCode会话可视化
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @user_b53e245c/nigo-opencode-session-visualizer。
技能介绍
问题:compaction 之后,会话上下文永久变短
OpenCode 在上下文接近上限时会触发压缩(compaction),把较早的消息折叠成 checkpoint。这一步不可逆:从 checkpoint 恢复会话时,你只能看到压缩之后的消息,此前的思考过程、工具调用细节、被否决的方案全部消失。你无法复盘自己是怎么走到当前状态的,也无法把一段完整上下文分享给同事。
但数据并没有丢。opencode.db 里完整保留了所有消息,只是官方界面不再展示。这个技能直接读数据库,把被折叠掉的部分重新拼回来。
工作方式:导出 → 渲染为单文件 HTML
脚本分两步,也可以合并成一条命令:
export_session.py从数据库提取完整会话,支持按session_id精确或部分匹配,--list可列出最近的会话。generate_html.py把数据注入template.html的__SESSION_DATA__占位符,输出自包含的单文件页面。- 生成结果复刻官方 share 页面的视觉风格:暗色主题(
#131315背景、#0b0b0c代码块)、marked.js渲染 Markdown、highlight.js代码高亮。
交互上做了几件复盘时真正需要的事:左侧边栏列出所有用户消息摘要,滚动时自动高亮当前项;工具调用和 reasoning 默认折叠,点开才看 Input/Output;compaction checkpoint 用琥珀色卡片显式标出,一眼就能看出上下文在哪断过。
浏览器内还可以直接编辑:悬浮用户消息会浮现删除和截断按钮,删除会连带移除其后连续的助手回复,截断则清空该条之后的全部内容;操作完成后导航栏出现导出按钮,下载清理后的 HTML。原始数据库不受影响。
适用边界与注意点
- 数据库通常有 5GB+,查询务必带
WHERE session_id条件。脚本已内置,但手动写 SQL 时要注意。 - 会话很大时(200+ 条消息)HTML 可能超过 5MB,浏览器能处理,但分享前最好先删一些内容。
- 删除和截断只在生成的 HTML 里生效,不会回写数据库,想还原只能重新生成。
- 依赖 CDN 加载
marked.js、highlight.js和 JetBrains Mono 字体,离线环境下渲染会降级。
使用场景
- 长时间调试后上下文被压缩,想找回被折叠掉的早期排查过程和工具调用记录。
- 会话里有完整的思路演进,需要导出成单文件 HTML 发给同事做代码审查或方案评审。
- 想把一次 agent 执行过程整理成可分享的技术复盘文档,附带工具调用输入和输出细节。
- 想删掉分享版本里的敏感消息或无关对话,只保留一段干净的对话尾部并导出新的 HTML。
适合人员
- 负责排查复杂 bug 的工程师,需要在上下文压缩后仍能完整复盘之前的尝试。
- 经常让 AI agent 自主完成多步任务的技术负责人,想审查 agent 实际执行了什么操作。
- 需要把 AI 对话整理成可归档、可分享的技术文档的开发者,希望保留代码高亮和结构。
- 希望在分享会话前做隐私清理的工程师,需要删除敏感消息或截断无关内容而不改动数据库。