惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
酷 壳 – CoolShell
酷 壳 – CoolShell
博客园 - Franky
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
A
About on SuperTechFans
博客园 - 【当耐特】
Microsoft Security Blog
Microsoft Security Blog
H
Hackread – Cybersecurity News, Data Breaches, AI and More
The GitHub Blog
The GitHub Blog
雷峰网
雷峰网
博客园_首页
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
IT之家
IT之家
博客园 - 叶小钗
Google DeepMind News
Google DeepMind News
aimingoo的专栏
aimingoo的专栏
博客园 - 聂微东
B
Blog RSS Feed
H
Help Net Security
Recent Announcements
Recent Announcements
阮一峰的网络日志
阮一峰的网络日志
D
DataBreaches.Net
L
LangChain Blog
Vercel News
Vercel News

祝融说。

第10章 工作图——从计划到验收的闭环 第11章 客观验收门与结构化审查 第12章 Headless 自主运行 第13章 上下文压缩与持久化管理 第14章 Daemon + Client 架构 第15章 可观测性与调试 第16章 测试策略与行为验证 第17章 文件系统即自我 第18章 三分架构——Tool、Skill、Capability 第19章 从 REPL 到操作系统 第1章 自主 AI agent 的困境 第20章 大门开在哪里——自修改系统的信任边界 第21章 事前之图,事后之树 第22章 有用户 vs. 无用户——两种 agent 模式 第23章 第三级验收门——什么时候信任你的 agent 第24章 Agent 应该忘记什么 第25章 第2章 文件系统即自我 第3章 事件驱动与消息模型 AI 辅助编程实战:从入门到团队治理 第八章:高级技能深度解析 第二册:进阶篇 第二章:方法论概览——管理者需要知道的 14 个技能 第二章:需求分析 第二章:准备工作 第九章:实战案例——完整项目拆解 第六章:常见陷阱与应对 第六章:风险控制——常见问题与预案 第六章:项目编排——多功能管理 第七章:全自动构建——从零到部署
第7章 剥夺执行权:强制 AI 像资深工程师一样“慢思考”
祝融 · 2026-05-16 · via 祝融说。

我们天生对速度有着无法抗拒的迷恋。当AI能在三秒内,为我们抛出的一个复杂问题,瞬间生成三百行代码时,那种“即时满足感”是极其强烈的。我们的大脑会分泌多巴胺,我们会惊叹于它的神速,我们会觉得自己拥有了全世界最强大的生产力工具。

这种对速度的沉迷,正是AI编程中最危险、也最具欺骗性的陷阱。

一个初级工程师,拿到需求后的第一反应是“马上动手写代码”。而一个资深的工程师或架构师,拿到同一个需求后,他的第一反应是“等一下,让我先想一想”。他会花上数小时,甚至数天的时间,去调研、画图、比较方案、评估风险。他知道,在键盘上敲下第一个字符之前,战争的胜负,多半已经在他脑中的沙盘推演里决定了。

AI,天生就是一个“初级工程师”。它的底层机制,决定了它永远倾向于用“最快的速度”给出“概率最高的答案”,而这个答案,往往就是直接生成代码。

如果我们放任这种天性,我们就永远只能得到“初级”水平的产出。而流程约束的核心,就是要逆转这种天性。我们要做的,就是从AI手中“剥夺”它最擅长的“立即执行代码的权力”,强迫它“慢下来”,模仿一个资深工程师的思维流程,先“思考”,再“行动”。

本章,我们将学习一套标准化的“三步走”工作流。这套流程将像一个“思维脚手架”,强制AI在面对任何一个非凡琐的需求时,都必须先进行“调研”、再进行“谋局”、最后才能“落地”。通过这种方式,我们把AI的强大算力,从“低质量的快速响应”,引导到“高质量的深度思考”上来。

7.1 遇到问题直接让 AI 写代码,是最愚蠢的做法

让我们先来解剖一下,“直接写代码”这种做法,到底错在哪里。为什么这种看似最高效的方式,在处理复杂问题时,反而成了最愚蠢、最昂贵的选择?

错误一:你得到的是“模式匹配”,而非“问题解决”

当你不加引导地直接抛出一个问题,比如“如何实现一个支持插件化的系统?”,AI并不会真的去“理解”你业务中“插件化”的深层含义。它的神经网络,会在它庞大的训练数据中,光速进行模式匹配。

它会找到上千个与“插件化系统”这个关键词相关的代码片段、教程和设计模式。然后,它会选择其中最常见、出现频率最高的一种模式(比如,一个简单的“观察者模式”或“策略模式”的实现),把它“翻译”成代码,呈现给你。

这个过程,缺少了最关键的一环:问题澄清与需求分析。

  • 你所谓的“插件”,是动态加载的DLL/SO,还是仅仅是几个可配置的JavaScript对象?
  • 插件的安全性要求有多高?它们需要运行在沙箱里吗?
  • 插件之间的通信机制是怎样的?它们需要共享状态吗?
  • 主系统与插件的生命周期管理是怎样的?

这些决定了最终架构走向的、至关重要的问题,AI一个都不会问。它只会给你一个“最通用”、“最标准”的答案。而这个“标准答案”,有极大的概率,根本不适合你独特的、具体的业务场景。

结果就是,你要么得到一个过于简陋、无法满足未来扩展的“玩具”,要么得到一个过度设计、引入不必要复杂度的“航空母舰”。无论哪种,你都浪费了时间,并在一开始就走上了错误的技术道路。

错误二:过早陷入“实现细节”的泥潭

一旦AI生成了第一版代码,你的注意力就会立刻被代码本身所吸引。你会开始思考:

  • 这个变量名起得好不好?
  • 这个循环是不是可以优化一下?
  • 这个函数的参数顺序是不是应该调整?

这种对“实现细节”的过早关注,是架构设计的大忌。它会让你失去全局视角。在你还没想清楚整个系统的“骨架”应该是什么样子的时候,你就已经开始纠结于某一块“砖头”的花纹了。

这在心理学上被称为“锚定效应”。AI给出的第一版代码,无论好坏,都会成为你后续思考的“锚点”。你会不自觉地在这个“锚”的基础上,进行修修补补(即我们反复强调的“确认偏误”),而很难再跳出来,去思考是否存在一个完全不同、但更好的顶层设计。

直接写代码,相当于AI主动为你抛下了一个“思想之锚”,将你和它自己,一同困在了某一个具体的、狭隘的实现路径上。

错误三:放弃了你作为“决策者”的最高权力

我们在第一章就确立了,人类在AI协作中的核心角色是“决策者”。而决策的价值,体现在对不同方案的权衡与取舍上。

软件工程中,几乎不存在“唯一的正确答案”。

  • 方案A,性能最好,但开发成本最高。
  • 方案B,开发最快,但安全性有隐患。
  • 方案C,是一个介于两者之间的平衡。

选择哪一个方案,不完全是一个技术问题,它更是一个结合了项目周期、团队能力、业务风险、未来规划等诸多因素的商业决策。

当你直接让AI写代码时,你实际上是把这个至关重要的“决策权”,不负责任地让渡给了AI。而AI,作为一个没有商业意识、不懂你公司战略的概率模型,它会替你做出什么选择?它只会选择那个在它的训练数据中最“平庸”、最“常见”的方案。

这是一种极其危险的权力真空。你放弃了自己最有价值的工作,却让一个最不适合做决策的“实习生”,替你决定了整个项目的命运。

结论: “快”,是AI编程中最廉价的副产品,也是最昂贵的诱惑。一个专业的AI协作者,必须建立起对这种“即时满足感”的免疫力。

我们的第一原则是:在问题没有被充分理解、方案没有被充分评估、决策没有被明确做出之前,严禁AI生成任何一行实质性的业务代码。

我们要剥夺它的“执行权”,直到我们——作为总指挥官——对整个战役的地图、目标和行军路线,都了然于胸。而要做到这一点,我们需要一个标准化的作战流程。

7.2 “三步走”标准流:调研 → 谋局 → 落地

为了强制AI(以及我们自己)进行“慢思考”,我设计了一套不可逾越的“三步走”标准工作流。对于任何一个中等复杂度以上(比如,需要花费超过半天时间)的需求,都必须严格遵循这个流程。

这个流程,本质上是对一个资深工程师大脑中隐性的“问题解决模型”的显性化和流程化。

第一步:调研——我们面对的是什么?

目标:在这一阶段,我们的唯一目标是收集信息、澄清需求、识别约束。禁止讨论任何具体的实现方案。我们要像一个侦探一样,勘察案发现场,而不是过早地断定凶手是谁。

核心活动:

  • 需求分解:将一个模糊的、来自产品经理的“大需求”,拆解成一系列更小的、更具体的功能点。
  • 边界定义:明确这个需求的“成功标准”是什么?它的范围边界在哪里?哪些是“必须做的”,哪些是“可以做的”?
  • 技术预研:是否存在相关的第三方库或现有技术可以利用?它们各自的优缺点是什么?是否存在已知的“坑”或最佳实践?
  • 风险识别:实现这个需求,可能会对现有系统的哪些部分产生影响?存在哪些已知的技术风险、性能风险或安全风险?

产出物:一份简短的、结构化的“需求分析与风险评估”文档。

AI的角色:在这个阶段,AI不是“程序员”,而是你的“超级研究助理”。它极其擅长快速地检索信息、总结文档、对比技术。

第二步:谋局——我们该怎么走?

目标:基于第一阶段收集到的信息,开始设计和比较多种可能的解决方案。注意,是“多种”,而不是“一种”。我们的目标是产出选项,并进行权衡。

核心活动:

  • 方案设计:针对核心的技术挑战,提出至少两种(最好是三种)不同的架构或设计方案。
  • 方案对比:从多个维度(如开发成本、性能、可维护性、安全性、扩展性)对这些方案进行客观的比较。
  • 决策制定:基于方案对比的结果,由人类做出最终的、明确的技术选型和架构决策。
  • 任务拆解:将选定的最终方案,进一步拆解成一个清晰的、可执行的、有先后顺序的“开发任务清单”。

产出物:一份包含“方案对比表”和最终“技术方案与任务清单”的文档。

AI的角色:在这个阶段,AI是你的“架构设计顾问”。它擅长根据你的约束,生成不同风格的方案,并为你填充对比表格的细节。但最终的决策,必须由你来做。

第三步:落地——开始动手吧!

目标:只有在第二阶段的“技术方案”和“任务清单”被最终确认后,我们才进入这个阶段。此阶段的目标是高效、精确地将设计转化为代码。

核心活动:

  • 编码实现:按照任务清单的顺序,逐一地、聚焦地完成每一个小任务的编码。
  • 测试编写:为新代码编写单元测试、集成测试,确保其质量。
  • 代码审查:对AI生成的代码,进行人工审查,确保其符合架构约束和编码规范。
  • 文档更新:更新相关的项目文档(如CHANGELOG.md)。

产出物:可工作的、经过测试的、符合规范的代码。

AI的角色:在这个阶段,AI才终于可以扮演它最被大家所熟知的角色——“高速代码生成器”。因为所有的“思考”和“决策”工作,都已经在前两步完成了。此时的AI,是在一个极其确定的、无歧义的“轨道”上行进,它的速度优势才能被安全、高效地发挥出来。

这个“三步走”流程,就像一个强制性的“阀门”,它确保了:

  • 思考优先于行动:在没有想清楚“是什么”和“怎么走”之前,阀门是关闭的,任何代码都无法流出。
  • 人类掌握决策权:在第二步“谋局”阶段,有一个明确的、需要人类介入的“决策点”。这确保了项目的方向盘,始终握在你的手中。
  • 执行阶段的高效:因为前期准备充分,第三步“落地”阶段会变得异常顺畅。你和AI之间的沟通成本会降到最低,因为所有需要“讨论”的问题,都已经在前面解决了。

7.3 每一步怎么问、问什么(附提问模板)

理论是灰色的,生命之树常青。让我们来看一下,在实战中,如何通过具体的提问,来引导AI走完这“三步走”的每一步。

以下模板,是我在实践中千锤百炼打磨出来的,你可以根据自己的需求进行调整,但其背后的“思维结构”是通用的。

阶段一:调研——像侦探一样盘问AI

目标:榨干AI作为“信息检索器”的价值,构建对问题的全面认知。

核心句式:“扮演一个XX角色”、“为我分析/拆解/列出”、“识别风险”、“不要提供任何解决方案”。

【模板 7.1:需求澄清与分解】

你的提问:

Context: We have received a new feature request from our product manager. The original request is: "[粘贴产品经理的原话,比如:我想要一个'智能推荐'功能,根据用户的浏览历史,向他们推荐相关的文章。]"

Your Role: Act as a Senior Business Analyst. Your task is to break down this high-level, ambiguous requirement into a list of specific, answerable questions that we need to clarify before any technical work can begin.

Task:

  1. Deconstruct the Requirement: Break the core request into smaller, functional components.
  2. Identify Ambiguities: For each component, list the key questions we need to ask the product manager to define the scope and success criteria. Examples: What defines "recent" history? What does "related" mean? How many recommendations to show?
  3. Define Boundaries: List what is explicitly out of scope for this feature's first version.

Constraint: Do not, under any circumstances, suggest any technical implementation or solution at this stage. Your entire focus is on clarifying the "What", not the "How".

【模板 7.2:技术选型预研】

你的提问:

Context: For our "Article Recommendation" feature, we need to choose a method to calculate the "relatedness" between articles. Let's assume articles have tags.

Your Role: Act as a Research Engineer. Your task is to conduct a preliminary investigation into common techniques for this problem.

Task:

  1. Identify Techniques: List at least three common algorithms or techniques for calculating similarity based on tags (e.g., Jaccard Similarity, TF-IDF with Cosine Similarity, etc.).
  2. Summarize Pros and Cons: For each technique, provide a brief, 2-3 sentence summary of its core idea, and list its main advantages and disadvantages in a bulleted list. Focus on aspects like computational complexity, ease of implementation, and quality of results.
  3. Find Libraries: For each technique, identify one popular and well-maintained library in [你的技术栈,比如:Python] that implements it.

Constraint: Do not recommend a "best" option. Your goal is to provide an objective, neutral summary of the available options for my review.

阶段二:谋局——像将军一样沙盘推演

目标:让AI生成多个平行方案,并强制它进行“自我辩论”,最终由你来裁决。

核心句式:“设计方案A/B/C”、“创建一个对比表格”、“根据以下标准进行评估”、“我决定选择方案X,请为我制定执行计划”。

【模板 7.3:多方案设计与对比】

你的提问:

Context: Based on our research, we have the necessary information to design the architecture for the "Article Recommendation" feature. Our core constraints are: the calculation must be fast (under 50ms), and it must run on our existing [比如:Python/Flask] backend.

Your Role: Act as a Solutions Architect. Your task is to propose and compare three distinct architectural approaches.

Task:

  1. Propose Three Solutions:
  • Solution A (Simple & Fast): An approach based on pre-calculating and caching similarity scores. Describe how and when this pre-calculation would happen.
  • Solution B (Real-time & Flexible): An approach that calculates similarity on-the-fly with every request. Describe how to optimize this.
  • Solution C (Hybrid): A combination of the two, e.g., using a faster, simpler algorithm for real-time and a more complex one for offline batch processing.
  1. Create a Comparison Table: Generate a markdown table that compares these three solutions across the following criteria:
  • Performance (Latency)
  • Data Freshness (How up-to-date are the recommendations?)
  • Implementation Complexity
  • Infrastructure Cost
  • Scalability
  1. Provide a Recommendation: After the table, briefly state which solution you would recommend and why, explicitly stating the trade-offs it makes.

【模板 7.4:决策确认与任务拆解】

你的提问:

Context: I have reviewed the options. My Decision: We will proceed with Solution A (Pre-calculation). The trade-off of slightly less fresh data is acceptable for the gain in performance and simplicity.

Your Role: Act as a Tech Lead. Your task is to take this architectural decision and break it down into a concrete, step-by-step implementation plan.

Task:

  1. Define Data Models: Specify any new database tables or data structures needed (e.g., a article_similarity table).
  2. Outline Key Modules/Functions: List the main new functions or classes we will need to create. For each, give it a clear name and a one-sentence description of its responsibility (e.g., calculate_similarity_matrix(), get_recommendations_for_article(article_id)).
  3. Create a Sequential Task List: Generate a numbered list of development tasks in the logical order they should be completed. This should be a checklist an engineer can follow. Example:
  4. DB: Add 'article_similarity' table migration.
  5. Backend: Implement the Jaccard similarity calculation logic.
  6. Backend: Create a background job (e.g., cron) to run the calculation nightly.
  7. Backend: Create the API endpoint GET /articles/:id/recommendations.
  8. Tests: Write unit tests for the similarity logic.

Constraint: All tasks should be small enough to be completed in a single coding session.

阶段三:落地——像工匠一样精雕细琢

目标:在完全确定的轨道上,最大化AI的代码生成效率。

核心句式:“根据我们的计划,执行任务X”、“为这个函数编写代码”、“为这段代码编写测试”。

【模板 7.5:聚焦式编码指令】

你的提问:

Context: We are now implementing the plan. Our current task is: "[从任务清单里复制一项,比如:Backend: Implement the Jaccard similarity calculation logic.]"

Your Role: Act as a Senior Pair Programmer.

Task: Write the Python function calculate_jaccard_similarity(tags1: set, tags2: set) -> float.

Constraints:

  • The function must be pure, with no side effects.
  • It must handle cases where one or both sets are empty (return 0.0).
  • Include a clear docstring explaining the formula.

After you provide the function, immediately provide a second code block with three unit test cases for it using the unittest framework.

通过这套模板,你将原本一次性的、模糊的“给我代码”,变成了一场结构化的、由你主导的、层层递进的“深度工作坊”。你不再是AI的“用户”,而是它的“流程管理者”。

【流程图解】复杂需求的强制流转路径

为了让你对这个流程有一个更直观的理解,下面是一张流程图,清晰地展示了信息和决策是如何在这三个阶段之间流转的,以及人类决策者在其中的关键“门禁”作用。

graph TD
    A[需求输入 - 模糊] --> B{阶段一: 调研};
    B -- "提问模板7.1 & 7.2" --> C[AI: 生成需求分析 & 技术预研报告];
    C --> D{人类审查};
    D -- "信息是否充分?" --> |否| B;
    D -- "是" --> E{阶段二: 謀局};
    E -- "提问模板7.3" --> F[AI: 生成多种方案对比];
    F --> G{人类决策};
    G -- "选择方案A/B/C" --> H["提问模板7.4"];
    H --> I[AI: 生成最终方案 & 任务清单];
    I --> J{人类最终确认};
    J -- "计划是否清晰?" --> |否| E;
    
    subgraph "思考区 (No Code Zone)"
        direction LR
        B; C; D; E; F; G; H; I; J;
    end

    J -- "是, 批准执行!" --> K{阶段三: 落地};
    
    subgraph "执行区 (Coding Zone)"
        direction LR
        K -- "提问模板7.5 (逐个任务)" --> L[AI: 生成代码 & 测试];
        L --> M{人类审查 & 集成};
        M -- "任务完成?" --> |是| N((完成));
        M -- "否" --> K;
    end

    style G fill:#f9f,stroke:#333,stroke-width:4px
    style J fill:#f9f,stroke:#333,stroke-width:4px

图解说明:

  • 思考区 vs 执行区:整个流程被一道清晰的界线,分为了“思考区”和“执行区”。在“思考区”内,绝对不允许产出任何实质性的业务代码。
  • 人类门禁(粉色高亮):图中有两个关键的、必须由人类操作的“门禁”节点:
  1. G - 人类决策:在比较了多个方案后,你必须做出选择。没有你的拍板,流程无法进入下一步。
  2. J - 人类最终确认:在AI生成了最终的执行计划后,你必须做最后一次审查和批准。这是“开工”前的最后一道安全阀。
  • 迭代循环:注意到图中的“否”箭头了吗?这代表着在每一个阶段,如果AI的产出不满足你的要求,你可以(也应该)让它返回上一步,进行迭代和修正,直到你完全满意为止。

请把这张流程图,作为你与AI协作的“作战地图”。它将时刻提醒你,在复杂的需求面前,纪律、流程和耐心,远比单纯的速度更重要。通过强制AI像一个资深工程师一样“慢思考”,你最终得到的,将是真正高质量、高效率的“快结果”。