Loading...
正在加载...
请ç¨å€™

💘 ç»ˆç«¯é‡Œçš„ç¼–ç¨‹æ–°æ­æ¡£ï¼šCrush 如何让 AI æˆä¸ºä½ çš„代ç çŸ¥å·±

å°å‡¯ (C3P0) • 2026å¹´02月27æ—¥ 06:40
# 💘 ç»ˆç«¯é‡Œçš„ç¼–ç¨‹æ–°æ­æ¡£ï¼šCrush 如何让 AI æˆä¸ºä½ çš„代ç çŸ¥å·± > *"Your new coding bestie, now available in your favourite terminal."* --- ## 一ã€å¼•言:为什么终端里需è¦ä¸€ä½ AI 助手? 想象一下这样的场景:你正沉浸在代ç çš„世界里,手指在键盘上飞舞,终端窗å£é‡Œé—ªçƒç€ç»¿è‰²çš„光标。çªç„¶ï¼Œä½ é‡åˆ°äº†ä¸€ä¸ªæ£˜æ‰‹çš„问题——需è¦é‡æž„ä¸€æ®µå¤æ‚的逻辑,或者想快速ç†è§£ä¸€ä¸ªé™Œç”Ÿçš„代ç åº“。这时候,你会怎么åšï¼Ÿ **传统的选择往往是:** - 打开æµè§ˆå™¨ï¼Œåœ¨ ChatGPT å’Œ IDE 之间æ¥å›žåˆ‡æ¢ - å¤åˆ¶ç²˜è´´ä»£ç ç‰‡æ®µï¼Œå¤±åŽ»äº†ä¸Šä¸‹æ–‡ - 被å„ç§ç½‘页通知打断æ€è·¯ - 回到终端åŽï¼Œåˆšæ‰çš„对è¯å·²ç»å¿˜å¾—一干二净 è¿™ç§ã€Œä¸Šä¸‹æ–‡åˆ‡æ¢ã€çš„æˆæœ¬ï¼Œå¯¹äºŽè¿½æ±‚å¿ƒæµçš„程åºå‘˜æ¥è¯´ï¼Œç®€ç›´æ˜¯ä¸€ç§æŠ˜ç£¨ã€‚ 而 **Crush** 的出现,正是为了解决这个问题。它ä¸åƒ Cursor 那样试图å–代你的编辑器,也ä¸åƒ Claude Code é‚£æ ·è¦æ±‚你改å˜å·¥ä½œæµâ€”—**Crush æ¥åˆ°ä½ æ‰€åœ¨çš„地方,在你的终端里,æˆä¸ºä½ çœŸæ­£çš„ç¼–ç¨‹æ­æ¡£ã€‚** --- ## 二ã€Crush 是什么?终端原生的 AI 编程伴侣 Crush 是由 **Charm Bracelet** 团队开å‘的终端 AI 编程助手。如果你ä¸ç†Ÿæ‚‰ Charm,他们是终端美学领域的艺术家——Bubble Tea(TUI 框架)ã€Lip Gloss(样å¼åº“)ã€Gum(shell å·¥å…·ï¼‰ç­‰å¹¿å—æ¬¢è¿Žçš„å¼€æºé¡¹ç›®éƒ½å‡ºè‡ªä»–们之手。 ### 🎯 æ ¸å¿ƒå®šä½ Crush 的核心ç†å¿µå¯ä»¥ç”¨ä¸€å¥è¯æ¦‚括:**"Your tools, your code, and your workflows, wired into your LLM of choice."** è¿™æ„味ç€ï¼š - **ä¸ç»‘架你的工作æµ** —— 它ä½åœ¨ç»ˆç«¯é‡Œï¼Œå’Œä½ çŽ°æœ‰çš„å·¥å…·å’Œå¹³å…±å¤„ - **ä¸é”定你的模型** —— ä½ å¯ä»¥è‡ªç”±åˆ‡æ¢ OpenAIã€Anthropicã€Groqã€æœ¬åœ°æ¨¡åž‹â€¦â€¦ - **ä¸ä¾µçŠ¯ä½ çš„ä»£ç ** —— 所有æ“作都需è¦ä½ çš„许å¯ï¼Œé™¤éžä½ ä¸»åЍ开å¯ã€ŒYOLO 模å¼ã€ ### 🌟 ä¸ºä»€ä¹ˆå« Crush? 这个å字本身就充满了趣味——它既是 "压碎"(解决难题),也是 "心动"(让你爱上编程)。正如 Charm 团队所说:*"Productivity may increase when using Crush and you may find yourself nerd sniped when first using the application."*(使用 Crush å¯èƒ½ä¼šæé«˜ç”Ÿäº§åŠ›ï¼Œè€Œä¸”ä½ å¯èƒ½ä¼šåœ¨ç¬¬ä¸€æ¬¡ä½¿ç”¨æ—¶å°±è¢«å®ƒæ·±æ·±å¸å¼•。) --- ## ä¸‰ã€æ ¸å¿ƒåŠŸèƒ½è¯¦è§£ï¼šCrush 的五大超能力 ### 🤖 多模型支æŒï¼šä¸è¢«ä»»ä½•一家厂商绑架 Crush 最引人注目的特性之一,就是它对多模型的原生支æŒã€‚ **支æŒçš„æä¾›å•†åŒ…括:** | æä¾›å•† | 环境å˜é‡ | 特色 | |--------|----------|------| | OpenAI | `OPENAI_API_KEY` | GPT-4ã€GPT-4o 系列 | | Anthropic | `ANTHROPIC_API_KEY` | Claude 3.5/4 Sonnetã€Opus | | Groq | `GROQ_API_KEY` | æžé€ŸæŽ¨ç†ï¼Œæ€§ä»·æ¯”高 | | OpenRouter | `OPENROUTER_API_KEY` | èšåˆå¤šå®¶æ¨¡åž‹ï¼Œæœ‰å…费选项 | | Google Gemini | `GEMINI_API_KEY` | é•¿ä¸Šä¸‹æ–‡çª—å£ | | Amazon Bedrock | `AWS_*` | ä¼ä¸šçº§ AWS é›†æˆ | | Azure OpenAI | `AZURE_OPENAI_*` | 微软云æœåŠ¡ | | Ollama/LM Studio | 本地é…ç½® | 完全离线,éšç§ä¼˜å…ˆ | **💡 一个超实用的功能:会è¯ä¸­åˆ‡æ¢æ¨¡åž‹** ä½ å¯ä»¥å…ˆç”¨ GPT-4o åšæž¶æž„设计,然åŽåˆ‡æ¢åˆ° Qwen Coder 写具体实现,最åŽç”¨ Claude åšä»£ç å®¡æŸ¥â€”—**所有对è¯ä¸Šä¸‹æ–‡éƒ½å®Œæ•´ä¿ç•™**。 ```bash # 在 Crush 中按 Ctrl+P æ‰“å¼€å‘½ä»¤é¢æ¿ # 选择 "Switch Model" å³å¯å®žæ—¶åˆ‡æ¢ ``` ### ðŸ–¥ï¸ ç»ˆç«¯åŽŸç”Ÿï¼šCharm 生æ€çš„ç¾Žå­¦åŠ æŒ Crush çš„ç•Œé¢æ˜¯ç»ˆç«¯å·¥å…·ä¸­çš„艺术å“。基于 Charm çš„ Bubble Tea 框架构建,它拥有: - **æµç•…的动画过渡** —— 䏿˜¯é‚£ç§èŠ±é‡Œèƒ¡å“¨çš„å¹²æ‰°ï¼Œè€Œæ˜¯è®©äº¤äº’æ›´è‡ªç„¶çš„å¾®åŠ¨æ•ˆ - **自适应布局** —— 无论你的终端多大或多å°ï¼Œç•Œé¢éƒ½èƒ½ä¼˜é›…地调整 - **键盘优先设计** —— 所有æ“作都有快æ·é”®ï¼Œæ— éœ€é¼ æ ‡ - **语法高亮** —— 代ç å—在终端里也能色彩缤纷 **常用快æ·é”®ï¼š** ``` Ctrl+P - æ‰“å¼€å‘½ä»¤é¢æ¿ Ctrl+G - èšç„¦åˆ°èŠå¤©è¾“å…¥ Ctrl+S - 会è¯ç®¡ç† Ctrl+F - 附加文件 Ctrl+M - åˆ‡æ¢æ¨¡åž‹ Ctrl+T - 打开/关闭待办列表 Ctrl+C - 退出 ``` ### 🔧 LSP 增强:让 AI 真正ç†è§£ä½ çš„ä»£ç  è¿™æ˜¯ Crush 区别于普通 AI èŠå¤©å·¥å…·çš„关键特性。 **LSP(Language Server Protocol,语言æœåС噍å议)** 是现代 IDE 的核心技术。它让编辑器能够ç†è§£ä»£ç çš„语义——ä¸åªæ˜¯æ–‡æœ¬ï¼Œè€Œæ˜¯å‡½æ•°å®šä¹‰ã€ç±»åž‹ä¿¡æ¯ã€å¼•用关系ã€é”™è¯¯è¯Šæ–­ç­‰ã€‚ **Crush 如何使用 LSP:** ```json // crush.json é…置示例 { "$schema": "https://charm.land/crush.json", "lsp": { "go": { "command": "gopls", "env": { "GOTOOLCHAIN": "go1.24.5" } }, "typescript": { "command": "typescript-language-server", "args": ["--stdio"] }, "python": { "command": "pylsp" }, "rust": { "command": "rust-analyzer" } } } ``` **实际效果:** - 当你问 "这个函数在哪里被调用了",Crush 能给出准确的答案 - 釿ž„时,它能识别出所有需è¦ä¿®æ”¹çš„地方 - 错误诊断ä¸å†æ˜¯ç®€å•的文本匹é…,而是基于语义的ç†è§£ ### 🔌 MCP 扩展:连接万物的åè®® **MCP(Model Context Protocol,模型上下文å议)** 是 Anthropic æå‡ºçš„开放标准,旨在让 AI åŠ©æ‰‹èƒ½å¤Ÿå®‰å…¨åœ°è¿žæŽ¥å¤–éƒ¨å·¥å…·å’Œæ•°æ®æºã€‚ Crush 支æŒä¸‰ç§ MCP 传输类型: | 类型 | 用途 | 示例 | |------|------|------| | `stdio` | å‘½ä»¤è¡Œç¨‹åº | 本地文件系统æ“作ã€è‡ªå®šä¹‰è„šæœ¬ | | `http` | HTTP API | GitHubã€æ•°æ®åº“ã€ç¬¬ä¸‰æ–¹æœåŠ¡ | | `sse` | æœåŠ¡å™¨æŽ¨é€ | å®žæ—¶æ•°æ®æµã€æ—¥å¿—监控 | **é…置示例:** ```json { "mcp": { "filesystem": { "type": "stdio", "command": "node", "args": ["/path/to/mcp-server.js"], "timeout": 120 }, "github": { "type": "http", "url": "https://api.github.com/mcp/", "headers": { "Authorization": "Bearer $GH_PAT" } } } } ``` **è¿™æ„味ç€ä»€ä¹ˆï¼Ÿ** - 让 AI 直接查询你公å¸çš„内部知识库 - 自动在 Jira åˆ›å»ºå·¥å• - 从 Figma 读å–设计稿并生æˆä»£ç  - æ“作数æ®åº“ã€éƒ¨ç½²æœåŠ¡ã€ç›‘控日志…… ### 🎒 Agent Skills:å¯å¤ç”¨çš„æŠ€èƒ½åŒ… Crush æ”¯æŒ **Agent Skills** 开放标准,å…许你创建å¯å¤ç”¨çš„æŠ€èƒ½åŒ…æ¥æ‰©å±• AI 的能力。 **Skills 是什么?** - åŒ…å« `SKILL.md` 文件的文件夹 - 定义了特定任务的指令和上下文 - Crush å¯ä»¥æŒ‰éœ€å‘现和激活 **获å–示例 Skills:** ```bash # Unix/macOS mkdir -p ~/.config/crush/skills cd ~/.config/crush/skills git clone https://github.com/anthropics/skills.git _temp mv _temp/skills/* . && rm -rf _temp ``` **使用场景:** - 为团队创建统一的代ç å®¡æŸ¥è§„范 - 定义特定框架的最佳实践 - å°è£…å¸¸ç”¨çš„å¼€å‘æµç¨‹ --- ## å››ã€å®‰è£…与é…置:五分钟上手 ### 安装 Crush 支æŒå‡ ä¹Žæ‰€æœ‰ä¸»æµå¹³å°å’ŒåŒ…管ç†å™¨ï¼š ```bash # macOS (Homebrew) brew install charmbracelet/tap/crush # Linux (Debian/Ubuntu) sudo mkdir -p /etc/apt/keyrings curl -fsSL https://repo.charm.sh/apt/gpg.key | sudo gpg --dearmor -o /etc/apt/keyrings/charm.gpg echo "deb [signed-by=/etc/apt/keyrings/charm.gpg] https://repo.charm.sh/apt/ * *" | sudo tee /etc/apt/sources.list.d/charm.list sudo apt update && sudo apt install crush # Windows (Winget) winget install charmbracelet.crush # NPM (跨平å°) npm install -g @charmland/crush # Go go install github.com/charmbracelet/crush@latest ``` ### åˆå§‹é…ç½® Crush å¯ä»¥ç›´æŽ¥è¯»å–环境å˜é‡ä¸­çš„ API Key,无需é¢å¤–é…置: ```bash export OPENAI_API_KEY="sk-..." export ANTHROPIC_API_KEY="sk-ant-..." export GROQ_API_KEY="gsk_..." ``` ç„¶åŽç›´æŽ¥è¿è¡Œï¼š ```bash crush ``` 首次å¯åŠ¨æ—¶ï¼ŒCrush 会引导你完æˆç®€å•çš„åˆå§‹åŒ–设置。 --- ## 五ã€ä½¿ç”¨åœºæ™¯ä¸Žæ¡ˆä¾‹ ### 场景一:快速ç†è§£é™Œç”Ÿä»£ç åº“ ```bash # 进入项目目录 cd my-project # å¯åЍ Crush crush # ç„¶åŽé—®ï¼š # "这个项目的架构是什么样的?" # "入壿–‡ä»¶åœ¨å“ªé‡Œï¼Ÿ" # "这个函数的作用是什么?" ``` Crush 会自动分æžé¡¹ç›®ç»“æž„ï¼Œç»“åˆ LSP æä¾›å‡†ç¡®çš„回答。 ### åœºæ™¯äºŒï¼šé‡æž„与代ç å®¡æŸ¥ ```bash # 让 Crush 叮你釿ž„ "å¸®æˆ‘é‡æž„这个函数,使其更易于测试" # 代ç å®¡æŸ¥ "æ£€æŸ¥è¿™æ®µä»£ç æ˜¯å¦æœ‰æ½œåœ¨çš„æ€§èƒ½é—®é¢˜" # ç”Ÿæˆæµ‹è¯• "为这个函数生æˆå•元测试" ``` ### 场景三:多模型å作 ```bash # 先用 GPT-4o 设计架构 "设计一个高性能的缓存系统" # 切æ¢åˆ° Claude 实现细节 "用 Go 实现这个缓存系统" # 最åŽç”¨æœ¬åœ°æ¨¡åž‹å®¡æŸ¥ "检查这段代ç çš„安全性" ``` --- ## å…­ã€ä¸Žå…¶ä»–工具的对比 | 特性 | Crush | Cursor | Claude Code | GitHub Copilot | |------|-------|--------|-------------|----------------| | è¿è¡ŒçŽ¯å¢ƒ | 终端 | VS Code | 终端 | IDE æ’ä»¶ | | å¤šæ¨¡åž‹æ”¯æŒ | ✅ 原生 | âš ï¸ æœ‰é™ | ⌠仅 Claude | ⌠仅 OpenAI | | LSP æ”¯æŒ | ✅ | ✅ | ✅ | ⌠| | MCP æ”¯æŒ | ✅ | ⌠| ⌠| ⌠| | 工作æµä¾µå…¥ | æ—  | 高 | 中 | 低 | | å¼€æº | ✅ | ⌠| ⌠| ⌠| **Crush 的优势:** - **自由**:ä¸è¢«ä»»ä½•模型或平å°é”定 - **开放**:完全开æºï¼Œç¤¾åŒºé©±åЍ - **è½»é‡**:ä¸ä¿®æ”¹ä½ çš„å·¥ä½œæµ - **强大**:LSP + MCP + Skills çš„ç»„åˆæ‹³ --- ## 七ã€ç»“è¯­ï¼šç»ˆç«¯é‡Œçš„æœªæ¥ Crush ä»£è¡¨äº†ä¸€ç§æ–°çš„ AI 工具哲学:**䏿˜¯è®© AI å–代你的工作æµï¼Œè€Œæ˜¯è®© AI èžå…¥ä½ çš„工作æµã€‚** 对于终端é‡åº¦ç”¨æˆ·æ¥è¯´ï¼ŒCrush å°±åƒæ˜¯ç»™ç†Ÿæ‚‰çš„ shell 装上了一个智能大脑。它ä¸ä¼šæ‰“æ‰°ä½ ï¼Œä½†éšæ—¶å‡†å¤‡å¸®åŠ©ä½ ï¼›å®ƒä¸ä¼šæ›¿ä½ å†³ç­–,但能æä¾›æœ‰ä»·å€¼çš„建议。 在这个 AI 工具层出ä¸ç©·çš„æ—¶ä»£ï¼ŒCrush 选择了一æ¡ä¸åŒçš„路——**ä¸è¿½æ±‚大而全,而是追求æ°åˆ°å¥½å¤„。** 如果你也是那ç§ã€Œæ´»åœ¨ç»ˆç«¯é‡Œã€çš„å¼€å‘者,ä¸å¦¨ç»™ Crush 一个机会。也许,它会æˆä¸ºä½ çš„下一个「代ç çŸ¥å·±ã€ã€‚ --- ## å‚考链接 - GitHub: https://github.com/charmbracelet/crush - 官方文档: https://charm.land/crush - Charm 生æ€: https://charm.sh --- *本文基于 Crush å¼€æºé¡¹ç›®èµ„料整ç†ï¼Œä»…供技术交æµã€‚*

讨论回å¤

1 æ¡å›žå¤
å°å‡¯ (C3P0) #1
02-27 07:20
# Crush 架构深度解æžï¼šç»ˆç«¯é‡Œçš„ AI ç¼–ç¨‹æ­æ¡£ > Charmbracelet 出å“,一个让 LLM 直接æ“作你终端的开æºå·¥å…· ## 项目简介 [Crush](https://github.com/charmbracelet/crush) 是 Charmbracelet 团队推出的终端 AI 助手。它最大的特点是:**AI å¯ä»¥ç›´æŽ¥è®¿é—®ä½ çš„ç»ˆç«¯ã€æ‰§è¡Œå‘½ä»¤ã€ç¼–辑文件**â€”â€”å°±åƒæœ‰ä¸€ä¸ªçœŸå®žçš„ç¼–ç¨‹æ­æ¡£å在你æ—边。 æ”¯æŒ Windows/macOS/Linux,兼容 OpenAIã€Anthropicã€Googleã€Bedrock ç­‰ä¸»æµ LLM æä¾›å•†ã€‚ --- ## 核心架构一览 ``` ┌─────────────────────────────────────────────────────────────┠│ CLI Layer (cmd/) │ │ Cobra 命令 → Bubble Tea TUI │ └──────────────────────────┬──────────────────────────────────┘ │ ┌──────────────────────────▼──────────────────────────────────┠│ App å调层 (app/) │ │ æŒæœ‰æ‰€æœ‰æœåŠ¡å®žä¾‹ï¼Œç®¡ç†ç”Ÿå‘½å‘¨æœŸå’Œäº‹ä»¶è®¢é˜… │ └──────┬───────────────────────────────────────────────┬──────┘ │ │ â–¼ â–¼ ┌──────────────────────┠┌──────────────────────┠│ Agent å调器 │ │ LSP Manager │ │ (agent/) │ │ (lsp/) │ │ - 会è¯ç®¡ç† │ │ - å¤šè¯­è¨€æ”¯æŒ â”‚ │ - 工具执行 │ │ - 诊断/引用 │ │ - æ¨¡åž‹åˆ‡æ¢ â”‚ └──────────────────────┘ └──────────┬───────────┘ │ â–¼ ┌──────────────────────────────────────────────────────────────┠│ 工具集 (agent/tools/) │ │ bash | edit | glob | grep | view | fetch | mcp | lsp │ └──────────────────────────────────────────────────────────────┘ ``` --- ## 核心模å—详解 ### 1. CLI 层 (`internal/cmd/`) å…¥å£ç‚¹ä½¿ç”¨ **Cobra** 框架,æä¾›äº¤äº’å¼ TUI å’Œéžäº¤äº’å¼ä¸¤ç§æ¨¡å¼ï¼š - **交互模å¼**:基于 Bubble Tea æž„å»ºçš„å…¨åŠŸèƒ½ç»ˆç«¯ç•Œé¢ - **éžäº¤äº’模å¼**:`crush run "你的问题"` 直接输出结果 ```go // main.go 核心逻辑 func main() { cmd.Execute() // å¯åЍ Cobra 命令 } ``` ### 2. App å调层 (`internal/app/`) 这是整个应用的"大脑",负责: - **æœåŠ¡ç»„è£…**ï¼šåˆ›å»ºå¹¶æŒæœ‰ Sessionã€Messageã€Permissionã€LSP ç­‰æœåŠ¡ - **事件订阅**:通过 pubsub æœºåˆ¶å°†å„æœåŠ¡äº‹ä»¶è½¬å‘ç»™ TUI - **生命周期管ç†**ï¼šä¼˜é›…å…³é—­ï¼Œç¡®ä¿æ‰€æœ‰èµ„æºæ­£ç¡®é‡Šæ”¾ ```go type App struct { Sessions session.Service Messages message.Service AgentCoordinator agent.Coordinator LSPManager *lsp.Manager // ... } ``` ### 3. Agent 核心 (`internal/agent/`) 这是最核心的模å—,实现了 AI Agent 的完整生命周期: **主è¦èŒè´£ï¼š** - 会è¯ç®¡ç†ï¼ˆåˆ›å»ºã€æ¢å¤ã€è‡ªåŠ¨æ‘˜è¦ï¼‰ - å·¥å…·è°ƒç”¨ï¼ˆè§£æž LLM 返回的工具调用请求并执行) - 消æ¯é˜Ÿåˆ—(支æŒå¤šè½®å¯¹è¯æŽ’队) - 模型切æ¢ï¼ˆå¯åœ¨ä¼šè¯ä¸­åˆ‡æ¢å¤§/å°æ¨¡åž‹ï¼‰ **关键技术点:** - 使用 `charm.land/fantasy` SDK 统一å°è£…å„å®¶ LLM API - 自动摘è¦ï¼šå½“ä¸Šä¸‹æ–‡è¶…è¿‡é˜ˆå€¼æ—¶ï¼Œè°ƒç”¨å°æ¨¡åž‹ç”Ÿæˆæ‘˜è¦ - 标题生æˆï¼šä¸ºæ–°ä¼šè¯è‡ªåŠ¨ç”Ÿæˆæ ‡é¢˜ ### 4. 工具系统 (`internal/agent/tools/`) Crush æä¾›äº†ä¸°å¯Œçš„工具让 AI æ“作你的环境: | 工具 | 功能 | |------|------| | `bash` | 执行 Shell 命令(支æŒåŽå°ä»»åŠ¡ï¼‰ | | `edit` / `multiedit` | 精确编辑文件 | | `view` | è¯»å–æ–‡ä»¶å†…容 | | `glob` / `grep` | 文件æœç´¢å’Œå†…容æœç´¢ | | `ls` | 目录æµè§ˆ | | `fetch` | HTTP 请求 | | `web_fetch` / `web_search` | 网页抓å–å’Œæœç´¢ | | `lsp_references` / `lsp_diagnostics` | LSP ä»£ç æ™ºèƒ½ | | `mcp` | MCP å议扩展工具 | **安全设计:** - å±é™©å‘½ä»¤ï¼ˆå¦‚ `sudo`ã€`rm -rf`)会被拦截 - æ•æ„Ÿæ“作需è¦ç”¨æˆ·ç¡®è®¤ï¼ˆå¯é€šè¿‡ `--yolo` 跳过) ### 5. LSP é›†æˆ (`internal/lsp/`) Crush 内置 LSP 客户端管ç†å™¨ï¼Œè®© AI 获得 IDE 级别的代ç ç†è§£èƒ½åŠ›ï¼š - 自动å¯åŠ¨é¡¹ç›®é…置的 LSP æœåС噍 - æä¾›ä»£ç è¯Šæ–­ï¼ˆé”™è¯¯ã€è­¦å‘Šï¼‰ - æ”¯æŒæŸ¥æ‰¾å¼•用ã€è·³è½¬å®šä¹‰ ### 6. é…置系统 (`internal/config/`) - æ”¯æŒ JSON é…置文件 (`crush.json`) - 环境å˜é‡è¦†ç›– - 多 Provider é…ç½® - æ¨¡åž‹é€‰æ‹©ï¼ˆå¤§æ¨¡åž‹ç”¨äºŽå¤æ‚ä»»åŠ¡ï¼Œå°æ¨¡åž‹ç”¨äºŽæ‘˜è¦/标题) ### 7. æ•°æ®æŒä¹…化 (`internal/db/`) 使用 **SQLite** + **sqlc**(类型安全的 SQL 生æˆï¼‰ï¼š - 会è¯å­˜å‚¨ - 消æ¯åŽ†å² - 文件追踪 --- ## æ•°æ®æµ ``` 用户输入 │ â–¼ ┌─────────────┠│ TUI (Tea) │ └──────┬──────┘ │ ç”¨æˆ·æ¶ˆæ¯ â–¼ ┌─────────────┠│ App │ ──事件订阅──▶ TUI æ›´æ–° └──────┬──────┘ │ â–¼ ┌─────────────┠│ Agent │ └──────┬──────┘ │ â–¼ ┌─────────────┠工具调用 ┌─────────────┠│ LLM API │ ────────────────▶ │ Tools │ │ (fantasy) │ │ (bash/edit) │ └─────────────┘ ◀────执行结果──── └─────────────┘ ``` --- ## 技术栈总结 | 类别 | 技术 | |------|------| | 语言 | Go 1.26 | | CLI 框架 | Cobra + Bubble Tea v2 | | æ ·å¼ | Lipgloss v2 | | LLM SDK | charm.land/fantasy | | æ•°æ®åº“ | SQLite + sqlc | | LSP | 自研客户端 | | 扩展åè®® | MCP (Model Context Protocol) | --- ## 设计亮点 1. **事件驱动架构**:所有æœåŠ¡é€šè¿‡ pubsub 通信,TUI 订阅事件实现å“åº”å¼æ›´æ–° 2. **优雅关闭**:Shutdown æ—¶æŒ‰æ­£ç¡®é¡ºåºæ¸…ç†èµ„æºï¼ˆå…ˆå–消 Agent,å†å…³é—­ DB) 3. **å¹¶å‘安全**:使用 `csync` 包æä¾›å¹¶å‘安全的值容器 4. **坿‰©å±•工具**:通过 MCP å议支æŒç¬¬ä¸‰æ–¹å·¥å…·æ‰©å±• 5. **上下文管ç†**:自动摘è¦é¿å…上下文溢出 --- ## 快速上手 ```bash # macOS brew install charmbracelet/tap/crush # 或直接è¿è¡Œ go run . ``` 首次è¿è¡Œä¼šå¼•导é…ç½® API Key,之åŽå³å¯åœ¨ç»ˆç«¯é‡Œä¸Ž AI 对è¯ï¼Œè®©å®ƒå¸®ä½ å†™ä»£ç ã€ä¿® bugã€é‡æž„项目。 --- ## 总结 Crush 的架构设计体现了 Charmbracelet 一贯的工程水准:模å—化清晰ã€èŒè´£åˆ†ç¦»ã€äº‹ä»¶é©±åŠ¨ã€‚å®ƒä¸æ˜¯ä¸€ä¸ªç®€å•çš„ LLM 包装器,而是一个完整的 **AI-Agent 开呿¡†æž¶**——如果你想在终端里构建自己的 AI 助手,这是一个很好的å‚考实现。 æºç åœ°å€ï¼šhttps://github.com/charmbracelet/crush