核心洞察
agent loop 本身就是可替换插件,--dump-config 能打印实际启动树,任何一行都能被 patch 覆盖。无特权 core。
FS 与 subprocess provider 共享同一执行世界——指向远程沙箱,Bash / PTY / LSP 全组迁移,零 provider 分叉。
「Model-visible ⟺ logged」+ 运行时不变量断言:任何一次模型请求都能从 append-only 日志完整重建。
人均 3.3 non-merge commit/天,峰值周 3,542。架构文档原文建议「用 agent 来读这个代码库」。
无认证、无 TLS、无多租户、无 RBAC、无水平扩展、无 Dockerfile。官方原文:部署加固「刻意超出 dev-facing v1 范围」。
64 天龄 + 单日发 5 个 rc + 官方承诺破坏兼容。现在锁 API ≈ 锁一个每周重写 20% 的目标。
数据可视化
每周提交量分布
2026-W24 → W33持续加速后进入高位平台;W31 峰值 3,542。W33 为未完成周。
月度提交占比
近 30 天贡献了全部历史的 82%。
贡献者分布 Top 14
non-merge commitsTop-1 占 33.7%,Top-3 占 57.5%,Top-10 占约 88%。
多维评分雷达
满分 5工程质量与架构满分,成熟度与企业级触底——这是本项目的全部矛盾。
项目概览
| 属性 | 信息 |
|---|---|
| 名称 | DeepSeek Harness(CLI 名 dsh) |
| 定位 | DeepSeek 官方开源的 agent harness(智能体运行时框架),「一切皆插件」 |
| 官网 / 文档 | 仓库内 VitePress 站点(website/,GitHub Pages 部署) |
| GitHub | github.com/deepseek-ai/deepseek-harness |
| License | MIT(Copyright 2026 DeepSeek),自首个 commit 起生效 |
| Stars | 20,731(2026-08-13 实测) |
| Forks | 需核实(GitHub API 限流) |
| npm 包 | @deepseek-ai/dsh,latest 0.1.0-rc.6,共 6 个版本 |
| npm 首发 | 2026-08-10 |
| 首次提交 | 2026-06-10(Tianyi Cui,repo init) |
| 项目年龄 | 64 天 ⚠️ |
| 总提交数 | 12,293(non-merge 6,683 / merge 5,610) |
| 已合并 PR | 989 个,PR 编号已到 #2521 |
| Contributors | 32 人(近 30 天活跃 30 人,近 7 天 24 人) |
| 提交频率 | ~192 commits/天(non-merge ~104/天) |
| 最近更新 | 2026-08-13 |
| 成熟度 | Developer Preview,README 明确警告「THERE WILL BE COMPATIBILITY-BREAKING CHANGES」 |
| 代码规模 | 219 个 workspace 包 + 2 个 app + 10 个 vendored 包;~228k 行 TS/TSX(不含测试)+ 766 个测试文件 |
| 底层框架 | Cordis(vendored,~6.5k 行) |
⚠️ 最关键的单一事实:项目从第一行代码到现在只有 64 天。
228k 行代码 + 219 个包 + 5 套 CI 门禁 + 完整双语文档,全部在两个月内建成。
项目解决什么问题
不想从零写 agent loop / 工具管线 / 会话持久化。
现成 CLI agent(Claude Code / Codex CLI)改不动内核。
官方 harness,对 DeepSeek 模型链路优化。
| 痛点 | dsh 的答案 |
|---|---|
| 现有 agent CLI 是黑盒,改内核只能 fork | 无特权 core,所有行为挂在文档化扩展点上 |
| 换沙箱 / 换执行环境要改一堆调用点 | capability seam:换一个 provider,Bash / PTY / LSP 全跟着走 |
| agent 上下文不可复现、无法审计 | Model-visible ⟺ logged:进模型的一切必须能从 append-only session log 重建,并有运行时不变量断言 |
| 不同场景要不同能力组合 | profile + bundle 分层 patch,--dump-config 可查看实际启动树 |
核心价值主张
用配置(cordis.yml patch 层)而非 fork 来改变产品形态。
技术架构
技术栈
| 层级 | 技术选型 |
|---|---|
| 语言 | TypeScript ^6.0.3,strict: true + noImplicitAny,全 ESM |
| 运行时 | Node.js ^22.19.0 || >=24.0.0 |
| 插件框架 | Cordis(vendored 源码,非 npm 依赖)——上下文 / 服务 / 可逆 effect |
| 包管理 | pnpm 11.7.0 workspaces(219 包) |
| 构建 | tsc -b(类型)+ tsdown(运行时 bundle),host / client 双 face |
| 前端 | React + Testing Library,apps/web + 30+ 个 client/ui-* 插件包 |
| 持久化 | SQLite(SCHEMA_VERSION 单调递增)+ JSONL 双 provider |
| 服务端 | 裸 node:http(自研路由注册插件),WebSocket 下行 |
| 原生扩展 | @deepseek-ai/node-addon-landlock-run(Linux Landlock 启动器) |
| Lint / 质量 | oxlint 1.76 + tsgolint、knip、jscpd(克隆检测)、publint、lefthook |
| 测试 | vitest 4.x(unit / e2e / snapshot / web / web-perf / web-stress 六套配置)+ fast-check(property-based) |
| 多语言 SDK | TypeScript(JSON-RPC)+ Python(deepseek-harness-sdk,subprocess + stdio JSON-RPC,自带打包 runtime 二进制) |
架构特点
分层组合(Profile / Bundle / Patch)
空 entry list → 各 bundle 按 dsh.profile.bundles 顺序 patch → profile 的 cordis.patch.yml → $DSH_HOME/cordis.patch.yml → --patch 覆盖层
dsh-base(模型 / 工具 / 持久化 / 沙箱 / 审批 / 设置 / 凭证 / 遥测)是所有 profile 的第一层;dsh-web-app 加浏览器应用,dsh-headless 加一次性 runner(无服务端)。
Turn / Step 循环(全事件化)
turn/start
claim next-step input + 一条排队消息
组装 prompt sections + tool schemas
→ agent/pre-step (waterfall:可 reject / 重写 messages)
step/start
append 已进入的消息为 user/message
从 log 派生模型历史
agent/request → llm/stream → assistant/chunk* → assistant/message
tool/call* → tools/pre-execute → tools/execute → tools/post-execute → tool/result*
step/end
若工具还欠一次请求 / 新输入到达 → 继续下一 step
→ agent/turn-stopping
turn/end
turn/*、step/*、user/message、assistant/*、tool/*是持久化 session 事件agent/pre-step、agent/request、llm/stream、tools/*是 waterfall 事件——监听器必须调next(),否则短路整条链agent/turn-stopping是 serial,无next()
Capability Seam(三角色强制完整)
只有一个角色不算 seam——这条规则被写进 CI 校验。
这是本项目最有价值的设计:FS 和 subprocess provider 共享同一个「执行世界」,把它们指向远程沙箱(如 E2B),Bash、PTY、LSP 全部一起搬迁,零 provider 分叉。
沙箱:跨平台 fail-closed
| 平台 | 机制 |
|---|---|
| Linux | bwrap(优先)→ Landlock(自研 native 启动器) |
| macOS | sandbox-exec / Seatbelt(allow-default + deny file-write* + 写白名单) |
| Windows | ACL restricted-token runner(每 session/workspace 随机私有 temp + 独立 SID + 可撤销 ACE) |
模式:read-only / workspace-write / danger-full-access(仅治理文件效果)。
无可用后端时抛 SANDBOX_UNAVAILABLE,绝不静默降级为不受限执行。
这是很扎实的安全默认值。
架构纪律(写进 CI 的硬规则)
- 所有注册走
ctx.effect()/ctx.on(),插件卸载时自动 unwind - 闭合 union 必须
assertNever;可扩展 union 必须有文档化 default 分支 - 跨边界 id 必须
Branded<B>,不许裸string - 同进程强类型边界禁止加运行时校验(只在 parser/config、queued、model/tool JSON、durable/file、worker、process、wire 边界校验)
- 插件里禁止硬编码可调参数——必须是 cordis.yml 可改的
Config字段 - 生成式文档目录(tool-catalog / config-catalog / module-graph / persistence-catalog / cordis-api / doc-graphs)全部脚本生成 +
--check校验新鲜度,漏文档 = CI 红 - 非平凡改动必须在同一 PR 附带
.agents/notes/决策记录
核心功能
| 功能 | 支持 | 说明 |
|---|---|---|
| Web UI | ✅ | npx @deepseek-ai/dsh web → 127.0.0.1:3080 |
| Headless 一次性任务 | ✅ | dsh --profile headless "task" |
| ACP 协议服务端 | ✅ | 自动化专用(Agent Client Protocol) |
| JSON-RPC SDK | ✅ | TS client + Python SDK |
| MCP | ⚠️ 仅 client | mcp-client;无 MCP server 侧 |
| 文件工具 | ✅ | read / write / edit / read_image / str_replace_editor |
| 搜索 | ✅ | glob / grep(内置 @vscode/ripgrep,无需宿主装 rg) |
| Shell | ✅ | bash(含沙箱)+ pwsh(Windows 方言)+ 持久 PTY terminal_*(6 个工具) |
| LSP | ✅ | ctx.lsp seam + stdio provider |
| Web 检索 | ✅ | DeepSeek / Exa / Perplexity 三家 search provider + http fetch |
| 子 agent | ✅ | subagent / subagent_fork / send_message / interrupt_agent / list_agents / report |
| 后台任务 | ✅ | 统一 ctx.jobs:后台 bash、PTY send、subagent 共用 job_list/output/kill |
| Workflow | ✅ | worker-thread provider + workflow / ralph(固定循环)工具 |
| Plan mode | ✅ | 作为可记录状态,exit_plan_mode |
| Todo | ✅ | todo_write,UI 渲染 checklist |
| Skill | ✅ | skill provider registry + catalog / loader |
| Goal 跟踪 | ✅ | create_goal / get_goal / update_goal,需 human root authority |
| 定时调度 | ✅ | schedule_create/list/delete(session-local 投递) |
| Code Mode | ✅ | run_code——模型写程序调用工具,而非逐个 tool call |
| 会话查询 | ✅ | 5 个只读工具检索历史 session |
| 自修改运行时 | ✅ | cordis_define/run/stop/undefine 等 7 个工具——agent 挂载自己的插件(默认不在任何发行树中,需显式 opt-in) |
| 上下文压缩 | ✅ | compaction seam + basic provider |
| 远程沙箱 | ✅ POC | E2B(fs-e2b / subprocess-e2b) |
| 遥测 | ✅ | session-telemetry + OpenTelemetry provider |
| 工具包总数 | 21 个 tool-* 包 | 见自动生成的 docs/tool-catalog.md |
模型支持
llm-deepseekllm-pi-aillm-retry(重试)token-meter(计量)密钥存 $DSH_HOME/.credentials.yaml,write-only——UI 保存后只回显脱敏描述符,settings 里只留凭证引用。
License 合规性
| 使用方式 | 是否允许 |
|---|---|
| 内部使用 | ✅ |
| 二次开发(内部) | ✅ |
| 二次开发(外部分发) | ✅ 保留 MIT 声明即可 |
| 集成到公司产品 | ✅ 可闭源分发 |
| 对外提供 SaaS | ✅ 无 copyleft |
| 修改后不开源 | ✅ |
| 组件 | License | 状态 |
|---|---|---|
| deepseek-harness 本体 | MIT (Copyright 2026 DeepSeek) | ✅ |
| Cordis(vendored) | MIT (Copyright 2021-present Shigma) | ✅ 已确认 |
| 其余第三方 | 见 THIRD_PARTY_NOTICES.md(15.7KB) | ⚠️ 待法务 |
合规建议
- MIT 是最宽松档位之一,商用无实质限制。义务仅:保留版权声明 + MIT 全文。
- 传递依赖需自查:仓库已有
gen-third-party-notices生成器 +verify-third-party-noticesCI 门禁 +verify-dsh-package-licenses脚本。引入前跑一遍并让法务过一次清单(重点:@vscode/ripgrep、原生 Landlock addon)。 - vendored Cordis:是源码拷贝(pin upstream SHA,本地修改有记录),分发时随产品走。License 兼容(MIT + MIT),无冲突。
- ⚠️ 文档漂移提醒:
AGENTS.md声称 vendored 包private: true,但实测vendor/*/package.json中 0 个标记 private,且存在release-vendor.yml发布流水线——该策略近期已改,合规判断以代码为准。
部署方式
| 方式 | 复杂度 | 适用场景 |
|---|---|---|
npx @deepseek-ai/dsh web | ⭐ 极简 | 个人本机使用,零安装 |
| 源码构建 | ⭐⭐⭐ | 二次开发(pnpm install + build,219 包,首次构建慢) |
| Python SDK 嵌入 | ⭐⭐ | 作为子进程被 Python 应用驱动(stdio JSON-RPC,自带 runtime 二进制) |
| JSON-RPC / ACP 服务 | ⭐⭐ | 被其他自动化系统调用 |
| Docker | ❌ 无 | 仓库内没有任何 Dockerfile |
| K8s / SaaS | ❌ 无 | 无官方部署编排、无托管服务 |
最低配置要求
- Node.js
^22.19 || >=24 - 无外部 DB 依赖(SQLite / JSONL 本地文件)
- 沙箱最佳体验:Linux 装
bubblewrap或 Landlock 内核;macOS / Windows 自带 - 需要
DEEPSEEK_API_KEY(或其他 provider key)
快速启动
npx @deepseek-ai/dsh web # → http://127.0.0.1:3080 dsh --profile headless "run the tests" dsh --profile web --dump-config # 查看实际启动的插件树 dsh plugin --profile <name> add <pkg> # 管理外部插件
企业级特性
最大短板评分 ⭐☆☆☆☆ —— 认证 / TLS / 多租户 / HA 全缺。
| 特性 | 支持 | 说明 |
|---|---|---|
| 用户管理 | ❌ | 只有 anonymous-user-id(匿名标识) |
| 角色权限 RBAC | ❌ | 无 |
| 多租户 | ❌ | 单机单用户模型 |
| SSO / OAuth | ❌ | 仅指模型 provider 侧(Codex OAuth),非产品登录 |
| HTTP 认证 / TLS | ❌ 明确不支持 | webserver README 原文:"No TLS, auth, or origin policy — 绑定非 loopback 地址即暴露给该网络;部署加固刻意超出 dev-facing v1 范围" |
| 网络绑定 | ⚠️ | host 只接受 127.0.0.1(默认)或 0.0.0.0("deliberate network exposure") |
| 审计日志 | ✅ 优秀 | append-only session log + 运行时不变量断言 + SESSION_FORMAT_VERSION;session-query 工具可检索 |
| API 访问 | ✅ | JSON-RPC / ACP / BFF gateway(Typert RPC) |
| 进程沙箱 | ✅ 优秀 | 三平台原生 fail-closed confinement |
| 审批策略 | ✅ | user-approval + permission-presets,工具执行前拦截 |
| 遥测 | ✅ | OpenTelemetry provider |
| 高可用 / 水平扩展 | ❌ | 单进程模型,无集群设计 |
| 凭证管理 | ⚠️ 基础 | 本地 .credentials.yaml + env/.env provider;无 Vault / KMS 集成 |
dsh 目前是「单用户开发者工具 + 可嵌入 SDK」,不是「可直接对外服务的多租户平台」。
若要做内部平台,认证、TLS、多租户、水平扩展全部需自建。好消息是这些都能作为插件挂上去,架构不阻碍;坏消息是工作量不小。
社区与生态
迭代节奏(实测)
| 时间窗 | 提交数 | 占历史 |
|---|---|---|
| 2026-06(首月) | 581 | 4.7% |
| 2026-07 | 8,273 | 67.3% |
| 2026-08(半月) | 3,439 | 28.0% |
| 近 30 天 | 10,088 | 82% |
| 近 7 天 | 2,400 | 19.5% |
团队结构(实测)
| 指标 | 值 | 评价 |
|---|---|---|
| 总贡献者 | 32 | 真实团队,非个人项目 |
| 近 30 天活跃 | 30 / 32 | ✅ 几乎全员在线,无僵尸贡献者 |
| 近 7 天活跃 | 24 | ✅ 持续高投入 |
| Top-1 占比 | 33.7%(Tianyi Cui, 2,252) | 有主导者但不垄断 |
| Top-3 占比 | 57.5% | ⚠️ 中度集中 |
| Top-10 占比 | ~88% | 长尾贡献少 |
| 机器人提交 | 8(dependabot) | 依赖更新自动化已开 |
Bus factor 评估:核心 3 人贡献近六成,但 30 人常态活跃,不存在「作者跑路即死」的单点风险——这比多数 20k stars 的项目健康。
其他生态指标
| 指标 | 情况 |
|---|---|
| GitHub Stars | 20,731(实测) |
| Fork 数 | 需核实(API 限流) |
| 已合并 PR | 989,PR 编号到 #2521 |
| 版本发布频率 | rc.1 → rc.5 在 2026-08-13 单日内全部发出 |
| 文档质量 | ⭐⭐⭐⭐⭐ 同类项目中顶级 |
| 中文支持 | ✅ 完整双语:README / CONTRIBUTING / 全部 docs 有 .zh.md,且 verify-translation-pairing CI 门禁保证不脱节 |
| 中文社区 | ✅ 企微群 + 微信公众号 + Discord |
| 插件生态 | 🌱 起步中——约定 GitHub topic dsh-plugin,目前基本为空 |
| CI 成熟度 | ⭐⭐⭐⭐⭐ 15 个 GitHub workflow + GitLab CI;Windows/Linux/macOS 矩阵;e2e / snapshot / coverage / sandbox / 原生构建全覆盖 |
| Issue 治理 | ✅ issue-lifecycle.yml + issue-policy.yml 自动化策略,且策略本身有单测 |
文档质量单独说明
docs/ 下 60+ 文件,其中 tool-catalog、config-catalog、module-graph、persistence-catalog、cordis-api、doc-graphs、scoped-events 全部机器生成 + CI 校验新鲜度;另有 verify-export-jsdoc(导出必须有 JSDoc)、verify-doc-budgets(文档字数上限)、verify-md-links(死链)、verify-md-wrap、verify-mermaid、verify-doc-refs。
这套工程纪律的完备度,在开源 agent 项目里是异类。
🤖 一个值得注意的信号:项目在用自己开发自己
12,293 commits / 64 天 / 32 人 = 人均每天约 3.3 个 non-merge commit,峰值周 3,542 commits。这个速度对纯人工开发不现实。结合:
- 根目录
AGENTS.md(15.7KB 的 agent 行为契约,CLAUDE.md符号链接到它) .agents/notes/决策记录制度(非平凡改动必须附带)- 架构文档原文:"We recommend using an agent to explore the codebase and understand its architecture."
pnpm run demo:cordis("the agent modifies its own runtime")
这个项目在 dogfooding:用 agent 开发 agent harness。
架构可用性被最严格验证——agent 能改动它,说明扩展点设计确实清晰;文档质量高是因为 agent 需要读文档才能工作。
代码「人类可读性」未必同等受重视;219 包的复杂度对人类新人是真实门槛(项目自己都建议用 agent 来读)。
优劣势分析
✅ 优势
- 架构真的干净——"everything is a plugin" 不是口号;agent loop 本身就是可替换插件,
--dump-config能打印实际树,任何一行都能被 patch 覆盖。 - Capability Seam 是杀手级设计——换执行环境(本地 → E2B 远程沙箱)不需要改任何工具代码,Bash/PTY/LSP/FS 整组迁移。绝大多数 agent 框架做不到。
- 可审计性是架构级保证——"Model-visible ⟺ logged" + 运行时不变量断言,意味着任何一次模型请求都能从日志完整重建。合规、调试、replay 测试都直接受益。
- 沙箱是 fail-closed 的——三平台原生机制,无后端时拒绝执行而非降级。安全默认值比多数同类项目严格。
- 工程纪律工业级——100% per-file 覆盖率门禁、克隆检测、snapshot 回放测试、双语文档校验、生成式文档目录。
- 中文一等公民——不是机翻附赠,是 CI 强制配对的双语。
- MIT + 官方背书——DeepSeek 出品,商用零障碍;vendored Cordis 也是 MIT。
- 多入口——Web UI / headless / ACP / JSON-RPC / Python SDK,嵌入方式灵活。
- 团队投入真实且持续——32 人,30 人近 30 天活跃,2,400 commits/周。
❌ 劣势
- 项目只有 64 天,且 82% 的代码是近 30 天写的——代码仍在剧烈流动。
- Developer Preview,README 明确承诺会破坏兼容——
0.1.0-rc.6,SESSION_FORMAT_VERSION停在 0 且明确声明无兼容承诺,backend 直接拒绝旧磁盘格式。 - 企业级特性几乎为零——无认证、无 TLS、无多租户、无 RBAC、无水平扩展。
- 无容器化——没有 Dockerfile,没有 K8s 编排,生产部署要自己从头做。
- 学习曲线陡峭——Cordis 是小众框架(背后还有一篇学术论文),waterfall 事件、effect 生命周期、profile/bundle/patch 分层、capability seam 三角色……219 个包的心智负担很重。
- 插件生态为空——
dsh-plugintopic 刚起步,几乎没有第三方插件。 - MCP 只有 client 侧——不能把 dsh 当 MCP server 暴露给其他工具。
- 手写文档已出现漂移——
AGENTS.md的packages/目录清单缺少实际存在的client/host/mcp/sandbox/storage/workspace/jobs/goal等十余个组。2,400 commits/周的速度下这是必然的。
⚠️ 潜在风险
| 风险 | 等级 | 说明 |
|---|---|---|
| API 稳定性 | 🔴 高 | 64 天龄 + 82% 代码是近 30 天写的 + 单日发 5 个 rc。AGENTS.md 明写「pre-release 阶段可自由重命名重组,不留兼容层」。现在锁 API ≈ 锁一个每周重写 20% 的目标 |
0.0.0.0 暴露 = 无防护裸奔 | 🔴 高(可控) | 一旦有人为内网共享改绑 0.0.0.0,等于把一个能读写文件、执行任意命令的 agent 无认证暴露给整个网络 |
| 数据无迁移路径 | 🟡 中 | SESSION_FORMAT_VERSION = 0 + 无兼容承诺 = 升级可能丢历史会话 |
| 单厂商依赖 | 🟡 中 | DeepSeek 单一主导,非基金会项目。但 32 人真实团队降低了短期弃坑风险 |
| Cordis 维护责任转移 | 🟡 中 | License 无风险(MIT)。但 Cordis 是个人主导项目(Shigma,550 commits / 5 年),与 dsh(12,293 commits / 2 个月)不是一个量级——这一层的长期维护责任实质已落在 DeepSeek 身上 |
| 手写文档漂移速度 | 🟡 中 | 只信 docs/ 下的生成式目录(tool-catalog / config-catalog / module-graph / persistence-catalog),它们有 CI --check 保鲜 |
| 自修改运行时工具 | 🟡 中 | cordis_* 让 agent 动态定义并运行代码到真实运行时。默认不在任何发行树,但一旦开启 ≈ 给模型 RCE 权限 |
适用场景
✅ 适合
- 学习 agent 架构设计——设计最系统的开源 agent harness,capability seam / 事件分域 / 日志即真相三点值得直接借鉴
- 有专职团队自建 coding agent 产品,需要深度定制内核
- 需要强可审计性的场景(金融 / 合规),session log 可完整重建模型输入
- 需要多执行环境切换(本机 ↔ 远程沙箱 ↔ 容器)的 agent 平台
- DeepSeek 模型深度用户
- 个人开发者本机使用(
npx一条命令)
❌ 不适合
- 想开箱即用——不如直接用 Claude Code / Cursor / Codex CLI
- 要在生产对外提供服务——认证 / TLS / 多租户全缺,且 API 会破坏兼容
- 小团队轻量需求——219 包的复杂度严重过剩,简单需求直接调 API 更划算
- 需要长期数据保存——会话格式无兼容承诺
- 需要 MCP server 能力
- 需要 K8s 部署
竞品对比(简要)
| 对比项 | DeepSeek Harness | Claude Code / Codex CLI | OpenHands | LangChain / LangGraph |
|---|---|---|---|---|
| 定位 | agent 底座框架 | 成品 CLI 工具 | 成品 agent 平台 | 通用 LLM 编排库 |
| 开源 | ✅ MIT | ⚠️ 部分 / 闭源内核 | ✅ | ✅ |
| 可定制深度 | ⭐⭐⭐⭐⭐ 连 agent loop 都可换 | ⭐⭐ 靠 hooks / skills | ⭐⭐⭐ | ⭐⭐⭐⭐ 但无 coding agent 内核 |
| 开箱可用 | ⭐⭐ | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐ | ⭐ |
| 沙箱 | ⭐⭐⭐⭐⭐ 三平台原生 fail-closed | ⭐⭐⭐ | ⭐⭐⭐⭐ 容器 | ❌ 无 |
| 多租户 / 企业 | ❌ | ⚠️ 企业版 | ⭐⭐⭐ | N/A |
| 生态 | 🌱 空 | ⭐⭐⭐⭐⭐ | ⭐⭐⭐ | ⭐⭐⭐⭐⭐ |
| 成熟度 | rc.6,64 天 | 成熟 | 成熟 | 成熟 |
| 中文 | ⭐⭐⭐⭐⭐ | ⭐⭐ | ⭐⭐ | ⭐⭐ |
差异化定位
dsh 不与 Claude Code 竞争「好不好用」,它竞争的是「能不能被改造成你自己的产品」。它更像 agent 领域的 VS Code 之于编辑器——本身是产品,但真正价值在插件模型。
结论与建议
评估结论
| 维度 | 评分 | 说明 |
|---|---|---|
| 架构设计 | ⭐⭐⭐⭐⭐ | seam / 事件分域 / 日志即真相,教科书级 |
| 工程质量 | ⭐⭐⭐⭐⭐ | 100% 覆盖门禁、生成式文档、15 条 CI 流水线 |
| 文档质量 | ⭐⭐⭐⭐⭐ | 双语 + 机器校验新鲜度;仅手写部分有漂移 |
| 功能完整度 | ⭐⭐⭐⭐☆ | 21 类工具、多入口;缺 MCP server |
| 社区活跃度 | ⭐⭐⭐⭐⭐ | 30/32 贡献者近 30 天活跃,2,400 commits/周 |
| 版本发布频率 | ⭐⭐⭐⭐⭐ | rc.1→rc.5 单日发出 |
| License 友好度 | ⭐⭐⭐⭐⭐ | MIT + MIT(Cordis),商用零障碍 |
| 企业级特性 | ⭐☆☆☆☆ | 认证 / TLS / 多租户 / HA 全缺 |
| 部署难度 | ⭐⭐☆☆☆ | npx 试用极简;生产部署无 Docker/K8s 支持 |
| API 稳定性 | ⭐☆☆☆☆ | rc 阶段,官方承诺会破坏兼容 |
| 项目成熟度 | ⭐☆☆☆☆ | 64 天龄,82% 代码写于近 30 天 |
| 综合推荐度 | ⭐⭐⭐☆☆ | 架构 5 星,成熟度 1 星;结论完全取决于用途 |
分场景建议
| 用途 | 建议 | 理由 |
|---|---|---|
| 学习 / 架构借鉴 | ✅ 强烈推荐,立刻投入 | 读 docs/architecture.md + docs/capability-seams.md + AGENTS.md + .agents/notes/。哪怕不用它,seam 设计和「model-visible ⟺ logged」原则值得移植到自己项目。额外价值:能看到一个团队在 64 天内如何用 AI 建成 228k 行工业级代码库 |
| 个人本机使用 | ✅ 推荐试用 | npx @deepseek-ai/dsh web,零成本 |
| 技术预研 / POC | ✅ 推荐 | 用 headless + Python SDK 跑通闭环,评估 1–2 周 |
| 团队内部工具(非关键路径) | ⚠️ 谨慎,可小范围试点 | 接受升级可能丢会话、接受跟着 rc 版本走 |
| 生产环境 / 对外服务 | ❌ 暂不推荐 | 三条硬阻断:① 无认证/TLS ② API 明确会 breaking ③ 无容器化部署方案 |
| 作为产品底座二次开发 | ⚠️ 建议观察等待 | 具体触发条件:连续 4 周提交量回落到 <500/周。目前 1,213–3,542/周的波动说明架构仍在收敛过程中,不是稳定态 |
如果决定引入,必须做的事
- 锁版本——pin 到具体 rc 版本;升级前跑全量回归;
SESSION_FORMAT_VERSION变更时准备数据迁移或接受丢弃 - 绝不裸奔
0.0.0.0——必须前置 nginx 反代 + 认证;默认127.0.0.1保持不变 - 法务过一遍
THIRD_PARTY_NOTICES.md(Cordis 已确认 MIT,无需再查) - 不要开
cordis_*自修改工具,除非有明确隔离方案 - 沙箱按平台验证可用——Linux 记得装
bubblewrap,否则SANDBOX_UNAVAILABLE会直接拒绝执行 - 投入 1 名工程师用 2–4 周吃透 Cordis——隐性成本,219 包不是读一天能懂的
- 只信生成式文档——手写文档(含
AGENTS.md)在当前迭代速度下必然滞后
重新评估的触发条件
参考与方法论
A. 参考链接与关键内部文档 ▼
| 文件 | 内容 |
|---|---|
docs/architecture.md | 架构总览(必读) |
docs/capability-seams.md | 能力接缝图谱 |
docs/cordis-primer.md / docs/cordis-tutorial/ | Cordis 入门 |
docs/tool-catalog.md | 全部模型可见工具的 JSON Schema(生成) |
docs/config-catalog.md | 全部可配置字段(生成) |
docs/testing.md | 测试策略与 key 政策 |
docs/defensive-patterns.md | 生命周期 / 并发 / 子进程 / 拆卸模式 |
AGENTS.md | agent 行为契约(也是理解项目纪律的最佳入口) |
.agents/notes/ | 决策记录(含已归档) |
B. 数据采集方法(可复现) ▼
# 完整历史(原 checkout 是 depth=1 浅克隆) git fetch --unshallow --tags origin # 统计 git rev-list --count HEAD # 12293 git shortlog -sn --all --no-merges # 32 authors git log --format='%ad' --date=format:'%Y-%m' | sort | uniq -c git log --merges --format='%s' | grep -oE '#[0-9]+' | sort -u | wc -l # 989 # 规模 find packages apps -path '*/src/*' \( -name '*.ts' -o -name '*.tsx' \) \ -not -name '*.spec.ts' | xargs wc -l | tail -1 # 228491 # Stars(GitHub API 限流时的替代) curl -sL https://github.com/deepseek-ai/deepseek-harness \ | grep -oE 'aria-label="[0-9,]+ users starred[^"]*"' # 20731
C. 未核实项(4 项) ▼
| 项 | 状态 | 原因 |
|---|---|---|
| Fork 数 | ❌ 缺 | GitHub API 限流,gh auth 未登录(401) |
| GitHub 仓库公开日期 | ❌ 缺 | git 历史从 2026-06-10 起,但何时 public 未知;npm 首发 2026-08-10 可作下界 |
| Issue 响应速度 / PR 平均合并时长 | ❌ 缺 | 需 GitHub API |
| 实际运行表现(性能 / 稳定性 / 易用性) | ❌ 缺 | 本次为静态代码分析,未实跑 |
补齐 Fork / Issue 数据需 gh auth login。