Claude Code 实际工作流:真实项目里怎么用
和 Copilot 的本质区别
GitHub Copilot 是自动补全,你在写代码,它猜下一行。
Claude Code 是一个 Agent:你告诉它要做什么,它主动读你的代码文件、修改多个文件、运行命令、验证结果。你不需要复制代码给它,它自己去找。
白夜这个网站本身就是用 Claude Code 辅助开发的——从 Go 后端到 React 前端到 GitHub Actions CI/CD,大量实际的代码由它生成和修改。
关键词(可以展开学习): LLM Agent、Context Window、Tool Use / Function Calling、System Prompt
安装
需要:
- Node.js 18+(
node --version验证) - Anthropic API key
→ 需要访问 Anthropic 官网注册?见《如何稳定访问 ChatGPT 和 Claude》
npm install -g @anthropic-ai/claude-code
配置 API key:
export ANTHROPIC_API_KEY=sk-ant-api03-...
# 建议加到 ~/.zshrc 或 ~/.bashrc 里,避免每次重新配置
进入项目目录并启动:
cd ~/code/my-project
claude
CLAUDE.md:最重要的一个文件
Claude Code 启动时会自动读取项目根目录的 CLAUDE.md,把它当成项目上下文。一次写好,之后每次对话都不需要再解释项目背景。
一个实际的例子(白夜网站的 CLAUDE.md):
# 项目上下文
Go + React 全栈博客,后端 Gin + GORM,前端 Vite + Tailwind CSS 4。
## 目录结构
- backend/cmd/server/main.go:程序入口
- backend/internal/handler/:HTTP handler
- backend/internal/service/:业务逻辑
- backend/internal/model/:数据模型
- frontend/src/:React 组件
- content/articles/:Markdown 文章(独立 git 仓库,不要直接修改)
## 开发命令
- 后端:cd backend && go run ./cmd/server
- 前端:cd frontend && npm run dev
- 测试:cd backend && go test ./...
## 约定
- API 路由前缀 /api
- 文章 frontmatter 必须包含 title/slug/category/tags/pubDate/readTime/summary
- 数据库用 GORM,不写原生 SQL
写得越具体,Claude Code 做出来的东西越符合你的预期。
日常使用场景
解释陌生代码
> 解释一下 backend/internal/cache/cache.go 是怎么工作的
Claude Code 会读取文件,用自然语言解释逻辑。比翻文档快,比自己猜准。
实现新功能
> 在后端加一个 GET /api/tags 接口,返回所有标签和每个标签的文章数
它会:
- 读取相关的 model、service、handler 文件
- 判断要改哪里、加什么
- 写代码并告诉你改了哪些文件
- 等你确认
Debug
把报错直接贴进去:
> go test ./... 报错:
panic: runtime error: invalid memory address or nil pointer dereference
goroutine 8 [running]:
github.com/waysup/baiye/internal/service.(*ArticleService).Get(...)
service/article.go:47
帮我找原因
Claude Code 会读 service/article.go 第 47 行附近的代码,分析为什么出现 nil pointer。
跨文件重构
> redirect.go 里有一段原生 SQL,改成用 GORM 的方式写
它能同时修改多个文件,改完列出所有变更供你确认。
写测试
> 给 service/article.go 的 List 函数写单元测试,mock 掉数据库
实用技巧
先要计划,再要执行
Claude Code 权限大,能直接改文件。如果任务复杂,先让它说计划:
> 我想给搜索加分页功能,你打算怎么改?先说计划,不要动代码
确认没问题再让它执行,避免一次改了一堆你不想动的地方。
/compact:当对话太长时
Claude Code 的 context window 是有限的。对话很长后它开始"忘事",这时输入 /compact 让它压缩历史,腾出空间继续。
! 直接跑 shell 命令
不需要开另一个终端:
!git status
!docker compose ps
!curl http://localhost:8080/api/articles
指定范围,别让它乱改
# 不好
> 优化一下数据库查询
# 好
> service/article.go 里的 List 函数有 N+1 查询问题,只改这一个函数
范围越小越可控,越大越容易出意外修改。
费用参考
Claude Code 默认用 claude-sonnet-4-x,按 token 计费。
| 任务 | 大约消耗 tokens | 费用 |
|---|---|---|
| 解释一个文件 | 5,000–15,000 | $0.01–0.03 |
| 实现一个接口 | 20,000–50,000 | $0.04–0.10 |
| Debug 复杂问题 | 30,000–80,000 | $0.06–0.16 |
日常开发约 $0.5–2/天,比 GitHub Copilot Pro($10/月)贵不了多少,但能做的事完全不同一个量级。
如果在意费用,可以在设置里切换到 claude-haiku-4-x,价格便宜约 10 倍,适合简单的读文件和解释类任务。
什么时候不适合用
- 看提交历史:
git log/git blame比问 Claude Code 准 - 查文档:直接看官方文档,不要让它背书(它可能会记错 API 细节)
- 大规模重构整个项目:风险太大,一次改太多文件容易出现连锁错误,分批来
- 需要实时信息:它的知识有截止日期,最新的库版本、最新的 bug 要去看文档或 GitHub Issues
和直接问 Claude 网页版有什么不同
| Claude Code(CLI) | Claude 网页版 | |
|---|---|---|
| 访问代码文件 | 自动读取 | 需要手动复制粘贴 |
| 执行命令 | 支持 | 不支持 |
| 跨文件修改 | 支持 | 需要手动处理每个文件 |
| 适合 | 编码、调试、重构 | 解释、写作、分析 |