01月20日
一、今日完成情况
- dify配置一个有作用的工作流 –完成
- 包括对于参数的设定有自己的认识
- 本地知识库要嵌入向量成功
- 打通一个流程,知道各种插件功能的左右是什么,如何调用(流程不少于5个节点)
- 配置过程当中,涉及到一个好用的插件,也是github非常好用的项目, https://github.com/firecrawl/firecrawl ,据说是目前爬虫最好的项目,我体验一下。
- 预定–n8n需要打通一个项目 –未完成(使用Coze代替,国内还是Coze体验更好)
- 熟练操作写入数据,并且变换数据库的表格,变换SQL语句,花样写入数据
- 可以访问数据库,导出回答,实现这个基本功能。
- 时间有余,尝试扩展功能,把YouTube的字幕导出
- Claude Code工具初体验,实现效果是嵌入到obsidian当中。 –遇到问题
- 实验室王晶师兄任务梳理 –待完成
- 我们需要做一个AI工作流系统,对于某种分类任务要求需要达到90%以上的准确率,主要包括两方面的工作,分别是数据集的查找(1W数据)、AI工作流关键词的修改,甚至不需要修改模型,只需要修改提示词就能够达到要求。
- 我的数据集要求,找到相关的示例运行,然后让师兄判断哪些数据集是我们需要的,话题和类别可以多一点,现在数据集模板要求还没有落地,无需数量大,只要类别多。
- 注意事项:帮我抽数据的模型是阿里的通义千问32B,然后使用硅基流动的API就可以了。 DDL,明天。
- 我的数据集要求,找到相关的示例运行,然后让师兄判断哪些数据集是我们需要的,话题和类别可以多一点,现在数据集模板要求还没有落地,无需数量大,只要类别多。
- SMART分解量化:
- S:找到AI工作流的示例数据集,格式参考师兄发给我的格式
- M:5个领域,至少10种话题的数据集,数量无要求,数据集要命名 来源-主题-类别
- A:4小时内可以简单完成
- R:people:王晶师兄,工具:vscode、MCP、大模型阿里千问32B
- T:21日小下午。
- 我们需要做一个AI工作流系统,对于某种分类任务要求需要达到90%以上的准确率,主要包括两方面的工作,分别是数据集的查找(1W数据)、AI工作流关键词的修改,甚至不需要修改模型,只需要修改提示词就能够达到要求。
- 快速了解一下https服务的框架,常见的对服务器操作的行为,学会简单的使用curl 和 python requests库实现基本的操作。 –完成
二、今日感悟
- 核心业务数据:
- 工作流配置
- 知识库同步问题解决
- Claude Code 支付配置,尝试很多次了说实话,国外支付。
- 今日工作总结:
- 师兄面前可以展示自己能力,老师面前就不行了,藏拙藏拙
- 明日工作计划:
- 完成师兄数据寻找的任务
- dify配置复杂工作流
- coze尝试配置,入个门,毕竟是国内适配最好阻力最小
- 今日学习成长:
- 遇到问题解决问题呗,要耐心。
三、备注
梳理一下AI现在自动化的两种方式,第一种就是工作流的方式,就和流程图一样,把复杂的工作,写定流程,让AI一步一步来帮你完成,就和写代码一样,本质上是流程的抽象,这就是我最近在学习的dify、coze、n8n的模式:
A. Coze / n8n (工作流模式)
- 优势 (稳定快速):
- 就像火车: 必须沿着铁轨(连线)走。
- 稳定: 只要你连线没连错,它 100% 按照你的预期跑,不会乱说话。
- 快速: 不需要 AI 思考“我该用什么工具”,直接执行下一步。
- 劣势 (不可扩展):
- 如果你想加一个新功能(比如“增加发邮件功能”),你得去修改整个流程图,重新连线。
- 如果不连线,它就完全没有这个能力。
可是现在新出的MCP的原理就完全不同,AI有一个工具库,他不知道接下来的任务需要调用什么工具库,而是遇到问题解决问题,因此相对来讲,会更加智能和通用一些。
B. CC / Agent / MCP (Skills 模式)
- 优势 (通用可扩展):
- 就像出租车: 只要告诉它目的地,司机(AI)自己看地图(Context)选路。
- 可扩展: 你想加一个“发邮件”功能?只需要在配置里多注册一个 Skill (Tool) 扔进去就行了。原本的代码逻辑一行都不用改,AI 看到新工具自己就会用了。这就是评论里说的“同时配置多条工作流”。
- 劣势 (不稳定):
- 抽风风险: AI 可能会在不需要发邮件的时候突然发了一封邮件(幻觉)。
- 慢: 每次行动前,AI 都要思考(Inference),这比跑死代码要慢。
这是两种完全不同的范式,所以下面这句话总结的特别好:AI 应用开发中两种截然不同的架构范式:Workflow(工作流) vs Agentic Skills(智能体技能)。
那么最近特别火的skill技术,其发展的背景和原理又是怎么样的呢?
评论原话:“预加载精简指令 + 按需加载 prompt... 本质上是 ctx eng 的技术”
这里的术语,需要分解一下到底是什么意思。
Ctx Eng (Context Engineering,上下文工程):
- 这就是所谓的“上下文工程”。因为 LLM 的窗口(Context Window)是昂贵的且有限的(输入太多会变笨),所以不能一股脑把所有知识库都塞进去。
- Skills 技术的本质: 动态管理上下文。用最少的 Token 维持最多的“可能性”。
同时,prompt的提示词不是一股脑的告诉AI,而是根据需求,随机应变,赋予AI新的身份。只给 AI 一个“菜单”(几百字):你现在有3个技能:1. search_twitter (用于搜索推文), 2. query_db (用于查库)...。
所以我的理解是,AI工作流相当于写代码,只不过抽象层级更高,能够涉及的应用更广,本质上还是代码的那一套流程图思路,而MCP这一套就完全不同了,AI不断的尝试调用工具,解决问题,其上限会更高。
四、dify配置
1、知识库同步问题
知识库一直停留在排队的队列状态,现在需要排查问题,问题可能性情况如下:
1、网络代理问题,导致API访问不到Google的服务,嵌入模型运行失败:
修改配置文件,让代理指向7897端口,重启项目:
其中第11-13行修改
重启Docker:
docker compose up -d
发现问题还没解决,所以需要查看网络链路问题,现在进入调试状态:
docker compose exec api bash
在调试状态下,可以访问网络通路
curl -I https://generativelanguage.googleapis.com
发现网络通路并没有问题,可以直接得到200通路效果
2、Docker端口占用或者组件未启动:
在Docker的组件当中,有一个没启动,我单独点击,依然没有启动,于是我打算看看这个项目是干嘛的,咨询查找之后。
这是一个 “一次性任务容器” (Init Container)。它的作用通常是在 Dify 启动的最开始,快速运行一下,把文件夹的权限(chmod/chown)设置好,确保数据库和文件存储能被正常读写。
启动 -> 执行命令 -> 自动退出
所以现在这个项目是正常情况,已经启动过了,不需要再次启动了。
3、查看日志,寻找报错信息:
指令如下:
docker compose logs -f worker
worker-1 | 2026-01-20 03:29:10.472 INFO [Dummy-5] [document_indexing_task.py:51] 7163deb4f7c853fdb2998542e7b41c25 - Dataset is not found: 3801b5b1-b875-439c-9f43-45357fdd9f15
worker-1 | 2026-01-20 03:29:10.474 INFO [Dummy-5] [document_indexing_task.py:131] 7163deb4f7c853fdb2998542e7b41c25 - document indexing tenant isolation queue b8686f4f-c4ae-4c85-ac95-f4a118abd298 next tasks: []
worker-1 | 2026-01-20 03:29:10.491 INFO [Dummy-5] [trace.py:128] 7163deb4f7c853fdb2998542e7b41c25 - Task tasks.document_indexing_task.priority_document_indexing_task[6f3bd39b-300b-4da8-b3da-4da4c38a3ed9] succeeded in 0.024037958000008075s: None
worker-1 | 2026-01-20 03:29:12.467 INFO [MainThread] [strategy.py:161] - Task tasks.document_indexing_task.priority_document_indexing_task[a653ae75-03b9-48d8-84c6-43559731314d] received
可以看到,任务没有超时,也没有卡死,但是存在的问题是,Dataset 没有找到,面对这个问题,其实还好
这说明出现了 “幽灵任务” (Zombie Task)。
- Redis(任务队列) 里还留着一张“工单”,让工人去处理 ID 为
3801...的数据集。 - Postgres(数据库) 里却说:“查无此人,这个数据集不存在”。
把 Redis 里积压的这些“找不到数据”的废弃任务全部清空。终端执行任务:
# 进入 Redis 容器并清空所有缓存数据
docker compose exec redis redis-cli -a difyai123456 FLUSHALL
(注:-a difyai123456 是 Dify 默认的 Redis 密码,如果改过 .env 里的密码,请替换它。如果提示 OK,说明清理成功。)
重启Docker,然后再次上传文件。
4、访问API频率过高问题:
任务开始运行,没毛病,现在遇到新问题,就是API调用频率过高的问题,导致Google服务中断。
服务中断日志如下:
[models] Connection Error, 429 RESOURCE_EXHAUSTED. {'error': {'code': 429, 'message': "Quota exceeded for quota metric 'Read API requests' and limit 'Model operations request limit per minute for a region' of service 'generativelanguage.googleapis.com' for consumer 'project_number:695238240160'.", 'status': 'RESOURCE_EXHAUSTED', 'details': [{'@type': 'type.googleapis.com/google.rpc.ErrorInfo', 'reason': 'RATE_LIMIT_EXCEEDED', 'domain': 'googleapis.com', 'metadata': {'consumer': 'projects/695238240160', 'service': 'generativelanguage.googleapis.com', 'quota_limit': 'ModelRequestsPerMinutePerProjectPerRegion', 'quota_limit_value': '200', 'quota_metric': 'generativelanguage.googleapis.com/model_requests', 'quota_location': 'asia-southeast1', 'quota_unit': '1/min/{project}/{region}'}}, {'@type': 'type.googleapis.com/google.rpc.Help', 'links': [{'description': 'Request a higher quota limit.', 'url': 'https://cloud.google.com/docs/quotas/help/request_increase'}]}]}}
从日志可以看出来,是频率的问题,官方的解释是这样的
- 错误代码:
429 RESOURCE_EXHAUSTED - 原因:Quota exceeded(配额超限)。
- 具体细节:触发了 Google Gemini API 的 每分钟请求数限制 (RPM)。报错显示限制可能是
200次/分钟,或者是免费版的更低限制。
解决方法,使用离线的模型,这样效率可以成倍增加,支持并行和API的高频率调用,我打算选用ollama的嵌入模型,主要适配中文。
2、离线模型配置
这是目前做中文 RAG 的首选模型,支持多语言且对中文优化的非常好, 体积为1GB,满足我的小内存要求。
ollama pull bge-m3
测试运行是否满足要求:
curl http://localhost:11434/api/embeddings -d '{
"model": "bge-m3",
"prompt": "你好,测试中文向量"
}'
基础地址配置方法:http://host.docker.internal:11434
模型名称,链接还有上下文非常重要,不能配置错误。
这里有一个小问题,就是导入文件,要新建知识库,然后导入,而不是直接导入,不然会有问题。
3、知识库问答拓扑
- 线1:
USER INPUT->Knowledge Retrieval - 线2:
Knowledge Retrieval->LLM - 线3:
LLM->OUTPUT
关于配置问题,USER INPUT,这里的输入就是String格式,对于语音问答系统来说,所以没有什么值得注意的。
Knowledge Retrieval,是知识库的检索,众所周知,向量化数据库在召回所需要的文本之后,这只是非常粗略的筛选,可是不够精细,因此需要重拍,一下就是重排模型的配置:
这里的TOP K是最大检索的数量,为了让喂给大语言模型的资料更加充足,这里我选择10条,让检索效果更好一些。
这里的各种配置需要简单介绍,防止下次配置的时候,不知道怎么配,配什么内容。
这个知识库输出的格式,这里的是确定的,主要喂给AI的还是上下文内容,其他参数相对来讲还好一点。![]()
METADATA FILTERING (元数据过滤):
- 普通检索:你问管理员“帮我找关于‘AI’的书”,管理员会把所有书里带“AI”的都搬出来。
- 元数据过滤:你问管理员“帮我找2024年出版的、**关于‘AI’**的书”。这里的“2024年”就是元数据(Metadata)。
这里的元数据过滤可以自定义,定义筛选的方法:![]()
至此,项目已经完成成功,下面是运行的效果:
五、Firecrawl上手
1、为什么要学这个项目:
Firecrawl 是为 AI 时代量身定制的“超级爬虫”
传统爬虫的缺点如下,点点致命:
痛点: 网站改版了,原来的爬虫脚本(CSS 选择器)就失效了,你得不停地修代码。
痛点: 你想抓取整个文档中心或博客,但没有站点地图(Sitemap),手动一个一个链接点开太累。
痛点: 你想给你的 AI 助手(如 RAG 系统或知识库)喂一些最新的网页信息,但提取出来的东西全是乱码或无关信息。
| 场景 | 你的需求 | Firecrawl 怎么做 |
|---|---|---|
| Deep Research (深研) | 写一份行业报告,需要搜索并分析 10 个竞争对手网站 | 使用 /search 接口,它会搜完直接把结果里的网页内容全部抓回来给你 |
| RAG 知识库构建 | 把某个产品的官方文档全部导入你的本地大模型 | 使用 /crawl 接口,一键将整个文档中心转换成 Markdown 文件夹 |
| 自动化价格监测 | 监控某电商网站,当商品降价时提醒你 | 使用 /extract 接口,按你定义的 JSON 模式定时提取价格字段 |
| 所以,对于我这种B站高强度使用的用户来说,这个项目可以帮我实时检索B站的热点,帮我筛选视频哦,这超级爬虫还是很满足我的个人需求了,学习起来吧。 |
私有化部署的好处如下:
- 数据隐私: 你抓取的数据不会流经第三方服务器。
- 无限额度: 自己部署后,不再受官方 API 的调用次数和额度限制(仅受限于你服务器的性能)。
- 完美集成: 它可以作为 MCP Server 轻松集成到 Cursor、Claude 或你自己的 AI Agent 工作流中。
为什么我的普通服务器无法私有化部署,原因如下:
Firecrawl 的架构包含多个组件,它们在 Docker 中是同时运行的:
- Playwright 服务: 这是最耗内存的部分,它本质上是在后台运行无头浏览器(Chromium)来解析网页。
- Redis & Postgres: 用于任务队列和数据存储。
- API & Worker: 处理请求和抓取逻辑。
推荐配置: 至少 4GB RAM + 2 核 CPU 才能保证基本的流畅运行。所以,使用实验室的服务器正好,这就这决定了,只要能够连接校园网,就可以运行这个服务。
2、快速上手
示例代码可以跑一下,这里使用的是API的方法,也就是非私有部署:
from firecrawl import Firecrawl
firecrawl = Firecrawl(api_key="fc-YOUR_API_KEY")
# Scrape a website (returns a Document)
doc = firecrawl.scrape(
"https://firecrawl.dev",
formats=["markdown", "html"],
)
print(doc.markdown)
# Crawl a website
response = firecrawl.crawl(
"https://firecrawl.dev",
limit=100,
scrape_options={"formats": ["markdown", "html"]},
poll_interval=30,
)
print(response)
六、准备开新坑–API协议说明书
后端开发和 API 集成的核心——HTTP 协议
python(requests)和curl在发送请求的时候,无一例外都是使用http请求的,因此我必须要学习一下这两个的原理,打包方式,代码编写方式,以及协议的转化方式。
1、数据包结构
所有的 API 请求,无论用什么语言写,都逃不开这三个部分:动词 (Method)、头 (Headers)、身体 (Body)。
「协议 → 数据包 → curl → Python」
动词有哪些呢?
| Method | 语义 | 是否有 Body | 典型用途 |
|---|---|---|---|
| GET | 获取资源 | ❌(规范上) | 查询数据 |
| POST | 创建 / 提交 | ✅ | 登录、提交表单 |
| PUT | 整体更新 | ✅ | 更新全部资源 |
| PATCH | 局部更新 | ✅ | 更新部分字段 |
| DELETE | 删除资源 | 可选 | 删除 |
2、指令理论
a、以下是GET的原理方法:
这里中间的发送的内容是空的:
curl https://httpbin.org/get
相当于发送:GET /get HTTP/1.1
这里是直接访问网址,需要从网址得到内容,下面将展示如何传数据:
curl "https://httpbin.org/get?name=kipley&age=18"
相当于发送:GET /get?name=kipley&age=18 HTTP/1.1
这里如果翻译为python,表述如下:
import requests
resp = requests.get(
"https://httpbin.org/get",
params={
"name": "kipley",
"age": 18
}
)
print(resp.text)
如果有header的话,那就加入 header = {} 的参数,照猫画虎就可以了。
| HTTP 概念 | requests |
|---|---|
| Method | requests.get() |
| Query 参数 | params= |
| Headers | headers= |
| Body | ❌ |
b、以下是post的方法:
post是发送内容,提交表单。
curl -X POST https://httpbin.org/post \
-H "Content-Type: application/json" \
-d '{"username":"admin","password":"123456"}'
等价的 HTTP 数据包:
POST /post HTTP/1.1
Host: httpbin.org
Content-Type: application/json
Content-Length: 43
{"username":"admin","password":"123456"}
等价的python的request代码:
import requests
resp = requests.post(
"https://httpbin.org/post",
json={
"username": "admin",
"password": "123456"
}
)
print(resp.json())
3、指令实践
参考这个文档, https://api-docs.deepseek.com/api/list-models ,介绍了curl的模板格式。
curl https://api.deepseek.com/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_DEEPSEEK_API_KEY" \
-d '{
"model": "deepseek-chat",
"messages": [
{"role": "system", "content": "You are a helpful assistant."},
{"role": "user", "content": "你好,请介绍一下你自己"}
],
"stream": false
}'
模板上的教程解释如下(我替换token):
我的token简单记录一下:sk-ac9de92adbf84894a983f8c48bd34e64
curl -L -X POST 'https://api.deepseek.com/chat/completions' \
-H 'Content-Type: application/json' \
-H 'Accept: application/json' \
-H 'Authorization: Bearer sk-ac9de92adbf84894a983f8c48bd34e64' \
--data-raw '{
"messages": [
{
"content": "You are a helpful assistant",
"role": "system"
},
{
"content": "Hi",
"role": "user"
}
],
"model": "deepseek-chat",
"thinking": {
"type": "disabled"
},
"frequency_penalty": 0,
"max_tokens": 4096,
"presence_penalty": 0,
"response_format": {
"type": "text"
},
"stop": null,
"stream": false,
"stream_options": null,
"temperature": 1,
"top_p": 1,
"tools": null,
"tool_choice": "none",
"logprobs": false,
"top_logprobs": null
}'
这个post请求发送之后,返回的内容如下:
{"id":"7dd7c25b-0efa-4396-b6e6-b680f2352bba","object":"chat.completion","created":1768912348,"model":"deepseek-chat","choices":[{"index":0,"message":{"role":"assistant","content":"Hello! How can I assist you today? 😊"},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":10,"completion_tokens":11,"total_tokens":21,"prompt_tokens_details":{"cached_tokens":0},"prompt_cache_hit_tokens":0,"prompt_cache_miss_tokens":10},"system_fingerprint":"fp_eaab8d114b_prod0820_fp8_kvcache"}**%**
我翻译为python代码尝试一下:
import requests
url = "https://api.deepseek.com/chat/completions"
headers = {
"Content-Type": "application/json",
"Accept": "application/json",
"Authorization": "Bearer sk-ac9de92adbf84894a983f8c48bd34e64"
}
payload = {
"messages": [
{
"content": "You are a helpful assistant",
"role": "system"
},
{
"content": "Hi",
"role": "user"
}
],
"model": "deepseek-chat",
"thinking": {
"type": "disabled"
},
"frequency_penalty": 0,
"max_tokens": 4096,
"presence_penalty": 0,
"response_format": {
"type": "text"
},
"stop": None,
"stream": False,
"stream_options": None,
"temperature": 1,
"top_p": 1,
"tools": None,
"tool_choice": "none",
"logprobs": False,
"top_logprobs": None
}
response = requests.post(
url,
headers=headers,
json=payload, # ← 自动 JSON 序列化
timeout=25
)
print(response.json())
单独调试,发送信息之后显示返回的response如下:
{'id': 'ea4b088b-db29-4b93-9127-be865a4cef76', 'object': 'chat.completion', 'created': 1768912827, 'model': 'deepseek-chat', 'choices': [{'index': 0, 'message': {'role': 'assistant', 'content': 'Hello! How can I assist you today? 😊'}, 'logprobs': None, 'finish_reason': 'stop'}], 'usage': {'prompt_tokens': 10, 'completion_tokens': 11, 'total_tokens': 21, 'prompt_tokens_details': {'cached_tokens': 0}, 'prompt_cache_hit_tokens': 0, 'prompt_cache_miss_tokens': 10}, 'system_fingerprint': 'fp_eaab8d114b_prod0820_fp8_kvcache'}
七、Claude Code 初上手
长远考虑,作为一个专业极客来说,Claude Code是一定要学会的,唯一的问题只是Claude API的模型访问困哪,不过这个框架可以配置其他API,没问题。
启动终端
claude
出师未捷身先死,这里显示访问服务失败,看看是什么问题。
网络没问题,是这个终端连接是需要官方的API的,果然被卡主了。
代理地址一点问题都没有,新加坡的纯净地址,这里的银行卡卡住了,这一步真是一点都绕不过去,不然我ChatGPT和Claude就打通了:![]()
有点烦,虚拟信用卡之前可以用的那家公司也倒闭了,而且香港卡也没法使用。自己有一张国内的万事达卡,可是无法消费,据说Claude是比OpenAI还要严格的。下面评估一下各种方案以及其可行性,B站YouTube吹得天花乱坠的,Claude新出的功能多少好,真正国内执行起来就是难度很大嘛。
“风控三角”:IP 地址、账单地址、卡片归属地
我的IP地址一定是新加坡,我的地址是纯净的地址,所以我也不会更换,那就是支付卡的位置问题。
支付网关使用的是 Stripe,且风控策略比 OpenAI 还要严格。它不仅检测 IP,还会检测卡段(BIN Code)。
虚拟卡比如说Prepaid Debit 容易被分控,然后账号就被加入黑名单了,导致刚刚充值就封号。
方案 1:尝试 WildCard 或 Crydit(如果不怕折腾)
- 目前国内开发者圈子里,WildCard 的成功率在近期似乎比 Crydit 稍高一些,专门针对 OpenAI/Claude 做过优化(但也比普通卡贵)。
可是野卡现在跑路了,所以找不到比野卡还要成功率高的公司了。
方案 2:找代充/代付(风险高但省事)
- 市面上有专门出售“已绑定好卡并充值了 5 美元 API 额度”的 Claude 账号(通常被称为“带 API 的号”)。
- 风险: 这种号容易被封,因为可能是黑卡刷的。极其不推荐。
方案 C:代付服务(推荐备选)
- 有一些合规的代付服务(Virtual Credit Card specifically for Ads/SaaS),比如某些面向跨境电商的支付平台,可以尝试搜索支持 Stripe 的企业级虚拟卡,但门槛较高。
最安全的方案,使用国内中转API,稍微贵一点。正在尝试ing。
1、国内使用教程
Claude Code 安装指南
Claude Code 对于中国大陆用户,直接使用面临网络与账号双重门槛。但可以通过本地部署 + 国产大模型兼容层(GLM/DeepSeek)方案,实现无障碍安装使用。
操作起来很简单,只需要3个步骤即可。
1. 基础环境与工具安装
Claude Code 依赖 Node.js 环境运行。请确保已安装 Node.js。
下载Nodejs之后,双击安装即可。
打开终端(Windows 推荐 PowerShell/CMD,Mac 使用 Terminal),按顺序执行以下命令完成从检查到安装的全流程:
- 检查 Node.js 环境(必须有版本号返回)
node -v
npm -v
- 安装 Claude Code(使用 -g 进行全局安装)
npm install -g @anthropic-ai/claude-code
- 验证安装
claude --version
看到版本号即安装成功。输出示例:2.1.2 (Claude Code)
如果在npm install这一步遇到卡顿,建议搜索watt toolkit加速器(windows应用商店搜索然后安装),或者使用国内npm中转,具体做法是在npm install命令后面添加参数:
npm install -g @anthropic-ai/claude-code --registry=https://registry.npmmirror.com
2. Claude账号问题
安装完成后,需要解决“谁来驱动”的问题,根据你的网络与账号情况选择路径:
路径 A:标准模式(美国、欧洲等支持地区)
如果你身处海外环境且有 Anthropic 账号,直接运行claude login,系统会打开浏览器,让你登录Claude,进行 OAuth 授权。登录完成后即可顺畅使用Claude Code。那么对于你来说,现在已经安装成功了。路径 B:兼容模式(中国大陆推荐)
国内用户无需注册 Anthropic 账号,可直接使用智谱 GLM或DeepSeek的 API 来驱动 Claude Code。这两者均提供了官方兼容接口。具体看第三步。
3. 核心配置:使用兼容模型,绕过Claude登录验证
为了让 Claude Code 连接到兼容模型(智谱GLM, DeepSeek)。
- 请求 / 响应结构与 Anthropic 基本一致
- 可直接作为 Claude Code 的后端
- 不需要登录 Anthropic 官网账号
方案一:通过命令行设置环境变量
我们需要配置 BASE_URL 和 API_KEY
为了避免每次重启终端丢失配置,以下命令将直接写入系统永久环境变量。
- 智谱 GLM Base URL:
https://open.bigmodel.cn/api/anthropic - DeepSeek Base URL:
https://api.deepseek.com/anthropic
请根据你的系统,复制对应的命令块运行(只需运行一次):
Windows 用户 (CMD 命令提示符)
使用 setx 命令写入用户级永久变量
setx ANTHROPIC_BASE_URL "https://open.bigmodel.cn/api/anthropic"
setx ANTHROPIC_AUTH_TOKEN "你的_GLM_API_KEY"
setx ANTHROPIC_MODEL "glm-4.6"
注意:运行后需重启 CMD 窗口才会生效
macOS / Linux 用户 (Shell)
echo 'export ANTHROPIC_BASE_URL="https://open.bigmodel.cn/api/anthropic"' >> ~/.zshrc
echo 'export ANTHROPIC_AUTH_TOKEN="你的_GLM_API_KEY"' >> ~/.zshrc
echo 'export ANTHROPIC_MODEL=glm-4.6' >> ~/.zshrc
source ~/.zshrc
如果使用DeepSeek则使用DeepSeek的url和api key,模型名则是deepseek-chat。
方案二:通过配置文件修改环境变量
通过修改本地配置文件,可以强制 Claude Code (CLI) 连接到 DeepSeek 或其他兼容 Anthropic 协议的模型,并跳过官方的浏览器登录验证。
1. 文件结构总览
需要修改的文件位于用户根目录下。请确保文件位置和层级完全一致:
C:\Users\用户名\
│
├── 📄 .claude.json <-- 【状态文件】 修改这个文件内容,添加"hasCompletedOnboarding": true,
│
└── 📂 .claude\ <-- 【配置文件夹】 这是claude全局文件夹
└── ⚙️ settings.json <-- 【配置文件】 新建这个settings.json文件,并添加环境变量
2. 详细配置指南
- 配置 API 连接 (
.claude\settings.json)
此文件用于接管网络请求,将其重定向到第三方服务(如 GLM/DeepSeek)。
- 路径:
C:\Users\你的用户名\.claude\settings.json - 内容: 新建这个setting.json文件,用记事本打开,在里面添加下面这段内容:
{
"env": {
// 将地址改为 DeepSeek 或 GLM 的 Anthropic 兼容接口
"ANTHROPIC_BASE_URL": "https://api.deepseek.com/anthropic",
// 填写对应的 API Key
"ANTHROPIC_AUTH_TOKEN": "你的API Key",
// 禁用遥测和联网检查,防止因地区问题导致的报错
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}
- 绕过登录验证 (
.claude.json)
此文件用于伪造“老用户”状态,防止 CLI 启动时弹出浏览器进行 OAuth 验证。
- 路径:
C:\Users\你的用户名\.claude.json - 内容: 用记事本打开这个文件,在其中添加一项
"hasCompletedOnboarding": true, // 核心:告诉程序已完成新手引导,直接进入对话
3. 启动与常用指令
环境变量配置完毕后,无需登录,直接启动即可。
- 启动程序:在命令行中输入
claude,然后回车。- 成功标志:出现 “Welcome to Claude Code” 欢迎语,且未弹出浏览器。
- 退出程序:在交互界面输入
exit,回车。
常用交互指令:
/clear:清除上下文记忆(节省 Token,开启新任务时推荐)。/compact:压缩上下文(处理长任务时使用)。/help:查看所有可用命令。Alt + Enter(Win) /Opt + Enter(Mac):在对话框中换行。
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。可以在下面评论区评论,也可以邮件至 kipleyarch@gmail.com