news 2026/8/27 19:18:13

树莓派AI CLI接入DeepSeek:解决reasoning_content回传400报错

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
树莓派AI CLI接入DeepSeek:解决reasoning_content回传400报错

这次我们来看一个偏“折腾型”的题目:在树莓派或者小型终端环境里,把oh my piDeepSeek-V4-FlashGPT-5.6 LunaAntigravity CLI这些名字搅在一起玩,到底能跑出什么结果。

先给结论:这几个名字里,真正值得花时间研究的不是“模型又多了一个”,而是接入第三方命令行工具时遇到的那个 400 报错。搜索材料里有一条非常典型的热词:

cc switch local proxy failed while handling codex endpoint /responses. provider: deepseek; model: deepseek-v4-flash; upstream_status: http 400; cause: the `reasoning_content` in the thinking mode must be passed back to the api.

这条错误信息已经说得很直白:Provider 是 DeepSeek,模型名写的是deepseek-v4-flash,上游返回 400,原因是“thinking mode 下的reasoning_content必须回传给 API”。通俗讲就是:你调用了推理模型,第一次返回的时候模型给了你一份“思考过程”字段,第二次对话如果你不把这份思考过程原样带回去,上游就拒绝处理。

这篇文章不是给你堆概念,而是把这次折腾的完整链路讲清楚:环境怎么准备、CLI 怎么接入推理模型、多轮对话为什么报 400、模型名被服务端拒绝怎么排查、批量调用怎么写。看完你能直接在自己的终端环境里复现一次,并把最常见的坑都避开。

适合的读者有三类:第一类是在树莓派或小主机上做终端环境配置、想接入 AI CLI 的玩家;第二类是做 LLM 应用开发、经常对接第三方兼容接口的工程师;第三类是看到DeepSeek-V4-FlashGPT-5.6 Luna这类名字想确认“到底能不能用”的谨慎型用户。

1. 折腾对象与核心能力速览

先把这几个名字拆开,搞清楚每个东西在本次折腾里扮演什么角色。下面的表格会标注哪些是真实可用的能力,哪些只是“社区流传说法”,避免你把玩笑当真。

名称类型在本次折腾中的角色可靠性与注意点
oh my pi终端环境 / 树莓派配置方案提供终端环境、别名、脚本和目录结构,承载 CLI 工具的运行具体功能以你实际 clone 的仓库 README 为准,不同版本差异较大
DeepSeek-V4-Flash模型名 / 上游 API 模型标识Codex 兼容端点里配置的模型名,用于实际对话请求材料显示部分代理服务只支持deepseek-v4-prodeepseek-v4-flash,填错会直接报 model may not exist
GPT-5.6 Luna社区流传的模型命名没有可靠官方来源,不建议在配置中直接引用大概率是娱乐化命名,配置前先查服务商模型列表
Antigravity CLIAI 命令行工具通过自定义 provider 把请求转发到 DeepSeek 等兼容端点核心判断维度是:能否自定义 base_url、模型名和透传 thinking 参数

从这张表能得出一个判断:oh my pi解决的是“终端环境好不好用”的问题,Antigravity CLI解决的是“命令行里怎么调模型”的问题,而DeepSeek-V4-Flash只是众多模型标识里的一个,真正影响成败的是reasoning_content是否按上游要求回传。

不要被“V4-Flash”“GPT-5.6 Luna”这种名字带偏。接入任何 LLM API 时,第一件事永远是确认服务端真正支持的模型名列表,而不是相信某个第三方博客或短视频里的截图。

2. 适用场景与使用边界

这类折腾组合适合什么场景?

  • 你在做终端环境美化、写脚本自动化、把常用 AI 对话能力集成到命令行。
  • 你需要同时对比多个上游模型,比如deepseek-v4-flashglm5.2,通过同一套 CLI 切换模型名来测效果。
  • 你想把多轮对话、批量任务、日志重试跑通,而不是只在网页聊天框里点来点去。

不适合什么场景?

  • 如果你只想要一个开箱即用的聊天窗口,建议直接用官方 Web 端,不需要走 CLI 和自定义 provider。
  • 如果你是生产环境调用,建议先压测接口稳定性,不要拿一个存在 400 报错的模型名直接上生产。
  • 如果某个模型名叫“GPT-5.6 Luna”之类,没有任何官方来源,也不在服务端模型列表里,建议直接跳过。

合规边界同样要讲清楚。使用模型接口时,不要上传未经授权的隐私数据、版权素材或他人肖像;如果只是个人本地测试,也要注意不要把 API Key 写进公开仓库。模型命名和版本信息以服务商官方文档为准,遇到“听说是新模型”的情况,先验证再配置。

3. 环境准备与前置条件

这次折腾不依赖大型 GPU 集群,重点在一个能跑终端命令的小主机上。给出一份通用检查清单,具体版本以你实际项目要求为准。

3.1 硬件与系统

  • 树莓派 4B / 5,或任意 x86 小主机,内存建议不小于 4GB。
  • 操作系统推荐 Debian / Ubuntu / Raspberry Pi OS,或 macOS。
  • 如果你在本地跑大模型推理,才需要考虑 GPU 和显存;本次场景主要是 CLI 转发请求,真正的算力在上游 API。

3.2 软件环境

  • Python 3.10 或更高版本,用于写接口测试脚本。
  • Node.js 18 或更高版本,很多 AI CLI 工具基于 Node 分发。
  • Git,用于克隆环境配置仓库。
  • 一个可用的上游 API Key,例如 DeepSeek 官方平台或自建兼容代理。

3.3 网络与端口

  • 需要能访问 API 服务地址,如果你用的是本地代理,确保代理端口没有被占用。
  • 常见排查命令:
curl -I http://127.0.0.1:8080/v1/models
ss -tlnp | grep 8080

没有输出说明端口空闲,有输出说明端口被占用。

3.4 确认环境

建议先跑一个最小的连通性测试,再进入 CLI 配置。下面是一个通用的/v1/models探活请求,实际地址需要按你的 API 服务调整:

curl http://127.0.0.1:8080/v1/models \ -H "Authorization: Bearer $API_KEY"

如果返回模型列表,说明上游服务可用;如果返回 401,说明 Key 有问题;如果返回 404,说明 base_url 路径不对。

4. 安装部署与启动方式

4.1 准备 oh my pi 类终端环境

oh my pi从命名上看类似于“为树莓派准备的终端配置方案”,通常包含 prompt 美化、常用别名、脚本目录。这类项目没有统一标准,所以不要假设它自带 AI 能力。

克隆到本地后,先看 README,确认三件事:

  • 配置文件放在哪个目录。
  • 是否已经有alias或 PATH 修改逻辑。
  • 是否包含独立的scripts目录,方便后面放批量调用脚本。
git clone https://your-git-host/your-name/oh-my-pi.git cd oh-my-pi cat README.md

如果 README 说明需要执行安装脚本,再执行;不要盲目source一个你不了解的脚本。

4.2 安装 AI CLI 工具

无论你用 Antigravity CLI 还是 Codex 兼容工具,安装逻辑一般是 npm 全局安装,或者下载二进制到 PATH 目录。这里给一个通用模板:

# 示例:全局安装,具体包名按官方文档替换 npm install -g <cli-package-name>
# 验证安装 <cli-package-name> --version

注意:我刻意不写死某个具体的包名,因为不同版本工具的命令差异很大。你需要在 README 里找到真实的install命令。

4.3 配置 DeepSeek 兼容端点

这是最容易踩坑的一步。CLI 通常需要一个config.tomlsettings.json,用来声明 provider、base_url、api_key、model。搜索材料里出现的是codex endpoint /responses,说明请求被转发到了 Codex 兼容端点,所以配置里大概率包含providermodel两个核心字段。

一个通用配置模板如下:

{ "provider": "deepseek", "base_url": "http://127.0.0.1:8080/v1", "api_key": "sk-xxxx", "model": "deepseek-v4-flash", "thinking": true }

这里有几个容易出错的地方:

  1. base_url结尾是否包含/v1,不同兼容服务要求不同,以服务端文档为准。
  2. model是否在服务端支持列表里,材料显示只支持deepseek-v4-prodeepseek-v4-flash,如果你的配置里写成了deepseek-v4-flash-api,会报 model may not exist。
  3. thinking参数是否被 CLI 透传,如果工具默认不传,上游可能直接按普通模型处理,多轮对话时就容易触发reasoning_content回传要求。

4.4 启动与首次连通测试

启动方式因工具而异,有的是cli start,有的是cli serve,有的直接cli进入交互模式。通用判断标准是:

  • 交互模式能正常输出模型回复。
  • 服务模式会在某个端口监听 HTTP 请求。
  • 如果日志里出现upstream_status: http 400,说明请求已经到达上游,但请求体不被接受。
# 进入交互模式 <cli-package-name> chat

第一次测试建议只用一句话,不要直接上长上下文,便于快速定位是模型名、认证、还是请求体格式问题。

5. 功能测试与效果验证

下面给出一套可以在终端环境里反复使用的验证流程,目标是把reasoning_content这个坑完整复现并修复。

5.1 测试上游模型列表

先用 curl 确认服务端到底支持哪些模型名。这个请求相当于“官方名单”,比任何第三方截图都可靠。

curl http://127.0.0.1:8080/v1/models \ -H "Authorization: Bearer $API_KEY"

预期返回的 JSON 中应包含模型名数组。如果里面只有deepseek-v4-prodeepseek-v4-flash,后续配置就不要写其他名字。如果列表为空,说明服务端配置本身有问题。

5.2 测试普通对话模型

先关掉 thinking,测普通对话是否正常。请求体一般是 OpenAI 兼容格式:

curl http://127.0.0.1:8080/v1/responses \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_KEY" \ -d '{ "model": "deepseek-v4-flash", "input": "你好,请用一句话介绍自己。" }'

注意:/v1/responses是 Codex 类端点常见的路径,如果你对接的是/v1/chat/completions,需要换路径。判断成功的标准是返回200且响应中包含outputchoices字段。

5.3 测试 Thinking 模式,观察 reasoning_content

打开 thinking 开关后,第一次请求会多出一个“思考过程”字段。不同协议叫法可能不同,可能是reasoning_content,也可能是reasoning,但材料里明确写的是reasoning_content

用 Python 验证这个字段:

import requests url = "http://127.0.0.1:8080/v1/responses" headers = { "Authorization": "Bearer sk-xxxx", "Content-Type": "application/json" } payload = { "model": "deepseek-v4-flash", "input": "1+1等于几?请先思考再回答。", "thinking": True } resp = requests.post(url, json=payload, headers=headers, timeout=120) print(resp.status_code) print(resp.json())

如果你在返回的 JSON 里看到reasoning_content字段,说明这个上游确实会向客户端透出思考过程。保存这个字段,下一步会用到。

5.4 模拟多轮对话:不回传 reasoning_content

现在做一个故意踩坑的测试。把上一轮返回的assistant消息直接塞进历史记录,但去掉reasoning_content字段,再发第二轮请求。

import requests url = "http://127.0.0.1:8080/v1/responses" headers = { "Authorization": "Bearer sk-xxxx", "Content-Type": "application/json" } first_payload = { "model": "deepseek-v4-flash", "input": "请分步骤解释 23 乘以 4 的计算过程。", "thinking": True } first_resp = requests.post(url, json=first_payload, headers=headers, timeout=120) first_data = first_resp.json() # 第二轮回传时,故意丢掉 reasoning_content second_payload = { "model": "deepseek-v4-flash", "input": [ {"role": "user", "content": "请分步骤解释 23 乘以 4 的计算过程。"}, {"role": "assistant", "content": first_data["output"][0]["content"]} ], "thinking": True } second_resp = requests.post(url, json=second_payload, headers=headers, timeout=120) print(second_resp.status_code) print(second_resp.text)

预期结果:第二次请求返回400,错误信息里出现:

the `reasoning_content` in the thinking mode must be passed back to the api.

这就复现了热词里的报错。原因不是网络,不是 API Key,而是多轮上下文里缺少了思考过程字段。

5.5 修复:回传 reasoning_content

正确的做法是:把上一轮返回的reasoning_content作为assistant消息的一个独立字段带回。

import requests url = "http://127.0.0.1:8080/v1/responses" headers = { "Authorization": "Bearer sk-xxxx", "Content-Type": "application/json" } first_payload = { "model": "deepseek-v4-flash", "input": "请分步骤解释 23 乘以 4 的计算过程。", "thinking": True } first_resp = requests.post(url, json=first_payload, headers=headers, timeout=120) first_data = first_resp.json() assistant_msg = { "role": "assistant", "content": first_data["output"][0]["content"], "reasoning_content": first_data["output"][0].get("reasoning_content", "") } second_payload = { "model": "deepseek-v4-flash", "input": [ {"role": "user", "content": "请分步骤解释 23 乘以 4 的计算过程。"}, assistant_msg ], "thinking": True } second_resp = requests.post(url, json=second_payload, headers=headers, timeout=120) print(second_resp.status_code) print(second_resp.json())

判断成功的标准:第二次请求返回200,且模型能基于上一轮思考结果继续回答。

这个修复看着很小,但在真实工程里非常关键。凡是把 DeepSeek 推理模型接入第三方 CLI、Codex 端点、自动化脚本的场景,都可能遇到同样的 400。日志里只要出现upstream_status: http 400thinking mode,优先检查上下文里是否回传了reasoning_content

5.6 验证模型名是否被服务端支持

另一个高频问题来自热词里的there's an issue with the selected model (deepseek-v4-flash). it may not exist。这种情况通常是配置的模型名不是服务端支持的名字。例如服务端只接受deepseek-v4-prodeepseek-v4-flash,你写成了deepseek-v4-flash-latest,就会报模型不存在。

排查方式就一条:回到/v1/models的返回列表,和本地配置做逐字对比,注意大小写和连字符。

6. 接口 API 与批量任务

CLI 只是交互入口,真正稳定的使用方式是写脚本批量调用。下面给出一套可扩展的 Python 批量模板,重点解决三件事:有限并发、失败重试、日志记录。

6.1 请求体格式说明

Codex 兼容端点通常使用/v1/responses,核心字段是modelinputthinking。如果你对接的是/v1/chat/completions,核心字段变成modelmessagesreasoning_content的放置位置也会不同。先确认你的上游协议,再选模板。

6.2 Python 批量调用模板

import json import time import requests from pathlib import Path API_URL = "http://127.0.0.1:8080/v1/responses" API_KEY = "sk-xxxx" MODEL_NAME = "deepseek-v4-flash" INPUT_DIR = Path("./inputs") OUTPUT_DIR = Path("./outputs") OUTPUT_DIR.mkdir(exist_ok=True) def call_model(prompt, history=None, retries=3): input_messages = [] if history: input_messages.extend(history) input_messages.append({"role": "user", "content": prompt}) payload = { "model": MODEL_NAME, "input": input_messages, "thinking": True } headers = { "Authorization": f"Bearer {API_KEY}", "Content-Type": "application/json" } for attempt in range(retries): try: resp = requests.post(API_URL, json=payload, headers=headers, timeout=180) if resp.status_code == 200: return resp.json() # 400 大概率是上下文里缺 reasoning_content,打印出来人工排查 if resp.status_code == 400: print("HTTP 400:", resp.text) raise ValueError("bad request") except Exception as exc: print(f"attempt {attempt + 1} failed: {exc}") time.sleep(2 ** attempt) return None history = [] for txt_file in sorted(INPUT_DIR.glob("*.txt")): prompt = txt_file.read_text(encoding="utf-8") result = call_model(prompt, history=history) if result is None: continue output_file = OUTPUT_DIR / f"{txt_file.stem}.json" output_file.write_text(json.dumps(result, ensure_ascii=False, indent=2), encoding="utf-8") # 把当前答案追加到历史,下一轮作为多轮上下文 assistant_msg = { "role": "assistant", "content": result["output"][0]["content"], "reasoning_content": result["output"][0].get("reasoning_content", "") } history.append({"role": "user", "content": prompt}) history.append(assistant_msg) time.sleep(0.5)

这个模板的关键点有两个:

  1. retries只对网络波动和超时有效,如果请求本身是 400,重试没有意义,必须修上下文。
  2. 每次请求成功后就更新history,并且assistant_msg里带上reasoning_content,避免自己把自己卡在 400 上。

6.3 输入输出目录设计

建议把输入、输出、日志分开:

./inputs ./outputs ./logs ./scripts

输入文件按顺序命名,例如001.txt002.txt,输出结果保留 JSON 全量响应,不要只保存文本。因为reasoning_content可能是后续排查问题的关键证据。

6.4 失败重试建议

  • 针对超时:指数退避,1 秒、2 秒、4 秒。
  • 针对 400:不重试,保存错误响应到logs/,人工查看是否缺少reasoning_content
  • 针对 401:检查 API Key,不重试。
  • 针对 429:等待时间拉长,优先做并发限制。
  • 针对 5xx:可以从第 2 次开始重试。

7. 资源占用与性能观察

在树莓派这类小型设备上折腾,资源占用是必须要看的指标。这类 AI CLI 本身不会把模型跑在本地,只要它是转发模式,CPU 和内存占用通常都不高。真正吃资源的是上游服务,不是你的终端。

7.1 观察方式

  • 命令行工具用htop,看 CPU 和内存实时变化。
  • 如果小主机有 NVIDIA GPU,用nvidia-smi看显存占用。
  • 如果使用 Docker 起代理服务,用docker stats看容器资源。
htop
nvidia-smi
docker stats

7.2 性能观察重点

  • 启动 CLI 后,内存占用是否稳定,有没有持续增长。如果内存一直涨,可能是长上下文被缓存在本地,需要定期清理历史。
  • 调用 API 时,CPU 占用率是否突然升高。如果一次请求让 CPU 打满,可能是响应 JSON 解析或日志写盘有问题。
  • 长文本输入对响应时间影响最大。输入 token 变多,上游处理时间和网络传输时间都会增加,不要用 60 秒超时去测一个很长的多轮对话。

7.3 如何降低资源占用

  • 限制工具日志级别,避免每个请求都打印完整响应体。
  • 控制输入文件大小,批量任务前先做文本截断。
  • 减少并发数,树莓派上并发建议从 1 开始,稳定后再逐步增加。
  • 不要同时开多个 CLI 进程,避免端口冲突和内存叠加。

7.4 避免端口冲突

如果启动本地代理后提示端口被占用,优先换端口而不是强杀进程。很多代理服务支持--port参数。

<local-proxy> start --port 8090

然后更新 CLI 配置里的base_urlhttp://127.0.0.1:8090/v1

8. 常见问题与排查方法

问题现象可能原因排查方式解决方案
配置模型后报model may not exist模型名不在服务端支持列表请求/v1/models核对列表改为deepseek-v4-prodeepseek-v4-flash
上游返回http 400,提示reasoning_content必须回传多轮上下文缺少思考过程字段检查 assistant 消息是否包含reasoning_content在 assistant 消息中回传reasoning_content
接口返回 401API Key 错误或未设置检查环境变量和请求头重新生成 Key,确保Authorization: Bearer正确
接口返回 404base_url 路径不对对比目标端点的v1路径修正 base_url,确认/v1/responses/v1/chat/completions
启动 CLI 后无响应上游服务未启动或网络不通curl 探活/v1/models启动本地代理,检查网络
端口被占用已有进程监听同一端口`ss -tlnpgrep 端口`
批量任务卡住并发过高或单次请求超时查看日志,看是否卡在某个输入文件降低并发,延长 timeout,增加重试
输出质量不稳定模型版本、参数或上下文过长对比不同模型名和简化输入固定模型名,控制输入长度,记录每次参数

其中最典型的还是reasoning_content400 问题。简单总结它的机制:

  1. 你请求推理模型,开启 thinking。
  2. 模型第一轮回答里包含思考过程和正式回答。
  3. 多轮对话时,上游要求你把思考过程原样带回来。
  4. 如果只回传正式回答,丢掉思考过程,下游解析时发现上下文与思考模式不一致,直接返回 400。

这个行为不是 CLI 的 bug,而是上游模型服务对请求格式的强制约束。遇到时别急着怀疑网络,先打开上一次返回的 JSON,看有没有reasoning_content,再看第二次请求里有没有把它带回去。

9. 最佳实践与使用建议

9.1 配置文件与模型名管理

不要把模型名散落在终端命令里。建议统一放在一个 JSON 或环境变量文件中,例如:

API_BASE_URL=http://127.0.0.1:8080/v1 API_KEY=sk-xxxx MODEL_NAME=deepseek-v4-flash THINKING=true

这样切换模型时只需要改一个变量。遇到model may not exist时,也能一眼看出是不是配置漂移了。

9.2 第一次先小参数测试

第一次接入时不要直接跑批量,先做“单条请求、短文本、关闭 thinking、打开 thinking、多轮回传”五个小测试。全部通过后再放大规模。这样可以保证每次出错都能定位到具体环节。

9.3 安全与合规

  • API Key 只放在本地环境变量或独立配置文件中,不要写进公开脚本。
  • 不要用真实用户数据、未授权肖像、版权素材做测试。
  • 如果批量任务要处理敏感文本,先脱敏,再发送到外部 API。
  • 涉及生成内容的分发,必须人工复核。

9.4 工作流设计

建议把整个流程拆成四层:

  1. 环境层:oh my pi提供稳定的终端环境和脚本目录。
  2. 配置层:保存 provider、base_url、model、thinking 等参数。
  3. 调用层:CLI 负责交互验证,Python 脚本负责批量任务。
  4. 数据层:inputsoutputslogs分目录管理,保留 JSON 全量响应。

每一层出了问题都能独立排查,不会因为环境配置问题影响批量任务。

10. 总结与下一步

这次折腾最值得记住的一个点,不是oh my pi怎么美化终端,也不是GPT-5.6 Luna到底存不存在,而是reasoning_content回传这个细节。搜索引擎里大量出现这条报错,说明很多人把 DeepSeek 推理模型接到 Codex 类 CLI 时都栽在这里。

如果你现在打算自己试一遍,建议按照这个顺序操作:

  1. 先请求/v1/models,确认模型名列表。
  2. 用 curl 完成一次普通对话测试。
  3. 开启 thinking,观察reasoning_content字段。
  4. 故意做一次不回传的多轮请求,复现 400。
  5. 修复后跑通多轮批量脚本。

最容易踩的坑就是模型名写错和reasoning_content丢失。前者改配置,后者改上下文构造逻辑,两者都不是玄学,都有明确错误信息可查。

下一步可以继续扩展的方向包括:把deepseek-v4-flashglm5.2放在同一套 CLI 配置里做代码生成对比;把单机批量脚本改成带队列和失败重试的调度任务;或者把oh my pi环境固定成一套可复现的 Ansible 部署脚本。这套链路跑通之后,再出现新的模型名,你只需要改一个配置项,就能快速验证它是否真的可用。

建议收藏备用,下次遇到 DeepSeek 推理模型 400 报错,直接回来翻这篇。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/27 19:16:24

用强化学习微调LLM去除AI写作味:GRPO与LoRA实战

写完一篇技术文章&#xff0c;复制到编辑器里预览&#xff0c;总有种说不上来的不对劲&#xff1a;句子通顺&#xff0c;逻辑连贯&#xff0c;段落之间也有过渡&#xff0c;可读起来就是“AI味”很重。这不是错觉。当你让大语言模型帮你润色一段文字时&#xff0c;它输出的其实…

作者头像 李华
网站建设 2026/8/27 19:16:13

【笔记】用cursor手搓cursor(九)

用了一圈&#xff0c;我觉得目前知识库比较接近我的预想的是腾讯的ima&#xff0c;但是管理大规模知识的检索&#xff0c;以及索引的索引&#xff0c;索引的索引的索引…都还是问题&#xff0c;说白了就是思维链通路。 最新的deepseek v4 flash还不错&#xff0c;但deepseek整…

作者头像 李华
网站建设 2026/8/27 19:12:07

UL1561——干式配电变压器的“安全铁律” 出口墨加美地区安规认证变压器

UL1561——干式配电变压器的“安全铁律”在UL针对变压器的认证体系中&#xff0c;UL 1561是分量最重、要求最严的标准之一。它针对的是10kVA以上的干式通用和电力变压器&#xff0c;覆盖了从生产线主电源供电到大型工业设备配电的核心场景&#xff0c;堪称产线动力的“主力军”…

作者头像 李华
网站建设 2026/8/27 19:12:03

翼龙飞行建模:从化石数据到多目标优化的实战路径

1. 这不是一篇“论文模板”&#xff0c;而是一份翼龙飞行建模的实战手记2022年小美赛A题——“翼龙如何飞行”&#xff0c;表面看是个古生物问题&#xff0c;实则是一道典型的多学科交叉建模题&#xff1a;它不考你背了多少空气动力学公式&#xff0c;而是逼你从零开始&#xf…

作者头像 李华
网站建设 2026/8/27 19:07:07

一个双非软件工程本科生的逆风翻盘经历

写在前面 我的高考分数不高&#xff0c;只上了一个很一般的学校&#xff0c;也对自己的专业不感兴趣。但庆幸的是&#xff0c;大学四年&#xff0c;我慢慢的对编程产生了兴趣&#xff0c;学会了如何学习并走入了编程的大门。 后来还算顺利吧&#xff01;考上了某211硕&#xff…

作者头像 李华