为什么一个忽略规则必须执行两个相反的任务
首先来看 Qwen Code 的指令文件。其记忆文档列出了 QWEN.md 的三个存放位置:~/.qwen/QWEN.md 用于“你,跨所有项目”;项目根目录下的 QWEN.md 用于“你的整个团队(将其提交到版本控制)”;以及 .qwen/QWEN.local.md 用于“仅限你,且仅在此项目中(不放入 git)”。Qwen 会在“你启动会话时加载所有这些文件”。
本地文件适用于诸如“你自己的集群 ID、容器镜像仓库命名空间或云账户”以及“硬编码了你本地环境的个人调试命令”等内容。它“在共享项目 QWEN.md 之后加载,因此你的本地指令可以补充或覆盖团队的指令”。
然后是 Qwen 交给你的责任:“你必须自己将其加入 gitignore。 尽管 .qwen/ 通常被视为本地目录,但 qwen-code 不会为你生成 .gitignore,而且某些项目会提交 .qwen/settings.json。”
现在来看看团队记忆。默认情况下,Qwen 的自动记忆是私有的:“自动记忆文件保存在你主目录下的 ~/.qwen/projects/<project>/memory/。”团队记忆则不同:“团队记忆是一个选择性加入的层级,整个团队通过 git 进行共享。”启用后,“Qwen 会在仓库内部的 .qwen/team-memory/ 处获得第三个记忆目录。”共享方式“与往常一样:你通过 git pull 接收团队成员的记忆,并通过 commit/push 来分享你自己的记忆。”它“默认是关闭的”。
为了让其正常工作,文档明确指出:“该目录必须受 git 追踪。”然后是决定一切的警告:
“警告:使用文件通配符(file-glob)忽略形式(.qwen/*),而不是带有尾随斜杠的目录形式(.qwen/)。目录形式的忽略会导致 git 完全跳过该文件夹,因此其下方的!重新包含规则将失效,团队层在 git 中会悄无声息地保持为空。”
因此,这两个文件拉向了相反的方向。保持 QWEN.local.md 的私密性会诱使你忽略该文件夹。而以目录形式忽略该文件夹又会导致无法重新包含团队层。唯一能同时满足两者的规则是带有明确重新包含规则的文件通配符形式。
Qwen 确实试图捕获这个错误:它“在启动时,当该层级已启用但其目录被 git 忽略或处于任何 git 仓库之外时,会警告一次,因此这种错误配置不会悄无声息地溜走”。但这只会在启动时对启用它的那个人警告一次。从未启用团队记忆的团队成员什么也看不到,任何审查仓库的人也看不到。
人们尝试的其他方法
将 .qwen/ 作为目录忽略。 这可以使 QWEN.local.md 排除在 git 之外,但也会导致 git 完全跳过该文件夹。用文档的话说,其下方的任何重新包含规则都是“无效操作(no-op)”。
什么都不忽略。 团队记忆可以正常工作,但当有人第一次运行 git add . 时,他们个人的集群 ID 或本地调试命令就会随之进入仓库。
添加重新包含行并假设它们起作用。 重新包含 .qwen/team-memory/ 的代码行在任何形式下看起来都是正确的。但它们只有在文件通配符忽略规则下方才会生效,在目录忽略规则下方则不会。
依赖启动警告。 它只对启用了该层级的人触发一次。这是一个有用的防线,但不能替代正确的忽略文件。
将团队记忆视为私人笔记本。 文档直接指出:“它受版本控制,且对所有拥有仓库访问权限的人可见。对待团队记忆要像向仓库提交代码一样。”个人笔记属于私有层级。
指指望敏感信息扫描。 写入团队文件夹的内容会被扫描凭证,并且“检测到的敏感信息会被拒绝,绝不会被写入”。Qwen 补充道:“扫描是一道防线,而不是保证——不要把敏感数据放在那里。”
解决方案:映射 .qwen 中的内容,以文件通配符形式编写忽略规则,然后验证这两个部分
目标是建立一个这样的仓库:QWEN.local.md 永远不会被提交,.qwen/team-memory/ 总是被提交,而 .qwen/ 下的其他任何内容都刻意归为其中一类。
步骤 1:映射项目中 .qwen/ 下的所有内容
打开项目并列出 .qwen/ 的内容。你需要寻找四种文件。
QWEN.local.md(如果有人使用的话)。它必须排除在 git 之外。
settings.json。Qwen 指出“某些项目会提交 .qwen/settings.json”。如果你的项目也是这样——例如为了给所有人开启团队记忆——它就需要保持被追踪状态。
team-memory/(如果该层级已启用或即将启用)。它必须被追踪。
工具或团队成员放在那里的其他任何东西。针对每个项目,决定它是属于个人的还是共享的。
然后检查你当前的忽略规则,包括你电脑上的任何全局 git 忽略规则。特别留意带有尾随斜杠的 .qwen/。这就是警告中提到的那种形式。
步骤 2:以文件通配符形式编写带有明确重新包含规则的忽略规则
将任何目录形式的规则替换为文件通配符形式。在实践中,你的 .gitignore 需要三种类型的行。
第一,文件通配符忽略规则:.qwen/*。这会忽略文件夹内的所有内容,但仍允许 git 查看其中,从而使重新包含成为可能。
第二,团队记忆的重新包含规则,完全按照文档提供的方式:!.qwen/team-memory/ 和 !.qwen/team-memory/**。如果你的项目提交了设置,也请为 .qwen/settings.json 添加重新包含规则。
第三,不需要为 QWEN.local.md 添加额外规则。文件通配符规则已经覆盖了它,并且由于它没有被重新包含,它会保持被忽略状态。为了在你自己的电脑上更加安全,文档还建议将 .qwen/QWEN.local.md 添加到“你的全局 git 忽略规则”中。
单独提交 .gitignore 的更改,并在提交信息中解释为什么这种形式至关重要。下一个想要将忽略文件“整理”为 .qwen/ 的人应该明白他们为什么不应该这样做。
步骤 3:使用 git 进行验证,而不是使用文件浏览器
磁盘上的文件在这里说明不了任何问题;git 的视角才是关键。在启用团队记忆的情况下,让 Qwen 写入一条无害的团队记忆——关于大家已经遵守的规范的简短笔记——或者以相同的“一文件一记忆”布局手动添加一条。
然后检查 git 状态。文档指出:“团队记忆的写入会像其他任何文件一样出现在 git status / PR 差异中,因此可以在提交前进行审查。”如果新文件出现了,说明重新包含规则起作用了。如果没有出现,说明该文件夹仍被跳过,忽略规则在某处(可能在全局忽略文件中)仍为目录形式。
以同样的方式检查另一部分:创建或修改 .qwen/QWEN.local.md 并确认它没有出现。然后重启一次 Qwen 并留意启动警告;如果它不再出现,说明该层级已被追踪。
最后,让一位团队成员拉取代码并确认他们收到了测试记忆。共享是该层级的核心目的,而共享唯一真正的测试就是让其他人看到它。
在 MemoryLake 中进行设置
团队记忆是存放属于单个仓库的规范的好地方。但你团队所掌握的部分知识可能跨越多个仓库、多种工具,或者涉及根本不使用 Qwen Code 的人员。MemoryLake 是一个存放更广泛知识集的地方,这样它就不依赖于某个仓库中的单个文件夹是否被正确追踪。
You write the entries yourself, in your own words. Nothing is read out of, written to, or deleted from .qwen/, your team-memory folder, your auto-memory directory, or any vendor's store.
步骤 1:创建 API 密钥
登录并在控制面板中生成一个密钥。该密钥可以让智能体(agent)在 Qwen Code 或你团队使用的任何其他工具中读取你编写的条目。

步骤 2:上传你的第一批记忆
添加适用于跨仓库的决策:命名规范、审查规则、架构选择背后的原因。每个条目包含一个决策,并附带原因。

步骤 3:连接你的 AI 和智能体
将你的智能体指向该工作区。这样,在每个仓库和每种工具中(包括没有 .qwen 文件夹的工具)都可以使用相同的决策。

这在实践中带来了什么改变
第一个区别是个人层级和团队层级不再冲突。带有重新包含规则的文件通配符忽略允许 QWEN.local.md 保持私密,同时让团队记忆在同一个文件夹中保持共享,而无需任何人去记住某种变通方法。
第二个区别是团队记忆变得可以像普通文件一样进行审查。因为写入会显示在 git status 和拉取请求(PR)中,所以错误的规范可以在审查中被捕获。相同的理念——生成的知识与手写的规则并存——正是将手写的 Amazon Q 规则与生成的记忆库隔离开来背后的核心思想。
第三个区别是工作树(worktree)的行为变得可预测。Qwen 指出,对于私有自动记忆,“每个链接的 git 工作树都会获得自己的记忆文件夹”,并将仓库范围的规范指向团队记忆。在正确追踪该层级的情况下,每个工作树都能看到相同的共享规范。在机器之间移动工作与 Claude Code 在不同机器之间遗忘上下文具有相同的表现形式。
第四个区别是可选的同步变得可以安全考虑。Qwen 为团队记忆提供了自动 git 同步,并带有一个文档中记录的警告:“快进拉取(fast-forward pull)作用于你当前的整个分支,而不仅仅是 .qwen/team-memory/。”在启用它之前,这一点非常值得了解,而且只有在实际追踪该层级后它才具有意义。
第五个区别是团队记忆在其他层级中找到了合适的位置。提交的 QWEN.md 阐明了规则;团队记忆保存了团队学到的东西;你的私有层级保存了只有你需要的东西。其他智能体以不同的方式划分相同的职责——在 Claude Code 会话之间共享上下文和为什么 Claude Code 会遗忘项目上下文描述了那里的等效问题——但问题始终在于某个事实属于哪一层以及谁能看到它。
QWEN.md 文件和团队记忆的最佳实践
绝不要以目录形式忽略 .qwen/。 使用 .qwen/*,然后重新包含必须共享的内容。
明确重新包含团队记忆。 同时使用文档中记录的两行规则,即文件夹及其内容。
审慎决定 settings.json。 某些项目会提交它;如果你的项目也是如此,请重新包含它。
将个人细节保留在个人层级中。 QWEN.local.md 和你的私有自动记忆是供你个人使用的;团队记忆对所有拥有仓库访问权限的人可见。
完全杜绝敏感信息。 凭证扫描是一道防线。Qwen 自己的建议是“不要把敏感数据放在那里”。
通过 git 和团队成员进行验证。 Git status 会告诉你文件是否被追踪;团队成员的拉取会告诉你它是否被共享。关于扩展文件如何增加 Qwen 加载的内容,请参阅 Qwen Code 的扩展上下文归属;关于模型更改,请参阅在不丢失上下文的情况下切换到 Qwen 3.8 Max;对于代码中团队知识的更广泛问题,面向工程团队的代码库记忆工具对这些选项进行了比较。
结论
Qwen Code 的记忆设计非常周到。个人指令保留在本地,自动记忆默认保持私有,而团队记忆则通过每个团队都在使用的工具——git 进行共享。唯一棘手的地方在于,个人文件和共享文件夹并存,而 git 的忽略规则对待带有尾随斜杠的文件夹与带有星号的文件夹的方式截然不同。
文档准确地指出了这个问题:目录形式的忽略“会导致 git 完全跳过该文件夹”,并且“团队层在 git 中会悄无声息地保持为空”。
映射 .qwen/ 中的内容,切换到带有明确重新包含规则的文件通配符形式,并通过 git status 和团队成员的拉取进行验证。然后,将跨仓库的知识保存在不依赖于任何单个忽略文件是否正确的地方。