Hmbown/DeepSeek-TUI

GitHub: Hmbown/DeepSeek-TUI

基于 DeepSeek V4 模型的终端编程代理,提供文件操作、Shell 执行、子代理编排等完整工具链,支持三种交互模式和 HTTP 无头部署。

Stars: 1755 | Forks: 98

# DeepSeek TUI [简体中文 README](README.zh-CN.md) ``` npm i -g deepseek-tui ``` [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/1365468873170232.svg)](https://github.com/Hmbown/DeepSeek-TUI/actions/workflows/ci.yml) [![npm](https://img.shields.io/npm/v/deepseek-tui)](https://www.npmjs.com/package/deepseek-tui) [![crates.io](https://img.shields.io/crates/v/deepseek-tui-cli?label=crates.io)](https://crates.io/crates/deepseek-tui-cli) ![DeepSeek TUI 截图](https://static.pigsec.cn/wp-content/uploads/repos/2026/05/106a58fe36170232.png) ## 它是什么? DeepSeek TUI 是一个完全在您的终端中运行的编码代理。它为 DeepSeek 的前沿模型提供了对您工作区的直接访问权限——读取和编辑文件、运行 shell 命令、搜索网络、管理 git、编排子代理——所有这些都通过一个快速、键盘驱动的 TUI 完成。 **专为 DeepSeek V4 打造**(`deepseek-v4-pro` / `deepseek-v4-flash`),具有 1M token 的上下文窗口和原生思考模式(思维链)流式传输。在模型处理您的任务时,实时查看其推理过程。 ### 关键特性 - **原生 RLM**(`rlm_query` 工具)——并行扇出 1-16 个廉价的 `deepseek-v4-flash` 子进程,使用现有的 DeepSeek 客户端进行批量分析、分解或并行推理 - **思考模式流式传输**——在 DeepSeek 对您的代码进行推理时展示其思维链 - **完整的工具集**——文件操作、shell 执行、git、网络搜索/浏览、apply-patch、子代理、MCP 服务器 - **1M token 上下文**——当上下文填满时自动进行智能压缩 - **三种交互模式**——Plan(Plan模式,只读探索)、Agent(Agent模式,需审批的交互式)、YOLO(YOLO模式,自动批准)。分解优先的系统提示教会模型在采取行动之前先使用 `checklist_write`、`update_plan` 并生成子代理 - **推理工作量层级**——使用 Shift+Tab 在 `off → high → max` 之间循环切换 - **会话保存/恢复**——为较长的会话设置检查点并恢复 - **工作区回滚**——使用 `/restore` 和 `revert_turn` 进行 side-git 前后轮次快照,而不触碰您仓库的 `.git` - **HTTP/SSE 运行时 API**——`deepseek serve --http`,用于无头代理工作流 - **MCP 协议**——连接到 Model Context Protocol 服务器以获取扩展工具;参见 [docs/MCP.md](docs/MCP.md) - **实时成本跟踪**——按轮次和会话级别的 token 使用量和成本估算 - **暗色主题**——DeepSeek 蓝色调色板 ## 工作原理 DeepSeek TUI 的架构遵循 **dispatcher → TUI → engine → tools** 模式。 `deepseek` CLI 二进制文件是一个轻量级的调度器,它解析子命令并 将其委托给 `deepseek-tui` 伴随二进制文件进行交互式会话。TUI 运行一个基于 **ratatui** 的界面,该界面与执行 代理循环的异步引擎进行通信:用户输入通过流式客户端(兼容 OpenAI 的 Chat Completions)流向 LLM,工具调用从响应中提取并通过类型化的工具注册表(shell、文件操作、git、网络、子代理、MCP)进行分发,结果流式传回转录记录中。 在幕后,引擎管理会话状态、轮次跟踪和持久的任务队列。LSP 子系统(`crates/tui/src/lsp/`)通过生成语言服务器(rust-analyzer、pyright 等)并在下一个推理步骤之前将错误注入模型的上下文中,来提供编辑后的诊断。递归语言模型(RLM)子系统为代理提供了一个沙盒化的 Python REPL,用于批量分类和子 LLM 编排。有关完整的演练,请参见 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md)。 ## 快速开始 ``` npm install -g deepseek-tui deepseek ``` ### 中国 / 镜像友好安装 如果在中国大陆从 GitHub 或 npm 下载缓慢,请通过 Cargo 注册表镜像安装 Rust crates: ``` # ~/.cargo/config.toml [source.crates-io] replace-with = "tuna" [source.tuna] registry = "sparse+https://mirrors.tuna.tsinghua.edu.cn/crates.io-index/" ``` 然后安装规范的 `deepseek` 调度器和(可选的)伴随 TUI 二进制文件: ``` cargo install deepseek-tui-cli --locked # provides `deepseek` cargo install deepseek-tui --locked # provides `deepseek-tui` (optional) deepseek --version ``` 当 GitHub release 资产可访问时,您也可以直接从 [GitHub Releases](https://github.com/Hmbown/DeepSeek-TUI/releases) 页面下载预构建的二进制文件。当有镜像的 release 资产目录可用时,TUNA、rsproxy、Tencent COS 或 Aliyun OSS 镜像也可以与 `DEEPSEEK_TUI_RELEASE_BASE_URL` 一起使用。 首次启动时,系统会提示您输入 [DeepSeek API 密钥](https://platform.deepseek.com/api_keys)。您也可以提前设置: ``` # 通过 CLI deepseek login --api-key "YOUR_DEEPSEEK_API_KEY" # 通过环境变量 export DEEPSEEK_API_KEY="YOUR_DEEPSEEK_API_KEY" deepseek ``` ### 使用 NVIDIA NIM ``` deepseek auth set --provider nvidia-nim --api-key "YOUR_NVIDIA_API_KEY" deepseek --provider nvidia-nim # 或按进程: DEEPSEEK_PROVIDER=nvidia-nim NVIDIA_API_KEY="..." deepseek ``` ### 其他 DeepSeek V4 提供商 ``` deepseek auth set --provider fireworks --api-key "YOUR_FIREWORKS_API_KEY" deepseek --provider fireworks --model deepseek-v4-pro # SGLang 为自托管;对于 localhost 部署,auth 是可选的。 SGLANG_BASE_URL="http://localhost:30000/v1" deepseek --provider sglang --model deepseek-v4-flash ```
从源码安装 ``` git clone https://github.com/Hmbown/DeepSeek-TUI.git cd DeepSeek-TUI cargo install --path crates/tui --locked # requires Rust 1.85+ ```
## v0.8.7 中的新功能 基于 v0.8.6 的快速补丁,以解除复制/选择限制。 ### ✂️ 选择功能可跨越整个转录记录 v0.8.6 中的选择限制将复制/选择限制在用户和助手消息主体内,这使得无法从系统提示、思考块或工具输出中复制文本。v0.8.7 取消了该限制,使渲染的转录块再次可以端到端地选择。 完整更新日志:[CHANGELOG.md](CHANGELOG.md)。 ## v0.8.6 中的新功能 ### 📝 AGENTS.md 引导程序 (`/init`) `/init` 遍历工作区,自动检测项目类型(Cargo.toml、package.json、pyproject.toml 等),并编写一个包含构建/测试命令、工作区布局以及从 `git log` 派生的约定的启动器 `AGENTS.md`。重新运行会显示建议更新的差异,而不会覆盖更改。 ### 🔍 内联 LSP 诊断 在每次 `apply_patch`/`edit_file`/`write_file` 之后,引擎向 LSP 服务器发送 `textDocument/didChange`,并在工具结果中以内联方式显示错误/警告。可通过 `/lsp on|off` 和 `[lsp]` 配置部分进行配置。目前支持 rust-analyzer、pyright、typescript-language-server、gopls 和 clangd。 ### 🔄 自更新 (`deepseek update`) `deepseek update` 获取最新的 GitHub release,下载具有 SHA256 验证的平台正确二进制文件,并原子性地替换正在运行的二进制文件。不再需要记住 `cargo install` 或 `npm install -g`。 ### 🌐 会话分享 (`/share`) `/share` 将当前会话导出为静态 HTML 页面,并通过 `gh` CLI 将其上传到 GitHub Gist,生成一个可点击的 URL,您可以将其粘贴到任何地方。 ### 📖 文档更新 README 主体部分更新了意图声明和架构摘要。ARCHITECTURE.md 已针对 v0.8.6 进行了清理(移除了 swarm 引用,更新了当前的 crate 映射)。CONTRIBUTING.md 现在包含了一个“PR 的形状”部分。 完整更新日志:[CHANGELOG.md](CHANGELOG.md)。 ## v0.8.5 中的新功能 ### 🛡️ 针对 fetch_url 的 SSRF 保护 `fetch_url` 现在在连接前验证目标主机名和 IP——回环地址仅限本地 HTTP,远程主机使用 DNS 绑定,并阻止内部 IP 范围。由 Hafeez Pizofreude (#261) 和 Jason 贡献。 ### 🖥️ Schema 驱动的配置编辑器 `/config tui` 打开一个由 schemaui 提供支持的表单式配置编辑器。单独的 `/config` 打开旧版原生模态框;`/config web` 启动一个浏览器界面(需要 `web` 功能)。由 Unic (YuniqueUnic) 通过 #365 贡献。 ### 🏷️ DeepseekCN 提供商 `ApiProvider::DeepseekCN` 针对中国用户指向 `api.deepseeki.com`。在首次运行时当 `zh-*` 为系统区域设置时自动检测。 ### 🔐 原子文件写入 所有对 `~/.deepseek/` 的写入现在都通过 `write_atomic`(tempfile + fsync + 重命名)进行,防止因写入中途崩溃导致的损坏。 ### 🧵 Panic 安全基础 `spawn_supervised` 捕获并记录带有崩溃转储的任务 panic,而不是静默丢弃任务。 ### ⌨️ `/config ` 连接 `/config model deepseek-v4-flash`、`/config locale zh-Hans` 等可在会话中实时更改设置,而无需打开编辑器。 完整更新日志:[CHANGELOG.md](CHANGELOG.md)。 ## v0.8.0 中的新功能 ### ⚡ Shell 稳定性和发送后响应能力 完成的后台 shell 任务现在在观察到完成后立即释放其实时进程和管道句柄,同时保持作业记录可检查。这可以防止长时间运行的会话达到 `Too many open files (os error 24)`,这可能会使检查点保存失败,并导致 shell 生成、消息发送、关闭和 Esc/取消路径滞后或失败。 ### 🪟 Windows REPL 运行时 CI 强化 Windows 为 REPL 运行时测试获得了更长的 Python 引导就绪超时,与 GitHub runner 启动竞争相匹配,而不会削弱其他平台上的引导失败。 ### 🌏 Cargo 镜像安装文档 README 现在包含了 TUNA Cargo 镜像设置和直接发布资产指南,适用于 GitHub/npm 访问缓慢的用户。 ### 🧪 测试强化 新的回归覆盖范围证明了完成的后台 shell 任务在 `exec_shell_wait` 后丢弃了其实时进程句柄。 完整更新日志:[CHANGELOG.md](CHANGELOG.md)。 ## v0.7.8 中的新功能 ### ⚡ Shell 控制:前台到后台分离 + `exec_shell_cancel` 正在运行的前台命令现在可以移动到后台交互式会话——在执行命令时按 **`Ctrl+B`** 打开 shell 控制,然后分离它(它继续运行,可以使用 `exec_shell_wait` 进行轮询)或取消当前轮次。 **新工具:`exec_shell_cancel`**——通过 `task_id` 取消特定的后台 shell 任务,或使用 `all: true` 取消所有正在运行的后台任务。 **支持取消的 `exec_shell_wait`**——在 `exec_shell_wait` 阻塞时取消轮次现在会停止等待,但会留下后台任务继续运行。 ### 🐛 Unicode glob 搜索修复 包含多字节字符的文件名(例如 `dialogue_line__冰糖.mp3`)不再导致 `matches_glob` 函数崩溃——字节索引切片已替换为 `char_indices()` 边界安全迭代。 ### 🔄 Swarm UI 协调 扇出卡不再预填充零状态工作器,消除了“0 完成 · 0 运行 · 0 失败 · N 待定”与侧边栏“N 运行”的矛盾。侧边栏现在在从 `agent_swarm` 调用接收到第一个进度事件之前显示“正在分发 N”。 完整更新日志:[CHANGELOG.md](CHANGELOG.md)。 ## v0.7.6 中的新功能 ### 🌐 UI 本地化 DeepSeek TUI 现在可以说您的语言。`settings.toml` 中的新 `locale` 设置控制 UI 界面——编辑器、历史搜索、`/config`、帮助叠加层和状态提示——而不改变模型输出语言。 | 设置 | 显示 | |---|---| | `locale = \"auto\"` | 检查 `LC_ALL` → `LC_MESSAGES` → `LANG`(默认) | | `locale = \"ja\"` | 日语 | | `locale = \"zh-Hans\"` | 简体中文 | | `locale = \"pt-BR\"` | 葡萄牙语(巴西) | | `locale = \"en\"` | 英语后备 | 不知道选什么?在您的终端中运行 `locale`;将自动使用第一个匹配的标签。 ### 📋 更智能的粘贴处理 粘贴突发检测可在不发送括号粘贴事件的终端中捕获快速按键粘贴——CRLF 被规范化,多行粘贴会一直缓冲,直到您停止输入。可通过 `paste_burst_detection` 进行配置。 ### 🔍 编辑器历史搜索 忘记了一小时前写的提示?`Alt+R` 可打开跨输入历史和恢复草稿的实时搜索。输入进行过滤,`Enter` 接受,`Esc` 恢复您正在输入的内容。 ### 👁️ 待处理输入预览 在正在运行的轮次期间,排队的消息、待处理的转向和上下文芯片会显示在编辑器上方,以便您可以看到接下来将发送什么。Alt+↑` 弹出最后排队的消息以供编辑。 ### ⚙️ 分组 `/config` 编辑器 `/config` 现在按部分(模型、权限、显示等)对设置进行分组,并带有实时过滤器。`↑/↓`(或过滤器为空时的 `j`/`k`)导航;`Enter`/`e` 编辑选定的行;`Esc` 清除过滤器或关闭。 ### ⌨️ 可搜索的帮助叠加层 `?`(输入为空时)、`F1` 或 `Ctrl+/` 打开可搜索的帮助叠加层。输入以过滤命令和键绑定;多词搜索作为 AND 运算。 完整历史记录:[CHANGELOG.md](CHANGELOG.md)。 ## 模型与定价 DeepSeek TUI 默认针对具有 1M token 上下文窗口的 **DeepSeek V4** 模型。 | 模型 | 上下文 | 输入(缓存命中) | 输入(缓存未命中) | 输出 | |---|---|---|---|---| | `deepseek-v4-pro` | 1M | $0.003625 / 1M* | $0.435 / 1M* | $0.87 / 1M* | | `deepseek-v4-flash` | 1M | $0.0028 / 1M | $0.14 / 1M | $0.28 / 1M | 旧版别名 `deepseek-chat` 和 `deepseek-reasoner` 会静默映射到 `deepseek-v4-flash`。 **NVIDIA NIM** 托管变体(`deepseek-ai/deepseek-v4-pro`、`deepseek-ai/deepseek-v4-flash`)使用您的 NVIDIA 账户条款——不涉及 DeepSeek 平台计费。 *\*DeepSeek 将上述 Pro 费率列为限时 75% 折扣,有效期至 2026-05-05 15:59 UTC;TUI 成本估算器在该时间戳之后将回退到基础 Pro 费率。* ## 用法 ``` deepseek # interactive TUI deepseek "explain this function" # one-shot prompt deepseek --model deepseek-v4-flash "summarize" # model override deepseek --yolo # YOLO mode (auto-approve tools) deepseek login --api-key "..." # save API key deepseek doctor # check setup & connectivity deepseek doctor --json # machine-readable diagnostics deepseek setup --status # read-only setup status deepseek setup --tools --plugins # scaffold local tool/plugin dirs deepseek models # list live API models deepseek sessions # list saved sessions deepseek resume --last # resume latest session deepseek serve --http # HTTP/SSE API server deepseek mcp list # list configured MCP servers deepseek mcp validate # validate MCP config/connectivity deepseek mcp-server # run dispatcher MCP stdio server ``` ### 键盘快捷键 | 按键 | 操作 | |---|---| | `Tab` | 补全 `/` 或 `@` 条目;当轮次正在运行时,将草稿排队作为后续;否则循环切换模式 | | `Shift+Tab` | 循环切换推理工作量:off → high → max | | `F1` | 帮助 | | `Esc` | 返回 / 关闭 | | `Ctrl+K` | 命令面板 | | `Ctrl+R` | 恢复之前的会话 | | `Alt+R` | 搜索提示历史并恢复已清除的草稿 | | `@path` | 在编辑器中附加文件/目录上下文 | | `↑`(在编辑器开头) | 选择附件行以进行删除 | | `Alt+↑` | 编辑最后排队的消息 | | `/attach ` | 附加图像/视频媒体引用;在编辑器开头使用 `↑` 选择行,并使用 `Backspace`/`Delete` 移除 | ## 模式 | 模式 | 行为 | |---|---| | **Plan** 🔍 | 只读调查——模型在进行更改之前探索并提出分解计划(`update_plan` + `checklist_write`) | | **Agent** 🤖 | 默认交互模式——带审批门的多步工具使用;模型在请求写入之前通过 `checklist_write` 概述工作 | | **YOLO** ⚡ | 在受信任的工作区中自动批准所有工具;模型仍然创建 `checklist_write`/`update_plan` 以保持工作可见和可跟踪 | ## 配置 `~/.deepseek/config.toml`——有关每个选项,请参见 [config.example.toml](config.example.toml)。 关键环境变量覆盖: | 变量 | 目的 | |---|---| | `DEEPSEEK_API_KEY` | API 密钥 | | `DEEPSEEK_BASE_URL` | API 基础 URL | | `DEEPSEEK_MODEL` | 默认模型 | | `DEEPSEEK_PROVIDER` | 提供商:`deepseek`(默认)、`nvidia-nim`、`fireworks` 或 `sglang` | | `DEEPSEEK_PROFILE` | 配置文件名 | | `NVIDIA_API_KEY` | NVIDIA NIM API 密钥 | | `FIREWORKS_API_KEY` | Fireworks AI API 密钥 | | `SGLANG_BASE_URL` | 自托管 SGLang 端点 | | `SGLANG_API_KEY` | 可选的 SGLang bearer token | 快速诊断:`deepseek setup --status` 检查 API 密钥、MCP、沙盒和 `.env` 状态,不进行网络调用;`deepseek doctor --json` 适用于 CI;`deepseek setup --tools --plugins` 搭建本地工具和插件目录。 DeepSeek 上下文缓存是自动的——当 API 返回缓存命中/未命中 token 字段时,TUI 会将它们包含在用量和成本跟踪中。 完整参考:[docs/CONFIGURATION.md](docs/CONFIGURATION.md) 和 [docs/MCP.md](docs/MCP.md)。 UI 区域设置独立于模型语言——在 `settings.toml` 中设置 `locale` 或通过 `LC_ALL`/`LANG` 环境变量设置。参见 [docs/CONFIGURATION.md](docs/CONFIGURATION.md)。 ## 发布您自己的技能 DeepSeek-TUI 从活动技能目录中发现技能。当存在工作区本地的 `.agents/skills` 时优先,然后是 `./skills`,接着是配置的全局目录(默认为 `~/.deepseek/skills`)。每个技能都是一个包含 `SKILL.md` 文件的目录: ``` ~/.deepseek/skills/my-skill/ └── SKILL.md ``` `SKILL.md` 必须以 YAML 前置元数据开头: ``` --- name: my-skill description: Use this when DeepSeek should follow my custom workflow. --- # 我的技能 Instructions for the agent go here. ``` 运行 `/skills` 以列出已发现的技能,运行 `/skill ` 为下一条消息激活一个技能,或运行 `/skill new` 使用捆绑的技能创建器助手。 已安装的技能也会列在模型可见的会话上下文中,以便当用户命名任务或任务与其描述匹配时,代理可以选择相关的技能。 DeepSeek-TUI 还可以直接从 GitHub 仓库安装社区技能,无需后端服务介入: 1. 创建一个公共 GitHub 仓库,其根目录下包含一个带有通常的 `---` 前置元数据(`name`、`description`)的 `SKILL.md`。 2. 多技能捆绑包使用 `skills//SKILL.md` 代替——安装程序选择第一个匹配项,并在安装时以前置元数据中的 `name` 命名。 3. 推送到 `main`(或 `master`);安装程序获取 `archive/refs/heads/main.tar.gz` 并回退到 `master.tar.gz`。 4. 用户通过 `/skill install github:/` 安装——安装受 `[network]` 策略控制,验证路径遍历和大小,并放置在 `~/.deepseek/skills//` 下。 5. 向策划的 `index.json`(默认注册表)提交 PR,使技能可通过名称(`/skill install `)安装,而不是 GitHub 规范。 6. 对已安装的社区技能使用 `/skill update `、`/skill uninstall ` 或 `/skill trust `。仅当您希望与技能捆绑的脚本符合执行条件时才需要 Trust。 ## 文档 | 文档 | 主题 | |---|---| | [ARCHITECTURE.md](docs/ARCHITECTURE.md) | 代码库内部结构 | | [CONFIGURATION.md](docs/CONFIGURATION.md) | 完整配置参考 | | [MODES.md](docs/MODES.md) | Plan / Agent / YOLO 模式 | | [MCP.md](docs/MCP.md) | Model Context Protocol 集成 | | [RUNTIME_API.md](docs/RUNTIME_API.md) | HTTP/SSE API 服务器 | | [RELEASE_RUNBOOK.md](docs/RELEASE_RUNBOOK.md) | 发布流程 | | [OPERATIONS_RUNBOOK.md](docs/OPERATIONS_RUNBOOK.md) | 运维与恢复 | ## 贡献 参见 [CONTRIBUTING.md](CONTRIBUTING.md)。欢迎提交 Pull requests! *不隶属于 DeepSeek Inc。* ## 许可证 [MIT](LICENSE) ## Star 历史 [![Star 历史图表](https://api.star-history.com/chart?repos=Hmbown/DeepSeek-TUI&type=date&legend=top-left)](https://www.star-history.com/?repos=Hmbown%2FDeepSeek-TUI&type=date&logscale=&legend=top-left)
标签:1M上下文, AI代理, AI编程, AI编程助手, CLI, CoT, crates.io, DeepSeek, DLL 劫持, Git管理, GNU通用公共许可证, MCP服务器, MLOps, Node.js, npm, Rust, Shell执行, SOC Prime, TUI, V4模型, WiFi技术, 人机交互, 代码审查, 代码生成, 会话保存, 可视化界面, 大语言模型, 子代理, 工作空间回滚, 并行推理, 开发工具, 开发辅助, 开源, 思维链, 批处理分析, 提示词工程, 数字取证, 文件编辑, 渗透测试工具, 熵值分析, 策略决策点, 终端应用, 终端用户界面, 网络安全研究, 网络搜索, 网络流量审计, 自动化脚本, 自动化运维, 逆向工具, 通知系统