AI 作为开发工具
Source: Dev.to
“…人类所困惑的绝大多数问题和争议,都源于对词语的可疑和不确定的使用,或者说,是源于不确定的观念…” An Essay Concerning Human Understanding, The epistle to the reader (1690)
介绍
今年,出现了许多用来描述新开发工具的术语——AI。
于是,像往常一样,关于不同颜色铅笔“口味”的讨论随即展开:有人认为可以从中获得乐趣,有人认为它只适用于生产——即便如此,也只能在教会的祝福之后使用。
原则上,你可以把任何开发/工程的规则或最佳实践中的工具名称换成**“AI”**,然后用这些规则狠狠敲击你的对手。
当愿意的专家们抚摸这头大象并争论他们触摸到或感受到的东西时,让我们尝试建立一些术语。
我们需要简单且易懂的表达,这样才能立刻指明我们在地图上的位置。
我也可以使用高深的词汇,所以让我们尝试一种范式化的方法。
从现在开始——不带讽刺——我们尝试建立工作定义。
本文档的目标——不是评判 AI 是“好”还是“坏”,而是提供一个共同语言用于讨论:
- 我们现在到底在做什么,
- 我们接受的风险水平是多少,
- 对于所选方法,哪些实践是合适的。
1. Vibe Coding
定义 – 开发者使用人类可理解的语言描述期望的功能,并通过 AI 生成代码,无需对结果进行详细审查或编辑。重点在于实验、快速原型制作以及对 AI 的信任,而不是手动编写或检查每一行代码。
Intent → AI → Code
- AI 根据高层意图编写代码
- 最小化审查,最小化结构
- 最高速度,最高风险
使用场景
- 原型
- 演示
- 探索性开发(Spike)
- 一次性代码
不适用的情况
- 生产系统
- 核心逻辑
- 安全敏感路径
2. AI‑Assisted Development (AIAD)
Definition – 使用人工智能工具在开发的各个阶段 支持 开发者:编写代码、测试、调试、优化以及自动化重复性任务。开发者仍然是积极的参与者;AI 充当助理,提供思路、自动化常规任务并提升代码质量。
Human‑led development using AI as a tool
Human owns architecture and decisions
AI accelerates implementation
Standard reviews and testing apply
何时使用
- 编写生产特性
- 维护长期使用的代码库
3. AI 配对编程
定义 – AI 助手在开发者实时工作,提供替代方案、检测错误、优化代码,甚至根据上下文生成新功能。这可以减少调试时间并提升项目架构。
Human ⇄ AI in real time
Continuous dialogue
AI suggests, human decides
Comparable to pair programming with a strong junior/mid developer
何时使用
- 日常开发
- 学习不熟悉的代码库或语言
4. AI 生成的规范与架构
定义 – AI 用于根据需求自动生成 架构决策、图表、文档和测试场景,从而快速获得系统原型并验证其是否符合业务需求。
Requirements → AI → Specifications / Diagrams
AI helps before coding
Generates draft specifications, architecture diagrams, and test plans
Human reviews and refines
何时使用
- 系统设计
- 架构探索
- 前期规划阶段
5. AI 增强的规范驱动开发
定义 – 结构化规范(需求、架构约束、验收标准等)是 AI 驱动代码生成的 唯一真实来源。AI 将这些规范转换为实现、测试和文档,确保高度对齐,降低错误风险,并提升速度。
Specification → AI → Code + Tests
Specification is the source of truth
AI generates code and tests based on specifications
Highest predictability and maintainability
何时使用
- 核心业务逻辑
- 金融、安全或受监管的系统
- 生命周期长、规模大的代码库
6. 完全集成的 AI 开发
定义 – AI 在开发的所有阶段 深度集成——设计、代码编写、测试、优化,甚至部署。开发者与 AI 作为合作伙伴,共同显著提升生产力和代码质量。
Human + AI jointly drive the process
AI participates in design, coding, testing, and optimization
Human remains responsible for strategy and constraints
何时使用
- 团队有意在软件开发生命周期(SDLC)中采用 AI
- 存在明确的约束和评估流程
7. AI‑驱动的重构与优化
定义 – AI 自动分析并重构现有代码,识别潜在问题,提出优化建议,并适应项目变更。它从大型代码库中学习,以更好地理解上下文和需求。
Existing code → AI → Improved code
AI refactors, optimizes, and reduces technical debt
Operates under strict rules and is subject to evaluation
何时使用
- 受控的重构
- 性能优化
- 风格和一致性改进
8. AI‑驱动的 CI/CD 与安全自动化
Definition – AI 可以自动生成 CI/CD 配置,分析代码安全,识别技术债务,并提出修复建议。这可以降低风险并加快部署。
Policy → AI → CI/CD and security automation
AI generates and maintains pipelines
Automates security scanning and policy enforcement
When to use
- DevSecOps 自动化
- 降低运营风险
9. 自主 AI 代理
定义 – AI 代理能够 独立执行 任务——从根据规范生成代码,到自动创建测试、监控,甚至在生产环境中修复错误。这使得系统能够自我保护,最大限度地减少人工干预。
Goal → AI Agents → Execution
Autonomous agents decompose and execute tasks
Minimal human intervention
谨慎使用
- 内部工具
- 明确界定的职责
概要
概要表
| 范式 | 核心理念 | 人类角色 | AI 角色 | 典型使用场景 | 风险等级 |
|---|---|---|---|---|---|
| Vibe Coding | 高级意图 → 代码 | 最少审查 | 快速生成代码 | 原型、演示、探索 | 高 |
| AIAD | 在整个软件开发生命周期中提供助手 | 负责架构和决策 | 加速、建议、自动化 | 生产特性、维护 | 中等 |
| AI Pair‑Programming | 实时对话 | 决定、审查 | 建议、检测、生成 | 日常开发、学习新代码 | 中等 |
| AI‑Generated Specs | 需求 → 规格/图表 | 审查并完善 | 起草规格和架构 | 早期设计、规划 | 低‑中等 |
| Spec‑Driven Dev | 规格 → 代码 + 测试 | 定义并验证规格 | 生成实现和测试 | 核心业务逻辑、受监管 | 低 |
| Fully Integrated AI | 人类+AI 共同驱动流程 | 策略、约束 | 设计、编码、测试、优化 | AI‑优先团队、成熟流程 | 中等 |
| AI Refactoring | 现有代码 → 改进代码 | 批准更改 | 分析、重构、优化 | 重构、性能、风格 | 低‑中等 |
| CI/CD & Security | 策略 → 流水线和扫描 | 定义策略 | 生成并维护 CI/CD 与安全 | DevSecOps、风险降低 | 低 |
| Autonomous Agents | 目标 → 自动执行 | 设定目标、监控 | 端到端任务执行 | 内部工具、受限任务 | 高(谨慎使用) |
自动化开发范式
| 范式 | 谁主导 | 真相来源 | 典型使用 | 生产就绪度 | 风险 |
|---|---|---|---|---|---|
| Vibe Coding | AI | 提示 | 原型、演示 | ❌ | 🔥🔥🔥 |
| AI‑assisted Dev | Human | 代码 | 生产特性 | ✅ | 🟡 |
| AI Pair Programming | Human + AI | 代码 | 日常开发 | ✅ | 🟡 |
| Generative Spec & Design | Human | 规格 | 架构、规划 | ⚠️ | 🟡 |
| Spec‑Driven + AI | Specification | 规格 | 核心系统 | ✅✅ | 🟢 |
| AI‑Driven Dev | Human + AI | 混合 | 端到端开发 | ✅ | 🟡 |
| Autonomous Refactoring | AI | 代码 + 规则 | 技术债务、清理 | ⚠️ | 🟡 |
| Pipeline & Security AI | Policy | 策略 | CI/CD、 安全 | ✅ | 🟡 |
| AI‑Agent Driven Dev | AI Agents | 目标 / 策略 | 自动化 | ⚠️ | 🔥🔥 |
| Self‑Healing Systems | AI | 运行时信号 | 运维 / 可靠性 | ⚠️⚠️ | 🔥🔥🔥 |
决策树 – 我们在讨论什么?
| 级别 | 是否允许 | 描述 |
|---|---|---|
| 默认 | ✅ | AI 辅助开发、AI 配对编程、带审查的重构 |
| 需明确批准 | 🟡 | AI 增强的规范驱动开发、核心逻辑中的 AI 生成代码、受监管领域的任何 AI、仅限运维的任务(CI/CD 生成、安全扫描、依赖和策略执行) |
| 禁止 | ❌ | 生产环境中的 AI 代理驱动开发、自愈系统、未经人工批准的自主生产变更 |
关键要点
AI 并没有改变工程学;它只是让错误更快出现——或更易于管理。
运行时信号驱动的自愈(高自治,高风险)
Runtime signals → AI → Fix → Deploy
- AI 监控生产环境,检测问题,生成补丁,并自动应用。
- 最高自治,最高风险 – 默认不推荐。
- 仅在严格的安全措施下使用,并且仅用于非关键系统。