SOURCE TEXT / FULL VERSION

VibeCoding 的五维模型

可以。这个“五维模型”比“效率—速度—Token”三角更适合分析真实的 Vibe Coding,因为很多时候真正拖垮开发体验的,并不是 Token,而是**上下文质量和人工介入频率**。

我会把它定义成五个维度:

```text
             正确率
               ▲
               │
   上下文质量 ─┼─ 速度
               │
         Token成本
               │
          人工介入
```

但这五个维度不是彼此独立的,它们实际上形成一个动态系统。

---

## 1. 正确率:不是“代码能跑”,而是“任务真正完成”

这是最核心的维度。

Vibe Coding 里经常会出现一种假成功:

```text
代码生成成功
编译成功
测试成功
```

但业务其实没完成。

所以我更倾向把正确率拆成四层:

```text
L1 语法正确
L2 技术正确
L3 业务正确
L4 工程正确
```

比如让 Agent 实现:

> 给设备缺陷增加分页查询。

### L1:语法正确

```java
public Page<DeviceDefect> query(Pageable pageable) {
    return repository.findAll(pageable);
}
```

能编译。

### L2:技术正确

分页、JPA、事务都没问题。

### L3:业务正确

它还需要知道:

```text
只能查询当前组织
需要过滤已删除记录
权限范围按照部门树
默认按照发现时间倒序
```

### L4:工程正确

还要符合:

```text
统一 Result<T>
DTO 转换
异常体系
权限注解
日志规范
测试规范
数据库索引
```

真正 Vibe Coding 的成功率应该算:

> **L4 一次通过率。**

而不是:

> AI 有没有生成代码。

---

# 2. 速度:至少有三种速度

很多人说:

> Claude 好像慢。
>
> GPT 很快。
>
> DeepSeek 输出特别快。

其实这里混淆了三个指标。

### 第一种:响应速度

```text
Prompt → 首个 Token
```

也就是 TTFT。

体感最明显。

---

### 第二种:执行速度

比如 Agent 完成:

```text
搜索代码
→ 修改 8 个文件
→ 编译
→ 测试
```

一共多久。

这才是 Coding Agent 的真实速度。

---

### 第三种:任务完成速度

这个最重要:

```text
需求提出
↓
AI实现
↓
人工Review
↓
修复
↓
重新测试
↓
最终合并
```

总共花了多久。

可以叫:

> **Time To Done**

例如:

### 模型 A

```text
第一次生成:30秒

返工:
5次

最终:
20分钟
```

### 模型 B

```text
第一次生成:3分钟

返工:
0次

最终:
3分钟
```

所以模型 B 才是真快。

这也是为什么我一直觉得:

> Tokens/s 对 Coding Agent 的参考价值被严重高估了。

---

# 3. Token 成本:不能只看输入输出 Token

Token 成本其实应该分成四类。

```text
总 Token
=
输入上下文
+
推理 Token
+
输出 Token
+
返工 Token
```

很多人只看到:

```text
输入 100K
输出 10K
```

却忽略了最大的一部分:

> **返工 Token。**

比如:

```text
Task
   ↓
读取 repo 80K
   ↓
写代码 15K
   ↓
报错
   ↓
重新读取 50K
   ↓
修复 10K
   ↓
又报错
   ↓
再分析 60K
```

最后:

```text
总成本 = 215K+
```

所以真正应该计算的是:

> **Token / Completed Task**

而不是:

> Token / Request

这个差别非常大。

---

# 4. 上下文:我认为这是五维模型里面最重要的“中间变量”

很多 Vibe Coding 的问题表面看起来是:

```text
模型不聪明
```

其实真正的问题是:

```text
模型没看到正确的信息
```

所以我建议不要把 Context 衡量成:

```text
Context Length
```

而应该衡量成:

> **Context Quality**

可以简单定义:

```text
上下文质量
=
相关信息 / 总输入信息
```

比如给 AI 100K token:

```text
90K 无关代码
10K 关键代码
```

其实是低质量 Context。

反过来:

```text
10K Rules
20K 相关代码
5K 架构说明
```

反而可能效果更好。

---

## Context 可以分成四层

### A. Persistent Context

长期稳定信息:

```text
AGENTS.md
CLAUDE.md
Rules
项目架构
编码规范
技术栈
```

例如:

```text
Java 17
Spring Boot 3
PostgreSQL
JPA
统一 Result<T>
```

这是最适合 Rules 的。

---

### B. Repository Context

项目实际情况:

```text
目录结构
依赖关系
类关系
调用链
数据库 Schema
```

通常来自:

```text
Repo Map
Search
AST
LSP
Semantic Index
```

---

### C. Task Context

当前任务相关内容:

```text
需求
相关类
相关 SQL
相关 API
日志
错误堆栈
```

这是 Agent 每次应该动态获取的。

---

### D. Session Context

当前聊天已经发生的事情:

```text
之前尝试了什么
改了什么
为什么这么改
哪些方案失败
```

这是最容易膨胀的部分。

长期 Session 最终经常变成:

```text
Useful Context
20%

Historical Noise
80%
```

这就是为什么需要:

> **Context Compaction。**

---

# 5. 人工介入:这是最容易被忽视,但实际上最重要的指标

假设两个 Coding Agent。

### Agent A

每 2 分钟问你:

```text
要不要继续?

是否允许修改?

你想选方案A还是B?

这个类在哪里?

数据库是什么?
```

即使 Token 很便宜、速度很快,你仍然得一直盯着。

这种 Agent 没有真正提高生产力。

---

### Agent B

你给一句:

> 把设备缺陷分页查询性能问题解决掉,完成测试,不能改变接口。

然后它自己:

```text
定位
↓
分析
↓
修改
↓
测试
↓
发现失败
↓
修复
↓
重新测试
↓
给出结果
```

20分钟以后你 Review。

这个 Agent 才真正创造价值。

所以一个非常重要的指标应该是:

> **Human Interruptions Per Task**

例如:

```text
HIT = Human Intervention Times
```

理想情况:

```text
简单任务:0
中等任务:0~1
复杂任务:1~3
```

而不是:

```text
每一步都需要人确认
```

---

# 五个维度真正的关系

这里开始有意思了。

## 上下文 ↑ → 正确率通常 ↑

但:

```text
Context ↑
→ Input Token ↑
→ Latency ↑
→ Cost ↑
```

所以不能无限增加。

---

## 速度 ↑ → 正确率可能 ↓

如果 Agent:

```text
不规划
不搜索
不测试
直接写
```

当然快。

但是:

```text
返工 ↑
```

最终 Time To Done 反而增加。

---

## Token ↓ → 人工介入可能 ↑

比如你为了省 Token:

> 不让 Agent 搜整个 repo。

于是它开始问:

```text
UserService 在哪里?

权限体系怎么实现?

返回结构是什么?
```

Token 看似省了,

但你成了:

> **Human Context Retriever**

这其实是把机器成本转嫁成了人工成本。

---

# 所以五维实际上形成了一个优化问题

可以粗略写成:

```text
Developer Productivity
≈

Correctness × Autonomy

────────────────────

Time × Token Cost
```

再乘一个:

```text
Context Efficiency
```

更完整:

```text
Productivity
=
Correctness
× Autonomy
× Context Efficiency
──────────────────────
Time To Done × Cost
```

其中:

```text
Autonomy
≈ 1 / 人工介入次数
```

这比“哪个模型 benchmark 高”更接近真实开发生产力。

---

# 一个非常典型的四种 Coding 模式

可以拿这个五维模型分析。

## 模式 1:裸 Prompt

```text
需求
↓
AI
```

表现:

| 维度      | 表现    |
| ------- | ----- |
| 正确率     | ★★    |
| 速度      | ★★★★★ |
| Token   | ★★★★★ |
| Context | ★     |
| 人工介入    | ★★    |

适合:

```text
写算法
写工具函数
写 demo
```

---

# 模式 2:整个 Repo 全塞

```text
Repo
+
Prompt
↓
模型
```

表现:

| 维度      | 表现   |
| ------- | ---- |
| 正确率     | ★★★★ |
| 速度      | ★★   |
| Token   | ★    |
| Context | ★★★  |
| 人工介入    | ★★★★ |

问题:

> Context 很大,但 Context Quality 未必高。

---

# 模式 3:Rules + Search

```text
Rules
+
Repo Search
+
Task
↓
Agent
```

表现:

| 维度      | 表现    |
| ------- | ----- |
| 正确率     | ★★★★☆ |
| 速度      | ★★★★  |
| Token   | ★★★★  |
| Context | ★★★★★ |
| 人工介入    | ★★★★  |

这其实已经是目前比较理想的 Vibe Coding 模式。

---

# 模式 4:Agent Workflow

再升级:

```text
                Task
                  │
                  ▼
               Planner
                  │
       ┌──────────┴─────────┐
       ▼                    ▼
Context Retriever       Repo Mapper
       │                    │
       └──────────┬─────────┘
                  ▼
               Coder
                  │
                  ▼
                Test
                  │
             ┌────┴────┐
            PASS       FAIL
             │          │
             ▼          ▼
           Review    Diagnose
                        │
                        └────→ Coder
```

再配合:

```text
Rules
+
Context Compaction
+
Model Routing
+
Failure Limit
```

这时候五维才可能同时比较优秀。

---

# 这里还有一个很关键的“第六个隐含变量”

其实五维背后还有:

> **任务粒度。**

这个东西非常重要。

任务太大:

```text
帮我重构整个订单系统
```

会导致:

```text
Context ↑↑
Token ↑↑
错误率 ↑
Agent Loop ↑
```

任务太小:

```text
改这一行
改下一行
再改那个方法
```

则:

```text
人工介入 ↑↑
Session ↑↑
上下文重复读取 ↑↑
```

所以有一个最佳任务粒度。

我通常称它:

> **AI-sized Task**

一个比较好的 Task 通常满足:

```text
1个明确目标
+
有限修改范围
+
明确验收条件
+
Agent 可以独立完成
```

例如:

差:

> 优化订单系统。

好:

> 将订单列表接口 P95 从目前约 4 秒降低到 1 秒以内。允许修改 Repository、索引和查询逻辑,不改变 API 返回结构;完成后运行现有订单模块测试并解释性能瓶颈。

这个 Prompt 本身就在优化五维:

```text
Context ↓
搜索空间 ↓
正确率 ↑
人工介入 ↓
总时间 ↓
```

---

# 所以我会把成熟 Vibe Coding 看成三个层次

### 第一阶段

```text
Prompt Engineering
```

关注:

> 怎么把话说清楚。

### 第二阶段

```text
Context Engineering
```

关注:

> 给 AI 看什么。

### 第三阶段

```text
Agent Engineering
```

关注:

> AI 怎么完成整个任务。

真正进入第三阶段以后,人不应该再主要负责:

```text
告诉 AI 每一步怎么做
```

而应该负责:

```text
Goal
Constraints
Acceptance Criteria
Architecture Decisions
```

AI 负责:

```text
Search
Implement
Test
Debug
Verify
```

---

## 最终我认为最重要的指标

如果让我只选一个,我不会选:

```text
Token
Latency
Benchmark
Context Window
```

而会选:

> **Human Minutes per Completed Task**

也就是:

```text
完成一个真正可交付任务,
需要开发者亲自投入多少分钟。
```

例如:

```text
模型 A:

AI运行 3分钟
人工修改 25分钟

Human Cost = 25 min
```

对比:

```text
模型 B:

AI运行 12分钟
人工Review 3分钟

Human Cost = 3 min
```

对于企业开发,**B 的生产力可能高出一个数量级**。

所以如果把我们刚才的“五维模型”浓缩成一句话:

> **Vibe Coding 的终极目标,不是让 AI 输出得更快、更便宜,而是在尽可能少的人类注意力投入下,让 AI 使用尽可能少但足够准确的上下文,一次完成高质量的软件工程任务。**

而这也是为什么我认为未来 Coding Agent 最核心的竞争会从 **“谁模型最聪明”**,慢慢转向 **“谁的 Context Management + Agent Loop + Tooling 最好”**。
返回 PPT:不可能三角与五维模型 ↗