记忆与会话
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网关 复用同一套机制:每个(聊天、目录)组合都有自己可恢复的线程。
在 Serve 客户端中恢复已失效连接的对话
通过认证的 hara serve 客户端可以先检测 sessions.readonly-history.v1,再调用
session.history;它无需初始化供应商即可显示已保存记录,返回结果会明确标为只读。因此,组织
连接被撤销或模型被移出授权列表时,本机保存的历史仍可查看;session.resume 仍会拒绝在该失效
路由上发起新工作。
若要换连接继续,请先检测 sessions.cross-profile-fork.v1,取得用户同意后调用 session.fork,
同时传入源 sessionId、精确的 targetProfileId 与 targetModel,以及
transferHistory: true。Hara 会检查目标模型授权和原生图片历史兼容性,再创建一个可写的新对话;
原对话保持不变,只有用户下一次明确发送消息时,目标供应商才会收到复制的对话上下文。
检查点与回退
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 只对模型可见(不会出现在你的对话里),并始终带"与任务无关就忽略"的声明。