logo
0
0
WeChat Login
pengfeiyu<pengfeiyu@tencent.com>
Initial commit

CodeBuddy Agentic SDK 集成解决方案

Memos 开源笔记应用为载体,演示如何通过 @tencent-ai/agent-sdk 将 CodeBuddy AI Agent 能力集成到第三方应用。用户可通过自然语言与 AI 助手对话,完成笔记的创建、查询、搜索、更新、删除等操作。

SDK 方案采用 嵌入式 (In-Process) 架构范式,Agent 作为库直接运行在宿主 Node.js 进程内,通过 query() 函数调用实现零延迟的 AI 能力集成。

架构概览

┌──────────────────────────────────┐
│         用户浏览器 (Memos UI)      │
│                                  │
│   ┌──────────────────────────┐   │
│   │     AIChatPanel 组件      │   │
│   │   (SSE 流式连接 Gateway)  │   │
│   └────────────┬─────────────┘   │
└────────────────┼─────────────────┘
                 │ SSE (text_delta / tool_use / done)
                 ▼
┌──────────────────────────────────┐
│    AI Gateway (Node.js :3333)    │
│                                  │
│  ┌────────┐ ┌────────┐ ┌──────┐ │
│  │认证代理 │ │并发控制 │ │会话  │ │
│  │        │ │(信号量) │ │管理  │ │
│  └────────┘ └────────┘ └──────┘ │
│           │                      │
│           │ query() API 调用     │
│           ▼                      │
│  ┌──────────────────────────┐   │
│  │  @tencent-ai/agent-sdk    │   │
│  │                          │   │
│  │  AsyncGenerator 流式输出  │   │
│  │  原生 Session 管理        │   │
│  │  精细权限控制              │   │
│  └────────────┬─────────────┘   │
└───────────────┼──────────────────┘
                │ curl (由 Agent 自主执行)
                ▼
┌──────────────────────────────────┐
│    Memos 后端 (Go :5230)         │
│    REST API /api/v1/memos        │
└──────────────────────────────────┘

目录结构

.
├── README.md                        # 本文件 — 项目总览
├── memos/                           # Memos 原始项目(基准代码,用于对比演示)
├── integration-sdk/                 # SDK 嵌入式集成 (In-Process)
│   ├── ai-gateway/src/
│   │   ├── index.ts                 #   服务入口 & SSE 路由
│   │   ├── sdk-agent.ts             #   核心:query() API + 流式处理
│   │   ├── auth-proxy.ts            #   Memos Token 认证代理
│   │   ├── system-prompt.ts         #   Agent 系统提示词
│   │   ├── session-manager.ts       #   会话管理
│   │   ├── semaphore.ts             #   并发控制信号量
│   │   └── config.ts                #   配置项
│   ├── web/src/components/
│   │   └── AIChatPanel.tsx          #   [新增] AI 对话面板组件
│   ├── start.sh / stop.sh           #   一键启停
│   ├── SDK集成方案详细文档.md         #   详细技术文档
│   └── README.md                    #   方案说明

快速开始

Step 1:检查前置条件

确保本地已安装以下工具:

工具最低版本检查命令说明
Go1.22+go version编译 Memos 后端
Node.js18+node --version运行 AI Gateway
pnpmpnpm --version前端包管理器
CodeBuddy CLIwhich codebuddySDK 运行时依赖

Step 2:配置 SDK 认证(三选一)

@tencent-ai/agent-sdk 支持以下 3 种认证方式,任选其一即可:

方式一:CLI 登录凭据(本地验证推荐)✅

最简单,适合本地快速验证。在终端执行交互式登录后,SDK 自动复用凭证:

codebuddy login

方式二:API Key(服务端部署推荐)

适用于未登录 CLI 或需要在服务端部署的场景。设置环境变量即可:

export CODEBUDDY_API_KEY="your-api-key"
# 中国版必须同时设置
export CODEBUDDY_INTERNET_ENVIRONMENT=internal

API Key 获取地址

也可以在代码中通过 options.env 传递(参见下方 SDK 核心用法)。

方式三:OAuth Client Credentials(企业版)

适用于购买了 CodeBuddy 旗舰版的企业用户,适合服务端应用和 CI/CD 场景:

  1. 在 CodeBuddy 控制台创建应用,获取 Client IDClient Secret
  2. 向 Token 端点换取访问令牌:
    curl -X POST https://copilot.tencent.com/oauth2/token \
      -d "grant_type=client_credentials&client_id=<ID>&client_secret=<SECRET>"
    
  3. 通过环境变量传入:
    export CODEBUDDY_AUTH_TOKEN="your-oauth-token"
    

Step 3:一键启动

cd integration-sdk
chmod +x start.sh stop.sh
./start.sh

启动脚本会自动完成以下步骤(首次启动需要编译,约 3-5 分钟;后续启动秒级):

步骤命令说明
1pnpm install安装前端依赖
2pnpm run release构建前端(打包到 Go 后端的 static 目录)
3go build -o memos-bin编译 Memos Go 后端
4npm install安装 AI Gateway 依赖(含 @tencent-ai/agent-sdk

编译完成后自动启动两个服务:

服务地址说明
Memos 后端http://localhost:5230笔记应用主界面
AI Gatewayhttp://localhost:3333AI Agent 中间层

Step 4:注册 Memos 账号

  1. 浏览器访问 http://localhost:5230
  2. 首次访问进入注册页面,填写用户名密码创建账号
  3. 注册完成后自动登录进入 Memos 主界面

Step 5:验证 AI Gateway 状态

curl http://localhost:3333/api/ai/status

正常返回:

{
  "status": "running",
  "mode": "sdk",
  "concurrent": 0,
  "maxConcurrency": 5,
  "queued": 0,
  "activeSessions": 0,
  "memosUrl": "http://localhost:5230"
}

Step 6:使用 AI 对话

方式 A — 通过 UI:在 Memos 界面点击右下角 ✨ 按钮打开 AI 对话面板,输入自然语言即可。

方式 B — 通过 curl 直接调用 API(需要 Memos Access Token):

# Token 可从浏览器开发者工具 (F12) → Network → 任意 API 请求的 Authorization 头中获取
curl -N -X POST http://localhost:3333/api/ai/chat \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer <你的 memos_access_token>" \
  -d '{"message": "帮我记一条笔记:明天下午 3 点开会"}'

返回 SSE 流,会看到逐条推送的 text_deltatool_usedone 等事件。

停止服务

./stop.sh

常见问题排查

问题排查方式
Memos 启动失败查看日志:cat integration-sdk/memos.log
AI Gateway 启动失败查看日志:cat integration-sdk/ai-gateway.log
Go 版本不兼容修改 integration-sdk/go.modgo x.x.x 为本地版本
SDK 认证失败确认已执行 codebuddy login 或设置了 CODEBUDDY_API_KEY 环境变量
端口被占用检查端口:lsof -i :5230lsof -i :3333
前端构建失败确认 pnpm 已安装:npm install -g pnpm

AI Gateway API

接口方法说明
/api/ai/chatPOST核心对话接口,返回 SSE 流(需 Authorization: Bearer <memos_token>
/api/ai/resetPOST重置用户会话(开始新对话)
/api/ai/statusGET查看 Gateway 运行状态(无需认证)

SSE 事件类型

事件说明
text_delta增量文本(逐字推送)
tool_useAgent 调用工具(如 curl 调用 Memos API)
tool_result工具执行结果
done对话完成,返回 sessionId 用于多轮对话
error错误信息

SDK 核心用法

import { query } from "@tencent-ai/agent-sdk";

const q = query({
  prompt: "查看我最近的笔记",
  options: {
    cwd: "/tmp/sandbox",
    permissionMode: "bypassPermissions",
    systemPrompt: "你是 Memos 智能助手...",
    persistSession: true,
    resume: "previous-session-id",   // 可选:恢复会话
    // 认证配置(API Key 方式,也可通过环境变量设置)
    env: {
      CODEBUDDY_API_KEY: process.env.CODEBUDDY_API_KEY,
      CODEBUDDY_INTERNET_ENVIRONMENT: "internal",  // 中国版必填
    },
  },
});

for await (const message of q) {
  switch (message.type) {
    case "assistant":
      // 处理完整消息(含 tool_use)
      break;
    case "partial_assistant":
      // 处理增量文本(逐字推送)
      break;
    case "result":
      // 对话完成
      break;
  }
}

环境变量

变量默认值说明
CODEBUDDY_API_KEYCodeBuddy API Key(认证方式二)
CODEBUDDY_INTERNET_ENVIRONMENTSDK 环境标识:中国版 internal、iOA 版 ioa、海外版不设置
CODEBUDDY_AUTH_TOKENOAuth 访问令牌(认证方式三,企业版)
MEMOS_URLhttp://localhost:5230Memos 后端地址
MAX_CONCURRENCY5最大并发 Agent 会话数
SESSION_TTL1800000会话过期时间 (ms, 默认 30 分钟)
SANDBOX_ROOT/tmp/memos-ai-sandboxesAgent 沙箱根目录

使用示例

在 AI 对话面板中可以直接用自然语言操作:

  • "帮我记一条笔记:明天下午 3 点开会"
  • "查看我最近的笔记"
  • "搜索关于 Python 的笔记"
  • "分析下我这个月的笔记内容"
  • "删掉那条关于开会的笔记"

详细文档

文档说明
SDK 集成方案详细文档SDK 模式的架构设计、源码解读、踩坑记录

技术栈

层级技术
前端React + TypeScript + Vite
AI GatewayNode.js + Express + TypeScript
后端Go (Memos 原生)
数据库SQLite (Memos 默认)
AI AgentCodeBuddy Agent SDK (@tencent-ai/agent-sdk)

License

本演示项目基于 Memos(MIT License)进行修改。

About

agentic-integration-demo

Language
Go54.5%
TypeScript44.6%
Shell0.4%
CSS0.4%
Others0.1%