Skip to content

Repository files navigation

deep-code

基于 DeepSeek 的终端 AI 编程助手(Rust 编写)。

特性

  • DeepSeek 流式对话:支持 reasoning 流与工具调用(function calling)。
  • 工具审批:写文件/执行命令等需确认(y 批准 / a 本会话始终允许 / n 拒绝);shell 的 a 按命令 identity(程序名 + 子命令)放行,批过 git push 不会连带放行 git status,只读工具直接执行。四档权限(default / accept_edits / auto / yolo)按 Shift+Tab 循环切换。
  • Auto 路由:按任务在 deepseek-v4-pro / deepseek-v4-flash 间自动选模型与 reasoning effort;API 限流/故障时自动降级重试。
  • 会话与回滚:会话持久化、-c 续接、-r 选择恢复;每轮 checkpoint 可 /restore 回滚。
  • 极简 TUI:鼠标滚动/划选复制、粘贴折叠、补全菜单;状态行只留权限档位、生效模型与上下文占用,成本明细在 /status。流式中可继续输入,本回合结束后作为追问自动发出。
  • OS 沙箱(macOS / Linux):shell/job 命令在系统沙箱内运行(macOS Seatbelt / Linux Landlock+seccomp),写入限制在工作区与系统临时目录内,且默认不带网络——需要联网的命令必须声明并转人工审批。没有可用沙箱后端时拒绝执行而非降级裸跑。 Windows 请务必知悉:那里只有 Job Object 进程树收容,既不限制文件写、也不拦网络[sandbox] network 在该平台是空操作。命令仍受 deny 底板与审批门约束,但"越界写会被替你拒掉"在 Windows 上不成立。deepcode doctor 会如实报告本机究竟约束了什么。
  • 可扩展:LSP 诊断、子代理(sub-agents)、skills(SKILL.md + shell)。

安装

npm i -g @liwenkai/deepcode

安装后命令为 deepcode(postinstall 会按平台从 GitHub Releases 下载预编译二进制并校验 SHA-256)。更新:

npm i -g @liwenkai/deepcode@latest

快速开始

deepcode            # 启动(新会话)

启动后设置 DeepSeek API Key(也可用环境变量 DEEPSEEK_API_KEY):

/apikey sk-...

用法

deepcode                 # 新会话
deepcode -c              # 续最近会话
deepcode -r              # 选择历史会话
deepcode --new           # 显式新会话
deepcode --help          # 命令一览(--version 查版本)
deepcode doctor [--json] # 环境自检
deepcode serve --http    # 作为 HTTP 服务运行
deepcode eval            # SWE-bench 评测 rollout(见下文)
deepcode session list|resume|delete|export

常用 slash 命令:/help /model /apikey /resume /clear /sessions /checkpoints /restore /agents /copy/help 查看全部与快捷键)。

配置

配置文件:~/.deep-code/config.toml(可参考仓库根目录的 config.example.toml)。 加载顺序:内置默认 → 全局 → 项目 .deep-code/config.toml → 环境变量 → CLI 参数。

常用项:provider.modelpro/flash/auto)、provider.reasoning_effortoff/low/medium/high/max)、cost.currencyapproval.auto_allow(预放行的工具前缀)。

API Key 建议放在环境变量或全局配置;项目级配置中的 api_key 会被忽略,以防随仓库泄露。

环境变量 DEEP_CODE_DISABLE_WEB:设为非空且非 0/false/off/no 的值(大小写不敏感;空值视为未设置)即可关闭联网工具(web_search/fetch_url),用于断网或审计场景;默认开启。/status 会显示当前 web=on|off

在 macOS / Linux 上,shell/job 命令在 OS 沙箱内运行且默认不带网络(含端口监听):需要联网的命令(安装依赖、git push、dev server)会转人工审批,"本会话记住"后同形态命令不再问;[sandbox] network = prompt|always|never 可调,项目层只许收紧。Windows 上没有沙箱约束,因此本段的断网与写入限制均不生效(network 设置是空操作),声明联网仍会转审批、deny 底板仍然生效;跑 deepcode doctor 看本机实况。

扩展能力(skills + shell)

deep-code 不内置 MCP。它本来就有 shell,所以扩展能力的方式是写个脚本/命令 + 一份 SKILL.md:一行摘要注入系统提示、模型按需读取 SKILL.md 正文,再通过 shell 工具调用你的脚本。

  • 发现:把带 name/description frontmatter 的 SKILL.md 放进 skills 目录(全局 ~/.deep-code/skills/<name>/ 或项目 <workspace>/.deep-code/skills/<name>/);其一行摘要常驻提示,正文只在相关时才读入上下文。
  • 执行:能力就是普通命令(psqlcurl、你自己的脚本……),经 shell 工具运行,同样受审批门与执行策略约束。
  • 为什么不做 MCP:对有 shell 的 agent,shell 就是通用工具协议。一份几十 token 的 SKILL.md 摘要按需加载,比把整套工具 schema 常驻每一轮请求更省上下文,还能用管道(| head 等)裁剪结果、只把关键片段带回上下文。确需现成的 MCP 生态 server 时,用支持 MCP 的宿主即可——deep-code 保持精简。

评测(SWE-bench)

内置 SWE-bench rollout 驱动:拉官方数据集,驱动 agent 逐题产出 patch, 写出官方格式的 predictions.json本地不打分——patch 产出 ≠ 解决, 真实 resolved 率由官方评测(sb-cli 云端,免本地 Docker)得出。

# 需已配置 DeepSeek API key(未配置会直接报错,不会空跑)
deepcode eval --sample 2                  # 联调:dev split 先跑 2 题
deepcode eval                             # dev 全量(23 题,约几分钱)
deepcode eval --split test --parallel 4 --timeout 900   # test 全量(300 题)

产物在 eval-out/(可用 --out 改):predictions.json(官方格式)+ report.json(含每题耗时、成本、模型与路由来源)。

官方评分:

pip install sb-cli
sb-cli gen-api-key you@example.com   # 一次性,邮件验证后 export SWEBENCH_API_KEY=...
sb-cli submit swe-bench_lite dev --predictions_path eval-out/predictions.json --run_id my-run

网络提示:数据集来自 HuggingFace datasets-server,部分网络需 HTTPS_PROXY=http://127.0.0.1:<port> 或用 DEEP_CODE_HF_BASE 指向镜像。 参数细节见 crates/deep-code-eval/README.md

从源码构建

git clone https://github.com/liwenka1/deep-code
cd deep-code
cargo build --release -p deep-code-tui
# 产物:target/release/deep-code

许可证

MIT

About

🐳 DeepSeek 最好的终端 AI 编程助手

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages