前两天想给团队飞书群接一个 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:
{
"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)覆盖日常场景。
架构和数据流
三层结构:
飞书 WebSocket ←→ 桥接服务 ←→ Kiro CLI (ACP)
消息进来:WebSocket 监听飞书事件 → 解析用户消息
Session 映射:飞书话题(Thread)= ACP Session。同一话题里的消息自动路由到同一个 Session,新话题创建新 Session。桥接服务用一致性哈希把对话路由到固定 Worker,避免 Session 频繁切换。
流式回传:Kiro CLI 的流式输出累积后以消息卡片实时更新到飞书。工具调用状态同步展示。
双向集成:桥接服务内嵌 MCP Server,Agent 可以反向操作飞书——比如通过 feishu_send_file 工具给用户发文件。
实操步骤
配置桥接服务 config.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 配置不需要变。
相关资源: