harahara
核心概念记忆与会话

记忆与会话

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、精确的 targetProfileIdtargetModel,以及 transferHistory: true。Hara 会检查目标模型授权和原生图片历史兼容性,再创建一个可写的新对话; 原对话保持不变,只有用户下一次明确发送消息时,目标供应商才会收到复制的对话上下文。

检查点与回退

hara 会在 每个回合之前 把你的文件快照到仓库 之外 的影子 git 存储中 (~/.hara/checkpoints/),因此你随时可以退回 —— 而真实的 git 历史保持干净。

REPL 中作用
/undo撤销本会话最近一次文件改动
/checkpoint · /checkpoint restore <n>列出 / 恢复某个文件状态快照
/rewind <n>把对话分叉回到更早的回合(文件不动)

如果你不需要快照,可用 fileCheckpoints false 关闭。

自动压缩

长会话不会崩:当上下文窗口接近占满时,hara 会总结目前为止的对话并继续 (与按需触发的 /compact 是同一件事)。用 autoCompact falseHARA_AUTO_COMPACT=0 可关闭它。

摘要是八段式结构化简报——目标、关键技术概念、决策、文件与代码、错误与修复、当前状态、 你的全部消息(逐字、按序保留)(无论历史被压得多狠,你的意图都不会漂移),以及带你最近 一条请求原话的下一步。

注意力刷新

长任务里 agent 会自己盯住焦点:当清单还有未完成项、且连续五个工具轮次没被更新时,一条静默的 system-reminder 会把权威清单重新展示给模型并要求过一遍状态——多步工作不再悄悄丢掉自己的计划。 reminder 只对模型可见(不会出现在你的对话里),并始终带"与任务无关就忽略"的声明。

Was this helpful?
harahara
A product by Nanhara · Apache-2.0 · v0.178.3

© 2026 Nanhara Technologies