git clone https://cnb.cool/codebuddy/agent-sdk-demos.gitcd agent-sdk-demos
Example | Language | Core Feature | Scenario |
quick-start | TypeScript | Basic APIs, Message Streaming, and Hooks | SDK Getting Started |
multi-turn-session | TypeScript | Multi-turn conversations and session recovery | Interactive Applications |
research-assistant | Python | Multi-agent Collaboration | Complex Task Decomposition |
profile-builder | TypeScript | Web search and document generation | Information Collection |
chat-demo | TypeScript | WebSocket and streaming responses | Web Applications |
mail-assistant | TypeScript | MCP protocol and custom tools | Business System Integration |
spreadsheet-assistant | TypeScript | Electron IPC | Desktop Applications |
npm install @tencent-ai/agent-sdk
pip install codebuddy-agent-sdk
codebuddy command, the SDK automatically uses the existing credentials.query() API, including message stream processing and the Hooks mechanism.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(`Done. Duration: ${message.duration_ms}ms`);}}
cd quick-startnpm installnpx tsx quick-start.ts
import { unstable_v2_createSession, unstable_v2_resumeSession } from '@tencent-ai/agent-sdk';// Create a sessionawait using session = unstable_v2_createSession({ model: 'claude-4.5' });// First roundawait session.send('What year is it?');for await (const msg of session.stream()) { /* ... */ }// Second round (context is maintained)await session.send('What year is it 10 years from now?');for await (const msg of session.stream()) { /* ... */ }
cd multi-turn-sessionnpm installnpx tsx examples.ts basic # Basic sessionnpx tsx examples.ts multi-turn # Multi-turn conversationnpx tsx examples.ts resume # Session restoration
files/research_notes/.files/charts/.files/reports/.from codebuddy_agent_sdk import CodeBuddySDKClient, CodeBuddyAgentOptions, AgentDefinitionagents = {"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 a PDF report",tools=["Skill", "Glob", "Read", "Write", "Bash"],model="claude-haiku-4.5")}options = CodeBuddyAgentOptions(allowed_tools=["Task"], # The main Agent can only delegate tasks.agents=agents,model="claude-haiku-4.5")async with CodeBuddySDKClient(options=options) as client:await client.query("Research the development of quantum computing in 2025")async for msg in client.receive_response():# Process messages
cd research-assistantuv syncuv run python research_agent/agent.py
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...',},});
cd profile-buildernpm installnpm start "Name"# Output: agent/custom_scripts/resume.docx
Browser (React) ←─ WebSocket ─→ Express Server ←─ SDK query()
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;}}}
cd chat-demonpm installnpm run dev# Backend: http://localhost:3001# Frontend: http://localhost:5173
const q = query({prompt: 'Find important unread emails from this week',options: {allowedTools: ['Read', 'Write', 'Bash','mcp__email__search_inbox', // MCP tool'mcp__email__read_emails'],mcpServers: {"email": customEmailServer},},});
cd mail-assistantcp .env.example .env # Configure IMAP credentialsbun installbun run dev# Visit http://localhost:3000
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);}});
window.electron.ipcRenderer.on('agent:response', (message) => {// Update the UI});window.electron.ipcRenderer.sendMessage('agent:query', { content: 'Create a sales report' });
cd spreadsheet-assistantnpm installnpm start
const q = query({prompt: '...',options: {hooks: {PreToolUse: [{matcher: 'Write|Edit',hooks: [async (input) => {const filePath = input.tool_input.file_path;// Restrict the write directoryif (!filePath.startsWith('/allowed/path/')) {return { decision: 'block', stopReason: 'Path not allowed' };}return { continue: true };}]}]}}});
Was this page helpful?
You can also Contact sales or Submit a Ticket for help.
Help us improve! Rate your documentation experience in 5 mins.
Feedback