@ 引用语法完整指南
@ 是 Claude Code 的上下文注入语法,用于将文件、目录、URL 内容引入对话上下文。
基本语法
@文件路径
@目录路径
@URL
在消息中的任意位置都可以使用,可以混合使用:
> @src/api/user.ts 和 @src/types/user.ts 这两个文件的类型定义一致吗?
引用类型详解
引用单个文件
> @src/auth/middleware.ts 解释一下这个中间件的作用
> @package.json 我们项目有哪些主要依赖?
> @README.md 根据这个 README,总结项目的主要功能
支持的文件类型:
- 文本文件(.ts/.js/.java/.py/.md/.json/.yaml 等)
- 图片文件(.png/.jpg/.gif/.webp)—— 以视觉方式呈现给 Claude
- PDF 文件(.pdf)—— 注意大 PDF 会消耗大量 token
- Jupyter Notebook(.ipynb)
引用多个文件
> @src/components/Button.tsx @src/components/Input.tsx
这两个组件的 props 接口风格一致吗?
> @src/api/order.ts @src/services/orderService.ts @src/types/order.ts
这三个文件共同构成了订单模块,帮我分析模块架构
注意:引用多个文件会累加 token 消耗,建议只引用真正需要的文件。
引用目录
> @src/utils/ 这些工具函数有哪些是重复的逻辑?
> @src/components/ 列出所有组件,分析它们的命名是否统一
注意:引用整个目录会引入目录下所有文件的内容,极其消耗 token。建议:
- 只对小目录(< 5 个小文件)使用目录引用
- 大目录改用 Glob + 精确 Read
引用 CLAUDE.md 中的外部配置(@引用语法)
在 CLAUDE.md 文件中,@ 用于引入外部配置文件:
# ~/.claude/CLAUDE.md
# 引入团队共享配置
@~/Documents/git/team-knowledge/shared-config/CLAUDE.md
# 引入项目 API 约定文档
@./docs/api-conventions.md
# 引入组件开发规范
@./docs/component-guidelines.md
这里的 @ 行为与对话中不同:
- 对话中的
@:实时读取文件内容加入当前消息 - CLAUDE.md 中的
@:文件内容被合并到 CLAUDE.md 的上下文,每次对话都加载
引用 URL
> @https://docs.example.com/api 根据这个文档更新代码中的 API 调用
> @https://github.com/user/repo/blob/main/README.md 这个库怎么用?
注意:
- 公司内网环境通常无法访问外部 URL
- 内部系统(如内网 SDoc、Axure)通过 Chrome DevTools MCP 访问更可靠
- URL 内容会被转换为 Markdown,可能丢失部分格式
路径规则
相对路径 vs 绝对路径
# 相对路径(相对于当前工作目录)
@src/auth.ts
@./docs/api.md
@../shared/utils.ts
# 绝对路径
@/Users/yourname/project/src/auth.ts
# 家目录缩写
@~/Documents/cotti/DCP操作文档/1.0.0/DCP操作文档.md
路径中有空格
# 如果路径包含空格,用引号包裹
@"src/My Component/index.tsx"
引用失败时的行为
| 情况 | Claude 的行为 |
|---|---|
| 文件不存在 | 提示错误,不会停止对话 |
| 文件无读取权限 | 提示权限问题 |
| URL 无法访问 | 提示网络错误,跳过该引用 |
| 目录为空 | 提示目录为空 |
| 文件太大 | 截断到最大行数(约 2000 行) |
Token 消耗对比
引用方式 Token 消耗
@src/auth.ts 整个文件大小(可能很大)
@src/auth.ts(50行) 约 200 tokens
@src/ 目录下所有文件之和(极大)
@URL 网页转 Markdown 后的大小
优化方式:
1. 先 Grep 定位行号
2. 再 @文件名 + 明确告知关注范围
> @src/auth.ts 我只关心 validateToken 函数(第 80-120 行)
最佳实践
1. 精确引用而非泛泛引用
# 不推荐(token 消耗大)
> @src/services/ 分析所有服务
# 推荐(先定位,再精确)
> 先列出 src/services/ 下有哪些文件
(看完列表后)
> @src/services/OrderService.ts 分析订单服务的架构
2. 在 CLAUDE.md 中合理使用 @
# 主 CLAUDE.md(保持简短)
## 技术栈
- React 18 + TypeScript
## 禁止行为
- 禁止使用 shineout
# 详细规范按需引用(不要全部加载)
@./docs/component-guidelines.md ← 开发组件时需要
@./docs/api-conventions.md ← 开发接口时需要
3. 多文件分析时控制范围
# 同时引用多个文件时,告诉 Claude 重点关注什么
> @src/api/order.ts @src/types/order.ts
重点:检查这两个文件的类型定义是否对齐,
特别是 OrderStatus 枚举的值
与工具调用的区别
@文件路径(对话语法) | Read 工具 | |
|---|---|---|
| 使用者 | 你(在消息中) | Claude(自动选择) |
| 时机 | 消息发送前读取 | Claude 决策后读取 |
| 控制 | 你控制读什么 | Claude 自动判断读什么 |
| 精确度 | 整个文件 | 可以指定 offset+limit |
结论:当你明确知道需要某个文件时用 @;让 Claude 自己决定读什么时,让它用 Read 工具(通常更节省 token)。