编程 DeepSeek-TUI:终端里的 Claude Code,Rust 重写让 AI 编程助手轻到飞起

2026-05-11 14:25:25 +0800 CST views 15

DeepSeek-TUI:终端里的 Claude Code,Rust 重写让 AI 编程助手轻到飞起

五一假期,一个叫 DeepSeek-TUI 的开源项目突然刷屏技术圈。上线不到 10 天,GitHub Star 突破 18,000,冲上趋势榜第一,全网话题热度超 327 万。它由美国独立开发者 Hunter Bown(网名「鲸鱼兄弟」)用 Rust 从零写成,零官方宣发却快速破圈。

如果你用过 Claude Code,会发现 DeepSeek-TUI 简直是它的「DeepSeek 换芯版」——完整 CLI 体验,流式推理,工具调用,文件读写,Shell 执行,Git 管理,任务拆解,甚至成本实时显示,全部搬进了终端。而背后的引擎,换成了性价比拉满、国内可直连的 DeepSeek V4。


一、为什么我们需要「终端原生」的 AI 编程助手?

1.1 从 Copilot 到 Claude Code:AI 编程的三个阶段

AI 辅助编程的进化,可以清晰地划分为三个阶段:

阶段一:补全时代(2021-2023)
代表:GitHub Copilot
能力:行级/函数级代码补全
局限:只「写」,不「理解」,不「执行」

阶段二:对话时代(2023-2025)
代表:ChatGPT Code Interpreter、Cursor Chat
能力:自然语言对话,代码解释,多轮交互
局限:对话和代码库割裂,需要手动复制粘贴

阶段三:Agent 时代(2024-现在)
代表:Claude Code、Cursor Agent、Devin、OpenHands
能力:自主读代码库、改文件、跑 Shell、管理 Git、拆解任务
特征:AI 不只是「助手」,而是「协作者」

Claude Code 是阶段三的标杆产品:它在终端里运行,能直接读写你的代码库,调用 Shell,提交 Git,甚至调度子 Agent 协同完成任务。

但 Claude Code 有一个问题:它绑定了 Claude 模型

对于国内开发者,Claude 的访问不稳定,而且 API 成本昂贵。一个中等复杂度的任务,Claude Code 可能消耗几万 token,成本直达几元人民币。

DeepSeek-TUI 的答案:把 Claude Code 的完整能力,搬到 DeepSeek V4 上。

1.2 DeepSeek V4 的底气:100 万 Token 上下文

DeepSeek V4 发布于 2026 年 4 月 24 日,核心特性:

  • 100 万 Token 上下文(约 75 万字,可吞下整本《红楼梦》或大型代码库)
  • 前缀缓存(Prefix Caching):相同前缀的请求复用 KV Cache,降低成本和延迟
  • 多推理级别:off / low / medium / high / max,按需选择
  • 高性价比:DeepSeek-V4-Flash 的价格约为 Claude Sonnet 的 1/10

DeepSeek-TUI 正是围绕这两个特性(1M token 上下文 + 前缀缓存)设计的。


二、DeepSeek-TUI 架构解析

2.1 技术栈一览

语言:Rust 99.3%,Rust Edition 2024,要求 Rust 1.88+
TUI 框架:ratatui(Rust 生态最流行的 TUI 库)
异步运行时:tokio
AI SDK:调用 DeepSeek API(OpenAI 兼容格式)
安装方式:npm 全局安装 或 Cargo 编译 或 预编译二进制
支持平台:Linux x64/ARM64、macOS x64/ARM64、Windows x64
开源协议:MIT(完全免费商用)

为什么用 Rust?

Hunter Bown 选择 Rust 的理由非常充分:

  1. 零运行时依赖:编译为单个二进制文件,下载即用,不需要 Node.js / Python 环境
  2. 内存安全:AI 编程工具需要频繁做文件 I/O、Shell 执行,Rust 的所有权和类型系统从根本上杜绝了 use-after-free、double-free 等内存安全问题
  3. 极致性能:tokio 异步运行时 + 零成本抽象,即使处理 1M token 的超长上下文,内存占用也能控制在极低水平
  4. 跨平台编译cargo build --target x86_64-pc-windows-msvc 一条命令编译 Windows 版本

对比一下各技术栈的 AI CLI 工具:

工具语言运行时依赖单二进制内存安全
Claude CodeTypeScript需要 Node.js
AiderPython需要 Python 3.8+
CursorTypeScript需要 Node.js + Electron
DeepSeek-TUIRust

2.2 三种运行模式:Plan / Agent / YOLO

这是 DeepSeek-TUI 对 Claude Code 交互模型的重要改进,增加了 YOLO 模式

// 三种模式的语义定义(概念代码)
pub enum RunMode {
    Plan,    // 只读探索,不修改任何文件
    Agent,   // 交互式审批,每次工具调用前询问用户
    Yolo,    // 自动审批,AI 自主执行所有操作
}

// 模式选择逻辑
fn select_mode(cli_args: &CliArgs) -> RunMode {
    match cli_args.auto_approve {
        true => RunMode::Yolo,
        false if cli_args.plan_only => RunMode::Plan,
        _ => RunMode::Agent,
    }
}

Plan 模式(只读探索):

用户:分析一下这个代码库的架构
DeepSeek-TUI:
  [Read] src/main.rs
  [Read] src/lib.rs
  [Read] Cargo.toml
  [推理] 这是一个用 Actix-web 写的 REST API 服务...
  [输出] 分析报告(不修改任何文件)

Agent 模式(交互式审批):

用户:修复 #124 号 bug
DeepSeek-TUI:
  [Plan] 需要先修改 src/handler.rs 第 42 行
  [Ask] 是否允许修改文件?(y/n/always)
  > y
  [Write] src/handler.rs
  [Shell] cargo test
  [Ask] 测试通过,是否提交?(y/n)

YOLO 模式(全自动):

# --auto-approve 参数启用 YOLO 模式
deepseek --auto-approve "重构 src/ 目录,把所有 unwrap() 替换为 expect()"

# AI 自主执行:
# 1. 读取所有 .rs 文件
# 2. 修改每一个 unwrap()
# 3. 运行 cargo clippy + cargo test
# 4. 如果测试通过,自动 git commit
# 全程无需人工干预(慎用!)

2.3 流式推理:实时展示「AI 的思考过程」

DeepSeek V4 支持推理块(Reasoning Blocks)流式输出——AI 在给出答案之前,会先输出一段「内心独白」(thinking/reasoning),展示它是如何一步步推导到这个答案的。

DeepSeek-TUI 在终端里实时渲染这个推理过程:

// 流式推理渲染的核心逻辑(概念代码)
use ratatui::widgets::Paragraph;
use crossterm::event::{Event, KeyCode};

pub struct ReasoningRenderer {
    reasoning_text: String,
    answer_text: String,
    is_reasoning: bool,  // 当前是否在输出推理过程
}

impl ReasoningRenderer {
    pub fn on_token(&mut self, token: &str, token_type: TokenType) {
        match token_type {
            TokenType::Reasoning => {
                // 推理过程的 token:用灰色、斜体显示
                self.reasoning_text.push_str(token);
                self.render_reasoning();
            }
            TokenType::Answer => {
                // 正式答案的 token:用正常颜色显示
                self.answer_text.push_str(token);
                self.render_answer();
            }
            TokenType::ToolCall => {
                // 工具调用:用高亮色显示
                self.render_tool_call(token);
            }
        }
    }
    
    fn render_reasoning(&self) {
        // 在终端的「推理面板」中渲染
        // 通常用折叠式渲染,用户按 'r' 键展开/收起
        let paragraph = Paragraph::new(&self.reasoning_text)
            .style(Style::default().fg(Color::DarkGray).italic());
        // render to TUI...
    }
}

实际使用效果(终端截图的概念描述):

┌─────────────────────────────────────────────────────────────┐
│ DeepSeek-TUI v0.8.14 | Model: deepseek-v4-pro | 🔋 92%  │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│ 💭 推理过程(按 r 展开)                                    │
│ ┌───────────────────────────────────────────────────────┐  │
│ │ 用户想要实现一个 LRU Cache。我需要:                  │  │
│ │ 1. 选择一个合适的数据结构                            │  │
│ │ 2. HashMap + 双向链表是经典方案                      │  │
│ │ 3. Rust 里可以用 std::collections::HashMap + Rc      │  │
│ │ 4. 但更准确的方案是用 OrderedMap 或 lru::LruCache    │  │
│ └───────────────────────────────────────────────────────┘  │
│                                                             │
│ 🤖 回答:                                                  │
│ 可以用 lru 库实现一个高性能 LRU Cache:                   │
│                                                             │
│ ```rust                                                    │
│ use lru::LruCache;                                         │
│ use std::num::NonZeroUsize;                                │
│                                                             │
│ let mut cache = LruCache::new(NonZeroUsize::new(100)...   │
│ ```                                                        │
│                                                             │
│ 🔧 工具调用:                                              │
│ [Read] src/main.rs                                         │
│ [Edit] src/main.rs:42                                      │
│                                                             │
└─────────────────────────────────────────────────────────────┘

这种「推理可视化」大大提升了 AI 编程助手的可解释性——你不再面对一个黑盒,而是能看到 AI 的「思考路径」。

2.4 工具套件:AI 的「手」和「眼睛」

DeepSeek-TUI 为 AI 提供了完整的工具集,让它能真正「操作」代码库:

// 工具注册表(概念代码)
pub struct ToolRegistry {
    tools: HashMap<String, Box<dyn Tool>>,
}

impl ToolRegistry {
    pub fn new() -> Self {
        let mut registry = Self { tools: HashMap::new() };
        
        // 文件操作工具
        registry.register("read_file", Box::new(ReadFileTool));
        registry.register("write_file", Box::new(WriteFileTool));
        registry.register("edit_file", Box::new(EditFileTool));
        registry.register("list_files", Box::new(ListFilesTool));
        
        // Shell 执行工具
        registry.register("run_shell", Box::new(RunShellTool));
        
        // Git 工具
        registry.register("git_status", Box::new(GitStatusTool));
        registry.register("git_diff", Box::new(GitDiffTool));
        registry.register("git_commit", Box::new(GitCommitTool));
        
        // Web 搜索工具
        registry.register("web_search", Box::new(WebSearchTool));
        
        // 补丁应用工具
        registry.register("apply_patch", Box::new(ApplyPatchTool));
        
        registry
    }
}

每个工具都有严格的权限控制(尤其在 Agent 模式下):

// 工具执行的权限检查
fn execute_tool(call: &ToolCall, mode: &RunMode) -> ToolResult {
    match mode {
        RunMode::Plan => {
            // Plan 模式:只允许只读工具
            if call.tool_name == "write_file" || call.tool_name == "run_shell" {
                return ToolResult::error("Plan 模式不允许修改操作,请切换到 Agent 模式");
            }
        }
        RunMode::Agent => {
            // Agent 模式:每次工具调用前询问用户
            if !ask_user_confirmation(&call.describe()) {
                return ToolResult::error("用户取消了操作");
            }
        }
        RunMode::Yolo => {
            // YOLO 模式:不询问,直接执行
            // 但会在界面上高亮显示当前执行的工具
        }
    }
    
    call.execute()
}

2.5 上下文管理与压缩

1M token 上下文听起来很美,但实际使用中有两个挑战:

  1. 成本:即使 DeepSeek V4 很便宜,1M token 的输入仍然要花钱
  2. 性能:1M token 的上下文窗口,prefill 阶段需要处理百万级 token,延迟不可忽视

DeepSeek-TUI 的解决方案是上下文跟踪 + 智能压缩

// 上下文窗口管理(概念代码)
pub struct ContextManager {
    max_tokens: usize,      // 1_000_000
    current_tokens: usize,  // 当前已使用的 token 数
    messages: Vec<Message>, // 对话历史
}

impl ContextManager {
    pub fn add_message(&mut self, msg: Message) {
        let tokens = count_tokens(&msg);
        
        if self.current_tokens + tokens > self.max_tokens {
            // 需要压缩!策略:
            // 1. 保留最近 N 轮对话(完整)
            // 2. 压缩早期对话为摘要(用 AI 生成摘要)
            self.compress_history();
        }
        
        self.messages.push(msg);
        self.current_tokens += tokens;
    }
    
    fn compress_history(&mut self) {
        // 把最早的一半对话,用 DeepSeek V4 压缩为一段摘要
        let old_messages = self.messages.drain(0..self.messages.len()/2);
        let summary = self.summarize_with_ai(old_messages);
        
        // 摘要作为一条特殊消息插入
        self.messages.insert(0, Message::system(summary));
        self.current_tokens = count_tokens(&self.messages);
    }
}

**前缀缓存(Prefix Caching)**的作用:

当你反复询问关于同一个代码库的问题时,代码库内容作为「前缀」,其 KV Cache 可以被反复复用:

# 没有前缀缓存:每次都要重新计算前缀的 KV
# 第一次:处理 50,000 token 的代码库 + 100 token 的问题 = 50,100 token 计费
# 第二次:处理 50,000 token 的代码库 + 80 token 的新问题 = 50,080 token 计费

# 有前缀缓存:代码库的 KV Cache 命中
# 第一次:50,100 token 计费,缓存 50,000 token 的 KV
# 第二次:只计费 80 token(新问题部分),缓存命中省下 50,000 token 的钱!

DeepSeek-TUI 会智能地利用前缀缓存:把代码库内容放在消息的最前面,作为持久化前缀,后续对话只发送新增部分。


三、安装与实战

3.1 三种安装方式

方式一:npm(最简单,推荐)

npm install -g deepseek-tui

# 检查版本
deepseek --version
# deepseek 0.8.14

# 配置 API Key
deepseek auth set --provider deepseek
# 然后输入你的 DeepSeek API Key

方式二:Cargo(从源码编译,适合 Rust 开发者)

# 需要 Rust 1.88+
rustup update stable

# 编译安装
cargo install deepseek-tui

# 或者从 GitHub 直接安装最新版
cargo install --git https://github.com/Hmbown/DeepSeek-TUI.git

方式三:预编译二进制(最快速)

# macOS ARM64 (Apple Silicon)
curl -L https://github.com/Hmbown/DeepSeek-TUI/releases/latest/download/deepseek-tui-macos-arm64 \
     -o /usr/local/bin/deepseek
chmod +x /usr/local/bin/deepseek

# Linux x64
curl -L https://github.com/Hmbown/DeepSeek-TUI/releases/latest/download/deepseek-tui-linux-x64 \
     -o /usr/local/bin/deepseek
chmod +x /usr/local/bin/deepseek

3.2 快速上手:第一个任务

# 进入你的项目目录
cd ~/my-awesome-project

# 启动 DeepSeek-TUI(Agent 模式,需要人工审批)
deepseek "帮我分析这个项目的架构,找出性能瓶颈,并给出优化建议"

# 或者直接启用 YOLO 模式(自动审批,慎用)
deepseek --auto-approve "把所有 console.log 替换为适当的日志库调用"

实际对话示例(Agent 模式,真实交互流程):

$ deepseek "给这个 Rust 项目添加错误处理,用 anyhow 库"
│
│ 🤖 DeepSeek V4 Pro 正在推理...
│
│ 💭 推理过程:
│ 我需要先了解项目结构,然后确定哪些地方需要添加错误处理。
│ 先用 Read 工具读取 Cargo.toml 和 src/main.rs...
│
│ 🔧 [Read] Cargo.toml
│ 🔧 [Read] src/main.rs
│
│ 分析结果:
│ - main.rs 中有 3 处 unwrap() 调用,可能 panic
│ - 文件读取没有错误处理
│ - 网络请求没有超时和重试
│
│ 方案:
│ 1. 在 Cargo.toml 添加 anyhow = "1.0"
│ 2. 把 main 函数改为返回 Result
│ 3. 用 Context 包装错误信息
│
│ [Ask] 是否允许修改 Cargo.toml?(y/n)
│ > y
│
│ [Write] Cargo.toml (添加 anyhow 依赖)
│ [Ask] 是否允许修改 src/main.rs?(y/n)
│ > y
│
│ [Edit] src/main.rs
│ - 把 main() 改为 fn main() -> anyhow::Result<()>
│ - 把 .unwrap() 替换为 .context("...")?
│ - 添加错误信息上下文
│
│ [Shell] cargo build
│ ✅ 编译通过
│
│ [Ask] 是否提交到 Git?(y/n)
│ > y
│
│ [Shell] git add -A && git commit -m "feat: add error handling with anyhow"
│ ✅ 已提交
│
│ 🎉 任务完成!修改了 2 个文件,添加了完整的错误处理。

3.3 Plan 模式:只读代码分析

Plan 模式非常适合代码审查、架构分析、技术债务盘点等场景,因为它保证不修改任何文件。

deepseek --plan "分析这个代码库的依赖,找出所有已知安全漏洞(用 cargo audit)"
$ deepseek --plan "分析这个代码库的架构"
│
│ 💭 推理过程:
│ 我需要读取项目的核心文件来理解架构...
│
│ 🔧 [Read] Cargo.toml
│ 🔧 [Read] src/main.rs
│ 🔧 [Read] src/lib.rs
│ 🔧 [Read] src/handlers/mod.rs
│ 🔧 [Read] src/db.rs
│
│ 📊 架构分析报告:
│
│ 这是一个基于 Actix-web 的 REST API 服务:
│
│ 1. 分层架构:
│    - Handler 层(src/handlers/):HTTP 请求处理
│    - Service 层(src/services/):业务逻辑
│    - Repository 层(src/db.rs):数据访问
│
│ 2. 发现的问题:
│    - ❌ 缺少统一的错误处理中间件
│    - ❌ 数据库查询没有超时设置
│    - ⚠️ 部分 Handler 直接调用 DB,绕过了 Service 层
│    - ⚠️ 没有集成 OpenTelemetry 做链路追踪
│
│ 3. 优化建议:
│    - 引入 anyhow + thiserror 做统一错误处理
│    - 给 SQLx 查询添加 timeout
│    - 补充 Service 层,严格分层
│    - 接入 OpenTelemetry Collector
│
│ 📄 完整报告已保存到 architecture-review.md

3.4 子 Agent 调度:大任务的拆解与并行

对于复杂任务,DeepSeek-TUI 支持子 Agent 调度——把大任务拆解为多个子任务,分别交给不同的子 Agent 执行,最后汇总结果。

deepseek "重构这个项目的测试套件:
1. 把单元测试从 tests/ 移到各模块的 tests 子模块
2. 集成测试统一放到 tests/integration/
3. 用 nextest 替代 cargo test
4. 覆盖率目标:>= 85%"

在背后,DeepSeek-TUI 会:

主 Agent(深度推理模式):
  │
  ├─ 子 Agent A(文件重组):
  │   - 查找所有 tests/*.rs
  │   - 把它们移动到对应模块的 #[cfg(test)] mod tests
  │   - 运行 cargo test 验证
  │
  ├─ 子 Agent B(集成测试):
  │   - 创建 tests/integration/
  │   - 把 API 集成测试移过去
  │   - 配置 sqlx::test 的 Docker 依赖
  │
  ├─ 子 Agent C(nextest 配置):
  │   - cargo install nextest
  │   - 配置 .config/nextest.toml
  │   - 运行 nextest run --archive
  │
  └─ 主 Agent(汇总):
      - 检查所有子 Agent 的结果
      - 运行完整测试套件
      - 生成测试覆盖率报告(cargo tarpaulin)
      - git commit

四、与 Claude Code 的深度对比

维度Claude CodeDeepSeek-TUI
模型Claude 3.5/3.7 SonnetDeepSeek V4 Pro / V4 Flash
上下文窗口200K token1M token
前缀缓存✅ 支持✅ 支持(更充分)
推理可视化❌ 不支持✅ 流式推理块展示
成本~$15/百万输入 token~$1.25/百万输入 token(15倍差距)
国内访问需要代理国内直连,延迟低
运行时Node.js(需要 npm)单二进制,无依赖
开源❌ 闭源✅ MIT 开源
YOLO 模式❌ 不支持✅ 支持(--auto-approve)
MCP 协议✅ 支持✅ 支持(文档中明确提及)
LSP 诊断❌ 不支持✅ 内联显示编译错误和警告

成本对比(实际计算)

# 场景:每天用 AI 编程助手处理 5 个任务
# 每个任务平均消耗 50K token 输入 + 2K token 输出

daily_tokens_input = 50_000 * 5   # 250K token/天
daily_tokens_output = 2_000 * 5    # 10K token/天
days_per_month = 22

# Claude Sonnet 3.7 价格
claude_input_price = 15.0   # $/百万 token
claude_output_price = 75.0   # $/百万 token

claude_monthly = (daily_tokens_input * days_per_month / 1e6 * claude_input_price +
                  daily_tokens_output * days_per_month / 1e6 * claude_output_price)

# DeepSeek V4 Pro 价格
ds_input_price = 1.25    # $/百万 token
ds_output_price = 25.0    # $/百万 token

ds_monthly = (daily_tokens_input * days_per_month / 1e6 * ds_input_price +
              daily_tokens_output * days_per_month / 1e6 * ds_output_price)

print(f"Claude Code 月成本: ${claude_monthly:.2f}")
print(f"DeepSeek-TUI 月成本: ${ds_monthly:.2f}")
print(f"节省: {((claude_monthly - ds_monthly) / claude_monthly * 100):.1f}%")

# 输出:
# Claude Code 月成本: $201.30
# DeepSeek-TUI 月成本: $16.78
# 节省: 91.7%

五、MCP 协议支持:连接更强大的工具生态

DeepSeek-TUI 完整支持 Model Context Protocol(MCP)——这是一个由 Anthropic 推出的开放协议,让 AI 模型能够连接外部工具和数据源。

// ~/.config/deepseek-tui/mcp_servers.json
{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-filesystem", "/home/user/projects"]
    },
    "postgres": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-postgres"],
      "env": {
        "DATABASE_URL": "postgres://localhost:5432/mydb"
      }
    },
    "brave-search": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-brave-search"],
      "env": {
        "BRAVE_API_KEY": "your-key-here"
      }
    }
  }
}

配置完成后,DeepSeek-TUI 会自动发现这些 MCP 服务器提供的工具,并交给 AI 使用:

deepseek "查询数据库中所有超过 30 天未登录的用户,生成一个 CSV 报告"
# AI 会调用 postgres MCP 工具执行 SQL,然后调用 filesystem MCP 工具写入 CSV

六、LSP 诊断:内联显示编译错误

DeepSeek-TUI 集成了 LSP(Language Server Protocol),可以在 TUI 界面中直接显示编译错误和警告,不需要切换到编辑器。

// 当你让 DeepSeek-TUI 修改代码后,它会:
// 1. 运行 cargo check(或 tsc、eslint 等,根据语言)
// 2. 解析 LSP 诊断信息
// 3. 在 TUI 界面中内联标注错误位置

// 示例:TUI 界面中的内联错误显示
// ┌────────────────────────────────────────────┐
// │ src/main.rs:42:15 error: type mismatch   │
// │                                            │
// │ 42 |     let x: i32 = "hello";            │
// │    |             ^^^^ expected i32        │
// │                                            │
// │ 🤖 AI 建议:                             │
// │    把 "hello" 改为一个整数,如 42         │
// │    或者把类型标注改为 &str                │
// └────────────────────────────────────────────┘

七、总结:AI 编程助手的正确打开方式

DeepSeek-TUI 的爆火,折射出几个重要趋势:

  1. 终端原生体验正在回归:Cursor 和 VS Code 插件很好,但很多老派程序员仍然偏爱终端。DeepSeek-TUI 证明,终端里也能有完整的 AI 编程体验。

  2. Rust 是写 CLI 工具的最佳选择:零依赖、单二进制、内存安全、跨平台——这些特性让 DeepSeek-TUI 的下载和安装变得极其简单。

  3. 推理可视化是下一个战场:不只是给出答案,还要展示思考过程。这让 AI 从「黑盒」变成「可理解的协作者」。

  4. 成本正在快速下降:DeepSeek V4 的性价比让个人开发者也能负担得起每天几十次的 AI 编程助手调用。这将大幅降低 AI 编程的门槛。

  5. 开源正在赢得 AI 工具链:Claude Code 是闭源的,DeepSeek-TUI 是 MIT 开源的。后者可以被任何人审计、修改、再分发。这种开放性将催生出一个围绕 DeepSeek-TUI 的插件和配置生态。


相关资源

  • GitHub:https://github.com/Hmbown/DeepSeek-TUI
  • DeepSeek 官网:https://www.deepseek.com
  • DeepSeek V4 发布说明:https://api-docs.deepseek.com/news/news250424
  • ratatui(TUI 框架):https://github.com/ratatui/ratatui
  • MCP 协议:https://modelcontextprotocol.io

本文撰写于 2026 年 5 月,工具版本:DeepSeek-TUI v0.8.14,DeepSeek V4 Pro API。

推荐文章

PHP 的生成器,用过的都说好!
2024-11-18 04:43:02 +0800 CST
Linux 常用进程命令介绍
2024-11-19 05:06:44 +0800 CST
Vue中的表单处理有哪几种方式?
2024-11-18 01:32:42 +0800 CST
Vue3中的v-slot指令有什么改变?
2024-11-18 07:32:50 +0800 CST
File 和 Blob 的区别
2024-11-18 23:11:46 +0800 CST
四舍五入五成双
2024-11-17 05:01:29 +0800 CST
推荐几个前端常用的工具网站
2024-11-19 07:58:08 +0800 CST
解决python “No module named pip”
2024-11-18 11:49:18 +0800 CST
程序员茄子在线接单