6.6 KiB
6.6 KiB
Context Hub (chub) - API文档获取技能
概述
Context Hub(chub)是一个为AI编码助手设计的上下文文档管理系统,由Andrew Ng(吴恩达)团队开发。这个技能允许nanobot通过chub CLI获取准确、最新的API文档,减少AI幻觉,提高编码准确性。
安装要求
chub已经安装在系统中:
# 检查安装
which chub
# 基本命令可用
chub search openai --json
使用场景
当用户需要以下帮助时使用此技能:
- 编写使用第三方库、SDK或API的代码
- 需要当前API参考文档
- 需要特定语言的SDK文档
- 需要验证API接口的正确性
例如:
- "使用OpenAI API"
- "调用Stripe API"
- "使用Anthropic SDK"
- "查询Pinecone"
- 任何需要编写针对外部服务的代码的情况
使用步骤
步骤1 — 查找正确的文档ID
chub search "<库名称>" --json
从结果中选择最匹配的id(例如openai/chat、anthropic/sdk、stripe/api)。如果没有匹配项,尝试更广泛的术语。
步骤2 — 获取文档
chub get <id> --lang py # 或 --lang js, --lang ts
如果文档只有一个语言变体,可以省略--lang参数。
步骤3 — 使用文档
读取获取的内容,并使用它来编写准确的代码或回答问题。不要依赖记忆的API形状 — 使用文档所说的内容。
步骤4 — 注解学习内容(可选)
完成任务后,如果发现了文档中没有的内容 — 例如陷阱、变通方法、版本特性或项目特定细节 — 保存它以便未来的会话更智能:
chub annotate <id> "Webhook验证需要原始body — 在验证前不要解析"
注解是本地保存的,跨会话持久化,并在未来的chub get调用中自动显示。保持注解简洁且可操作。不要重复文档中已有的内容。
步骤5 — 提供反馈(可选)
对文档进行评分,以便作者可以改进它。在发送前询问用户。
chub feedback <id> up # 文档工作良好
chub feedback <id> down --label outdated # 文档需要更新
可用标签:outdated、inaccurate、incomplete、wrong-examples、wrong-version、poorly-structured、accurate、well-structured、helpful、good-examples。
快速参考
| 目标 | 命令 |
|---|---|
| 列出所有内容 | chub search |
| 查找文档 | chub search "stripe" |
| 精确ID详情 | chub search stripe/api |
| 获取Python文档 | chub get stripe/api --lang py |
| 获取JS文档 | chub get openai/chat --lang js |
| 保存到文件 | chub get anthropic/sdk --lang py -o docs.md |
| 获取多个文档 | chub get openai/chat stripe/api --lang py |
| 保存注解 | chub annotate stripe/api "需要原始body" |
| 列出注解 | chub annotate --list |
| 评分文档 | chub feedback stripe/api up |
注意事项
chub search不带查询参数会列出所有可用内容- ID格式为
<作者>/<名称>— 在获取前从搜索结果确认ID - 如果存在多种语言且未传递
--lang参数,chub会告诉你哪些语言可用 - 文档是增量获取的,只下载需要的文件,节省token
示例用例
用例1:获取OpenAI聊天API文档
# 搜索OpenAI相关文档
chub search openai --json
# 获取Python版本的OpenAI聊天API文档
chub get openai/chat --lang py
用例2:获取Stripe API文档
# 搜索Stripe相关文档
chub search stripe --json
# 获取JavaScript版本的Stripe API文档
chub get stripe/api --lang js
用例3:添加本地注解
# 为OpenAI聊天API添加注解
chub annotate openai/chat "在streaming模式下,需要处理partial responses"
Python包装器
为了更方便地集成到nanobot,我们创建了一个Python包装器chub_wrapper.py:
from skills.context_hub.chub_wrapper import ChubWrapper
# 初始化
wrapper = ChubWrapper()
# 搜索文档
results = wrapper.search("openai")
# 获取文档
content = wrapper.get_doc("openai/chat", language="py")
# 搜索并获取(一步完成)
result = wrapper.search_and_get("fastapi", language="py")
集成到nanobot
这个技能可以通过以下方式集成:
方式1:直接使用exec工具
# 搜索文档
exec chub search "openai" --json
# 获取文档
exec chub get openai/chat --lang py
方式2:使用Python包装器
# 在nanobot技能中导入包装器
from skills.context_hub.chub_wrapper import ChubWrapper
wrapper = ChubWrapper()
results = wrapper.search("用户查询的库名")
建议的集成流程:
- 检测需求:当用户需要API文档时触发
- 搜索阶段:使用
chub search查找相关文档 - 获取阶段:使用
chub get获取具体文档 - 处理阶段:解析文档内容并用于回答
- 学习阶段:可选地使用
chub annotate保存学习内容
优势
- 减少幻觉:提供准确的API文档,减少AI错误
- 最新信息:获取当前可用的API版本
- 语言特定:Python/JavaScript等特定文档
- 效率提升:增量获取减少上下文长度
- 学习能力:通过注解保留学习成果
限制
- 内容覆盖:可能缺少特定API文档
- 社区驱动:内容质量参差不齐
- 语言限制:主要支持主流编程语言
- 更新延迟:依赖社区维护更新
测试验证
技能已通过以下测试验证:
- ✅ chub CLI已安装并可用
- ✅ 搜索功能正常工作
- ✅ 文档获取功能正常
- ✅ JSON输出格式正确
- ✅ 注解功能正常工作
- ✅ Python包装器功能完整
- ✅ 集成示例运行成功
详细测试结果
-
chub安装验证:
which chub # 返回: /usr/bin/chub -
搜索功能测试:
chub search "openai" --json # 成功返回14个结果 -
文档获取测试:
chub get fastapi/package --lang py # 成功获取10,441字符文档 -
注解功能测试:
chub annotate fastapi/package "测试注解" # 成功保存 chub annotate --list # 成功列出注解 -
Python包装器测试:
from chub_wrapper import ChubWrapper wrapper = ChubWrapper() results = wrapper.search("openai") # 成功返回14个结果 content = wrapper.get_doc("fastapi/package", "py") # 成功获取文档 -
使用示例测试:
python3 usage_example.py # 所有功能正常
未来改进
- 创建专门的Python包装器
- 添加缓存机制
- 集成到nanobot的自动技能调用
- 支持更多编程语言