基于 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@latestdeepcode # 启动(新会话)启动后设置 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.model(pro/flash/auto)、provider.reasoning_effort(off/low/medium/high/max)、cost.currency、approval.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 看本机实况。
deep-code 不内置 MCP。它本来就有 shell,所以扩展能力的方式是写个脚本/命令 + 一份 SKILL.md:一行摘要注入系统提示、模型按需读取 SKILL.md 正文,再通过 shell 工具调用你的脚本。
- 发现:把带
name/descriptionfrontmatter 的SKILL.md放进 skills 目录(全局~/.deep-code/skills/<name>/或项目<workspace>/.deep-code/skills/<name>/);其一行摘要常驻提示,正文只在相关时才读入上下文。 - 执行:能力就是普通命令(
psql、curl、你自己的脚本……),经shell工具运行,同样受审批门与执行策略约束。 - 为什么不做 MCP:对有 shell 的 agent,shell 就是通用工具协议。一份几十 token 的 SKILL.md 摘要按需加载,比把整套工具 schema 常驻每一轮请求更省上下文,还能用管道(
| head等)裁剪结果、只把关键片段带回上下文。确需现成的 MCP 生态 server 时,用支持 MCP 的宿主即可——deep-code 保持精简。
内置 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-codeMIT