krew-cli:在终端里开一场 AI 圆桌会议

5 阅读4分钟

你有没有想过,让 GPT、Claude、Gemini 坐在同一张桌子上,同时回答你的问题?

krew-cli 就是干这个的——一个多 AI 智能体协作的命令行工具。在一个终端里同时和多个大模型对话,就像主持一场 AI 圆桌会议。

demo_cn.gif

三行命令,直接开聊

GitHub:github.com/zhing2006/k…

npm install -g @zhing2026/krew
krew config init
krew

config init 是交互式配置向导,一步步引导你设置 provider 和 agent,不用手写配置文件。

核心玩法

@ 寻址——像群聊一样

@all Rust 里最好的错误处理方式是什么?
  (所有 agent 依次回答)

› @opus 能详细说说 Result 类型吗?
  (只有 Claude 回答)

› 继续说
  (自动发给上一个回答的 agent)

#悄悄话——私聊模式

› @all 设计一个聊天应用的架构
  (所有 agent 公开回答)

› #opus 你觉得 GPT 的方案有什么问题?
  (只有 opus 能看到,其他 agent 看到的是占位符)

还支持多人悄悄话群组:

#opus #gemini 你们讨论一下这两个方案的优劣
  (只有 opusgemini 能看到彼此的回复)

AI 对 AI——自动路由

当一个 agent 的回复里 @ 了另一个 agent,目标 agent 会被自动调度。你可以坐着看它们协作(或者吵架)。

内置工具

agent 不只是聊天机器人,它们能动手:

工具功能
read_file读取文件内容
write_file创建/覆盖文件
edit_file搜索替换编辑
shell执行 shell 命令
glob文件模式匹配
grep正则内容搜索
fetch_url抓取网页内容
activate_skill激活技能指令

所有文件操作都限制在项目目录内,不会越界。

MCP 扩展

通过 Model Context Protocol 服务器扩展 agent 能力,支持 stdio 和 HTTP 两种传输方式:

[[mcp_servers]]
name = "filesystem"
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "."]

技能系统

定义可复用的技能包,agent 自动发现并在需要时激活:

my-skill/
├── SKILL.md          # 技能定义(名称、描述、指令)
├── scripts/          # 辅助脚本
└── references/       # 参考资料

自定义斜杠命令

用 Markdown 文件定义自己的命令,支持参数替换和 bash 预处理:

---
description: 代码审查
argument-hint: <file_path>
---

请审查以下文件:$ARGUMENTS

最近的改动:
!`git diff --cached`

保存为 .krew/commands/review.md,然后在会话中 /review src/main.rs 就能用。

会话管理

  • 实时持久化 —— 每条消息实时保存,崩溃也不丢
  • 恢复会话 —— /resume 继续之前的对话
  • 时光倒流 —— /rewind 从任意消息点分叉,原会话不受影响
  • 自动压缩 —— token 接近上限时自动压缩上下文,悄悄话消息会被保留

Prompt 模式——用在脚本和 CI/CD 里

# CI 中做代码审查
git diff HEAD~1 | krew -p "@opus 检查这些改动有没有 bug"

# JSON 输出方便解析
krew -p "@all hello" --format json

更多特性

  • 流式输出 —— Markdown 渲染 + 语法高亮 + 每个 agent 独立配色
  • 思考过程 —— 展示模型的推理过程(可配置:low/medium/high)
  • 网页搜索 —— 原生支持 OpenAI、Anthropic、Gemini 的搜索能力
  • 独立采样参数 —— 每个 agent 可单独配置 temperature、top_p、max_tokens
  • 项目指令 —— AGENTS.md 文件自动注入到 agent 的系统提示词
  • 配置管理 —— krew config init/add/del/list/doctor 完整的配置 CRUD

支持的 Provider

Provider模型示例
OpenAIGPT-5.4
AnthropicClaude Opus 4.6, Sonnet 4.6
GoogleGemini 3.1 Pro(含 Vertex AI)
OpenAI 兼容OpenRouter、LiteLLM 等任意兼容 API

实战:用 OpenRouter 接入数百个模型

OpenRouter 是一个 OpenAI 兼容的聚合平台,一个 API key 就能访问数百个模型。

方式一:交互式向导(推荐)

krew config init
=== User Configuration (Providers) ===

Add provider [1]
Select provider type:
  Anthropic
  OpenAI
  Google
> OpenAI-Compatible
Provider name [openai-compatible]: openrouter
API key storage method:
  Environment variable
> Store in config file
API key: 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
Base URL: https://openrouter.ai/api/v1
Added provider "openrouter" (OpenAI)
Add another provider? (y/N): N

--- Providers Summary ---
Name             Type         Key Method               Base URL
------------------------------------------------------------------------
openrouter       OpenAI       config file              https://openrouter.ai/api/v1

Initialize agent configuration for current project? [Y/n]Y

=== Project Configuration (Agents) ===

Select setup mode:
> Smart Preset
  Manual Setup
Fetching available models...
Select preset:
  Single Agent
> Three Agents
...

向导会自动拉取 OpenRouter 上可用的模型列表,选好就能用。

方式二:手动配置

用户配置 ~/.krew/settings.toml

[providers.openrouter]
type = "openai"
api_key = "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"
base_url = "https://openrouter.ai/api/v1"

项目配置 .krew/settings.toml

[settings]
reply_order = ["sonnet", "gpt"]

[[agents]]
name = "sonnet"
display_name = "Claude Sonnet"
provider = "openrouter"
model = "anthropic/claude-sonnet-4"
color = "magenta"
tools = true

[[agents]]
name = "gpt"
display_name = "GPT-4.1"
provider = "openrouter"
model = "openai/gpt-4.1"
color = "green"
tools = true

不管哪种方式,你只需要一个 OpenRouter 账号,就能同时使用 Claude 和 GPT,甚至更多模型。

技术栈

Rust + Tokio + Ratatui,单个静态链接二进制文件,零运行时依赖。支持 Windows、Linux(x64/arm64)、macOS(x64/arm64)五个平台。


GitHub:github.com/zhing2006/k…

安装:npm install -g @zhing2026/krew

欢迎 Star、提 Issue 和 PR!