Skip to Content
用户指南功能特性记忆

记忆

每次 Qwen Code 会话都从一个全新的上下文窗口开始。有两种机制可以在会话之间传递知识,让你不必每次都重新解释:

  • QWEN.md — 由_你_编写一次,Qwen 在每次会话中都会读取的指令
  • 自动记忆 — Qwen 根据从你这里学到的内容自己编写的笔记

QWEN.md:你给 Qwen 的指令

QWEN.md 是一个纯文本文件,你可以在其中写下 Qwen 应该始终了解的关于你的项目或你的偏好的内容。可以把它看作是在每次对话开始时加载的永久性简报。

在 QWEN.md 中写些什么

添加那些否则你每次会话都不得不重复的内容:

  • 构建和测试命令(npm run testmake build
  • 你的团队遵循的编码规范(“所有新文件必须有 JSDoc 注释”)
  • 架构决策(“我们使用 Repository 模式,永远不要从控制器直接调用数据库”)
  • 个人偏好(“始终使用 pnpm,而不是 npm”)

不要包含 Qwen 可以通过阅读你的代码自己弄清楚的内容。QWEN.md 在简短且具体时效果最好——它越长,Qwen 遵循它的可靠性就越低。

在哪里创建 QWEN.md

文件适用对象
~/.qwen/QWEN.md你,跨所有项目
项目根目录下的 QWEN.md你的整个团队(将其提交到版本控制)
.qwen/QWEN.local.md仅限你,仅限此项目(不要提交到 git)

你可以任意组合使用这些文件。Qwen 会在你启动会话时加载所有这些文件。

如果你的仓库已经有一个供其他 AI 工具使用的 AGENTS.md 文件,Qwen 也会读取它。无需重复编写指令。

何时使用 .qwen/QWEN.local.md

用于特定于项目但属于个人的指令——属于此项目但不应与团队共享的内容:

  • 你自己的集群 ID、容器注册表命名空间或云账户
  • 硬编码了你本地环境的个人调试命令
  • 你希望 Qwen 了解的关于你正在进行的工作的笔记,但不想提交

它在共享的项目 QWEN.md 之后加载,因此你的本地指令可以补充或覆盖团队的指令。

你必须自己将其添加到 .gitignore 尽管 .qwen/ 通常被视为本地目录,但 qwen-code 不会为你生成 .gitignore,并且有些项目会提交 .qwen/settings.json。将此行添加到你的 .gitignore(或你的全局 git ignore)中:

.qwen/QWEN.local.md

使用 /init 自动生成

运行 /init,Qwen 将分析你的代码库,以创建一个包含它找到的构建命令、测试指令和规范的初始 QWEN.md。如果已经存在一个,它会建议添加内容而不是覆盖。

引用其他文件

你可以在 QWEN.md 中指向其他文件,以便 Qwen 也读取它们:

See @README.md for project overview. # Conventions - Git workflow: @docs/git-workflow.md

在 QWEN.md 的任何地方使用 @path/to/file。相对路径从 QWEN.md 文件本身开始解析。


自动记忆:Qwen 从你这里学到了什么

自动记忆在后台运行。在每次对话之后,Qwen 会悄悄保存它学到的有用内容——你的偏好、你给出的反馈、项目上下文——以便它可以在未来的会话中使用它们,而无需你重复说明。

这与 QWEN.md 不同:你不是编写者,Qwen 才是。

Qwen 保存什么

Qwen 会寻找四种值得记住的内容:

内容示例
关于你你的角色、背景、你喜欢的工作方式
你的反馈你做出的纠正、你确认的方法
项目上下文正在进行的工作、决策、从代码中不明显看出的目标
外部引用你提到的仪表盘、工单跟踪器、文档链接

Qwen 不会保存所有内容——只保存下次真正有用的内容。

存储位置

自动记忆文件位于 ~/.qwen/projects/<project>/memory/。同一仓库的所有分支和工作树共享同一个记忆文件夹,因此 Qwen 在一个分支中学到的内容在其他分支中也可用。

所有保存的内容都是纯 Markdown 格式——你可以随时打开、编辑或删除任何文件。

定期清理

Qwen 会定期遍历其保存的记忆,以删除重复项并清理过时的条目。在积累了足够的会话后,这会在后台每天自动运行一次。如果你想让它立即运行,可以使用 /dream 手动触发。

在后台运行清理时,你的会话会正常继续。

开启或关闭

自动记忆默认开启。要切换它,请打开 /memory 并使用顶部的开关。你可以仅关闭自动保存、仅关闭定期清理,或同时关闭两者。

你也可以在 ~/.qwen/settings.json(适用于所有项目)或 .qwen/settings.json(仅限此项目)中进行设置:

{ "memory": { "enableManagedAutoMemory": true, "enableManagedAutoDream": true } }

团队记忆(与协作者共享)

默认情况下,自动记忆是你私有的——它位于你的主目录下,永远不会被共享。团队记忆是一个可选的层级,整个团队通过 git 共享。

启用后,Qwen 会在仓库内部.qwen/team-memory/ 获得第三个记忆目录。它使用与私有层级相同的“每个记忆一个文件”的布局和 MEMORY.md 索引。因为它被提交到仓库中,所以它会以常规方式与每个协作者共享:你通过 git pull 接收队友的记忆,并通过 commit/push 分享你的记忆。Qwen 会将持久的、全项目范围的知识路由到这里——每个贡献者都必须遵循的规范、共享的引用指针(跟踪器、仪表盘)——而个人和快速过时的笔记则保持私有。

settings.json 中按项目(或全局)启用它:

{ "memory": { "enableTeamMemory": true } }

默认关闭。请记住以下注意事项:

  • 它受版本控制,对具有仓库访问权限的每个人可见。 将团队记忆视为提交到仓库。

  • 阻止写入机密信息。.qwen/team-memory/ 的写入会扫描凭据(API 密钥、令牌、私钥);检测到的机密信息会被拒绝,永远不会被写入。扫描是最后一道防线,而不是保证——不要将敏感数据放在那里。

  • 更改可被审查。 团队记忆的写入会像其他任何文件一样出现在 git status / PR diff 中,因此可以在提交前进行审查。在默认的批准模式下,Qwen 在每次团队写入前也会询问;在 AUTO_EDIT/YOLO 模式(你已选择自动批准)下,它们会在没有提示的情况下应用,但仍然会出现在 diff 中。

  • 该目录必须被 git 跟踪。 如果你的项目的 .gitignore 排除了 .qwen/*,请重新包含该路径以便共享:

    !.qwen/team-memory/ !.qwen/team-memory/**

    注意:使用文件通配符忽略形式(.qwen/*),而不是带尾随斜杠的目录形式(.qwen/)。目录形式的忽略会使 git 完全跳过该文件夹,因此其下方的 ! 重新包含将不起作用,并且团队层级在 git 中会保持静默为空。当启用该层级但其目录被 git 忽略或位于任何 git 仓库之外时,Qwen 会在启动时发出一次警告,因此这种错误配置不会被忽略。

QWEN_CODE_MEMORY_TEAM=1 / =0 会覆盖单次运行的设置。

自动 git 同步(可选)

默认情况下,你通过常规的 git 工作流共享团队记忆(通过 pull 接收,通过 commit/push 共享)。要让 Qwen 为你执行此操作,请启用同步:

{ "memory": { "enableTeamMemory": true, "enableTeamMemorySync": true } }

开启后,在会话开始时,Qwen 会尽力同步 .qwen/team-memory/ 目录:它重建共享的 MEMORY.md 索引,首先快进拉取协作者的更新,然后在之上提交你的团队记忆更改,并仅推送该同步提交(通过显式的单分支 refspec)——这样你加载的索引就能反映最新状态。它只暂存团队目录(你的其他工作更改永远不会被提交),并且永远不会因 git 失败而阻塞会话。默认关闭。QWEN_CODE_MEMORY_TEAM_SYNC=1 / =0 会覆盖单次运行的设置。

启用前需要了解的两件事:

  • 快进拉取作用于你的整个当前分支,而不仅仅是 .qwen/team-memory/(git 没有路径范围的拉取)。因此,同步会将你的分支快进到远程顶端。相比之下,推送是限定范围的:它仅发布此同步刚刚创建的提交,因此它永远不会推送你拥有的其他未推送的提交——如果你的分支已经领先于上游,同步会在本地提交并跳过推送。在快进拉取没有问题的分支上启用它——或者在专用的 checkout 上运行它。
  • 分叉的分支保持不变--ff-only 永远不会合并)。当发生这种情况时,同步在该会话中直接什么都不做;解决分叉(git pull)后它会恢复。没有上游(没有跟踪配置)的分支仍然会在本地提交,但会跳过推送——因为没有地方可以推送。

命令

/memory

打开记忆面板。从这里你可以:

  • 开启或关闭自动记忆保存
  • 开启或关闭定期清理(dream)
  • 打开你的个人 QWEN.md(~/.qwen/QWEN.md
  • 打开项目 QWEN.md
  • 浏览自动记忆文件夹

/init

为你的项目生成一个初始的 QWEN.md。Qwen 读取你的代码库并填入它发现的构建命令、测试指令和规范。

/remember <text>

立即将某些内容保存到自动记忆中,而无需等待 Qwen 自动获取:

/remember always use snake_case for Python variable names /remember the staging environment is at staging.example.com

/forget <text>

删除与你的描述匹配的自动记忆条目:

/forget old workaround for the login bug

/dream

立即运行记忆清理,而不是等待自动计划:

/dream

故障排除

Qwen 没有遵循我的 QWEN.md

打开 /memory 查看加载了哪些文件。如果你的文件未列出,Qwen 无法看到它——请确保它位于项目根目录或 ~/.qwen/ 中。

指令越具体,效果越好:

  • Use 2-space indentation for TypeScript files
  • Format code nicely

如果你有多个包含冲突指令的 QWEN.md 文件,Qwen 的行为可能会不一致。请检查它们并删除任何矛盾之处。

我想看看 Qwen 保存了什么

运行 /memory 并选择打开自动记忆文件夹。所有保存的记忆都是可读的 Markdown 文件,你可以浏览、编辑或删除它们。

Qwen 总是忘记事情

如果自动记忆已开启,但 Qwen 似乎无法在会话之间记住内容,请尝试运行 /dream 强制执行一次清理。同时检查 /memory 以确认两个开关都已启用。

对于你始终希望 Qwen 记住的内容,请将它们添加到 QWEN.md 中——自动记忆是尽力而为的,而 QWEN.md 是有保证的。

Last updated on