Skip to content

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)

MIT Licensed