1. 从需求到可运行原型:为什么选 Claude Code 做库存系统
商品库存管理系统这个题目,看起来简单,真动手写却处处是坑:入库要校验商品编码唯一性,出库要防止超卖,盘点要能对得上账,低库存还得能告警。传统做法是先把 Spring Boot 后端、Vue 前端、MySQL 表结构全搭一遍,光环境配置就能耗掉大半天。而 Claude Code 这类 AI Agent 的价值在于,它能在终端里直接读项目、写文件、跑命令、修报错,你只需要把需求讲清楚,它就能把一整套可运行的代码生成出来。
我这次要复现的,就是一套零手写代码的商品库存管理系统原型。核心链路是:用 TaoToken 统一 Key 接入 DeepSeek V4 模型,让 Claude Code 具备稳定的模型调用能力;然后通过分步提示词,依次生成入库、出库、盘点、低库存告警四个模块;最后用真实请求验证库存增减和告警逻辑是否正确。整个过程不需要你懂 Java 或 Vue,但需要你会复制命令、会看终端输出、会按步骤确认。
适合谁跟做?第一类是想快速验证一个业务想法的人,比如你手上有个小仓库、小店铺,想先跑个原型看看流程顺不顺;第二类是想学 AI Agent 工作流的开发者,想搞清楚 Claude Code 到底怎么配置、怎么下提示词、怎么排错;第三类是被环境配置劝退过的朋友,想找一个能绕开复杂依赖的接入方式。下面我会把 TaoToken 的配置片段、Claude Code 的初始化命令、以及库存增减和告警的验证步骤全部给出来,你照着做就能复现。
需要提前说明的是,本文不涉及任何网络访问工具,所有模型调用都通过合规的 API 网关完成。TaoToken 在这里扮演的是统一 Key 管理的角色,你只需要一个 Key,就能在 Claude Code 里切换不同模型,不用为每个模型单独维护一套配置。这一点在后续的 CC Switch 配置里会体现得很明显。
2. TaoToken 统一 Key 前置配置:Claude Code 接入 DeepSeek V4 的完整步骤
在开始写库存系统之前,得先把 Claude Code 的模型调用链路打通。Claude Code 默认走 Anthropic 官方账号登录,但很多国内开发者没有对应的账号体系,所以更实际的做法是通过 API 网关来接入。TaoToken 提供的就是这样一个统一入口:你注册后拿到一个 API Key,然后在 Claude Code 的配置里把 Base URL 指向 TaoToken 的 API 地址,就能调用 DeepSeek V4、GLM 等模型。
先访问 TaoToken 官网 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 完成注册,然后在控制台里创建一个 API Key。这个 Key 就是后面所有配置的核心,建议先复制到记事本里备用。控制台地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_content=console&utm_campaign=rewrite ,API Key 管理页面在 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 ,里面有针对 Claude Code 的配置说明。
接下来安装 Claude Code。macOS 或 Linux 下打开终端,执行:
curl -fsSL https://claude.ai/install.sh | bashWindows 下用 PowerShell 执行:
curl -fsSL https://claude.ai/install.cmd -o install.cmd && install.cmd && del install.cmd装完后验证版本:
claude --version如果能看到版本号输出,说明安装成功。如果安装过程卡住,可以改用 npm 方式:
npm install -g @anthropic-ai/claude-codenpm 慢的话换国内镜像:
npm config set registry https://registry.npmmirror.comClaude Code 装好后,还需要一个配置管理工具来切换模型。这里用 CC Switch,它能把不同供应商的 Base URL、Key、Model ID 统一管理起来。安装 CC Switch 后打开,选中 Claude Official 这一项,点击右上角加号添加供应商。在供应商类型里选择自定义或兼容 Anthropic 接口的选项,然后填入三个关键信息:
| 配置项 | 填写内容 |
|---|---|
| Base URL | https://taotoken.net/api |
| API Key | 你在 TaoToken 控制台创建的 Key |
| Model ID | deepseek-v4-pro |
这里要特别注意,Base URL 后面不要加 UTM 参数,直接写 https://taotoken.net/api 即可。Model ID 根据你要用的模型填,DeepSeek V4 对应的是 deepseek-v4-pro,如果你要用 GLM 系列就换成对应的模型标识。填完后点击添加,再点启动按钮,CC Switch 会把配置写入 Claude Code 的 settings 文件。
如果你想手动检查配置文件,Claude Code 的配置通常位于~/.claude/settings.json,内容结构类似:
{ "env": { "ANTHROPIC_BASE_URL": "https://taotoken.net/api", "ANTHROPIC_API_KEY": "sk-你的TaoToken密钥", "ANTHROPIC_MODEL": "deepseek-v4-pro" } }这个 JSON 片段就是三件套的完整形态:Base URL 指向 TaoToken 的 API 地址,Key 用你创建的密钥,Model ID 指定 DeepSeek V4。保存后重新打开终端,输入claude回车,随便问一句“你好”,如果模型能正常回复,说明接入成功。如果报 401,多半是 Key 复制错了或者有多余空格;如果报连接失败,检查 Base URL 是不是写成了带路径的完整地址。
3. 项目初始化与提示词工程:让 Claude Code 生成入库出库盘点模块
模型链路通了之后,就可以开始建项目了。先在本地创建一个空文件夹,比如inventory_system,然后在这个文件夹里打开终端,输入claude启动 Claude Code。第一次启动时它会让你确认一些权限,按提示允许即可。进入交互界面后,不要一上来就把所有需求丢进去,那样生成质量会下降。更稳的做法是分阶段下提示词,每完成一步确认一次。
第一步是项目骨架和数据库设计。你可以把下面这段提示词直接粘贴进去:
你是一名资深全栈架构师,请从零开发一个可运行的商品库存管理系统。 技术栈:后端用 Java 8 + Spring Boot + MyBatis Plus + MySQL 8 + Maven; 前端用 Vue3 + Vite + Element Plus + Axios + Pinia; 部署用 Docker + docker-compose。 第一版只做四个核心模块: 1. 商品管理:商品名称、编码、分类、规格、库存数量、最低库存阈值。 2. 入库:选择商品,填写入库数量,库存自动增加。 3. 出库:选择商品,填写出库数量,库存自动减少,不允许超卖。 4. 盘点:录入实际库存,系统计算盈亏并调整库存。 5. 低库存告警:当库存数量低于最低库存阈值时,在首页列出告警商品。 请先输出项目目录结构、MySQL 建表 SQL、以及后端实体类和 Mapper 接口。 每完成一步暂停,等我确认后再继续。Claude Code 收到后会先分析需求,然后输出目录结构和 SQL。你检查一下表结构里有没有stock、min_stock、product_code这些字段,确认没问题就输入“继续”。接下来它会生成后端代码,包括 Controller、Service、Mapper。这里有个细节:入库和出库的库存增减逻辑,最好让它用数据库事务包起来,避免并发时出现超卖。你可以在提示词里补一句“入库和出库操作必须加事务,出库前先校验库存是否充足”。
后端生成完后,继续让它写前端页面。提示词可以这样:
现在生成 Vue3 前端页面,包含: - 商品列表页,支持分页和按名称搜索 - 入库表单页,选择商品后输入数量提交 - 出库表单页,选择商品后输入数量提交,库存不足时提示错误 - 盘点页,输入实际库存后显示盈亏 - 首页仪表盘,展示低库存告警列表 接口调用统一用 Axios,Base URL 指向后端地址。前端生成过程中,Claude Code 可能会问你后端接口的路径,你直接让它按 RESTful 风格自己定,比如/api/product/list、/api/stock/in、/api/stock/out。如果它生成的代码里有省略号或伪代码,直接回复“不要省略,给出完整可运行代码”。这一步大概会花几分钟,终端里会不断滚动文件创建日志。
等前后端都生成完,让它补上 Docker 配置:
请生成 Dockerfile、docker-compose.yml 和 README。 docker-compose 里包含 MySQL、后端、前端三个服务,MySQL 数据卷挂载到本地目录。 前端 Nginx 监听 8081 端口,避免和本地 80 冲突。到这里,项目骨架就齐了。整个过程中你不需要手写任何 Java 或 Vue 代码,但需要盯着它的输出,发现字段名不对、接口路径不一致的地方及时纠正。我试过在出库逻辑那里,它第一版没有加库存校验,我回复“出库前必须查询当前库存,如果出库数量大于库存则返回错误”,它立刻就补上了。
4. 验证请求与成功结果:库存增减和低库存告警的实测步骤
代码生成完,接下来要验证它是不是真的能跑。先执行部署命令:
docker compose up -d等容器启动后,访问http://localhost:8081应该能看到登录页。如果用的是示例里的固定账号,输入 admin/admin 进入首页。首页仪表盘会显示商品总数、低库存告警数量。接下来按下面的步骤验证核心逻辑。
第一步,新增一个商品。进入商品管理页,点击新增,填写商品名称“测试商品A”、编码“SKU001”、库存数量 100、最低库存阈值 20。保存后列表里应该出现这条记录,库存显示 100。
第二步,验证入库。进入入库页,选择“测试商品A”,输入入库数量 50,提交。然后回到商品列表,库存应该变成 150。你可以打开浏览器开发者工具,看 Network 里/api/stock/in这个请求的返回结果,正常应该返回{"code":200,"data":true}之类的结构。
第三步,验证出库。进入出库页,选择“测试商品A”,输入出库数量 30,提交。库存应该从 150 变成 120。再试一次出库 200,系统应该提示库存不足,并且库存保持不变。这一步是防超卖的关键,如果它没拦住,说明事务或校验逻辑有问题。
第四步,验证低库存告警。继续出库,把库存降到 15(低于阈值 20)。然后回到首页仪表盘,告警列表里应该出现“测试商品A”,显示当前库存 15、阈值 20。如果没出现,检查一下告警查询的 SQL 条件是不是stock < min_stock。
第五步,验证盘点。进入盘点页,选择“测试商品A”,输入实际库存 18,提交。系统应该计算出盈亏 +3,并把库存调整为 18。再回首页看告警,如果 18 仍然低于 20,告警应该还在。
为了更直观地确认接口行为,你可以直接用 curl 测一下后端接口。假设后端映射在 8080 端口:
curl -X POST http://localhost:8080/api/stock/out \ -H "Content-Type: application/json" \ -d '{"productCode":"SKU001","quantity":200}'如果返回库存不足的错误信息,说明校验生效。再测一个正常出库:
curl -X POST http://localhost:8080/api/stock/out \ -H "Content-Type: application/json" \ -d '{"productCode":"SKU001","quantity":5}'返回成功后,再查商品列表接口,确认库存数字确实减少了 5。这一套验证下来,入库、出库、盘点、告警四条链路就都跑通了。整个过程大概 30 分钟左右,主要时间花在等代码生成和容器启动上。
5. 常见报错排查:401、local proxy failed 与 reading choices 的解法
接入和运行过程中,最容易卡住的地方往往不是业务代码,而是配置和网络链路。下面这几个报错是我在实际操作中遇到过的,按顺序排查基本能解决。
报错一:401 Unauthorized。这个通常出现在 Claude Code 启动后第一次请求模型时。原因一般是 API Key 填错了,或者 Key 前面带了Bearer前缀但配置里又重复加了。检查~/.claude/settings.json里的ANTHROPIC_API_KEY,确保它就是你从 TaoToken 控制台复制的那串,前后没有空格。如果用的是 CC Switch,打开供应商配置页,把 Key 重新粘贴一遍,保存后重启终端。还有一种可能是 Key 被删除了,去控制台确认一下 Key 状态是否正常。
报错二:local proxy failed 或 connection refused。这个说明 Claude Code 尝试连接的 Base URL 不通。先确认ANTHROPIC_BASE_URL写的是https://taotoken.net/api,不要多写路径,也不要少写https。然后在终端里直接测一下连通性:
curl -I https://taotoken.net/api如果返回 200 或 401 都算通,返回超时或拒绝就是网络层的问题。另外检查一下本地有没有设置HTTP_PROXY或HTTPS_PROXY环境变量,如果有,先临时取消再试:
unset HTTP_PROXY unset HTTPS_PROXY报错三:reading choices 相关错误。这个一般出现在模型返回格式不符合预期时,比如你用的 Model ID 和实际接口不匹配。确认ANTHROPIC_MODEL填的是deepseek-v4-pro,而不是deepseek-v4或别的变体。如果 CC Switch 里配置了多个供应商,检查当前启动的是不是正确的那一个。有时候切换供应商后 Claude Code 没有重新读取配置,退出终端再进一次就好。
报错四:OAuth 相关提示。如果你之前登录过 Anthropic 官方账号,Claude Code 可能缓存了 OAuth token,导致它优先走官方链路而不是你配置的 Base URL。解决办法是找到~/.claude目录下的凭证缓存文件,把它删掉或重命名,然后重新启动。具体文件名可能是credentials.json或类似名称,删之前可以先备份。
报错五:docker compose up 后前端 502。这通常是后端还没启动完,Nginx 就转发请求了。等 30 秒再刷新页面,或者查看后端容器日志:
docker compose logs backend如果日志里报数据库连接失败,检查 MySQL 容器是否健康,以及后端配置里的数据库地址是不是mysql而不是localhost。在 docker-compose 网络里,服务之间用服务名互相访问。
排查的时候记住一个原则:先确认模型调用链路通不通,再确认业务代码逻辑对不对。链路问题看 401 和 proxy failed,逻辑问题看接口返回和数据库里的实际数据。把这两层分开,定位会快很多。
6. 继续迭代与统一 Key 的长期用法
原型跑通之后,你可能会想加更多功能,比如供应商管理、采购单、库存流水日志。这些都可以继续用对话的方式让 Claude Code 加。比如输入“新增一个库存流水表,记录每次入库出库的商品、数量、操作时间,并在商品详情页展示流水列表”,它就会自动建表、写 Mapper、加接口、改前端。整个过程就像搭积木,一层一层往上叠。
如果你打算长期用这套组合做开发,建议把 TaoToken 的 Key 管理起来。一个 Key 可以调用多个模型,在 CC Switch 里配置多个供应商条目,分别指向 DeepSeek V4、GLM 等不同 Model ID。写业务代码时用性价比高的模型,遇到复杂架构设计时切到推理能力更强的模型。切换只需要在 CC Switch 里点一下启动按钮,不用改代码。
对于需要长期编码和 Agent 协作的场景,可以了解一下 Coding Plan https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_content=coding-plan&utm_campaign=rewrite ,它更适合高频调用和团队协作。如果只是想先验证模型效果,可以直接在模型对话页 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_content=model-chat&utm_campaign=rewrite 里试几轮,确认输出质量再接入 Claude Code。Claude Code 的专属接入说明在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_content=claudecode&utm_campaign=rewrite ,里面有更细的配置参数。
最后说一个实际经验:库存系统的核心不是界面好不好看,而是库存数字准不准。每次入库出库后,一定要去数据库里核对一下stock字段的实际值,别只看前端显示。前端可能因为缓存或异步刷新显示旧数据,但数据库里的值才是最终依据。把验证步骤固化成习惯,后面加再多功能也不会乱。