Files
agent_management/agent_templates/agents/coding_a2a_agent/README.md
T

4.1 KiB

Coding A2A Agent

一个类似 Claude Code 的编程 Agent 模板:

  • 核心调度使用 Pydantic AI
  • 对外暴露 A2A 协议
  • 提供代码工作区工具:read_file、list_files、write_file、edit_file、run_command
  • 提供 Git 资源工具:兼容 Gitea、GitHub、GitLab
  • 提供资源工具:MySQL、PostgreSQL、Azure Blob

适用场景

  • 让 Agent 在工作区内像 Claude Code 一样理解和修改代码
  • 让上层系统通过 A2A 协议发起编程任务
  • 在同一个 Agent 中挂接 Git、数据库和 Blob 资源,帮助代码开发和排查

环境变量

变量 说明
OPENAI_BASE_URL / LITELLM_BASE_URL LiteLLM / OpenAI 兼容网关地址
OPENAI_API_KEY / LITELLM_API_KEY 模型 API Key
MODEL_NAME / LITELLM_MODEL 模型名称
WORK_DIR 默认工作区目录,默认 /workspace
AGENT_ROLE_NAME 启动时指定角色名,例如 backend、reviewer
AGENT_INSTRUCTION_TEXT 启动时直接注入角色/行为说明文本,支持类似 AGENTS.md / claude.md 内容
AGENT_INSTRUCTION_FILE 启动时读取角色说明文件路径,文件内容会并入系统提示词
SERVICE_PORT 服务端口,默认 8000

动态资源工具

这些资源工具都可以在启动时通过环境变量动态挂上。是否真的调用这些工具,由 agent 自己根据任务判断。

如果完全不传,对应工具依然存在,但调用时会返回 resource not configured,不会阻止 agent 启动。

Git

可选环境变量:

  • GIT_REPO_URL
  • GIT_PROVIDER
  • GIT_USERNAME
  • GIT_PASSWORD
  • GIT_TOKEN
  • GIT_DEFAULT_BRANCH
  • GIT_LOCAL_PATH
  • GIT_ALLOWED_PATHS:逗号分隔
  • GIT_WRITE_MODE

MySQL

至少需要:

  • MYSQL_HOST
  • MYSQL_USER
  • MYSQL_PASSWORD
  • MYSQL_DATABASE

可选:

  • MYSQL_PORT
  • MYSQL_SSL_MODE

PostgreSQL

至少需要:

  • POSTGRES_HOST
  • POSTGRES_USER
  • POSTGRES_PASSWORD
  • POSTGRES_DATABASE

可选:

  • POSTGRES_PORT
  • POSTGRES_SSL_MODE

也兼容 POSTGRESQL_* 变量名。

Azure Blob

至少需要:

  • AZURE_BLOB_CONTAINER

再配下面任意一套:

  1. AZURE_BLOB_CONNECTION_STRING
  2. AZURE_BLOB_ACCOUNT_URL + AZURE_BLOB_SAS_TOKEN
  3. AZURE_BLOB_ACCOUNT_URL + AZURE_BLOB_ACCOUNT_KEY
  4. AZURE_BLOB_ACCOUNT_NAME + AZURE_BLOB_ACCOUNT_KEY

可选:

  • AZURE_BLOB_PREFIX

也兼容:

  • AZURE_STORAGE_CONNECTION_STRING
  • AZURE_STORAGE_CONTAINER
  • AZURE_STORAGE_ACCOUNT_NAME
  • AZURE_STORAGE_ACCOUNT_KEY
  • AZURE_STORAGE_PREFIX

启动角色注入

如果你想让这个模板在启动时就带上固定角色或团队约定,可以直接通过环境变量传入。

示例 1:直接传文本

export AGENT_ROLE_NAME=backend
export AGENT_INSTRUCTION_TEXT=$'# Role\n你是 backend engineer\n\n# Constraints\n- 先读 README 和 api 目录\n- 修改后必须运行测试\n- 不改 frontend 目录'

示例 2:传文件路径

export AGENT_ROLE_NAME=reviewer
export AGENT_INSTRUCTION_FILE=/workspace/AGENTS.md

优先级:

  1. AGENT_INSTRUCTION_TEXT
  2. AGENT_INSTRUCTION_FILE
  3. 默认通用系统提示词

如果两者都没有,模板会退回通用 coding agent 行为。

A2A 示例

POST /message/send

{
  "jsonrpc": "2.0",
  "id": "demo-1",
  "method": "message/send",
  "params": {
    "message": {
      "role": "user",
      "parts": [
        {
          "kind": "text",
          "text": "先阅读 README.md 和 app/main.py,然后把健康检查接口补成返回 version 字段。"
        }
      ]
    },
    "configuration": {
      "workspace": {
        "root_dir": "/workspace/repo",
        "entry_file": "app/main.py",
        "context_files": ["README.md"],
        "allowed_paths": ["app", "tests", "README.md"]
      },
      "resources": {
        "git": {
          "repo_url": "https://gitee.example.com/acme/demo.git",
          "provider": "gitea",
          "default_branch": "main"
        }
      }
    }
  }
}

返回内容

  • A2A task
  • 编程结果文本
  • summary
  • files_changed
  • tool_log
  • resources_used