#它是什么
DSCode 是「有主见的」编程 Agent 运行时:默认 DeepSeek V4 Flash(经济型),同时内置支持 OpenAI Codex、OpenAI、Anthropic、OpenRouter、Z.AI、Kimi、MiniMax、xAI/Grok 八家供应商。核心是 provider-aware 模型路由 + 本地会话 + 安全打补丁 + 并行 Agent + OS 沙箱 + 透明的用量报告。
它不追求功能上碾压通用 Agent,而是把运行时保持本地、可审计,让每个仓库任务用上它真正需要的模型能力。
核心特点
- DeepSeek 优先,但不绑定:默认 V4 Flash,切到 Codex/OpenAI/Anthropic 等不需要换工具和会话
- 成本透明:
/status显示上下文占用、缓存命中、token 消耗、估算费用 - 并行多角色:explorer / implementer / reviewer / tester 四角色最多 4 并发,实现者在隔离 Git worktree 干活,主 Agent 负责集成验证
- 本地安全:会话存本地树形 JSONL;命令默认沙箱 + 断网;API key 从子进程环境剥离;每次成功补丁有可回滚 checkpoint
- 生态兼容:认 AGENTS.md / CLAUDE.md,支持 Agent Skills、MCP、hooks、项目信任、后台任务、JSONL/CI、RPC、VS Code 扩展
#对 DeepSeek 的优化(源码级)
这些优化不是玄学,是实打实的适配层。核心逻辑集中在 packages/core/src/deepseek.ts(整个文件只有 58 行),由 optimizeDeepSeekResponsesPayload() 完成。
1. Responses 请求裁剪
DeepSeek 走 OpenAI Responses API 兼容层,但它无状态、自动管理前缀缓存。所以适配器把 OpenAI 特有字段直接删掉:
// DeepSeek manages prefix caching automatically and is stateless at the
// Responses API layer. These OpenAI-specific hints are silently ignored...
delete next.prompt_cache_key;
delete next.prompt_cache_retention;
delete next.prompt_cache_options;
delete next.include;
if (isRecord(next.reasoning)) {
next.reasoning = { effort: next.reasoning.effort };
// Sampling controls do not take effect while thinking is enabled.
delete next.temperature;
delete next.top_p;
}
开着 thinking 模式时 temperature / top_p 根本不生效,传了白传,删掉让请求日志诚实、好调试。
2. apply_patch 走原生 custom 工具
把补丁工具转成 DeepSeek 的 free-form custom tool 格式,避免大 diff 走 JSON 转义,省转义开销和出错率。
3. 前缀缓存友好
README 明确要求 prompt 和工具顺序保持稳定,让 DeepSeek 的自动前缀缓存命中可复用前缀——这是直接省 token 钱的设计。命中率会在 /status 里显示(cache read/write、命中百分比)。
4. 无状态 API 的本地回放
Responses API 无状态,DSCode 把消息、reasoning items、工具结果存在本地会话树里,每次请求完整回放,保证上下文连续。
5. 智能压缩(compaction)
const AUTO_COMPACT_AT = 0.9;
const KEEP_RECENT_TOKENS = 60_000;
const SUMMARY_RESERVE_TOKENS = 32_000;
上下文用到 90% 自动压缩:保留最近 60k token 不动,更早的用低 effort 模型总结成摘要,且摘要包在 <compacted_session_history> 标签里防提示注入。摘要明确要求保留目标、决策、文件路径、命令、测试结果、未完成工作——对 1M 上下文的 DeepSeek,这能把钱花在刀刃上。
6. 安全兜底
- API key 从子进程 / hooks / MCP 环境剥离(
stripModelCredentialEnvironment) - 默认
network blocked+workspace-write沙箱,联网搜索要显式--web才开 - macOS 用 Seatbelt,Linux/Windows 用 Docker 沙箱;无沙箱后端时 fail closed,不静默在宿主机执行
7. 默认配置针对 DeepSeek 调优
model deepseek-v4-flash
transport responses
thinking max
harness minimal
permission auto
sandbox workspace-write
network blocked
thinking max + minimal harness(只暴露沙箱命令、后台交互、自由补丁、并行委托几个高杠杆工具),省掉不必要的工具调用开销。
#这些优化有用吗?
说实话:有用,但别高估。分两层看。
#技术栈与代码量
全栈 TypeScript,跑在 Node.js 上。pnpm monorepo 两个包:@thinkany/dscode(CLI/TUI 主程序)+ @thinkany/dscode-core(可复用核心运行时,带 RPC)。测试用 Vitest,VS Code 扩展也是 TS。
有意思的发现:它站在 Pi 框架肩膀上
核心依赖是 @earendil-works/pi-* 系列(pi-agent-core、pi-ai、pi-coding-agent、pi-tui)——DSCode 本质是 Pi 开源框架 + DeepSeek 适配层 + 自己的产品外壳。这解释了它为什么这么快支持这么多 provider,也解释了为什么代码量这么小。
代码量实测(dev 分支 @ v0.3.4)
| 部分 | 行数 | 说明 |
|---|---|---|
| 核心源码 | ≈ 7,500 | src/ + packages/core/src/(不含测试) |
| 测试 | ≈ 2,500 | *.test.ts,占比约 25% |
| TypeScript 合计 | ≈ 10,000 | 全部 .ts |
| 全仓库合计 | ≈ 12,000 | 含 md / json / mjs 脚本 |
7,500 行核心代码对编程 Agent 来说非常小——agent 循环、TUI、AI 抽象都复用 Pi 框架了,DSCode 自己写的是定制层(DeepSeek 适配 58 行、provider 管理、沙箱策略、产品外壳)。好处是可审计、易 fork;代价是深度依赖上游框架,pi-* 版本一变就得跟着动。
#有没有 benchmark?
没有。DSCode 官方没发布任何 benchmark 数据。仓库里能找到的只有三处「态度声明」:
- README:声称项目「用真实仓库任务的成功率、耗时、成本、安全性、人工干预来衡量」——没有具体数字
- COMPARISON.md:说正确对比方式是 shadow evaluation(影子评估),同任务对比成功率/耗时/成本/无关改动/人工干预,而不是功能清单——同样是方法论,没数据
- PRODUCT_STRATEGY.md 一句很实诚的话:「最危险的误判,是把模型 benchmark 或'有这个按钮'当成完整产品 benchmark」
12 stars 的早期项目没跑权威 benchmark(SWE-bench 等)很正常。注意信息差:README 引用的 DeepSeek V4 能力要看 DeepSeek 官方评测,而不是 DSCode 这个外壳的评测。工具层的价值(成本、安全、可控)很难用 SWE-bench 数字体现,想验证只能自己拿真实仓库任务跑影子评测。
#快速上手
npm install -g @thinkany/dscode
dscode -C /path/to/project # 进入 TUI,/login 选供应商
# 无头用法(CI / 脚本)
dscode -C ./project -p "Explain the authentication flow"
dscode -C ./project --mode json -p "Fix lint errors and run tests"
# 不带 key 的环境变量方式
export DEEPSEEK_API_KEY="***"
dscode -C /path/to/project
#当前边界
- DeepSeek V4 Flash 目前只支持文本,看截图要换 GPT-5.6 这类带视觉的模型
- ChatGPT 计划接入受限于账号的模型、额度和工作区权限
- VS Code 扩展只是本地集成,还没上 Marketplace
- Linux/Windows 隔离依赖你自己配置的 Docker 镜像
- 项目早期:Claude Code / Codex 在 IDE、云、多模态、生态上成熟得多