从终端玩具到开发利器:我用了一年Claude Code,踩坑无数后总结的终极真香指南,文章基于一年实战经验,系统讲解如何通过配置、权限、子智能体、Hooks等机制,将Claude Code从简单代码工具升级为可控工程系统,核心在于规则设计与上下文管理。
我的原则是,一个CLAUDE.md文件,最好短小精悍,控制在200行以内。官方文档说文件会全部加载,但经验告诉我,文件越短,它执行得越好。文件一长,不仅浪费宝贵的“上下文”空间,Claude还会“选择性失聪”,你说你的,它干它的。那多出来的内容放哪儿?放.claude/rules/里,或者直接用“@”引用文件。记住,CLAUDE.md越长,Claude越不鸟你。200行是我给自己定的天花板,不是官方硬性规定。
那CLAUDE.md里到底该写啥?写那些Claude光看代码看不出来的“为什么”。比如架构决策、历史遗留的教训、老板定的奇怪业务限制、代码风格偏好。千万别写啥API文档、哪个文件是干啥的,这些它自己看代码就能明白。我的全局CLAUDE.md文件,就只有短短4行,但就是这4行,救了我无数次,让我少说了几百句“不不不,我不是这个意思”:
GPT plus 代充 只需 145
- commit messages use conventional commits
- explain your plan before making changes, wait for my confirmation
- prefer simple solutions, no over-engineering
- don’t refactor files I didn’t mention
翻译过来就是:提交信息要规范;动手前先给个计划,等我点头;能用简单方法就别整那些花里胡哨的;我没让你动的文件,你就当它们不存在。
# Ship Faster
Architecture
- Next.js 16 App Router + Supabase + Stripe + Vercel
Off-limits
- Don't modify existing files in supabase/migrations/
- Don't delete .env.local
- Run stripe listen before changing payment webhooks
Current focus
- Refactoring onboarding flow, goal: fewer steps from signup to first payment
更高级的玩法是,把规则拆分到.claude/rules/文件夹里,每个文件开头用YAML格式写上它管哪部分代码。比如下面这个规则,只有当Claude动到src/api/目录下的文件时才会生效,既精准,又省了其他地方的空间:
GPT plus 代充 只需 145---
paths: ["src/api//*.ts", "src/routes//*.ts"]
- All API handlers must include input validation
- Error responses use { error: string, code: number } format
- Every new endpoint needs an integration test in tests/api/
这就像你给家里的不同区域贴标签:厨房不能打篮球,卧室不能吃火锅。规则越清晰,AI越不会乱来。Claude Code加载指令的层级有点绕,但大致优先级是:企业管理指令 > 项目指令(./CLAUDE.md或.claude/CLAUDE.md)> 用户全局指令(~/.claude/CLAUDE.md)> 文件夹规则(.claude/rules/和~/.claude/rules/)。我的做法很简单:全局文件管个人习惯,项目文件管项目事实,规则文件夹按目录分权限。三层各司其职,清清爽爽,绝不混在一起。
我常用的有三个模板:探索者(只读,快速搜代码)、规划者(只读,做研究分析)、执行者(全能,干复杂活)。自定义子智能体放在.claude/agents/文件夹里,比如下面这个代码审查员:
---
name: code-reviewer
description: Code review agent, read-only
tools: Read, Grep, Glob, Bash
model: sonnet
You are a code reviewer. Check for: security vulnerabilities, performance issues, maintainability.
Only report problems. Don't modify code, don't suggest refactors.
注意!子智能体会默认继承父会话的工具权限。如果你想让它真的“只读”,光在描述里写“只读”是没用的,必须在tools里明确只给它读的权限,否则它拿到大砍刀就乱砍了。
GPT plus 代充 只需 145Goal: Reduce getUserData() response time from 800ms to under 200ms
Constraints: Don't change the interface signature, don't add new dependencies, only touch this one function
Context: @src/services/user.ts#L45-L89
Verification: user.test.ts must all pass
Don't: Don't change the database schema, don't add a caching layer
有一次,我脑子一热,让Claude Code直接重构一个600行的路由文件。它干到一半,引入了循环依赖,然后它自作主张去修循环依赖,结果越修越乱,整个项目都开始报错。我气得按下了Ctrl+C,结果不仅任务没完成,之前半小时的上下文也全丢了。那次之后,但凡遇到复杂的任务,我一定先用“计划模式”。进入计划模式有三种方式:一是在启动时加参数claude --permission-mode plan;二是在会话中狂按Shift+Tab直到屏幕上出现“Plan Mode”;三是直接跟它说人话:“先别改代码,给我一个实现计划”。
在计划模式下,Claude只输出计划,不执行任何操作。这里最关键的一步是:按下Ctrl+G,它会用你的编辑器打开这个计划文本。你可以像修改自己的作业一样,删除不必要的步骤,增加你想到的约束条件,然后确认,Claude再执行更新后的计划。修改一个计划只需要一句话,而修改已经写错的代码,可能要花十倍的时间。
有一次,我正干得起劲,随手敲了个/context看了一眼上下文使用率,好家伙,78%!然后Claude就开始抽风,反复提出我们刚刚已经否决的方案,就像得了失忆症一样。那一刻我明白,“/compact”这个命令该成为我的日常习惯了。Claude Code支持非常大的上下文窗口,但一个塞得满满的上下文,并不会因为超过上限而“崩溃”,它只会因为“注意力涣散”而失效,质量急剧下降。我有五个管理上下文的策略:
1. /clear:把一切都清掉,适合在切换完全不同任务时用。
2. /compact [focus]:压缩历史,但保留关键点。适合在继续同一个任务时用。比如可以这样写:/compact keep: current task goal, completed steps, pending issues,告诉它在压缩时,要留住哪些东西。
3. /context:随时查看上下文使用情况,心里有数。
4. 子智能体:把不同模块的任务交给不同的子智能体,别在主会话里“大锅乱炖”。
5. 压缩保留指令:在CLAUDE.md里告诉它,压缩时什么必须留下。
# Compression instructions
When compressing context, always keep:
- Complete list of modified files
- Test commands and results
- Key architecture decisions
Claude Code在上下文管理上其实有两套东西:一套是CLAUDE.md文件,另一套是自动记忆。在我的用法里,项目指令是用来共享项目事实和团队标准的,用户指令(~/.claude/CLAUDE.md)则是我个人偏好,跟着我走遍所有项目。自动记忆存在~/.claude/projects/
里,会话开始时,MEMORY.md的前200行会自动加载。你可以用/memory命令来查看加载了哪些文件、管理自动记忆。总之,学会给上下文“断舍离”,AI才能保持清醒的头脑。
有一天,Claude在修bug的时候,顺手把一个“看起来没用”的配置文件给删了。那个文件,是生产环境的密钥引用入口。我那个气啊,恨不得顺着网线过去给它一拳。那次之后,我花了半小时,仔仔细细地配置了.claude/settings.json,给它画了个“安全区”:
GPT plus 代充 只需 145{
"permissions": {
"deny": [
"Bash(rm -rf*)",
"Bash(*--force*)",
"Edit(.env*)",
"Edit(*.pem)"
],
"ask": [
"Bash(git push*)",
"Bash(npm publish*)",
"Edit(src/config/*)"
],
"allow": [
"Bash(npm run*)",
"Bash(git commit*)",
"Bash(git add*)",
"Read()"
]
}
}
{
"hooks": {
"PostToolUse": [{
"matcher": "Edit|Write",
"hooks": [{"type": "command", "command": "jq -r '.tool_input.file_path' | xargs npx prettier --write"}]
}]
}
}
GPT plus 代充 只需 145class=
"displaycode">
- 保护关键文件:禁止修改生产环境配置。这个hook在“PreToolUse”事件触发,用脚本检查,如果发现要改的是敏感文件,就退出码2,直接拦截掉。
{
"hooks": {
"PreToolUse": [{
"matcher": "Edit|Write",
"hooks": [{"type": "command", "command": ".claude/hooks/protect-files.sh"}]
}]
}
}
{
"hooks": {
"SessionStart": [{
"matcher": "compact",
"hooks": [{"type": "command", "command": "echo 'Use Bun, not npm. Run bun test before committing.'"}]
}]
}
}
这个部分属于“进阶实验”,比较硬核,如果你只想用好Hooks,前面那章就够了。我这个逆向玩法,核心思想是让AI从我的修改里提取规则。流程是这样的:AI写一版草稿 -> 我把它改成满意的版本 -> 用observe.py记录这两个版本 -> improve.py对比它们,找出“我改了啥” -> 提取出规则,按置信度P0/P1/P2排序 -> 人工审查后,P0规则写回SKILL.md。下面这个python脚本干的事,就是记录AI的初稿和我的终稿:
GPT plus 代充 只需 145# observe.py: record AI draft and my final version
python3 observe.py record-original draft.md
# ...I make my edits...
python3 observe.py record-final final.md
然后improve.py就能自动对比,提取出修改模式,生成规则候选:
# improve.py: extract rules from diff
python3 improve.py auto --skill .
# Auto-compare, extract change patterns, generate rule candidates
# P0 (appeared 5+ times) pushed for human confirmation before writing
# P0 low-frequency, archived
# P2 logged only
GPT plus 代充 只需 1450 23 * * * python3 ~/.ai-core/skills/scripts/improve.py auto --skill .
# Create an experiment worktree
claude --worktree experiment/refactor-auth
# Or manually
git worktree add ../project-experiment feature/new-auth
然后,Claude就可以在这个实验目录里为所欲为,主线目录纹丝不动。如果实验失败了,执行git worktree remove,成本几乎为零。创建一个工作树只需要几秒钟,而一个失败的实验可能浪费你几小时。关于Git,我还有几条铁律:绝对不让Claude自动推送。它可以提交,但推送必须我确认,因为一旦推送到远端,想回滚就贵了。提交要频繁,每完成一个原子步骤就提交一次,这样万一出问题,可以用/rewind回到任意检查点。对破坏性操作保持警惕,比如git reset --hard、git push --force、rm -rf,批准前想清楚后果,这些操作没有后悔药。从PR里恢复上下文也很方便,用claude --from-pr 123就能自动加载某个PR的改动和讨论。总之,所有探索性任务、架构重构、拿不准的大改动,我都会扔进工作树里,给自己留条后路。
Claude Code默认就会做一定程度的推理,但思考的深度不应该总是拉到最满。对简单任务也用高深度思考,纯属浪费令牌,而且那个推理过程本身也会占用上下文,影响后续对话。有一次,我在设计一个复杂的权限系统,涉及多个角色、继承和动态规则。默认的思考深度产出的计划有明显漏洞。我切换到/effort high之后,它思考了将近一分钟,然后给了一个完全不同的架构,覆盖了我没想到的各种边界情况。调整思考深度很简单:
GPT plus 代充 只需 145# Adjust reasoning depth
/effort high # deeper reasoning
/effort low # simple tasks, save tokens
据我所知,官方调整推理深度的方式就是/effort命令。有时候,输入ultrathink也能让它在当前回合更深入思考,但我把它当成一个非正式的提示,不能保证每次都灵验。我的原则是:只有当改动涉及超过3个文件时,才提高思考深度。单文件修改,默认深度就够用了。架构设计、复杂bug诊断、需要多约束推理的任务,这些才值得多花点令牌,让AI多“烧烧脑”。
claude mcp add supabase -- npx @supabase/mcp-server-supabase --project-ref $REF
claude mcp add stripe -- node /tools/stripe-mcp/index.js
.mcp.json的配置是这样的:
GPT plus 代充 只需 145{
"mcpServers": {
"supabase": {
"command": "npx",
"args": ["@supabase/mcp-server-supabase", "--project-ref", "xxxxx"]
},
"stripe": {
"command": "node",
"args": ["/tools/stripe-mcp/index.js"]
}
}
}
连接上Supabase和Stripe之后,我只需要在对话里说“查一下最近7天的失败支付记录”,Claude就能直接去Stripe里查询,返回结果并分析。以前,我还得写个一次性脚本才能干这事。现在,这就成了一句日常对话。你可以用/mcp命令来管理服务器连接,禁用那些暂时不用的。我把每个服务器带来的上下文开销,当成一个实用的经验法则,而不是某个客户端一定会显示的数据。
# Reviewer session instructions
You are a code reviewer. Does this code have:
1. Hallucinated APIs (methods that don't exist)
2. Race conditions
3. Changes outside the task scope
Only report problems. Don't suggest fixes.
@src/auth/service.ts
这个部分,适合那些已经不满足于只用一种AI工具的高级玩家。如果你只用一种工具,也不跑自动化服务任务,那这章对你来说价值不大,可以直接跳到结尾。我遇到的问题是:Claude Code和Codex各自维护自己的规则。我在这边更新了提示词,忘了同步到那边,三周后两个系统的代码风格和决策逻辑就开始打架。我学到的教训是:唯一需要“单一数据源”的是知识层。我把~/.ai-core作为唯一的知识源头,里面只放共享的行为规则、共享的命令、共享的技能。每个工具从那里生成自己的配置。我现在是三系统分工:
- OpenClaw:负责调度、通知、Telegram交互。
- Codex:负责大规模重编码、跨文件重构。
- Claude Code:负责快速编辑、探索、交互式调试。
GPT plus 代充 只需 145Keyboard Shortcuts
Ctrl+C 取消当前输入或生成
Ctrl+G 在默认文本编辑器中打开
Ctrl+V 从剪贴板粘贴图片
Esc + Esc 回退或总结
Option+T / Alt+T 切换扩展思考模式
Shift+Tab 循环切换权限模式
斜杠命令
/compact [focus] 压缩对话,可附带聚焦指令
/clear 清除对话历史,释放上下文空间
/context 可视化显示当前上下文使用情况
/memory 编辑 CLAUDE.md 记忆文件,管理自动记忆
/rewind 回退到之前的检查点,或从选中的消息开始总结
/resume 恢复之前的对话
/effort [level] 设置模型思考深度级别
/init 用 CLAUDE.md 指南初始化项目
/mcp 管理 MCP 服务器连接和 OAuth 认证
/cost 显示令牌使用统计
对了,/rewind这个命令救了我无数次,如果你发现AI开始犯傻,直接回滚一步,重新下指令。/init在新项目里特别好用,它会分析你的代码库,自动生成一个CLAUDE.md草稿。多数教程都在教你怎么写更好的提示词,但我觉得,真正的杠杆作用,在于那些没人会去读的文件——CLAUDE.md、settings.json、hooks。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/248947.html