MemoryLake
返回全部文章
Tutorial2026 年 8 月 26 日·12 分钟阅读

如何在不丢失上下文的情况下从 Kiro 迁移到 Cursor (2026)

这种迁移有一个只需五分钟的版本,看似有效,实则在静默状态下什么也没做。

你将 .kiro/steering/*.md 文件复制到 .cursor/rules/ 中,重启,然后继续你的一天。但 Cursor 的文档明确说明了接下来会发生什么:".cursor/rules 中的普通 .md 文件会被规则系统忽略,因为它没有 frontmatter 来指定 descriptionglobsalwaysApply。" Kiro 的引导文件是普通 markdown。Cursor 的项目规则必须是 .mdc。没有警告,没有错误,规则面板中也没有任何条目——这些文件根本不会被读取。

一旦你了解了这一点,修复起来就很简单,而且有一个真正令人满意的理由去正确地完成它:Kiro 的四种引导引入模式与 Cursor 的四种规则类型几乎是一一对应的。似乎还没有人把这个对应表写下来,所以本文做了这件事。

较难的部分是 Kiro 拥有三个独立的记忆表面,而 Cursor 的文档索引中根本没有记忆页面。本文将介绍哪些内容可以迁移,哪些不能,以及如何保存那些无处安放的部分。Cursor 自身的会话行为在如何在会话之间携带 Cursor 上下文中进行了介绍。

实际可以迁移的内容

你的引导文件,只需重命名并添加四行 frontmatter。 这是迁移的核心,映射关系非常清晰:

Kiro 引导 inclusion:Cursor 规则类型Cursor frontmatter
always(默认)始终应用 (Always Apply)alwaysApply: true
fileMatch + fileMatchPattern应用于特定文件 (Apply to Specific Files)设置 globsalwaysApply: false
auto + name + description智能应用 (Apply Intelligently)设置 description,无 globs
manual手动应用 (Apply Manually)description,无 globs

两者在底层的运作方式相同。Kiro 的 auto 模式"使用描述来决定引导文件何时相关。" Cursor 的等效功能是:"规则的描述将呈现给 Cursor Agent,以决定是否应该应用它。" Kiro 的 manual 文件通过 #steering-file-name 引入;Cursor 的文件则通过 @ 提及。将每个文件重命名为 .mdc,添加匹配的 frontmatter,你就能获得与之前完全相同的行为。

你的基础文件,作为始终开启的规则。 Kiro 的 product.mdtech.mdstructure.md 默认"包含在每次交互中。" 这些将变成 alwaysApply: true 规则。不过在转换之前,请先阅读它们——Kiro 自身的引导指南警告不要重复代码库中已经声明的内容,Cursor 的规则文档也有同样的建议。一个主要由目录列表组成的 structure.md 值得修剪,而不是移植;具体原因请参见如何让 Cursor 记住你项目的文件结构

你的 AGENTS.md,保持不变。 这两个工具都支持它。Kiro 从工作区根目录、~/.kiro/steering/ 以及子目录中加载它,并指出"AGENTS.md 文件不支持引入模式,且始终包含在内。" Cursor "支持项目根目录和子目录中的 AGENTS.md",并明确推荐将其作为 .mdc 规则的普通 markdown 替代方案。如果你的大部分引导本来就是始终开启的,那么 AGENTS.md 是摩擦力更小的选择。

你的 Skills,只需移动目录或完全不移动。 Cursor 会读取 .agents/skills/.cursor/skills/~/.agents/skills/~/.cursor/skills/,此外——"为了兼容性"——还会读取 .claude/skills/.codex/skills/~/.claude/skills/~/.codex/skills/。这两个工具都基于相同的开放 Agent Skills 标准,因此 SKILL.md 文件可以原样保留。一个行为上的差异是:使用 / 调用的 Cursor skill "仅附加到单条消息",若要在整个会话中保持开启,则需要使用 Option+Enter 将其作为自定义模式 (Custom Mode) 运行。

你的 specs,作为文件保留,但工作流无法保留。 Kiro 的 specs 以 requirements.md(或 bugfix.md)、design.mdtasks.md 的形式存在于 .kiro/specs/<name>/ 中。它们是代码库中的 markdown 文件,因此在迁移后仍能保留并可读。无法保留的是围绕它们的三阶段工作流——即带有审批关卡和实时任务状态的"需求-设计-任务"递进流程。

Cursor 最接近的等效功能是 Plan Mode,它同样非常强大:它"在编写任何代码之前创建详细的实现计划," 你可以"通过聊天或 markdown 文件审查和编辑计划," 并且可以根据完善后的计划进行回滚和重新运行。但请注意产物保存在哪里——"计划默认保存在你的主目录中。点击‘Save to workspace’将其移动到你的工作区,以便日后参考、团队共享和归档。" Kiro 的 spec 默认存在于代码库中。而 Cursor 的计划默认存在于你的主目录中。这个默认设置决定了它是团队产物还是个人产物。

其他内容都无法迁移,这是架构原因决定的。 Kiro 维护着三个记忆表面。而 Cursor 的文档索引中没有记忆页面。

Kiro Crew 的六个层级无处安放。 Crew 保留了 preferences.mdprojects.md(两者每 30 条消息就会被整合器整体替换),一个具有分级衰减的 history/ 目录,一个 SQLite 语义存储,一个带有向量搜索的情景存储,以及一个用于学习纠错的 lessons 存储。每个层级都有字符限制和自己的衰减规则——历史记录在 14 天时降为"每天第一条记录 + 计数",在 181 天时停止加载,并在 365 天时"从磁盘删除。" Lessons 限制为 50 条记录,并标记为"用户显式指定始终优先。" 这是一个真正的记忆系统,而 Cursor 没有可以接收它的容器。

Kiro Web 的学习记忆也无法迁移。 它是根据你对拉取请求(pull requests)的反馈构建的——"只有你作为创建任务的用户的反馈,才会影响 agent 的学习内容"——并且你对它的控制仅限于删除。

Crew 快照是备份,而不是导出。 kirocrew snapshot 会生成一个包含记忆、工作区、定时任务(crons)、配置、skills 和通知的单个 tar 包。这是在机器之间迁移的正确方法,Kiro 的文档也正是这样说明的。但只有 Kiro 能读取它,因此它只是你所离开系统的安全副本,而不是你所加入系统的导入文件。请小心对待它:Kiro 警告称"快照包含敏感数据(用于审计日志完整性的安全密钥)。"

手动迁移步骤

步骤 1:创建快照,然后阅读你即将失去的层级

在进行任何其他操作之前,先运行 kirocrew snapshot ~/migrate。即使 Cursor 无法读取它,你也需要这个副本——而且 Crew 内置的每日任务仅"保留最近 7 个快照," 所以不要以为昨天的快照还在。

然后是阅读,而不是复制。打开 ~/.kiro/crew/workspace/memory/preferences.mdprojects.md。因为这两个文件是"每 30 条消息由整合器整体替换——而不是仅追加," 它们是 Crew 对你的当前模型的快照,而不是日志。其中的任何内容都是 Crew 目前认为重要的东西,这使得它们成为篇幅简短且信息量极高的读物。

然后查看你的 lessons——即上限为 50 条的学习纠错。这些是你告诉 Crew 始终要做的事情,或者纠正它去做的事情。你的代码库中没有任何内容暗示这些,因此 Cursor 中也没有任何内容可以重建它们。

还要检查 ~/.kiro/steering/ 中的全局引导。Kiro 通过将工作区引导置于全局引导之上来解决冲突。Cursor 的顺序是"团队规则 (Team Rules) → 项目规则 (Project Rules) → 用户规则 (User Rules)," 其中"当指南冲突时,较早的来源优先。" 项目规则仍然优于个人规则,因此这部分行为得以保留——但如果你使用 Cursor 的 Team Rules,现在一个新层级的优先级将高于这两者。

步骤 2:将引导转换为 .mdc,并选择保留为普通文本的内容

对于 .kiro/steering/ 中的每个文件,阅读其 frontmatter,在上面的表格中查找对应行,并编写等效的 Cursor 配置。fileMatch 文件变成 globs 值;auto 文件保留其 description 并丢弃 name;始终开启的文件变成 alwaysApply: true,且两者都不需要。

有两项转换值得手动进行,而不是机械地转换:

文件引用将失效。 Kiro 引导可以通过 #[[file:api/openapi.yaml]] 嵌入实时文件,因此引导文本会随着文件的更改而保持最新。Cursor 规则没有等效的指令。要么内联内容(并接受它会过时),要么在正文中引用路径并让 agent 去读取它。

自定义 agent 资源列表没有对应物。 如果你配置了 Kiro 自定义 agent,请记住"引导文件不会自动包含"在其中,你必须显式列出它们,通常为 {"resources": ["file://.kiro/steering/**/*.md"]}。Cursor 会根据其 frontmatter 应用规则,而不管处于何种模式,因此这些显式资源列表没有可转换的内容——检查是否有任何 agent 是故意在没有引导的情况下运行的,因为这种意图将无法保留。

如果你的大部分引导都是始终开启且简单的,坦率的建议是完全跳过这些文件的 .mdc 转换,直接将内容放入 AGENTS.md。Cursor 的文档正是针对"需要简单、可读的指令而不需要结构化规则开销的项目"提出了这一建议。将 .mdc 留给真正需要 globs 或 descriptions 的文件。

最后给迁移团队的一点提示:Kiro 的团队引导是通过"通过 MDM 解决方案或组策略"将文件推送到机器来分发的。Cursor 的 Team Rules 在 Team 和 Enterprise 计划中通过仪表板进行管理,适用于"该团队的所有代码库和项目," 并且可以标记为"强制执行此规则 (Enforce this rule)",这样成员就无法将其关闭。这是一个更好的机制,但它是自由格式的文本——Team Rules "不使用 Project Rules 的文件夹结构"——因此引导文件目录必须被扁平化。

更好的方法:将学习到的部分保存在编辑器无法控制的地方

注意这次迁移的两部分表现有多么不同。你写下的所有内容都迁移了:引导变成了规则,AGENTS.md 保持原样,skills 不需要更改,specs 保持可读。而工具学到的所有内容则完全没有迁移。

这种分裂不是 Kiro 的问题,也不是 Cursor 的问题。Kiro 构建了一个复杂的学习记忆系统并将其保存在 ~/.kiro/ 下。Cursor 做出了一个刻意的不同选择——持久上下文存在于版本控制的规则文件和 skills 中,这就是为什么它的规则是可审查的,而其文档中没有记忆页面的原因。两者都是连贯的设计。但对于你为什么拒绝某种方法的唯一副本来说,这两者都不是一个好的存放场所。

这就是 MemoryLake 的用武之地:将你项目的持久知识保存在一个供工具查询的层中,这样学习到的部分就不再属于你碰巧打开的那个编辑器。设置只需三个步骤。

步骤 1:创建 API 密钥

登录并创建 API 密钥。一个凭据即可连接你使用的所有工具。

创建 MemoryLake API 密钥
创建 MemoryLake API 密钥

步骤 2:上传你的第一批记忆

简短的条目,每条包含一个主张。直接根据步骤 1 的阅读内容编写这些条目:

上传你的第一批记忆到 MemoryLake
上传你的第一批记忆到 MemoryLake

你的 lessons,每条记录一个。 Crew 中上限为 50 条的学习纠错。这些是你拥有的价值最高且最难恢复的内容。

preferences.mdprojects.md 当前的内容。 它们是实时快照,因此很短。将它们拆分为独立的主张,而不是直接粘贴整个文件。

附带原因的决策。 “我们对写入进行排队,因为副本在负载下存在延迟。”规则只陈述了策略;只有原因才能阻止替代方案再次被提出。

在此代码库中已被拒绝的方法。 这一类别不会出现在任何引导文件、规则或提交消息中。

步骤 3:连接你的 AI 和 agent

连接你使用的工具。MemoryLake 可以通过 MCP 和 API 访问,并且 Kiro 和 Cursor 都支持 MCP 服务器——因此你可以在过渡期间并排运行它们,而无需维护同一套推理逻辑的两份副本,其他助手也可以通过 API 读取相同的记忆。

通过 MCP 连接你的 AI 和 agent
通过 MCP 连接你的 AI 和 agent

三个坦率的限制。MemoryLake 无法读取 Crew 快照、导入 Kiro Web 的学习记忆或写入你的 .mdc 文件——这些是 Kiro 的格式和 Cursor 的引导表面。它只保存你或你的 agent 放入其中的内容,因此步骤 2 是手动的。此外,规则是上下文而不是强制配置;任何每次都必须遵守的内容都属于启用了强制执行的 Cursor Team Rules,而不是记忆层。

这在实践中带来了什么改变

引导转换变成了查表,而不是主观判断。 四种模式,四种规则类型,一张表。

静默失效不再发生。 .cursor/rules 中的普通 .md 会被忽略。现在你在发布之前就知道了。

Specs 保持可读,工作流由你决定。 文件保留了下来;审批关卡则没有。

计划需要刻意保存。 Cursor 计划默认保存在你的主目录中,因此“Save to workspace”是将其变为团队产物的关键步骤。

Skills 不再特定于工具。 相同的 SKILL.md 可以在 Kiro、Cursor、Claude Code 和 Codex 中运行。

衰减不再令人意外。 Crew 的历史记录在 14 天时丢失细节,在 365 天时删除——这种行为本身值得理解,正如保留评分记忆树所展示的内容中所述。

从 Kiro 切换到 Cursor 的最佳实践

在开始之前创建快照,并妥善保管 tar 包,避免存放在共享驱动器上。 Kiro 指出快照包含敏感密钥。

阅读 preferences.mdprojects.md 和你的 lessons。 整体替换的文件在结构上就很短。没有理由跳过它们。

重命名为 .mdc 并添加 frontmatter,或者将内容移动到 AGENTS.md 这是仅有的两个能实际加载的选项。

对于任何始终开启且简单的内容,优先选择 AGENTS.md Cursor 推荐这样做,并且在过渡期间它在两个工具中都有效。

谨慎转换 #[[file:…]] 引用。 内联会使它们过时;正文引用则能保持其实时性。

修剪 structure.md 而不是移植它。 两个厂商都建议不要重复陈述代码库。

在处理 Team Rules 之前,先扁平化团队引导。 它们是自由格式的文本,而不是文件夹结构。

不要将推理过程放在始终开启的规则中。 每个工具都会限制其携带的内容,而推理过程往往最先被裁剪——这是编码 agent 实际读取的内容中提到的普遍问题。

结论

从 Kiro 到 Cursor 是两次难度截然不同的迁移。书面部分几乎是机械式的:四种引导引入模式映射到四种 Cursor 规则类型,AGENTS.md 在两者中都适用,SKILL.md 文件不需要更改,并且 specs 在你的代码库中保持为可读的 markdown。唯一会让你踩坑的是文件扩展名——.cursor/rules 中的普通 .md 会被直接忽略,且没有任何错误提示。

学习到的部分则完全无法迁移。Kiro Crew 在你的主目录下保留了六个记忆层,每个层级都有自己的上限和衰减计划,此外还有 Kiro Web 中根据你的 PR 反馈构建的独立学习记忆。Cursor 的文档索引中没有记忆页面,因为它的设计是将持久上下文放在版本控制的规则和 skills 中。kirocrew snapshot 为你提供了一个只有 Kiro 才能读取的完整备份。

因此:创建快照,阅读保存了 Crew 当前对你的模型的三个文件,对照表格转换引导,针对每个文件在 .mdcAGENTS.md 之间做出选择,并将 lessons 和被拒绝的方法放在两个编辑器都可以查询的地方。这样,下一次工具切换就只是个人偏好的选择,而不是一次失忆事件。

常见问题

为什么我把 Kiro 引导文件复制到 Cursor 后不起作用?

因为扩展名的原因。Cursor 的文档指出,.cursor/rules 中的普通 .md 文件"会被规则系统忽略,因为它没有 frontmatter 来指定 descriptionglobsalwaysApply。" Kiro 引导文件是普通 markdown。将每个文件重命名为 .mdc 并添加匹配的 frontmatter,或者将内容放入 AGENTS.md 中,Cursor 支持在项目根目录和子目录中读取该文件。

Kiro 的引入模式如何映射到 Cursor 的规则类型?

一一对应。Kiro 的 always 变为 alwaysApply: true(始终应用)。带有 fileMatchPatternfileMatch 变为 globs 值(应用于特定文件)。带有 descriptionauto 变为仅包含描述的规则(智能应用),因为这两个工具都允许 agent 根据描述做出决定。manual 变为两个字段都不包含的规则,通过 @ 提及来调用,而不是 Kiro 的 #name

Cursor 有与 Kiro specs 等效的功能吗?

部分有。Cursor 的 Plan Mode 会创建一个可审查的实现计划,你可以在构建之前在聊天中或作为 markdown 进行编辑,并且可以根据完善后的计划进行回退和重新运行。它不会重现 Kiro 由 requirements.mddesign.mdtasks.md 组成的三文件结构或其阶段关卡。另外请注意,Cursor 计划"默认保存在你的主目录中",需要显式点击“Save to workspace”才能成为代码库产物。

我可以将 Kiro Crew 的记忆导出到 Cursor 中吗?

不能。kirocrew snapshot 会生成一个包含记忆、工作区、定时任务(crons)、配置、skills 和通知的 tar 包,这是文档中记载的在机器之间迁移 Crew 的方法——但只有 Kiro 能读取它。Cursor 的文档索引中没有记忆页面,因此没有目标存储。阅读 preferences.mdprojects.md 和你的 lessons,并将重要的内容重新输入到规则或独立的记忆层中。

我的 Kiro skills 可以在 Cursor 中使用吗?

可以。两者都基于开放的 Agent Skills 标准,因此 SKILL.md 文件可以迁移。Cursor 会从 .agents/skills/.cursor/skills/~/.agents/skills/~/.cursor/skills/ 加载 skills,为了兼容性,还会从 .claude/skills/.codex/skills/~/.claude/skills/~/.codex/skills/ 加载。

在 Cursor 中,我的全局引导仍然会输给项目引导吗?

是的,并且在两者之上还有一个新层级。当发生冲突时,Kiro 会将工作区引导置于全局引导之上。Cursor 的顺序是 Team Rules,然后是 Project Rules,最后是 User Rules,所有适用的规则都会合并,并且在冲突时较早的来源优先。因此,项目规则仍然优于个人规则,但 Team Rule 现在高于你的项目规则——并且强制执行的 Team Rule 无法被成员关闭。