Skip to content

Part 4: 使用边界与团队采用

4.5 使用边界

4.5.1 什么时候该用 / 不该用 AI

text
┌─────────────────────────────────────────────────────────────────────┐
│  AI 使用场景光谱                                                     │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    放心用                    谨慎用                     最好别用     │
│    ◄─────────────────────────────────────────────────────────────►  │
│                                                                     │
│    · 拼写检查               · 业务逻辑实现              · 安全关键代码│
│    · 格式化                 · 不熟悉的领域              · 架构决策    │
│    · 样板代码               · 性能优化                  · 加密实现    │
│    · 文档草稿               · 并发代码                  · 认证授权    │
│    · 单元测试               · 数据库设计                · 支付处理    │
│    · 代码解释               · API 设计                  · 合规代码    │
│    · 重构建议               · 错误处理策略              · 你不打算    │
│    · 命名建议               · 第三方集成                  理解的代码  │
│                                                                     │
│    你完全理解               你需要仔细审查              你必须亲自写  │
│    AI 只是加速              AI 是参考意见              或深度审查    │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

引用 软件工程的「纯」与「不纯」

text
┌─────────────────────────────────────────────────────────────────────┐
│  纯粹工程 vs 不纯粹工程                                              │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    纯粹工程                           不纯粹工程                     │
│    (Pure Engineering)                 (Impure Engineering)          │
│                                                                     │
│    ┌─────────────────────┐           ┌─────────────────────┐       │
│    │ · 你非常了解的问题   │           │ · 你只有粗浅理解     │       │
│    │ · 社区不熟知        │           │ · 问题不新颖        │       │
│    │   (值得研究)      │           │   只是对你新        │       │
│    │ · 在专长极限边缘    │           │ · 很少处理透彻      │       │
│    │ · 有无限时间        │           │   理解的问题        │       │
│    │                     │           │ · 紧迫的截止日期    │       │
│    └──────────┬──────────┘           └──────────┬──────────┘       │
│               │                                  │                  │
│               ▼                                  ▼                  │
│    ┌─────────────────────┐           ┌─────────────────────┐       │
│    │   AI 帮不上忙        │           │  AI 可能比你更聪明   │       │
│    │   (需要深度思考)   │           │  (快速出活)        │       │
│    └─────────────────────┘           └─────────────────────┘       │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

作者观点

AI 最擅长的是「不纯粹工程」——那些你知道怎么做、但做起来很繁琐的事情。而「纯粹工程」——需要深度思考和创造性的部分——还是得靠你自己。

4.5.2 技能退化警示

行业警示

来源如何避免在 AI 时代技能退化 [1]

「今天跳过『艰难方式』的初级开发者可能会过早触及天花板,缺乏成长为高级工程师的深度。」

开发者自述

「我发现自己不再写代码,只是等 Copilot 给我代码。我已经忘了每天都在用的函数和类型。」

三个需要警惕的征兆

征兆表现后果
Code Review 变水基础错误开始漏过(线程安全、逻辑问题)代码质量下降,技术债累积
调试能力退化能快速生成代码,但无法定位问题遇到 AI 搞不定的问题时完全不知道从哪下手
心智模型侵蚀只会「调用」不会「设计」系统越写越乱,最后只能推倒重来

X-Y Problem 陷阱

python
# ❌ 问方案,不问问题
# 问 AI:"怎么让这个循环更快?"
for i in range(len(data)):  # AI 优化了循环
    process(data[i])

# ✅ 理解本质:先问「为什么慢」
# 发现瓶颈是 I/O,不是循环
async def process_all(data):
    await asyncio.gather(*[process(d) for d in data])

X-Y Problem:你想解决 X,却问 AI 怎么做 Y。AI 会认真帮你优化 Y,但 X 才是真正的问题。

一条判断标准

专家观点 — Simon Willison [^55]

「我的黄金法则是:我不会提交任何我无法向别人解释的代码。

预防策略

  • 定期 Unplugged 编程(关闭 AI 辅助)
  • 保持学习日志,记录 AI 帮你做的事
  • 刻意练习判断力 — 决定何时用 AI、何时手写

延伸阅读

The Paradox of Augmentation [2] — AI 初期提升效率,长期导致技能退化的数学模型

4.5.3 成本意识

text
┌─────────────────────────────────────────────────────────────────────┐
│  对话累积的成本问题                                                  │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    第 1 轮对话:输入成本 500 tokens                                  │
│    第 2 轮对话:输入成本 2000 tokens(包含第 1 轮历史)              │
│    第 3 轮对话:输入成本 4000 tokens(雪球越滚越大)                 │
│    ...                                                              │
│    第 10 轮对话:输入成本可能已经是第 1 轮的 20 倍                    │
│                                                                     │
│    这就是为什么 Claude Code 有 /clear 命令                           │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

Token 效率优化建议

建议说明
定期 /clear任务完成或对话偏离时,清空重新开始
精简 CLAUDE.md不要塞太多内容,60 行以内最佳
MCP 不要装太多每个 MCP Server 的工具定义都占 Context
具体的 prompt一次说清楚,避免来回澄清
分任务处理大任务拆成小任务,每个任务独立对话

4.6 团队采用

4.6.1 OCaml 13K PR 案例

2025 年 11 月,一位热情的开发者给 OCaml 编译器项目提交了一个 13,000 行的 PR [3]

这个 PR 是用 Claude 全程生成的,目的是实现 DWARF 调试支持。结果?被 maintainer 锁定并拒绝了。

text
┌─────────────────────────────────────────────────────────────────────┐
│  OCaml 13K PR 事件时间线                                             │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  提交者: 一位热情的外行用户                                          │
│  工具: Claude AI                                                    │
│  PR 规模: 13,000+ 行代码                                            │
│                                                                     │
│  问题 1: 没有事先讨论就提交巨型 PR                                   │
│          └─ 浪费了 volunteer maintainer 的时间                      │
│                                                                     │
│  问题 2: AI 生成的代码里有错误的版权声明                             │
│          └─ 把代码归属给了 Mark Shinwell(一个真实的人)             │
│                                                                     │
│  问题 3: 被问到为什么有这个归属时,提交者说:                        │
│          「Beats me. AI decided to do so and I didn't question it」 │
│          (我也不知道,AI 决定这么做的,我没质疑)                   │
│                                                                     │
│  问题 4: 把大量 .md 文件加进了 .gitignore                            │
│          └─ 明显没有认真 review 过自己提交的代码                     │
│                                                                     │
│  结果: PR 被锁定,maintainer 非常耐心但明确地拒绝了                  │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

教训

「提交代码的工程师始终对代码质量、安全和功能负责,无论 AI 是否参与。」

4.6.2 分阶段采用策略

来自 Pete HodgsonJellyfish 的建议:

text
┌─────────────────────────────────────────────────────────────────────┐
│  团队采用 AI 编程的三个阶段                                           │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│    阶段 1: 实验                                                      │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  目标: 理解能力和局限                                        │  │
│    │  活动:                                                       │  │
│    │    · 小范围试用(1-2 人先跑起来)                            │  │
│    │    · 记录使用经验(踩了什么坑、学到什么)                     │  │
│    │    · 尝试不同场景(哪些适合 AI、哪些不适合)                  │  │
│    │                                                              │  │
│    │  ← 我们团队目前在这里                                        │  │
│    └─────────────────────────────────────────────────────────────┘  │
│                          │                                          │
│                          ▼                                          │
│    阶段 2: 采用                                                      │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  目标: 成为日常工具                                          │  │
│    │  活动:                                                       │  │
│    │    · 团队培训(今天这个分享算是开始)                        │  │
│    │    · 共享配置(CLAUDE.md、MCP 配置)                         │  │
│    │    · 建立 Code Review 规范                                   │  │
│    └─────────────────────────────────────────────────────────────┘  │
│                          │                                          │
│                          ▼                                          │
│    阶段 3: 影响                                                      │
│    ┌─────────────────────────────────────────────────────────────┐  │
│    │  目标: 衡量实际效果                                          │  │
│    │  活动:                                                       │  │
│    │    · 对比使用前后的效率指标                                  │  │
│    │    · 识别最佳实践,固化成规范                                │  │
│    │    · 持续迭代改进                                            │  │
│    └─────────────────────────────────────────────────────────────┘  │
│                                                                     │
└─────────────────────────────────────────────────────────────────────┘

4.6.3 Oxide 五原则

企业实践 — Oxide 公司

背景:硬件+软件公司,由前 Sun/Joyent 资深工程师创办(含 DTrace 作者 Bryan Cantrill),只招资深工程师 来源:RFD 576: Using LLMs at Oxide [4]

原则解释我的理解
责任人类判断始终在环内,对所有输出负责不能说「AI 写的,我不知道」
严谨LLM 应该锐化思考而非替代思考用 AI 加速,不是用 AI 偷懒
同理心考虑内容创作者和消费者想想 Reviewer 的时间,想想维护者的负担
团队合作保持真诚的沟通如果用了 AI,就说用了;不要假装是自己写的
紧迫感的平衡不为速度牺牲质量快不是目的,好才是

4.6.4 代码审查底线

对 AI 生成代码的审查,应该多问两个问题

问题为什么重要
「为什么选择这个方案?」如果答不上来,说明你没理解代码
「考虑了哪些替代方案?」如果没考虑,说明你只是接受了 AI 的第一个建议

4.7 Q&A 与资源

4.7.1 常见问题

问题简短回答
「Claude Code 要钱吗?」要,按 token 计费,公司应该会统一采购
「和 ChatGPT 比哪个好?」写代码的话,Claude 目前更强;但选型要看具体场景
「会不会泄露公司代码?」Anthropic 声称不会用 API 数据训练模型,但敏感代码还是要注意
「我完全不懂 AI,能用吗?」能,但建议先从简单任务开始,不要一上来就 Vibe Coding
「AI 会取代程序员吗?」短期不会,但会改变工作方式;不用 AI 的程序员可能会被用 AI 的程序员取代
「英文不好影响大吗?」有影响但不大,Claude 中文支持不错;关键是学会组织 Context

4.7.2 资源推荐

入门必读

资源说明
Claude Code Best PracticesAnthropic 官方最佳实践
Claude Code Docs官方文档,遇到问题先查这里
如何避免在 AI 时代技能退化中文,技能退化警示

进阶阅读

资源说明
Oxide RFD 576企业级 LLM 使用策略
一个半月高强度 Claude Code 使用后感受喵神的文章,实战经验
Context Engineering Guide深入理解 Context Engineering

4.7.3 最后一句话

用 AI 加速你已经理解的工作,而不是用它跳过你应该学习的过程。

这是我这几个月踩坑下来最深的体会。希望对大家有帮助。


参考资料


  1. 📝 L3 | 如何避免在 AI 时代技能退化 | 宝玉的分享 - 中文译文,原文详述技能退化的四个征兆和七条实践建议。 ↩︎

  2. 🔬 L2 | The Paradox of Augmentation | SSRN - AI 增强悖论的理论模型:AI 初期提升效率,长期导致技能退化的数学模型。 ↩︎

  3. 💬 L4 | AI has a deep understanding of how this code works | Hacker News - 2025 年 10 月 OCaml 编译器 13K 行 AI 生成 PR 事件的社区讨论,展示了 AI 辅助编程的典型反面案例。 ↩︎

  4. 🔬 L1 | Oxide RFD 576: Using LLMs at Oxide - Oxide 公司关于企业级 LLM 使用的详细策略文档,强调责任、严谨、同理心等核心价值观。 ↩︎

基于 VitePress 构建