本教程面向零基础但有一点点代码阅读经验的开发者,目标是带你走完「安装 Claude Code → 登录 → 装 VS Code 插件 → 看懂四层配置体系 → 在 IDE 内读懂一个陌生工程」的完整链路。学完后,你将不再停留在「让 AI 帮我写个新工具」,而是掌握一项被多数新手忽略的高价值技能:用 AI 快速读懂一个你已经接手、但还没看明白的代码库。本路线以 VS Code 图形化插件为主、命令行为辅,对终端不熟的同学最友好。
在动手前,请确认你具备以下三样东西,缺一不可:
https://claude.ai 即可。Windows 用户建议额外安装 Git for Windows,这样 Claude Code 才能用 Bash 工具;WSL 用户则无需 Git for Windows。小提示:如果你只想在集成终端里敲
claude命令,那还需要单独安装一次 CLI(见下一步)。VS Code 插件内置了一份 CLI 给聊天面板用,但终端里那份是独立的。
Claude Code 在 2026 年的官方推荐安装方式已经从早期的 npm install 迁移到了原生安装器(Native Install),原因是原生安装器会在后台自动更新,省去手动升级的烦恼。
按你的操作系统选择一条命令执行:
macOS / Linux / WSL(推荐原生安装):
curl -fsSL https://claude.ai/install.sh | bash
Windows PowerShell:
irm https://claude.ai/install.ps1 | iex
Windows CMD(传统命令提示符):
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd
如果你更习惯包管理器,也可以:
# macOS(Homebrew,注意:不会自动更新,需手动 brew upgrade)
brew install --cask claude-code # 稳定通道,约落后一周
brew install --cask claude-code@latest # 最新通道,即时更新
# Windows(WinGet,同样不会自动更新)
winget install Anthropic.ClaudeCode
预期结果:命令跑完后,终端输入 claude --version,应能打印出形如 2.x.x 的版本号。
$ claude --version
2.1.181
常见问题与解决:
| 报错信息 | 原因 | 解决办法 |
|---|---|---|
syntax error near unexpected token '<' |
install.sh 被代理/防火墙篡改 |
关闭代理重试,或换用 npm 备选方式 |
The token '&&' is not a valid statement separator |
你在 PowerShell 里却用了 CMD 命令 | 换用上面的 PowerShell 命令 |
'irm' is not recognized |
你在 CMD 里却用了 PowerShell 命令 | 换用上面的 CMD 命令 |
| 403 / curl 错误 | 网络环境拦截了 claude.ai | 配置允许访问的代理后再装 |
兼容性兜底:原生安装器之外,老牌的
npm install -g @anthropic-ai/claude-code仍然可用(需要先装 Node.js 18+),但官方已不作为首选。
CLI 装好后,进入任意一个你想分析的代码目录,直接敲:
cd ~/projects/some-repo
claude
首次运行会触发浏览器登录流程:
https://claude.ai/oauth/... 链接并自动尝试打开浏览器;Welcome to Claude Code! 的欢迎横幅,即登录成功。预期结果:终端进入交互式会话,左下角提示当前工作目录与模型。此时你已经可以开始提问了。
验证登录态(可选):执行 claude /status 或在会话中输入 /status,会显示当前账号、订阅类型、剩余用量等。这是排查「为什么我的额度没了」的第一现场。
这是本教程区别于「纯命令行」路线的关键一步。
安装方式(二选一):
Cmd+Shift+X(Mac)或 Ctrl+Shift+X(Windows/Linux)打开扩展面板,搜索框输入 Claude Code,找到 Anthropic 官方发布的那一个,点 Install。Cmd/Ctrl+Shift+P)输入 Extensions: Install Extensions,搜索安装。首次启动插件:
Cmd+Esc(Mac)/ Ctrl+Esc(Windows)即可唤出 Claude 聊天面板。接通成功的标志:
@ 提及当前工作区里的文件;常见问题:
claude,一样能干活。Cmd+Esc 无反应(Mac):该快捷键可能被系统/输入法占用,去 VS Code 键盘快捷方式里重新绑定 Claude 的唤起命令。/status 看是否掉线;必要时 /login 重新登录。插件 vs CLI 的关系:插件面板自带一份 CLI;但如果你想在 VS Code 的集成终端里也敲
claude,仍需按第一步单独安装 CLI。两者账号互通、配置共享。
这是新手最容易忽略、却最能决定体验的一环。Claude Code 的所有行为偏好,都由 settings.json 控制;而这些配置按作用域(scope)分成四层,优先级从高到低为:
flowchart TB
A["Managed 托管层<br/>IT 下发 / 注册表 / plist<br/>最高优先级,不可覆盖"] --> B["CLI 命令行参数<br/>临时会话覆盖"]
B --> C["Local 本地层<br/>.claude/settings.local.json<br/>仅本机本仓库"]
C --> D["Project 项目层<br/>.claude/settings.json<br/>随 git 提交,团队共享"]
D --> E["User 用户层<br/>~/.claude/settings.json<br/>个人全局,所有项目"]
style A fill:#fde2e2,stroke:#c0392b
style E fill:#e8f5e9,stroke:#27ae60
| 作用域 | 位置 | 影响范围 | 是否随团队共享 |
|---|---|---|---|
| Managed | 服务端托管 / 系统注册表 / plist | 全组织成员或本机所有用户 | 是(IT 部署) |
| User | ~/.claude/ |
你自己,跨所有项目 | 否 |
| Project | 仓库内 .claude/ |
该仓库所有协作者 | 是(提交进 git) |
| Local | .claude/settings.local.json |
仅你本机、本仓库 | 否(默认 gitignore) |
关键规则一:同名字段,高优先级覆盖低优先级。 比如你在 User 层设了 spinnerTipsEnabled: true,又在 Project 层设了 false,最终生效的是 false。
关键规则二:权限规则是「合并」而非「覆盖」。 各层 permissions.allow / deny 会叠加在一起共同生效,而不是上层把下层冲掉——这点和普通字段相反,务必记住。
修改配置的两种方式:
/config,会弹出一个带选项卡的设置界面,能直接点选修改。—config key=value,例如 /config verbose=true。一份适合「读懂工程」场景的 User 层配置示例(放在 ~/.claude/settings.json):
{
"model": "default",
"includeCoAuthoredBy": false,
"cleanupPeriodDays": 30,
"env": {
"CLAUDE_CODE_DISABLE_TERMINAL_TITLE": "1"
},
"permissions": {
"allow": [
"Read(**)",
"Bash(git log:*)",
"Bash(git diff:*)",
"Bash(git show:*)",
"Bash(ls:*)",
"Bash(cat:*)"
],
"deny": [
"Bash(rm -rf:*)",
"Read(./.env)",
"Read(./.env.*)",
"Read(./**/secrets/**)"
]
}
}
上面这份配置的用意很明确——这是一个"只读分析"模式:把所有读操作、只读的 git 命令放进 allow(不再每次弹确认),把危险删除和敏感文件读访问挡在 deny(即使你让它读它也不会读)。对于一个只想让 AI 帮你读懂代码、不打算让它改代码的场景,这是最省心、也最安全的起点。
进阶提示:
Read(./.env)这类规则利用了路径前缀语法,可以精确到某个目录或文件名通配。完整的「权限规则语法」可在官方 Settings 文档里查到。
除了细粒度的 allow/deny 规则,Claude Code 还提供四种权限模式(Permission Modes),决定它执行操作前要不要问你。在会话中按 Shift+Tab 可循环切换,或在配置里固定。
| 模式 | 行为 | 适用场景 |
|---|---|---|
| default | 读写、运行命令前都会询问(默认) | 第一次接触陌生工程 |
| acceptEdits | 文件编辑自动接受,命令仍询问 | 信任其编辑、但想盯着命令 |
| plan | 只做计划和分析,不动文件 | 读懂工程的黄金模式 |
| bypassPermissions | 全部放行,不再询问 | 高风险,仅隔离环境用 |
本教程强烈建议:在"读懂工程"阶段,固定使用 plan 模式。 该模式下,Claude 只会读文件、出方案、写分析,绝不改动你的代码库——既安全,又不会被频繁的权限弹窗打断思路。
固定方法:把下面这行加进你的 User 层 settings.json:
{
"defaultMode": "plan"
}
或在某个具体会话里,按 Shift+Tab 切到 plan,左下角会显示当前模式。
前面五步都是铺垫。现在进入本教程的核心目标:用 Claude Code 快速读懂一个你已经接手、但还没看明白的代码库。
下面用一个「模拟接手一个陌生小工程」的实战,演示完整流程。你可以用任何手边的小仓库替代;这里以一个三文件的 Flask API 为例(你可以新建以下文件来复现):
# app.py
from flask import Flask, jsonify, request
from db import query_user, save_log
app = Flask(__name__)
@app.route("/user/<int:uid>", methods=["GET"])
def get_user(uid):
user = query_user(uid)
save_log("get_user", uid)
if not user:
return jsonify({"error": "not found"}), 404
return jsonify(user)
@app.route("/health")
def health():
return jsonify({"status": "ok"})
# db.py
import sqlite3, os
_DB = os.environ.get("APP_DB", "app.db")
def query_user(uid):
conn = sqlite3.connect(_DB)
row = conn.execute("SELECT id, name, email FROM users WHERE id=?", (uid,)).fetchone()
conn.close()
return {"id": row[0], "name": row[1], "email": row[2]} if row else None
def save_log(action, target):
conn = sqlite3.connect(_DB)
conn.execute("INSERT INTO logs(action, target) VALUES(?,?)", (action, target))
conn.commit()
conn.close()
# run.py
from app import app
if __name__ == "__main__":
app.run(host="0.0.0.0", port=5000)
在 VS Code 插件的聊天框里,永远优先用 @ 显式指文件,而不是笼统地说"看看这个项目"。前者上下文精确、省 token、结论准;后者会触发它去全仓搜索,慢且容易漏。
输入下面这段(注意 @ 会变成可点击的文件引用):
帮我理清这个项目的整体结构。重点看 @app.py @db.py @run.py,
输出:1) 入口和路由清单 2) 每个文件的职责 3) 一次 GET /user/1 请求
从进来到返回,数据经过了哪些函数。先出方案,不要改任何文件。
末尾那句「先出方案,不要改任何文件」是 plan 模式下的保险栓,配合 defaultMode: plan 双保险。
Claude 会读这三个文件,然后输出类似下面的分析(节选):
## 入口与路由
- 入口:run.py → 引入 app,监听 0.0.0.0:5000
- 路由(app.py):
• GET /user/<int:uid> → get_user()
• GET /health → health()
## 文件职责
- app.py:HTTP 层,解析参数、组装响应、记日志
- db.py:数据访问层,封装 sqlite3 连接与查询
- run.py:启动脚本,仅 app.run()
## GET /user/1 的调用链
1. Flask 路由匹配 → get_user(uid=1)
2. app.py 调 db.query_user(1) → 连 app.db,参数化查询 users 表
3. 命中则拼 dict 返回;未命中返回 None
4. 无论命中与否,调 db.save_log("get_user", 1) 写一行日志
5. None → jsonify 404;否则 jsonify(user)
短短几秒,你就拥有了一份比很多交接文档都清晰的"架构说明书"。
第一次分析是骨架,追问才能挖出肉。继续输入:
基于上面分析,回答:
1) 这套代码有哪些明显的坏味道或风险?(每条给文件:行号)
2) save_log 的写入如果失败,会影响主请求吗?
3) 如果我要加一个"按 email 查询用户"的接口,最少改哪几处?
预期它会指出诸如:每次请求都新建/关闭一次 sqlite 连接(性能风险,db.py:6);save_log 没有事务包裹、写失败不会回滚主流程(app.py:10);新增 email 查询只需在 db.py 加一个 query_user_by_email、在 app.py 加一个路由(最小改动面)。
这就是"读懂工程"的真正价值:你不仅知道了代码做了什么,还知道了它哪里脆弱、哪里好扩展——而这些结论,是你逐行通读可能花一下午才能得到的。
命令行做不到、而 VS Code 插件最香的一点:用鼠标选中一段代码,直接问。比如你选中 db.py 里 query_user 的函数体,输入:
这段为什么每次都 connect + close?改成连接池的话,
改动面和风险各是什么?只分析,不写代码。
选区会自动作为上下文喂给 Claude,你不需要再 @ 提及或复制粘贴。配合 plan 模式,这就是最顺手的"结对阅读"体验。
把上面的方法提炼成可复用的三步法,适用于任何你接手的陌生仓库:
flowchart LR
S1["步骤1 全局速览<br/>让它读 README + 目录树<br/>出一句话定位 + 模块清单"] --> S2["步骤2 主链路追踪<br/>@ 提及核心入口文件<br/>让它画出请求/调用主链路"]
S2 --> S3["步骤3 风险与扩展评估<br/>追问坏味道 / 改动面<br/>锁定脆弱点和扩展点"]
style S1 fill:#e3f2fd,stroke:#1565c0
style S2 fill:#fff3e0,stroke:#e65100
style S3 fill:#fde2e2,stroke:#c0392b
落地示例:随便 clone 一个你感兴趣的小型仓库(建议先挑 star 数几百到几千、主语言单一的中小项目,太大会让单次分析失焦),在仓库根目录打开 VS Code,启动 Claude,依次问:
文件:行号。」三步走完,你对这个陌生工程的掌握程度,往往已经超过花一天通读源码的效果。
把从安装到读懂工程的全部步骤串起来,就是下面这张总流程:
flowchart TD
A([开始]) --> B["第1步 安装 CLI<br/>curl install.sh / irm install.ps1<br/>或 brew / winget"]
B --> C["第2步 登录账号<br/>claude → 浏览器授权<br/>/status 验证"]
C --> D["第3步 装 VS Code 插件<br/>扩展商店搜 Claude Code<br/>Cmd+Esc 唤出面板"]
D --> E["第4步 配置四层体系<br/>User/Project/Local/Managed<br/>写一份只读安全配置"]
E --> F["第5步 选权限模式<br/>读懂工程固定用 plan 模式"]
F --> G["第6步 读懂工程<br/>@ 提及 → 出链路 → 追问风险"]
G --> H{还想深入?}
H -- 是 --> G
H -- 否 --> I([产出交接说明与改动清单])
style F fill:#fff3e0,stroke:#e65100
style G fill:#e8f5e9,stroke:#27ae60
style I fill:#fde2e2,stroke:#c0392b
default 模式且没配 allow 规则。按本教程第四步把 Read(**) 加进 allow,或按 Shift+Tab 切到 plan 模式,即可安静阅读。~/.claude/settings.json 对两者都生效。Shift+Tab 切回 default 或 acceptEdits。brew upgrade claude-code。WinGet 同理需手动升级。https://code.claude.com/docs/en/quickstart——本文安装步骤的权威出处。https://code.claude.com/docs/en/vs-code——插件安装、快捷键、常见故障的官方说明。https://code.claude.com/docs/en/settings——四层配置体系、作用域优先级、权限规则语法的完整定义。https://code.claude.com/docs/zh-CN/permissions——四种权限模式、allow/ask/deny 工作机制。-p 无头模式——它们都是建立在"装通 + 配好 + 读懂"之上的高级玩法。/config 用法。[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
