maxwell

Claude Code极简入门

这是一个克劳德代码cli入门教程,旨在帮助开发者快速了解和使用克劳德代码的基本功能与实践要点。

/init

当我们想要了解某个repo(代码库或者其他任何库)或者在写代码后需要让ai了解自己的代码库时,我们在cli上输入claude并且使用/init来初始化一个markdown文件。在claude扫描完所以的代码文件时,它会在CLaude.md中写入自己的summary,同时我们也可以将自己的喜好和代码风格写入其中,claude会依据该文件来作为行动指南。初学者最容易的疑惑的便是不同的claude.md文件的位置问题。

claude.md(# 喜好)

在该文件中可以将用户的喜好写入CLAUDE.md文件中,通过# + 喜好来写入claude.md中。claude行动指南有三种不同的位置:

最后的建议是时刻保持对于CLAUDE.md文件的更新,因为这样claude每次启动会明白某个项目的最新进度,不需要重复造车轮。

memroy

@可以指定相应的文件,原理是把话说清楚,例如fix the link,哪个link?这个link'有什么问题?这些都是可以通过prompt来指明的。

由于每次对话,claude code都会处理所有的上下文,因此对于某些特定任务,它并不是需要这么多上下文以及需要别的上下文,所以需要通过保持上下文clear来使得模型回复准确率高:

  1. /clear 清除所有上下文。
  2. /exit 退出claude,并且清除上下文。
  3. /compact 将上下文压缩成一个summary,删除其他部分。
  4. / esc 两次,来退回到上一次的对话中,适用于这一次的操作有问题,时间回溯

tool and permission

有些内置的工具是需要permission的,有些则不需要。在mac中指令shift + tab可以在本次session中打开不需要询问permission的模式。而在新的session中会回归默认的请求permission模式。

slash command

可以在全局中使用创建.claude/commands来写入常用的prompt,同时也可以在Projects中通构建/project/.claude/commands来写入。总之,仍然是系统与项目的位置的区别。同时claude会自动加载build-in-commands,自己写的command不会自动加入到context window中,因此不需要担心自己创建的指令污染上下文。

但是值得注意的是slash command与skill的区别。我的理解是,slash command是将预设好的prompt直接全部输入进context中,它最大的好处是来解决那些轻量和重复的指令。而skill只是将头部的description输入context中(几十个token),当你需要模型使用skill时,它会进入skill中,这样就相当于把所有在skill.md中的token输入到context中,claude会按照skill.md文件内的要求来使用不同的脚本,而不是全部吸收,再决定使用部分脚本,这样做的好处本质是节省token。skill是解决复杂的多步的指令。总之,slash command是将所有token一下子塞进context,而skill是让claude根据skill.md的规范来按需求选用不同的token,这样下来会节省很多不必要的token。

总结就是slash command适合轻量的简单的重复性任务,而skill适合复杂的多步的任务。突然想到command与skill结合,比如说我在command里面写入使用xxx-skill,这样一来我就将一种简单重复和复杂重复的任务打包起来,我不需要在command中写入很多token,只需要写入用什么skill、用什么工具和如何做,这样claude便会按照需求进入skill中来查看详细的流程如何做,调用哪些脚本。

MCP

简单理解,假设我们在处理某个repo,claude可以很清楚地理解这个repo并且按照claude文件进行操作,但是如果claude需要连接外部数据时,例如了解该repo的最新的改动时,mcp则是claude用作连接外部资源的工具。同时mcp还提供了函数供claude使用。三种存储路径:

  1. 存在用户的上,所有项目均可以使用。~/users/.claude.json
  2. 存在项目的local中,只有自己可以使用,不会被上传。/project/.mcp.json
  3. 存在项目中,即可以上传该mcp到github上。

subagents

子代理功能,非常强大。我的理解是每一个subagent是一个专门的员工。一个企业会招募不同的员工,有的员工只负责前台,有的员工负责后台,有的员工负责写代码。如果直接让claud做大任务时,它很容易偏移预定轨迹,容易迷失,最好的做法是将大任务拆成小任务,给每一个小任务分配一个subagent做专门的事情,即招聘一些专门的员工。我们可以通过输入不同的专属的system prompt指导subagent做专门的事情,同时也可以给它们分配不同的工具。

claude非常擅长给子代理安排任务,相当于它作为agent,指挥许多不同的子代理,同时我们作为boss,指挥代理和子代理,来保证它们不偏离我们预期的想法。我们可以通过/agents设置不同子代理,但缺点是在claude中我们只能使用anthropic自家的模型来作为子代理,这需要订阅pro或者max。或许对于需求量不大的我们可以转移到opencode中,它支持不同的模型。

mental model

  1. 自己检查代码并了解清楚,ai不可能一定是对的。
  2. 维持context,因为context越少越清晰,模型的准确率和表现越好。
  3. 不要指望ai能够做全部事情,因为有些难题是需要自己学习的。

最后我写的这些只不过是很简单的入门快捷指南,它完全来自于参考中的视频,视频讲解的更加详细。

References

#blog