ITADN
thinkany-ai/dscode · 文件 下载 ZIP
文件最后提交记录最后更新时间
README.md
以下内容由 AI 翻译,如有问题请点此提交 issue 反馈

DSCode block-whale logo

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.mdCLAUDE.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身份验证
DeepSeekdeepseekAPI 密钥
OpenAI Codexopenai-codex符合条件的 ChatGPT 计划
OpenAIopenaiAPI 密钥
AnthropicanthropicClaude 账户或 API 密钥
OpenRouteropenrouterOpenRouter 账户或 API 密钥
Z.AI Coding PlanzaiAPI 密钥
Kimi For Codingkimi-codingKimi Code 账户或 API 密钥
MiniMaxminimaxAPI 密钥
xAI / GrokxaiGrok/X 账户或 API 密钥

别名 kimigrok 可被 /login--provider 接受。

在配置 DeepSeek 时,DSCode 会对 API 密钥进行掩码处理,然后提供一个可选的 API 基础 URL。按 Enter 键使用 https://api.deepseek.com,或输入一个兼容 DeepSeek/OpenAI 的网关 URL。默认情况下,凭据 使用操作系统密钥环;~/.dscode/auth.json 是无头主机 或密钥环服务不可用时的仅限所有者回退方案。端点存储在 ~/.dscode/config.json 中,权限为 0600 。解析顺序为 --base-urlDEEPSEEK_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" }
}

凭证模式为 autokeyringfile。将历史记录持久化设置为 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显示或更改 planaskautofull 访问权限
/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 fulldscode -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 忽略的采样参数,并支持 lowhighmax 努力程度选择。
  • apply_patch 使用原生的自由格式自定义工具,以避免对大型差异进行 JSON 转义。
  • 提示词和工具顺序保持稳定,以便 DeepSeek 的自动前缀缓存拥有有用的前缀。
  • --web 添加了 DeepSeek 服务端 Web 搜索,同时不替换本地仓库搜索。

这些转换仅在活动提供商为 deepseek 时运行;其他提供商使用其 原生运行时实现。提供商 API 密钥会从命令、钩子和 stdio MCP 服务器环境中剥离。

可扩展性与自动化

  • 分层 AGENTS.mdCLAUDE.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 普遍更优。该项目旨在通过成功率、时间、成本、安全性和人工干预 来衡量其在真实仓库任务上的表现。

许可证

MIT