Files
Hermes-Skills/okx-auto-position/references/v4.5.75-2026-09-02-memory-only-hard-rules-qdrant-takes-rest.md
T

5.0 KiB

v4.5.75 — 2026-09-02 memory.md 只装硬规则,Qdrant 装细节

背景

Qdrant 已经是 Hermes 的 vector store 主记忆库 (memory.provider: qdrant,见 v4.5.69 + v4.5.74 集成)。memory.md 是压缩索引,1,375 字符上限,sync_memory.sh 每小时自动同步到 Qdrant。Qdrant 按每条消息关键词 top-3 召回,主动注入 system prompt。

但 agent 之前仍习惯"看到教训就往 memory.md 加" — 这次实战教训把规则拍实:memory.md 只装硬规则(每个 turn 必须看到的),细节/教训/SKILL 笔记去 Qdrant 或 skill。

1. 铁律: 内存满时只缩短,不删除

user 原话

"我从没让你删除memory,只让你同步到qdrant库" "要是全都是缩短的内容,但也满了呢" → "没有升级这一说" — agent 编造不存在工具能力

agent 实际犯的错

  1. 误以为"memory 满了可以 remove 腾空间" — 错。memory --action remove 删的是索引条目,Qdrant 里虽然有完整内容,但关键词召回路径断了 — 下次 Qdrant recall 按"dividend_highfreq"关键词检索,搜不到任何 memory 条目有这关键词(已删),就永远不会主动召回。
  2. 编造"memory 升级" /"拆分 profile" /"session_search 代替 memory" 等不存在的工具能力 — 错的,memory tool 没这些 API。

正确做法

情况 应该 不应该
memory.md 满了 memory --action replace 缩短现有条目,保留关键词 memory --action remove 删条目
新教训要长期保存 写到 Qdrant(用 skill/references)+ 保留关键词索引在 memory.md 直接写大段文字进 memory.md
永久硬规则 (行为/偏好/严禁) memory.md (每个 turn 看到) Qdrant (会按时间衰减,详见 v4.5.74)
SKILL 配置/bug fix/特定 cron 细节 skill 的 references/.md memory.md

user 纠正的具体场景

"要从哪删掉吗" → "不主动删除,memory 满了只能缩短/合并。Qdrant 里也有同一份,但 Qdrant 召回要靠 memory 里的关键词触发。如果 memory 里删了,Qdrant 里的相应内容就永远不会主动被召回了。"

2. Qdrant 优先工作流

user 原话

"暂不清理,但现在优先用 qdrant,更新也是。"

工作流

  1. 每个信号/操作前 — 调 qdrant_recall(query=关键词, top_k=3) 主动召回相关历史教训(已有自动召回,但信号处理类操作前要主动 trigger 一次)
  2. 新知识/教训/SKILL 笔记/bug fix — 优先写到 Qdrant(skill_manage save as skill,或写 references/<topic>.md)
  3. memory.md 保留的 — 只有行为/偏好/严禁类硬规则(几行关键词级别)
  4. memory_check.sh + sync_memory.sh — 保持运转,自动双向同步(memory → Qdrant 备份,Qdrant 召回有锚点)

memory.md 当前 7 条 (2026-09-02 复审)

每条都是硬规则关键词,不是细节:

条目 类型
QQ 私信为主、TG 仅做信号源 通信偏好
先查再说,不抛问句 行为硬规则
OKX 跟单只跟熬鹰资本 (trader 白名单) 配置锚点(细节在 whitelist.json)
模型偏好 (M3 + 流式关闭) 配置
memory_check.sh cron 默认不截断 操作约束
OKX 调杠杆=加仓调资金占用 概念纠正
7% 资金占用原则 风险约束

**全部是"必须每个 turn 看到"或"严重陷阱"级别。**具体数值/公式/具体代码改动 → 全部在 Qdrant + skill references。

3. agent 必须不编造工具能力

user 原话

"memory有升级这一说?"

教训

agent 在用户问"memory 实在放不下的时候呢"时,编造了"选项 1: 提高上限 / 选项 2: 拆分 profile / 选项 4: 真存档到 Qdrant" — 但前 3 个选项根本不存在(memory tool 没这些 API),是 agent 看到"这是个难问题"就编造的。

铁律: 遇到不知道的,说"不知道/这个我没 API",绝不编造"提升上限 / 拆分 profile / 删除/编辑 Qdrant 索引"等不存在的工具能力。

memory tool 的实际 API 列表:

  • add - 添加条目
  • replace - 缩短/合并现有条目
  • remove - 删除(只用于永久移除过期索引,不用于腾空间)
  • operations - 批量组合以上

没有: 上限调整、profile 拆分、archive、版本回滚、外部存储迁移 — 这些都不存在,agent 不要假装有。

4. 删除 memory 时的例外情况(罕见)

唯一可以 memory --action remove 的场景:该条目记录的硬规则本身被废了(用户改主意,规则反转)。

例:

  • 之前 memory 写"调杠杆 = OKX setLeverage API" → 错了,用户纠正"调杠杆 = 加仓调资金占用" → ✅ remove 旧条目 + add 新条目(关键词变了,旧关键词不再召回,新关键词加入召回)
  • 但不要为了腾空间删条目 — 那是丢失。

关联

  • v4.5.74 — Qdrant 时间衰减 + indexed_at (新笔记优先)
  • v4.5.71 — 白名单写 whitelist.json 不写代码 (此规则的同源)
  • v4.5.69 — GFW proxy 真相(此规则的同源:agent 习惯硬编码 / 编造配置)
  • user-preference-urgency-and-no-asking.md — 反问禁令