Vibe Coding方案兜底准备1
背景
按照工具形式来分,AI编程工具还是分为传统IDE+AI插件、AI原生IDE、CLI这么几种方式。

我本人用vscode用惯了,走的还是传统IDE+AI插件的形式。
比如说copilot插件(用国外模型),国内模型厂商比如说字节的trae等,
总之插件有很多,什么cline、Roo都是两三年前就火的了。
AI原生的IDE,以前试过Cursor,不过限于贫穷,没培养起来手感,一直没继续下去。
至于终端,基本上火起来的就那么几家,比如说是opencode、claude code、codex。
事情起因:老登我因为用惯了vscode copilot,其中各家model厂商提供更新,关注比较多的是model之间的bench,但是也没有充会员。
所以一直没有太关注最近一年内的Agent等AI进展,也不是很清楚各种最新工具的应用和进展,
也只是简简单单看过一些公众号。
这不某日,触发了copilot的rate limit,

我又闲了下来,想起来不能够简单地坐吃山空,毕竟我手头上有一批模型api,不能够白白浪费,
之前又接触过国内厂商的coding plan,也得做好完全准备,
就是至少得日后能够闭环使用国内AI模型执行工作流程,不然copilot一去就完蛋了,到时候退潮了发现自己除了退化到只能网页端点点点就来不及了。
国外御三家就claude
国内御三家就glm
要性价比就用国产模型,glm 5.1之类的。真便宜,在常见任务上效果也是第一梯队的
试试codex吧,可以自己薅每个新号一个月的免费plus,也可以买网上十块钱一个月的plus
其实对于国内的coding plan,那些所谓的要抢注册,抢的套餐,
抢的是比较便宜的plan,买api不用抢,直接充值然后创建api-key就行
用的opencode,接学校的glm也超级难用,一开始报错超出32768tokens限制,设置了输入输出限额后才能使,但运行起来也非常慢,感觉是共通问题。
学校几个模型试下来,也是只有deepseek和minimax算是可以用的(对于opencode),minimax运行最流畅。
至于cc和opencode还是不太适配(因为学校官方也只是想着让我们用这些api来养龙虾,而不是去用编程智能体)
Claude Code


安装步骤
我先尝试在windows上安装
1,WinGet安装Git
# powershell等win终端中
winget install Git.Git

2,官方原生安装命令
# 依旧终端
irm https://claude.ai/install.ps1 | iex
如果vpn有点问题的话,那还是用WinGet来一步一步安装
# 依旧终端
winget install Anthropic.ClaudeCode

注意要重启一下:再输入
claude

3,有了框架再接模型
前面只是借了claude code这个框架,但是配置的模型还没有定下来。
当然,claude自家也是有模型的,但是鉴于claude的风控,
以及注册账号的繁琐手续、对于vpn的严格要求,其实我是没有试过的

事实上,如果我有claude账号,我也不会做上面的操作。
所以,这里我们选择使用其他家的model,我之前博客中提到过国产各厂家自己的coding plan,
只能说,现在用国外主流模型财力不足,用用国内的还是可以的,至少还有模型可以用,而且费用可及。
CC switch
为了能够接入其他模型并且随意切换,我们这里用CC switch,当然也可以尝试使用claude code router
参考官网:https://github.com/farion1231/cc-switch




我们选择windows的



点击进去页面很简洁,可以看到其实不仅适用于Claude Code,Codex、小龙虾这些都能用

因为我们这里还没配置,所以目前只有Claude官方的模型配置,但是就像前面说的,我本人暂时没有办法和财力通过正规手段使用claude官方的模型,也许可以通过第三方厂商提供,或者试试国内神器的淘宝和某鱼,看看有没有hefa渠道。

然后下面这里就是新增模型配置

可以看到,模型提供商还是挺多的:
其中还有copilot

我们以质谱GLM为例,

其实要填的就两部分:API key获取,与模型配置

然后这里的话,有1个问题:
是买各家厂商自己coding plan
还是买模型提供商自家api
此处参考:https://claw.sjtu.edu.cn/guide/sjtu-api/

我主要使用GLM 5.0,然后下面是内部方案


3. 模型调用示例
模型地址 base_url:https://models.sjtu.edu.cn/api/v1
模型密钥 api-key:your_api_key(申请到的密钥)
查看当前可调用模型名称
curl -v 'https://models.sjtu.edu.cn/api/v1/models' -H 'Authorization: Bearer your-api-key'
然后返回的模型列表如下
{
"data": [
{
"id": "qwen3coder",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
},
{
"id": "deepseek-v3.2",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
},
{
"id": "deepseek-reasoner",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
},
{
"id": "glm-5",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
},
{
"id": "minimax-m2.5",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
},
{
"id": "minimax",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
},
{
"id": "deepseek-chat",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
},
{
"id": "qwen3vl",
"object": "model",
"created": 1677610602,
"owned_by": "openai"
}
],
"object": "list"
}
基本上和前面的模型列表对应一致。
重要提醒:
调用模型时,请使用 API 返回的 id 字段(如 deepseek-chat)作为调用参数。请勿直接使用您在申请表格里填写的模型名称。
DeepSeek V3.2和MiniMax M2.5模型对应多个调用名,均可正常使用。
然后下面是使用示例,
- 常规文本对话(以 deepseek-chat 为例,Windows用户建议使用WSL,macOS、Linux用户终端运行即可)
curl --location --request POST 'https://models.sjtu.edu.cn/api/v1/chat/completions' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer your-api-key' \
--data '{
"model": "deepseek-chat",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "请介绍上海交通大学"
}
],
"stream": false
}'

简单来说,这就是一条使用内部AI模型API的POST请求curl命令,然后用于调用deepseek-chat模型进行文本对话。向校内AI接口发送非流式对话请求,用deepseek-chat回答“我们提出的问题”,需替换your-api-key并在校网/VPN环境运行。
- 请求基础
--location:跟随重定向--request POST:指定HTTP请求方法为POST- 目标地址:
https://models.sjtu.edu.cn/api/v1/chat/completions(交大本地大模型对话接口)
- 请求头
Accept: application/json:接收JSON格式响应Content-Type: application/json:请求体为JSON格式Authorization: Bearer your-api-key:身份校验,需替换为申请的API-KEY
- 请求体(JSON)
model: deepseek-chat:指定调用DeepSeek常规对话模型messages:对话上下文,含system设定与用户问题stream: false:关闭流式输出,一次性返回完整结果
- 深度推理对话(以 deepseek-reasoner 为例)
curl --location --request POST 'https://models.sjtu.edu.cn/api/v1/chat/completions' \
--header 'Accept: application/json' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer your-api-key' \
--data '{
"model": "deepseek-reasoner",
"messages": [
{
"role": "system",
"content": "You are a helpful assistant."
},
{
"role": "user",
"content": "请介绍上海"
}
],
"stream": false
}'

我们可以看到,其中正常的回答在content中,然后推理的过程在 reasoning_content中,

请求方式:POST 访问交大本地大模型接口 https://models.sjtu.edu.cn/api/v1/chat/completions
身份校验:请求头携带 Authorization: Bearer your-api-key 完成鉴权
模型指定:model 设为 deepseek-reasoner,启用深度推理模式
对话结构:包含 system 设定与 user 提问,stream: false 表示一次性返回完整结果
返回特点:除正常回答外,会额外输出reasoning_content思考过程
- 图像模型调用示例
图片示例参考:https://studio.hpc.sjtu.edu.cn/dex/theme/logo.png

# 先下载图片并转为 base64
base64_logo=$(curl -s "https://studio.hpc.sjtu.edu.cn/dex/theme/logo.png" | base64 -w 0)
把一张在线图片,直接转成可以复制粘贴、纯文本格式的 Base64 编码字符串

curl --location --request POST 'https://models.sjtu.edu.cn/api/v1/chat/completions' \
--header 'Authorization: Bearer your-api-key' \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3vl",
"messages": [{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "data:image/png;base64,'"$base64_logo"'"
}
},
{"type": "text", "text": "Explain the details in the image."}
]
}],
"stream": false
}'

下载图片并转 Base64
用 curl 拉取 logo.png,直接通过管道转 base64 字符串存入变量 base64_logo。
发起 POST 请求
地址:https://models.sjtu.edu.cn/api/v1/chat/completions
鉴权:Authorization: Bearer your-api-key
模型:qwen3vl(多模态看图)
消息格式
传入 image_url,用 data:image/png;base64,... 拼接 Base64 图片
附带文本指令:Explain the details in the image.
关键约束
必须校内网 / VPN
图片必须是Base64 内嵌,不支持远程 URL
stream: false 表示一次性返回结果
因为前面还传出了代码,所以我们想看看这个代码到底是否可行(其中所有的null值我都替换为了None值)
import json
dict1 = {"id":"chatcmpl-f52ae84e-bcd3-4f67-b77a-43746b7ebbc8","created":1776833846,"model":"qwen3-vl-30b","object":"chat.completion","system_fingerprint":None,"choices":[{"finish_reason":"stop","index":0,"message":{"content":"这张图片展示的是一个标志(logo),包含以下元素:\n\n- 一个红色的希腊字母 π(pi)符号,其右下角有一个小的 \"2.0\" 标记,表示版本或系列。\n- 紧接着是黑色的 \"HPC Studio\" 文字。\n- \"Studio\" 中的 \"o\" 被一个红色的圆圈替代,圆圈中有一个白色的 \"C\",这可能是 \"C\" 的变体,也可能代表 \"C\" 作为 \"C++\" 或 \"C\" 语言的象征。\n\n这个标志可能属于一个名为 \"HPC Studio\" 的公司或项目,其中 \"HPC\" 通常代表 \"High-Performance Computing\"(高性能计算),而 \"Studio\" 表示这是一个工作室或开发环境。\n\n要复现这个标志,我们可以使用 Python 的 `matplotlib` 库来绘制\n\n```python\nimport matplotlib.pyplot as plt\nfrom matplotlib.patches import Circle\nfrom matplotlib.text import Text\n\n# 创建图形和轴\nfig, ax = plt.subplots(figsize=(10, 2))\n\n# 设置背景为白色\nax.set_facecolor('white')\n\n# 添加 π 符号和 2.0\npi_text = ax.text(0.05, 0.5, r'$\\pi$', fontsize=100, color='red', transform=ax.transAxes)\n# 添加 2.0\ntwo_zero = ax.text(0.1, 0.55, '2.0', fontsize=20, color='red', transform=ax.transAxes)\n\n# 添加 HPC Studio 文字\nhpc_text = ax.text(0.2, 0.5, 'HPC Studio', fontsize=60, color='black', transform=ax.transAxes)\n\n# 修改 \"Studio\" 中的 \"o\" 为红色圆圈,内部有白色 \"C\"\n# 找到 \"Studio\" 中的 \"o\" 的位置\no_text = ax.text(0.55, 0.5, 'o', fontsize=60, color='red', transform=ax.transAxes)\n# 移除 \"o\" 文字\no_text.set_text('')\n\n# 添加红色圆圈\ncircle = Circle((0.55, 0.5), 0.05, color='red', fill=True, transform=ax.transAxes)\nax.add_patch(circle)\n\n# 在圆圈中添加白色 \"C\"\nc_text = ax.text(0.55, 0.5, 'C', fontsize=30, color='white', transform=ax.transAxes)\n\n# 隐藏坐标轴\nax.set_xlim(0, 1)\nax.set_ylim(0, 1)\nax.axis('off')\n\n# �\n\n```","role":"assistant","tool_calls":None,"function_call":None},"provider_specific_fields":{"stop_reason":None,"token_ids":None}}],"usage":{"completion_tokens":580,"prompt_tokens":93,"total_tokens":673,"completion_tokens_details":None,"prompt_tokens_details":None},"service_tier":None,"prompt_logprobs":None,"prompt_token_ids":None,"kv_transfer_params":None}
print(json.dumps(dict1, indent=4, ensure_ascii=False))
{
"id": "chatcmpl-f52ae84e-bcd3-4f67-b77a-43746b7ebbc8",
"created": 1776833846,
"model": "qwen3-vl-30b",
"object": "chat.completion",
"system_fingerprint": null,
"choices": [
{
"finish_reason": "stop",
"index": 0,
"message": {
"content": "这张图片展示的是一个标志(logo),包含以下元素:\n\n- 一个红色的希腊字母 π(pi)符号,其右下角有一个小的 \"2.0\" 标记,表示版本或系列。\n- 紧接着是黑色的 \"HPC Studio\" 文字。\n- \"Studio\" 中的 \"o\" 被一个红色的圆圈替代,圆圈中有一个白色的 \"C\",这可能是 \"C\" 的变体,也可能代表 \"C\" 作为 \"C++\" 或 \"C\" 语言的象征。\n\n这个标志可能属于一个名为 \"HPC Studio\" 的公司或项目,其中 \"HPC\" 通常代表 \"High-Performance Computing\"(高性能计算),而 \"Studio\" 表示这是一个工作室或开发环境。\n\n要复现这个标志,我们可以使用 Python 的 `matplotlib` 库来绘制\n\n```python\nimport matplotlib.pyplot as plt\nfrom matplotlib.patches import Circle\nfrom matplotlib.text import Text\n\n# 创建图形和轴\nfig, ax = plt.subplots(figsize=(10, 2))\n\n# 设置背景为白色\nax.set_facecolor('white')\n\n# 添加 π 符号和 2.0\npi_text = ax.text(0.05, 0.5, r'$\\pi$', fontsize=100, color='red', transform=ax.transAxes)\n# 添加 2.0\ntwo_zero = ax.text(0.1, 0.55, '2.0', fontsize=20, color='red', transform=ax.transAxes)\n\n# 添加 HPC Studio 文字\nhpc_text = ax.text(0.2, 0.5, 'HPC Studio', fontsize=60, color='black', transform=ax.transAxes)\n\n# 修改 \"Studio\" 中的 \"o\" 为红色圆圈,内部有白色 \"C\"\n# 找到 \"Studio\" 中的 \"o\" 的位置\no_text = ax.text(0.55, 0.5, 'o', fontsize=60, color='red', transform=ax.transAxes)\n# 移除 \"o\" 文字\no_text.set_text('')\n\n# 添加红色圆圈\ncircle = Circle((0.55, 0.5), 0.05, color='red', fill=True, transform=ax.transAxes)\nax.add_patch(circle)\n\n# 在圆圈中添加白色 \"C\"\nc_text = ax.text(0.55, 0.5, 'C', fontsize=30, color='white', transform=ax.transAxes)\n\n# 隐藏坐标轴\nax.set_xlim(0, 1)\nax.set_ylim(0, 1)\nax.axis('off')\n\n# �\n\n```",
"role": "assistant",
"tool_calls": null,
"function_call": null
},
"provider_specific_fields": {
"stop_reason": null,
"token_ids": null
}
}
],
"usage": {
"completion_tokens": 580,
"prompt_tokens": 93,
"total_tokens": 673,
"completion_tokens_details": null,
"prompt_tokens_details": null
},
"service_tier": null,
"prompt_logprobs": null,
"prompt_token_ids": null,
"kv_transfer_params": null
}
我们希望能够直接看到
dict1['choices'][0]['message']['content']
print(dict1['choices'][0]['message']['content'])

这张图片展示的是一个标志(logo),包含以下元素:
- 一个红色的希腊字母 π(pi)符号,其右下角有一个小的 "2.0" 标记,表示版本或系列。
- 紧接着是黑色的 "HPC Studio" 文字。
- "Studio" 中的 "o" 被一个红色的圆圈替代,圆圈中有一个白色的 "C",这可能是 "C" 的变体,也可能代表 "C" 作为 "C++" 或 "C" 语言的象征。
这个标志可能属于一个名为 "HPC Studio" 的公司或项目,其中 "HPC" 通常代表 "High-Performance Computing"(高性能计算),而 "Studio" 表示这是一个工作室或开发环境。
要复现这个标志,我们可以使用 Python 的 `matplotlib` 库来绘制
```python
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib.text import Text
# 创建图形和轴
fig, ax = plt.subplots(figsize=(10, 2))
# 设置背景为白色
ax.set_facecolor('white')
# 添加 π 符号和 2.0
pi_text = ax.text(0.05, 0.5, r'$\pi$', fontsize=100, color='red', transform=ax.transAxes)
# 添加 2.0
two_zero = ax.text(0.1, 0.55, '2.0', fontsize=20, color='red', transform=ax.transAxes)
# 添加 HPC Studio 文字
hpc_text = ax.text(0.2, 0.5, 'HPC Studio', fontsize=60, color='black', transform=ax.transAxes)
# 修改 "Studio" 中的 "o" 为红色圆圈,内部有白色 "C"
# 找到 "Studio" 中的 "o" 的位置
o_text = ax.text(0.55, 0.5, 'o', fontsize=60, color='red', transform=ax.transAxes)
# 移除 "o" 文字
o_text.set_text('')
# 添加红色圆圈
circle = Circle((0.55, 0.5), 0.05, color='red', fill=True, transform=ax.transAxes)
ax.add_patch(circle)
# 在圆圈中添加白色 "C"
c_text = ax.text(0.55, 0.5, 'C', fontsize=30, color='white', transform=ax.transAxes)
# 隐藏坐标轴
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.axis('off')
# �
我们看看这个python代码能不能够运行
<!-- 这是一张图片,ocr 内容为: -->

效果还是非常不错的!
```python
import matplotlib.pyplot as plt
from matplotlib.patches import Circle
from matplotlib.text import Text
# 创建图形和轴
fig, ax = plt.subplots(figsize=(10, 2))
# 设置背景为白色
ax.set_facecolor('white')
# 添加 π 符号和 2.0
pi_text = ax.text(0.05, 0.5, r'$\pi$', fontsize=100, color='red', transform=ax.transAxes)
# 添加 2.0
two_zero = ax.text(0.1, 0.55, '2.0', fontsize=20, color='red', transform=ax.transAxes)
# 添加 HPC Studio 文字
hpc_text = ax.text(0.2, 0.5, 'HPC Studio', fontsize=60, color='black', transform=ax.transAxes)
# 修改 "Studio" 中的 "o" 为红色圆圈,内部有白色 "C"
# 找到 "Studio" 中的 "o" 的位置
o_text = ax.text(0.55, 0.5, 'o', fontsize=60, color='red', transform=ax.transAxes)
# 移除 "o" 文字
o_text.set_text('')
# 添加红色圆圈
circle = Circle((0.55, 0.5), 0.05, color='red', fill=True, transform=ax.transAxes)
ax.add_patch(circle)
# 在圆圈中添加白色 "C"
c_text = ax.text(0.55, 0.5, 'C', fontsize=30, color='white', transform=ax.transAxes)
# 隐藏坐标轴
ax.set_xlim(0, 1)
ax.set_ylim(0, 1)
ax.axis('off')


- Python 调用示例
当然,这个是我们的重中之重了,我们当然不想要一直使用curl网络请求的方式去访问,
我们当然希望是能够以正常编程的形式去执行
import time
import requests
def query(messages):
# ========== 基本配置 ==========
url = "https://models.sjtu.edu.cn/api/v1/chat/completions" # Local API address
# ========== 请求参数 ==========
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your-api-key"
}
messages = [{"role": "user", "content": f"{messages}"}]
print("message:", messages)
data = {
"messages": messages,
"stream": False,
"do_sample": True,
"repetition_penalty": 1.00,
"temperature": 1e-5,
"top_k": 20,
"model": "deepseek-chat", # Model name
}
while True:
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
return response.json()['choices'][0]['message']['content'].strip()
else:
# Check if there's a problem with rate limitation or sensitive word holdback when an example takes too long time
time.sleep(5)
continue
# --- 主程序 ---
if __name__ == "__main__":
question = "请介绍下你自己?"
print("--- 开始提问 ---")
print(f"问题: {question}")
answer = query(question)
print("\n--- 模型答案 ---")
print(answer)
回答还挺不错,但是deepseek-chat是两年前的模型了

当然,我们可以将这种个query-answer进行封装,我们只需要输入问题即可,然后指定模型名称,
另外我们可以将输出的内容进行1个styled,一般是markdown就格式漂亮一点。
请求头和请求体是按照前面的,然后我将这段代码又扔给了 上述模型,进行二次解析,内容返回如下:
观感体验上是不是很像网页端AI
## 整体功能
**调用上海交大校内致远一号DeepSeek大模型API**的Python代码,、
实现:发送问题→请求AI接口→获取回复→打印答案。
---
## 逐段解析
### 1. 导入库
```python
import time
import requests
time:用来延时等待requests:用来发送HTTP网络请求(调用API接口)
2. 定义核心请求函数 query(messages)
接收一个提问字符串,向交大模型接口发请求并返回AI回答。
url = "https://models.sjtu.edu.cn/api/v1/chat/completions"
交大校内大模型API接口地址(聊天 completions 接口)。
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer your-api-key"
}
请求头:
- 数据格式是JSON
Authorization:身份认证,your-api-key是你申请的密钥,Bearer是固定认证格式
messages = [{"role": "user", "content": f"{messages}"}]
把传入的提问,包装成OpenAI标准对话格式:用户角色+提问内容。
(缺陷:直接字符串格式化,不支持多轮对话,只能单轮问答)
data = {
"messages": messages,
"stream": False,
"do_sample": True,
"repetition_penalty": 1.00,
"temperature": 1e-5,
"top_k": 20,
"model": "deepseek-chat",
}
请求体参数:
stream=False:不流式输出,等AI全部生成完一次性返回do_sample=True:开启采样生成repetition_penalty=1.0:不惩罚重复内容temperature=1e-5:温度极低≈确定性、保守、几乎不随机,回答很稳定死板top_k=20:采样候选词数量model:指定调用deepseek-chat常规模型
while True:
response = requests.post(url, headers=headers, json=data)
if response.status_code == 200:
return response.json()['choices'][0]['message']['content'].strip()
else:
time.sleep(5)
continue
死循环重试机制:
- POST提交请求
- 状态码200成功:解析JSON,取出第一条回复内容,去除首尾空格返回
- 失败(限流、网络错误、审核拦截):等待5秒,重新请求,一直重试直到成功
3. 主程序入口
if __name__ == "__main__":
question = "请介绍下你自己?"
print问题→调用query函数获取答案→打印AI回复
总结(核心要点)
- 调用上交校内DeepSeek API,OpenAI兼容格式
- 单轮问答,不支持上下文多轮
- 极低温度,回答稳定确定
- 失败自动5秒重试,直到请求成功
- 需要替换
your-api-key、在校内网/VPN才能运行 - 只返回AI文本内容,不返回token、推理过程等信息
当然,校内的这个方案api可能不支持工具调用,只能用文本的形式调用,不适合agentic task。
不过想想看也知道,那是一年前的deepseek-v3,完全没有 agent 能力的,反正我实测下来根本不会调用任何工具。应该就是致远一号的API不具备足够的function calling能力。
所以,想将上述model部署openclaw之类的,还是比较吃力的。
当然,那是去年的,今年对于校内的方案:致远一号已支持DS V3.2和MiniMax-M2.5,均已具备工具调用能力,所以可以养1个轻量级龙虾。
如何把手头上的api接入CC?
就像前面说的,如果是官方(或者各大厂商自己的coding plan,自己的模型plan),那么接入其实是比较方便的。
但是我现在手头上的api 有点麻烦,需要折腾。
这不看到内部方案开了GLM的接口,想试试接到claude code里面,发现不是原生的Anthropic接口。
接入cc的话,可以学一下cc switch和claude-code-router(一个api协议转换工具,很好用)。
但是内部的glm我试了很久都不好用,只有deepseek和minimax能成功接入cc
(但有些function calling也会有点小问题)。
最后,感觉还不如直接买官方的glm coding plan、或者走glm的中转站,比捣鼓内部这个api方便多了

测试之后,切换到我们配置的模型:

然后再输入claude,第一次使用,会先有一些初始化设置。比如颜色模式,模式下面有代码预览

选中直接回车即可,我选择的是经典的dark,毕竟vscode中习惯了,后续可以回来/theme再修改。
然后是安全提示
一个是Claude会犯错,它生成的代码、它要执行的命令,你都应该过一眼再放行。
一个是只在你信任的代码库里用Claude Code,避免提示词注入攻击。
还有一些其他中间的步骤,省略了,
最后一步,就是和你确认当前所在目录,是否可以信任。


因为我们接入的不是官方的api,

所以还是要选一下,很显然我们不能够按照claude自己的模型去配置,因为model 名称不对

我们先退出

目前设置还是没有成功

看了下环境变量都没有生效,按理来说cc switch应该已经将这些设置写进注册表了,而且我都是使用管理员权限的。
我们先每次进入powershell手动设置一下环境变量
$env:ANTHROPIC_BASE_URL = "https://models.sjtu.edu.cn/api/v1"
$env:ANTHROPIC_API_KEY = "你的KEY"
再手动进入



首先尝试清楚官方的登入状态,也就是官方的token
$env:ANTHROPIC_AUTH_TOKEN = $null

以上尝试均无果。
后来多试了几次,现在总结如下:
首先第一步是没有问题的,填写配置方面,就是在CC switch中添加校内的供应商

然后接下来其实应该做模型映射

然后我们上面提供的方案是:

我们再在CC switch中进行修改

| 字段 | 作用 | 推荐填入(调用名) | 说明 |
|---|---|---|---|
| 主模型 | Claude Code 默认使用的模型,所有 /model未指定时的选择 |
deepseek-chat |
日常问答、代码生成首选 |
| 推理模型 (Thinking) | 对应 Claude 的思考模式,用于复杂逻辑推理 | deepseek-reasoner |
深度推理任务专用 |
| Haiku 默认模型 | 对应轻量快速模型,用于检索、补全等高频任务 | minimax或 deepseek-chat |
若想省资源用 minimax,若求稳用 deepseek-chat |
| Sonnet 默认模型 | 对应标准编程模型,和主模型类似 | deepseek-chat |
可保持与主模型一致 |
| Opus 默认模型 | 对应最强模型,用于高难度任务 | deepseek-reasoner或 glm-5 |
推荐用 deepseek-reasoner,逻辑强; glm-5编程也不错 |
我这里就随便填写了1个,
可以看到,本质上都是修改的配置json文件

但是,这还不够,我们可以其实可以发现这个api是openAI 格式的,目前选择的 Anthropic Messages (原生) 格式,CC Switch 会直接把 Claude Code 发出的请求原封不动地转发给交大 API。但交大 API 是 OpenAI 格式的,根本看不懂,自然就失败了。
改 API 格式:在你的截图界面,把 API 格式 从 Anthropic Messages (原生) 改为 OpenAI Chat Completions (需开启代理)。
改认证字段:把 认证字段 从 ANTHROPIC_AUTH_TOKEN (默认) 改为 ANTHROPIC_API_KEY。因为交大文档要求用 Authorization: Bearer your-api-key,改这个才能让 CC Switch 正确发送密钥
也就是说,初步配置如下:

事实上,在设置好api格式之后,我们可以通过右边的“获取模型列表”来导入选项

当然,这个时候还需要配置一下代理

我大概开启了以下红框中的3个

然后现在再重启终端,问问题之后就正常回答了

基本上看到边上这个token就知道没有问题了


有1个经典问题,校内部署的模型GLM目前5.0的上下文长度是32k。

32K是什么概念呢?很多人对这个上下文长度没有一种直觉。
正常模型是256k或300k,少数好的模型是1m或2m,不然随便发几句话上下文就炸了
先搞懂:1 token ≈ 多少字?
中文通用换算(所有模型都差不多):
1 token ≈ 0.75 个汉字
反过来:
1000 token ≈ 750 汉字
- 32k token = 24000 汉字
- 256k token = 192000 汉字
- 1M token = 750000 汉字
现在我们再看:
目前这个手里 GLM5:2.4万字
别人正常模型:19.2万字
顶级长上下文:75万字
32k(2.4万字)是什么概念?
- 一本薄中篇小说
- 一本大学教材一章内容
- 一整篇很长的毕业论文初稿
- 大概:3~4篇高中满分作文堆一起
第一眼觉得:哇2.4万字好长!
没错,单独一篇文章很长。
但!上下文不是只存我们当前一句话!
上下文 = 全部聊天历史+我们现在问的话+系统提示词
模型要同时记住:
- 最开始我们说的话
- 它上一句回复
- 上上句
- ……
- 我们现在最新一句提问
全部加起来不能超过2.4万字,也就是history+now(system prompt+user prompt)
简单来说就是1个等差数列(如果之前chat history不压缩的话),当然如果压缩了就另外一回事


而很多的system prompt都是定义好的

高端模型本该配大上下文,结果给最小档。
因为内部方案中minimax我是映射到haiku模型,这个长下文是在200k左右

In Linux
前面演示的是Windows,
现在再演示一下在linux中配置claude code
参考CC swicth官网:https://github.com/farion1231/cc-switch/blob/main/docs/user-manual/en/1-getting-started/1.2-installation.md
- 先安装Node.js
# Ubuntu/Debian
curl -fsSL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
sudo apt-get install -y nodejs
- 再安装CLI tools,我们这里还是选用claude code
npm install -g @anthropic-ai/claude-code
# 升级npm使用以下命令,注意权限
# sudo npm install -g npm@11.13.0
然后就像在powershell中一样,输入claude即可,但是目前依旧只有框架,没有模型

再接着cc-switch,
参考官网:https://github.com/farion1231/cc-switch/releases
# 查看架构
uname -m

# 注意安装包要完整
curl -O https://github.com/farion1231/cc-switch/releases/download/v3.14.0/CC-Switch-v3.14.0-Linux-arm64.deb
然后进行安装
sudo dpkg -i CC-Switch-v{version}-Linux.deb
# If there are dependency issues
# 建议先运行下面这个,再dpkg
sudo apt-get install -f

载后验证

终端中输入
cc-switch
❯ cc-switch
[CC-Switch] Crash log saved to: /home/nicai_zht/.cc-switch/crash.log
================================================================================
[CRASH REPORT] 2026-04-23 10:48:17.741
================================================================================
----------------------------------------
System Information
----------------------------------------
OS: linux (unix)
Arch: x86_64
App Version: 3.14.0
Working Dir: /home/nicai_zht/software
Thread: main (ID: ThreadId(1))
----------------------------------------
Error Details
----------------------------------------
Message: Failed to initialize gtk backend!: BoolError { message: "Failed to initialize GTK", filename: "/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gtk-0.18.2/src/rt.rs", function: "gtk::rt::init", line: 141 }
Location: File: /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.6/src/platform_impl/linux/event_loop.rs
Line: 217
Column: 53
----------------------------------------
Stack Trace (Backtrace)
----------------------------------------
0: <unknown>
1: <unknown>
2: <unknown>
3: <unknown>
4: <unknown>
5: <unknown>
6: <unknown>
7: <unknown>
8: <unknown>
9: <unknown>
10: <unknown>
11: <unknown>
12: <unknown>
13: <unknown>
14: <unknown>
15: <unknown>
16: <unknown>
17: __libc_start_main
18: <unknown>
================================================================================
thread 'main' (1400173) panicked at /home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/tao-0.34.6/src/platform_impl/linux/event_loop.rs:217:53:
Failed to initialize gtk backend!: BoolError { message: "Failed to initialize GTK", filename: "/home/runner/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/gtk-0.18.2/src/rt.rs", function: "gtk::rt::init", line: 141 }
stack backtrace:
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

我本人用的是vscode IDE,
微软本身是支持vscode中的claude code插件,
所以可以通过安装claude code插件,再在终端调用运行。
或者,直接在终端中安装。
鉴于我本人没有使用TUI的习惯,所以还是选择使用CC-Switch的CLI分支。
参考官网:https://github.com/SaladDay/cc-switch-cli/blob/main/README_ZH.md
X64架构参考
# 下载
curl -LO https://github.com/saladday/cc-switch-cli/releases/latest/download/cc-switch-cli-linux-x64-musl.tar.gz
# 解压
tar -xzf cc-switch-cli-linux-x64-musl.tar.gz
# 添加执行权限
chmod +x cc-switch
# 移动到 PATH
sudo mv cc-switch /usr/local/bin/
系统级环境变量添加
# 在终端中输入
cc-switch
目前主要是安装了opencode以及claude code这两个CLI Tools

然后,和类似于windows GUI一样在CLI 的TUI中进行设置,通过YAZI终端TUI管理界面的应该很熟悉这种操作


大致配置如下




暂时设置如上,然后接下来的操作类似于windows中powershell。

界面是熟悉的:

但是显然还是配置有问题(model映射、代理)
然后是官网的一些配置
# 供应商管理
cc-switch provider list # 列出所有已配置的供应商
cc-switch provider switch <id> # 切换活动供应商
cc-switch provider stream-check <id> # 验证流式传输能力
# MCP 服务器管理
cc-switch mcp list # 列出 MCP 服务器
cc-switch mcp add # 交互式添加新服务器
cc-switch mcp sync # 同步到实时配置文件
# 配置管理
cc-switch config webdav show # 检查 WebDAV 同步设置
cc-switch env tools # 检查 CLI 工具安装情况
cc-switch proxy show # 查看代理路由和状态
细节参考:https://github.com/SaladDay/cc-switch-cli/blob/main/README_ZH.md
cc-switch provider list # 列出供应商
cc-switch provider switch <id> # 切换供应商
cc-switch provider export <id> # 导出 Claude 供应商为独立 settings 文件
cc-switch provider stream-check <id> # 检查供应商流式健康
cc-switch config webdav show # 查看 WebDAV 同步设置
cc-switch env tools # 检查本地 CLI 工具
cc-switch mcp sync # 同步 MCP 服务器
cc-switch proxy show # 查看代理路由和状态
# 使用全局 `--app` 参数来指定目标应用:
cc-switch --app claude provider list # 管理 Claude 供应商
cc-switch --app codex mcp sync # 同步 Codex MCP 服务器
cc-switch --app gemini prompts list # 列出 Gemini 提示词
cc-switch --app openclaw provider list # 管理 OpenClaw 供应商
# 支持的应用:`claude`(默认)、`codex`、`gemini`、`opencode`、`openclaw`
找了一下,模型映射还是在供应商那一栏

考虑到我平时科研阅读、思考,以及代码实现比较多,其实32k真的太tm少了,校内方案只有1个minimax勉强可用。
| CC Switch 字段 | 推荐映射模型 | 使用场景与理由 |
|---|---|---|
| 主模型 | deepseek-chat |
日常问答、中小型代码生成,685B 足够强大。 |
| 推理模型 (Thinking) | deepseek-reasoner |
科研推理、复杂 bug 分析、需要展示思考链的问题。 |
| Haiku 默认模型 | minimax |
长文档处理专用。当你需要分析整篇论文、长报告或多轮任务时,用 /model minimax切换过来,192K 窗口完全够用。 |
| Sonnet 默认模型 | glm-5 |
复杂编程主力。744B 参数 + 编程侧重,适合大型项目架构、算法实现。 |
| Opus 默认模型 | deepseek-reasoner或 glm-5(首选) |
最复杂任务时的备选,可复用推理或最强编程模型。 |
拉取一下当前供应商提供的模型
cc-switch provider fetch-models sjtu-zhiyuanno1

# 清除 Claude Code 的缓存目录
rm -rf ~/.claude/cache

后面检查了一下,代理、直连,供应商应该都没有问题,

会不会是base url规则不同。

改了下,果然成功了!

CC常见操作
使用技巧就不用说了,个人感觉完全是经验积累,用多了就都了解了,
当然网上二手博客资料也有很多,也可以看官网资料
https://mp.weixin.qq.com/s/f-FeLEcIW7xnqcNhGuwbbQ
几个常用的命令
| 命令 | 干嘛用 |
|---|---|
/clear |
重置对话,换任务必用 |
/compact |
压缩历史,上下文快满时用 |
/plan |
进规划模式,只分析不改文件 |
/model |
切换模型(sonnet/opus/haiku) |
!git status |
直接跑 shell 命令 |
@文件名 |
让 Claude 专门看这个文件 |

1,新开对话
就像前面说的,毕竟单个model的context length有限,尤其是内部模型,触限了就只能新开1个对话了。


2,终端还是对话?
Claude Code 中默认是无法在执行终端命令的。比如和它对话了一半,你突然想执行命令查询文件,常规情况下是要新开一个终端窗口去执行。
其实 Claude Code 早就想到了,可以在命令前面加个感叹号,这样就是去执行终端命令,而不是和 AI 对话。

就像是jupyter notebook中的magic command一样。
3,版本控制?
这个其实就涉及到具体工程中的实践了,
在开发一个复杂项目时,我常遇到的一个问题:Claude Code 理解错了需求,把代码改崩了。由于是在多轮对话中发生的,不仅把原本正常的代码改错了,由于对话已经进行了一大段,上下文也被污染了。
注意,这里有两个问题:
- 代码改错
- 上下文已经污染了
像git一样的版本控制这个时候就非常重要了,
我之前的笨重方案是使用git,配合撤销去恢复代码,当然,这需要时刻commit,我基本上一轮对话修改一次就commit一次(就是要频繁的commit,这是我用git频繁保存历史记录的方法)。
然后如果改错了,就回滚历史,代码这个时候可以恢复,但是对话不能,所以只能另外开一个窗口。
但是claude code中有1个后悔药设置,
其实内置的 /rewind 指令 (或 双击 ESC)就能做到 回退代码 + 回退会话。真的是救命能力。

可以看到,我这里总共就问了5个问题,都有checkpoint记录

依旧是上下键来滑动

其实我们可以看到,本质上是建立了1个分支fork,然后接着git版本控制

然后接着往下对话,当然,我个人还是建议平时git版本控制要做好
1,平时要一轮对话完就git commit
2,搭配好rewind
4,临时插入对话(/btw )
有时候当 Claude Code 在跑任务会持续好几分钟,这个过程中是无法再和它对话的,除非中断当前任务。
最近的版本增加了一个 /btw 命令,就可以做到不影响前面的任务,单独开一个临时会话,并且不会污染之前的会话。(这个命名也很简明——by the way)
我的这个示例就太简短了,下一次找一个长一点的运行任务来执行。
我觉得这个功能其实就很重要,因为对于当前的1个历史会话信息,我们在不同时间节点可能有多个想法,可能有多个选择,
所以在同一个时间内,我们可能会有多个想法,多个问题,就相当于在1个节点中多轮分支fork都尝试一下,都进行一下,最好是每一个fork都不会影响其他分支。
再搭配前面rewind+btw,简直绝了,就是版本控制+小轮多次迭代的神器!

5,导出对话(export)
这个就非常重要了,我之前copilot用惯了,保存chat session毕竟是在GUI中,非常直觉化。
但是终端中如何操作?
有时候想分享一下和 Claude Code 的对话过程,或者存档,不需要再手动截图了。直接使用 /export 就行。

我们一般是选择保存到文件中

会有一个默认名字,就是每一个session都会有1个聊天内容总结的名字,简单易懂,我们可以自己修改


我们可以看一下这个文本文件内容:

╭─── Claude Code v2.1.116 ─────────────────────────────────────────────────────╮
│ │ Tips for getting started │
│ Welcome back! │ Run /init to create a CLAUDE.md file w… │
│ │ Note: You have launched claude in your… │
│ ▐▛███▜▌ │ ─────────────────────────────────────── │
│ ▝▜█████▛▘ │ Recent activity │
│ ▘▘ ▝▝ │ No recent activity │
│ │ │
│ Sonnet 4.6 · API Usage Billing │ │
│ C:\Users\zht │ │
╰──────────────────────────────────────────────────────────────────────────────╯
❯ who are you
⎿ API Error: 400 {"error":{"message":"litellm.BadRequestError:
OpenAIException - You passed 769 input tokens and requested 32000 output
tokens. However, the model's context length is only 32768 tokens, resulting
in a maximum input length of 768 tokens. Please reduce the length of the
input prompt. (parameter=input_tokens, value=769). Received Model
Group=glm-5\nAvailable Model Group
Fallbacks=None","type":null,"param":null,"code":"400"}}
❯ who are you
⎿ API Error: 400 {"error":{"message":"litellm.BadRequestError:
OpenAIException - You passed 769 input tokens and requested 32000 output
tokens. However, the model's context length is only 32768 tokens, resulting
in a maximum input length of 768 tokens. Please reduce the length of the
input prompt. (parameter=input_tokens, value=769). Received Model
Group=glm-5\nAvailable Model Group
Fallbacks=None","type":null,"param":null,"code":"400"}}
❯ /model
⎿ Set model to Haiku 4.5
❯ who are you
❯ /btw
⎿ Usage: /btw <your question>
● The user is asking "who are you" - this is a simple question about my
identity. They're also showing that they just set the model to Haiku 4.5.
I should give a concise answer about who I am.
I'm Claude Code, an AI assistant built by Anthropic to help you with software
engineering tasks. I'm designed to help you write, review, debug, and navigate
code.
I can:
- Read, write, and edit files
- Search codebases with grep/glob
- Execute shell commands
- Run tests and builds
- Help with debugging and refactoring
- Answer questions about your code
What are you working on today?
❯ when is it now
● The user is asking about the current date/time. Based on the context provided
in the system reminder, today's date is 2026/04/23.
Today is April 23, 2026 (2026/04/23).
claude code+国内模型方案
除了前面演示的使用内部部署的模型之外,我们正常就是买国内各大厂家的部署方案。
比如说我个人是买了字节家火山方舟的coding plan,当然是lite套餐。
还是前面那句话,需求大就使用coding plan,需求小就买api。
下面我们尝试在claude code中接入我们coding plan的模型方案。
参考:https://www.volcengine.com/docs/82379/1928262?lang=zh

我们先获取api key

官方有两种接入方案,
一种是使用ark helper编程工具助手

另外一种是手动配置

我们照样还是使用cc switch
然后同样的配置方案,当然因为这里模型选择有点多

所以我就粗略选择了几个,
其实本质上就是在修改配置json文件
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "<ARK_API_KEY>",
"ANTHROPIC_BASE_URL": "https://ark.cn-beijing.volces.com/api/coding",
"ANTHROPIC_MODEL": "<Model_Name>"
}
}


我就简单搞了个glm 4.7作为演示,接下来就是愉快的coding了!

Codex免费
此处略,等后续有需求了,上手实际操作了再来更新。
copilot退潮之后,还剩下什么?
这里主要是针对老登我个人的情况,做一个简单的后备方案候选。
国外模型中转站
这个其实没怎么做准备,所以不在候选池中,但是渠道是有的,大家也可以尝试,此处略。
https://github.com/zzsting88/relayAPI
1个中转站测试:https://hvoy.ai/

稍微提及一下可供参考的方案
- https://github.com/education,github学生开发方案
- https://zed.dev/education
- https://agentrouter.org/register
国内各厂家模型coding plan
说到底还是 money就是力量,这个是护城河。
之前2-3月份的时候各家coding plan频出,充了字节家的火山方舟plan,但是因为那个时候老登我还在啃copilot,所以并没有实际使用过怎么利用其中的api key,然后接入主流的coding智能体平台(比如说codex、比如说claude code等)。
目前我主要关注阿里、字节、glm家的coding plan,当然这里指的不是api。
有了模型API,现在回到我们的工具选择上
有了模型api,我们再自己选各种各样的端到端的执行工具,
我coding,一般和vscode生态绑的比较牢,平时不用cursor之类。
方案1:成熟的Agent工具(以cc、codex、opencode为例)
经过老登我平时的一些使用场景测试,在coding+文献阅读场景上,我推荐
claude code+glm
最大的好处是省钱,然后还能够复用claude code提供的Agent基础设施(mcp,skill,hook,plugin…),因为后者这些Agent概念毕竟大多是国外厂商炒起来的。
当然,国内模型也有很多选择,glm,minimax,kimi之类,
比较现实的一种方法就是开个Coding Plan尝试下各个模型,看哪个模型最适合自己的任务。
然后还是那句话,对于国内模型,总体上性价比还是高的
用的强度高的,就开coding plan
用的强度低的,就直接买api(当然,要清楚计费方式,这个是个坑)
方案2:现成的GUI比如说vscode+AI 插件集成
现在,回到Agent和Skill,我能一直追得上热点吗?
还是那句话,eat shit也不一定赶得上hot的,所以,在AI泡沫(后期?),我这个老登能做的是什么呢?
看了很多的公众号鼓吹各种概念,想想看,Skill真是脚本小子的黄金时代了,交付脚本等于交付产品。
所以,老登我本人的想法是:还是抓住底层的model,至少部署权、所有权、消费权是我们能够牢牢把握住的。
把握住了api key,那么其他的无穷无尽的概念,也只需要一批一批人去趟这个水,到时候出个 新手教程.md 文件罢了。
2026.4.22 记录
代码coding(工程任务): claude code/codex agent, 说到model还是得claude、chatgpt家的
阅读论文/日常聊天: Gemini (不适合工程任务)
国内: 圈子里鼓吹无脑用智谱即可
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)