用AI不丢批判性思维:建立验证闭环的工程化方法
最近几年,AI 编程、AI 写作、AI 出图这些工具几乎把内容生产流程重做了一遍。代码补全、周报生成、PPT 初稿、需求文档拆解,能交给模型的越来越多。但一个现象也越来越明显:很多人的用法是“让 AI 给个结果,然后直接拿去用”。模型说是什么就是什么,不验证来源、不检查逻辑、不跑测试、不人工复核。这不是工具的问题,是使用方式的问题。这篇文章想聊的是:怎么用 AI 保持高效,同时又不把判断力交出去。
先说几个关键词,也是本文要展开的核心内容:
- 批判性思维不是反对 AI,而是对 AI 的产出建立验证闭环。生成结果只是候选方案,不是最终结论。
- 要有一套可执行的验证流程,不是靠“感觉不对”来发现问题,而是通过测试、对比、交叉验证和复盘来发现问题。
- 要在使用 AI 的过程中保留自己的判断锚点,比如目标定义、验收标准、领域知识和反向思考能力。
这篇文章适合这几类读者:经常用 AI 写代码但不敢直接合入主分支的开发者;用 AI 做内容产出但担心事实出错的技术作者;以及把 AI 接入工作流,希望它稳定可用的工程师。下面会把“保持批判性思维”这件事,拆成一套可操作的工程化方法,包含工作流设计、验证手段、批量任务处理和质量观测。
1. 核心问题:AI 输出为什么容易让人放弃思考
先说结论:AI 的输出天然带有“流畅性偏见”。一个回答哪怕逻辑完全错误,只要句子通顺、术语密集、格式规范,人就很容易降低警惕。这不是某个人的问题,是语言模型的生成机制决定的。
展开说有三个技术原因:
第一,模型是概率生成,不是事实检索。大模型在回答问题时,生成的是“最可能的下一段文字”,不是“数据库里查到的正确记录”。所以它可以在解释一个 API 用法时,把参数名写错,把返回值类型写错,甚至把不存在的函数讲得有模有样。如果你没有验证习惯,这些错误会直接进入代码库。
第二,模型输出高度依赖上下文,而上下文经常被忽略。很多人把需求一句话丢给模型,然后直接使用结果。但模型并不知道你的项目结构、依赖版本、历史约定和边界条件。它生成的是“通用场景下的答案”,不是你项目里的正确答案。比如你问它“这个接口怎么做幂等”,它给的是标准方案,但它不知道你的业务里有哪些重复提交场景。
第三,模型会“遗忘”和“妥协”。长对话里,模型经常会丢失开头设定的约束条件。你一开始说“不要用某个框架”,到后几轮它又开始推荐这个框架。如果你不回头审视完整对话,很容易在不知不觉中偏离初始目标。
更隐蔽的问题是行为层面的:一旦习惯了“AI 给答案、我复制粘贴”,人的验证肌肉就会萎缩。遇到报错不想读日志,遇到编译失败不分析原因,遇到输出不核对事实。这不是技术能力问题,是工作习惯问题。
所以,题目里说的“without losing your critical thinking”,不是一句口号,而是需要落地为具体机制。下面从使用边界、工作流、验证手段和复盘方法四个层面展开。
2. 适用场景与使用边界:不是所有事情都该交给 AI 做
想保持批判性思维,第一步是明确“哪些任务可以交给 AI,哪些不能”。这不是限制 AI 的使用范围,而是为了让 AI 在最擅长的地方发挥作用。
从工程设计角度看,可以把任务分成四类:
| 任务类型 | 特点 | 例子 | 能否交给 AI |
|---|---|---|---|
| 高重复、低风险 | 模板化、结构清晰、错误影响小 | 代码注释、接口文档初稿、日志分析 | 可以,但要抽查 |
| 高重复、高风险 | 影响业务正确性、出错代价高 | 支付金额计算、SQL 生成、权限配置 | 可以辅助,必须人审 |
| 低重复、高创造 | 需要领域经验、审美、业务理解 | 系统架构设计、产品路径规划 | 辅助思考,不要盲从 |
| 事实性强、需溯源 | 涉及数据、法律、医疗、新闻 | 数据统计结论、合规建议 | 不建议直接使用,必须查证 |
这几条边界不是拍脑袋定的,而是基于一个简单逻辑:AI 的可靠性是概率性的,不是确定性的。在低风险任务里,90% 的正确率可以接受,因为人工抽查成本低;但在高风险任务里,90% 的正确率完全不可接受,因为那 10% 的错误可能带来严重问题。
实际操作中,很多团队犯的错误是“一刀切”。要么所有内容都相信 AI,要么完全不用。更合理的做法是:
- 写代码:让 AI 生成候选代码,但必须经过编译、单测、code review。
- 写文档:让 AI 生成初稿,但事实性数据和截图必须人工核对。
- 分析数据:让 AI 生成分析结果,但原始数据必须能回溯。
- 设计系统:让 AI 提供方案对比,但最终决策需要结合团队技术栈和业务约束。
还有一个容易被忽略的边界:数据安全和隐私。在使用公有 AI 服务时,不要把敏感业务数据、未公开代码、客户信息直接粘贴到对话里。你无法保证这些数据不会被用于训练或泄露。涉及到这方面的任务,应该使用私有化部署的模型,或者在脱敏之后再用。
明确边界之后,才能设计使用策略。下面是我建议遵守的三个原则:
- 能验证的任务,AI 可以大胆用。代码、结构化数据、导出文本,这些结果有明确的对错标准。
- 不能验证的任务,AI 只能当参考。架构建议、管理决策、业务判断,这些结果没有标准答案,需要人结合经验判断。
- 涉及事实和版权的内容,AI 产出必须溯源。新闻、统计数字、引用、法律条文,必须有可靠出处。
这一步的目的,不是“限制 AI 使用”,而是“在使用 AI 的同时保留人的判断空间”。
3. 环境准备与前置条件:把“思考工具”也当作部署资源
部署一个 AI 应用,你要准备环境变量、依赖、模型权重、显卡驱动。同样,如果你想在 AI 辅助工作流里保持批判性思维,也需要准备一套“思维工具链”。
这套工具链不是 GPU 和显存,而是下面这些:
3.1 上下文记录工具
AI 对话很容易丢失上下文,人也一样。启动一个任务前,先把需求写清楚,包括:
- 任务目标是什么。
- 输入条件是什么。
- 约束条件有哪些。
- 验收标准是什么。
- 相关的代码文件、文档位置、历史决策记录。
推荐用 Markdown 维护一个task-context.md文件。每次和 AI 对话前,把当前上下文贴进去,对话结束后更新一次。这看起来多了一步操作,但能大幅减少“AI 答非所问”和“人忘记需求”的问题。
3.2 验证工具链
根据任务类型准备验证手段:
- 写代码:准备编译环境、单元测试框架、linter。
- 写文档:准备事实核查清单,标注哪些是需要人工确认的。
- 做数据分析:准备数据校验脚本,确保 AI 生成的结论基于真实数据。
- 生成文件:准备格式校验器,比如 JSON Schema 校验、Markdown lint。
3.3 模型选择与版本固定
如果你经常用 AI,建议把模型版本固定下来,而不是每次都用最新的“智能版”。原因是:
- 模型行为会随着版本升级发生变化。今天测出来好的提示词,下个月可能效果变差。
- 固定版本有利于复现和定位问题。
- 不同的任务适合不同的模型。写代码和写文章,可能应该用不同模型。
从稳定的角度看,建议给不同类型的任务记录“模型版本 + 提示词 + 效果备注”,形成自己的小册子。
3.4 基线测试集
这是最容易忽略的一步。如果你用 AI 做重复性工作,比如生成周报、写代码注释、提取信息,建议准备一组固定的测试样本。在每次调整提示词或更换模型后,用同一组样本测试,对比输出质量变化。
它的作用类似机器学习里的 test set:保证优化提示词的过程不会让模型在某些维度变差。
4. 工作流设计:用流程对抗盲从
前面讲的都是准备,这一节是核心——怎么把“先相信自己、再质疑 AI”变成一套可执行的工作流。
通常,完整的 AI 辅助工作流包括五个环节:
4.1 定义需求与验收标准
不要只给 AI 一个“帮我写个函数”就结束。更好的需求描述是:
- 输入端是什么类型的数据。
- 输出端期望什么格式。
- 边界条件有哪些。
- 性能要求是什么。
- 成功标准是什么。
比如,你要让 AI 写一个解析日志的脚本,可以写:
任务:写一个 Python 脚本,解析 Nginx 访问日志中的 IP、时间、状态码和请求路径。 输入:access.log 文件,每行一条日志。 输出:CSV 文件,包含四列:ip, time, status, path。 约束:不引入第三方依赖,因为目标环境不允许安装包。 验收标准:能处理 100MB 的日志文件,解析耗时不超过 10 秒。这种需求描述的核心是:把验收标准前置。模型生成代码后,你可以直接按照验收标准判断是否合格,而不是凭感觉说“看起来差不多”。
4.2 生成候选方案
让 AI 生成实现方案,但这个阶段要遵守一条原则:不要只问一种方案,要问“有哪些方案,各自优缺点是什么”。
一个更有效的提示词模板是:
我需要实现一个任务,需求描述如下: {需求描述} 请给出 2-3 种可行方案,每种方案说明: 1. 实现思路 2. 复杂度 3. 优缺点 4. 适用场景 不要直接写最终代码,先给方案对比。这样做的目的,是逼自己在做技术选型之前,先了解候选空间。很多人拿到 AI 的第一个方案就直接用,这个习惯非常危险。模型会偏向主流方案,但主流方案未必适合你的场景。
4.3 验证与测试
拿到候选代码之后,不要只看结构是否合理,要做三件事:
- 跑起来:无论代码看起来多完美,都要实际运行。
- 构造边界用例:空输入、超长输入、非法参数、并发请求。
- 对照验收标准:一项一项打勾。
一个常见的反例是:AI 生成了一段读取 CSV 的代码,看起来很正常,但遇到文件编码是 GBK 的情况就崩溃。如果需求里没有明确编码,模型不会想到处理这种边界;如果你不测试边界,问题会一直到生产环境才暴露。
4.4 灰度使用
如果你要用 AI 做批量任务,比如批量生成描述、批量处理数据,建议先小规模试跑。选 3-5 个样本,人工检查输出质量和格式,然后再全量运行。这一步的成本很低,但能避免批量任务跑完才发现结果全部错误的情况。
4.5 复盘与归因
任务完成后,要做一次复盘,重点不是“AI 做得怎么样”,而是“我的使用过程哪里出了问题”:
- 是不是需求描述不清晰?
- 是不是没有明确验收标准?
- 是不是没有做边界测试?
- 是不是过于相信 AI 给出的解释,没有深入查证?
- 是不是模型选择不合适?
把复盘结果记录下来,下次启动任务前回看一遍,形成正向循环。
5. AI 辅助编程:批判性思维的最典型场景
AI 编程是这个主题下最实操的场景。现在主流 AI 编程工具有两类交付形态:聊天式代码生成(直接给需求,返回代码)和IDE 插件补全(边写边补)。无论哪类,都需要建立验证闭环。
5.1 让 AI 写代码的“三次提问法”
直接用“帮我写个函数”这种提问,返回结果通常只是“能跑的代码”,不是“符合我工程要求的代码”。推荐用三次提问完成一个任务:
第一次提问:描述需求和约束,只要求给方案,不写代码。
我需要为 Java 项目添加一个限流器,要求支持: 1. 按 IP 和接口维度限制请求频率; 2. 内存存储,不引入 Redis; 3. 支持自定义阈值和滑动窗口策略。 先给我 2-3 种实现方案对比,包括实现难度、性能、优缺点。第二次提问:选定方案后,让其生成代码。
方案已确定,用滑动窗口。 请生成 Java 代码,要求: 1. 使用 ConcurrentHashMap 存储窗口数据; 2. 线程安全; 3. 提供 tryAcquire 方法,返回 boolean; 4. 不使用第三方库。第三次提问:让 AI 生成测试用例。
请为上面的限流器编写单元测试,覆盖以下场景: 1. 同一 IP 短时间超过阈值返回 false; 2. 不同 IP 互不影响; 3. 窗口滑动后计数重置; 4. 并发请求下计数正确。这种三次提问法的核心逻辑是:让 AI 依次承担方案设计、代码生成、测试生成三个角色,而你自己始终是需求定义者和最终验收者。
5.2 代码验证示例
AI 生成代码后,可以用自动化工具辅助验证。以 Python 为例,一个基本的验证流程包括:
# 验证 AI 生成的代码是否符合基本预期 import subprocess import sys # 1. 语法编译检查 compile_result = subprocess.run( [sys.executable, "-m", "py_compile", "generated_code.py"], capture_output=True, text=True ) assert compile_result.returncode == 0, f"语法错误: {compile_result.stderr}" # 2. 运行单元测试 test_result = subprocess.run( [sys.executable, "-m", "pytest", "test_generated_code.py", "-q"], capture_output=True, text=True ) print("测试输出:\n", test_result.stdout)这段代码解决的是“AI 生成的代码即使看起来没问题,也要经过编译和测试验证”的问题。哪怕测试只是最基本的,也能过滤掉大部分低级错误。
5.3 警惕“AI 自信的错代码”
AI 编程中最危险的不是代码报错,而是代码能运行,但行为不符合预期。比如:
- 边界条件没有处理。
- 时间复杂度过高,数据量大了就卡死。
- 没有做输入校验,脏数据会直接导致异常。
- 并发问题没有考虑。
这些问题在 AI 生成的代码中非常常见,因为训练数据里的“常见写法”并不等于“正确写法”。要发现这些问题,不能只靠“代码风格好不好”,而要靠具体的测试用例和代码审查。
建议在接入 AI 编程时,刻意练习“反向思考”:
- 如果这个函数传入
None会发生什么? - 如果这个接口同时被 1000 个请求调用会怎样?
- 如果这个文件不按 CRLF 换行会不会出问题?
- 如果调用方忘记判断返回值怎么办?
这些思考不是“阻碍效率”,而是 AI 生成代码的补盲层。
6. AI 内容生产:事实核查与信息溯源的工程方法
AI 写作、AI 生成文档,本质上是在做“文本的概率预测”。这意味着它特别擅长写“看起来像范文”的文本,但事实性内容完全不可依赖。想让 AI 辅助内容生产又不失去判断力,需要建立一套信息核查机制。
6.1 区分“观点”和“事实”
AI 生成的内容里,观点和事实经常混在一起。比如 AI 写“XX 框架是业界最优解”,这是一个观点,它有没有数据支撑?要看上下文。AI 写“XX 框架在 2024 年发布了 5.0 版本”,这是一个事实,就要核对来源。
在 AI 内容生产工作流中,建议要求 AI 在输出时标记事实性断言:
请帮我写一篇介绍 Docker 容器技术的文章大纲。 要求: 1. 区分“技术原理”和“个人观点”; 2. 所有涉及版本、日期、市场数据的句子,标注“[需核实]”; 3. 涉及对比的结论,给出判断依据。这样生成的结果里,事实性内容会以“待核实”的标记出现。然后你可以集中精力去核实这些点,而不是被一篇流畅但可能错漏百出的文章带偏。
6.2 交叉验证法
对于重要事实,不要只问一个 AI。用同一问题问不同模型或同一模型不同轮次,然后对比结果。如果多个结果一致,可信度会高一些;如果结果不一致,说明这里需要人工调查。
例如,你想确认某个 API 是否存在:
请确认 Python requests 库中是否有 session.patch 方法?把这个问题分别发给两个不同模型,对比返回结果。如果答案矛盾,就去官方文档查证。这个方法有一点类似“多源验证”,但关键是:AI 的“一致”不等于“正确”,只是提高了可信度,不能替代官方文档。
6.3 建立事实核查清单
面向内容生产场景,建议在发布前过一遍事实核查清单。下面是一个通用模板:
| 核查项 | 说明 | 状态 |
|---|---|---|
| 版本号 | 所有软件版本号是否与官方发布一致 | 待核实 |
| 日期 | 事件日期、发布年份、截止时间是否准确 | 待核实 |
| 别名 | 项目名、组织名、人名是否拼写正确 | 待核实 |
| 引用 | 引用的数据是否有原始出处 | 待核实 |
| 代码 | 代码块是否可运行、缩进是否正确 | 待验证 |
| 结论 | 结论是否基于前文数据,是否存在过度推断 | 人工判断 |
| 版权 | 是否有他人版权素材、是否需要授权 | 人工判断 |
把这张清单放在内容生产流程里,每次发布前强制过一遍。习惯养成后,“AI 写出来就直接发”的情况会大幅减少。
7. 批量任务与接口调用:让 AI 输出可观测、可回滚
在工程场景中,AI 经常被接入流水线,批量处理任务。比如批量生成商品描述、批量提取招聘信息、批量做文本分类。批量任务有一个特点:单条输出错误可能不可见,但积累起来影响很大。
设计师 + AI 出图流程里的批量任务,和工程里的批量任务有一个共通问题:一个 hidden bug 如果没被发现,跑完一万条数据,可能错一千条。所以批量使用 AI 时,批判性思维的落地形式是“可观测 + 可回滚”。
7.1 批量任务设计原则
一个健康的 AI 批量任务,至少需要具备以下能力:
- 输入输出分目录管理,不能覆盖原始数据。
- 每一条任务有唯一 ID,方便回溯。
- 每一条输出有状态标记:成功、失败、待人工审核。
- 任务日志记录请求参数、模型版本、耗时和返回状态。
- 失败任务支持自动重试,但重试次数有上限。
7.2 API 调用示例
下面是一个通用 AI API 调用模板,带有基础的重试和结果记录逻辑。实际使用时需要根据你的接口地址和参数调整。
import json import time import requests from dataclasses import dataclass, field @dataclass class AIResult: task_id: str status: str # success / failed / error output: str error: str = "" retries: int = 0 def call_ai_api(prompt: str, task_id: str, max_retries: int = 3): url = "YOUR_AI_API_ENDPOINT" # 替换为实际接口地址 headers = { "Authorization": "Bearer YOUR_API_KEY", "Content-Type": "application/json" } payload = { "prompt": prompt, "temperature": 0.2, # 尽量降低随机性 "max_tokens": 1024 } result = AIResult(task_id=task_id, status="pending", output="") for attempt in range(max_retries): try: resp = requests.post(url, json=payload, headers=headers, timeout=30) if resp.status_code == 200: data = resp.json() result.status = "success" result.output = data.get("output", "") break else: result.error = f"HTTP {resp.status_code}: {resp.text}" except Exception as e: result.error = str(e) result.retries += 1 time.sleep(2 ** attempt) # 指数退避 else: result.status = "failed" return result关键设计点:
- temperature 调低。批量任务希望输出稳定,随机性越低越好。
- 超时控制。网络请求必须有超时,否则一个慢请求会拖垮整个任务队列。
- 重试机制。网络抖动、服务限流都会导致单条失败,重试能提高整体成功率。
- 结果记录。每条任务都要记录状态和错误信息,方便事后排查。
7.3 批量输出质量抽检
批量任务跑完后,不能直接结束。至少要抽检 10%~20% 的输出,判断质量是否达标。如果错误率超过预期阈值,应该停下来检查原因:是提示词不合适、模型版本退步、还是输入数据格式变化了。
抽检可以用人工方式,也可以写成规则脚本:
import json # 定义校验规则 def validate_output(output: str) -> bool: checks = [] # 规则1:非空 checks.append(len(output.strip()) > 0) # 规则2:长度合理 checks.append(len(output) < 5000) # 规则3:包含关键词 checks.append("https://" not in output) # 示例:检查是否有外链 return all(checks)这不是完整的质量评估,只是一个示例:批量任务需要把“质量判断”从“感觉”变成“规则”。你能列出规则的部分就自动校验,列不出规则的部分交给人工抽检。
8. 性能观察与资源管理:从 GPU 显存到“认知开销”
在本地部署 AI 模型时,我们会观察显存占用、推理速度、吞吐量。同样,在“用 AI 但不失去批判性思维”这件事上,也需要观察和维护资源,只不过这里的“资源”有两个层次:算力资源和认知资源。
8.1 算力资源观察
如果你使用的是本地模型或通过 API 调用的模型,建议记录以下指标:
| 指标 | 作用 |
|---|---|
| 推理耗时 | 判断接口是否稳定、是否需要升级硬件 |
| 显存占用 | 本地部署时判断模型是否适合当前 GPU |
| token 消耗 | 评估成本,优化提示词控制长度 |
| 请求失败率 | 判断服务稳定性 |
| 重试次数 | 判断网络环境和服务质量 |
这些数字用于回答“这个 AI 工具是否让我工作流更快”的问题。如果一个 API 经常超时,或者模型连续输出错误,你应该考虑换一个服务,而不是继续硬扛——保持批判性思维也包括评估工具本身是否值得用。
8.2 认知资源观察
比算力更值得关注的,是认知开销。这包括:
- 你是否花时间验证了 AI 输出?
- 你是否能指出 AI 输出中的错误?
- 你是否还在跟踪任务目标,还是被 AI 的“流畅答案”带偏了方向?
- 你做决策的依据,是 AI 的输出,还是你自己的分析?
一个简单自测方法:每次完成 AI 辅助任务后,问自己三个问题。
1. 这次任务里,AI 做了哪部分,我做了哪部分? 2. 如果我完全不使用 AI,结论会不会不同? 3. AI 的输出里,有多少是我能解释清楚的?如果第三个问题的答案很低,说明你可能在“依赖黑盒的输出”而没有真正理解任务。长期这样工作,你的判断力会退化。这不是危言耸听,而是一个真实的工程风险:工具越强,人的验证意愿越弱。
8.3 建立个人“AI 使用基线”
建议记录一份自己的 AI 使用基线,内容包括:
工作流名称:用 AI 写周报摘要 AI 工具:GPT API,模型版本 gpt-4o-mini 提示词版本:v1.2 平均耗时:5 分钟 平均错误率:10%(如:错误提取会议结论) 人工复核耗时:2 分钟 总体满意度:4/5 改进方向:优化提示词,减少“待办事项”提取错误把基线记录下来,每两周回看一次。如果发现人工复核耗时越来越长,说明模型的输出质量可能在下降,或者你的需求复杂度在提升。这类趋势数据,是判断“AI 工具是否值得继续用”的重要依据。
9. 常见问题与排查方法
在使用 AI 过程中,有一些高频问题。把它们提前列出来,能减少踩坑。
| 问题现象 | 可能原因 | 排查方式 | 解决方案 |
|---|---|---|---|
| AI 输出看起来流畅,但事实错误很多 | 模型是概率生成,不擅长事实检索 | 用多个模型交叉验证,查官方文档 | 建立事实核查清单,强制核对 |
| AI 生成代码报错,但逻辑“看起来对” | 训练数据中的常见写法,不等于正确写法 | 运行编译和测试 | 把代码扔进测试环境跑一遍,别只看结构 |
| 同一问题不同时间输出不一致 | 模型温度参数高,或者模型版本已更新 | 固定模型版本,降低 temperature | 对关键任务设置 temperature=0.1 或 0 |
| 批量任务跑完发现大量错误 | 单条验证不足,错误被“数量”掩盖 | 抽查 10%~20% 输出 | 建立质量抽检规则,错误率超阈值就停 |
| 过度依赖 AI,出现“不给 AI 就不写代码” | 工作流中没有保留“独立思考”环节 | 复盘 AI 辅助过程 | 增加“先自己思考方案”的步骤 |
| 上下文过长,模型忘记前面要求 | 模型上下文窗口有限,或者提示词被覆盖 | 检查完整对话记录 | 拆分成短任务,关键约束重复声明 |
| 敏感数据被输入公开 AI 服务 | 没有做数据安全评估 | 审查使用流程 | 敏感任务使用私有化部署,或先脱敏 |
| AI 给的参考资料无法验证 | 模型混淆了虚构信息和真实信息 | 让 AI 提供参考链接,然后逐个核实 | 对无法溯源的内容保持怀疑状态 |
| 怀疑 AI 输出但不知道怎么反驳 | 缺少领域知识,或缺少验证工具 | 学习基础知识,建立测试用例 | 把验证变成流程的一部分,而不是凭感觉 |
这张表的核心功能是:遇到问题时,先分析原因,再找解决方法,而不是直接否定 AI 或全盘接受 AI。
比如“AI 输出看起来流畅,但事实错误很多”这个问题,正确思路是:
- 理解生成机制:模型不认识事实,只是在生成概率最高的文本。
- 建立核查流程:对事实性内容使用多源交叉验证。
- 调整使用策略:低风险任务可以用,高风险任务必须人工复核。
10. 最佳实践:把批判性思维工程化
最后,把前文内容收拢成一组可执行的最佳实践。这组实践不是理论,而是可以直接嵌入工作流操作步骤。
1. 永远给 AI 一个“可验证的需求”。
需求里写清楚“输入是什么、输出是什么、验收标准是什么”,不给含糊描述。含糊的输入只能得到含糊的输出,而含糊的输出无法验证。这样做的副产品是:你被迫想清楚自己的需求,这本身就是批判性思维的一部分。
2. 设计双通道验证。
AI 的答案不是终点。让 AI 给出答案后,至少用另一个通道验证一遍:写代码就用测试验证,写事实就用官方文档核验,做数据分析就用原始数据重新算一遍。双通道验证不是“不信任”,而是工程质量的保障。
3. 定期复盘“谁在思考”。
每个任务结束后,问自己:这个任务里,是 AI 在规划方向、我做执行,还是我在规划方向、AI 做执行?如果是前一种情况,你需要反思。AI 适合做执行者,但做决策者时需要非常谨慎地评估。
4. 保持“最小可运行”的习惯。
在接入 AI 生成的内容时,先在一个小范围内做验证。先用 5 个样本测试,再扩展到 100 个;先跑通一个模块,再接入整个系统。这和软件工程里的“先做最小可行产品”是一个道理。
5. 维护自己的领域知识库。
AI 训练数据有时间截止点,也没有你的私有项目信息。你在使用 AI 时,如果能发现“模型推荐的技术方案里没有考虑我们系统的旧版本兼容性”这类问题,说明你有超出模型知识的判断力。这种判断力需要主动维护:多读官方文档、多写测试用例、多复盘失败案例。
6. 数据安全必须前置。
不要把敏感数据交给无法控制的服务。如果不在自己的机器上部署,先用规则“隔离”:脱敏数据、限制用户的权限、不能在日志中明文记录 prompt。保持批判性思维也包括信任边界管理——你该信任什么工具、不该信任什么工具。
7. 给自己设一个“无 AI 时间”。
每周留出固定时间做不依赖于 AI 的工作,比如读源码、查文档、写一个小脚本。这看起来反效率,但它是保持技术敏感度的重要方式。如果你完全依赖 AI 给出的答案,你将逐渐失去判断 AI 答案好坏的能力。
11. 总结:AI 是放大器,不是判断器
回到题目:Using AI without losing your critical thinking。
我的观点是:AI 是一个放大器,它放大的不是“思考能力”,而是“生产能力”。如果你的验证流程、知识储备和判断方法都很扎实,AI 能让你产出更快;如果你没有验证流程、没有知识储备、没有判断方法,AI 只会让你错得更快。
这里还隐含了一个工程设计原则:任何输入系统的内容,都应有验证环节。就像你不可能把未经测试的代码直接部署到生产环境,你也不应该把未经验证的 AI 输出直接用于生产决策。区别只在于,代码的验证工具有 pytest、JUnit、CI/CD,而 AI 输出的验证工具需要你自己搭建。
建议的落地顺序是:
- 第一次使用 AI 时,先记录“我用它做了什么、我怎么验证它的输出、结果如何”。
- 建立一张自己的“AI 使用与验证清单”,把它当成发布前检查项。
- 如果发现某类任务反复出错,就直接改进该类任务的提示词和验证流程。
- 每个月复盘一次,评估 AI 工具在你工作流中的价值,决定继续使用还是淘汰。
最后,留一个最简单的行动项:下一次用 AI 完成某个任务后,不要急着结束,先问一句——这是 AI 的答案,还是我的答案?如果答案是前者,你有两个选择:要么把它变成后者,要么把它丢进验证流程。
坚持这个习惯,比“用多厉害的 AI”更重要。工具会更新,模型会换代,但“保持怀疑、建立验证、持续复盘”的能力,在任何技术体系下都不过时。
建议顺手收藏这篇文章,下次用 AI 时翻一翻,对照检查自己的使用姿势是否在安全边界内。
