Skip to content

Claude Code 介绍与使用

官方文档

https://code.claude.com/docs/zh-CN/overview

安装配置

(1)相关资料

CSDN 安装教程:https://blog.csdn.net/weixin_41793160/article/details/149313024

马克 ClaudeCode 使用教程:https://www.bilibili.com/video/BV14rzQB9EJj/

(2)安装 ClaudeCode

bash
# 电脑要求有 node 环境,没有则需要装 nodejs,首先执行环境检查
node -v
npm -v

# 安装 ClaudeCode
npm uninstall -g @anthropic-ai/claude-code # 卸载已安装的 Claude Code(未安装请跳过)
npm install -g @anthropic-ai/claude-code@latest # 安装官方原版包
npm list -g @anthropic-ai/claude-code # 查看 ClaudeCode 安装位置
npm update -g @anthropic-ai/claude-code # 更新 ClaudeCode 到最新版本

# 内置命令更新 Claude Code,
claude update

# 安装验证
claude -v

# 启动 Claude Code
claude

# 启动 Claude Code(指定命令无需确认,只对当前会话生效)
claude --dangerously-skip-permissions

# 恢复到最近一次对话
claude -c

# 从列表中选一个历史会话恢复
claude --resume

(3)配置 ClaudeCode

ANTHROPIC_BASE_URL:调用地址

ANTHROPIC_API_KEY:使用官方模型时配置

ANTHROPIC_AUTH_TOKEN:使用中转站 / 第三方时配置

ANTHROPIC_MODEL:默认使用模型

ANTHROPIC_DEFAULT_HAIKU_MODEL: HAIKU 占位模型,低

ANTHROPIC_DEFAULT_SONNET_MODEL: SONNET 占位模型,中

ANTHROPIC_DEFAULT_OPUS_MODEL:OPUS 占位模型,高

CLAUDE_CODE_EFFORT_LEVEL:模型默认思考强度

json
{
  "env": {
    "ANTHROPIC_BASE_URL": "",
    "ANTHROPIC_AUTH_TOKEN": "",
    "ANTHROPIC_DEFAULT_SONNET_MODEL": "gpt-5.6-sol",
    "ANTHROPIC_DEFAULT_SONNET_MODEL_NAME": "gpt-5.6-sol",
    "ANTHROPIC_DEFAULT_OPUS_MODEL": "gpt-5.6-terra",
    "ANTHROPIC_DEFAULT_OPUS_MODEL_NAME": "gpt-5.6-terra",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL": "gpt-5.6-luna",
    "ANTHROPIC_DEFAULT_HAIKU_MODEL_NAME": "gpt-5.6-luna",
    "CLAUDE_CODE_SUBAGENT_MODEL": "gpt-5.6-sol",
    "ANTHROPIC_MODEL": "gpt-5.6-sol"
  },
  "permissions": {
    "defaultMode": "bypassPermissions"
  },
  "skipDangerousModePermissionPrompt": true,
  "effortLevel": "medium",
  "autoCompactEnabled": true,
  "theme": "dark"
}

(4)配置默认文本编辑器,使用 ctrl + g 可以打开编辑器编辑对话,这里配置成 vscode

bash
# 查看 vscode 的路径(前提是配置了环境变量)
where code

# 配置打开的编辑器(vscode)
setx EDITOR "code --wait"
setx VISUAL "code --wait"

# 自定义
setx EDITOR "\"文件路径\" --wait"
setx VISUAL "\"文件路径\" --wait"

# 验证配置
echo %EDITOR%
echo %VISUAL%

(5)安装 CC-Switch

Github 官网:https://github.com/farion1231/cc-switch

一个用于统一管理 Claude Code、Codex、Gemini CLI、OpenCode、OpenClaw 等 AI 编程 CLI 的跨平台桌面工具

常用命令

ClaudeCode 工程化中的核心内容:Claude.md、Skills、Subagents、MCP、Hooks、Plugins

bash
右键 # 粘贴

ctrl + shift + - # 撤销

alt + v # 粘贴图片

/powerup # ClaudeCode 官方教学,v2.1.90 版本(2026 年 4 月 1 日发布)上限新命令

/model # 切换模型

/effort # 切换思考程度, max 是「一次性」的,会话结束就自动失效

shift + tab # 切换模式:默认模式 / 自动模式 / 计划模式

/plan # 计划模式,写代码之前先出方案,省得返工,提示词要写清技术栈 + 功能 + 要求

ctrl + g # 多行输入(打开记事本 / vscode 编辑),可自定义配置打开的编辑器

@ 文件名 # 指定文件操作

/init # 依据项目创建 claude.md 文件

/memory # 编辑 claude.md 文件

/review # 代码审查

/skills # 技能管理

/plungin # 插件管理,安装内容后执行 /reload-plugin 加载生效

/mcp # MCP 工具管理

/hooks # 钩子操作

# 子代理就是 Claude 的「分身」,提前创建好,用的时候给它一个独立任务,它用全新的视角帮你干活,不受主对话干扰
/agents # 智能体管理及创建 subagent,新版移除通过终端创建,官方建议直接通过 md 方式创建

! # 执行 bash 命令

/resume # 查看历史会话

/rewind 双击esc # 回滚(无法回滚已执行的文件修改、删除、命令操作及环境变化,只能依靠 Git 等版本控制工具恢复)

ctrl + b # 将任务置于后台运行
& # 命令末尾加 & 就能让任务在后台跑,不用傻等
/tasks # 查看所有后台任务状态

# 养成看 /context 的习惯,占用超过 70% 就 /compact 一次。只有任务完全不相关时才用 /clear
/context # 查看上下文占用情况
/compact # 压缩上下文
/clear # 清空上下文

/status # 查看当前状态信息

/config # 查看全局配置

/remote-control # 把本地会话「暴露」给网页
/teleport # 把网页上的会话「传送」到终端

ClAUDE.md

很多人喜欢在 CLAUDE.md 里堆一大堆东西,结果文件太长反而让 Claude 抓不住重点,工作效率反而下降,比如下面这些内容就不应该写进 CLAUDE.md

(1)详细的 API 文档(太长,占上下文,应该用 @ 引用具体文件)

(2)每次都变的临时需求(用 /compact 或 /clear 就行)

(3)过于泛泛的描述(比如「写好代码」「好的代码」这种 Claude 本来就知道的事)

CLAUDE.md 不是越长越好,太长则会占用太多的上下文,而是越精准越好,一份好的 CLAUDE.md 应该包含这几部分

(1)项目简介:一句话说清楚项目是做什么的

(2)技术栈:用了哪些框架和工具,让 Claude 不会乱选技术

(3)代码规范:你的编码偏好,让 Claude 产出的代码风格统一

(4)项目结构(可选):目录的组织方式,帮助 Claude 更快地找到文件

CLAUDE.md 是一个活文档,随着项目开发,你应该定期更新里面的内容,比如新功能完成了就加到「已完成功能」列表里,技术栈换了就修改对应的部分

andrej-karpathy-skills:https://github.com/multica-ai/andrej-karpathy-skills

# CLAUDE.md

Behavioral guidelines to reduce common LLM coding mistakes. Merge with project-specific instructions as needed.

**Tradeoff:** These guidelines bias toward caution over speed. For trivial tasks, use judgment.

## 1. Think Before Coding

**Don't assume. Don't hide confusion. Surface tradeoffs.**

Before implementing:
- State your assumptions explicitly. If uncertain, ask.
- If multiple interpretations exist, present them - don't pick silently.
- If a simpler approach exists, say so. Push back when warranted.
- If something is unclear, stop. Name what's confusing. Ask.

## 2. Simplicity First

**Minimum code that solves the problem. Nothing speculative.**

- No features beyond what was asked.
- No abstractions for single-use code.
- No "flexibility" or "configurability" that wasn't requested.
- No error handling for impossible scenarios.
- If you write 200 lines and it could be 50, rewrite it.

Ask yourself: "Would a senior engineer say this is overcomplicated?" If yes, simplify.

## 3. Surgical Changes

**Touch only what you must. Clean up only your own mess.**

When editing existing code:
- Don't "improve" adjacent code, comments, or formatting.
- Don't refactor things that aren't broken.
- Match existing style, even if you'd do it differently.
- If you notice unrelated dead code, mention it - don't delete it.

When your changes create orphans:
- Remove imports/variables/functions that YOUR changes made unused.
- Don't remove pre-existing dead code unless asked.

The test: Every changed line should trace directly to the user's request.

## 4. Goal-Driven Execution

**Define success criteria. Loop until verified.**

Transform tasks into verifiable goals:
- "Add validation" → "Write tests for invalid inputs, then make them pass"
- "Fix the bug" → "Write a test that reproduces it, then make it pass"
- "Refactor X" → "Ensure tests pass before and after"

For multi-step tasks, state a brief plan:

1. [Step] → verify: [check]
2. [Step] → verify: [check]
3. [Step] → verify: [check]

Strong success criteria let you loop independently. Weak criteria ("make it work") require constant clarification.

---

**These guidelines are working if:** fewer unnecessary changes in diffs, fewer rewrites due to overcomplication, and clarifying questions come before implementation rather than after mistakes.

Agent

agency-agents:https://github.com/msitarzewski/agency-agents

中文版本:https://github.com/jnMetaCode/agency-agents-zh

skill

基本介绍

(1)什么是 Skill?

Skill 就像是给 AI 定制的一份 “标准作业程序 (SOP)” 。它把解决特定问题所需的 背景设定 (Prompt) 、 执行步骤 和 所需的工具 (MCP) ,打包成了一个干净利落的代码文件。

(2)完整的 skill 包含哪些部分?

SKILL.md:Skill 的核心定义文件,描述 Skill 的用途、适用场景、执行规则、工作流程,Claude Code 会通过该文件理解什么时候调用该 Skill,以及如何执行任务

Scripts(脚本):用于封装可重复执行的自动化操作,可以包含 Python、Shell 等脚本,负责处理复杂计算、文件处理、数据转换等任务

References(参考资料):存放 Skill 执行过程中需要参考的文档、规范、示例等内容,用于补充上下文信息,帮助 Claude 更准确完成任务

Assets(资源文件):存放模板、图片、配置文件、示例代码等静态资源,在生成内容或执行任务时直接复用

Templates(模板):提供固定格式的输出模板,用于保证生成内容的一致性,例如报告、文档、代码结构等

(3)skill 和 prompt 有什么关系?

从关系上看:包含与被包含。 Prompt 是 Skill 的“灵魂核心”,但不是全部。一个完整的 Skill = Prompt(指令与流程) + 挂载的工具列表(MCP) + 触发条件 + 上下文状态

从能力上看:动嘴与动手。 Prompt 只能控制大模型的“嘴”。你写一万字的 Prompt 教它怎么查数据库,它也只能给你输出一段怎么查的文本。而 Skill 给 AI 赋予了“手”。通过配置文件里绑定的 tools ,AI 在阅读 Prompt 的同时,是真的能去后台调用代码、拉取数据的

从工程上看:临时工与标准资产。 你在对话框里敲的 Prompt 是“临时工”,上下文一长它就忘了,下次还得重敲。而 Skill 是一份写在项目目录里的配置文件(通常是 YAML 或 Markdown),它是可以提交到 Git 仓库里的代码资产 。它把个人经验变成了整个团队都可以直接复用的标准作业程序(SOP)

安装使用

anthropics 官方 skill:https://github.com/anthropics/skills

bash
npx skills add anthropics/skills -g # 全局安装官方 skill

npx superpowers-zh -g # 全局安装中文增强版 superpowers

Prompt 编写原则

User Prompt

(1)目标明确:要做什么?分析、总结、改写、生成代码,得明说。"帮我看看这个日志"不是目标,"帮我分析这段日志里的报错原因并给出排查方向"才是

(2)背景充足:大模型不知道你的业务、你的系统架构、你的团队惯例,它只能靠你给的信息推断。背景给得越充分,它越不需要乱猜,幻觉越少

(3)输出要求:格式、长度、风格,不说,它随心所欲。你想要 Markdown 列表?想要 JSON?想要 3 条以内?一定要在 Prompt 里讲清楚

System Prompt

(1)身份设定:给模型一个具体的角色

你是一个 OnCall 助理,专门帮助工程师排查和分析系统故障。
你只处理与系统稳定性、报警分析、故障排查相关的问题。

(2)行为规则:定义模型"能做什么、不能做什么"

不允许回答与系统故障无关的话题。
如果你不确定某个判断,必须说明"我不确定,建议进一步验证"。
不要自行假设任何背景信息,只根据用户提供的内容作答。

(3)输出格式约束:让模型每次都按固定格式输出

你的回答必须是 JSON 格式,包含以下字段:
summary:对问题的一句话概括
root_cause:可能的根本原因列表
action_items:建议的排查步骤列表

6 大原则

原则 1:给模型"角色",效果立刻不同

❌ 「分析一下这个系统报错」

✅ 「你是一个资深 SRE 工程师,专门排查分布式系统故障,请分析以下报错」

加了角色之后,效果为什么会更好?不是玄学

大模型在训练时见过海量各行各业的文字,"资深 SRE 工程师写的内容"和"普通人随便聊的内容",在语言风格、专业度、思考方式上差别很大。你指定了角色,就相当于告诉模型"往那个方向走",缩小了 next-token 预测的搜索空间,输出自然更专业、更贴合你的期望

原则 2:正向约束 > 负向禁止

❌ 「不要太啰嗦」→ "啰嗦"是主观的,模型不知道你的标准在哪

✅ 「回答控制在 3 句话以内」→ 明确,模型知道怎么执行

告诉模型"要做什么",比告诉它"不要做什么"更有效。原因很直接:模型是在"生成"内容,知道要生成什么比知道不要生成什么更容易执行。负向的禁止在某些场景有用,但大多数情况下,直接说你想要的结果,效果更稳定

原则 3:喂给它足够的背景信息(上下文)

大模型不知道你的业务逻辑,不知道你的系统架构,不知道这条报警对你的团队意味着什么。它只能靠你在 Prompt 里提供的信息来推断

❌ 「帮我分析问题」→ 什么问题?

✅ 「以下是系统日志,背景是我们的 MySQL 集群在高峰期(每天 12:00-14:00)出现连接超时,集群规模是 3 主 6 从,请分析可能原因:[日志内容]」

信息给得越充分,答案越靠谱,幻觉越少。大模型的"幻觉"有很大一部分来自"信息不足时的强行推断",你给够了信息,它就不需要猜了

原则 4:指定输出格式(Agent 开发的重中之重)

这一条在 Agent 开发中尤其关键,单独强调

Agent 需要程序来解析大模型的输出,然后决定下一步做什么。如果输出格式每次不一样,解析代码就会频繁出错。所以你必须明确告诉模型"以什么格式输出":JSON、Markdown 列表、固定字段……

光说"输出 JSON"还不够稳定。最可靠的方式是 在 Prompt 里直接给一个 JSON 示例:

请按以下 JSON 格式输出,不要输出其他内容

json
{
  "severity": "high/medium/low",
  "summary": "一句话概括",
  "actions": ["步骤1", "步骤2"]
}

有了示例,模型的格式几乎不会跑偏

另外,这一条直接铺垫了我们后面要学的 Function Calling :让大模型按照指定格式输出"要调用哪个工具、传什么参数",本质上就是在做精确的格式约束,先理解这一条,Function Calling 的原理你就秒懂了

原则 5:Few-shot,给几个例子,胜过写一堆规则

Few-shot 是指:在 Prompt 里直接给几组"输入→输出"的示范样本,让模型照着这个模式来做

❌ 写一大段规则描述:"回答时要简洁、专业、聚焦根因、避免技术术语过多……"

✅ 直接给 3 个样本,每个样本是一条报警 + 对应的分析结论,然后让模型对第 4 条做同样的分析

与其写一本厚厚的"员工行为手册",不如直接给他看 3 份"合格工作成果的样本",哪个更直接,一目了然

什么时候用 Few-shot:当你要模型输出特定风格、特定格式、特定思维方式的时候,用样本比用文字规则更直接、更有效。尤其是当你发现光靠描述说不清楚"我想要什么"时,直接给例子

原则 6:让模型"先思考,再回答"(思维链 Chain of Thought)

处理复杂问题时,直接让模型给出答案,容易出错。在 Prompt 里加一句「请先逐步分析,再给出最终结论」,准确率会明显提升

这不是神秘技巧,背后有清晰的道理:大模型是 next-token 逐步生成的。当它把推理过程写出来,后续生成的每个 token 都能"参考"前面已经写出来的推理内容,逻辑更连贯,不容易发生逻辑跳跃

类比:让学生解数学题,"直接写答案"和"写出解题步骤再得出答案",后者出错率低得多。不是步骤本身有魔力,而是写步骤的过程迫使模型在每一步都做出更谨慎的判断

Harness 工程

六层核心

第一层,上下文的精细化管理

第一层(上下文的精细化)管的是「空间」 :这一轮发给模型的那一坨上下文,长啥样、装了些啥、怎么排布

第四层(记忆与状态)管的是「时间」 :上一轮发生过的事情,怎么流动到下一轮

你塞给它越多无关信息,它的注意力就越散 。这个现象 Anthropic 在他们的博客里专门命名了,叫「context rot」(上下文腐化)。他们给的解法是「just-in-time retrieval」,也就是让 Agent 边干活边按需抓信息,而不是一上来就把所有可能有用的东西一股脑塞进去

所以这一层的核心工作可以浓缩成三件事:

(1)把角色和目标钉死。模型得知道自己是一个「PR 审查助手」,当前任务是「挑出值得关注的 PR 并生成摘要」,成功标准是「我挑出来的真的都是该被关注的」。大部分 Agent 跑偏,根源就是这一步没说清楚

(2)动态筛选而不是一次塞满。只把当前这个 PR 相关的那几块信息拉进来,其余的留在文件系统里,等需要了再取

(3)结构化组织。固定规则(code review 惯例)放一处,动态证据(当前 PR 的内容)放一处,中间结论(我对这个 PR 的初步打分)放一处,三者要分开。否则模型会「自我污染」,也就是用前面错的中间结论去影响后面的判断

第二层,工具系统的可控调用

什么时候用哪个工具? 该查的时候要查,不该查的时候别瞎查。比如 Agent 判断「这个 PR 改的函数是不是核心逻辑」的时候应该去代码搜索,而不是凭感觉猜。反过来,明明 diff 已经在上下文里了,再去重新拉一次 PR 纯属浪费

工具结果怎么喂回模型? 这条最容易被忽略。比如 Agent 调用代码搜索,拿到 30 条匹配。你是不是要把 30 条原文原样塞回去?不是。你要先做一层提炼,比如只留核心模块的那几条,再喂回去。否则这 30 条原文一进来,上下文又被污染了

你最近听得很多的 MCP(Model Context Protocol) ,本质上就是在做工具层的标准化,让任何工具都能用同一种方式接到任何 Agent 上,大家不用再各自重复造轮子

第三层,任务执行的全局编排

Agent 经常翻车的场景是:每一步它都会做,但把所有步骤串起来之后就不会了。它会拉 PR 列表,会读 diff,会写摘要,但它不知道应该先拉全列表再逐个分析,还是应该边拉边评,最后交付给你经常就是一堆半成品

这就是第三层的职责:给模型一条明确的工作轨道有了这条轨道,Agent 就知道「我现在在哪一步,下一步该干啥」,它不会再瞎跑

除了 ReAct 之外,还有几个业界常见的编排模式你可以记一下名字: Plan-and-Execute(先规划完整计划再执行,适合长链路任务)、 Reflexion(每次失败都让 Agent 反思一下再重试)、 Tree of Thoughts(同时探索多条思路再选最好的),不同场景会用不同的编排策略

第四层,记忆与状态的分层管理

这里要回扣我们开头讲的 Mitchell Hashimoto 和 Anthropic 的一个核心洞察: Agent 的状态不应该放在上下文窗口里,而应该外化到文件系统

放到 PR Review Agent 上,你可以做同样的事。它需要管的状态至少有三类, 必须分层存

(1)任务状态 :今天已经处理到哪个 PR 了?还剩几个?每个的打分是多少?这类信息写在一个 today-progress.json 里,当天任务跑完就归档

(2)会话中间结果 :当前这一轮里 Agent 对某个 PR 做出的初步判断。这类信息随会话结束就可以丢,不用持久化

(3)长期记忆和用户偏好 :你喜欢关注什么类型的 PR?你特别看重哪些模块?这类信息写在常驻的 user-preferences.md 里,每次调用都注入

你发现没有?这三类记忆的生命周期完全不同:任务状态活到任务结束,会话中间结果活到当轮结束,长期记忆跨所有任务存在。混在一起就乱了, 分清楚才能用好

第五层,独立的评估与观测体系

那第五层到底要做什么?我把它拆成两件事:一件是有个尺子 ,另一件是能看到每一次的量

尺子:Eval 集(这一层真正的核心),Eval 集(evaluation set)是做 Agent 开发的业界标准做法,也是这一层的灵魂

简单说就是: 你手写一批典型任务,每一个都标注好「正确答案长啥样」 ,然后每次你对 Harness 做了任何改动(比如改了 CLAUDE.md、加了一个新工具、调整了编排流程),都让 Agent 把这批任务再跑一遍,对比成功率

对 PR Review Agent 来说,一个最小可用的 Eval 集可能是这样:

(1)从过去三个月挑 20 个真实 PR

(2)每一个都标注「是不是重要」「摘要应该怎么写」

(3)每次改完 Agent 就跑一遍这 20 个,看它挑对了几个、写对了几个

没有这个 Eval 集,你对 Agent 好不好的判断永远停留在「我感觉这次变好了」的玄学阶段

第六层,约束校验与失败恢复机制

(1)约束:定义「什么事 Agent 不能做」

对 PR Review Agent 来说,约束可以包括:「一次最多分析 20 个 PR」「不能对已 closed 的 PR 再评论」「不能直接修改 PR 本身」「token 用量超过 10 万就立刻停下」。这些约束最好 硬编码到代码或 linter 规则里 ,而不是写在提示词里靠 Agent 自己遵守。OpenAI 在 Codex 项目里把资深工程师的经验固化成他们叫做「Golden Principles」的机制(我们在下一章会专门展开讲),就是这种思路的极致版

(2)校验:在每一步输出前后都做自动检查

比如 Agent 给出摘要后先跑一道格式校验(是不是 Markdown?几个段落都在?),发送到 Slack 前先检查频道名是不是在白名单里。 校验不是审美品味,是硬规则

(3)恢复:失败之后有预案

GitHub 限流 → 等一段时间后重试;Slack 发送失败 → 先落到本地队列,下次重试;token 快耗光 → 立即停下并保存进度,下一轮继续。 每一种典型失败都应该有一条明确的恢复路径 ,而不是一股脑全挂掉

这三件事加起来,才能让 Agent 从「能跑」升级到「能在生产环境跑」

五大难题

(1)Agent 跑久了为啥会越走越偏?重启胜过修补,状态沉到文件里,Agent 随时可以在一个干净的上下文窗口里接力继续

(2)让 Agent 自己给自己打分,为啥总偏乐观?生产和验收必须分离,而且验收方必须能摸到真实世界

(3)Agent 总是失败,工程师到底该干啥?Agent 反复失败的时候,别问模型能不能更努力,要问环境还缺什么

(4)规范文件越写越长,为啥 Agent 反而更糊涂?规则文件宁缺毋滥,给模型看的东西少即是多

(5)Agent 写的代码越堆越烂,技术债怎么还?技术债不是攒一堆集中还,而是每天让后台 Agent 自动偿还一点