Claude 工程实践

如果你还不知道怎么用llama.cpp部署本地LLM,和如何在电脑上配置claude,请先准备好再来。

高效的提示词

  1. 表述清晰、具体。不要只说 添加身份验证,而应该明确说 在登录端点中使用现有用户模型添加基于JWT的身份验证。
  2. 提供上下文。Claude需要知道某些信息,例如一段代码、一个文件、某个库,你正在使用的某种模式,或你面临的某项约束,提前说明。
  3. 保持简洁。别啰嗦直奔主题。

退出终端

>/quit
>/exit

聊天里执行bash

先输入一个!,然后再执行命令行

>! ls

claude内置命令

先输入一个 /,会提示许多claude内置命令,如

>/clear
# 开启一个新的空上下文session,旧的session包存在磁盘,可以使用/resume恢复

引用文件

输入一个@,就会发现claude把项目文件给你展示出来提示你让你选择

────────────────────────────────────
❯ @public/ 
────────────────────────────────────
+ public/
+ public/index.html

后台任务

先输入 &

> & 

构建工程记忆

每一次启动一个新对话时,Claude都完全不了解我们的项目。

> /init

初始化一个 CLAUDE.md 文件

如果作出一些工程结构修改,CLAUDE.md 内容需要修改,直接在对话中告诉 Agent

> update CLAUDE.md

几种 mode

在claud终端输入内容下你会看到 如

按 Shift + Tab 键 可以进行来回切换Mode。

用Plan mode,会先不动你的内容,Claude浏览内容明白你的需求然后给出一份完整的修改方案。 给出方案后会给你写选项,确认是否清除上下文然后修改、只修改、继续修改方案等。

什么是 Tokens

一个Token大致相当于四分之三个单词,因此,大预言模型LLM阅读文本的方式与人类截然不同。

当我们向LLM输入一段文本时,它会将文本拆解为成为token的小型片段。

上下文窗口

什么是上下文窗口?可以将其理解为Claude的工作记忆。即Claude在任一时刻所能看到的全部内容。 例如我们的对话历史、它已读取的文件、Claude.md 文件等等。

可以使用 /context 查看,Context Usage 上下文使用情况,各部分占用token比例,剩余大小。 Skills 情况等。

上下文越大,LLM容易产生幻觉,Claude效果不如人意,合理管理上下文大小很重要。

完全清空上下文 使用 /clear。

压缩上下文保留上下文摘要,可以使用 /compact。

追踪成本与用量

每一次向LLM发送消息时,模型都会接收到系统指令,您的Claude.md或记忆文件,以及 完整的对话历史记录。

每一次对话都意味着每次请求需处理更多输入token,比上一次输入更多。 若在不同无关任务间频繁切换,请务必清空上下文窗口。

MCP 扩展 Claude

Claude Tool 有 Bash、Read、Write,执行命令 读文件 写文件。 几乎可以做所有事了。还可以扩展Claude功能,为其添加额外的工具。

例如可以让其与Github对接,以创建Issue或Pull Request。 或与Slack对接收发消息。或连接PostgreSQL数据库来执行查询操作。

实现这一目标的方式是采用一种名为MCP(模型上下文协议 Model Context Protocol)的技术。

当宿主应用程序启动时,MCP Client 扫描已注册的MCP服务器 向 MCP Server 询问。 “你提供哪些工具?”,GitHub MCP 服务器可能回应,“我支持创建Issue,Pull Request,读取代码仓库等功能”

当你要求Claude执行某项任务,如在Github上创建一个Issue时,系统便能精准调用对应的工具。 各模型厂商不用自己去对接,每个应用 网站提供MCP Server就好了 它们自己官方写好 Agent Tool 供 MCP Server,MCP Server 供给 MCP Client使用。

Claude Code           |          GitHub
Agent --> MCP Client --> MCP Server --> GitHub

不用写死的代码。Claude Code 只需写 Agent 与 MCP Client 配合和 MCP Server 通信就行了。

你每注册一个MCP Server, Claude都会将该服务器所提供的工具纳入你的上下文 窗口中。意味着更高的成本、更高的资源消耗、可能选项过多Claude难以驾驭。

添加 Tools

Claude或其他AI Agent有时会提供过时的代码。例如 让它用React或Next.js完成某项任务,它却给出一个使用旧版API的示例。

大模型的知识来源于其训练数据,而这些数据存在截止日期,并不了解你最常用 库的最新更新。

https://context7.com

Context7 是一款 MCP Server,内置最新、按版本精准对应的文档。

Agent --> MCP Server --> Context7 --> Docs

创建一个API Key

# Remote MCP Server(HTTP)
claude mcp add --transport http context7 https://mcp.context7.com/mcp \
    --header "CONTEXT7_API_KEY: YOUR_API_KEY"
# 添加后默认配置会加到 ~/.claude.json 里

当Claude启动时,它会向该MCP服务器查询其所支持的工具,一旦获取到这些工具信息。 便可在将来调用这些工具,以后去最新版本的。

Process1            Process2
Agent.   ---STDIO-->Local MCP Server--HTTP--> Remote MCP Server
# Local MCP Server (STDIO)
claude mcp add context7 -- npx -y @upstash/context7-mcp --api-key YOUR_API_KEY

https://context7.com/docs/resources/all-clients#claude-code

配置MCP后需要重启claude

> /mcp

context7,提供了两个Tool,

例如

> add a chart (using recharts) to show spending by category. use context7

Claude会先调用 resolve-library-id tool查询 recharts 库的文档ID,然后在调用 query-docs查询 recharts 的 文档。

这么一搞基本具备实时最新内容的能力了。

移去mcp server

gaowanlu@gaowanludeMacBook-Pro llm-chat % claude mcp remove context7
Removed MCP server "context7" from user config
File modified: /Users/gaowanlu/.claude.json

Skills

技能是一组指令,用于教会Claude如何处理特定任务。你可以将它们想象成 你提供给Claude的一份份简易速查指南。

“我希望你以这种方式完成这项特定任务。”

不要将Skills和MCP Server混淆。

Skills是一堆整理好的Promot,MCP Server是调用 Agent Tool 的中介。

只要你发现自己在一遍又一遍地输入相同的指令,就该考虑将其转化为一个技能了。

如何创建 skill,完全可以直接聊天创建

> create a custom skill called deploy. when deploying,we should run all tests first,
build the production bundle,and push to the staging area.
# 创建一个名为deploy的自定义技能

gaowanlu@gaowanludeMacBook-Pro .claude % ls
settings.local.json skills
gaowanlu@gaowanludeMacBook-Pro .claude % pwd
/Users/gaowanlu/dev_dir/llm-chat/.claude
gaowanlu@gaowanludeMacBook-Pro .claude % ls ./skills
deploy.md

skill 的 markdown 放在了工程的 .claude/skills 下面。

而针对每一项技能,都应为其单独设立一个子目录。

$PROJECT_DIR/.claude/skills/deploy/SKILL.md
 我有哪些自定义skill                                                                 

  Thought for 1s (ctrl+o to expand)
  
 目前只有一个自定义技能:
  
  ┌─────────┬────────────────────────────────┐
    技能   │              路径              │
  ├─────────┼────────────────────────────────┤
   /deploy │ .claude/skills/deploy/SKILL.md │
  └─────────┴────────────────────────────────┘

 Crunched for 1s

在真实的场景中,我们必须认真审核优化这些步骤,有的甚至是一行行手写的。

添加skill后,需要重启才能使用

> /skills

如何使用skill,skill的名称将自动成为自定义斜杠命令的名称

> /deploy

这就是创建自定义技能的核心理念。

添加 Skills

我们并不总是需要创建自定义技能,可以将现有的skill别人写好的skill添加到我们的项目中。

可以在 skillsmp.com 找,截止 2026年6月14日 上面已经有 1728327 个 SKILL.md

https://skillsmp.com/categories

Tools、Business、Development、Testing&Security、Data&AI、DevOps、Documentation、Content&Media、Research、Lifestyle、Databases、Blockchain 分类啥都有。

例如 https://skillsmp.com/skills/anthropics-skills-skills-frontend-design-skill-md

npx skills add https://github.com/anthropics/skills --skill frontend-design
# 也可以下载zip自己解压操作放入项目的skills中

SKILL.md 的开头有一些meta信息

---
name: frontend-design
description: Guidance for distinctive, intentional visual design when building new UI or reshaping an existing one. Helps with aesthetic direction, typography, and making choices that don't read as templated defaults.
license: Complete terms in LICENSE.txt
---

# Frontend Design

Approach this as the design lead at a small studio known for giving every client a visual identity that could not be mistaken for anyone else's. This client has already rejected proposals that felt templated, and is paying for a distinctive point of view: make deliberate, opinionated choices about palette, typography, and layout that are specific to this brief, and take one real aesthetic risk you can justify.

## Ground it in the subject
......

使用 /skills 可以看见,skill名称后 有如 63 description tokens 等。这就是claude在启动时会将skill的 description 部分加载,name 部分就是变为斜杠命令名字。

当调用某项技能时,该技能的详细指令才会被加载。

> /frontend-design improve the look and feel of this app. make it modern and polished.

检查点 Checkpointing

当你使用ClaudeCode时,有时事情会出错。你让Claude对某个文件进行重构,结果却比原始版本更糟糕,或者让它尝试另一种方案,结果代码反而崩溃了。

一般,大家唯一的保障机制只有git。在每次输入指令前都提交一次变更,这固然可行。但有时并不想立即提交,或许此时代码尚未达到适合提交的完善程度。

ClaudeCode会在每次编辑前自动保存当前代码的状态。

# 按两次Esc键 或 使用 rewind 倒带命令
> /rewind

一旦选中某个步骤,即可回退至执行命令前的项目状态。

如果Claude运行Bash命令来删除或移动文件,这些变更不会被追踪。该功能仅适用 于当前会话 session 内的变更。

记住删除的文件,移动的文件可没办法用 检查点 回退。

子代理 sub-agents

一般,一直只与一个代理对话,通用型助手,负责处理所有任务:阅读代码、编写代码、运行测试、搜索codebase。这些都在一次对话,一个上下文窗口内完成,但当任务规模增大时,问题便开始浮现。

总之就是解决避免浪费上下文窗口,例如执行bash、运行某个程序测试,完全可以用单独的session去运行,而不是 只在一个窗口内一直运行,因为每一次与LLM对话都把整个session历史消息输给LLM。

每当我们要Claude进行某项规划时,它都会在后台启用一个独立的子代理来完成所有繁重任务,随后仅将结果反馈回主对话。

> /agents

可以创建新的子agent,和查看正在运行的agent。每个智能体也可拥有各自独立的记忆文件。

> /agents
Name: code-reviewer
  Location: .claude/agents/code-reviewer.md
  Tools: All tools
  Model: Inherit from parent
  Memory: Project (.claude/agent-memory/)
  
  Description (tells Claude when to use this agent):

    Use this agent when the user wants to review code for quality, correctness, security, or performance. Examples:
    'Please review this code for potential issues', 'Can you do a code review of this function', 'Check my
    implementation for bugs …

  System prompt:

    You are a senior code review expert with deep expertise in JavaScript, Node.js, Express, and modern web
    application development. Your role is to thoroughly review code, identify issues, and provide actionable
    improvement suggestions.

    ## Rev…

  Warnings:
   ● Agent has access to all tools
   ● System prompt is very long (over 10,000 characters)

创建后,在项目的 .claude 中有,.claude/agents/code-reviewer.md.claude/agent-memory/code-reviewer/

对话中完全可以使用

> 使用 code-reviewer 子agent review我的代码 

然后就会看到子代理运行,默认情况下该进程在前台运行 可以按 Ctrl + B 将其切换至后台运行。

软件工程的未来

AI辅助编程是软件工程的未来,它并非要取代工程师,而是从根本上改变我们的工作方式,但开发工程师的岗位数量肯定会减少。

需求总量减少 + 编程工具效率提升 => 岗位减少 => 裁员 不招人

AI讲生成我们代码中很大一部分内容,它将负责处理哪些机械性、重复性的部分。而工程师的职责,则转向指挥、审查、优化。

也有人认为,“AI生成的代码如同意大利面条般混乱不堪,没人真正理解,最终将在未来演变为高昂的技术债务。”

代码质量至关重要、技术债确实存在,但人手写的代码、接手别人的codebase 哪有完美的?

一个扎心的事实,开发者几乎从不提及的事实,“企业的存在是为了盈利”,当有工具能加速软件交付、降低成本时,企业必然会采用它们。 无论工程师是否喜欢它们。哪些拒绝适应的人,并非在保护代码库,预算审查时,最先被裁掉的恰恰就是他们。真正蓬勃发展的开发者, 是那些始终保持好奇心、持续学习并积极接纳更优工具的人。

从文本编辑器到集成开发环境IDE、从FTP部署升级到持续集成与持续交付CI/CD,工具始终在不断变革。

IDE集成

推荐使用vscode,安装启用Anthropic官方的VSCode插件,Claude Code for VSCode。

在vscode终端里,可以连接vscode。

>/ide

连接后比如,还能这样骚操作

 /ide                          
    Connected to Visual Studio Code.

 当前窗口文件名是什么             

 当前窗口打开的文件是:

  /Users/gaowanlu/dev_dir/avant/src/app/http_app.cpp

  这是 HTTP 应用处理器的源代码文件。

 Baked for 40s

Agent 时代好工具

Github Actions集成

要安装 cli.github.com cli工具 Claude 终端可以配合。

Github 仓库安装绑定 Claude Code Github App。

完全可以实现工作流:

  1. 创建一个 GitHub issue
  2. Tag @claude 让它修复
  3. Claude 修复问题
  4. 创建 Pull Request
  5. Review 代码
  6. 批准或关闭 Pull Request
  7. 触发新部署

内置命令详解

/exit

结束对话,关闭终端

/init

初始化 CLAUDE.md 文件

/clear

关闭此次session对话,保存到磁盘,可使用 /resume 恢复

/resume

恢复以前关闭的对话

/model

选择模型

/terminal-setup

该命令会安装 shift + enter 键绑定功能, 这样在输入多行提示词时,只需按下 shift + enter即可换行。

/tasks

例如一个nodejs服务器项目,你告诉claude,请运行这个项目,他会在后台运行而不是阻塞你和终端的 聊天。可以用过 /tasks 查看后背运行的内容。

/context

查看上下文使用情况

/compact

压缩上下文保留上下文摘要,可以使用 /compact。可以腾出更多空余的上下文空间。

/cost

追踪成本与用量,适用于使用API的用户

/usage

追踪成本与用量,适用于已订阅服务的用户

/mcp

查看已经添加的 MCP Server,Local的STDIO、Remote的HTTP。

/skills

管理skill是否启用

/rewind

回退修改,按两次 Esc 一样。可以看到本次会话启动以来,自运行claude起的全部对话。 一旦选中某个步骤,即可回退至执行命令前的项目状态。

/agents

子agents管理

/ide

连接IDE

/add-dir

添加一个新的工作文件夹

/background

用于将当前会话分离为后台代理运行,释放你的终端。你可以选择传递提示词在分离前发送额外指令。使用 claude agents 监控后台会话。

claude agents

可以看到后台运行的agents

/branch

/branch 命令在当前对话点创建一个副本,让你可以探索不同的方向,同时保留原始对话。你可以用 /resume 切换回原始对话。别名:/fork(不过在最近的版本中,/fork 现在会生成一个后台子代理)。

/btw

/btw 命令用于快速问题,答案显示在可关闭的覆盖层中,永远不会进入对话历史。这样你可以检查细节而不增加 context。

/cd

/cd 命令改变 Claude Code 的工作目录。运行 /cd /path/to/directory 后,所有后续命令和文件操作都在该目录中执行。

/color

/color 命令为当前会话设置提示栏颜色。可用颜色有:red、blue、green、yellow、purple、orange、pink、cyan。使用 default 重置,或不带参数运行以选择随机颜色。当 Remote Control 连接时,颜色同步到 claude.ai/code。

/config

/config 命令打开 Claude Code 的配置文件进行编辑。这是一个 YAML 文件,包含你的偏好设置、模型选择、权限和其他配置选项。

/copy

/copy 命令将最后一条消息复制到剪贴板。如果你想复制特定的消息或代码块,可以指定消息编号或内容。

/diff

/diff 命令显示文件的更改差异。运行 /diff /path/to/file 查看该文件相对于上次保存版本的更改,或使用 /diff file1 file2 比较两个文件。

/doctor

/doctor 命令诊断 Claude Code 的安装和配置问题。它检查你的环境、API 密钥、网络连接和其他设置,帮助识别和解决问题。如果遇到错误或奇怪的行为,运行 /doctor 是排查问题的好方法。

/effort

/effort 设置 Claude Code 在当前会话中的工作强度级别。选项包括 low、medium 和 high,控制 Claude 花费多少时间和资源来解决问题。更高的强度意味着更深入的分析和更多的迭代。

/export

/export 命令将你的对话导出为不同格式(如 Markdown、JSON 或 PDF)。如果你想导出特定格式或有其他问题,导出对话到剪切板或文件。

/fast

/fast 命令启用快速模式,使用更快但可能不那么详细的响应。这对于快速迭代或简单任务很有用。运行 /fast 切换快速模式的开启/关闭状态。

/effort 也能调。

/feedback

/feedback 命令打开反馈表单,让你报告 Claude Code 中的错误、建议功能或分享使用体验。这是向 Anthropic 团队报告问题的主要方式。

/focus

/focus 命令将 Claude Code 的注意力集中在特定文件或目录上。运行 /focus /path/to/file 后,Claude 会优先考虑该文件的上下文,减少对其他文件的关注。这有助于在大型项目中保持相关性。

/fork

/fork 命令在后台生成一个子代理来处理任务,同时你继续与主会话交互。子代理独立运行,可以并行处理工作。你可以用 /agents 查看和管理运行中的子代理。

/goal

/goal 命令设置当前会话的目标或任务描述。这帮助 Claude Code 理解你想要实现的目标,并据此调整其方法和建议。运行 /goal your goal here 来设置或更新目标。

/help

/help 命令显示所有可用命令的列表及其简要说明。运行 /help 查看你安装的 Claude Code 版本中的所有命令。你也可以运行 /help /command 获取特定命令的详细帮助。

/hooks

/hooks 命令管理 Claude Code 的钩子(hooks),这些是在特定事件发生时自动运行的脚本或命令。你可以用它来自动化工作流,例如在保存文件时运行测试或在完成任务时发送通知。

/keybindings

/keybindings 命令显示或配置 Claude Code 的键盘快捷键。你可以查看当前的键绑定或自定义它们以匹配你的工作流偏好。

/login

/login 命令让你登录 Claude Code。如果你的会话过期或需要切换账户,运行 /login 会打开认证流程。登录后,Claude Code 可以访问你的 Claude 订阅或 Claude Console 账户。

/logout

/logout 是一个特殊命令,会将你登出 Claude Code。

/memory

/memory 命令用于管理 Claude Code 的自动记忆功能。

开关 Auto-memory

/mobile

运行此命令后,Claude Code 会显示一个二维码,你可以用手机扫描来下载 iOS 或 Android 版本的 Claude 应用。这在你想在移动设备上使用 Claude Code 时很有用。

/model

切换可选择使用的模型

/permissions

查看协议命令tool、一些命令执行时是否询问,加一些限制规则,工作区

/plan

启用为 plan mode

/plugin

/plugin 命令用于管理 Claude Code plugins。这个命令打开一个界面,让你可以发现、安装、启用和禁用插件。

插件是自包含的组件,可以扩展 Claude Code 的功能,包括 skills、agents、hooks、MCP servers 和 LSP servers。

/powerup

Claude Code 中的交互式快速课程,用来帮助你发现和学习 Claude Code 的各项功能。

/recap

立即生成一行会话总结

/release-notes

ClaudeCode各版本的ReleaseNote

/reload-plugins

激活当前会话中待处理的插件更改

/reload-skills

拾取本次会话期间磁盘上添加或更改的技能,无需重启claude

/rename

重命名当前对话

/sandbox

/sandbox 命令用于切换沙箱模式。仅在支持的平台上可用。 沙箱模式是一个操作系统级别的隔离功能,可以限制文件系统和网络访问。

方法 隔离的内容 需要 Docker 设置工作量
Sandboxed Bash tool Bash 命令及其子进程 macOS 上最少;Linux 和 WSL2 上较少
Sandbox runtime 整个 Claude Code 进程,包括文件工具、MCP 服务器和 hooks 较少
Dev container 完整开发环境 中等
Custom container 完整开发环境 中等到高
Virtual machine 完整操作系统
Claude Code on the web 完整操作系统,由 Anthropic 托管 无;需要 Claude 订阅和 GitHub

/skills

/skills 命令用于列出可用的 skills。按 t 可按令牌计数排序,按 Space 可从 Claude 或菜单中隐藏 skill,然后按 Enter 保存。

/status

显示 Claude Code 的状态,包括版本、型号、帐户、API 连接和工具状态

/theme

更换终端主题

/tui

设置终端用户界面渲染器(默认 | 全屏)

/workflows

浏览正在运行和已完成的工作流程

/batch

研究并规划大规模变更,然后在 5-30 个独立的工作树代理上并行执行,每个代理都会创建一个 PR。

命令用于执行批量修改,可以对整个项目进行大规模、系统性的代码变更。

  1. 框架迁移 - 例如 /batch migrate from react to vue
  2. 依赖替换 - 例如 /batch replace all uses of lodash with native equivalents
  3. 类型注解 - 例如 /batch add type annotations to all untyped function parameters
  4. 代码重构 - 统一修改某种代码模式

/debug

启用此会话的调试日志记录,以帮助诊断问题。

/deep-research

深度研究工具——扇出网络搜索,获取资源,对抗性验证说法,综合引用报告

/fewer-permission-prompts

扫描您的脚本记录,查找常见的只读 Bash 和 MCP 工具调用,然后添加优先级允许列表到 project.claude/settings.json 中,以减少权限提示。

/insights

生成一份分析您的 Claude Code 会话的报告

/loop

按固定时间间隔运行提示符或斜杠命令(例如 /loop 5m /foo,默认为 10m)

/review

Review a pull request

/run

是一个 Skill 命令,用于启动并驱动您的项目应用,以便在运行的应用中看到更改工作,而不仅仅是在测试中。这需要 Claude Code v2.1.145 或更高版本。

/run-skill-generator

/run-skill-generator 是一个 Skill 命令,用于教 /run 和 /verify 如何构建和启动你的项目。它从干净的环境中让你的应用运行,捕获有效的内容(安装命令、环境变量、启动脚本),并将其作为每个项目的 skill 提交到 .claude/skills/run-<name>/。之后,/run/verify 和仓库中的任何其他代理都遵循记录的配方。需要 Claude Code v2.1.145 或更高版本。

/security-review

对当前分支上待处理的变更完成安全审查

/statusline

设置 Claude Code 的状态栏 UI

/team-onboarding

通过你的使用经验,帮助队友快速上手 Claude Code。

Claude Code v2.1.177