# opencode-a2a **Repository Path**: hivedark/opencode-a2a ## Basic Information - **Project Name**: opencode-a2a - **Description**: A2A(Agent-to-Agent)协议实现,支持 OpenCode SDK 集成 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-26 - **Last Updated**: 2026-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # OpenCode A2A A2A(Agent-to-Agent)协议实现,支持 OpenCode SDK 集成。 ## 概述 本项目实现了 A2A 协议的服务器和客户端,功能包括: - **A2A 服务器**:托管代理,通过 `/agent-card` 端点提供自发现支持 - **A2A 客户端**:通过 A2A 协议发现代理并发送任务 - **OpenCode 集成**:服务器通过连接 OpenCode 服务器执行 AI 对话任务 ## 架构 ``` ┌─────────────┐ A2A 协议 ┌─────────────┐ OpenCode SDK ┌─────────────┐ │ A2A 客户端 │ ───────────────► │ A2A 服务器 │ ──────────────────► │ OpenCode │ │ │ │ │ │ 服务器 │ └─────────────┘ └─────────────┘ └─────────────┘ (8080) (4096) ``` ## 快速开始 ```bash # 安装依赖 npm install # 启动 A2A 服务器(默认端口 8080) npm run start:server # 在另一个终端运行 A2A 客户端 npm run start:client ``` ## 配置 | 环境变量 | 默认值 | 说明 | | -------------- | ----------------------- | ------------------------------------ | | `PORT` | `8080` | A2A 服务器端口 | | `OPENCODE_URL` | `http://localhost:4096` | OpenCode 服务器地址 | | `LOG_LEVEL` | `info` | 日志级别(debug, info, warn, error) | ## 项目结构 ``` src/ ├── server.js # 服务器入口 ├── client.js # 客户端入口 ├── server/ │ └── index.js # A2A 服务器封装,集成 OpenCode ├── client/ │ └── index.js # A2A 客户端封装 ├── shared/ │ ├── types.js # 共享类型定义 │ └── constants.js # 共享常量 └── tests/ └── server.test.js # 测试文件 ``` ## 日志 使用 Pino 进行结构化日志记录,同时输出到控制台和文件: - 控制台:通过 `pino-pretty` 带颜色的输出 - 文件:`logs/server.log` 和 `logs/client.log`,使用 ISO 时间戳格式 ```javascript const logger = pino({ level: process.env.LOG_LEVEL || 'debug', timestamp: pino.stdTimeFunctions.isoTime, transport: { targets: [ { target: 'pino-pretty', options: { colorize: true }, level: 'info' }, { target: 'pino/file', options: { destination: 'logs/server.log' }, level: 'debug' }, ], }, }); ``` ## 开发 ```bash # 运行测试 npm test # 监听模式运行测试 npm test -- --watch # 运行单个测试 npm test -- --testPathPattern= # 代码检查 npm run lint # 代码格式化 npm run format ``` ## A2A 客户端使用 ```javascript import { A2AClientWrapper } from './client/index.js'; const client = new A2AClientWrapper('http://localhost:8080'); // 发现代理 const agents = await client.resolveAgents(); // 获取代理卡片 const card = await client.getAgentCard(agentId); // 发送消息并获取任务 ID const taskId = await client.sendMessage([{ type: 'text', content: '你好!' }], agentId); // 获取任务状态 const taskStatus = await client.getTaskStatus(taskId); // 取消任务 await client.cancelTask(taskId); ``` ## 依赖 | 包 | 版本 | 说明 | | ----------------------- | ------- | ------------------- | | `@dexwox-labs/a2a-node` | ^0.1.1 | A2A 协议 SDK | | `@opencode-ai/sdk` | ^1.3.2 | OpenCode API 客户端 | | `express` | ^4.18.2 | HTTP 服务器 | | `pino` | ^8.17.2 | 结构化日志 | | `pino-pretty` | ^13.1.3 | 日志格式化 |