Spec-Driven Development

为什么你的 Prompt 无法扩展?

👨‍💻

演讲嘉宾

Tessl 开发者关系专家

DevOps AI Agents
开场背景

演讲者首先做了一个简单的现场调研:大约 50% 的听众已经在工作中使用 AI 编码工具。

趣闻: 提到了比利时的 DevOps 现状,并调侃了会议组织者 Stefan 使用 "Vibe Coding"(氛围编码)构建了一个评分应用。演讲者提到了三个核心工具的演进:
Cursor (IDE 分支) Bolt.new (Web 生成) Claude Code (终端 Agent)

现状分析

Prompt 驱动开发的“三大陷阱”

虽然 Vibe Coding(凭感觉/氛围编码)很爽,但它无法扩展。

附带损害

Collateral Damage

现象

"修复了一个 Bug,结果弄坏了其他五个功能。"

原因

Agent 过于聚焦于当前的 Prompt 指令,缺乏全局视野,导致在循环修复中产生破坏性的代码变更。

版本模糊与幻觉

Version Blurring

Spring 7 案例

演讲者举例:Spring 7 将于 11 月发布,但 AI 的训练数据截止于 1 月。

后果

AI 会基于旧版本的知识去推测新版本的 API,或者混用 v1.1 和 v1.2 的语法,导致代码根本跑不通。

健忘的 Agent

Lack of Persistence

现象

"第 30 条指令不仅让 AI 忘记了第 1 条,甚至撤销了第 6 条指令的成果。"

本质

上下文窗口限制以及缺乏持久化的知识库,导致 Agent 像得了失忆症,每次重启会话都需要重新“调教”。

Tessl AI 团队的发现

关于 Prompt 的三个反直觉事实

1

"急切的孩子" (The Eager Child)

LLM 在读完整个 Prompt 之前就开始生成答案了。
教训 不要把重要的约束条件放在 Prompt 的最后,AI 可能那时候已经“跑偏”了。

2

结构化提示 (XML-like Tags)

对于长 Prompt,使用类似 XML 的标签(如 <requirements>, <context>)能显著提升准确率。它帮助模型理解不同段落的边界。

3

任务框架与正向约束 (Task Framing)

"不要使用外部依赖" "请编写一个自包含的 JavaScript 包"
AI 对否定指令(Don't)的处理不如肯定指令(Do),且容易因为训练数据中常见的解决方案包含第三方库而忽略约束。

核心范式转换

从“代码为中心”到“规范为中心”

传统代码的问题

  • 代码混合了“做什么”(Intent) 和“怎么做”(Implementation)。
  • 代码中的决策往往是隐式的、一次性的。
  • 很难从现有代码中反推出最初的业务意图。

规范 (Spec) 的优势

  • Spec 是纯文本 Markdown 文件,机器可读,人类可读。
  • Spec 包含:能力列表 (Capabilities)、API 定义、依赖项。
  • 单一事实来源 (Source of Truth):代码可抛弃,Spec 永存。
实战演示

Tessl + Claude Code + MCP 实战

演讲者通过两个演示展示了如何利用 MCP (Model Context Protocol) 将 Claude Code 连接到本地工具。

Demo 1: 规范辅助开发 (Spec-Assisted)

目标:构建一个掷骰子 CLI 工具 (commander.js)

user@dev:~$ claude
Claude: 检测到 Tessl MCP 工具。
Claude: 正在搜索 "Usage Spec" for commander.js...
Downloading spec to local context...

关键点:Usage Specs (使用规范)

Tessl 维护了一个注册表,存放着第三方库的“正确使用说明书”(Markdown 格式)。AI 读取这个 Spec 作为上下文,而不是依赖过时的训练数据。这解决了“版本模糊”问题。

Demo 2: 规范驱动开发 (Spec-Driven)

目标:构建一个猜单词游戏 (Hangman)

  1. 初始化: AI 询问意图,并在本地创建一个 spec.md 文件。
  2. 定义: Spec 文件中明确列出了 Goal(目标)、Capabilities(能力)、Dependencies(依赖)。
  3. 测试生成: AI 基于 Spec 生成 vitest 测试用例。
  4. 代码生成: AI 编写实现代码并通过测试。
  5. 稳定再生 (Stable Regeneration): 即使删掉代码,只要 Spec 还在,就能重新生成功能一致的应用。

"代码变得可抛弃 (Disposable)。真正重要的是规范 (Spec)。"

— 演讲核心思想

"试图通过不断修改 Prompt 来摆脱困境,就像是被困在纸袋里一样徒劳。"

— 关于 Vibe Coding 的循环

加入未来

Tessl 正在构建这一未来。你可以通过 MCP 服务器连接你的 AI 代理。
如果你的单体仓库 (Monorepo) 很大,也可以在子模块中应用此模式。

会议彩蛋:抽奖奖品

星球大战乐高 AI 监视器硬件 纽约 DevCon 门票

原文

源链接