演讲嘉宾
Tessl 开发者关系专家
演讲者首先做了一个简单的现场调研:大约 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 像得了失忆症,每次重启会话都需要重新“调教”。
关于 Prompt 的三个反直觉事实
"急切的孩子" (The Eager Child)
LLM 在读完整个 Prompt 之前就开始生成答案了。
教训 不要把重要的约束条件放在 Prompt 的最后,AI 可能那时候已经“跑偏”了。
结构化提示 (XML-like Tags)
对于长 Prompt,使用类似 XML 的标签(如 <requirements>, <context>)能显著提升准确率。它帮助模型理解不同段落的边界。
任务框架与正向约束 (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)
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)
- 初始化: AI 询问意图,并在本地创建一个
spec.md文件。 - 定义: Spec 文件中明确列出了 Goal(目标)、Capabilities(能力)、Dependencies(依赖)。
- 测试生成: AI 基于 Spec 生成
vitest测试用例。 - 代码生成: AI 编写实现代码并通过测试。
- 稳定再生 (Stable Regeneration): 即使删掉代码,只要 Spec 还在,就能重新生成功能一致的应用。
"代码变得可抛弃 (Disposable)。真正重要的是规范 (Spec)。"
— 演讲核心思想
"试图通过不断修改 Prompt 来摆脱困境,就像是被困在纸袋里一样徒劳。"
— 关于 Vibe Coding 的循环
加入未来
Tessl 正在构建这一未来。你可以通过 MCP 服务器连接你的 AI 代理。
如果你的单体仓库 (Monorepo) 很大,也可以在子模块中应用此模式。
会议彩蛋:抽奖奖品