1. 为什么你的 Claude Code 总是“聊两句就断片”
Claude Code(后面我简称 CC)这个工具,很多人第一次用会觉得“不就是个终端里的 AI 嘛”。但真正把它放进日常开发流的人会发现,它和网页版对话完全是两种生物:它能读你的仓库、能改文件、能跑命令、能自己迭代。问题也随之而来——如果你只是“有需要就问一句”,那 CC 每次启动都像失忆,项目背景要重讲一遍,改到一半的上下文丢了,多开两个窗口就彻底乱套。
这篇是实战上篇,聚焦一条完整链路:从零启动 CC,到用 CLAUDE.md 建立项目记忆,到 Plan Mode 做规划,再到claude -p无头调用和并发协同。核心目标只有一个——让你搭出一套稳定、可复现、能多任务并行的 CC 工作流。适合已经装好 CC、但用法还停留在“单次问答”的开发者;也适合想把 CC 接进脚本或 CI 的工程同学。下面所有配置我都会给可复制的骨架,你照着改就能跑。
2. 前置准备:把 TaoToken 接进 Claude Code
CC 本身是个客户端,它需要一个稳定的模型接入点。我这边统一用 TaoToken 来做接入层,原因是它的接口兼容 Anthropic 风格,配置进 CC 的 settings.json 很直接,不用改客户端源码。
先拿到访问凭证。打开控制台创建 API Key:
https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite创建完 Key 之后,CC 需要知道两件事:请求发到哪个地址、用哪个 Key。TaoToken 的 API 基址是:
https://taotoken.net/api注意这里不要加 UTM 参数,API 调用路径保持干净。Key 的管理页面在:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite如果你还没决定用哪个模型,可以先在模型对话页试一下手感,确认响应风格符合预期再写进配置:
https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite提示:Key 只创建一次就够,但建议按用途分多个 Key(比如本地开发一个、CI 一个),后面排查调用来源会方便很多。
3. 可复制配置:settings.json 与 CLAUDE.md 骨架
3.1 settings.json 接入配置
CC 的全局配置一般放在~/.claude/settings.json。下面这份是我在用的骨架,把模型接入和基础行为都定好了:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_AUTH_TOKEN": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "claude-sonnet-4-5" }, "permissions": { "allow": [ "Read", "Glob", "Grep" ], "ask": [ "Bash(git commit:*)", "Write" ] }, "includeCoAuthoredBy": false }几个关键点解释一下。ANTHROPIC_BASE_URL指向 TaoToken 的 API 基址,CC 会把所有模型请求发到这里;ANTHROPIC_AUTH_TOKEN填你刚创建的 Key;ANTHROPIC_MODEL指定默认模型,你可以换成自己账号下可用的任意模型名。permissions里我把只读操作设为自动允许,写文件和 git commit 设为需要确认——这样既不会每读一个文件都弹窗,又能在真正落盘前拦一道。
如果你要长期跑编码任务或 Agent 类工作流,建议了解一下 Coding Plan,它在并发和额度上更适合持续调用:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite3.2 CLAUDE.md 项目记忆骨架
CC 每次会话开始都会读取项目根目录的CLAUDE.md。这个文件就是它的“工程交接文档”,写得越清楚,后面每次对话的质量越高。拿到新工程第一件事是执行/init,让 CC 自己生成初版,然后你手动补关键信息。骨架如下:
# 项目说明 ## 技术栈 - 语言:TypeScript + Node.js 20 - 构建:pnpm + tsup - 测试:vitest ## 目录结构 - `src/` - 源码 - `src/api/` - 接口层 - `tests/` - 测试用例 - `scripts/` - 构建与发布脚本 ## 常用命令 - 安装依赖:`pnpm install` - 本地开发:`pnpm dev` - 运行测试:`pnpm test` - 类型检查:`pnpm typecheck` ## 注意事项 - 不要修改 `src/generated/` 下的文件,它们由脚本生成 - 提交前必须通过 `pnpm typecheck` 和 `pnpm test` - 新增接口必须同步补测试这份骨架的价值在于:它把“CC 需要反复问你的东西”一次性写死了。技术栈、命令、禁区都在里面,后面你开新会话不用再解释一遍。
3.3 三种对话模式的选择
CC 用Shift + Tab切换模式,三种模式对应不同信任级别:
| 模式 | 是否改文件 | 适用场景 |
|---|---|---|
| Plan Mode | 否,只规划 | 需求不清、跨模块改动 |
| Auto-accept Edits | 自动写入 | 计划明确、低风险 |
| Default | 逐步确认 | 核心逻辑、高风险 |
我的习惯是:接到需求先进 Plan Mode,让它读代码、出计划;计划确认后切 Auto-accept 快速推进;碰到核心逻辑再切回 Default 逐处审核。Plan 阶段千万别省,一上来就让 CC 写代码,方向错了重写更费时间。
4. 验证请求:从启动到并发协同的实测
4.1 启动与首次验证
配置写好后,在项目根目录启动 CC:
cd your-project claude进去之后先跑一个最小验证,确认接入是通的:
> 读一下 CLAUDE.md,然后用一句话总结这个项目的技术栈和测试命令如果 CC 能准确说出你写进 CLAUDE.md 的内容,说明项目记忆和模型接入都正常。这一步很关键,很多人配置错了 base URL,结果 CC 一直报连接错误却不知道问题在哪。
4.2 claude -p 无头调用
claude -p(即--print)是把 CC 当 API 用的模式:prompt 进去,结果出来,不进入交互。适合脚本集成:
echo "分析 src/api/user.ts 里 getUser 函数的错误处理是否完整" | claude -p如果要基于上一次会话继续追问,加-c:
echo "帮我分析这个日志文件" | claude -p echo "刚才分析的问题,有哪些修复建议?" | claude -c -p-c会恢复上一次对话上下文,让多轮调用保持连贯。实测下来,这个模式特别适合接进 CI 或 Jira 机器人——丢一个 prompt 进去拿结果,不需要人工开终端。
4.3 并发协同与通知配置
CC 可以多终端并行跑不同任务。但两个坑很常见:窗口名混乱、任务完成不知道。第一个用/rename解决:
/rename 需求A-用户注册接口第二个靠 hooks 配通知。macOS 下在~/.claude/settings.json加:
{ "hooks": { "Stop": [ { "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"任务已完成\" with title \"Claude Code\" sound name \"Hero\"'" } ] } ], "Notification": [ { "hooks": [ { "type": "command", "command": "osascript -e 'display notification \"需要你的确认\" with title \"Claude Code\" sound name \"Ping\"'" } ] } ] } }配好之后,CC 完成任务或需要确认时会弹系统通知,你可以安心去做别的事,等通知来找你。并发场景下这个能力几乎是刚需。
4.4 预期结果对照
| 验证动作 | 预期结果 |
|---|---|
| 启动后问技术栈 | 准确复述 CLAUDE.md 内容 |
claude -p单次调用 | 返回分析结果,无交互 |
claude -c -p追问 | 基于上文回答,上下文连贯 |
| 多窗口并发 | 各窗口任务独立,互不干扰 |
| 任务完成 | 系统弹出通知 |
5. 本篇常见错排查
报连接错误或 401:先检查ANTHROPIC_BASE_URL是不是写成了带路径的完整地址。正确写法是https://taotoken.net/api,不要多加/v1之类后缀。再确认 Key 没有多余空格。
CC 不读 CLAUDE.md:确认文件在项目根目录,文件名大小写完全一致。子目录里的 CLAUDE.md 只在进入该目录时生效,全局记忆要放根目录。
claude -p没有输出:检查管道输入是否为空,或者 prompt 里有没有触发权限确认。无头模式下遇到需要确认的操作会卡住,建议在 settings.json 里把只读操作设为 allow。
并发时上下文串了:每个终端是独立会话,不会自动共享上下文。如果你需要跨窗口共享项目记忆,靠的是 CLAUDE.md,不是会话本身。
通知不弹:macOS 检查系统设置里终端应用的通知权限;Linux 需要额外的通知脚本,配置路径要写绝对路径。
6. 下一步:把接入和验证固化下来
上篇到这里,链路已经跑通了:TaoToken 接入 → CLAUDE.md 记忆 → Plan Mode 规划 →claude -p无头调用 → 并发通知。这套东西的价值在于可复现——换台机器,把 settings.json 和 CLAUDE.md 拷过去就能接着干。
如果你在接入环节卡住了,先去 API Keys 页面确认 Key 状态,再对照接入文档检查 base URL:
https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_content=api-keys&utm_campaign=rewrite https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=doc&utm_campaign=rewrite想先验证模型响应风格再决定用哪个,去模型对话页试几轮:
https://taotoken.net/models?utm_source=taotoken_aicg_blog_end&utm_content=models&utm_campaign=rewrite如果你打算把 CC 长期用于编码和 Agent 工作流,Coding Plan 在并发和额度上更合适:
https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite下篇我会深入记忆机制、规则约束、权限管理和快捷操作——那些让 CC 真正贴合你和团队习惯的配置能力。上篇先把这条基础链路跑稳,下篇才有意义。