MoreRSS

site iconCC | 云谦修改

ZJU、P8、热爱编程、开源、分享和写作,2008 年加入阿里。
请复制 RSS 到你的阅读器,或快速订阅到 :

Inoreader Feedly Follow Feedbin Local Reader

CC | 云谦的 RSS 预览

🔒 619 - 《Google 账号》

2026-01-13 21:06:55

数了下,手上有 27 AI Pro 的 Google 账号了,做下笔记。

🔒 会员专享内容

此文章的完整内容仅对会员开放。

→ 点击查看完整内容

需要登录并验证邮箱才能访问受限内容。

🔒 618 - 《Linux DO》

2026-01-13 19:29:28

个人感觉 linux.do 是目前国内内容质量和社区氛围都比较出众的程序员社区,应该和站长的风格也有关系,禁 ai 润色、禁 aff 等,同时加上等级系统和保级压力,以及最近上的 credit 货币系统,大家会有压力和动力去产出更好的内容。

🔒 会员专享内容

此文章的完整内容仅对会员开放。

→ 点击查看完整内容

需要登录并验证邮箱才能访问受限内容。

🔒 617 - 《如何获取 Agent 提供的能力或 Tools》

2026-01-07 21:58:55

Wrote copilot with AI.

🔒 会员专享内容

此文章的完整内容仅对会员开放。

→ 点击查看完整内容

需要登录并验证邮箱才能访问受限内容。

译:动态上下文发现

2026-01-07 19:01:18

原文:https://cursor.com/blog/dynamic-context-discovery
作者:Jediah Katz
译者:Claude Opus 4.5

Jan 6, 2026 by Jediah Katz in research

编程智能体正在快速改变软件的构建方式。它们的快速进步既来自于改进的智能体模型,也来自于更好的上下文工程来引导它们。

Cursor 的智能体框架——我们提供给模型的指令和工具——针对我们支持的每个新前沿模型都进行了单独优化。然而,我们可以进行一些适用于框架内所有模型的上下文工程改进,例如如何收集上下文以及在长轨迹中优化 token 使用。

随着模型作为智能体变得越来越好,我们发现通过预先提供更少的细节来取得成功,这使得智能体更容易自己拉取相关上下文。我们将这种模式称为动态上下文发现,与始终包含的静态上下文形成对比。

用于动态上下文发现的文件

动态上下文发现在 token 效率上要高得多,因为只有必要的数据才会被拉入上下文窗口。它还可以通过减少上下文窗口中可能令人困惑或矛盾的信息量来提高智能体的响应质量。

以下是我们在 Cursor 中使用动态上下文发现的方式:

  1. 将长工具响应转换为文件
  2. 在摘要过程中引用聊天历史
  3. 支持 Agent Skills 开放标准
  4. 高效加载仅需要的 MCP 工具
  5. 将所有集成终端会话视为文件

1. 将长工具响应转换为文件

工具调用可能会通过返回大型 JSON 响应来大幅增加上下文窗口。

对于 Cursor 中的第一方工具,如编辑文件和搜索代码库,我们可以通过智能工具定义和最小响应格式来防止上下文膨胀,但第三方工具(即 shell 命令或 MCP 调用)原生并没有得到同样的处理。

编程智能体采取的常见方法是截断长 shell 命令或 MCP 结果。这可能导致数据丢失,其中可能包含你想要在上下文中保留的重要信息。在 Cursor 中,我们改为将输出写入文件,并赋予智能体读取它的能力。智能体调用 tail 检查末尾,然后在需要时读取更多内容。

这减少了在达到上下文限制时不必要的摘要操作。

2. 在摘要过程中引用聊天历史

当模型的上下文窗口填满时,Cursor 会触发一个摘要步骤,为智能体提供一个新的上下文窗口,其中包含其迄今为止工作的摘要。

但是智能体的知识在摘要后可能会退化,因为这是对上下文的有损压缩。智能体可能已经忘记了关于其任务的关键细节。在 Cursor 中,我们使用聊天历史作为文件来提高摘要的质量。

在达到上下文窗口限制后,或者用户决定手动进行摘要时,我们会给智能体一个历史文件的引用。如果智能体知道它需要摘要中缺失的更多细节,它可以搜索历史记录来恢复它们。

3. 支持 Agent Skills 开放标准

Cursor 支持 Agent Skills,这是一个用于扩展编程智能体专业能力的开放标准。与其他类型的 Rules 类似,Skills 由文件定义,告诉智能体如何执行特定领域的任务。

Skills 还包括名称和描述,可以作为"静态上下文"包含在系统提示中。然后智能体可以进行动态上下文发现来拉取相关的 skills,使用 grep 和 Cursor 的语义搜索等工具。

Skills 还可以捆绑与任务相关的可执行文件或脚本。由于它们只是文件,智能体可以轻松找到与特定 skill 相关的内容。

4. 高效加载仅需要的 MCP 工具

MCP 有助于访问 OAuth 保护的安全资源。这可能包括生产日志、外部设计文件,或企业的内部上下文和文档。

一些 MCP 服务器包含许多工具,通常带有冗长的描述,这会显著膨胀上下文窗口。大多数这些工具即使始终包含在提示中也从未被使用。如果你使用多个 MCP 服务器,这个问题会更加严重。

期望每个 MCP 服务器都为此进行优化是不现实的。我们认为减少上下文使用是编程智能体的责任。在 Cursor 中,我们通过将工具描述同步到文件夹来支持 MCP 的动态上下文发现。

智能体现在只接收少量静态上下文,包括工具名称,提示它在任务需要时查找工具。在 A/B 测试中,我们发现在调用 MCP 工具的运行中,这一策略将智能体总 token 减少了 46.9%(统计显著,根据安装的 MCP 数量有较高方差)。

这种文件方法还解锁了向智能体传达 MCP 工具状态的能力。例如,以前如果 MCP 服务器需要重新认证,智能体会完全忘记那些工具,让用户感到困惑。现在,它实际上可以主动让用户知道需要重新认证。

5. 将所有集成终端会话视为文件

用户不再需要将终端会话的输出复制/粘贴到智能体输入中,Cursor 现在将集成终端输出同步到本地文件系统。

这使得询问"为什么我的命令失败了?"变得很容易,并允许智能体理解你所引用的内容。由于终端历史可能很长,智能体可以 grep 只获取相关输出,这对于像服务器这样的长时间运行进程的日志很有用。

这反映了基于 CLI 的编程智能体所看到的内容,上下文中包含先前的 shell 输出,但是动态发现而非静态注入。

简单的抽象

目前尚不清楚文件是否会成为基于 LLM 的工具的最终接口。

但随着编程智能体的快速进步,文件一直是一个简单而强大的原语,比起又一个无法完全预见未来的抽象层,它是一个更安全的选择。敬请期待我们在这个领域分享更多令人兴奋的工作。

这些改进将在未来几周内对所有用户上线。本博客文章中描述的技术是许多 Cursor 员工的工作成果,包括 Lukas Moller、Yash Gaitonde、Wilson Lin、Jason Ma、Devang Jhabakh 和 Jediah Katz。如果你对使用 AI 解决最困难、最雄心勃勃的编程任务感兴趣,我们很乐意听取你的意见。请通过 [email protected] 联系我们。

Author: Jediah Katz

译:以推理速度交付

2026-01-06 00:29:51

原文: https://steipete.me/posts/2025/shipping-at-inference-speed
作者: Peter Steinberger
译者: Gemini 3 Pro High

五月以来的变化#

今年“氛围编码(vibe coding)”的发展程度令人难以置信。虽然在五月左右,我还在为某些提示词能开箱即用地生成代码而感到惊讶,但这现在已经成了我的基本预期。我现在交付代码的速度快得不真实。从那时起,我消耗了大量的 Token。是时候更新一下情况了。

这些智能体(Agent)的工作方式很有趣。几周前有一种观点认为,一个人需要亲自写代码才能感受到糟糕的架构,使用智能体会造成脱节——对此我完全不同意。当你花足够多的时间与智能体相处,你会确切地知道某件事应该花多长时间,如果 Codex 返回结果时没有一次性解决问题,我就已经开始怀疑了。

我现在能创建多少软件,主要受限于推理时间和深度思考。老实说——大多数软件并不需要深度思考。大多数应用程序只是将数据从一个表单推送到另一个表单,也许将其存储在某个地方,然后以某种方式展示给用户。最简单的形式是文本,所以默认情况下,无论我想构建什么,它都从 CLI 开始。智能体可以直接调用它并验证输出——从而形成闭环。

模型转变#

真正解锁像工厂一样构建软件的是 GPT 5。发布后我花了几周时间才意识到这一点——等待 Codex 赶上 Claude Code 拥有的功能,并花了一些时间学习和理解它们之间的差异,但随后我开始越来越信任这个模型。这些天我已经不怎么读代码了。 我会看着输出流,有时会查看关键部分,但老实说——大多数代码我都不读。我知道哪些组件在哪里,事物是如何组织的,以及整体系统是如何设计的,通常这就足够了。

现在的关键决策在于语言/生态系统和依赖项。我处理 Web 内容的首选语言是 TypeScript,CLI 用 Go,如果需要使用 macOS 功能或有 UI 则用 Swift。就在几个月前,我甚至完全没考虑过 Go,但最终我试了试,发现智能体非常擅长编写 Go 代码,而且它简单的类型系统使得 Lint 检查非常快。

对于构建 Mac or iOS 应用的朋友:你不再那么需要 Xcode 了。我甚至都不使用 xcodeproj 文件如今 Swift 的构建基础设施对大多数事情来说已经足够好了。Codex 知道如何运行 iOS 应用程序以及如何处理模拟器。不需要特殊的东西或 MCP。

Codex vs Opus#

我正在写这篇文章的时候,Codex 正在处理一个巨大的、耗时数小时的重构,并清理 Opus 4.0 留下的旧烂摊子。Twitter 上的人经常问我 Opus 和 Codex 之间有什么大区别,既然基准测试如此接近,为什么这很重要。依我看,越来越难以信任基准测试了——你需要亲自尝试两者才能真正理解。无论 OpenAI 在后训练阶段做了什么,Codex 在开始之前已经被训练成会阅读大量的代码。

有时它只是静静地阅读文件 10 到 15 分钟,然后才开始写代码。一方面这很烦人,另一方面这又很棒,因为它大大增加了修复正确问题的几率。另一方面,Opus 更加急切——非常适合小的修改——但不太适合较大的功能或重构,它经常不阅读整个文件或遗漏部分内容,然后交付低效的结果或遗漏某些东西。我注意到,即使 Codex 有时在类似任务上花费的时间是 Opus 的 4 倍,我通常还是更快,因为我不必回头去修复那个修复,这在我还在使用 Claude Code 时感觉是很常态的事情。

Codex 还让我摒弃了许多在使用 Claude Code 时必需的伪装。我不再使用“计划模式”,而是简单地与模型开始对话,提出问题,让它去 Google、探索代码、共同制定计划,当我对我看到的内容感到满意时,我写下“构建”或“将计划写入 docs/*.md 并构建这个”。计划模式感觉像是一种黑客手段,对于旧一代不太擅长遵循提示词的模型来说是必要的,所以我们不得不剥夺它们的编辑工具。有一条被高度误解的推文至今仍在流传,这向我表明大多数人并不明白计划模式并非魔法

Oracle#

从 GPT 5/5.1 到 5.2 的跨越是巨大的。大约一个月前,我构建了 oracle 🧿——这是一个 CLI,允许智能体运行 GPT 5 Pro 并上传文件 + 提示词,并管理会话以便稍后检索答案。我这样做是因为很多时候当智能体卡住时,我会让它把所有内容写入 markdown 文件,然后自己进行查询,这感觉像是重复的时间浪费——也是一个闭环的机会。说明文件在我的全局 AGENTS.MD 文件中,模型有时会在卡住时自行触发 Oracle。我每天使用它多次。这是一个巨大的解锁。Pro 版本在快速浏览约 50 个网站然后进行深度思考方面做得好得惊人,几乎每次都能给出完美的回答。有时它很快,需要 10 分钟,但我也有过运行超过一个小时的情况。

现在 GPT 5.2 出来了,我需要它的情况少多了。我自己有时会用 Pro 进行研究,但我要求模型“询问 Oracle”的情况从每天多次变成了每周几次。我对此并不生气——构建 Oracle 非常有趣,我学到了很多关于浏览器自动化、Windows 的知识,并最终花时间研究了技能(Skills),此前我曾一度否定这个想法。这确实表明 5.2 在许多现实生活中的编码任务上变得有多好。它几乎能一次性搞定(one-shot) 我扔给它的任何东西。

另一个巨大的胜利是知识截止日期。GPT 5.2 到了 8 月底,而 Opus 停留在 3 月中旬——这大约是 5 个月的差距。当你想要使用最新的可用工具时,这一点非常重要。

一个具体案例:VibeTunnel#

再举一个例子来说明模型已经发展到了什么程度。我早期的一个高强度项目是 VibeTunnel。一个终端复用器,让你可以随时随地编码。今年早些时候,我几乎把所有时间都投入到了这个项目中,2 个月后它变得非常好用,以至于我发现自己在和朋友外出时还在用手机写代码……于是我决定停止这个项目,更多是为了心理健康。当时我试图将复用器的一个核心部分从 TypeScript 重写,但旧模型总是让我失望。我试过 Rust、Go……上帝保佑,甚至试过 Zig。当然我可以完成这个重构,但这需要大量的手工工作,所以我从未在将其搁置之前完成这项工作。上周我把它重新翻出来,给 Codex 一个两句话的提示词,要求将整个转发系统转换为 Zig,它运行了超过 5 个小时,进行了多次压缩,并且一次性交付了一个可工作的转换版本。

你可能会问,我为什么要把它翻出来?我目前的重点是 Clawdis,这是一个 AI 助手,拥有对我所有电脑消息邮件家庭自动化摄像头、灯光、音乐完全访问权限,甚至可以控制我床的温度。当然它还有自己的声音发推特的 CLI 和它自己的 Twitter 账号

Clawd 可以看到并控制我的屏幕,有时会发表讽刺性的评论,但我也想让它能够检查我的智能体,获取字符流比查看图像要高效得多……这是否行得通,我们拭目以待!

我的工作流#

我知道……你来这里是想学习如何更快地构建,而我只是在为 OpenAI 写营销软文。我希望 Anthropic 正在酝酿 Opus 5,局势能再次逆转。竞争是好事!同时,我 Opus 作为通用模型。如果运行在 GPT 5 上,我的 AI 智能体的乐趣会少一半。Opus 有某种特殊的东西,让与之合作成为一种乐趣。我用它来处理我大部分的计算机自动化任务,当然也是它驱动了 Clawd🦞。

十月份我上次谈论这个问题以来,我的工作流并没有太大改变。

  • 我通常同时在多个项目上工作。根据复杂程度,可能在 3-8 个之间。上下文切换可能会很累人,我真的只能在家里、安静且精神集中的时候这样做。这需要在大脑中切换很多心理模型。幸运的是,大多数软件都很无聊。创建一个 CLI 来检查你的外卖并不需要太多思考。通常我的重点是一个大项目和一些伴随进行的卫星项目。当你做了足够多的智能体工程,你会对什么是容易的、模型可能在哪里挣扎产生一种感觉,所以通常我只是输入一个提示词,Codex 会运行 30 分钟,我就得到了我需要的东西。有时需要一点微调或创造力,但通常事情都很直截了当。
  • 我广泛使用 Codex 的排队功能——当我有新想法时,我把它加入管道。我看到许多人尝试各种多智能体编排系统、电子邮件或自动任务管理——到目前为止,我没看到这有多大必要——通常瓶颈在我自己。我构建软件的方法是非常迭代的。我构建一些东西,玩一下,看看它“感觉”如何,然后获得新想法来改进它。我很少在脑海中对想要的东西有一个完整的图景。当然,我有一个粗略的想法,但随着我探索问题领域,这个想法通常会发生巨大的变化。所以那些以完整的想法作为输入然后交付输出的系统对我来说效果不佳。我需要把玩它,触摸它,感受它,看到它,这就是我演进它的方式。
  • 我基本上从不回滚或使用检查点。如果有些东西我不喜欢,我会要求模型更改它。Codex 有时会重置文件,但通常它只是简单地回滚或修改编辑,我很少需要完全回退,相反我们只是转向不同的方向。构建软件就像登山。你不会直直地走上去,你会绕着它转,转弯,有时你会偏离路径,不得不往回走一点,这并不完美,但最终你会到达你需要去的地方。
  • 我只是简单地提交到 main 分支。有时 Codex 认为太乱了,会自动创建一个 worktree 然后将更改合并回来,但这很少见,我只在特殊情况下提示这样做。我发现必须考虑项目中不同状态的额外认知负担是不必要的,我更喜欢线性地演进它。更大的任务我留到我分心的时候做——例如在写这篇文章时,我在这里运行 4 个项目的重构,每个大约需要 1-2 小时完成。当然我可以在 worktree 中做,但这只会导致大量的合并冲突和次优的重构。警告:我通常独自工作,如果你在更大的团队中工作,这种工作流显然行不通。
  • 我已经提到了我规划功能的方式。我一直在交叉引用项目,特别是如果我知道我已经在其他地方解决了某个问题,我会让 Codex 查看 ../project-folder,这通常足以让它从上下文中推断出在哪里查找。这对于节省提示词非常有用。我可以只写“查看 ../vibetunnel 并为 Sparkle changelogs 做同样的事情”,因为它已经在那里解决了,而且有 99% 的保证它会正确地复制过来并适应新项目。这也是我搭建新项目的方式。
  • 我见过很多系统是为了让人们引用过去的会话。这是另一件我从不需要或使用的东西。我在每个项目的 docs 文件夹中维护子系统和功能的文档,并在我的全局 AGENTS 文件中使用一个脚本 + 一些指令来强制模型阅读关于特定主题的文档。项目越大,回报越高,所以我并非在所有地方都使用它,但这对于保持文档最新和为我的任务设计更好的上下文非常有帮助。
  • 说到上下文。我过去非常勤奋地为新任务重启会话。有了 GPT 5.2,这不再需要了。即使上下文较满,性能也非常好,而且通常这有助于提高速度,因为当模型已经加载了大量文件时,它的工作速度更快。显然,这只有在你串行化任务或保持更改间隔较远以至于两个会话互不影响时才有效。Codex 没有像 Claude Code 那样的“此文件已更改”的系统事件,所以你需要更加小心——反过来说,Codex 在上下文管理方面要好得多,我觉得在一个 Codex 会话中完成的工作量是用 Claude 的 5 倍。这不仅仅是客观上更大的上下文窗口,还有其他因素在起作用。我的猜测是 Codex 内部思维非常精简以节省 Token,而 Opus 非常啰嗦。有时模型会搞砸,其内部思维流会泄露给用户,所以我已经见过好几次了。真的,Codex 的措辞方式我觉得奇怪地有趣。
  • 提示词。我过去常用语音听写写很长、详尽的提示词。有了 Codex,我的提示词变得短了很多,我经常重新打字,而且很多时候我会添加图片,尤其是在迭代 UI(或带有 CLI 的文本副本)时。如果你向模型展示哪里出了问题,只需几个字就足以让它做你想做的事。是的,我就是那种拖入某个 UI 组件的截图并附上“修复填充”或“重新设计”的人,很多时候这要么解决了我的问题,要么让我取得了相当大的进展。我过去常引用 markdown 文件,但有了我的 docs:list 脚本,这不再必要了。
  • Markdown。很多时候我写“将文档写入 docs/*.md”,然后简单地让模型选择文件名。你为模型训练的内容设计的结构越明显,你的工作就越容易。毕竟,我不是将代码库设计成便于我导航,我是为了让智能体能高效地在其中工作而设计它们。与模型对抗通常是浪费时间和 Token。

工具与基础设施#

  • ==什么依然很难? 选择正确的依赖项和框架来构建是我投入相当多时间的地方。这个维护得好吗?对等依赖项怎么样?它流行吗 = 是否会有足够的世界知识让智能体轻松上手?同样,系统设计。我们要通过 Web Socket 通信吗?HTML?我把什么放在服务器端,什么放在客户端?数据如何流向哪里?通常这些是向模型解释起来有点难的地方,研究和思考会有回报。==
  • 由于我管理很多项目,通常我让一个智能体简单地在我的项目文件夹中运行,当我找出一个新模式时,我会要求它“找到我所有最近的 Go 项目并在那里也实施此更改 + 更新变更日志”。我的每个项目在那个文件中都有一个提升的补丁版本,当我重新访问它时,一些改进已经在等着我测试了。
  • 当然我自动化一切。有一个 Skill 是注册域名和更改 DNS。一个 Skill 是编写好的前端。我的 AGENTS 文件中有一个关于我的 Tailscale 网络的注释,所以我可以直接说“去我的 Mac Studio 更新 xxx”。
  • 说到多台 Mac。我通常在两台 Mac 上工作。我的 MacBook Pro 在大屏幕上,另一个屏幕上是通过 Jump Desktop 连接到我的 Mac Studio。一些项目在那里运行,一些在这里。有时我在每台机器上编辑同一个项目的不同部分,并通过 git 同步。比 worktree 简单,因为 main 分支上的偏差很容易协调。额外的好处是,任何需要 UI 或浏览器自动化的东西我都可以移到我的 Studio 上,它不会用弹窗打扰我。(是的,Playwright 有无头模式,但有足够多的情况那行不通)
  • 另一个好处是任务保持运行,所以每当我旅行时,远程就成了我的主要工作站,即使我合上 Mac,任务也会继续运行。我过去确实尝试过像 Codex 或 Cursor web 这样真正的异步智能体,但我怀念那种可操控性,而且最终工作结果是拉取请求(PR),这又给我的设置增加了复杂性。我更喜欢终端的简单性。
  • 我过去常玩斜杠命令(slash commands),但从未觉得它们太有用。技能(Skills)取代了其中一部分,对于其余部分,我坚持写“commit/push”,因为它花费的时间与 /commit 相同,而且总是有效。
  • 过去我经常花专门的日子来重构和清理项目,现在我更多是临时做这件事。每当提示词开始耗时太长,或者我看到代码流中有丑陋的东西飞过,我会立即处理它。
  • 我尝试过 Linear 或其他问题追踪器,但没有坚持下来。重要的想法我会立即尝试,其他所有东西我要么记得住,要么它不重要。当然,对于使用我的开源代码的人,我有公开的 bug 追踪器,但当我发现一个 bug 时,我会立即提示它——比写下来然后稍后必须切换上下文回去处理要快得多。
  • 无论你构建什么,首先从模型和 CLI 开始。我脑海中有一个总结 YouTube 视频的 Chrome 扩展的想法已经很久了。上周我开始开发 summarize,这是一个 CLI,可以将任何内容转换为 markdown,然后将其提供给模型进行总结。首先我把核心部分搞定,一旦那个工作得很好,我在一天内构建了整个扩展。我很喜欢它。在本地、免费或付费模型上运行。在本地转录视频或音频。与本地守护进程对话,所以速度超快。试一试!
  • 我首选的模型是 gpt-5.2-codex high。再次强调,KISS 原则。除了慢得多之外,xhigh 几乎没有什么好处,我不想花时间思考不同的模式或“过度思考”。所以几乎所有东西都在 high 上运行。GPT 5.2 和 Codex 足够接近,更改模型没有意义,所以我只用那个。

我的配置#

这是我的 ~/.codex/config.toml

model = "gpt-5.2-codex"
model_reasoning_effort = "high"
tool_output_token_limit = 25000
# Leave room for native compaction near the 272–273k context window.
# Formula: 273000 - (tool_output_token_limit + 15000)
# With tool_output_token_limit=25000 ⇒ 273000 - (25000 + 15000) = 233000
model_auto_compact_token_limit = 233000
[features]
ghost_commit = false
unified_exec = true
apply_patch_freeform = true
web_search_request = true
skills = true
shell_snapshot = true

[projects."/Users/steipete/Projects"]
trust_level = "trusted"

这允许模型一次读取更多内容,默认值有点小,可能会限制它看到的内容。它会静默失败,这很痛苦,他们最终会修复这个问题。另外,网页搜索仍然默认没开启?unified_exec 取代了 tmux 和我旧的 runner 脚本,其余的也很棒。不要害怕压缩(compaction),自从 OpenAI 切换到他们新的 /compact 端点后,这工作得足够好,任务可以在多次压缩中运行并完成。它会让事情变慢,但通常起到了审查的作用,模型在再次查看代码时会发现 bug。

就这些,暂时。我计划再多写点东西,脑子里积压了很多想法,只是太沉迷于构建东西了。如果你想听到更多关于如何在这个新世界中构建的胡言乱语和想法,在 Twitter 上关注我

译:2026年,AI写了我大部分的代码。然后呢?

2026-01-05 19:22:26

原文:https://x.com/leerob/status/2007203275461009508
作者:Lee Robinson (@leerob)
译者:Gemini 3 Pro High

Lee Robinson (@leerob) - 2026年1月2日
Cursor AI(前 Vercel)

引言

现在是2026年,说起来有些奇怪,但我已经不再真正手写代码了。

我构建了一个完整的基于 Rust 的图像压缩器,它可以编译成 WebAssembly,并使用 SvelteKit 网页应用来拖放图片、压缩和调整大小。我完全没有手写任何代码——全部使用编程代理完成。

我甚至为 Analogue Pocket 构建了一个《太空侵略者》克隆版,而我对硬件工作原理一无所知。我能够与编程代理合作编写 Verilog 代码,并实际对设备上的硬件进行编程。这简直太疯狂了。

六个月前或一年前,我甚至不会尝试这些项目,而现在它们对我来说实际上非常容易完成。

我加入 Cursor 的历程

大约九个月前,我发布了一个视频,讲述我如何尝试了一堆文本编辑器和 IDE,最终选择了 Cursor,因为我觉得它有最好的用户体验——我熟悉 VS Code,而且它在 AI 功能方面也做得非常好。

几个月后,我决定真正加入 Cursor。我已经在那里工作了大约六个月,主要是因为我真的能感受到格局在变化。我能感受到软件工程在我脚下发生变化,我想成为探索这种变化的一部分,并帮助教大家如何自己驾驭这段旅程。

模型如何改进

就在一年前,编程代理还不是什么流行的东西。Cursor 的代理刚刚推出。然后在2025年,我们看到 Claude Code 和 Codex,以及许多其他编程代理变得非常流行,同时模型本身也在改进。

回顾一年前,在 Sonnet 4 之前,模型经常产生幻觉。它们在遵循指令和调用工具方面相当糟糕。当你看看最新一批模型——Codex Maxi、Opus 4.5——它们已经变得非常好了。现在它们生成代码的能力相当惊人。

老实说,模型在编程方面可能比我想承认的更好。它们可能已经足够好了一段时间,但你无法在大多数软件工程实践中可靠地使用它们。

进入2026年,我可以肯定地说,当前这批模型在编程方面绝对比我更好。它们让我能够承担更有雄心的任务。

现在什么是软件工程?

这对我来说有点改变:软件工程到底是什么?

写代码从来不是真正的瓶颈,尤其是对于大型项目。所以如果写代码现在基本上是免费的,或者基本上很容易做到,这对软件的其他方面意味着什么?

我构建的项目

1. Cursor.com 迁移

我将 cursor.com 从 CMS 迁移到只使用 Markdown 和 MDX 文件。我以为这会花很长时间——也许几周。我们可能需要雇一些承包商或代理机构。但我在几天内就完成了,使用 Cursor Ultra 计划花费非常实惠。这是我第一次体验到:哇,我对编程代理的要求可能可以更加雄心勃勃。

2. Rust 图像压缩器

我完全用编程代理完成了这个项目。我没有手写任何代码。我以为模型肯定不擅长写 Rust——相比 TypeScript 来说是更底层的代码。还要做更复杂的计算机科学的事情,弄清楚这些算法,从头开始编写它们。如果你去看源代码,它做了一些相当疯狂的事情。

3. Analogue Pocket 游戏(太空侵略者)

我有一个 Analogue Pocket,有点像 GameBoy。你可以编写代码并对设备上的硬件进行编程。这是我没有经验的领域。我不是游戏开发者——我用 Python 构建过一些游戏,但那非常不同,抽象层次高得多。我能够向模型提问并在这方面取得显著进展,现在我理解了它的工作原理,可以从头开始构建新游戏。

我对2026年的4条建议

建议一:期待模型在所有领域都变得擅长

对所有这些的自然反应是:“是的,我做的这件事模型还不太擅长,所以这意味着模型永远不会变好。”

我曾经对 Rust、底层代码或详细的计算机科学主题也有这种感觉。然后最近,模型在这些方面变得非常好了。

如果我是你,我会预期在未来一年内,模型将在软件工程中你需要编写代码的大多数事情上变得擅长。

这并不意味着软件工程已死或我们不会有工作。我实际上认为恰恰相反——对软件工程师和实际使用这些工具的人的需求将比以往任何时候都大。这有点矛盾,但我认为历史已经证明了这一点。

在学习这些工具时——无论你想用什么编程代理:Cursor、Codex、Claude Code 等等——你将比那些更犹豫或怀疑的人获得显著优势。学会很好地使用它们可以让你大大领先。

建议二:消除繁琐的工作

使用这些工具来消除所有繁琐的工作——那些你不想做的事情。

很多软件工程实际上是在复制和移动 JSON 文件、弄清楚为什么 shell 脚本不工作、试图调试一些奇怪的错误信息。有很多样板代码,很多你只是从 Stack Overflow 或 Google 复制粘贴的东西。

用编程代理来处理那些事情。摆脱所有无聊的东西,专注于对最终产品真正重要的事情。

既然代码变得廉价,真正重要的是你的品味。作为工程师,越来越多地要成为一个多面手。这不仅仅是代码——还有:我们正在构建什么产品?它看起来怎么样?它如何运作?用户体验如何?我们要如何销售这个东西?我们如何营销这个东西?

建议三:成为多面手,构建完整产品

去构建东西。成为多面手。实际尝试构建某物的整个过程。

不要只是写代码然后发布——把它推向世界,营销它,获取用户,构建人们喜爱的东西,发展产品,弄清楚要构建什么正确的东西。

作为软件工程师,这些技能在未来一到三年内将对你非常有价值。随着这个职业的变化,那些拥抱 AI 来更好地完成工作的产品工程师将拥有显著的优势。

如果你想了解更多,我有一篇关于产品工程师的完整文章。这个趋势在我2024年写这篇文章时就已经在发生了,但随着 AI 进入2026年,它现在大大加速了。

建议四:花时间真正学习

如果你过度依赖 LLM,它们可能会欺骗你,让你认为你理解了一个话题。你不想把思考委托给代理。你想用它们来变得更聪明。

你怎么做到?向模型问很多问题。就像你身边一直有一个很棒的结对程序员,你可以问无限多的问题,他永远不会生你的气或认为这是个愚蠢的问题。

我最近一直在做的一件事:我会让模型为我生成基本上是一个迷你课程——引导我了解对我来说完全陌生的主题。“向我解释什么是 Verilog 以及语法如何工作。向我解释从硬件到我实际编写的代码的不同抽象层以及它是如何编译的。”

这些东西可以使按需学习变得更加容易,而不必阅读10本教科书。如果你有主动性和意愿去学习这些东西,你现在就可以获得巨大的优势。

资源

结语

我和你们一样在摸索。这有点奇怪——有时候会有一点存在危机感,因为感觉你正在失去你真正热爱的一部分,那就是构建东西。

但对我来说,我必须记住:这不是关于代码的。写代码在很多方面从来都不是瓶颈。这是关于构建伟大的东西,我引以为豪的东西,我认为真正好的东西。而这远不止是代码。

所以现在:既然我有了这个很棒的工具,我该如何使用 AI 来更好地提升我的技艺?

这就是我对2026年的想法。这将是伟大的一年。我很乐观。我认为我们将会有很多积极的事情。

和平。