来自AI助手的总结
本教程介绍了一套与大型语言模型协同开发长期项目的工作流程,克服上下文限制,确保项目连续性和高质量代码输出。
本教程旨在提供一套与大型语言模型(LLM)协同开发长期项目的工作流程。核心目标是克服LLM的上下文窗口限制,确保项目细节的持久性、任务的连续性以及代码的高质量输出。
第一阶段:项目启动与规划(“唤醒”前的准备)
此阶段的目标是与AI共同确立项目愿景、设计初步方案,并建立一套能让AI“记忆”项目细节和任务进度的机制。
步骤 1:需求初探与AI理解确认
- 目的: 以最自然、非正式的方式向AI阐述项目愿景和核心需求,并确认AI是否准确理解。
- 您的行动:
- 直接、口语化地表达你的想法,无需修饰或优化措辞。
- 清晰指出你希望AI参考的资源(例如:本地文件路径,让AI自行阅读)。
- 在描述结束后,明确质问AI是否理解,并要求它进行深度思考和分析。
- AI的预期响应: 对你的需求进行分析、确认理解,并提出初步的项目设计构思,但不涉及具体代码实现。
- 示例对话(您的部分):Generated code
我需要一个 svg to compose imagevector 的 python 脚本,基于 uv 环境。 我的要求是让它以 ~/.../projects/community/Valkyrie 的基准来实现。你生成的 Compose 代码必须准确,最重要的是需要正确的解析逻辑,以及正确转换为 ImageVector 和 Path 代码的逻辑!你可以用工具来查看 ~/.../androidx/compose/ui/ui/src/commonMain/kotlin/androidx/compose/ui/graphics/vector 目录和 ~/.../androidx/compose/ui/ui-graphics/src/commonMain/kotlin/androidx/compose/ui/graphics 目录下感兴趣的相关文件,然后阅读内容来参考它们,以确保我们在 python 中转换正确的代码,这点很重要! 但我不确定如何设计这个 python 项目,以及对于输出的 kotlin 代码,我不确定有没有一个优雅的模版能实现。 我的描述可能不够清楚,我不确定你是否理解到我意思了,仔细思考一下让我看看你是否理解了。 我们暂时不写代码,而是设计、并且深度思考构思出一个能解决我所有需求的东西,详细说说你的分析和看法,以及规划。
步骤 2:深度规划与“记忆”机制设计
- 目的: 在确认AI理解后,进一步细化项目规划,并指导AI设计一套能够记录项目所有关键信息、任务进度和细节的“记忆”系统。这将是项目持续进行的基础。
- 您的行动:
- 表达对AI初步方案的认可。
- 强调上下文窗口限制带来的记忆丢失问题,要求AI提前规划所有实现细节和任务安排。
- 指导AI创建任务跟踪目录(例如:.claude/tasks/),并指定文件格式(例如:XML)和内容规范(简洁、无表情符号、无日期、无冗余信息)。
- 确认AI是否已读取并记录了之前提供的参考目录中的关键文件信息。
- AI的预期响应: 设计并生成指定格式的任务跟踪文件,其中包含详细的任务分解、实现规划和必要的文件参考。
- 示例对话(您的部分):Generated code
我认可了! 不过最重要的是,我们需要足够完整清晰理解所有实现规划,以及细节,原因在于我们的会话 context window 有限制,到达某一刻之后你可能会忘记全部信息,因此你必须提前规划好我们完成这个项目需要什么,比如:如何解析 svg、如何将对应的东西转换成 compose 中的 api;这方面的所有任务安排都应该尽可能详细,我的描述可能不够清楚,我不确定你是否理解到我意思了,深度思考一下让我看看你是否理解了。 此外,之前我给你的目录参考,你似乎已经从中读取了关键的源码文件?如果信息足够,你可以将详细的具体文件记录,这样就可以让下次失忆的你重新读取整个目录,然后通过详细的信息恢复记忆来。当然如果你认为零散的文件不足以让下次的你想起所有细节时,在必要的时候也可以记录完整目录,取决于你的深度思考,我们不在乎算力! 总之,为了能够在你因为上下文容量不足清空记忆后,还能够以正确的路径实现这个项目,并且确保细节不丢失,一个能够完整记忆所有细节以及跟踪任务的记录会很有帮助。 这意味着我们可以随时继续任务,并且能正确地恢复,因此你需要深度思考设计一个能够完美记忆的任务目录?具体工作安排的计划表?或者其他什么?仔细设计一下,你可以在 .claude/tasks 下面记录,使用 xml 格式的文件(tag name 简洁明确),不要写 emoji,不要记录具体日期,不要记录无意义的冗余信息。
IGNORE_WHEN_COPYING_START content_copy download Use code with caution. IGNORE_WHEN_COPYING_END
步骤 3:创建“唤醒”指令
- 目的: 获取一条指令,用于在每次清空上下文后,“唤醒”AI,使其能够根据之前创建的“记忆”系统恢复工作状态,并了解下一步任务。
- 您的行动:
- 请求AI提供一条自我指导的“唤醒”指令。
- 解释“唤醒”指令的必要性:用于任务跟踪、进度恢复、完成后的更新以及在上下文清空时的指导。
- AI的预期响应: 生成一条详细的“唤醒”指令Prompt。您需要将此指令妥善保存。
- 示例对话(您的部分):Generated code
非常完美!现在我需要你给我一个将未来失去记忆的你“唤醒”的指令。 你需要教你自己如何根据这些文件去跟踪任务,并正确地恢复,以及在之后完成任务之后应该如何做、如何更新,和其他必要的指导。 因为你每次可能只能完成一部分任务,一旦任务完成,或者上下文容量快满的时候,我就会将你记忆清空重头开始,仔细思考一下什么样的指令可以指导失去记忆的你找回自己。
IGNORE_WHEN_COPYING_START content_copy download Use code with caution. IGNORE_WHEN_COPYING_END
步骤 4:定义编码规范与风格指南
- 目的: 为AI提供详细的编码偏好、技术栈选择、代码风格和质量标准,确保其生成的代码符合你的要求。
- 您的行动:
- 创建一个专门的文件(例如 PROMPT.md 或 .cursor 配置),详细列出所有编码规范。
- 内容应包括但不限于:语言、格式(缩进、命名)、工具链(包管理器、Linter)、现代语言特性使用、注释哲学、测试实践、工作流等。
- 示例(Python Prompt): (同原文提供的Python Prompt示例)
- 重要提示: 这一步在项目开始前完成一次即可,后续每次唤醒AI时,AI会知道去哪里获取这些规范。
第二阶段:迭代开发工作流(“唤醒”后的循环)
一旦完成第一阶段的准备工作,后续的开发将遵循一个循环迭代的过程。每次任务或上下文即将满时,都会清空会话并重新开始。
每次执行任务时,重复以下步骤:
- 清空会话上下文: 手动清空当前的AI会话历史。
- “唤醒”AI并获取任务:
- 粘贴你在第一阶段 – 步骤 3 中保存的“唤醒”指令。
- 在指令末尾添加:“看看我们现在要做什么”。
- AI的预期: 根据.claude/tasks目录中的信息,自动恢复记忆,并识别出当前待完成的任务。
- 协同编码与审查:
- 与AI进行交互,共同讨论、设计并实现代码。
- 在此过程中,您可以随时审查AI生成的代码,提出修改意见。
- 测试与修复:
- 要求AI为新功能编写测试用例(建议仔细检查测试断言)。
- 运行Linter(如 ruff)和测试(如 pytest),确保代码质量和功能正确性。
- 与AI协作修复所有Linting问题和测试失败。
- 更新任务进度:
- 一旦本次会话的工作完成,指示AI更新其.claude/tasks目录中的任务状态。
- 示例指令: 看起来我们本次会话的工作都完成了,现在请你更新你的 .claude/tasks 目录。
- Git 提交:
- 在清空上下文前,指示AI检查当前的本地Git更改,并进行提交。这确保了工作成果的安全保存,并提供回滚点。
- 示例指令: 请你检查当前 git 的本地更改,然后 commit。
- 再次清空会话: 确认所有工作已保存且Git已提交后,清空本次会话历史,为下一次迭代做准备。
总结
通过这套“规划-记忆-唤醒-迭代”的流程,您能够:
- 克服LLM上下文限制: 确保项目信息和进度不会因会话清空而丢失。
- 提高开发效率: AI能够根据详细规划高效地生成代码,并自动进行测试和提交。
- 保证代码质量: 统一的编码规范和严格的测试流程确保产出的代码符合高标准。
- 实现无缝中断与恢复: 项目可以随时暂停和恢复,每次都能从正确的起点继续。
这套流程将LLM从简单的代码生成工具提升为真正的智能协作者,让长期复杂的项目开发变得更加可控和高效。