本篇是全系列的地基。「一条信息该放哪」这个问题,比任何功能的使用方法都重要——因为放错了位置,后面所有的自动化、同步、协作都建立在错误的前提上。
本篇要解决的事
不是让你记住更多,而是让每条信息只在一个地方、以正确的形式存在一次。
一条信息在系统里可能落到 7 处,性质各不相同。先看全表,再逐条拆。
位置 | 物理载体 | 由谁写入 | 加载时机 | 跨设备 |
|---|---|---|---|---|
① 会话 | 上下文 | 对话产生 | 全程在上下文 | 不跟随 |
② 云端记忆档案 | 服务端 | 服务端算法 | 每次会话注入 | 自动跟随账号 |
③ 用户级记忆 | 用户目录四件套 | 人 / AI 显式编辑 | 每次会话加载 | 需版本库同步 |
④ 项目级记忆 | {工作空间}/.workbuddy/memory/MEMORY.md | 显式编辑 | 进入该项目时加载 | 随项目走 |
⑤ 日期日志 | {工作空间}/.workbuddy/memory/YYYY-MM-DD.md | 显式编辑 | 不自动加载 | 不建议同步 |
⑥ 技能 Skill | 用户级 / 项目级技能目录 | 显式编辑 | 命中触发词时 | 版本库 / 市场 |
⑦ 资料库 / 本地文件 | 云端 / 磁盘 | 显式编辑或导入 | 按需查询 | 云端天然同步 |
这张表里最容易被忽略的一列
「加载时机」这一列才是全系列的主线索。能不能跨会话续上,取决于「会话启动时会不会被读进来」,而不是取决于「我写没写下来」。
七个位置里,只有 ② ③ ④ 是自动进来的;⑤ 日志写再多也不会自动出现在下次对话里。
每次会话启动,服务端会把一段自动生成的画像文本注入上下文。它有三个硬属性:
属性 | 含义 | 后果 |
|---|---|---|
服务端生成 | 从历史会话提炼,不从本地记忆文件复制 | 你改本地记忆不会同步改它 |
只读 | 无编辑 / 删除接口,本地无缓存副本 | 想改只能间接影响 |
有损 | 路径被脱敏,长内容被压缩 | 不能当精确数据源 |
① 选择性归纳 —— 不存在「人为定向编辑」,但确实存在「算法的选择性归纳」。它按近期性 + 高频性加权,天然偏向「最近反复出现的」,天然忽略「重要但只说过一次的」。
实测证据
某次实测中,当天已彻底删除某个外部知识库技能的技能包、凭证、连接器配置,并改掉了启动巡检里的调用。
但云端档案里仍然写着「深度使用该知识库」「订阅 N 个知识库」。
一次性宣告改变不了它,重复表达才可以。 这就是「只能通过大量信息调整方向」这条体感的机制来源。
② 跨项目混合 —— 历史会话检索是按语义相关度排序的,不按项目隔离。一次检索里返回的三条会话可能分属三个完全不同的项目。说明云端层是全局单一画像——它不知道你此刻是在干哪一摊事。
③ 它在起作用,不是躺着的 —— 它每轮都进上下文,会实际影响 AI 的初始判断。这是最容易被忽略的一点。
检索方式 | 结果 |
|---|---|
不带日期参数检索 | ✅ 正常返回,窗口固定为最近 7 天 |
带 start_date / end_date | ❌ 连续返回 HTTP 400,参数不可用 |
结论:超过 7 天的历史会话,现在检索不到。 半年前的讨论,云端接口拿不回来。
动作 | 怎么做 | 价值 |
|---|---|---|
读它 | 直接看注入的画像内容 | 知道「AI 默认会怎么理解我」,从而知道哪些地方必须主动澄清 |
喂它 | 只能通过对话间接影响 | ✅ 反复、明确地表达某件事;❌ 改本地记忆指望它跟着变 |
检索它 | 历史会话检索 | 找「上周那次讨论的结论」,7 天内有效 |
一句话定性
它是印象,不是事实。 印象可以被更新但不能被精确指定;事实必须来自可控文件。
所以分工是:印象交给云端,事实交给本地 + 同步。 它的定位是兜底通道,不是主力通道——价值在于「你在任何设备登录,AI 立刻知道你大概是干什么的」。
误解一:位置
「用户级记忆 = 用户目录下所有的 md 文件。」
真相
用户级记忆 = 根目录四件套。实测从会话实际注入的内容看,进入上下文的只有根目录下的四个文件: SOUL.md / IDENTITY.md / USER.md / MEMORY.md。
memory/ 子目录下的日志与专家记忆不在其中——实测该子目录 51 KB 内容,一个字节都没进上下文。
误解二:写入方式
「用户级记忆是受对话慢慢熏出来的。」
真相
是显式写入,不是自动熏染。 这是它与云端档案的分水岭:
对比项 | 云端档案 | 用户级记忆 |
|---|---|---|
谁在写 | 服务端算法(黑箱) | 人或 AI 显式编辑文件 |
能否精确指定内容 | 不能 | 能 |
生效速度 | 慢,需反复表达 | 下次会话即生效 |
能否撤销 | 不能 | 能(改回 / 版本库回滚) |
能否审查 | 只能读结果 | 能看每一次改动 |
跨设备 | 自动 | 需手动同步 |
一句话:云端是「熏」出来的,用户级是「写」出来的。 这个可控性是它的全部价值。
原因是它是 100% 每次会话加载的:
位置 | 加载频率 | 体量约束 |
|---|---|---|
用户级四件套 | 任何项目、任何会话、每次都加载 | 最严——经验值:单文件不超过 8–10 KB |
项目 MEMORY.md | 只在该工作空间加载 | 较宽 |
日期日志 | 不自动加载 | 膨胀了也暂时不占上下文 |
它是怎么涨起来的(实测)
某次实测中,用户级 MEMORY.md 在一天之内从 3.1 KB 涨到 7.5 KB,增长约 140%。当天加进去的三段内容都通过了「跨项目通用」判据,所以加得没错——但这正好演示了它是怎么涨的:每一次「这条很重要,记下来」都在加码。
没有淘汰机制的话,半年后它会变成第二个失控的巨型日志。
判据
换任何项目、任何设备,这条还成立吗?
例子 | 该进用户级? | 理由 |
|---|---|---|
偏好简洁结构化输出 | ✅ | 任何对话都要遵守 |
本机 shell 缺某些命令,改用替代写法 | ✅ | 换项目照样踩 |
云端检索只有 7 天窗口 | ✅ | 能力边界,跨项目通用 |
某项目专属术语的统一写法 | ❌ | 只在那一个项目成立 |
某业务的字段映射规则 | ❌ | 只在那个业务项目成立 |
某次调试的具体版本号 | ❌ | 一次性 |
污染代价
放进用户级的东西,对所有项目生效。放错一条,会在不相关的对话里持续误导判断。
误解一:权限优先级
「项目记忆的权限低于用户记忆,冲突时听用户级的。」
真相
这是约定,不是机制。 实际机制是:两者都进上下文,没有仲裁层。冲突时取决于模型解读,通常「更具体的优先」,但没有硬保证。
所以正确做法不是去记「谁听谁的」,而是让两层不写同一件事:
层 | 只写 | 不写 |
|---|---|---|
用户级 | 跨项目通用的(沟通方式、能力边界) | 某项目的具体做法 |
项目级 | 本项目特有的(术语、目录、约定) | 通用偏好(已在用户级,重复写就是埋冲突) |
如果出现「用户级说 A、项目级说 B」,说明其中一条放错了层。
误解二:拷贝即可完全复现
「把记忆文件拷到新设备,就能一模一样地继续用。」
真相
成立的前提是内容里没有绑死本机的东西。 实测某个环境的各项目 MEMORY.md 硬编码情况:
典型硬编码 | 失效条件 |
|---|---|
内网 IP 地址(服务地址) | 换网络即失效(与设备无关) |
带盘符的绝对路径 | 换盘符失效 |
本机解释器的绝对路径 | 换设备失效 |
规则:项目记忆里写「在哪儿找」,不写「绝对路径」。
一个项目的 memory 目录里可能有二十几个日志文件,但进入上下文的只有 MEMORY.md 一个。日志是主动去读才读到的。
推论(严重)
一个项目如果没有 MEMORY.md,换设备后它就是完全失忆的——不管你搬了多少日志过去。
实测某环境 8 个项目里有 2 个没有 MEMORY.md,意味着这两个项目一换设备就归零。
方案 | 体量 | 评价 |
|---|---|---|
整个 memory 目录全同步 | 341 KB | 其中 85.8% 是流水,同步了也不会被加载 |
只同步 MEMORY.md | 48.5 KB | 降低 86%,且这是唯一会被加载的 |
顺序不能反
先建立晋升机制(日志 → MEMORY.md)→ 再同步 MEMORY.md。 直接同步 341 KB,同步过去的是 292.7 KB 的流水。
在团队项目里,项目记忆约束的不只是 AI,还有所有参与者。
应该写 | 不该写 |
|---|---|
决策与约定(术语怎么统一、目录怎么放、冲突怎么判) | 过程与个人偏好(今天改到 v24、我习惯先看概览) |
判据:新成员第一天进项目,读这一份能不能上手? 能 → 写对了。不能 → 写成日志了。
误解(本节最重要的一条)
「日志越写越长,是因为每次加载它都要消耗巨量上下文。」
真相
日期日志不自动加载。 实测会话注入的内容里没有它,是主动读取才读到的。所以那 70 KB 平时并不消耗上下文。
膨胀的真实代价是另外三条:
把一份 814 行、68.8 KB 的单日日志按标题切块:
类别 | 块数 | 行数 | 占比 | 该去哪 |
|---|---|---|---|---|
知识块(踩坑、约束、复用套路、结论) | 28 | 155 | 19% | 晋升 |
过程块(版本号、补丁、校验、提交) | 62 | 657 | 81% | 留在日志并归档 |
也就是说:每次为了 19% 的有效信息,要把 81% 的流水一起搬走。
指标 | 数值 |
|---|---|
日志总数 / 体量 | 40 个 / 298.8 KB |
项目 MEMORY.md 合计 | 48.9 KB |
日志占比 | 85.9% |
平均 / 中位 | 7.5 KB / 4.0 KB |
超 20 KB 红线的 | 3 个(占 8%) |
这条结论很省力
那 8% 的超线日志,占了总体量的 49.4%。
⇒ 问题不在日志多,在少数几个失控。管住这 8%,就解决了一半体量。 实测动手处理这 3 个之后,日志总量一次性降了 47%。
日志写的时候就用固定小节名分段,日后可以机械提取:
## 结论与约定 → 将晋升到项目 MEMORY.md
## 踩坑 → 将晋升到用户级记忆或技能
## 待办 → 进待办系统,不进记忆
## 过程 → 留在日志,供追溯别混:两个不同东西
名称 | 物理位置 | 要不要管 |
|---|---|---|
会话记录 *.jsonl | 用户目录 projects/ 下 | ✅ 不用管(软件自己管) |
项目日志 YYYY-MM-DD.md | 工作空间 .workbuddy/memory/ 下 | ❌ 这正是要治理的对象 |
把这两个搞混,会得出「临时日志存 C 盘不需要管」的错误结论。
「晋升」经常被理解成一个动作,实际上是两个判据不同的动作。
级 | 位置 | 晋升到上一级的判据 |
|---|---|---|
L0 | 会话 | 换会话后还需要吗 |
L1 | 日期日志 | 以后进这个项目还要用到吗 |
L2 | 项目 MEMORY.md | 换项目还成立吗 |
L3 | 用户级 MEMORY.md / 技能 | 是「怎么做」吗?做过三次以上吗? |
关键
L1→L2 与 L2→L3 是两次不同的晋升,判据完全不同。 把它们当成一件事,结果就是「什么都往上提」或者「什么都不提」。
类型 | 日志原文 | 晋升后 | 判据 |
|---|---|---|---|
L1→L2 | 「v24 · 术语统一:『备注 / 待办清单』→『说明 / 子任务』」 | 项目记忆:术语:说明 / 子任务。不使用旧称。 | 以后进这个项目都得遵守 → 晋升。不晋升的部分(版本号、提交 ID)留在日志 |
L2→L3 | 「某环境 shell 缺某些命令,一律用替代写法」 | 用户级记忆:同内容 | 换任何项目都会踩 → 晋升 |
→ 技能 | 「复用套路(第 4 次做同类弹窗,已定型)」 | 补进相关技能 | 是「怎么做」,且已重复 4 次 → 固化成技能 |
第三个实例的要点
如果只写进记忆,下次还得让 AI 从记忆里读一遍再执行;写成技能则命中触发词即可直接执行。这是「固化成技能」与「记在记忆里」的实际差别。
① 换会话后还需要吗? 否 → 留在会话
② 以后进入这个项目还要用到吗? 否 → 日期日志
③ 换项目还成立吗? 否 → 项目 MEMORY.md
是 → ④
④ 是「怎么做」且已重复三次以上吗? 是 → Skill
否 → 用户级 MEMORY.md需求 | 去向 |
|---|---|
需要筛选 / 排序 / 统计 / 多字段检索 | 资料库 |
要被网页、看板访问 | 资料库 |
要发布成链接分享、要协作审阅 | 资料库 |
GB 级大批量、需要脚本处理 | 本地文件 |
涉密(客户数据 / 金额 / 密钥) | 本地(硬约束) |
只被一次性读取 | 留在原地,用时给路径 |
一句话:要「被访问」的进资料库,要「被计算」的留本地。
分界线 | 判据 |
|---|---|
日志 vs 项目记忆 | 看「以后进入该项目还要用到吗」 |
记忆 vs 技能 | 看「是事实还是流程」;流程且重复三次以上 → 技能 |
记忆 vs 资料库 | 看「要不要被查询统计」 |
对象 | 红线 | 依据 |
|---|---|---|
用户级 MEMORY.md | 约 8–10 KB | 100% 每次会话加载 |
单日日志 | 20 KB,超出必须晋升 | 超出即说明有内容该搬走 |
项目 MEMORY.md | 只写约定与决策,不写过程 | 约束所有参与者 |
技能 | 不含绝对路径 / 内网 IP / 未解释术语 | 可分享性的前提 |
资料库 | 不存放涉密数据 | 安全底线 |
学完本篇应当能立刻回答
文中所有「实测」「xx KB」「xx 个」这类数量,均来自某一台真实机器的快照,请当作方法示范而非通用阈值;真正通用的是判据与因果关系。
原创声明
本文系「当月光落下」原创,首发于腾讯云开发者社区。内容来自作者在实际使用中的逐条实测整理, 所有结论均有本机实机验证或真实接口调用支撑;文中出现的数量均为特定环境下的实测快照, 仅作方法示范,不作为通用阈值。
如需转载,请注明作者「当月光落下」及首发出处,未经许可不得用于商业用途。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。