文章摘要
本文围绕Pi、DeepSeekHarness和CodexHarness三个热门开源Harness展开解析,介绍其架构设计、扩展能力和适用场景,并演示如何基于它们构建专属Agent系统。Pi轻量内核、灵活扩展;DeepSeekHarness模块化组装、全链路定制;CodexHarness稳定内核、标准扩展。企业可按需选择,也可结合使用。

当企业需要构建专属的AI编码助手时,通用的AI Coding工具往往难以适配复杂的业务上下文、工程环境和集成需求。定制一套专属的Coding Agent,甚至将其扩展到客服、运维、办公等更多业务场景,已经成为不少团队长期的能力建设方向。而搭建这类系统的最佳实践,是基于具备良好扩展能力的开源Harness底座,再接入企业独有的业务逻辑。

本文将围绕当前热门的三个开源Harness展开解析:Pi、DeepSeek Harness和Codex Harness,深入介绍它们的架构设计、扩展能力和适用场景,后续还会通过实战演示如何基于这些框架构建专属的Agent系统。

为什么选择这三个开源Harness

我们当然可以直接使用大模型API或通用框架手动搭建Agent,但借助成熟的开源Harness可以大幅降低开发成本,同时保证系统的稳定性和可扩展性。这三个框架都满足几个核心条件:源码开放可审计、具备会话管理、循环执行、工具调用和上下文处理等核心能力、提供真正的扩展接口而非仅修改提示词、支持多种灵活的交互和调用方式如SDK、RPC等。而且它们分别代表了三种完全不同的开放思路。

比如针对企业专属的Coding Agent,我们可以通过以下方式快速定制:将企业内部系统的连接预置为内置能力、定制专属的上下文加载机制、修改安全机制符合企业合规要求、替换底层基础设施如文件系统等。这些定制化需求都可以通过这三个框架的扩展能力实现,而且这套模式不仅适用于编码场景,只需替换对应的工具和知识,就能将Agent扩展到其他业务领域。

  • 将企业内部系统的连接变成预置能力
  • 定制专属的上下文加载机制
  • 修改安全机制,以符合企业的合规要求
  • 替换必要的底层基础设施,比如文件系统

Pi:轻量内核,灵活扩展

Pi是一个多层开源框架,我们重点关注其顶层的Pi-Coding-Agent模块。在交互集成方面,它不仅提供了开箱即用的终端编程Agent界面,还支持通过RPC、SDK等方式灵活集成到各类应用中。比如你可以在Web应用中通过SDK调用Pi实现智能体能力,也可以基于RPC接口开发专属的VS Code插件。

在扩展能力上,Pi采用了“小内核、大扩展”的设计理念,将通用的Agent核心功能封装好,通过统一的ExtensionAPI开放全面的扩展能力,包括工具、命令、事件、模型和TUI组件等。默认的Pi-Coding-Agent仅提供了read、write等少数基础工具,没有内置MCP、Subagent等高级功能,将定制空间完全开放给开发者。

你可以通过TypeScript开发扩展插件,注册自定义工具、事件钩子、命令和启动参数,甚至修改默认的TUI界面,轻松打造符合团队需求的专属Agent。例如:

export default function(pi: ExtensionAPI) {
  pi.registerTool(queryCustomer); // 扩展tool
  pi.on("tool_call", auditBeforeCall); // 扩展事件钩子
  pi.setActiveTools(activeTools); // 控制工具启用
  pi.registerCommand(planCommand); // 扩展命令
  pi.registerFlag(sandboxFlag); // 扩展启动参数
}

如果你不喜欢Pi默认的基础终端界面,也可以借助TUI SDK进行个性化定制,比如添加自定义侧边栏等元素。如果需要扩展到更通用的企业Agent场景,你无需关心Agent循环和上下文管理的底层逻辑,只需通过ExtensionAPI修改系统提示、替换企业专属工具、加载领域知识,再开发对应的UI界面,通过RPC或SDK调用即可。

DeepSeek Harness:模块化组装,全链路定制

作为国产的开源框架,DeepSeek Harness(简称DSH)采用了“Everything is a Plugin”的极端设计思路,其核心是Cordis插件管理系统。无论是模型适配、工具注册表、会话日志还是文件系统、Shell执行环境,甚至核心的Agent Loop本身,都是独立的插件。

Cordis内核仅负责插件的加载、卸载、依赖管理和上下文共享,所有业务模块都可以根据需求替换或自定义。与Pi的扩展方式不同,Pi的扩展是在现有Agent外围添加功能,而DSH的插件则直接参与构建整个Agent系统。

Cordis就像一块乐高底板,模型、工具、Agent循环都是独立的积木,通过统一的ctx上下文接口实现数据共享,开发者可以根据依赖关系灵活组装各类模块,甚至替换核心的Agent执行逻辑。你可以通过开发插件注册自定义工具,借助依赖管理机制保证插件的正确加载,社区中已经涌现出大量基于DSH的插件,可以快速组装出适用于不同场景的Agent系统。

例如在DSH中注册自定义工具的代码如下:

import type { Context } from '@deepseek-ai/cordis'
import { defineTool } from '@deepseek-ai/dsh-tools'
export const name = 'tool-hello'
export const inject = ['tools']
export function apply(ctx: Context) {
  ctx.tools.register(defineTool({
    name: 'hello',
    description: '向指定的人问好',
    parameters: ...,
    output: ...,
    async execute({ name }) {...},
  }))
}

这里的关键是inject参数,它声明了插件依赖的服务,只有当依赖的服务可用时,插件才能正常激活。在DSH中,插件的依赖管理是核心特性之一,所有的服务包括工具注册服务本身都是插件,真正实现了“万物皆插件”的设计理念。

Codex Harness:稳定内核,标准扩展

OpenAI开源的Codex Harness基于Rust实现,提供了成熟稳定的Agent核心能力,包括Agent循环、流式事件处理、上下文管理、工具编排、会话恢复以及沙箱、权限和审批等企业级功能,和Pi-Coding-Agent的定位类似,但在扩展方式上有所不同。

Codex没有提供类似Pi的深度自定义API,而是基于现有标准提供扩展能力:你可以通过AGENTS.md注入项目规则和领域知识,通过Skills封装可复用的流程和脚本,通过Hooks在工具调用、会话结束等节点执行自定义逻辑,通过MCP接入企业内部数据和业务工具,还可以将这些能力打包为Plugin进行分发。

Codex提供了多种交互和集成方式:Codex exec适合脚本、CI和一次性任务,对应Pi的终端界面;Codex SDK适合在程序中启动和恢复任务,对应Pi的SDK调用;App Server适合深度嵌入GUI、IDE或企业系统,对应Pi的RPC调用,且提供了更完整的能力。

如果这些标准扩展仍无法满足需求,你也可以直接修改Rust内核,但这会带来更高的维护成本。Codex的优势在于稳定的企业级内核和简洁的扩展方式,适合快速将企业能力接入Agent系统并复用。

三种扩展路线的选择策略

三个框架分别代表了三种不同的定制思路,可以根据团队需求选择合适的底座:

  • Pi:适合希望先获得完整的Agent基础,再围绕其进行深度定制的团队,比如个人开发者或小团队,需要高度自定义的TUI界面、工具和事件逻辑,看重框架的简洁性和灵活的扩展能力,典型应用包括团队专用的编码终端工具、VS Code插件等深度定制的Agent。
  • DeepSeek Harness:适合需要高度自主、可插拔的企业级Agent平台的团队,希望对Agent的所有组件包括核心循环进行灵活定制,需要通过插件组合不同类型的Agent适配多场景,或者需要在本地、容器、云端和企业内网中灵活切换能力实现,典型应用包括企业级统一协作编码平台、多环境适配的Agent系统。
  • Codex Harness:适合希望以最少的开发量快速接入稳定的Agent底座,将企业知识、工具和流程沉淀为标准化能力并在多场景复用的团队,看重沙箱、权限、审批等企业治理能力,典型应用包括企业级Agent平台、办公智能助手等。

在实际应用中,企业不必局限于单一的Harness底座。比如开发场景可以使用Pi或DSH,办公场景可以通过MCP扩展使用Codex,复杂业务流程还可以结合其他工具编排多Agent协同工作。选择开源Harness的核心不是挑选“最好”的框架,而是结合业务需求、团队能力和开发效率,找到最适合的起点。

以上内容不代表本平台立场,仅供读者参考