【免费下载链接】MiniCode
A lightweight terminal coding assistant with Claude Code-like workflow, tool loop, and TUI architecture, built for learning and experimentation. Multi-language support: TypeScript , Python and Rust implementations available now.
MiniCode 是一款轻量级终端 AI 编程助手,它的会话管理功能让每一次对话都自动落盘保存:你可以随时用/resume恢复历史会话,也可以用/fork把当前会话分叉成独立副本,AI 对话从此永不丢失。
为什么你需要 MiniCode 会话管理
和 AI 编程助手长时间协作时,经常会遇到这些尴尬瞬间:
- 🔌 终端意外关闭,聊了半小时的方案思路全部丢失;
- 🤔 想尝试另一种实现方案,却不敢动当前会话,怕把"正确的版本"覆盖掉;
- 📚 隔天回来接着干活,AI 完全不记得昨天讨论过的设计决策。
MiniCode 把会话当作一等工作流来处理:每轮对话后自动保存,按项目隔离存储,恢复、重命名、分叉、压缩全部内建。下面带你快速掌握核心用法。
一分钟看懂:MiniCode 如何保存你的对话
MiniCode 的每条对话都会以追加写入的 JSONL 事件格式落盘,存储结构如下:
- 所有会话统一存放在
~/.mini-code/projects/目录下(路径常量定义在 src/config.ts); - 目录名由你的工作目录生成,会话按项目天然隔离,不同项目的对话互不干扰;
- 每个会话是一个
{sessionId}.jsonl文件,会话 ID 为 8 位短 ID,方便口头交流; - 超过 30 天未更新的会话会在下次启动时自动清理,保持目录整洁。
整套读写逻辑集中在 src/session.ts 中:saveSession负责增量追加、loadSession负责恢复、forkSession负责分叉。由于是追加式写入,即使中途断电,已发生的对话也不会损坏。
/resume 快速上手:一步恢复历史对话
MiniCode 启动时如果发现当前项目有历史会话,会在界面上主动提示你:
Found 3 saved session(s). Type /resume to continue one.
也就是说,恢复入口永远在嘴边。有三种用法:
方式一:打开会话选择器(交互式恢复)
直接输入/resume,MiniCode 会弹出一个全屏选择器,每行显示会话 ID、标题、消息数和相对时间(如 "2h ago"):
↑/↓:上下移动选择Enter:恢复选中会话d:删除会话(按两次确认,防止误删)Tab:切换到"全部项目"视图,跨项目找回会话Esc:取消
没改过名字的会话会自动取第一条用户消息的前 60 个字符作为标题,方便你一眼认出是哪次对话。
方式二:用 ID 精确恢复
如果启动时终端打印了会话 ID,或你清楚记得 ID,可以直接:
/resume a1b2c3d4跳过选择器直达目标会话。恢复成功后界面会显示:
Session a1b2c3d4 resumed (42 messages loaded).
方式三:启动时直接恢复(CLI 参数)
不想进界面再敲命令?在启动 MiniCode 时就指定:
minicode --resume # 启动后直接打开会话选择器 minicode --resume <id> # 启动后直接恢复指定会话参数解析逻辑位于 src/index.ts,非常适合在脚本或 shell 别名中使用。
一个小细节:即使会话曾经被/compact压缩过,恢复时也会自动从最近的压缩边界加载摘要 + 后续消息,长会话照样无缝衔接,你不需要关心压缩的内部细节。
/fork 分叉会话:安全试错的关键操作
/fork是 MiniCode 会话管理中最好用的"后悔药"。执行后它会:
- 把当前会话完整复制为一个新的独立会话;
- 自动命名为
原标题_fork1、原标题_fork2……依次递增; - 立刻把当前上下文切换到新会话,原会话原封不动地保留。
界面提示如下:
Session forked. Now in session ef02ab34. Original session preserved.
什么时候该用 /fork?
- 🧪尝试激进重构:在主会话上分叉,大胆让 AI 改代码;不满意就丢弃 fork,主会话毫发无损;
- ⚖️方案对比:同一个问题分叉出两个分支,一条线走保守方案、一条线走激进方案,最后择优;
- 🔁回滚实验:在 fork 里测试新提示词、新工具链,验证有效再手动合并思路。
同样,它也有 CLI 版本,可以在启动时一步完成"分叉 + 恢复":
minicode --fork <id> # 分叉指定会话并直接进入新分支日常会话维护:/rename、/new 与删除
光会恢复还不够,把会话库整理好才是长期使用的关键:
| 命令 | 作用 |
|---|---|
/rename <name> | 给当前会话起一个有意义的名字,以后在选择器里一眼可辨 |
/new | 开始全新会话(旧会话保留,不会被删) |
/resume选择器中按d | 删除不需要的历史会话 |
推荐养成习惯:每开始一个主题就/rename一次,比如login-refactor、api-debug。MiniCode 每次切换会话前都会先把当前会话刷盘保存(逻辑见 src/tty-app.ts),所以/new、/resume、/fork都不会丢消息。
会话文件在哪里?可以手动查看吗
当然可以,会话就是普通的文本文件:
- 目录:
~/.mini-code/projects/(项目名做了目录安全化转码) - 文件:
<sessionId>.jsonl,每行一个 JSON 事件(用户消息、助手回复、工具调用、压缩边界等) - 想翻阅某次对话的完整过程,直接用
cat或less打开即可
事件类型的定义和loadTranscript重建逻辑都在 src/session.ts,如果你想写脚本批量导出或归档会话,这份实现是很好的参考。更详细的长会话与上下文管理机制,可以阅读官方中文使用指南 USAGE_ZH.md。
常见问题速查(FAQ)
Q:提示Session xxx not found.怎么办?A:会话按工作目录隔离,确认你在当初聊天时所在的项目目录下执行/resume;也可以用选择器里的Tab切换到全部项目视图查找。
Q:fork 出来的会话和原会话会互相影响吗?A:不会。/fork是完整复制,之后两条会话各自独立写入,互不干扰。
Q:会话会一直堆积吗?A:不会。超过 30 天未更新的会话会在启动时自动清理,界面会提示Cleaned up N expired session(s)。
Q:压缩(/compact)后恢复会话,上下文还在吗?A:在。恢复逻辑会定位到最近的压缩边界,加载摘要和边界之后的消息,长对话依然可继续。
总结:三条命令,对话零丢失
MiniCode 的会话管理把复杂都藏在了 src/session.ts 和 src/tty-app.ts 里,留给你的只有极简的操作面:
/resume—— 随时找回任何一次对话;/fork—— 分叉试错,原会话永远安全;/rename+/new—— 让会话库井井有条。
配合minicode --resume与minicode --fork两个 CLI 参数,你的 AI 协作历史将像 Git 提交一样可追溯、可分支、永不丢失。
【免费下载链接】MiniCode
A lightweight terminal coding assistant with Claude Code-like workflow, tool loop, and TUI architecture, built for learning and experimentation. Multi-language support: TypeScript , Python and Rust implementations available now.
相关推荐
Zero会话管理实战:resume、fork与rewind让AI对话可恢复可回滚
Zero会话管理实战:resume、fork与rewind让AI对话可恢复可回滚 Zero 是一款运行在本地终端的 AI 编程代理(coding agent),
永不丢失的对话:Parlant会话持久化与状态恢复全攻略
永不丢失的对话:Parlant会话持久化与状态恢复全攻略 你是否遇到过这样的困境:客服AI刚刚理解用户的复杂需求,服务器重启后一切归零?或者用户中途离开,回来时
AI Agent人工智能后端RAG如何让你的Emacs状态永不丢失:Nano Emacs会话管理与持久化完整指南
如何让你的Emacs状态永不丢失:Nano Emacs会话管理与持久化完整指南 Nano Emacs是一款让GNU Emacs变得简单的配置框架,其会话管理功能
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考