Skip to content

SDK Demo Projects

This document introduces the official demo projects for CodeBuddy Agent SDK, helping you quickly understand various SDK usage scenarios.

Demo Repository

All demo code is hosted in the official repository:

Repository URL: https://cnb.cool/codebuddy/agent-sdk-demos

bash
git clone https://cnb.cool/codebuddy/agent-sdk-demos.git
cd agent-sdk-demos

Demo Overview

DemoLanguageCore FeaturesUse Case
quick-startTypeScriptBasic API, Message Streaming, HooksSDK Getting Started
multi-turn-sessionTypeScriptMulti-turn Conversations, Session RecoveryInteractive Applications
research-assistantPythonMulti-Agent CollaborationComplex Task Decomposition
profile-builderTypeScriptWeb Search, Document GenerationInformation Collection
chat-demoTypeScriptWebSocket, Streaming ResponseWeb Applications
mail-assistantTypeScriptMCP Protocol, Custom ToolsBusiness System Integration
spreadsheet-assistantTypeScriptElectron IPCDesktop Applications

Environment Setup

Prerequisites

  • Bun or Node.js 18+
  • Python 3.10+ (for Python demos)
  • CodeBuddy CLI login authentication completed

Install SDK

bash
npm install @tencent-ai/agent-sdk
bash
pip install codebuddy-agent-sdk

Authentication Methods

SDK supports multiple authentication methods:

  1. Reuse CLI Login State: If you have logged in via the codebuddy command, SDK automatically uses existing credentials
  2. API Key Authentication: Configure via environment variables

For detailed authentication configuration, please refer to Settings Configuration - Authentication

Basic Demos

quick-start: SDK Getting Started

Demonstrates basic usage of the query() API, including message stream handling and Hooks mechanism.

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

const conversation = query({
  prompt: 'Hello! Please introduce what you can do.',
  options: {
    model: 'claude-4.5',
    maxTurns: 100,
    allowedTools: ['Read', 'Write', 'Bash', 'Glob', 'Grep'],
  },
});

for await (const message of conversation) {
  if (message.type === 'assistant') {
    const text = message.message.content.find(c => c.type === 'text');
    if (text) console.log(text.text);
  }
  if (message.type === 'result') {
    console.log(`Completed in ${message.duration_ms}ms`);
  }
}

Run Demo:

bash
cd quick-start
npm install
npx tsx quick-start.ts

multi-turn-session: Multi-turn Conversations

Demonstrates Session API for multi-turn conversations and session recovery.

typescript
import { unstable_v2_createSession, unstable_v2_resumeSession } from '@tencent-ai/agent-sdk';

// Create session
await using session = unstable_v2_createSession({ model: 'claude-4.5' });

// First turn
await session.send('What year is it?');
for await (const msg of session.stream()) { /* ... */ }

// Second turn (maintaining context)
await session.send('What year is it 10 years from now?');
for await (const msg of session.stream()) { /* ... */ }

Run Demo:

bash
cd multi-turn-session
npm install
npx tsx examples.ts basic        # Basic session
npx tsx examples.ts multi-turn   # Multi-turn conversation
npx tsx examples.ts resume       # Session recovery

Advanced Demos

research-assistant: Multi-Agent Collaboration

Python demo showing how to define multiple specialized sub-agents collaborating on complex tasks.

Workflow:

  1. Main Agent breaks down research requests into subtasks
  2. Researcher uses WebSearch to gather information, saves to files/research_notes/
  3. Data Analyst extracts data from research notes, generates charts to files/charts/
  4. Report Writer consolidates content, generates PDF reports to files/reports/
python
from codebuddy_agent_sdk import CodeBuddySDKClient, CodeBuddyAgentOptions, AgentDefinition

agents = {
    "researcher": AgentDefinition(
        description="Use web search to collect research information",
        tools=["WebSearch", "Write"],
        model="claude-haiku-4.5"
    ),
    "data-analyst": AgentDefinition(
        description="Extract data from research notes and generate charts",
        tools=["Glob", "Read", "Bash", "Write"],
        model="claude-haiku-4.5"
    ),
    "report-writer": AgentDefinition(
        description="Consolidate research and data to generate PDF reports",
        tools=["Skill", "Glob", "Read", "Write", "Bash"],
        model="claude-haiku-4.5"
    )
}

options = CodeBuddyAgentOptions(
    allowed_tools=["Task"],  # Main Agent can only delegate tasks
    agents=agents,
    model="claude-haiku-4.5"
)

async with CodeBuddySDKClient(options=options) as client:
    await client.query("Research quantum computing developments in 2025")
    async for msg in client.receive_response():
        # Handle message

Run Demo:

bash
cd research-assistant
uv sync
uv run python research_agent/agent.py

profile-builder: Information Collection and Document Generation

Demonstrates WebSearch tool and document generation capabilities.

typescript
const q = query({
  prompt: `Search for information about "${personName}" and create a professional resume`,
  options: {
    allowedTools: ['WebSearch', 'WebFetch', 'Bash', 'Write', 'Read'],
    systemPrompt: 'You are a resume writing expert...',
  },
});

Run Demo:

bash
cd profile-builder
npm install
npm start "Name"
# Output: agent/custom_scripts/resume.docx

Web Application Integration

chat-demo: Streaming Response Architecture

Demonstrates how to integrate SDK into web applications with WebSocket for streaming responses.

Architecture:

Browser (React) ←─ WebSocket ─→ Express Server ←─ SDK query()

Server-side Wrapper:

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

export class Agent {
  async sendMessage(content: string) {
    this.stream = query({
      prompt: content,
      options: {
        maxTurns: 1,
        allowedTools: ['Bash', 'Read', 'Write', 'WebSearch'],
      },
    })[Symbol.asyncIterator]();
  }

  async *getOutputStream() {
    while (true) {
      const { value, done } = await this.stream.next();
      if (done) break;
      yield value;
    }
  }
}

Run Demo:

bash
cd chat-demo
npm install
npm run dev
# Backend: http://localhost:3001
# Frontend: http://localhost:5173

mail-assistant: MCP Tool Extension

Demonstrates extending Agent capabilities through MCP protocol for email system operations.

typescript
const q = query({
  prompt: 'Find unread important emails from this week',
  options: {
    allowedTools: [
      'Read', 'Write', 'Bash',
      'mcp__email__search_inbox',   // MCP tools
      'mcp__email__read_emails'
    ],
    mcpServers: {
      "email": customEmailServer
    },
  },
});

Run Demo:

bash
cd mail-assistant
cp .env.example .env  # Configure IMAP credentials
bun install
bun run dev
# Visit http://localhost:3000

Desktop Application Integration

spreadsheet-assistant: Electron Integration

Demonstrates SDK integration in Electron applications via IPC.

Main Process:

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

ipcMain.on('agent:query', async (event, data) => {
  for await (const message of query({ prompt: data.content, options })) {
    event.reply('agent:response', message);
  }
});

Renderer Process:

typescript
window.electron.ipcRenderer.on('agent:response', (message) => {
  // Update UI
});

window.electron.ipcRenderer.sendMessage('agent:query', { content: 'Create sales report' });

Run Demo:

bash
cd spreadsheet-assistant
npm install
npm start

Hooks Security Control

All demos support security control through Hooks:

typescript
const q = query({
  prompt: '...',
  options: {
    hooks: {
      PreToolUse: [{
        matcher: 'Write|Edit',
        hooks: [async (input) => {
          const filePath = input.tool_input.file_path;
          // Restrict write directory
          if (!filePath.startsWith('/allowed/path/')) {
            return { decision: 'block', stopReason: 'Path not allowed' };
          }
          return { continue: true };
        }]
      }]
    }
  }
});