记忆与会话
hara 如何跨运行记住一切 —— 持久记忆、可恢复会话、文件检查点与回退。
持久记忆
hara 维护一份 始终加载、与当前目录无关 的记忆 —— 全局事实在
~/.hara/memory/,加上每个项目自己的事实在 .hara/memory/。无论你从终端还是
聊天 app 驱动 hara,它都是同一个大脑。
hara memory show # 会话开始时注入的记忆摘要
hara memory init # 脚手架生成记忆目录 + 种子文件
hara memory distill # 把近期每日日志提升为持久 MEMORY工作过程中,hara 会把决策记录到短期的每日日志;distill 会把它们合并进持久的
MEMORY.md。它保存得多积极由 evolve 设置决定(proactive · light · off)。
顶层的 USER.md 保存处处生效的全局偏好。
会话
每一次对话都会被保存,并且可以恢复。
hara sessions # 列出已保存的会话
hara -c # 恢复此目录下最近的会话
hara --resume <id> # 恢复指定的会话
hara export <id> --out session.md # 把一个会话渲染成 Markdown网关 复用同一套机制:每个(聊天、目录)组合都有自己可恢复的线程。
检查点与回退
hara 会在 每个回合之前 把你的文件快照到仓库 之外 的影子 git 存储中
(~/.hara/checkpoints/),因此你随时可以退回 —— 而真实的 git 历史保持干净。
| REPL 中 | 作用 |
|---|---|
/undo | 撤销本会话最近一次文件改动 |
/checkpoint · /checkpoint restore <n> | 列出 / 恢复某个文件状态快照 |
/rewind <n> | 把对话分叉回到更早的回合(文件不动) |
如果你不需要快照,可用 fileCheckpoints false 关闭。
自动压缩
长会话不会崩:当上下文窗口接近占满时,hara 会总结目前为止的对话并继续
(与按需触发的 /compact 是同一件事)。用 autoCompact false 或
HARA_AUTO_COMPACT=0 可关闭它。
摘要是八段式结构化简报——目标、关键技术概念、决策、文件与代码、错误与修复、当前状态、 你的全部消息(逐字、按序保留)(无论历史被压得多狠,你的意图都不会漂移),以及带你最近 一条请求原话的下一步。
注意力刷新
长任务里 agent 会自己盯住焦点:当清单还有未完成项、且连续五个工具轮次没被更新时,一条静默的
system-reminder 会把权威清单重新展示给模型并要求过一遍状态——多步工作不再悄悄丢掉自己的计划。
reminder 只对模型可见(不会出现在你的对话里),并始终带"与任务无关就忽略"的声明。