Skip to content

AI交易记忆模块(Agent Memory)幻觉修复与盈亏反馈闭环升级 #9

@yuqiaowu

Description

@yuqiaowu

📌 背景与发现的问题

在近期的实盘运行监控中,我们发现 AI 大模型(ai_trader.py)在分析持仓(Portfolio)状态和输出反思日志(Reflection)时,出现了严重的逻辑幻觉(Hallucinations)

  1. “幽灵吃单”幻觉现象:

    • 症状: 资金真实报表 PORTFOLIO_STATE_JSON 中清楚显示系统当前仅持有 BNB,但在 AI 的自我反思输出里,却凭空捏造出一句:“SOL已经有两个持仓,优先管理现有头寸”,从而导致它错误地停止了正确方向上的加仓动作。
    • 根本原因: 旧版记忆模块 TradeMemory.get_recent_performance() 存在逻辑硬编码缺陷。在注入过去的 5 笔交易快照时,代码简单粗暴地判定:“只要过去的交易指令中不带 close 关键字,就一律在这个历史动作后贴上 🟡 OPEN (still holding) 的状态标签”。这导致 AI 翻阅自己的交易日记时,看到之前建仓的 SOL 被打着“持有中”的钢印,进而与真实的报表数据产生剧烈的精神分裂。
  2. 断层的强化学习(缺乏盈亏感知):

    • 症状: 当喂给大模型过去历史交易时,它只能看到自己当初进场时的指标(如 RSI, ADX)和借口(如看到资金费率为负),但却不知道这笔交易最终是止盈赚了钱,还是爆仓亏了钱。这导致它无法通过亏损吸取教训,容易在同样的极端环境下一错再错。
    • 快照维度单一: 之前的底层快照数据仅仅记录了 RSI、ADX 和 WhaleFlow 等三个维度,丢失了包含布林带(Bollinger Bands)、真实建仓资金费率(Funding Rate)等重要的波动参考指标。

🛠 修复与升级方案

1. 终结“持仓幻觉”(净化记忆上下文)

  • 剥离主观推断标签: 紧急删除了 get_recent_performance 函数中主观臆断的 (still holding) 代码块。
  • 职责剥离: 现在记忆模块仅负责作为一个**“无感情的交易动作备忘录”**(记录何时、基于什么技术面发出了什么指令)。判定当前真实拥有哪些头寸的权力,彻底 100% 交还给从交易所(或影子数据库)提取的绝对真理级 PORTFOLIO_STATE_JSON 对象。大模型将只以后者作为加权最重的风控基础依据。

2. 注入真实盈亏(强化学习闭环成型)

  • 引入真实结果对接(Result Context Injection): 改写了记忆注入模块逻辑。现在的流程在组装过去的记忆供 AI 反思时,会自动联动读取真实对账单 trade_history.json(扫描最近的 30 笔流水)。
  • 盈亏锚定: 一旦它发现刚才日记里的建仓行为在不久后有一笔对应的平仓或减仓流水,系统将自动把该平仓的真实盈亏金额(PnL Amount)及盈亏百分比提取出来,并赫然印在当初的决策反思上下文下,如:

    Result Context: ✅ 赢利: $85.6 (3.25%) shortly after this.
    这彻底填补了 AI "只管开枪不管战果" 的缺陷,让大模型自此具备了极其强大的“被打了才知道痛”、“吃过亏下次不要碰”的真实自我迭代反思能力。

3. 数据快照降维打击(扩充心智数据锚)

  • 更新了 log_trade 函数里的 context 组装器。
  • 新增字段注入:将底层的动态指标体系完整上翻给了 AI,包括了当时下注瞬间的 Funding(资金费率),以及 BB(布林带当时所处的宽度和趋势敞口表现)。通过极大增加大模型的决策训练参数,使得后续哪怕 AI 在布林带极限缩口时因为贪恋负资金费率而遭受假突破亏损,它也能通过这段丰富的带标签记忆日记迅速排雷。

🎯 预期成效

  • 消除逻辑宕机: 杜绝了 AI 因为读不懂自己的过期日记而自我阻断开仓机会的乌龙事件。
  • 触发高净值交易员式自省: 带有 PnL 盈亏标注的历史复盘文本强行投喂后,大模型必然会在每一轮输出的 Reflection 里针对自己失败的预测展开深刻批判,实盘防守胜率将产生肉眼可见的质变飞跃。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions