Pi / 07

Pi vs Claude Code vs DSH:三种 Harness 哲学的工程对比

为什么这个问题值得关注

选择 Agent 框架不是选择功能列表,而是选择一组假设。每个框架的核心假设决定了它在什么条件下表现最好、什么条件下会让你痛苦。把 Pi、Claude Code 和 DeepSeek Harness 放在一起比较,不是为了给出”哪个更好”的结论,而是为了让你在评估时知道该问什么问题。

三种哲学定位

Pi:最小内核 + 容器化安全 + 扩展生长。 核心判断是 Agent 框架应该尽可能小,安全交给基础设施,功能交给社区。内核的简洁性是第一优先级。

Claude Code:内置权限 + 沙箱 + 产品完整性。 核心判断是安全和可用性应该开箱即用,用户不应该为了获得基本安全保障而额外搭建基础设施。产品体验的完整性是第一优先级。

DeepSeek Harness(DSH):可组合运行时 + 策略平面 + 一切皆插件。 核心判断是 Agent 运行时的每个组件都应该可替换,控制流本身可以被重新编程。可组合性是第一优先级。

三个第一优先级互相冲突:追求最小内核就做不到产品完整性,追求产品完整性就做不到一切可替换,追求一切可替换就做不到最小内核。这不是优劣问题,是工程方向选择。

横向对比

维度 Pi Claude Code DSH
安全模型 不内置,依赖外部容器化 内置权限系统 + 沙箱模式 策略平面(Approval + Sandbox + Policy)
扩展机制 Extension + Skill + Package Skills + MCP + Hooks Cordis 插件树,一切皆插件
Provider 支持 多 Provider 统一(pi-ai) Anthropic 优先 LLM Seam 适配器注册
运行时可替换性 低——换扩展但 Loop 不变 中——MCP 插拔,核心 Loop 固定 高——Loop 本身可替换
内核复杂度 低(四包,职责清晰) 中(权限 + 沙箱 + 会话管理) 高(Cordis 依赖注入 + 策略引擎)
裸机安全性 有(权限检查 + 沙箱) 有(Approval 插件默认启用)
会话恢复 不内置 内置 内置(Session Log)
IDE 集成 无(终端原生) VS Code 集成 Web + headless
社区规模 ~95k stars 闭源产品,用户量大但无 star 指标 ~178k stars
学习曲线 低(概念少) 中(需理解权限规则) 高(Cordis + 策略 DSL)

安全模型对比展开

三种方案对”Agent 执行了危险操作”的应对策略完全不同:

Pi 的回答: 那是容器的问题。Agent 可以在容器内做任何事,但容器边界保证损害不会扩散到宿主机。运行时零开销,但需要正确配置容器。

Claude Code 的回答: 在执行前拦截。每个工具调用都经过权限检查,高风险操作需要用户确认。运行时有延迟,但裸机也安全。

DSH 的回答: 由策略决定。Approval 插件可以自动放行、询问用户、或直接拒绝,策略规则可以运行时热加载。最灵活,但规则编写和维护成本最高。

选择依据不是”哪个更安全”,而是你的安全需求的表达形式:

  • 边界固定且粗粒度 -> 容器化(Pi)
  • 需要开箱即用且细粒度 -> 内置权限(Claude Code)
  • 需要可编程且动态变化 -> 策略平面(DSH)

扩展机制对比展开

Pi 三层抽象: Extension 是最小能力单元(一个工具、一个命令),Skill 是按需加载的复合能力,Package 是分发单元。层次清晰,但没有官方审核。

Claude Code: Skills 定义可复用能力,MCP 提供标准化工具协议,Hooks 允许在生命周期节点注入自定义逻辑。扩展能力受限于框架暴露的接口,但质量有保障。

DSH Cordis 插件: 一切皆插件,包括 Agent Loop 本身。插件之间通过依赖注入连接,可以拦截和修改任何行为。灵活性最高,但插件之间的交互复杂度也最高——两个插件可能在不知情的情况下互相冲突。

Provider 支持对比

Pi: pi-ai 统一适配 OpenAI、Anthropic、Google、Bedrock,切换 Provider 只改配置。对多模型策略(用便宜模型做初筛、贵模型做精细操作)支持良好。

Claude Code: Anthropic 优先,与 Claude 模型深度集成。模型能力(如 extended thinking)可以被框架层面利用。换 Provider 意味着放弃这些深度集成。

DSH: LLM Seam 适配器可注册任意 Provider,通过 Seam 接口统一消费。适配器本身是插件,可以热替换。支持多 Provider 混用的同时保持了可替换性。

不存在”最好的” Harness

场景决定选择:

个人开发者快速实验: Pi。启动成本低,概念少,容器可选(本地实验时裸机跑也行,风险自担)。不需要理解权限系统或策略 DSL,装上就能用。

企业生产部署需要审计: Claude Code 或 DSH。Pi 的容器化方案可以做到安全,但缺少框架层面的审计日志。Claude Code 内置操作记录,DSH 有 Decision Log。合规需要的是可追溯性,不只是隔离。

研究可替换控制流和自进化: DSH。当你的研究目标是”Agent Loop 本身应该长什么样”时,Pi 和 Claude Code 的固定 Loop 是限制。DSH 允许你替换循环逻辑本身。

需要多 Provider 切换: Pi 或 DSH。Claude Code 可以通过 MCP 接入其他模型,但核心体验为 Claude 优化。如果你的场景需要在 GPT-4o、Claude、Gemini 之间动态切换,Pi 的 pi-ai 或 DSH 的 LLM Seam 是更自然的选择。

团队 TypeScript 熟练且有容器化平台: Pi 的最佳适配场景。内核简单意味着容易理解和定制,容器化平台意味着安全假设成立。

团队需要最少的基础设施依赖: Claude Code。不需要 Docker,不需要 VM,不需要策略配置。安装后权限系统自动生效。

三者的共同趋势

尽管哲学不同,三个框架都在向同一个方向收敛:

MCP 正在成为工具层的通用协议。 Pi 有 pi-mcp-adapter,Claude Code 原生支持 MCP,DSH 通过插件接入 MCP。工具定义和调用的标准化意味着工具层正在解耦——你为一个框架写的 MCP server 可以在另一个框架中使用。

Skill 作为可移植能力单元。 pi-skills 已经实现了跨 Claude Code、Codex CLI、Amp、Droid 的兼容。这暗示了一个趋势:框架的差异化会从”能用什么工具”转向”如何编排工具”。

安全模型的分层化。 三者都在从单一安全方案走向分层:网络层隔离 + 文件系统限制 + 操作审批 + 策略规则。差异只是哪些层由框架负责、哪些由外部负责。

选择框架时应该问的问题

不要问”哪个框架最好”。问这些:

  1. 你的运行环境是什么?(容器化平台 / 裸机 / 混合)
  2. 你的安全需求的粒度是什么?(整体隔离 / 目录级控制 / 操作级审批)
  3. 你需要对接几个模型 Provider?(单一 / 多个 / 动态切换)
  4. 你的团队愿意承担多少框架复杂度?(低 / 中 / 高)
  5. 你需要框架层面的审计能力吗?(合规要求 / 不需要)
  6. 你需要修改 Agent Loop 本身吗?(固定够用 / 需要实验 / 需要完全可替换)

这六个问题的答案组合会自然指向某个框架。如果前三个答案是”容器化 + 整体隔离 + 多 Provider”,Pi 是最匹配的。如果是”裸机 + 操作级审批 + 单 Provider”,Claude Code 更合适。如果是”混合 + 动态策略 + 需要改 Loop”,DSH 是唯一选择。

一个常见的误解:框架可以混用

实际工程中,团队经常问”能不能同时用两个框架”。答案是:工具层可以共享,控制层不能。

MCP server 是可以共享的——一个 MCP server 同时被 Pi Agent 和 Claude Code 调用没有问题。pi-skills 跨框架兼容也证明了工具层的互操作性。

但 Agent Loop、上下文管理、会话策略这些控制层的逻辑不能混用。你不能在 Pi 的 Loop 里插入 Claude Code 的权限检查,也不能在 DSH 的 Cordis 插件树里运行 Pi 的 Extension。控制层是框架的核心差异化,也是锁定所在。

务实的建议:选一个框架作为主控制层,用 MCP 共享工具。如果未来需要切换框架,MCP server 可以带走,Agent Loop 的定制逻辑需要重写。

小结

Pi、Claude Code 和 DSH 不是同一条路上的三个版本,而是三条不同的路。Pi 选择了极致的简洁,代价是安全需要外部保障。Claude Code 选择了产品完整性,代价是灵活性受限于框架设计。DSH 选择了极致的可组合性,代价是学习曲线和维护成本。

理解这些 tradeoff 比选择一个”正确答案”更有价值。真实的工程决策很少是”用 A 还是 B”,更多是”在我的约束条件下,哪个方案的假设最不容易崩塌”。


返回模块首页:Pi Agent Framework