Files
Ubuntu 32b43f85bd a
2026-07-03 16:58:28 +08:00

6.6 KiB
Raw Permalink Blame History

Context Hub (chub) - API文档获取技能

概述

Context Hub(chub)是一个为AI编码助手设计的上下文文档管理系统,由Andrew Ng(吴恩达)团队开发。这个技能允许nanobot通过chub CLI获取准确、最新的API文档,减少AI幻觉,提高编码准确性。

安装要求

chub已经安装在系统中:

# 检查安装
which chub

# 基本命令可用
chub search openai --json

使用场景

当用户需要以下帮助时使用此技能:

  1. 编写使用第三方库、SDK或API的代码
  2. 需要当前API参考文档
  3. 需要特定语言的SDK文档
  4. 需要验证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("用户查询的库名")

建议的集成流程:

  1. 检测需求:当用户需要API文档时触发
  2. 搜索阶段:使用chub search查找相关文档
  3. 获取阶段:使用chub get获取具体文档
  4. 处理阶段:解析文档内容并用于回答
  5. 学习阶段:可选地使用chub annotate保存学习内容

优势

  1. 减少幻觉:提供准确的API文档,减少AI错误
  2. 最新信息:获取当前可用的API版本
  3. 语言特定:Python/JavaScript等特定文档
  4. 效率提升:增量获取减少上下文长度
  5. 学习能力:通过注解保留学习成果

限制

  1. 内容覆盖:可能缺少特定API文档
  2. 社区驱动:内容质量参差不齐
  3. 语言限制:主要支持主流编程语言
  4. 更新延迟:依赖社区维护更新

测试验证

技能已通过以下测试验证:

  • ✅ chub CLI已安装并可用
  • ✅ 搜索功能正常工作
  • ✅ 文档获取功能正常
  • ✅ JSON输出格式正确
  • ✅ 注解功能正常工作
  • ✅ Python包装器功能完整
  • ✅ 集成示例运行成功

详细测试结果

  1. chub安装验证:

    which chub  # 返回: /usr/bin/chub
    
  2. 搜索功能测试:

    chub search "openai" --json  # 成功返回14个结果
    
  3. 文档获取测试:

    chub get fastapi/package --lang py  # 成功获取10,441字符文档
    
  4. 注解功能测试:

    chub annotate fastapi/package "测试注解"  # 成功保存
    chub annotate --list  # 成功列出注解
    
  5. Python包装器测试:

    from chub_wrapper import ChubWrapper
    wrapper = ChubWrapper()
    results = wrapper.search("openai")  # 成功返回14个结果
    content = wrapper.get_doc("fastapi/package", "py")  # 成功获取文档
    
  6. 使用示例测试:

    python3 usage_example.py  # 所有功能正常
    

未来改进

  1. 创建专门的Python包装器
  2. 添加缓存机制
  3. 集成到nanobot的自动技能调用
  4. 支持更多编程语言