外观
AgentCard
结构
typescript
interface AgentCard {
agentId: string // 唯一标识
name: string // 显示名称
version: string // 版本号
description: string // 能力描述
skills: SkillInfo[] // 技能列表
defaultSkill: string // 默认技能
endpoint: Endpoint // 网络端点
}
interface SkillInfo {
name: string
description?: string
inputSchema?: string // JSON Schema 字符串
}
interface Endpoint {
host: string
port: number
namespace?: string
}获取 AgentCard
Client 端
typescript
const card = await client.getAgentCard()
console.log(card.name)
console.log(card.version)
console.log(card.skills.map(s => s.name))Handler 中
typescript
const handler = async (params, ctx) => {
const card = ctx.getAgentCard()
console.log(`Running on ${card.name}`)
}从消息中
typescript
for await (const msg of stream) {
if (msg.from) {
console.log('From:', msg.from.name)
}
}创建 AgentCard
通过 AgentConfig 配置自动创建:
typescript
const config: AgentConfig = {
agentId: 'chat-agent',
name: 'Chat Agent',
version: '1.0.0',
description: '对话 Agent',
address: 'a2a://0.0.0.0:50054',
skills: [
{ name: 'chat', description: '对话', handler, inputSchema: z.toJSONSchema(schema) as any }
],
defaultSkill: 'chat',
}常用操作
typescript
// 检查技能
const hasChat = card.skills.some(s => s.name === 'chat')
// 获取技能 Schema
const skill = card.skills.find(s => s.name === 'chat')
const schema = JSON.parse(skill?.inputSchema || '{}')
// 生成提示词
import { generateAgentResumePrompt } from '@multi-agent/a2a'
const prompt = generateAgentResumePrompt(card)