前两天想给团队飞书群接一个 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 就改这一行。
启动后的对话流程:
- 用户在飞书 @机器人:"帮我审查最近的提交"
- Agent 通过 hooks 自动
git diff,拿到变更列表 - 逐文件分析代码,识别问题
- 输出结构化报告(Critical / Warning / Suggestion)
- 用户可以继续追问,上下文保持
不同场景切换
换个 Agent 配置就是另一个产品:
- 知识库问答:配文档 RAG 的 MCP 工具
- DevOps 助手:配 CloudWatch 查询、日志分析的 MCP 工具
- 技术摘要 :用内置
web_fetch抓取网页生成摘要
踩坑记录
- 进程池别开太大。每个 Kiro CLI 进程占内存不少,4-8 个 Worker 够用
- 消息卡片不要逐 Token 更新。飞书 API 有频率限制,攒 500ms 再刷新
- Session 超时要处理。话题可能沉寂很久又活跃,要能自动恢复 Session
- cwd 指对。Code Review Agent 需要能读到代码文件
成本
直接调大模型 API 按 Token 计费,Agent 场景下调用次数成倍增加。Kiro CLI 用订阅模式,成本可预测,不会因为用量波动而账单炸裂。
扩展到其他平台
ACP 不绑定 IM 平台。核心桥接逻辑复用,只需要改平台适配层(钉钉 WebHook / 企微回调 / Slack Events API)。Agent 配置不需要变。
相关资源: