跳到主要内容

最佳实践

什么值得记住

判断标准——满足任一条即值得记:

  • 未来会复用:下次还会用到这个信息
  • 影响决策:能帮未来做选择
  • 减少重复沟通:不用每次重新解释
  • 降低风险:记住已知坑/约束可避坑

典型值得记:决策及理由、根因、稳定约束、用户稳定偏好、验证结论、已知风险、下一步待办。

Agent 集成下的简化判断:这条信息在下一次会话中还有用吗? 是 → 存;只在当前任务有用 → 不存。

什么不应该记住

绝对不记:

  • secret / token / 密码 / 凭证(用 secret vault)
  • 完整日志、完整命令输出
  • 临时调试片段(console.log、临时变量)
  • 未经确认的猜测

不该记:

  • 一次性指令(「这次先这样」)
  • 流水账(「我刚才装了 X」)
  • 可从代码直接推断的信息(无需记忆)

如何写高质量记忆

四要素:简洁、可验证、带上下文、带原因,不堆噪声。

改写前 / 改写后

❌ 改写前(差):

text
我刚刚在登录模块加了个检查,把 token 的过期时间比对了一下,之前好像有问题,现在应该好了,顺便用了 moment 库

问题:没原因、不可验证、像流水账、堆了无关细节(moment)。

✅ 改写后(好):

text
登录偶发 500 的根因是 token 过期校验用本地时区比对 expiry。修复方式是统一用 UTC 比对并移除 moment 依赖,已验证 200 次并发登录无 500。

写法约定

  • 独立自足的陈述句:脱离当时的对话也能看懂;不加「决定:」「记忆:」之类前缀(HMG 自动推断记忆的类型与确定性)
  • 一条记忆一句话:每次存 1-3 条,每条 1-2 句,别写小作文
  • 用对话的语言存:中文对话存中文,英文对话存英文
  • 标注来源:用户亲口说的记为 user(更权威),agent 自己总结的记为 agent;事后纠正时能追溯这条记忆当初是谁说的
  • 不需要先查重:HMG 内部自动精确去重;语义相近的旧记忆如果已在眼前,用 correct 更新而不是新增

如何写高质量交接

handoff 五要素:做了什么 / 为什么 / 验证 / 风险 / 下一步。它是给下一次会话看的交接文档,会话启动简报会优先召回它。

交接模板

text
做了什么: <一句话改动>
为什么: <动机/根因>
验证: <跑什么/结果>
风险: <隐患/边界>
下一步: <待办>

好坏对比

❌ 差:改完了,应该没问题

✅ 好:修复登录 500: token 过期校验改 UTC。原因: 旧逻辑用本地时区误判。验证: 200 次并发无 500。风险: 旧客户端缓存 expiry 需评估。下一步: 查刷新 token 流程。

如何减少召回噪声

做法说明
写具体 query登录 500 根因 优于 登录
用名词短语PostgreSQL 连接池配置 优于 我们之前决定用什么数据库来着;保留关键实体(人名/项目名/技术名/文件名)
用对作用域项目信息别放 tenant;Agent 集成中 scope 自动推断,无需操心
及时纠正过期信息别让旧信息和新信息并存
不写低质量记忆源头减噪最有效
--profile compact给 Agent 用精简结果
反馈噪声短语hmg noise-feedback "某噪声词" 帮 HMG 学会过滤
bash
# 遇到反复出现的噪声结果, 反馈给 HMG
hmg noise-feedback "npm install 成功" # 让这类短语被检索时降权

危险操作注意

日常使用没什么可担心的,只有三件事需要留意:

  • 凭证不进记忆:API key、密码、连接串用 hmg secret store 存保险库。误写进记忆了,立即 hmg govern <atom-id> --action tombstone --destroy-payload 清除。
  • tombstone / seal 不可逆:执行前确认 atom 没搞错(hmg history <atom-id> 可查)。只是暂时不想看到,用 quarantine(可恢复)。
  • store 不要提交到 Git:store 目录含索引和二进制数据,加进 .gitignore;备份直接复制目录即可。

下一章:集成