用 Kiro CLI 做 Agent 后端,1000 行代码搞定飞书 AI 聊天机器人

前两天想给团队飞书群接一个 AI 聊天机器人。刚开始梳理需求就头大了------LLM 集成、流式响应、工具调用、会话管理、上下文控制......

后来发现 Kiro CLI 支持 ACP(Agent Client Protocol),不用自己搭 Agent 运行时了,写一层桥接服务把飞书消息翻译成 ACP 格式就行。亚马逊云科技官博昨天也发了这个方案的实践文章,我跟着试了一遍,记录一下。

ACP 协议干嘛的

说白了就是一个标准化的"跟 AI Agent 对话"的协议。跑在 stdio 上,交互用 JSON。

启动 Kiro CLI,stdin 发指令,stdout 读响应。支持 Session 管理、富文本 Prompt(文本/图片/文件)、流式输出、工具调用状态上报。

关键点:协议不绑定任何前端。接飞书可以,接钉钉也可以,接 Slack 也行。

Kiro CLI 作为 Agent 后端

选它做后端是因为省事。LLM 集成、MCP 工具调用、Session 管理、Sub-agent 编排、Skill 模板------全内置了。你不需要自己搞也不需要长期维护。

Custom Agent 配置

一个 JSON 搞定。比如 Code Review Agent:

json 复制代码
{
  "name": "code-review-agent",
  "description": "代码审查专用 Agent",
  "prompt": "你是一个代码审查专家,专注于代码质量、安全漏洞和工程实践规范",
  "tools": ["read", "shell"],
  "allowedTools": ["read", "shell"],
  "toolsSettings": {
    "shell": {
      "allowedCommands": [
        "grep", "find", "wc", "head", "tail",
        "cat", "diff", "git diff", "git log", "cargo"
      ]
    }
  },
  "resources": [
    "skill://~/.kiro/skills/rust-code-review/SKILL.md"
  ],
  "hooks": {
    "agentSpawn": [
      {
        "command": "git diff --name-only HEAD~1",
        "timeout_ms": 5000,
        "max_output_size": 2048
      }
    ]
  }
}

几个值得说的设计:

  • allowedCommands 白名单控制 Shell 权限,Agent 不会乱执行危险命令
  • resources 引用 Skill 文件,把团队编码规范注入上下文
  • hooks.agentSpawn 启动时自动 git diff,Agent 直接知道该审查哪些文件

放到 ~/.kiro/agents/ 目录,kiro-cli acp --agent code-review-agent 启动。

MCP 工具生态

原生支持 MCP,查数据库、检索文档、调外部 API 都能通过 MCP Server 接入。内置工具(shell/read/write/grep/web_fetch/web_search)覆盖日常场景。

架构和数据流

三层结构:

java 复制代码
飞书 WebSocket ←→ 桥接服务 ←→ Kiro CLI (ACP)

消息进来:WebSocket 监听飞书事件 → 解析用户消息

Session 映射:飞书话题(Thread)= ACP Session。同一话题里的消息自动路由到同一个 Session,新话题创建新 Session。桥接服务用一致性哈希把对话路由到固定 Worker,避免 Session 频繁切换。

流式回传:Kiro CLI 的流式输出累积后以消息卡片实时更新到飞书。工具调用状态同步展示。

双向集成 :桥接服务内嵌 MCP Server,Agent 可以反向操作飞书------比如通过 feishu_send_file 工具给用户发文件。

实操步骤

配置桥接服务 config.toml

toml 复制代码
log_level = "debug"

[feishu]
app_id = "cli_xxxxxxx"
app_secret = "xxxxxxxxx"

[kiro]
cmd = "kiro-cli"
args = ["acp", "--agent", "code-review-agent"]

[kiro].args 指定 Agent,换个 Agent 就改这一行。

启动后的对话流程

  1. 用户在飞书 @机器人:"帮我审查最近的提交"
  2. Agent 通过 hooks 自动 git diff,拿到变更列表
  3. 逐文件分析代码,识别问题
  4. 输出结构化报告(Critical / Warning / Suggestion)
  5. 用户可以继续追问,上下文保持

不同场景切换

换个 Agent 配置就是另一个产品:

  • 知识库问答:配文档 RAG 的 MCP 工具
  • DevOps 助手:配 CloudWatch 查询、日志分析的 MCP 工具
  • 技术摘要 :用内置 web_fetch 抓取网页生成摘要

踩坑记录

  1. 进程池别开太大。每个 Kiro CLI 进程占内存不少,4-8 个 Worker 够用
  2. 消息卡片不要逐 Token 更新。飞书 API 有频率限制,攒 500ms 再刷新
  3. Session 超时要处理。话题可能沉寂很久又活跃,要能自动恢复 Session
  4. cwd 指对。Code Review Agent 需要能读到代码文件

成本

直接调大模型 API 按 Token 计费,Agent 场景下调用次数成倍增加。Kiro CLI 用订阅模式,成本可预测,不会因为用量波动而账单炸裂。

扩展到其他平台

ACP 不绑定 IM 平台。核心桥接逻辑复用,只需要改平台适配层(钉钉 WebHook / 企微回调 / Slack Events API)。Agent 配置不需要变。

相关资源:

相关推荐
147API9 小时前
从零开始上手 AWS:架构设计、成本优化与避坑指南
云计算·claude·aws
zhojiew9 小时前
[INFRA] EMR集群安全配置传输中加密和Kerberos认证配置详解
安全·aws·emr·bigdata
zhojiew9 小时前
[INFRA] EMR集群启用HA高可用架构和配置分析
aws·emr·bigdata
亚马逊云开发者9 小时前
S3 桶名不用再抢了:Account Regional Namespaces 来了
aws
zhojiew19 小时前
[INFRA] EMR集群LogPusher组件功能和运行原理分析
aws·emr·bigdata
zhojiew21 小时前
[INFRA] EMR集群CWagent组件功能和运行原理分析
aws·emr·bigdata
亚马逊云开发者1 天前
MCP Server 终于能"记住"用户了:AgentCore 有状态会话实战
aws
zhojiew1 天前
[INFRA] EMR集群MetricsCollector组件功能和运行原理分析
aws·emr·bigdata
zhojiew1 天前
[INFRA] EMR集群Instance Controller组件功能和运行原理分析
aws·emr·bigdata