ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Claude Code 跑 Karpathy 149K Stars Skills:Key 用 TaoToken

Claude Code 跑 Karpathy 149K Stars Skills:Key 用 TaoToken 1. Claude Code Skills 跑不起来先从 Karpathy 的 CLAUDE.md 和模型通道说起Claude Code Skills 和 Andrej Karpathy 149K Stars 项目最近在 AI 编码圈被反复提起。Karpathy 用 CLAUDE.md 约束 AI 编码行为避开错误假设、过度复杂化、跳过测试、随意修改四个坑。可从 Skill 与 MCP 视角看Claude Code 要真正执行这些 Skills得先能稳定调用模型通道否则 Base URL 的 /v1 差异、401 认证、404 路径问题会先把你拦在门外。这篇就按实战顺序写Key 用 TaoTokenBase URL 填 https://taotoken.net/api再把 Karpathy 风格的 CLAUDE.md 和 claude code ask 串起来。1.1 Karpathy 的 CLAUDE.md 到底在约束什么很多人第一次看到 149K Stars 这个数字会以为项目里有什么神奇模型。实际拆开看核心文件是项目根目录的 CLAUDE.md。它不训练模型也不替换 Claude Code它做的是把“你希望 AI 怎么改代码”写成持久化规范。Karpathy 那套规范里有四条原则最值得直接抄进项目第一验证假设。不要猜库的行为先跑最小示例。比如不确定某个库函数返回的是 list 还是 iterator就先用python -c打印一次而不是让 AI 直接生成一大段基于错误假设的代码。第二保持简单。YAGNI 原则只实现当前需要的功能。AI 很容易给你加工厂、加抽象层、加配置系统最后问题没解决代码先复杂了三倍。第三测试驱动。写功能前先写测试至少让失败测试存在。AI 编码最危险的地方不是写错而是写完了没有验证路径你还以为它能跑。第四尊重已有代码。修改前先理解上下文用git blame看历史不要无理解地删掉别人写好的分支逻辑。这四条看起来朴素但放到 Claude Code 里就是每次生成、修改、重构时的行为约束。1.2 Skill 与 MCP 视角规范层和工具层别混在一起从 Skill 视角看CLAUDE.md 是项目级 Skill。它跟着仓库走可版本控制可团队共享。用户级 Skill 放在~/.claude/skills/影响你所有项目团队级 Skill 放在共享仓库适合统一规范。从 MCP 视角看MCP 提供的是工具通道。它让 Claude Code 能访问文件、数据库、浏览器、内部 API。Skill 管“怎么做”MCP 管“能碰到什么”。两者都依赖同一个前提Claude Code 能稳定调用模型。如果模型通道不稳会出现一种很尴尬的情况MCP 工具已经连上CLAUDE.md 也写得很认真但 Claude Code 请求模型时 401或者因为 Base URL 多写了 /v1 导致 404。你以为是 Skill 没生效其实是请求根本没发出去。1.3 为什么模型通道会先卡住Claude Code 默认按 Anthropic 风格发请求。很多兼容通道在 Base URL 和实际路径上处理不同有的要求 Base URL 带 /v1有的要求不带。Claude Code 自己会拼接/v1/messages如果你在 Base URL 里又写了 /v1就会变成/v1/v1/messages。TaoToken 在这里作为统一兼容通道Base URL 用 https://taotoken.net/api不要带 /v1也不要加 UTM 参数。Key 用你在控制台创建的那把。把这一步做对后面跑 Karpathy 的 CLAUDE.md 才有意义。2. 用 TaoToken 给 Claude Code 准备模型通道注册、Key 与 Base URL2.1 先拿 Key别急着写 CLAUDE.md开始前先打开 https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content 注册然后进入控制台创建 API Key。创建完先复制到本地临时文件不要直接提交到 Git。如果你已经在用 Claude Code建议先确认版本claude --version如果命令不存在先安装 Claude Code。安装方式按官方文档走这里不展开。拿到 Key 后先不要往项目里塞任何敏感信息。2.2 Base URL 为什么是 https://taotoken.net/api记住两个地址的区别用途地址说明官网注册https://taotoken.net/?utm_sourcetaotoken_aicg_blog_endutm_mediumcsdnutm_campaignrewriteutm_content带 UTM用于注册和查看控制台API Base URLhttps://taotoken.net/api不带 UTM不带 /v1填给 Claude Code实际请求路径https://taotoken.net/api/v1/messages由 Claude Code 或 curl 自动拼接很多人把官网链接直接粘到 Base URL结果请求里带了?utm_source...认证和路由都会出问题。API 地址就是 API 地址不要混。3. 可复制配置CLAUDE.md、settings.json、MCP 与 claude code ask3.1 准备项目目录先建一个练习项目避免一上来就在生产仓库里试mkdir -p ~/projects/claude-skills-demo cd ~/projects/claude-skills-demo git init python3 -m venv .venv source .venv/bin/activate如果你用 Node 项目也可以换成 npm 初始化。重点是让 Claude Code 在一个干净目录里启动这样 CLAUDE.md 的加载路径最清楚。3.2 配置环境变量临时验证可以用 exportexport ANTHROPIC_BASE_URLhttps://taotoken.net/api export ANTHROPIC_API_KEYsk-你创建的Key export ANTHROPIC_AUTH_TOKENsk-你创建的Key注意这里有两个变量ANTHROPIC_API_KEY和ANTHROPIC_AUTH_TOKEN。不同版本的 Claude Code 读取习惯不同两个都设上更稳。Key 不要带引号外的空格也不要换行。如果你希望长期生效可以写进~/.claude/settings.json{ env: { ANTHROPIC_BASE_URL: https://taotoken.net/api, ANTHROPIC_AUTH_TOKEN: sk-你创建的Key } }改完 settings.json 后重启终端或重新打开 Claude Code。JSON 里不能有多余逗号最后一项后面不要加逗号。3.3 创建 Karpathy 风格的 CLAUDE.md在项目根目录创建CLAUDE.md。下面这版可以直接复制再按你的技术栈改# CLAUDE.md ## 项目上下文 - 项目用户登录与权限服务 - 技术栈Python 3.11 FastAPI PostgreSQL - 测试pytest httpx - 格式化ruff format行宽 100 ## 核心原则 ### 1. 验证假设不猜库行为 - 使用不熟悉的库之前先跑最小示例。 - 快速验证命令python -c import xxx; print(xxx.__doc__) - 不确定 API 签名时先写测试或查 help()不要直接生成大段代码。 - 遇到版本差异先确认当前环境实际安装版本。 ### 2. 保持简单先满足 YAGNI - 只实现当前需求不提前抽象。 - 新增函数优先写纯函数避免工厂、继承链和配置系统。 - 删除无用代码要说明理由。 - 能用标准库解决就不引入新依赖。 ### 3. 测试驱动 - 修改前先写失败测试。 - 每个新增函数至少覆盖正常、边界、错误三条路径。 - 提交前运行pytest -q。 - 不允许跳过测试直接提交。 ### 4. 尊重已有代码 - 修改前先读上下文使用 git blame 看历史。 - 不随意改已有函数签名和公共接口。 - 保持代码风格一致本项目用 ruff format。 - 重构必须与功能变更分开提交。 ## 工作流 1. 先复述需求与假设。 2. 列出要改的文件和原因。 3. 写测试或最小复现。 4. 实现最小改动。 5. 运行测试并汇报结果。 6. 如果测试失败先解释失败原因再修代码。 ## 禁止操作 - 禁止跳过测试直接提交。 - 禁止在没有阅读上下文时删除代码。 - 禁止引入新依赖而不说明。 - 禁止硬编码密钥。 - 禁止把数据库连接指向生产库。这份 CLAUDE.md 的作用不是让 AI 变聪明而是让它少犯那四类错。你可以在claude code ask时明确要求它先读 CLAUDE.md但正确配置下Claude Code 在项目目录启动时会自动加载根目录的规范文件。3.4 MCP 配置工具通道只接测试环境如果你要用 MCP 扩展 Claude Code 的能力建议先接只读或测试资源。比如本地 SQLite 测试库{ mcpServers: { local-sqlite-readonly: { command: npx, args: [ -y, modelcontextprotocol/server-sqlite, ./dev.db ] } } }这个配置可以放在项目级.mcp.json或者按 Claude Code 版本要求放到对应配置位置。关键有两点第一MCP 工具能访问的库必须是测试库或只读副本第二不要让 MCP 直连生产库连接串。Skill 层负责告诉 AI “怎么做”MCP 层负责限定“能碰什么”两者边界要清楚。3.5 用 claude code ask 跑第一个任务在项目根目录启动 Claude Code然后用claude code ask发一个受规范约束的任务claude code ask 先读取 CLAUDE.md然后为 /users/{user_id} 接口补充一个 404 测试。要求先写失败测试运行 pytest再实现最小修改最后汇报测试结果。如果你的 Claude Code 版本没有claude code ask子命令可以用claude -p达到类似效果claude -p 先读取 CLAUDE.md然后为 /users/{user_id} 接口补充一个 404 测试。先写失败测试再改代码。观察它的行为有没有先读 CLAUDE.md有没有先写测试有没有在修改前列出假设。如果它直接开始大改说明规范没被加载或者模型通道没走对。4. 验证请求curl 测 /v1/messages再让 Claude Code 读 CLAUDE.md4.1 先用 curl 确认 TaoToken 通道在写业务代码前先用 curl 发一个最小请求。这样可以把“模型通道问题”和“Claude Code 配置问题”分开curl -sS https://taotoken.net/api/v1/messages \ -H x-api-key: $ANTHROPIC_API_KEY \ -H anthropic-version: 2023-06-01 \ -H content-type: application/json \ -d { model: claude-3-5-sonnet-20241022, max_tokens: 32, messages: [ {role: user, content: 只回复通道正常} ] }注意完整路径是https://taotoken.net/api/v1/messages。Base URL 里只写https://taotoken.net/api/v1/messages由请求路径提供。成功时你会看到类似返回{ id: msg_xxx, type: message, role: assistant, content: [ { type: text, text: 通道正常 } ], model: claude-3-5-sonnet-20241022, stop_reason: end_turn }如果返回 401先查 Key如果返回 404先查路径尤其是 Base URL 有没有多写 /v1。模型名如果报错就换成 TaoToken 控制台或模型列表里实际可用的名称。4.2 再验证 Claude Code 是否加载 CLAUDE.mdcurl 通了以后回到项目目录启动 Claude Codecd ~/projects/claude-skills-demo claude然后问一个能暴露规范是否生效的问题claude code ask 我要给用户服务加一个缓存层你打算怎么做先不要改代码先说出假设和测试计划。如果 CLAUDE.md 生效它的回答里应该出现类似逻辑先确认缓存失效策略、先写测试、避免过早抽象、不引入新依赖、不直接改公共接口。反过来如果它一上来就建议 Redis、装饰器、配置中心说明规范没被读到或者你启动 Claude Code 的目录不是项目根目录。5. 本篇常见错排查401、404、/v1 重复与 CLAUDE.md 不生效5.1 认证与地址类错误现象常见原因处理401 UnauthorizedKey 没设、Key 复制带空格、终端没 source重新 export两个 Key 变量都设404 Not FoundBase URL 多写 /v1或 curl 路径少 /v1Base URL 用 https://taotoken.net/api请求带 UTM把官网注册链接粘进 Base URLAPI 地址不带 UTM模型不存在model 名写错或当前 Key 无权限换成控制台可见的模型名settings.json 不生效JSON 格式错误、没重启 Claude Code检查逗号重开终端环境变量只在当前终端生效新开终端后变量丢失写进 settings.json 或 shell 配置5.2 CLAUDE.md 不生效的排查顺序先确认文件名是CLAUDE.md不是claude.md或CLAUDE.MD。虽然有些系统大小写不敏感但跨平台协作时最好保持大写。然后确认文件在项目根目录。如果你在子目录启动 Claude Code它可能只向上查找一层或按版本规则加载。最稳的方式是进入项目根目录再启动。再确认内容不是空文件或只有标题。可以临时加一条非常明确的规则## 测试要求 - 任何代码修改前必须先说明测试计划。 - 没有测试结果不允许声称任务完成。重启 Claude Code 后再问一次。如果这条规则生效说明加载路径没问题如果还不生效检查 Claude Code 版本是否支持项目级 CLAUDE.md。5.3 MCP 与 Skill 混用时的坑MCP 工具连上后AI 可能更积极地操作数据库或文件。建议在 CLAUDE.md 里加一条## MCP 工具使用限制 - 只允许访问测试库、本地文件和只读接口。 - 不允许连接生产数据库。 - 任何写操作必须先在测试环境验证。另外MCP 配置里的 command 和 args 要写绝对路径或确认在 PATH 里。npx找不到包时会静默失败Claude Code 看起来像“不会用工具”实际是 MCP 服务没起来。5.4 claude code ask 命令不存在有些版本用的是claude交互模式有些支持claude code ask。如果报 unknown command用claude -p 你的任务先跑通。任务描述里仍然可以要求它读取 CLAUDE.md。命令形式不同不影响 Skills 规范发挥作用。6. 按场景选下一步API Keys、模型对话与 Coding Plan如果你现在卡在 401 或 404优先去核对 Key 和接入路径。打开 https://taotoken.net/api-keys?utm_sourcetaotoken_aicg_blog_endutm_contentcsdnutm_campaignrewrite 创建或重置 API Key再对照 https://taotoken.net/doc?utm_sourcetaotoken_aicg_blog_endutm_contentcsdnutm_campaignrewrite 检查 Claude Code 的 Base URL 写法。排障阶段不要一边改 CLAUDE.md 一边改 Key先让 curl 返回“通道正常”。如果你想先验证模型名称、响应风格和上下文表现可以去 https://taotoken.net/chat?utm_sourcetaotoken_aicg_blog_endutm_contentcsdnutm_campaignrewrite 做几轮对话测试确认模型可用后再把同一套配置搬进 Claude Code。如果你准备长期用 Claude Code 跑 Karpathy 的 Skills甚至接 MCP 做 Agent 工作流建议直接看 https://taotoken.net/coding-plan?utm_sourcetaotoken_aicg_blog_endutm_contentcsdnutm_campaignrewrite 。长期编码场景更看重通道稳定、Key 管理和调用量可预期不要每次都在临时终端里 export。Claude Code 接入配置的细节可以对照 https://taotoken.net/ClaudeCodeAnthropic?utm_sourcetaotoken_aicg_blog_endutm_contentcsdnutm_campaignrewrite 再核一遍。配好之后我会先跑一遍 curl看到“通道正常”再启动 Claude Code如果 curl 都不通就别急着写 CLAUDE.md先把 Base URL 和 Key 对齐。
返回列表