从副驾驶到架构师:我的AI编程协作方法论

从副驾驶到架构师:我的AI编程协作方法论 在过去几年里,我更换AI编程工具的频率,几乎赶上了前端框架的迭代速度。 一开始,我像许多人一样,让GPT帮我写一个孤立的函数,感觉很神奇。后来,GitHub Copilot成了我的标配,它总能猜到我接下来要写的几行代码,尤其是在写那些重复的样板文件时。再之后,Cursor出现了,它将对话和编码更紧密地集成在编辑器里,我开始尝试让它帮我完成更复杂的任务。 我一度认为,找到那个“最强”的工具,就能一劳永逸。 然而,真正的改变,发生在我停止寻找“更好”的工具,转而开始思考如何“更好”地与它协作的那一刻。契机很偶然,只是因为Cursor的定价策略调整,我切换到了Claude Code。但我发现,尽管工具换了,我遇到的核心挑战没变,而我之前摸索出的有效工作模式,依然有效。 这让我意识到一个更根本性的问题:我们中的许多人,包括过去的我,都可能用错了力气。我们痴迷于比较不同AI的编码能力,就像在争论锤子A和锤子B哪个敲钉子更快,却忽略了我们真正要做的,是建造一座房子。 关键不在于单次挥锤的力量,而在于你是否有一张清晰的蓝图和一套高效的施工流程。 这篇文章的目的,就是分享我提炼出的这套“施工流程”——一套通用的、结构化的AI编程协作方法论。它无关乎你用的是Claude Code、Cursor,还是未来任何可能出现的新工具。它的核心是改变你与AI的协作模式:从一个偶尔寻求帮助的“使用者”,转变为一个能系统性地引导AI、共同交付高质量工作的“架构师”。 让我们从一个几乎所有开发者都会遇到的场景开始:接手一个陌生的代码库。 第一幕:AI,迷宫中的导航员 任何一个有经验的开发者都熟悉那种感觉:你被空降到一个陌生的代码库,像被扔进了一座没有地图的迷宫。文档要么不存在,要么早已过时。你只能靠着零星的注释和直觉,在成千上万行代码中摸索,试图在脑中重建一个脆弱的模型。这个过程不仅痛苦,而且极其低效,它消耗的是我们最宝贵的资源:认知带宽。 过去,这是无法避免的“功课”。但现在,我认为这是一种时间的浪费。 在与AI协作的初期,我发现它的第一个、也是最被低估的能力,不是写代码,而是读代码。与其把它看成一个初级程序员,不如把它看成一个顶级的代码分析师,一个能帮你快速绘制出迷宫地图的导航员。 让我用一个例子来说明。最近,我需要理解一个名为eino的Go语言AI框架中的ReAct机制。这是一个架构复杂的项目,如果按照传统方式,我预估需要一到两天的时间,才能理清它的核心脉络。 这一次,我没有直接一头扎进代码里。我做的第一件事,是为我的AI导航员写一份清晰的"任务简报"。我发现,一个结构化的指令远比一句模糊的"帮我看看这个项目"要有效得多。 角色 (Role): 你是谁?我告诉它:“你是一位精通Go和AI Agent的资深软件架构师。” 这为我们的对话设定了专业的基调和视角。 任务 (Task): 你要做什么?我明确指出:“你的任务是分析ReAct Agent的核心实现逻辑,并生成一份技术梳理文档。” 这定义了成功的标准。 背景 (Context): 你为什么要做这件事?我补充道:“这份文档将作为内部知识库的核心内容,帮助团队快速上手。” 这让AI理解了最终的价值。 约束 (Constraints): 你要如何交付?我给出了具体的格式要求:“文档必须包含流程梳理、接口文档和Mermaid流程图三个部分。” 这确保了输出结果是我想要的,而不是一堆无用的闲聊。 📚 借鉴总结:四要素框架是基于Google Prompt工程最佳实践等资料,结合个人理解总结提炼而成: 我把包含这四个要素的Prompt和项目代码一起交给了AI。结果是惊人的。 不到一个小时,我得到了一份完整的分析报告。它不仅精准地定位了核心入口函数(NewAgent())、剖析了核心循环的每一步(推理、工具调用、观察、再推理),还为我生成了一张清晰的Mermaid流程图,将整个复杂的调用链路可视化。 一天的工作,一小时完成。这已经不是量级的提升,而是工作范式的改变。 这背后是什么原理?我认为关键在于两点。第一,AI拥有近乎无限的“工作记忆”,它可以同时扫描和关联成百上千个文件,在我们的大脑还在费力地跟踪两三个函数跳转时,它已经构建起了完整的调用图。第二,它强大的模式识别能力,使其能迅速识别出代码中隐藏的设计模式和架构意图,就像一个经验丰富的建筑师能从几根柱子的布局看出整栋建筑的风格。 这种导航能力,一旦掌握,可以延伸到许多场景:用它审查代码中潜在的风险,用它快速熟悉一个开源项目并参与贡献,或者用它来评估一个新技术框架的可行性。 至此,我们解决了“读”的问题。AI为我们绘制了地图,指明了方向。但真正的旅程才刚刚开始。接下来,我们需要在这张地图上建造新的东西——也就是“写”代码。 而这,恰恰是最多人掉进陷阱的地方。它引出了我们的第二个话题:如何避免随性而至的“感觉式编程”,并与AI建立一个结构化的协作流程。 第二幕:告别感觉,拥抱结构 当我们拥有了一张由AI绘制的清晰地图后,真正的建造工作开始了。也正是在这里,我们最容易走上一条歧路。 这条歧路,大家称之为“感觉式编程”(Vibe Coding)。它的诱惑力极大,因为它看起来就像是通往效率的捷径。你只需要向AI许愿:“帮我写个登录功能”,然后复制代码,粘贴,运行。如果出错了,就再许一个愿:“修复这个bug”。 这个过程,就像是雇佣了一个极其聪明但毫无经验的实习生,然后你蒙上眼睛,让他随心所欲地盖房子。你得到的是一连串的忙乱、看似进展神速的假象,以及最终一个摇摇欲坠、没人能维护的烂摊子。更糟糕的是,在这个过程中,你把最重要的思考环节外包了出去,自己的能力没有丝毫长进。 我曾掉进过这个陷阱。一次又一次的失败让我明白,问题不在于AI的能力,而在于我的协作方式。我不是在引导它,而是在放任它。 于是,我开始寻找一种更有序、更可靠的方法。 这套流程的本质,是将软件开发的经典工程原则,应用到与AI的协作中。你不再是一个简单的"使用者",而是一个项目的"总建筑师"。 第一阶段:勘探 (Explore) 在动工之前,建筑师必须勘探地形。同样,在写任何代码之前,我和AI必须就问题和现有环境达成共识。我不会直接下令,而是会提出要求,比如:“阅读这些文件,理解当前用户认证的逻辑,但先不要写任何代码。” 这个阶段的目标,是在我和AI之间建立一个共享的、准确的上下文。这是后续所有工作的基础。 第二阶段:规划 (Plan) 这是整个流程中最关键的一步,也是最能体现开发者价值的一步。当地形勘探清楚后,我们需要一张蓝图。 我会要求AI提出一个详细的实现计划,并鼓励它思考不同方案的优劣。有时,我甚至会把同一个问题抛给不同的AI模型,像是在听取多个技术顾问的建议。最终,我会选择并敲定一个最优方案,让AI把它整理成一份清晰的、步骤化的任务列表。 一个有效的技巧是,让这份计划以技术文档或GitHub Issue的格式输出。它就像一个检查点,如果后续的“建造”阶段偏离了轨道,我们随时可以回到这份蓝图,重新校准方向。 第三阶段:建造 (Code) 有了蓝图,建造工作就变得有条不紊。这里的核心原则是:小批量、可验证。 🌟 个人改进:在基础的"小批量、可验证"原则上,我进一步增加了"自动化"和"并行化"两个维度——拆分任务后,可以启动多个AI实例并发处理独立模块,大幅提升效率;部分重复度高的任务,比如Codereview则可以集成到CI中自动化review,开发者则只需要介入AI提炼出的风险点代码。 ...

August 30, 2025 · 1 min · 204 words · Miss-you

拆解 ChatGPT“学习模式”Prompt:它为什么如此神奇?

用了几天ChatGPT学习模式后我被震到了。拿到系统提示词,发现里面设计相当有门道——它把认知科学理论变成了可执行规则。本文完整拆解官方Prompt,分析背后的学习科学原理,并动手重构自己的版本。

August 5, 2025 · 5 min · 855 words · lihui

王者

每两个月,我都要在《王者荣耀》里打够一定局数,才能保住那个王者印记。 这个印记没有任何用处。它不能换钱,不能当简历,朋友见面时也不会说"哇你王者好厉害"。但我还是要去保它。 昨天我突然意识到一件事:这就是陷阱的本质。 大多数人以为游戏公司想要的是你的钱。实际上,他们要的是你的时间。钱只是副产品。 两种游戏 虽然都叫游戏,但《王者荣耀》和《博德之门3》根本就是两种不同的东西。 《博德之门3》是产品。你买了它,玩完了,故事结束。就像一本书或一部电影。 《王者荣耀》是服务。它没有结束。永远有下一个赛季,下一个活动,下一个要保住的东西。 大多数人没有意识到这个区别。他们以为"游戏就是游戏"。但这就像把餐厅和毒品混为一谈,因为它们都能让你获得快感。 免费的陷阱 免费游戏可能是21世纪最大的商业骗局。 大多数人以为免费就是不花钱。实际上,你在付一种更昂贵的货币:时间。 假设你月薪8000,每天玩2小时王者。一个月60小时,相当于半个月工资。问题是,你得到了什么?一堆数字,一些虚拟道具,几个段位标识。 这些东西在现实世界里值多少钱?对于大部分来说,基本为零。 更糟糕的是机会成本。这60小时,你本可以学一门技能,可以读书,可以锻炼,可以和朋友聊天。任何一样都比在游戏里获得的"成就"更有价值。 但大多数人算不清这笔账。因为时间看起来是免费的。 注意力经济 这不仅仅是游戏的问题。 短视频、社交媒体、爽文小说、短剧——它们都在做同一件事:收割注意力。 它们用的是同一套方法: 即时反馈 无限滚动 算法推荐 社交压力 王者荣耀的"再来一局",抖音的"下滑看更精彩",爽文的"下一章要装逼了"——这些都是同一个按钮。 大多数人以为这是娱乐。实际上,这是一场争夺人类注意力的战争。而你是战场。 真正的成本 我开始用一个简单的测试来判断任何娱乐活动: 如果这个游戏/视频/内容收费每小时20元,我还会用吗? 大多数时候答案是否定的。这说明什么?说明我其实并不真正喜欢它。我只是被它的心理触发器操控了。 当我意识到这一点后,我的行为发生了变化。我卸载了一些App,取消了一些订阅。我开始把刷手机的时间,换成10分钟的冥想或20分钟的阅读。我开始为时间定价,像一个吝啬的商人一样,盘算着每一笔’时间支出’是否值得。我发现,我并没有失去什么,反而找回了生活的掌控感。 品味的腐蚀 对于想做游戏的人来说,这还有另一个危险:品味的腐蚀。 如果你天天玩设计粗糙但成瘾性强的游戏,你会开始相信"让人上瘾就是好设计"。 这就像一个想当厨师的人天天吃垃圾食品。你的味觉会退化。你会忘记什么叫好。 最好的游戏设计师都有一个共同点:他们知道什么是真正的好游戏。不是最赚钱的,不是最上瘾的,而是最值得玩的。 反击 意识到问题是第一步。第二步是行动。 对于学生来说,物理隔离最有效。把游戏设备放远一点。设置时间限制。主动寻求帮助。 对于成年人来说,关键是重新定义"免费"。没有什么是免费的。每一分钟都有价格。 对于父母来说,不要禁止,要引导。让孩子理解设计的逻辑,从玩家变成观察者。 未来 我预测,未来会出现两种人。 一种人的注意力完全被算法控制。他们以为自己在选择,实际上是在被选择。他们消费内容,但不创造价值。 另一种人会保护自己的注意力,像保护金钱一样。他们知道什么值得投入时间,什么不值得。他们是创造者。 这两种人之间的差距会越来越大。 真正的问题 但这还不是最重要的问题。 最重要的问题是:当一整代人把最好的年华献给虚拟世界时,现实世界会发生什么? 当年轻人花更多时间在游戏里"成长",而不是在现实中成长时,会发生什么? 当人们习惯了即时满足,失去了延迟满足的能力时,会发生什么? 我不知道答案。但我知道这是人类历史上第一次面临这样的实验。 而每个沉迷于手机的人,都是这场实验的小白鼠。 问题是:你想当小白鼠,还是想当实验员?

July 27, 2025 · 1 min · 54 words · Miss-you

30分钟解决Claude封号问题:程序员的终极自救指南

“又被封号了?” 如果你因为使用不稳定的公共代理(机场/VPN)而频繁遭遇 Claude 封号、网络中断的困扰,那么这份指南将彻底解决你的问题。我们将一步步搭建一套专属于你的、稳定且干净的网络环境。 【你是否需要这份指南?快速诊断】 在开始之前,请先回答以下几个问题: [ ] 我的 Claude 账号被封过,或者朋友的账号被封过。 [ ] Claude Code/Gemini CLI 非常好用,很想用,又怕被封号 [ ] 试过多个代理客户端,被规则配置搞晕了 [ ] 用公共机场/VPN,总是不稳定或突然失效 如果你勾选了任何一项,那么请继续阅读。这套方案就是为你量身定制的。 💰 预期成本 本方案需要购买一台云服务器(VPS)。 每月成本约 ¥30-60 元,大致相当于一个王者荣耀的普通皮肤,或两张抽卡游戏的月卡。这是一笔为稳定生产力工具支付的、高性价比的投资。 本指南分为两部分: 第一部分【快速上手操作手册】:如果你想立刻解决问题,请直接跟随这部分的三个步骤操作。 第二部分【原理解析与进阶】:如果你想了解“为什么这么做”,可以阅读这部分。 第一部分:快速上手操作手册 (三步走) 目标: 通过以下三步,搭建一套稳定、私人的网络环境,从此告别封号烦恼。 ▶︎ 第一步:在你的电脑上安装“指挥官” (本地代理客户端) 这个工具负责智能分流网络请求。 下载并安装 Clash 客户端。 Windows 用户:搜索 Clash for Windows 或 Clash Verge。 macOS 用户:搜索 ClashX Pro 或 Clash Verge。 为什么选 Clash? 说实话,我试过 Shadowsocks 客户端(规则太难配)、最后选了 Clash,因为规则配置直观,一看就懂。 目的:先把它装好,我们稍后会来配置它。 ▶︎ 第二步:搭建你的专属“高速通道” (自建 VPS) 这是整个流程的核心,目的是获得一个干净、固定的 IP 地址。 ...

July 25, 2025 · 3 min · 465 words · Miss-you

Working with AI, or, The Amplifier of Thought

Recently, I needed to write a recommendation for a drawing tutorial. This small task brought me face to face with a fundamental question: a good recommendation must be honest—it needs to present both strengths and limitations. Any recommendation that’s nothing but praise is a form of deception. When faced with this situation, most people might simply tell AI: “Write a sincere recommendation.” This is a mistake. You’ll likely get text that “looks sincere,” filled with just-right praise and harmless flaws. This output is mediocre garbage because it misunderstands the nature of AI from the very beginning. ...

July 19, 2025 · 3 min · 575 words · Miss-you

与 AI 共事,或,思考的放大器

最近,我需要为一个画画教程写一段推荐语。这件小事让我面对一个根本问题:好的推荐必须诚实,它需要同时呈现优点和局限。任何只剩吹捧的推荐,都是一种欺骗。 大多数人遇到这种情况,可能会直接对 AI 说:“写一段真诚的推荐文案。” 这是一个错误。 你很可能会得到一段"看起来真诚"的文字,充满了恰到好处的赞美和无伤大雅的缺点。这种产出是平庸的垃圾,因为它从一开始就误解了 AI 的本质。 我们习惯于将 AI 视为一个聪明的执行者,一个奴隶。我们沿用与计算机交互了几十年的"命令-响应"模式。但这套模式在与真正的智能体协作时,效率最低。 我用了另一种方法,分为两步。 第一,同步上下文。 我没有让 AI 直接动笔。我先让它搜集关于这本书的一切客观事实:优点、缺点、内容、价格、作者背景,甚至网上的负面评价。我把它当成一个研究助理,不是作者。 这一步的目的,不是为了让它"了解情况",而是为了和它锚定在同一个信息基座上。在任何有效的讨论开始前,参与者必须共享上下文。你不会让一个对项目一无所知的人直接提建议,你会先把项目文档发给他。 对 AI 也应如此。 第二,外部化思考。 有了共享的上下文后,我把我自己的思考——我的分析表格、目标读者、期望的语气——全部给了 AI。 这表面上是提供了一个详尽的指令,但本质并非如此。它的本质是将我自己的思考过程彻底外部化。为了让 AI 理解我的意图,我被迫将自己脑中模糊的想法和零散的判断,预先整理成清晰、有逻辑的语言。 在这个过程中,最有价值的,不是 AI 最终写出了什么,而是为了让 AI 理解我,我被迫先彻底理解了我自己。 AI 随后给出的草稿质量很高,这毫不意外。一个掌握了全部信息、清晰理解了目标、并看过你完整思路的助理,当然能写出不错的初稿。我挑选、修改,得到了满意的成品。 这件事揭示了一个更深层的规律。 AI 的真正价值,或许不在于它能独立思考,而在于它能放大和加速我们的思考。它是一个完美的"回音壁"(Sounding Board)。你向它投掷一个粗糙的想法,它会以更结构化的形式反射回来。而为了得到更精准的回响,你被迫把投掷出去的想法本身打磨得更清晰、更有力。这是一个正向的思考循环。 所以,我们正在进入一个新时代:思考的质量变得前所未有的重要。 过去,许多工作考验的是执行效率。未来,当你拥有一个能无限执行的 AI 助理时,工作的优劣,将几乎完全取决于你提出问题、定义问题和解构问题的能力。你思考的深度,就是你能力的上限。 从这个角度看,“提示词工程”(Prompt Engineering)这个词本身就具有极强的误导性。它暗示着存在某种可以操控 AI 的神秘咒语。事实并非如此。唯一有效的咒语,就是清晰的思考本身。 因此,别再问:“我该如何向 AI 下达指令?” 你应该问:“我该如何更好地思考,才能让 AI 成为我思考的延伸?”

July 19, 2025 · 1 min · 51 words · Miss-you

解决Cursor AI编程助手「地区不可用」错误:完整的VPN代理配置指南

解决Cursor AI编程助手"地区不可用"错误:完整的VPN代理配置指南 文章摘要:Cursor AI编程助手显示"Model not available"或"地区不可用"?本文提供详细的代理配置解决方案,包括Clash、V2Ray等工具的具体设置步骤,让你重新使用AI编程功能。 解决方案总览 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 flowchart TD A[Cursor连接问题] --> B{问题诊断} B --> C[IP地址被封锁] B --> D[应用直连问题] C --> E[配置代理路由规则] D --> F[修改Cursor设置] E --> G[添加域名规则到Clash/V2Ray] F --> H[配置settings.json] G --> I[验证配置] H --> I I --> J{测试连接} J -->|成功| K[✅ 正常使用AI功能] J -->|失败| L[故障排查] L --> M[检查代理软件状态] L --> N[验证端口号] L --> O[确认三行配置] M --> I N --> I O --> I style A fill:#ffcccc style K fill:#ccffcc style L fill:#ffffcc 1. 问题背景 常见的Cursor网络错误现象 如果你在使用Cursor AI编程助手时看到以下错误提示: ...

July 17, 2025 · 6 min · 1275 words · Miss-you

Hugo 文章目录管理教程

Hugo 文章目录管理教程 这篇文章演示了如何为每个Hugo文章创建独立的目录结构。 优势 便于管理:每个文章有自己的目录 资源整理:图片、附件等资源放在同一目录 版本控制:便于跟踪文章的变更历史 SEO友好:目录名可以作为URL的一部分 目录结构 1 2 3 4 5 6 7 8 9 10 content/posts/ ├── 20250715-hugo-tutorial/ │ ├── index.md # 文章内容 │ ├── cover.jpg # 封面图片 │ └── images/ # 文章图片 │ └── diagram.png └── another-post/ ├── index.md └── assets/ └── file.pdf 使用方法 1. 创建文章目录 1 hugo new posts/文章名称/index.md 2. 或者手动创建 1 2 mkdir -p content/posts/20250715-my-article touch content/posts/20250715-my-article/index.md 这样每个文章都有自己的独立空间了! ...

July 15, 2025 · 1 min · 65 words · Miss-you

当 nil 不等于 nil?深度剖析 Go 的 typed nil 大坑

0. 一个能“悄悄坑你”的真实示例:SError 的故事 先看你提到的这段代码,表面上看非常正常,甚至很多人第一眼不会觉得哪里有问题: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 package main import ( "log" "sync" ) type SError struct { cause error // Wrapped error which is the root cause. text string // Error text, which is created by New* functions. i18nText string // 本地错误文字,用于客户端显式中文 ignored bool // 能否忽略该错误 info map[string]string infoMutex sync.RWMutex } func (e *SError) Error() string { return e.text } // demoRetSerr 返回 (int32, *SError)。看上去,如果不想返回任何错误,就直接返回 (0, nil) func demoRetSerr() (int32, *SError) { return 0, nil } func main() { var err error // 这里把第二个返回值的 *SError 赋给了 interface{} 类型的 err _, err = demoRetSerr() if err != nil { log.Printf("err != nil. err: %v", err) } } 0.1 乍看之下哪里会有问题? 我们 demoRetSerr 函数直接返回 (0, nil),而函数签名的第二个参数类型是 *SError。 回到 main 函数中,err 是一个 error 接口,承接了那个 nil 指针。 如果“typed nil” 现象出现,那么 err != nil 这个判断就会莫名其妙地通过,从而在日志里打印出“err != nil. err: <nil>”。有时更可怕的是,实际逻辑会被误判,可能执行本不该执行的错误处理分支。 在某些 Go 版本或特定编译器优化下,你可能发现控制台就输出 err != nil. err: <nil>,让人“一头雾水”。这就是一个十分典型、却很隐蔽的 typed nil 场景。即使你写 return nil,对编译器来说: ...

May 15, 2025 · 4 min · 687 words · [厉辉(Yousa)](https://github.com/Miss-you)

畅享 ChatGPT Plus:无需额外支付手段,突破 OpenAI 支付风控

截至 2024 年 2 月 10 日,该教程仍然有效。我已根据此教程重新操作并成功充值。请注意,购买苹果充值卡时应确保从苹果官方网站购买。 ChatGPT Plus 的优势 GPT-4 的性能非常强大,这是众所周知的事实。 Plus 会员可以使用 ChatGPT 的在线和插件功能,这些功能将极大地增强你的创造力,并为你的个人学习和工作效率提供强大的支持工具。 如何开通 ChatGPT Plus? 关键步骤 ChatGPT 已在美国 iOS App Store 上架。你只需要使用 iOS 设备续费会员即可。 目标用户 本教程适用于拥有 iOS 设备(如 iPhone 或 iPad)的用户。 所需工具 a. iPhone 或 iPad 设备 b. 美国地区的科学上网(可自建或购买) c. 支付宝账户 d. 已注册成功的 chatGPT 账号 开通步骤 1. 创建美国区 iOS 账号 如果你已拥有美国区账号,或已熟悉注册流程,可跳过此步骤。 详细的注册流程如下: 访问网站:在浏览器中访问 https://appleid.apple.com/account 开始创建你的 Apple ID。 设置国家/地区:在"Country/Region"下拉菜单中选择"United States"。 输入邮箱和设置密码:在指定字段输入可接收邮件的邮箱地址(作为你的 Apple ID),设定密码并在确认密码字段再次输入。 输入并验证手机号码:选择"China Mainland"作为电话区域,输入手机号并继续。你将收到验证码,输入以验证。 ...

April 23, 2024 · 2 min · 297 words · [厉辉(Yousa)](https://github.com/Miss-you)