拓冰建站拓冰建站
首页 / 资讯中心 / 正文

每次新开对话都要重新解释项目?WES Code 跨会话记忆怎么用

目录一、它记住什么不记什么二、记忆是怎么写进去的1. 每轮结束时的认知结算2. 直接说「记住」3. 改它写的代码三、下一次对话时记忆怎么用上四、在记忆中心查看和清理五、在设置里控制它记多少六、怎么让它记得更准七、它做不到的地方小结用 AI 写代码最烦的一件事是重复交代这个项目的错误统一用errors.Wrap包一层接口统一返回{code, msg, data}测试用表驱动。昨天刚说过今天新开一个对话又得再说一遍。WES Code 的做法是记忆按项目存在本机每轮对话结束时把这一轮「结算」一次把偏好、纠正、项目事实留下来下次对话自动带上。这篇讲清楚几件事它会记住什么什么时候写进去下次对话怎么用上怎么查看、清理和关掉它最后说说它做不到的地方。一、它记住什么不记什么跨对话保留的关于你和这个代码库的结论不会因为关掉一个对话就失效。下面这些会跨对话保留类型例子偏好缩进用 tab回复用中文纠正「错误要用 %w 包装不要直接返回」项目事实和约定项目用 PostgreSQL接口统一返回{code, msg, data}经验教训这个仓库要先跑make gen再编译踩过的 bug 和回归某次改动引起的回归只属于当次对话的一次对话的上下文快照、某个任务拆出来的计划只属于那次对话不会带到别的对话里。不会记的低置信度的推测结算时只有高、中置信度的条目才可能被保存一次性的要求比如「这次先别写测试」敏感信息密钥、账号这类不要让它记二、记忆是怎么写进去的1. 每轮结束时的认知结算每轮任务结束后WES Code 会让对话模型把这一轮「结算」一次按固定格式输出四样东西。输出内容用在哪会话状态没做完的请求保留原话、做过的操作、关键决定、被否掉的方向、待办这个对话的下一轮记忆条目跨对话仍然有用的偏好和事实长期记忆反思方法上的经验够格的写进这个助手以后的系统提示词纠正和约定你明确表达过的纠正和偏好长期记忆结算要求模型输出的格式是这样的结算提示词里的示例原样照搬{session_state:{pending_task:用户最近未完成的请求原文引用无则 None,goal:整体目标,current_phase:分析中/实施中/验证中/完成/interrupted,completed_actions:[{action:READ store.go:478,result:发现字节截断 BUG,tool:read_file}],key_decisions:[影响后续的决策],rejected_paths:[被否定的方向],action_items:[按 docs/plan.md 第 2 节补缓存层,把 parseConfig 的错误往上抛],file_states:[{path:store.go,status:modified,summary:添加了 error handling}],open_questions:[未解决问题],constraints:[用户声明的约束原文],plan:null},memory_entries:[{content:用户偏好 4 空格缩进,kind:preference,scope:global,confidence:high}],reflections:[{category:approach_quality,content:应该先用 grep 缩小范围再 read,severity:lesson}],learnings:[{type:correction,content:函数命名用 camelCase,action:persist}]}提示词里定了几条规矩决定了它记得少而准低置信度的不写只有高、中置信度的才可能被保存一次性的上下文不记跨对话还有价值的才留宁少勿多错误的记忆比没有记忆更有害只有你明确说出来的纠正才会保存它自己推断出来的模式只当建议对话顺利时不强行反思「宁少勿多」这一条是我最认同的。记错一条偏好比没记住还麻烦它会在之后每个相关的对话里坚持一个你早就不要的写法。2. 直接说「记住」想让它马上记下就直接说记住这个项目的接口统一返回 {code, msg, data}错误码都定义在 internal/errcode 里它会调用记忆工具memory存成一条记忆。工具收到的参数大致是这样具体内容由 AI 自己概括{action:save,kind:fact,content:接口统一返回 {code, msg, data}错误码定义在 internal/errcode,tags:[api,convention]}kind有三种fact事实默认、preference偏好、experience经验。内容建议控制在 500 字以内。比起等一轮结束后的结算这样更直接。3. 改它写的代码这一条不用说话改代码本身就是反馈。编辑器会留意三种动作你的动作判定条件记成什么马上撤销AI 改完 2 秒内你在附近 3 行内删掉了内容这种写法是错的类似场景别再这么写接受后微调接受后 10 秒内你在附近 5 行内做了修改类似场景优先用你的写法拒绝后自己写拒绝后 30 秒内你在同一个文件里写了超过 5 个字符类似场景照你的思路来这三种都会作为「纠正」存进角色记忆同样的内容 10 分钟内只记一次。另外AI 写过的文件你过一阵子再改、保存时内容变了也会作为一次修改反馈回去。举个「接受后微调」的例子。AI 写了一个查用户的函数你接受了funcGetUser(ctx context.Context,idstring)(*User,error){u,err:repo.Find(ctx,id)iferr!nil{returnnil,errors.New(user not found)}returnu,nil}接受后几秒钟内你把错误那一行改成用%w包装保留原始错误iferr!nil{returnnil,fmt.Errorf(get user %s: %w,id,err)}这一改就会被记成一条纠正内容大致是这样原文是英文User accepted AI edit but immediately tweaked it in go file.AI wrote:return nil, errors.New(user not found)User changed to:return nil, fmt.Errorf(get user %s: %w, id, err)Prefer the user’s version in similar contexts.下次它在这个项目里写类似的错误处理这条纠正就有机会被召回。三、下一次对话时记忆怎么用上每轮按相关性召回每一轮WES Code 都会按你这条消息去召回相关的记忆关键词和语义一起算分再考虑时间远近最多 20 条相关性低于 0.3 的不要。环境信息、共享的约定和规则则每轮都在系统提示词里。过期和冲突的记忆不再自动带上一条偏好或纠正30 天里一次都没被召回过会被标记为过期不再自动带进对话两条记忆说法相反或者新的一条明确否定了旧的会被标记为冲突也不再自动带上被排除的记忆并没有删掉主动搜索还能找到。想让 AI 翻一下记忆直接说「查一下你记得的错误处理约定」它会用同一个记忆工具去搜{action:search,query:错误处理的约定,limit:10}主动搜索不受过期和冲突的限制被标记的记忆也能搜出来。同一个对话接着上次的进度在同一个对话里中断了隔天回来接着说上一轮结算出的会话状态会带上你没做完的请求、做过什么、定了什么、哪些方向被否掉了、接下来要做什么。不用从头再讲一遍。四、在记忆中心查看和清理左侧活动栏里有一个灯泡图标就是「记忆中心」。分组分组内容能删吗关于我你的编码偏好和习惯能角色记忆每个 AI 助手各自积累的经验前面说的「纠正」就在这里能本地共识这个工作区里所有助手共享的约定能环境信息引擎感知到的工具链和项目约定只读会话记忆、工作缓存运行时状态随任务产生和回收只读能做的操作搜索按语义匹配搜「错误处理」能找到相关的偏好和纠正删除删掉单条或者清空一组导入每行一条默认导入到「关于我」也可以选角色记忆或本地共识目前没有编辑入口。一条记忆记得不对就删掉再跟它说一次正确的。按项目隔离每个工作区的记忆分开存放。切换项目整套记忆一起换切回来原来的记忆还在。记忆存在本机的数据目录里每个工作区一个ws-开头的子目录记忆在其中的state.db里。macOS 上可以这样看用只读方式打开别直接改库# 每个工作区一个 ws- 开头的目录ls~/Library/Application\Support/wescode/cells/# 换成你自己的 ws- 目录名按类型统计记忆条数DB~/Library/Application\Support/wescode/cells/ws-xxxxxxxx/state.db sqlite3-readonly$DBSELECT kind, COUNT(*) FROM wes_memories GROUP BY kind;# 再看看从没被召回过的有多少sqlite3-readonly$DBSELECT kind, COUNT(*) FROM wes_memories WHERE recall_count 0 GROUP BY kind;统计结果里常见的类型有fact、preference、correction、convention、lesson、environment以及只属于当次对话的context。从没被召回过的偏好和纠正放满 30 天就会被标成过期。清理之前先备份在记忆中心清空一组之前可以先关掉 WES Code把数据目录整体备份一份cp-R~/Library/Application\Support/wescode/cells ~/wescode-cells-backup-$(date%Y%m%d)五、在设置里控制它记多少打开设置「AI 引擎」下面的「记忆偏好」有三档写入策略策略效果静默写入默认AI 记住你的偏好时不提示不留审计记录记录审计照常写入每成功写入一条就留一条审计记录禁止写入拒绝一切记忆写入这个工作区不会积累任何记忆也不是排队等审批同一页还能设条数上限角色记忆默认 1 万条会话记忆默认 5000 条。超出上限时按召回次数、最近访问时间和创建时间综合打分分低的先清掉。做敏感项目、不想让它积累任何东西选「禁止写入」就行。六、怎么让它记得更准纠正时说清楚范围。说「这个项目里错误统一用errors.Wrap包一层」比只说「不对」有用得多。结算只保存你明确表达过的纠正。一次性的要求说明只是这一次。比如「这次先别写测试」免得被当成长期偏好。项目换了规范去记忆中心删掉旧的。不然新旧两条说法相反会被标成冲突不再自动带上。几个项目共用的习惯每个项目各说一次。记忆按工作区隔离在 A 项目教的B 项目不知道。密钥、账号别让它记。七、它做不到的地方不跨项目A 项目里教会的B 项目要重新教结算靠模型判断可能漏记也可能记偏记偏了到记忆中心删掉不能直接编辑只能删掉重说太久不用会冷掉30 天没被召回的偏好和纠正不再自动带上要用的时候得主动搜记忆存在本机但用到的时候会作为上下文发给你配置的模型小结偏好、纠正、项目事实跨对话保留一次对话的上下文和计划只属于那次对话写入有三条路每轮结束的结算、你直接说「记住」、你改它写的代码每轮按相关性召回最多 20 条过期和冲突的不自动带上记忆中心能搜、能删、能导入设置里能改写入策略和条数上限文中的记忆功能都在 WES Code 里官网是 weisyn.com。你们平时最常跟 AI 重复交代的是哪件事欢迎评论区聊聊。觉得有用的朋友欢迎点赞、收藏、关注后面会继续分享 AI 编程的实战经验。
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门