👋 大家好,我是 Lenny。每周我都会回答读者关于产品构建、增长驱动和职业加速的问题。更多内容请关注:Lenny's Podcast | How I AI | Lennybot | 我最喜欢的 AI 和 PM 课程 | 我最喜欢的公共演讲课程

附言:Insider 订阅用户 可免费获得一年 Lovable、Manus、Replit、Gamma、n8n、Canva、ElevenLabs、Amp、Factory、Devin、Bolt、Wispr Flow、Linear、PostHog、Framer、Railway、Granola、Warp、Perplexity、Magic Patterns、Mobbin、ChatPRD 和 Stripe Atlas 的使用权。是的,这是真的。了解更多**

你即将阅读的这篇文章花了超过 100 个小时来创作。因为它不仅仅是一篇文章——它是一个开源互动式 AI 体验,能帮助你构建 AI 产品直觉(AI Product Sense)。Tal 和 Aman 进行了数十次可用性测试,编写了评估标准(evals),优化了下面你将看到的每一个提示词(prompt),甚至还与 Cursor 合作为你提供了免费额度(见下文!),让你可以在自己电脑上尝试这一切。他们整合出来的东西是我前所未见的,我很兴奋能把它带给你。

下周,在这个系列的第二部分,你将学会如何将这份新获得的 AI 直觉应用到自己的产品中。

想了解更多 Tal 和 Aman 的内容,请查看他们的深度工作坊 构建 AI 产品直觉(下周开课,使用此链接可享 85 折),以及他们即将上线的免费闪电课 如何知道该构建什么 AI 产品,与我另一位最喜爱的合作者 Hilary Gridley 联合推出。你也可以为你的团队预约 Tal 和 Aman 的构建冲刺


你在产品会议上听到有人提到"子代理"(subagents)、"上下文工程"(context engineering)或"代理记忆"(agent memory)。你点头附和。你知道这些术语是什么意思……你只是希望没人要求你用它们造句。

你看过视频讲解,收藏过信息图,用 AI 随手搭(vibe code)过几个应用,甚至交付过一个 AI 功能。那为什么你仍然感觉自己离真正理解这些东西差得很远?

我们(Tal 和 Aman)都曾无数次经历过这种感受——在我们为数以万计的客户构建 AI 产品的过程中反复如此。问题不在你。问题在于"AI 炒作工业复合体"(AI hype industrial complex)。大多数 AI 内容的目的不是教学,而是制造错失恐惧症(FOMO):"这个模型太疯狂了"之类的帖子、隐藏了混乱现实的演示、以及把问题解释得更复杂而不是更清晰的图表。

我们发现,要内化重要的 AI 概念,唯一最具变革性的习惯就是:从消费级 UI(比如 ChatGPT、Granola、Lovable)转向更强大的 AI 编程代理(AI coding agents),如 Cursor 和 Claude Code。 通过与编程代理实际动手操作,我们构建起了自己的"AI 产品直觉"——也就是正确预判什么对用户真正有影响、以及用 AI 是否可行的能力。

AI 产品直觉意味着:当你看到用户反馈说 AI"忘记"了某些事实时,你能识别出这是上下文衰减(context rot);当你观察用户在一个工作流中苦苦挣扎时,你能自信地说代理记忆可以解决这个问题——并且知道如何重新设计体验。

过去三个月,我们通过在日常非技术任务中使用 Cursor,学到的关于 AI 产品实际运作方式的知识,比三年使用 ChatGPT 学到的还多。这是因为编程代理会透明地展示它们的工作过程。你可以阅读 AI 的推理过程,查看工具调用(tool calls),观察上下文窗口(context window)的填充情况。你会遇到和构建 AI 应用的工程师一样的瓶颈,自然而然地推导出自己的解决方案,并开始预判行业趋势和公告。

如今,我们每天都在用 Cursor 和 Claude Code 处理日常工作:战略、优先级排序、决策、数据分析和生产力提升。它们既是我们的思考伙伴,也是我们的个人操作系统。

在这篇文章中,我们将引导你使用 AI 编程代理进行非技术性的产品工作:

你将带着预判技术趋势而非追赶技术的信心离开,同时收获一个额外奖励——你的个人 AI 操作系统。让我们一起构建 AI 产品直觉。

步骤 1:下载 Cursor

Cursor 绝对是快速提升 AI 产品直觉的最佳编程代理。

你可能到处听到 Claude Code,我们也很喜欢它——用于委派长时间运行的独立任务,比如 vibe coding。但 Cursor 仍然是我们与 AI 结对、并直接观察 AI 代理工作过程的最爱。

Cursor 是一种可视化的、可点击的用户体验,可以与多种 AI 模型提供商配合使用,包括 OpenAI 和 Anthropic。这意味着你很有可能在工作中也能使用它。

下载 Cursor 只需两分钟。现在就去下载!

  1. 下载并安装 Cursor对于本文,请确保下载安装桌面应用,而非网页版 Cursor。

步骤 2:创建新项目

打开 Cursor,注册账号,快速完成引导流程,然后点击"打开项目"(Open project)。

如果你之前已用过 Cursor,请点击 文件 > 新窗口(File > New Window)进入此界面,然后打开一个新项目。

点击"新建文件夹"(New Folder):

命名为"Build AI Product Sense",然后点击"创建"(Create):

最后,点击"打开"(Open)(是的,在一个空文件夹上点击"打开"有点奇怪,但请照做,它能用):

步骤 3:在 Cursor 内部继续阅读本文

坐稳了,因为你要在 Cursor 内部继续这次体验了——灵感来自儿童科普节目《神奇校车》(The Magic School Bus)

如果你现在没时间乘坐这趟神奇校车,可以继续往下阅读。但为了构建你的 AI 产品直觉,我们建议你回头用下面的提示词在 Cursor 内部尝试继续体验本文。

确保你处于"代理"(Agent)模式。这允许 Cursor 执行操作(比如从互联网获取这篇文章)。

在"模型"(model)下拉菜单中,关闭"自动"(auto),选择 Opus 4.5 🧠:

🎁 附注:我们送你免费 Cursor 额度 🎁

为了帮助你完整体验本教程,我们为 Lenny's Newsletter 订阅者提供 $50 的免费 Cursor 额度。这足以支持你 2.5 个月的标准使用量。衷心感谢 Ben Lang 和 Cursor 团队促成此事。注意:数量有限,免费兑换码可能领完。请尽快行动。

如何领取你的免费 Cursor 额度:

  1. 访问 Cursor.com/dashboard 并注册账户。

  2. 成为 Lenny's Newsletter 年度(或 Insider)订阅者

  3. 领取你的免费 Cursor 兑换码(滚动到底部找到 Cursor),点击按钮兑换,你将看到如下界面:

  4. 点击"开始使用"(Get Started)将额度应用到你的账户。[额度可在免费和付费账户中兑换。]

  5. 兑换额度后,你应该能在 Cursor 控制面板中看到此框。[如果看不到额度,请尝试强制刷新,或退出后重新登录。如果仍然无效,请发邮件至 [email protected] 并提及本文。]

  6. 最后,你需要升级到 Pro(或更高)计划才能使用最新 AI 模型,如 Opus 4.5。如果你已经在 Pro 或更高级别,就已准备就绪。

一旦在控制面板中看到额度,就可以升级了。你不会被收取任何费用(你有 2.5 个月的额度)。额度将自动应用到下一张发票(如果你启用了"按需使用",也可应用于此)。

应显示如下:

现在,将以下提示词粘贴到 Cursor 聊天框中(或直接点击此链接):

帮助我使用这篇文章构建我的 AI 产品直觉(文章我还没读过):https://buildaiproductsense.com/magicschoolbus。(不要用浏览器打开——那会分散注意力——用 cURL 或其他工具。)

首先给我一个概览:我们为什么在这里,我们要去哪里——让我超级有动力坚持下去。然后暂停,确认我准备好开始了。利用暂停了解更多我的职业背景(关于 Cursor 或 AI 之外的方面),这可以为我们的学习之旅提供参考。

接下来,按顺序带我逐个学习每个小概念,一次一步/一个问题,从"步骤 3"开始。

你既是一个出色的 1 对 1 动手学习导师,同时也是 Cursor 代理。让我动手操作,保持参与和学习。一次只问我一个问题。在开始新步骤/阶段/想法/概念之前,停下来跟我确认,鼓励我向你复述——并以高标准要求我——像一个高效、富有同理心的导师。

重要的是,你必须按顺序覆盖本文中的每一个概念。通过路标指引和明确进度(已完成多少、还剩多少)来保持我的动力。(但同时,也要留出空间顺应我的好奇心,允许偏离计划,只要总体上我们是在推进文章内容。)

在相关时使用文章的原始措辞(允许你以第一人称使用它们,而不是显式引用他人)。标题使用句子式大小写(sentence-case),而非标题式大小写(title case)。

每当你在文章中遇到内联图片时,请阅读图片(一次一张、即时读取、不提前、如需可临时存储)。这对理解文章内容很重要。

我们已经在同一个 Cursor 聊天线程中交谈了,所以尽可能使用这个线程。重要提示:你同时也是 Cursor 代理!所以当我说出你建议的提示词,或给出"修改这个文件"之类的任务时,你自己来执行(不要让我单独去操作或问我自己是否单独做了)。不要提到一个"另外的 Cursor 代理"——就是你自己。

请记住 Cursor 的视觉配置可能多种多样且不断演进,所以不要假设某个 UI 元素的位置。文件浏览器可能在左边也可能在右边。

每当你尝试使用任何类型的工具时,系统都会要求我批准,这可能会让人害怕。所以你需要解释你为什么在请求批准,以及为什么批准是安全的。这甚至可能是一个教学时刻——你可以联系文章目标(以及我们在旅程中的位置),说明这就是你作为一个代理在工作!

持续鼓励我使用语音录制功能(聊天框下方的 🎙️ 图标),养成语音转文字的习惯。

点击"提交"(submit):

如果你选择接受这个挑战,你将在 Cursor 内部完成本文剩余部分。全程保持在同一个聊天线程("代理")中(无需打开新线程或代理)。

AI 将引导你完成本文的其余部分。各位,系好安全带!我们在 Cursor 中见。

步骤 3:Cursor 可能看起来令人生畏,但你其实比想象中更熟悉它

Cursor 看起来像《黑客帝国》(Matrix)风格的极客工具,但它其实就是 ChatGPT、一个文本编辑器和一个文件浏览器揉合在一个窗口里。

我们再说一遍,Cursor 只是三个你已经用过无数次工具的组合:

  1. ChatGPT
  2. 一个文本编辑器
  3. 文件浏览器

Tal 的一名学生——一位销售人员——说得最贴切:Cursor 就是"一个可以触碰我电脑上任何文件的 AI"。

快速导览:

1. 代理(Agents)

"代理"是"聊天"的别称。这就是你与 AI 交互的地方。

在左侧,你会看到一个空面板,其中将包含你的代理历史记录。点击"新建代理"(new agent)开始你的第一个聊天("代理"等同于"聊天线程"):

你会看到一个熟悉的聊天框。点击左下角的下拉菜单。你可以在"询问"(Ask)模式和"代理"(Agent)模式之间切换(暂时忽略其他选项,如 Plan 和 Debug)。

"询问"模式就像经典 ChatGPT 一样使用 Cursor:聊天,但不做任何修改。这非常适合在采取行动前进行头脑风暴或提问。你可以立即用它替代标准 ChatGPT/Claude。

"代理"模式用于希望 Cursor 修改我们项目中的文件。我们稍后将一起使用它。

2. 编辑器(Editor)

我们将使用这个面板来查看和手动编辑文本文件。这就像在 Mac 上用文本编辑(Text Edit)或在 Windows 上用记事本(Notepad)一样。要看到文本编辑器,你可能需要创建一个新文件或双击一个现有文件。

3. 文件浏览器(File explorer)

文件浏览器显示项目中所有的文件和文件夹。这就像 Mac 上的 Finder 或 Windows 上的文件资源管理器,根据最新版本它可能在 Cursor 的右侧或左侧。要展开它,你可能需要点击窗口顶部的小图标使其可见。(你随时可以用 Windows 的 Ctrl + B 或 Mac 的 Cmd + B。)

即使 Cursor 一开始令人生畏,其核心概念与你已使用过的任何大语言模型(LLM)是一样的。Cursor 只是多了些可配置项、选项和可以摆弄的东西。这是你建立直觉的游乐场。

Cursor 是我们用来真正完成工作的工具,而不仅仅是学习 AI 概念

如果你已经在 ChatGPT 或 Claude projects 中创建了你的 AI 思考伙伴,你可能在想到底值不值得折腾切换到 Cursor。我们必须说清楚:无论是否为了理解技术概念,现在我们大部分时间都在编程代理中处理非技术任务。

那么实际区别是什么,我们为什么切换?首先,Cursor 在根本上与 ChatGPT projects 是相同的理念:文件作为知识,聊天作为界面,指令始终适用。

两个小小的形式差异改变了一切:

这创造了一个紧密的循环:每次聊天都会自动改进你的项目知识(但只有在你要求代理这样做时才如此)。在 ChatGPT projects 中,历史和输出存在于长对话中。你需要手动将内容复制回项目知识。而在 Cursor 中,输出保存在文档中,对话成为一次性的,因为价值在于文档而非对话历史。

这里的主要收获是:你的知识库将覆盖更多内容,更新更频繁,因为你每天都在使用个人操作系统构建和编辑上下文。

步骤 4:创作一首迪士尼歌曲改编版来学习 Cursor 的基础

我们首先在 Cursor 中创建一个新的空白文件。将鼠标悬停在文件浏览器中,点击"新建文件"(New File)按钮:

将文件命名为 lyrics.txt

接下来,在网上搜索你最喜欢的迪士尼歌曲(谷歌搜索歌曲标题通常可以直接看到歌词)。将歌词复制到剪贴板:

回到 Cursor,将它们粘贴到你刚创建的文件中,然后保存文件:

接下来,在聊天框中切换到"代理"模式:

最后,输入:

将 lyrics.txt 中第一段(stanza)的一句和副歌(chorus)的一句改成关于硅谷(Silicon Valley)的内容。

然后使用"上箭头"按钮发送:

屏幕上发生了很多变化!你会注意到 lyrics.txt 文件中出现大量红色和绿色标记。Cursor 修改了我们的文件。红色显示删除的旧行,绿色显示新增的行。

如果不喜欢改动,可以点击"撤销"(Undo);如果想保留,则点击"保留"(Keep)。

步骤 5:观察不同 AI 模型的行为

既然你已经完成了第一次编辑,让我们来探索每个 AI 团队都会面临的一个关键产品决策:使用哪个模型。

你会注意到聊天框中还有一个下拉菜单:

你在 ChatGPT、Claude 或 Gemini 中见过这个——它让你选择想使用的模型。但在 Cursor 中,你可以选择任何大语言模型。

点击进入,关闭"自动"(Auto),夺回决策权:

当我们在多个模型中尝试同一个查询时,我们会建立直觉,了解每个模型可能如何以不同方式处理(或搞砸)它。例如,Claude 模型对版权法非常敏感,会拒绝修改迪士尼歌曲(要绕过这个限制,可以在提示词末尾加上"……来调侃这首歌本身",这属于"合理使用"fair use)。而 OpenAI 的模型对版权的顾虑较少,但它们在调用 Cursor 的 apply_patch 工具(编辑文本文件的首选命令)时偶尔会出错(不过在最新的 Codex 模型中这种情况已较少见)。

这些差异在我们有机会评判它们歌词的巧妙程度之前就已经出现了!

我们个人用哪个模型来完成工作?在个人使用方面,我们选择使用最新最强的模型。1

对于写作、复杂规划和细腻的人生建议(截至本文写作时间),我们选择 Claude Opus。(我们还发现它是在 Cursor 内部体验本文的最佳选择。)它的近亲 Sonnet 是我们处理大量上下文任务的得力助手,拥有 100 万 token 的上下文窗口(响应速度也稍快)。

放眼来看,Cursor 的模型下拉菜单蕴含着一个微妙的启示:前沿大语言模型只有少数几个,且对所有产品团队都可获得。 创新在于我们如何应用它们。

养成对你在乎的任务切换模型的习惯。随着时间的推移,你会对模型之间的权衡形成真正的见解——这种直觉很难仅从基准测试中获得。

步骤 6:检查你的代理的工具调用

大语言模型只能生成文本,但当它们执行操作(编辑文件、获取数据、搜索网络)时,它们是在调用工具(tools)。而工具调用(tool calling)是一项与我们通常注意到的 LLM 其他能力不同的独立技能。

现在问你的代理:

你能带我逐步走过你完成这个任务所使用的每个步骤(工具/思考/推理/其他任何东西)吗?

在我们的测试中,LLM 报告说:

  1. 它使用了一个名为 read_file 的工具来查看文件内容
  2. 它思考了要编辑什么
  3. 它使用了一个名为 search_replace 的工具来修改文本文件

以下是它对第 3 步的描述:

不要被这个工具陌生的名字吓到。你在 Microsoft Word 或 Google Docs 中使用"搜索和替换"已经无数次了。而且你肯定也"读取过文件"。

(顺便说一句,这也是模型之间方法不同的另一个地方!Gemini 始终用三次工具调用完成此任务,而 Opus 用了两次。亲自试试看吧。)

编程代理的大部分工作都是由一组用于文件导航和文本编辑的小型工具完成的。要查看完整列表,问它:

列出你可以使用的所有工具。

这些工具大多数名字都很熟悉;你肯定读取过目录内容,也曾删除过文件。其他如 read_lintsrun_terminal_cmd 在软件开发中更常见(尽管编程代理也可以将它们用于非技术性请求)。

LLM 实际是如何调用工具的?LLM 无法在你的电脑上运行命令,所以它依赖 Cursor 来执行。可以把它想象成雇佣一个杂工(handyman)。LLM 描述它想做什么,但它无法握住锤子。Cursor 就是那个杂工:它听取 LLM 的请求,使用工具,然后将结果带回给 LLM,以便 LLM 决定下一步做什么。

当 LLM 打印出工具名称时(如上所示),Cursor 会识别并在你的电脑上执行该工具。工具运行完成后,Cursor 将结果返回给 LLM(即成功结果或错误信息),以便 LLM 决定下一步。(如果你听说过"MCP 客户端"或"代理套壳"agent harness,这些都描述了 Cursor 在这里扮演的角色。)

LLM 与工具的交互方式,与它和人类的交互方式惊人地相似。如果我们将"经典 ChatGPT"视为 LLM 和人类之间的一对一私信对话,那么 AI 代理就是LLM、人类和工具之间的三人小组对话

现在,当有人问"我们的代理能做 X 吗?"时,你会本能地思考:"它需要什么工具,我们的模型调用这些工具的能力如何?"这也回到了模型选择的层面:不仅是"最聪明的模型获胜"。工具调用有其自身的行为特征,与推理或写作质量是分开的。

等等,那我老听到的"MCP"是什么?

对于大多数组织而言,最有价值的数据不在本地文本文件中,而是在外部 SaaS 服务中。要让 LLM 与 Linear、Figma、Notion、Snowflake、BigQuery、Amplitude 或 Mixpanel 交互,这些服务需要为 LLM 提供自定义工具

通常,每家 SaaS 公司都需要为市场上的每个 LLM 分别集成一套工具。为了避免这种混乱,行业采用了一个名为模型上下文协议(MCP,Model Context Protocol)的标准。这样一来,每家 SaaS 公司现在只需构建一个连接器,就可以在任何地方使用。

如果这听起来很像 USB 或蓝牙(Bluetooth),那就是正确的类比。继续这个比较:大多数代理工具不是 MCP,就像大多数电线不是 USB 插头形状一样。简单来说,MCP 只是代理可以使用的另一种工具,只不过有标准化的接口。

步骤 7:将一切付诸实践——在 Cursor 中构建你的个人操作系统

既然我们了解了代理的一般工作原理,让我们为自己创建一个个性化的 AI 代理,看看 Cursor 的各个组件如何协同。

我们将构建一个非常轻量级、极简的个人生产力系统,用来组织我们日常生活中各个方面的联系信息——如笔记、文字记录、非结构化思考,以及一些需要完成的任务。(这让我们可以暂时忽略分发、定价等问题,专注于技术上可行的部分。)

到本练习结束时,你将能够要求 Cursor 从你的待办列表中创建任务,并根据你在知识和目标中提供的上下文开始处理这些任务。在此过程中,我们将学习 RAG、记忆和上下文工程,并构建产品直觉的关键部分。

要开始,你可以将以下提示词复制粘贴到 Cursor 中(确保处于"代理"模式):

创建一个极简个人生产力系统:

## 结构
├── Knowledge/ # 笔记、研究、思考
├── Tasks/ # 作为 Markdown 文件的操作项
├── GOALS.md # 目标和优先级
└── AGENTS.md # AI 助手指令

## AGENTS.md 应指示 AI:
- 成为目标和任务的生产力助手
- 永远不要写代码——只写 Markdown
- 保持任务与目标关联
- 被问及时建议最多 3 个每日优先事项
- 直接且简洁

## 创建完成后:
1. 说:"已创建你的工作区,包含 Knowledge/、Tasks/、GOALS.md 和 AGENTS.md"
2. 问:"你当前的目标是什么?分享后我将它们添加到 GOALS.md"
3. 问:"你正在处理哪些任务?我将在 Tasks/ 中创建链接到目标的初始任务文件"
4. 根据回答填充 GOALS.md 和 Tasks/

(可选:你可以克隆个人操作系统提示:你可以将链接 URL 复制粘贴到 Cursor 聊天中,让它帮你克隆仓库。)

Cursor 应该创建两个目录(文件夹):Tasks 和 Knowledge。它还将创建一个 GOALS.md 文件,其中应包含你的个人目标。此时,Cursor 会问你几个后续问题,开始用上下文填充你的个人操作系统,如"你的目标是什么?"和"你正在做什么?"

恭喜!你现在是你自己 AI 产品的产品经理(PM)了。 在接下来的几个部分中,我们将用它来亲身体验 RAG、代理记忆和上下文工程。不同的是,现在你会感受到它们,而不仅仅是读到它们。

步骤 8:用你的个人操作系统试驾检索增强生成(RAG)

当 AI 产品给出错误答案时,本能反应是责怪模型。但在你换用更大的模型或昂贵的微调(fine-tuning)之前,先问:代理是否拥有正确的信息?

让我们问 Cursor:"这个仓库里有什么?像一个产品经理一样给我解释:" 看看它如何回应。

💡 这个提示词对几乎任何你用 Cursor 和 Claude Code 打开的仓库或文件夹都极其强大。我们建议打开任何新代码库时都从这里开始。

检索增强生成(RAG,Retrieval Augmented Generation)是一个花哨的术语,意思是"在我开始说话之前,我得先去查一下所有东西并先读一遍"。尽管名字技术感十足,但你这辈子一直在做这件事。在回答难题之前,你会先查资料。代理也是这么做的。

在我们的案例中,我们的代理会在你的文件和文件夹之上进行搜索,为 LLM 提供上下文。LLM 在代码库中搜索文件、甚至从互联网查找数据用于回复的方式有很多种。归根结底,无论是 Perplexity、Google AI Mode、Claude Code、Cursor,还是任何你见过的带有"RAG"一词的产品,它都是某种拉取文档并以此开始聊天的机制。

你还可以在 Cursor 中使用 @ 符号标记特定文件,让代理引用特定的上下文片段。

RAG 用当前相关的内容填充上下文窗口。但有些上下文(你是谁、你喜欢怎样工作)应该每次都在。这就是记忆的用武之地。

步骤 9:用 AGENTS.md 添加代理记忆

LLM 是无状态的,所以我们喜欢把它们想象成门萨(Mensa)级别的天才,但短期记忆只有仓鼠的水平。每个新的聊天线程都是一张白纸,所以如果你想要连续性,就必须自己来设计。作为 PM,我们必须问:什么应该持久化,以及如何持久化?

你可能在与 AI 代理相关的语境中听说过一种上下文形式:记忆(memory)。记忆可能包括关于我们的事实,也包括我们希望 LLM 如何行为、如何与我们交互的偏好。我们也可能希望更有意地、更主动地去管理 AI 的记忆。

如今所有编程代理都遵循一个名为 AGENTS.md 的约定。这是一个 Markdown 文件,如果在任何目录中被发现,就会自动附加到每个聊天线程的顶部。

(快速消歧:AGENTS.md 不是"子代理"。子代理是当一个聊天线程派生出另一个聊天线程来处理子任务。AGENTS.md 只是指令——它不派生出任何东西。把 AGENTS.md 想象成"每段对话上的便利贴",把子代理想象成"将工作委派给同事"。)

请深思:记忆只是一个被前置到每段对话的文本文件。 这里没有魔法。但这也意味着记忆是有成本的——你在 AGENTS.md 中放入的任何内容都会在每个对话中占用上下文窗口空间。记忆太多,留给其他内容的空间就更少。这就是为什么你要有意地决定什么放入记忆(持久、始终相关),什么按需用 RAG 检索(任务特定)。

你可能在思考伙伴的 AGENTS.md 中看到的例子:

通过自己管理 AGENTS.md,你开始感受到什么是真正有用的,什么是噪音。而这正是你为用户设计记忆时所需要的直觉。

记忆、RAG、工具定义、对话历史——它们都占用上下文。现在你理解了各自的作用,下一个问题是:如何把所有东西塞进一个有限的窗口?这就是上下文工程。

步骤 10:为你的个人操作系统进行上下文工程

每当你将文件拖入 ChatGPT,说了一些成为其记忆的话,用深度研究开始一段对话,或创建一个带有特殊指令和知识的 project——你都在进行上下文工程(context engineering)。

即使你使用的是 Cursor 而非 ChatGPT,你仍然会在开始每个线程时问:"这段对话需要什么上下文?"例如,写一份产品需求文档(PRD,Product Requirements Document)可能从拖放以下任何内容到 Cursor 窗口开始:

亲自试试:将几个 PDF、Google Docs 的 Markdown 文件或 Word 文档拖放到 Cursor 的 Knowledge 文件夹中,然后要求 Cursor 展开其中一个主题或在开始工作前就此向你提问。

综合起来,你可能会这样开始一个 Cursor 聊天线程:

给 Cursor 的提示词:

我想让你展开这个 @file(替换为你的实际文件,如这篇文章)。我希望你成为我的伙伴,在我们逐渐聚焦如何处理这个问题时一次只问我一个问题。我希望你能搜索与此文档相关的任何其他内容。你也可以根据我们的讨论,创建一些后续想法让我探索,并将它们转化为 Tasks 文件夹中的 tasks.md 文件。

上下文工程在 Cursor 中有两种实现方式:(1)每次开始聊天时你选择包含什么(拖放文件、启用工具)和(2)每次自动包含什么(如 AGENTS.md、MCP 或工具)。那可是大量的上下文!

上下文是一种稀缺资源:LLM 对它能处理的文本量(即 token)有硬性限制。这被称为"上下文窗口"(context window)。

在对话式 LLM 聊天机器人(如 ChatGPT 或 Claude)中,随着每一轮对话,上下文不断增加——因为 LLM 的上一次回复成为下一轮输入的一部分。如果你曾收到过达到聊天上限的通知,你很可能就是碰到了上下文窗口:

编程代理在显示你已使用的上下文窗口比例方面令人愉悦地透明。在 Cursor 中,将鼠标悬停在聊天框下方的小饼图上(你可能需要加宽聊天面板才能看到它)。

我们像看汽车的油量表一样关注它。这帮助我们直观地理解 20 万 token 或 100 万 token 的上下文窗口实际是什么感觉,以及它消耗得有多快。理解一辆车的具体油耗,最好的方式是开那辆车。

在一个代理式 LLM 应用中,上下文窗口可能包含更多内容:

Anthropic 的图表现在是否看起来很熟悉?即使它是关于 AI 应用的,但它与我们之前写 PRD 的场景惊人地相似。这有多酷?

当你设置 AI 在有限的上下文窗口内完成最佳工作时,你就在进行"上下文工程"。

Andrej Karpathy @karpathy:+1 赞成"上下文工程"胜过"提示工程"。人们将提示词与你日常给 LLM 的简短任务描述联系在一起。而在每个工业级 LLM 应用中,上下文工程是填充上下文窗口的精致艺术和科学。

tobi lutke @tobi:我非常喜欢"上下文工程"这个词胜过"提示工程"。它更好地描述了核心技能:为任务提供所有上下文、使其在 LLM 层面变得可解决的艺术。

工具定义、RAG、记忆、目标:它们都争抢同一个有限的上下文窗口。你如何填充这个窗口决定了你的代理表现如何。这是每个 AI 工程团队在构建生产应用时面临的相同权衡——只不过现在你在亲身感受这个问题。对此没有完美的公式。2 放什么进去取决于任务、模型和你想要达成的目标。你通过试错(以及经常使用你的个人操作系统)来培养直觉。

警惕"上下文衰减"

随着你使用越来越多的上下文,你会注意到你的线程可能会在使用更多 token 时变得越来越笨、越来越健忘——而且远在接近上限之前就会如此。这个现象的术语是上下文衰减(context rot)。简而言之,你往上下文窗口中塞入越多 token,模型性能越会下降。

上下文衰减是一个模糊的现象。你感受到的程度取决于手头的任务以及特定模型的训练方式。你会在创意头脑风暴等用例中较少感受到上下文衰减(和性能下降),而在精确的金融、编程或数据分析中感受更强烈。

感受上下文衰减的最好方式,是用 LLM 处理你真正关心的任务。试着留意 Cursor 的 token 计数器,随着它逐渐填满,注意输出质量的变化。线程中上下文更多时,代理是变得更好还是更差?如果你开一个新线程呢?我们发现这是一个有趣、容易上瘾的游戏,有点像开混合动力车时注意它何时从电池切换到汽油。在此过程中,你建立的直觉比任何学术图表都更深入。

结论

对我们来说,真正理解 AI 产品的转变发生在我们日复一日地观察代理工作之后。Cursor 让我们能够观察一个 AI 模型在任务中摸索的过程:读取我们的上下文,运行 RAG,尝试一个工具调用,碰到错误,推理,再尝试另一个工具……

就是那一刻豁然开朗:Cursor 本质上和其他任何 AI 产品一样,由文本、工具和结果组成——结果再回流到更多文本中——只不过 Cursor 在我们的本地电脑上运行,所以我们可以观察它工作并学习。一旦我们能够将任何 AI 产品分解为这些相同的构建块,我们的 AI 产品直觉就自然而然地产生了。既然你读完了这篇文章,你也可以做到。

当某个令人印象深刻的产品问世时,你现在可以深吸一口气,把它拆解开来。一个能玩 75 分钟《卡坦岛》的代理。Granola 的令人不寒而栗地个性化的年度回顾。一个龙虾主题的 Claude Code,可以完全控制你的电脑任何人都能设置。你可以简单地问自己:我要如何在 Cursor 中复现它?如果我必须在电脑上"绿野仙踪式"(Wizard of Oz)地模拟它,我会组装哪些熟悉的组件?魔法依然令人愉悦,只是少了神秘和 FOMO。

最好的想法诞生于对人的直觉和对技术的直觉共存于同一个大脑中。当你每天使用编程代理时,你开始感受到什么是容易的、什么是困难的,以及什么刚刚变得可行。用 Paul Buchheit 的话说,当你真正理解 AI 产品时,你将"活在未来"。

感谢 Tal 和 Aman!想了解更多,请查看他们的深度工作坊 构建 AI 产品直觉(下周开课,使用此链接可享 85 折),以及他们即将上线的免费闪电课 如何知道该构建什么 AI 产品,与我另一位最喜爱的合作者 Hilary Gridley 联合推出。你也可以为你的团队预约 Tal 和 Aman 的构建冲刺

祝你度过充实而高效的一周 🙏

如果你觉得这份 newsletter 有价值,请分享给朋友;如果尚未订阅,也可以考虑订阅。我们提供团购优惠礼品选项推荐奖励

真诚地,

Lenny 👋


1

以构建规模化 AI 产品的视角,我们喜欢关注那些更小、更便宜、更快的模型的能力。偶尔我们会在 Claude Haiku、Gemini Flash 或 GPT mini 中重新运行一个任务,感受它们的速度、工具调用技能、判断力和个性。对我们真正关心的任务切换模型,可以帮助我们捕捉重要的细微差别,这比任何基准测试或热度都更能教我们东西。

2

为了避免一开始就把所有东西塞进上下文窗口,AI 工程师们不断设计各种创意解决方案。以下仅列举几个:

这些策略使 AI 应用能打破上下文限制的零和游戏,让代理在复杂任务上尽可能长时间地自主运行。这正是 AI 工程变得有趣和富有创意的领域。最好的部分是——还没有人完全搞清楚这些问题,各种想法在持续演进。