“工欲善其事,必先利其器”
AI编程工具中地表最强非Claude Code莫属,但是对于我这个学生党来说Claude的价格十分昂贵。于是我使用Claude Code Router
搭配魔搭社区的Qewn3-Coder
模型开始邪修之路,毕竟白嫖的永远是最香的。
但是我属于是开箱即用的懒人,懒得探索Claude Code的最佳体验方式,而Claude Code常常“You are absloutely right!”然后继续重复上一次的错误结果,所以我使用Claude Code的方式一直是和它吵架。甚至我见到有的邪修者,在CLAUdE.md
中加入了Claude Code八荣八耻
吵架式交流虽然能用,但是一直有一个问题困扰着我,魔搭社区的模型调用一天仅有500次(现在好像又降低到200次了),而Claude Code实现需求非常消耗次数(大概提问一次消耗20次调用),和Claude Code吵一会它就罢工了(429上限了),这体验感非常不好。
因此,我需要找到高效率使用Claude Code的方式。恰巧,我发现了DeepLearning.AI联合Anthropics打造的Claude Code最佳实践教程https://www.deeplearning.ai/short-courses/claude-code-a-highly-agentic-coding-assistant
这份食用指南时长仅一个半小时,却展现了非常多能够根据Claude Code设计思路的食用小tips
本文仅为教程中的一小部分我认为比较有效的小tips总结,教程中有重构jupyter notebook的示例以及将figma设计稿转换为实际实现的示例没有加入到本文中。
Planning mode(计划模式)
Claude建议始终使用计划模式完成任务,shift+ tab
激活计划模式
计划模式让Claude Code创建一个详细的计划,列出需要做哪些改变。
Think a lot
启用Claude Code 拓展思维: 在提示词末尾加入Think a lot
,这将让Claude Code分配更多的token朝着思考模式进行
复杂任务
示例prompt:
Refactor @backend/ai_generator.py to support sequential tool calling where Claude can make up to 2 tool call in separate API rounds.
Current behavior:
- Claude makes 1 tool call -> tools are removed from API params -> final response
- If Claude wants another tool call after seeing results, it can't (gets empty response)
Desired behavior:
- Each tool call should be a sparater API reqquest where Claude can reason about previous results
- Support for complex queries requiring multiple searches for comparisons, multi-part questions, or when information from different courses/lessons is needed
Example flow:
1. User: "Search for a course that discusses the same topic ad lesson 4 of course X"
2. Claude: get course outline for course X -> gets title of lesson 4
3. Claude: uses the title to search for a course that discusses the same topic -> returns course information
4. Claude: provides complete answer
Requirements:
- Maximun 2 sequential rounds per user query
- Terminate when: (a) 2 rounds completed, (b) Claude's response has no tool_use blocks, or (c) tool call fails
- Preserve conversation context between rounds
- Handle tool execution errors gracefully
Notes:
- update the system prompt in @backend/ai_generator.py
- upate the test @backend/tests/test_ai_generator.py
- Write tests that verify the external behavior (API calls made, tools executed, results returned) rather than internal state details.
Use two parallel subagents to brainstorm possible plans. Do not implement any code.
在这段示例prompt中,清晰地提供了当前的行为以及期望的行为,提供了示例流程,还提供了明确的范围边界(需求终止条件),消除了需求歧义,让Claude Code 更加明确需要做什么,还要求Claude Code编写测试进行验证
同时,这个需求较为复杂,我们并不完全确定最优的实现方案是什么,因此在prompt中使用Use two parallel subagents to brainstorm possible plans. Do not implement any code.
要求使用两个平行的子Agent来集思广益,同时要求仅给出方案而不是直接实现,审查方案是否符合我们的需求后再进行实现,让Claude Code 变得更加可控
根据示例prompt,可以提取出以下prompt
- 重构功能版
重构 [文件路径] 以支持 [核心功能描述]。
当前行为:
- [当前系统的具体行为步骤]
- [当前限制或问题]
期望行为:
- [期望的新行为描述]
- [解决的具体问题]
示例流程:
1. [用户操作]: "[具体输入示例]"
2. [系统响应]: [第一步处理] -> [第一步结果]
3. [系统响应]: [第二步处理] -> [第二步结果]
4. [系统响应]: [最终输出描述]
需求约束:
- [具体的技术限制,如最大次数、超时等]
- 终止条件:(a) [条件1], (b) [条件2], (c) [条件3]
- [其他关键约束]
- [错误处理要求]
注意事项:
- 更新 [相关文件1]
- 更新 [相关文件2]
- 编写测试验证 [外部行为描述] 而非内部状态细节
使用两个并行子代理来头脑风暴可能的方案。不要实现任何代码。
- 实现需求版
实现 [功能名称] 用于 [核心业务场景]。
需求:
- [核心需求1]
- [核心需求2]
- [核心需求3]
技术规格:
- 输入:[参数格式]
- 输出:[返回格式]
- 约束:[关键限制,如性能、安全等]
示例流程:
1. [输入示例] -> [处理步骤] -> [输出结果]
2. [边缘情况] -> [错误处理] -> [错误结果]
3. [复杂场景] -> [多步处理] -> [复杂输出]
实现要求:
- 创建 [关键文件路径]
- 集成到 [现有组件]
- 测试覆盖 [外部行为验证]
验收标准:
- [功能正确性]
- [性能达标]
- [错误处理完善]
使用两个并行子代理设计技术方案。只提供方案设计,不实现代码。
Claude Code commands
在Claude Code 中有非常多好用的命令,例如/permssions
进行管理相关功能的权限(如MCP Service
),也支持自定义commands
当你希望Claude Code 执行的每一任务都遵循你的规则时,使用CLAUDE.md
,但是只是特定的指令,并且有时候用不上,这时可以使用自定义命令
自定义方式:在.claude
文件夹下创建commands
文件夹,并在文件夹下创建相应的md文件
,文件名即命令语句,创建完毕后需重启Claude Code 如果想要给自定义命令传递参数,在md文件中使用 $ARGUMENTS
变量进行引用,下面是一个示例:
You will be implementing a new feature in this codebase
$ARGUMENTS
IMPORTANT: Only do this for front-end features,
Once this feature is built, make sure to write the changes you made to file called frontend-changes.md
Do not ask for permissions to modify this file, assume you can always do it.
Git Tree
当使用多个终端开启Claude Code的时候,会出现同时编辑一个文件而导致冲突的情况,此时使用Git进行管理可以避免这个情况出现
Git中的worktrees能够创建代码库的副本独立运行,我们可以使用Claude Code进行管理worktrees,最后合并各分支即可
步骤:
- mkdir .trees
- git worktree add .trees/ui_feature
- git worktree add .trees/testing_feature
- git worktree add .trees/quality_feature
- git branch -a查看分支
- 为.trees文件夹下的每一个worktree准备一个终端并启动Claude Code
- 使用git merge进行合并
- git worktree remove --force .tree/ui_feature删除worktree
- git branch -D ui_feature testing_feature quality_feature删除相应分支
但是多开一时爽,合并悔断肠,我认为这种多开的方式比较适合开启了无需询问权限完成不同类型的任务的情况
Claude Code会话管理
由于Claude Code是基于命令行的工具,以及我一直以来的开箱即用,我一直不知道Claude Code怎么实现查看之前的会话并切换
实际上切换非常简单,使用claude --resume
即可查看之前的对话并根据总结选择对话进行切换
总结
磨刀不误砍柴工: 在使用Claude Code时,尽量不用“吵架式”交流,而是用“产品经理式”交流。Claude Code虽然聪明,但它吃的是规则和上下文,不是情绪和模糊指令。一个清晰的prompt能够省下接下来可能十几次追问,一份合理的需求文档或许能够节省一下午吵架。