DSCode
一个本地优先、多提供商的编码智能体,默认使用 DeepSeek。
简体中文 · MIT License · Comparison
DSCode 是一个具有明确观点的编码智能体运行时,以 DeepSeek V4 Flash 作为经济实惠的默认选项, 并内置对 Codex、OpenAI、Anthropic、OpenRouter、Z.AI、Kimi、MiniMax 和 xAI 的支持。它结合了 感知提供商的模型路由、本地会话、安全补丁、并行智能体、操作系统沙箱以及 透明的使用报告。
它并不试图在功能上超越所有通用智能体。它保持运行时本地化且可检查, 同时让每个仓库任务使用其实际所需的模型能力。
Why DSCode
- DeepSeek 优先,而非仅限 DeepSeek。 DeepSeek V4 Flash 仍为默认选项,配备其专用的
Responses 适配器、原生自由格式
apply_patch以及可选的服务器端 Web Search。可切换至 Codex、OpenAI、Anthropic、OpenRouter、Z.AI、Kimi、MiniMax 或 Grok,而无需更改工具或会话。 - 在模型支持时启用视觉功能。 在 TUI 中粘贴图像,或将图像作为
@file传入; 诸如 GPT-5.6 等模型会接收实际的图像附件,而纯文本 DeepSeek 模型则会明确失败。 - 设计上具备成本意识。 DeepSeek 的 1M 上下文和磁盘前缀缓存在运行时中有所体现;
/status报告上下文、缓存命中、令牌、推理及预估成本。参见当前 DeepSeek 定价。 - 并行工作且所有权清晰。 可并行运行 explorer、implementer、reviewer 和 tester 角色, 最多支持四个任务并行。Implementers 在隔离的 Git worktrees 中工作;主 agent 负责 集成和最终验证。
- 本地控制。 会话以本地树状 JSONL 形式存储。命令在操作系统沙箱中运行, 默认阻止网络访问,API 密钥从子进程环境中移除,且每个成功的 patch 都会创建一个持久、无冲突的 checkpoint。
- 无工作流重置。 DSCode 理解
AGENTS.md和CLAUDE.md,并支持 Agent Skills、MCP、 hooks、项目信任、后台任务、JSONL/CI、RPC 以及 VS Code 入口点。
如需基于证据的 Claude Code 与 Codex 对比,请参阅 DSCode 对比。简而言之:那些产品拥有更广泛且更成熟的 生态系统;DSCode 规模较小,以 DeepSeek 为首选,本地可控,并采用 MIT 许可证。
快速开始
要求:Node.js 22.19+ 和 Git。DSCode 还使用 rg;安装程序会准备 pnpm 并在可用时通过 Homebrew 安装
ripgrep。
从 npm 安装:
npm install -g @thinkany/dscode
或者,安装最新的源代码构建版本:
curl -fsSL https://raw.githubusercontent.com/thinkany-ai/dscode/refs/heads/main/scripts/install.sh | sh
确保 ~/.local/bin 位于您的 PATH 上,然后启动 DSCode:
dscode -C /path/to/project
在全新安装中,在 TUI 中输入 /login 并选择一个提供商。DSCode 将完成
身份验证并选择该提供商的默认模型。对于非交互式命令和显式的无提供商配置,
DeepSeek 仍然是默认选项。
| 提供商 | ID | 身份验证 |
|---|---|---|
| DeepSeek | deepseek | API 密钥 |
| OpenAI Codex | openai-codex | 符合条件的 ChatGPT 计划 |
| OpenAI | openai | API 密钥 |
| Anthropic | anthropic | Claude 账户或 API 密钥 |
| OpenRouter | openrouter | OpenRouter 账户或 API 密钥 |
| Z.AI Coding Plan | zai | API 密钥 |
| Kimi For Coding | kimi-coding | Kimi Code 账户或 API 密钥 |
| MiniMax | minimax | API 密钥 |
| xAI / Grok | xai | Grok/X 账户或 API 密钥 |
别名 kimi 和 grok 可被 /login 和 --provider 接受。
在配置 DeepSeek 时,DSCode 会对 API 密钥进行掩码处理,然后提供一个可选的 API 基础 URL。按 Enter 键使用
https://api.deepseek.com,或输入一个兼容 DeepSeek/OpenAI 的网关 URL。默认情况下,凭据
使用操作系统密钥环;~/.dscode/auth.json 是无头主机
或密钥环服务不可用时的仅限所有者回退方案。端点存储在 ~/.dscode/config.json 中,权限为 0600
。解析顺序为 --base-url、DEEPSEEK_BASE_URL、已保存的配置,然后是官方
DeepSeek URL。为避免存储密钥:
export DEEPSEEK_API_KEY="sk-..."
export DEEPSEEK_BASE_URL="https://api.deepseek.com"
dscode -C /path/to/project
您也可以在打开 TUI 之前进行身份验证:
dscode login deepseek # DeepSeek API key
dscode login openai-codex # browser OAuth; uses ChatGPT plan limits
dscode login openai # securely prompts for an OpenAI API key
dscode login anthropic # Claude account or Anthropic API key
dscode login openrouter # OpenRouter account or API key
所选的提供商和模型将保存以供后续运行使用。可随时覆盖它们:
dscode --provider openai-codex --model gpt-5.6-sol -C /path/to/project
dscode --provider deepseek --model deepseek-v4-flash -C /path/to/project
DSCode 将其所有全局状态保存在 ~/.dscode 下:
~/.dscode/settings.json TUI and runtime preferences
~/.dscode/config.json DSCode storage policy and DeepSeek endpoint
~/.dscode/auth.json Owner-only credential fallback
~/.dscode/credential-metadata.json Non-secret keyring index
~/.dscode/state.sqlite Thread metadata and desktop runtime state
~/.dscode/skills/ Global skills
~/.dscode/extensions/ Global extensions
~/.dscode/mcp.json Global MCP servers
~/.dscode/hooks.json Global hooks
~/.dscode/sessions/YYYY/MM/DD/ JSONL session transcripts
~/.dscode/archived_sessions/ Archived transcripts
扁平 sessions/*.jsonl 名称是当前终端运行时的硬链接兼容项;每个名称都指向与其按日期分区的转录文件相同的 inode,且不会重复内容。JSONL 是转录文件的唯一可信来源。SQLite 仅包含可搜索的线程元数据、置顶/归档状态以及文件指纹。
凭据和历史记录行为可在 ~/.dscode/config.json 中配置:
{
"cli_auth_credentials_store": "auto",
"history": { "persistence": "save-all" }
}
凭证模式为 auto、keyring 和 file。将历史记录持久化设置为 none 以在不写入转录文件的情况下运行新会话。DSCODE_SQLITE_HOME 仅迁移 SQLite 状态。
设置 DSCODE_HOME 以迁移目录,或设置 DSCODE_SESSIONS_DIR 以仅迁移会话历史。DSCode 不会继承 PI_CODING_AGENT_DIR。~/.dscode/agent 下的现有文件会在首次启动时复制到新布局中,而不会删除或覆盖任何内容。项目技能应使用可移植的 .agents/skills/ 约定。
默认运行时
新安装使用:
model deepseek-v4-flash
transport responses
thinking max
harness minimal
permission auto
sandbox workspace-write
network blocked
默认的 minimal 框架暴露了一组高杠杆工具:沙箱化命令、
后台进程交互、自由格式补丁以及并行委派。使用 --harness safe 添加
显式文件读取、文件搜索和自动语言诊断。
日常命令
# Start a new session
dscode -C ./my-project
# Continue or select a previous session
dscode -C ./my-project --continue
dscode -C ./my-project --resume
# One-shot output, JSONL automation, or IDE RPC
dscode -C ./my-project -p "Explain the authentication flow"
dscode -C ./my-project --mode json -p "Fix lint errors and run tests"
dscode -C ./my-project --mode rpc
# Inspect a screenshot with a vision-capable model
dscode --provider openai-codex @screenshot.png "Explain this error"
在 TUI 中,粘贴 PNG、JPEG、GIF 或 WebP 图像并添加您的问题。DSCode 会立即将
终端的本地路径替换为 [Image #N] 标记,将图像字节附加到消息中,并且
每轮最多支持八张图像,每张 20 MB。
在 TUI 中:
| 命令 | 用途 |
|---|---|
/plan | 进入或退出结构化只读规划 |
/permissions | 显示或更改 plan、ask、auto 或 full 访问权限 |
/status | 显示模型、上下文、缓存命中、令牌、成本和会话详情 |
/diff | 检查当前补丁转录 |
/checkpoints / /undo | 检查或恢复持久化补丁检查点 |
/new / /clear | 清除当前上下文并开始新会话(别名) |
/resume / /fork / /tree | 导航树状本地会话 |
/compact | 压缩较早的上下文,同时保留当前工作 |
/jobs | 检查可重连的后台命令 |
/mcp / /agents / /doctor | 检查集成、代理和运行时健康状况 |
/login [provider] | 选择并认证受支持的模型提供商 |
/model | 选择已配置的模型;该选择将被保存 |
/effort ... | 更改活动模型的推理努力程度 |
输入 / 查看所有命令,输入 /hotkeys 查看键盘快捷键。
安全模型
权限决定 DSCode 何时询问。沙箱决定命令实际可以访问的内容。
| 模式 | 行为 |
|---|---|
plan | 只读探索;隐藏写入、委托和 MCP 工具 |
ask | 命令、写入、委托和 MCP 需要审批 |
auto | 常规工作区操作自动执行;破坏性命令、网络、主机访问和外部 MCP 仍受限制 |
full | 可信模式,具有不受限制的主机文件系统和网络访问权限 |
默认命令边界为 workspace-write,无网络。当命令需要网络或主机
访问时,TUI 提供 允许一次、本次会话允许此命令 或 拒绝,然后以最小适用访问权限重试
已批准的命令。使用 --network 为运行预授权网络;仅在可信工作区中使用 --permission full。dscode -y 是显式的 YOLO 快捷方式:它
信任该运行的项目资源,跳过工具审批,禁用沙箱,并启用网络。
macOS 使用 Seatbelt。Linux 和 Windows 使用已配置的 Docker 沙箱:
export DSCODE_SANDBOX_IMAGE="your-reviewed-image:tag"
dscode -C ./project --sandbox workspace-write
如果没有可用的沙箱后端,DSCode 会采取失败关闭策略,而不是在主机上静默执行。
DeepSeek 特定行为
- Responses API 是无状态的;DSCode 会从本地会话树中重放消息、推理项和工具结果。
- 适配器会移除不支持的 OpenAI 存储、缓存保留和包含字段。
- 思考模式会移除 DeepSeek 忽略的采样参数,并支持
low、high和max努力程度选择。 apply_patch使用原生的自由格式自定义工具,以避免对大型差异进行 JSON 转义。- 提示词和工具顺序保持稳定,以便 DeepSeek 的自动前缀缓存拥有有用的前缀。
--web添加了 DeepSeek 服务端 Web 搜索,同时不替换本地仓库搜索。
这些转换仅在活动提供商为 deepseek 时运行;其他提供商使用其
原生运行时实现。提供商 API 密钥会从命令、钩子和 stdio MCP
服务器环境中剥离。
可扩展性与自动化
- 分层
AGENTS.md和CLAUDE.md项目指令 - 用户和项目 Agent Skills
- 受信任项目的钩子和 MCP 服务器
- 可重连的后台命令
- 用于 CI 的 JSONL 输出以及完整的 stdin/stdout RPC 模式
- 可重用的
@thinkany/dscode-core包,附带捆绑的无头 RPC 工作进程 - VS Code 扩展位于 editors/vscode
- 使用
safe测试框架自动进行 TypeScript、Pyright、Rust、Go 和 Swift 诊断
图形化客户端和 IDE 集成可以安装 @thinkany/dscode-core,而无需全局 CLI。它暴露了凭据和设置 API,以及一个类型化的 RPC 客户端,该客户端由与终端客户端完全相同的 Agent、工具、权限和本地会话格式提供支持:
import { createDSCodeRpcClient } from "@thinkany/dscode-core/rpc";
const client = createDSCodeRpcClient({ cwd: "/path/to/project" });
await client.start();
client.onEvent((event) => render(event));
await client.prompt("Review this repository");
标准的 @thinkany/dscode tarball 内嵌了其对应的 Core 构建,因此现有的 CLI 安装不会
增加注册表时的依赖,也不会改变其命令、配置和会话行为。
从源码构建
git clone https://github.com/thinkany-ai/dscode.git
cd dscode
corepack enable
pnpm install
pnpm check
pnpm dev -C /path/to/project
有用的验证命令:
pnpm check # typecheck, tests, and production build
pnpm smoke:live # real DeepSeek edit-and-test smoke flow
pnpm acceptance:live # complete real-API feature acceptance
日常开发在 dev 上进行。向 main 进行带版本的合并后,会在 CI 通过后自动创建对应的
GitHub Release 并发布 npm 包。请参阅 Releasing DSCode。
当前边界
- DeepSeek V4 Flash 仍然仅支持文本。对于截图和其他图像 输入,请选择支持视觉的模型。
- ChatGPT-plan 访问权限遵循已登录 账户可用的模型、限制和工作区权限;OpenAI API-key 的使用由 API 平台单独计费。
- VS Code 扩展是一个本地集成,尚未发布到 Marketplace。
- Linux 和 Windows 的隔离取决于您配置的 Docker 镜像。
- DSCode 是一个早期项目。Claude Code 和 Codex 目前在 IDE、云、多模态和 生态系统支持方面更为广泛。
我们并不声称功能清单使 DSCode 普遍更优。该项目旨在通过成功率、时间、成本、安全性和人工干预 来衡量其在真实仓库任务上的表现。