09. LLM集成对比:Crush vs Kimi Code CLI
9.1 LLM抽象层
Crush: Fantasy
charm.land/fantasy
- fantasy.Generate()
- fantasy.Stream()
- fantasy.AgentTool
Kimi Code CLI: Kosong
packages/kosong/
- ChatProvider Protocol
- step()
- generate()
- Toolset
9.2 支持的Provider
Crush (10+)
| Provider | 类型 |
|---|
| OpenAI | openai |
| Anthropic | anthropic |
| OpenRouter | openrouter |
| Azure | azure |
| Bedrock | bedrock |
| Google | google |
| Vertex | google-vertex |
Kimi Code CLI (7+)
| Provider | 类型 |
|---|
| Kimi | kimi |
| OpenAI | openai_legacy |
| Anthropic | anthropic |
| Google | google_genai |
| Gemini | gemini |
| Vertex AI | vertexai |
9.3 流式处理
Crush: 回调函数
fantasy.Stream(ctx, fantasy.AgentStreamCall{
OnTextDelta: func(delta string) { ... },
OnToolCall: func(tc ToolCall) { ... },
OnReasoningDelta: func(delta string) { ... },
})
Kimi Code CLI: 异步迭代器
async for part in result:
if part.text:
wire_send(ContentPart(part=part))
if part.tool_call:
result = await toolset.handle(part.tool_call)
9.4 上下文压缩
Crush: 自动摘要
func (a *sessionAgent) Summarize(...) {
// 使用小模型生成摘要
// 保留最后N条消息
// 替换历史为摘要
}
Kimi Code CLI: compact + checkpoint
async def compact_context(self):
summary = await self._summarize(history)
self._context._history = [
Message(content=f"[Summary]\n{summary}"),
last_msg,
]
9.5 对比总结
| 维度 | Crush | Kimi Code CLI |
|---|
| 抽象库 | Fantasy | Kosong |
| 流式处理 | 回调函数 | 异步迭代器 |
| Kimi支持 | 无 | 原生 |
| 成本跟踪 | 精确计算 | 无 |
| 缓存 | Provider级 | Session级 |