2.2 VibeCoding 规范

阅读完本节后,你将会收获:

序言中提到的"Spec(开发规范)"是 Vibecoding 的核心,以及 VibeCoding 的标准开发流程。

Agent Native = 以 AI Agent 为中心的开发思维

传统开发中,AI 是辅助工具(Copilot);Agent Native 中,AI 是自主执行者(Autopilot)。

传统思维 vs Agent Native

维度传统 AI 辅助开发Agent Native 开发
核心角色人写代码,AI 帮忙AI 为主,代码是 AI 的实现细节
工作方式AI 是 CopilotAI 是 Autopilot
交互模式人写 Prompt 指挥 AIAI 主动提问、规划、执行
输出形态AI 生成代码片段,人来整合AI 自主完成完整任务
你的关注点怎么写代码写什么产品

Agent Native 的三大原则

1. 意图驱动

告诉 AI 目标,让它自己决定实现方式:

bash
 传统思维:
"帮我写一个函数,接收数组参数,用 for 循环遍历,
遇到大于 10 的就 push 到新数组里..."

 Agent Native:
"过滤数组中大于 10 的元素,返回新数组"

2. 异步协作

AI 可以在你睡觉时工作:

bash
# 你设定目标,AI 自主执行
"实现用户评论功能,包括:
1. 数据库 schema(Comment 模型)
2. CRUD API
3. 前端评论表单
4. 评论列表展示

完成后告诉我,我先去忙别的。"

3. 信任但验证

不要逐行检查 AI 的代码,而是:

验证方式

从开发者到编排者

Agent Native 时代,你的角色转变:

传统开发者Agent Native 编排者
手写代码描述需求
逐个修复反馈问题
关注语法关注产品
是工匠是指挥官

记住:代码是实现细节,产品才是目的。Agent Native 让你从"怎么做"中解放出来,专注于"做什么"。

:::

核心概念

Vibecoding 的核心理念

Vibecoding = CodingAgent(Coding智能体) + Skills(技能)+ Tools(工具)+ ...

CodingAgent 综合信息,制定计划,执行,检查Skills 提供具体任务的方法、步骤、数据、标准

提示词的核心原则

AI 是一个强大的编程助手,它理解技术术语、熟悉各种框架、能快速分析代码。

沟通的关键是:直接、具体、有上下文。

绕弯子

"你是一位资深的全栈工程师,精通各种技术栈..."

→ AI 不需要角色扮演,它知道自己能做什么

直接说事

"检测这个 React 组件的类型安全问题"

→ 一句话讲清楚要做什么

模糊描述

"帮我优化一下代码"

→ AI 不知道优化什么方向

具体需求

"优化登录页面的加载性能:
1. 添加图片懒加载
2. 延迟加载非关键资源
3. 使用 Next.js 的动态导入"

→ 明确优化目标和实现方式

提示词原则

好提示词的特征

提示词对比:欠佳 vs 推荐

类型欠佳推荐
角色扮演"你是一位拥有 20 年经验的全栈工程师,精通 React、Vue、Angular、Node.js、Python..."直接说任务:"实现用户登录功能"
模糊指令"帮我优化一下代码""优化登录页面的加载性能:添加图片懒加载、延迟加载非关键资源"
无边界限制"写一个完整的电商系统""实现用户评论功能,包括:评论表单、列表展示、数据持久化"
强行要求"你必须给出正确答案,不能说不知道""如果不确定,请明确说'我不确定',而不是编造答案"
具体任务"帮我写一个登录功能""实现用户登录功能:用户名+密码登录,使用 Next.js 16 App Router,Drizzle ORM + PostgreSQL,包含表单验证和错误处理"
提供上下文"修复这个 Bug""修复 Bug:文件 app/login/page.tsx,问题:用户登录后没有跳转到首页,预期:跳转到 /dashboard"
指令要具体"添加测试""为 app/login/page.tsx 编写测试用例,框架:Playwright,覆盖场景:密码错误、账号不存在、网络错误"

核心原则

让 AI 反复提问

"我要开发一个任务管理应用。
请反复问我问题,直到你完全理解我的需求。
不要猜测,直接问。"

提示词模板

代码生成模板

"实现 [功能名称]

技术栈:
- Next.js [版本]
- TypeScript
- Drizzle ORM
- [其他技术]

需求:
1. [具体需求1]
2. [具体需求2]
3. [具体需求3]

注意事项:
- 遵循项目现有代码风格
- 不要引入新依赖,除非必要
- 包含错误处理"

Bug 修复模板

"修复 Bug

文件路径: [完整路径]
错误信息:
[完整报错日志]

当前代码:
[相关代码片段]

期望行为: [描述]
实际行为: [描述]

请分析原因并提供修复方案"

标准工作流

AI 的自动化能力

在开始工作流之前,记住:AI 能自动处理很多任务

Claude Code vs 其他 AI 工具

关键区别

特性Claude CodeCursor/WindsurfChatGPT 网页版
项目上下文✅ 自动读取整个项目✅ 自动读取❌ 手动粘贴
命令执行✅ 直接运行 bash✅ 集成终端❌ 复制到终端
文件修改✅ 自动编辑多个文件✅ 多文件编辑⚠️ 逐个复制
版本控制✅ 自动提交✅ Git 集成❌ 手动操作
工作流✅ 标准化流程⚠️ 需要手动❌ 随意对话

为什么 Claude Code 更适合 Vibecoding

  1. CLI 原生:命令行是开发者的原生环境
  2. 自动化程度高:减少手动操作
  3. 标准化流程:探索 → 规划 → 实现 → 验证 → 提交
  4. 完整上下文:理解整个项目结构

AI 的自动化能力

你需要做的

不需要做

权限模式

什么是权限模式

权限模式控制 AI 执行操作前是否需要你确认,平衡效率与安全。

三种权限模式

模式快捷键特点适用场景
DefaultShift+Tab 循环切换自动批准安全操作,询问危险操作日常开发(推荐)
PlanShift+Tab仅允许读取操作代码审查、探索
Accept EditsShift+Tab编辑操作需确认,其他自动高度信任的编辑场景

Default 模式(推荐)

只读操作(读取文件、搜索代码、查看状态、列出文件)自动批准,修改操作(编辑文件、删除文件、运行命令、网络请求、Git push)需要确认。

权限弹窗选项

Plan 模式(代码审查)

仅允许只读操作,所有修改操作都会被阻止。

适用场景

Accept Edits 模式(高效编辑)

编辑操作需要确认,其他操作自动批准。

bash
# 示例行为
"读取配置文件"
"运行测试"
# AI 直接执行(非编辑操作)

"修改函数签名"
"删除这个文件"
# AI 会询问(编辑操作需确认)

适用场景

模式切换

快捷键

Shift+Tab # 在三种模式间循环切换

常用交互命令

在 Claude Code 中,以 / 开头的命令称为斜杠命令,用于快速执行特定操作:

命令功能使用场景
/clear清空对话上下文开始新任务时
/model切换 AI 模型需要更强能力时切换到 Opus
/status查看使用额度和计费检查剩余额度
/config打开配置界面修改设置
/resume恢复最近的会话重启后继续之前的工作
/rewind恢复到上一个检查点代码改错需要回退
/agents管理 Agent创建/查看自定义 Agent
/init生成 CLAUDE.md 模板新项目快速配置
/compact压缩对话上下文上下文太多时精简
/export导出对话记录分享或保存对话
/statusline自定义状态栏显示隐藏/显示状态信息
/vim启用 Vim 键绑定熟悉 Vim 的用户

常用场景

bash
# 开新任务时清空上下文
/clear

# 查看剩余额度
/status

# 切换到更强模型
/model opus

# 恢复到之前的状态
/rewind

CLI 命令与启动选项

基本命令(必读)
命令描述示例
claude启动交互式 REPLclaude
claude "query"使用初始提示启动 REPLclaude "解释这个项目"
claude -p "query"查询后退出(无头模式)claude -p "检查代码类型错误"
claude -c继续上一次对话claude -c
claude -r "id"恢复指定会话claude -r "abc123"
claude --continue加载最近的对话claude --continue
claude --resume显示会话选择器claude --resume
常用启动选项
选项功能示例
-p "query"执行查询后退出claude -p "运行测试"
--model指定模型claude --model opus
--permission-mode设置权限模式claude --permission-mode plan
--add-dir添加工作目录claude --add-dir ../shared
快捷键与输入控制(必读)
快捷键功能上下文
Ctrl+C取消当前输入或生成标准中断
Ctrl+D退出会话EOF 信号
Ctrl+L清除终端屏幕保留对话历史
Ctrl+R反向搜索命令历史搜索以前的命令
Esc+Esc回退代码/对话恢复到之前状态
Tab切换扩展思考开启/关闭思考模式
Shift+Tab切换权限模式循环切换权限模式

多行输入方法

快捷键上下文
\\ + Enter适用于所有终端
Option+Enter (macOS)macOS 默认设置
Shift+Enter配置后可用

快速命令前缀

前缀功能示例
#内存快捷方式,添加到 CLAUDE.md# 添加项目上下文
/斜杠命令/clear
!Bash 模式,直接运行命令! npm test
@文件路径引用@src/app/page.tsx
进阶:高级 CLI 标志

完整 CLI 标志列表

标志描述示例
--add-dir添加额外工作目录claude --add-dir ../apps
--agentsJSON 格式定义 Agentclaude --agents '{...}'
--allowedTools允许的工具列表claude --allowedTools "Read,Bash"
--disallowedTools禁止的工具列表claude --disallowedTools "Edit"
--system-prompt替换整个系统提示claude --system-prompt "..."
--system-prompt-file从文件加载系统提示claude -p --system-prompt-file ./prompt.txt
--append-system-prompt附加到默认提示claude --append-system-prompt "..."
--output-format输出格式(text/json/stream-json)claude -p --output-format json
--input-format输入格式(text/stream-json)claude -p --input-format stream-json
--verbose启用详细日志claude --verbose
--max-turns限制轮数claude -p --max-turns 3
--dangerously-skip-permissions跳过权限提示claude --dangerously-skip-permissions

系统提示标志区别

标志行为模式用例
--system-prompt替换整个默认提示交互 + 打印完全控制行为
--system-prompt-file替换为文件内容仅打印从文件加载
--append-system-prompt附加到默认提示交互 + 打印添加特定指令
进阶:Vim 模式

使用 /vim 启用或通过 /config 永久配置。

模式切换

命令操作来自模式
Esc进入 NORMAL 模式INSERT
i在光标前插入NORMAL
a在光标后插入NORMAL
o在下方打开行NORMAL

导航(NORMAL 模式)

命令操作
h/j/k/l左/下/上/右移动
w下一个单词
b上一个单词
0/$行首/行尾
gg/G输入开始/结束
进阶:后台 Bash 命令

后台运行的工作原理

常见后台命令

按 Ctrl+B 将常规 Bash 调用移到后台。

Bash 模式(! 前缀)

bash
! npm test
! git status
! ls -la
进阶:Agent 配置格式

--agents 标志接受 JSON(通常不需要手动使用,/agents 命令会自动处理):

bash
claude --agents '{
  "code-reviewer": {
    "description": "Expert code reviewer",
    "prompt": "You are a senior code reviewer",
    "tools": ["Read", "Grep", "Glob", "Bash"],
    "model": "sonnet"
  }
}'

必需字段

可选字段

五步工作流

工作流是建议而非强制

VibeCoding 五步工作流是一个推荐的实践模式,适合大多数开发场景。但你可以根据实际情况灵活调整:

核心原则:理解每步的目的后,根据实际情况灵活应用,而非机械执行。

1. 探索项目结构

目的:了解现有代码组织,避免重复工作

bash
# 让 AI 探索项目
"探索这个项目的结构,告诉我:
1. 使用的技术栈
2. 文件组织方式
3. 现有的功能模块
4. 配置文件的作用"

输出示例:

项目使用 Next.js 16 + TypeScript + Drizzle
- app/: 页面和 API
- components/: 可复用组件
- src/db/: 数据库模型

2. 规划实现步骤

目的: 先想清楚再动手,减少返工

bash
"我要添加用户评论功能。
请规划实现步骤,包括:
1. 需要创建哪些文件
2. 需要修改哪些现有文件
3. 数据库 schema 变更
4. 实现顺序"

输出示例:

步骤:
1. 更新 Drizzle schema (添加 Comment 模型)
2. 运行 npx drizzle-kit push
3. 创建 API route (app/api/comments/route.ts)
4. 创建评论组件 (components/CommentForm.tsx)
5. 集成到详情页

3. 编写代码

目的:按计划实现功能

AI 的自动拆分能力

复杂任务会被自动拆解:

bash
# 你只需要说
"实现用户评论功能"

# AI 会自动拆分为:
1. 更新 Drizzle schema
2. 运行数据库迁移
3. 创建 API 端点
4. 编写前端组件
5. 集成到页面
6. 测试验证

你不需要手动指定每个步骤,AI 会:

当然,你也可以分步执行

bash
"按照步骤 1,更新 Drizzle schema"
bash
"按照步骤 2,生成并运行迁移"
bash
"按照步骤 3,创建评论 API"

4. 测试验证

目的:确保功能正常

bash
"测试评论功能:
1. 验证 API 能正常创建评论
2. 验证评论能正确显示
3. 验证错误处理"

5. 提交代码

目的: 建立版本记录

bash
"评论功能开发完成,提交代码"

让 AI 自动维护 Git 记录

AI 开发非常激进,可能为了修一个 Bug 而破坏旧功能。因此需要高频的版本记录来保护成果。

在项目规则或 CLAUDE.md 中添加这条指令:

"每当你完成一个独立功能的开发,或修复完一个 Bug 并验证通过后,请自动运行 git commit 提交代码,并生成一句简洁的中文 commit message。"

从此,开发流程变成:

为什么需要自动提交:

6. 检查点功能

目的: 自动跟踪文件修改,支持快速回退

Claude Code 自动跟踪文件修改,支持快速回退。

自动创建: 每次发送提示时自动创建检查点,无需手动保存

回退方法: 按 Esc+Esc 或运行 /rewind,选择:

进阶:检查点工作原理

自动跟踪

限制

理解 Agent

什么是 Agent

Agent = AI 本身

AI 本身就是一个 Agent,它的工作是:

可以把 Agent 理解为一个任务执行器

与普通 AI 对话的区别

普通 AI 对话Agent
只能聊天能调用工具
被动回答主动决策
单轮交互持续执行

什么是自定义 Agent

自定义 Agent = 你创建的专门 Agent

自定义 Agent 是主 Agent 可以调用的"专门助手"。每个自定义 Agent:

使用自定义 Agent 的优势

优势说明
上下文保留主对话保持简洁,自定义 Agent 独立处理复杂任务
专业分工针对特定任务优化(如代码审查、调试)
并行处理多个 Agent 可同时工作,提高效率
灵活权限可限制 Agent 只能用特定工具,提高安全性

Agent 类型

类型说明示例
官方内置系统自带,自动调用Plan(计划模式专用)
用户自定义你创建的专门 Agentcode-reviewer、debugger
通用 AgentTask 工具调用的通用 Agentgeneral-purpose、Explore

官方内置 Agent:Plan

Plan Agent 是 Claude Code 自带的专门 Agent,专门用于计划模式

工作原理

你:[在计划模式] 帮我重构认证模块
我:让我先研究一下你的认证实现...
[内部调用 Plan Agent 探索认证相关文件]
[Plan Agent 搜索代码库并返回发现]
我:基于研究,这是我的建议方案...

创建自定义 Agent

使用 /agents 命令创建你自己的自定义 Agent。

第0步:在 Claude 内输入 /agents 回车


第一步:选择创建方式 (Creation Method)

这里决定了 Agent 的"大脑"(系统提示词)是如何生成的。

选项含义适用场景
Generate with Claude让 Claude 帮你生成90% 的情况推荐。用自然语言描述需求,Claude 自动转化为专业 Prompt
Manual configuration手动配置高级用户。已有写好的 Prompt,或需要精确控制每个字符

快捷方式:直接对话修改

创建 Agent 后,你可以直接在对话中用 @agent名字 来修改或者使用它:

bash
# 直接告诉 AI 你的需求
"@code-reviewer 以后检查代码时,特别关注安全性问题"

@翻译agent 把这段翻译成英文,但保持技术术语不变

AI 会自动更新 Agent 的配置,无需手动编辑配置文件。


完整流程(第二步至最后一步)

第二步:选择底层模型 (Select Model)

这里决定了 Agent 运行时的"智商"、速度和成本。

选项说明
Sonnet平衡性能和速度
Opus最强能力,成本较高
Haiku最快速度,简单任务
Inherit from parent继承父级模型,跟随主对话切换

第三步:选择工具权限 (Select Tools)

这里决定了 Agent 能干什么(安全管控的关键)。

选项权限适用场景
All tools全权授权需要完整能力的 Agent
Read-only tools只读权限代码审查、文档分析
Edit tools编辑权限修改代码、创建文件
Execution tools执行权限运行终端命令(风险最高)
MCP tools外部工具调用 MCP 服务器连接的服务

第四步:选择存储位置 (Choose Location)

这里决定了 Agent 在哪里可以被看见和使用。

选项含义适用场景
Project (.claude/agents/)项目级私有专门为当前项目服务的 Agent
Personal (~/.claude/agents/)用户级全局通用工具(翻译、发邮件等),随处可用

第五步:选择背景颜色 (Choose background color)

纯视觉设置,用于在终端里区分不同的 Agent。建议按功能分类:


最后一步:确认并保存 (Confirm and save)

按键操作
sEnter保存并创建
e保存后立刻进入编辑器(微调 Prompt)
Esc放弃创建

多 Agent 并行协作

什么是多 Agent 协作

Claude Code 会自动启用多 Agent来并行处理独立任务,每个 Agent 有独立的上下文窗口,专注完成特定工作。

两种方式

  1. 自动并行:我识别到独立任务,自动创建通用 Agent 并行处理
  2. 专门协作:调用你创建的自定义 Agent(如 code-reviewer)

自动启用

Claude Code 根据任务描述主动委派任务,使用 Task 工具创建通用 Agent 并行处理:

Task 工具

当 Claude Code 识别到独立任务时,会自动使用 Task 工具创建通用 Agent 来并行处理。

通用 Agent vs 自定义 Agent

类型调用方式用途
通用 AgentTask 工具自动创建通用任务(探索、搜索、读取文件)
自定义 Agent/agents 命令创建特定领域(代码审查、调试、测试)

特点

多个并行 Agent

关键词效果
"并行"同时执行多个独立任务
"同时"多个 Agent 一起工作
"多 Agent"明确使用多个 Agent 协作

并行能力说明

Claude 的并行能力

在单个响应中,Claude 最多可以并行调用 5-10 个独立工具/子代理

这意味着如果你有多个独立的任务(比如同时读取多个文件、执行多个独立的搜索等),Claude 可以在一条消息里一次性发出所有请求,大大提高效率。

举例 1:并行调研多个技术文档

任务:了解 Prisma、Drizzle、Supabase 三种数据持久化方案

串行方式:
读 Prisma 文档 → 等待 → 读 Drizzle 文档 → 等待 → 读 Supabase 文档 → 等待 → 总结对比

并行方式:
1 个消息 → 同时发起 3 个文档调研请求 → 收集所有信息 → 生成对比报告

举例 2:并行编写多个相关组件

任务:开发用户设置页面的多个功能模块

串行方式:
写头像上传 → 等待 → 写密码修改 → 等待 → 写通知偏好 → 等待 → 集成测试

并行方式:
1 个消息 → 同时启动 3 个 Agent 分别编写 3 个模块 → 收集所有代码 → 统一集成测试

最佳实践

使用示例

bash
# 自动并行 - AI 自动识别独立任务
"同时做这三件事:
1. 编写后端 API(用户认证)
2. 编写前端 UI(登录表单)
3. 编写数据库 schema(User 表)"

# 明确使用多 Agent
"使用多 Agent 并行开发任务模块:
- 后端团队做 CRUD API
- 前端团队做任务列表和表单
- 数据库团队做 Task 模型"
进阶:恢复之前的对话

两个选项

使用示例

bash
# 继续最近的对话
claude --continue

# 使用特定提示继续
claude --continue -p "显示我们的进度"

# 显示对话选择器
claude --resume

# 非交互模式继续
claude --continue -p "再次运行测试"

工作原理

  1. 对话自动保存在本地
  2. 恢复时加载完整消息历史
  3. 工具状态和结果被保留
  4. 上下文完整恢复
进阶:并行会话与 Git Worktrees

使用场景:同时处理多个任务,完全隔离代码

创建 worktree

bash
# 使用新分支创建
git worktree add ../project-feature-a -b feature-a

# 使用现有分支创建
git worktree add ../project-bugfix bugfix-123

在每个 worktree 中运行 AI

bash
cd ../project-feature-a
claude

管理 worktrees

bash
# 列出所有 worktrees
git worktree list

# 删除 worktree
git worktree remove ../project-feature-a

优势

进阶:Unix 风格实用程序用法

添加到验证流程

json
// package.json
{
  "scripts": {
    "lint:claude": "claude -p '你是 linter。检查 vs main 的更改,报告拼写错误。每行一个文件名和行号,第二行描述问题。不返回其他文本。'"
  }
}

管道输入输出

bash
# 管道数据
cat build-error.txt | claude -p '简明解释构建错误的根本原因' > output.txt

# 控制输出格式
cat data.txt | claude -p '总结数据' --output-format text > summary.txt
cat code.py | claude -p '分析代码 bug' --output-format json > analysis.json
cat log.txt | claude -p '解析日志错误' --output-format stream-json

输出格式

人在环路

AI 能够自主完成很多任务,但以下场景建议保持人工审查

场景原因建议做法
生产环境部署影响所有用户AI 生成方案,人工审核后执行
数据库结构变更难以回滚,影响数据先 review schema,再执行迁移
安全相关代码漏洞后果严重代码审查必不可少
支付/财务逻辑涉及资金安全测试+双人验证
性能关键路径影响用户体验性能测试+基准对比
API 兼容性变更影响第三方集成版本管理+通知机制

小白提示

如果你是编程新手,遇到上述场景不确定如何处理

  1. 不要独自承担风险

    • 寻求团队中有经验的人帮助 review
    • 在测试环境先验证
    • 询问 AI 风险点和注意事项
  2. 渐进式信任

    • 从简单任务开始让 AI 自主完成
    • 复杂/高风险任务逐步增加人类审查
    • 建立 checklist 确保关键点都被检查
  3. 寻找帮助的途径

    • 团队 senior 成员
    • 技术社区(Stack Overflow、GitHub Issues)
    • 让 AI 解释风险点:"这样做有什么风险?"
需要人工审查的信号

AI 建议时保持警惕

操作建议

  1. 要求 AI 解释改动原因
  2. 检查受影响的文件列表
  3. 考虑先在分支测试
  4. 必要时寻求第二意见

Hooks 自动化

什么是 Hooks

Hooks = 在特定事件时自动执行的 Shell 命令

当 Claude Code 触发某些事件(如工具调用、用户提交提示)时,可以自动执行你注册的脚本命令。

常见用途

安全提示

Hooks 会以你的用户权限执行 Shell 命令,配置前请理解它在做什么

新手建议

使用 Hooks

运行 /hooks 打开交互式配置界面,这是最推荐的创建方式。

配置流程

  1. 选择 Hook 事件类型:

    • PreToolUse - 工具调用前
    • PostToolUse - 工具调用后
    • PostToolUseFailure - 工具执行失败后
    • Notification - 发送通知时
    • UserPromptSubmit - 用户提交提示时(推荐)
  2. 配置 Hook 行为:

    • 选择触发条件(matcher)
    • 编写执行的 Shell 命令
    • 设置超时时间(默认 60 秒)
  3. 保存并生效

重要说明

常用场景

场景事件触发时机执行命令
自动格式化PostToolUseWrite/Edit 后prettier --write $FILE
保护敏感文件PreToolUse要修改 .env 时拦截并警告
运行测试UserPromptSubmit提交包含"测试"的提示时npm test
添加上下文UserPromptSubmit每次提交提示前自动加载项目信息
进阶:配置文件说明

注意:以下内容仅供参考,一般不需要手动编辑配置文件

配置位置(优先级从高到低):

常用事件对照

事件触发时机典型用途
PreToolUse工具调用前验证、修改输入、权限控制
PostToolUse工具调用后格式化、通知、验证结果
PostToolUseFailure工具执行失败后错误处理、回滚操作
SessionStart会话开始时加载环境、安装依赖
SessionEnd会话结束时清理、记录统计
UserPromptSubmit用户提交提示时验证提示、添加上下文
实用示例

自动格式化

json
{
  "hooks": {
    "PostToolUse": [
      {
        "matcher": "Write|Edit",
        "hooks": [{
          "type": "command",
          "command": "\\"$CLAUDE_PROJECT_DIR\\"/.claude/hooks/format-code.sh"
        }]
      }
    ]
  }
}

除了执行命令(type: "command"),还可以用 LLM 做智能决策(type: "prompt")。

适用场景:需要理解内容后再决定是否放行。

敏感文件保护

python
#!/usr/bin/env python3
# .claude/hooks/protect-files.py

import json, sys

data = json.load(sys.stdin)
path = data.get('tool_input', {}).get('file_path', '')

# 阻止写入敏感文件
if any(p in path for p in ['.env', '.key', '.pem']):
    print("受保护:不允许写入敏感文件", file=sys.stderr)
    sys.exit(2)
进阶:Hook 输入输出格式

输入(通过 stdin 接收 JSON):

json
{
  "session_id": "会话ID",
  "cwd": "当前工作目录",
  "hook_event_name": "事件名称",
  "tool_name": "工具名称",
  "tool_input": {...}
}

输出方式

安全注意事项

安全注意事项

不要把敏感信息发送给 AI

使用环境变量

bash
# .env 文件(不要提交到 Git)
DATABASE_URL="postgresql://..."
OPENAI_API_KEY="sk-..."

# .gitignore
.env

不要让 AI 修改敏感配置文件

核心理念

Workflow 让 AI 开发可预测、可复现

记住工作流五步曲:探索 → 规划 → 执行 → 验证 → 提交(根据情况灵活应用)

灵活应用

关键是有意识地思考每一步是否需要,而不是机械执行。

提示词自检清单

发送提示词前检查:

常见问题

Q1: 提示词越长越好吗?

A: 不是。

提示词的质量在于精确,不在于长度。

简洁但具体的提示词 > 冗长但模糊的提示词

Q2: AI 还是会编造答案怎么办?

A: 加强约束:

"只使用项目已有的依赖。
如果需要新功能,先告诉我。
不要编造不存在的 API。"

Q3: 为什么不直接让 AI 写代码?

A: 直接写容易返工。

探索 → 规划 → 编写,这个流程能让你:

Q4: 工作流会不会太慢?

A: 不会。

看似多了步骤,实际上减少了返工时间。整体效率更高。

对比

Q5: 什么时候该停止对话?

A: 信号:

策略:切换模型或换思路

相关内容