跳转到内容

03 多语言 SDK 组织:语言检测路由与共享概念层

03 多语言 SDK 组织:语言检测路由与共享概念层

学习目标

  • 理解 claude-api 技能中的 8 语言支持矩阵
  • 掌握语言检测路由机制
  • 分析共享概念层(shared/)的设计决策
  • 学习实时文档源(live-sources.md)的维护策略

前置知识

本章涉及 LLM 应用三层架构与 Skill 渐进式加载的通用原理,建议先阅读:

下文假设你已理解上述概念,直接聚焦 claude-api 技能的具体实现。


项目实践

8 语言支持矩阵

claude-api 技能覆盖了 8 种语言/协议:

语言SDKTool RunnerManaged Agents文件数
Pythonanthropic✅ (beta)✅ (beta)claude-api/README.md, tool-use.md, streaming.md, batches.md, files-api.md + managed-agents/README.md
TypeScript@anthropic-ai/sdk✅ (beta)✅ (beta)同上
Javacom.anthropic✅ (beta)✅ (beta)单文件覆盖所有基础
Goanthropic✅ (beta)✅ (beta)单文件覆盖所有基础
Rubyanthropic✅ (beta)✅ (beta)单文件覆盖所有基础
PHP社区 SDK✅ (beta)✅ (beta)单文件覆盖所有基础
C#Anthropic.SDK单文件,仅基本 API
cURLHTTPN/A✅ (beta)managed-agents.md + examples.md

关键洞察:Python 和 TypeScript 是”完整支持”语言(多文件详细教程),其他语言是”基本覆盖”(单文件)。

语言检测路由机制

claude-api SKILL.md 中的语言检测逻辑:

检测规则

  • *.pyrequirements.txtpyproject.toml → Python
  • *.ts*.tsxpackage.json → TypeScript
  • *.js*.jsx(无 .ts 文件)→ 也用 TypeScript 教程
  • *.javapom.xmlbuild.gradle → Java(Kotlin/Scala 也用 Java SDK)
  • *.gogo.mod → Go
  • *.rbGemfile → Ruby
  • *.cs*.csproj → C#
  • *.phpcomposer.json → PHP

共享概念层设计

shared/ 目录存放语言无关的概念文档:

文件内容
tool-use-concepts.md工具调用的概念基础
agent-design.mdAgent 设计原则
prompt-caching.md提示缓存策略
error-codes.mdHTTP 错误代码
model-migration.md模型迁移指南
models.md模型能力参考
live-sources.md实时文档 URL 列表
managed-agents-*.md(13 个文件)Managed Agents 的完整概念层

为什么需要共享概念层? 如果每个语言目录都包含 Tool Use 概念的完整副本,当概念更新时需要同步更新 8 份。共享层确保”单一真相来源”。

实时文档源维护

shared/live-sources.md 维护了一份 URL 列表,指向官方文档的最新版本。当 SKILL.md 中的缓存数据可能过期时,通过 WebFetch 获取最新版本。

维护的 URL 包括

  • Anthropic SDK 文档(各语言)
  • Claude API 参考文档
  • Managed Agents 文档
  • Anthropic CLI 文档

问题与规避

非 Anthropic 项目的误触发

问题:claude-api 技能可能在不相关的项目中被触发。

规避策略:技能开头有明确的提供程序检测:

Scan the target file for non-Anthropic provider markers — import openai, OpenAI(, gpt-4, filenames like *-openai.py. If you find any, stop and tell the user that this skill produces Claude/Anthropic SDK code.

不支持的语言

问题:Rust、Swift、C++、Elixir 等语言没有官方 SDK。

规避策略:建议 cURL/raw HTTP 示例,并注明社区 SDK 可能存在。


设计取舍

为什么 Python/TypeScript 是多文件而其他语言是单文件?

优势:Python 和 TypeScript 是最广泛使用的语言,值得详细文档。其他语言的用户群体较小,单文件足够。 代价:其他语言的高级功能可能需要额外查找官方文档。 Anthropic 的补偿:通过 live-sources.md 提供实时文档链接,弥补单文件的不足。


参考来源