切换主题
07. 训练者记忆:从单笔交易走向长期习惯
上一章练习参考答案
第一题,产品早期建议只保留一个 primaryProblem,因为训练最怕一次指出十个问题,用户反而不知道下一步练什么。多个问题可以放到扩展字段或详细报告里。
第二题,顶层结构化值便于统计和过滤,sections 便于阅读和展示。这样前端既能做卡片,也能保留完整解释。
第三题,可以增加 reviewId、createdAt、modelVersion、promptVersion、toolTraceId、confidence、tags、userId。这些字段后面做审计和回归测试很有用。
新问题:单笔复盘看不到长期习惯
第六章的报告已经能用了。但训练产品真正有价值的地方,不是评价一笔交易,而是发现用户反复犯的同一类错误。
用户会问:
“我最近是不是一直在追突破?”
如果系统只看当前 tradeId,它只能说这笔交易有没有追。它看不到“最近 20 笔里 13 笔都没有等回踩”。
所以第七章引入训练者记忆。
TrainingMemory
伴生工程里先用一个简单组件模拟记忆:
java
@Component
public class TrainingMemory {
public String summaryFor(String tradeId) {
return "最近 12 笔训练交易里,有 7 笔出现突破后立刻追入,"
+ "其中 5 笔没有等待回踩确认。";
}
}真实系统里,记忆可以来自数据库、向量库、训练日志或用户画像。但早期不要一上来就做复杂记忆系统。
先问自己:这条记忆会不会改变本次复盘建议?
如果不会,就不要展示。
记忆怎么进入报告
ReviewCoachService 会把记忆写入两个地方:
java
String memorySummary = trainingMemory.summaryFor(trade.tradeId());
sections.put("memory", memorySummary);
return new ReviewReport(
...,
memorySummary,
nextTask,
sections);这样前端可以单独展示“长期训练模式”,同时详细报告里也能引用它。
记忆不是聊天记录
很多人一听 Memory,就想到把所有历史对话都塞进去。
复盘教练不应该这样做。它要的是训练记忆,不是闲聊记忆。
更适合保存的是:
- 最近多少笔出现同类错误。
- 用户正在训练哪个 setup。
- 用户最常破坏哪条规则。
- 用户上次被要求练什么。
- 这次是否延续了同一问题。
这些记忆能影响训练建议。普通寒暄不能。
本章效果
复盘响应里会出现:
json
{
"memorySummary": "最近 12 笔训练交易里,有 7 笔出现突破后立刻追入,其中 5 笔没有等待回踩确认。",
"sections": {
"memory": "最近 12 笔训练交易里,有 7 笔出现突破后立刻追入,其中 5 笔没有等待回踩确认。"
}
}这会让教练的建议从“这笔错了”变成“这个问题反复出现,下一组要专门训练”。
这一章真正解决了什么
训练者记忆解决的是“长期模式识别”。
没有记忆,系统只能做单笔点评。有了记忆,系统才能像教练一样盯住用户反复犯的动作。
练习题
- 训练记忆应该保存原始对话,还是保存提炼后的训练标签?
- 用户要求“忘掉某段记录”时,记忆系统要怎么设计?
- 记忆摘要是每次实时生成,还是定时离线汇总?各有什么利弊?