跳到主要内容

AI 编程 Harness:架构、安全与 Pi

模型负责提出下一步动作,而 Harness(控制层)负责让这个动作可执行、有边界、可观测且可恢复。它既不是模型本身,也不仅仅是聊天界面,而是连接模型、代码仓库、终端、权限体系与验证流程的控制中枢。

最小职责集

层级职责
循环 (Loop)交替处理模型回合、工具调用、结果反馈及停止条件
上下文 (Context)筛选指令、历史对话、文件内容及检索到的证据
工具 (Tools)校验参数、执行调用并返回结构化结果
策略 (Policy)强制执行范围、权限、审批、预算及安全边界
状态 (State)保存任务进度、产物及可恢复的检查点
可靠性 (Reliability)处理超时、重试、幂等性、取消及失败情况
可观测性 (Observability)保留追踪记录、日志、Token/成本数据及工具证据
评估 (Evaluation)在代表性任务上测试结果,而非仅评判文本质量

如果一个 Agent 只是循环直到模型说“完成”,那它只有编排能力,缺乏可靠的控制层。

证据边界

上述架构职责是综合总结。Pi 的行为依据文档与源码核验;DeepSeek Harness 的比较仍归因于正文链接的视频。这些来源能说明设计和已记录的功能,不能证明哪种 Harness 更可靠或更实用。

本文偏向终端编程场景,对 IDE 协作、浏览器/计算机使用 Agent、非英语工作、组织治理和非编码自动化涉及较少。阅读主张时请结合证据与偏差;当前产品选择则统一查看带日期的编码 Agent 评测

内部控制系统

三个设计要点使控制层具体化:

  • 代理循环模式 区分短会话回合、新鲜上下文循环、实现-验证周期及评估器-优化器工作流。每个循环都需要外部成功谓词和硬性预算。
  • 上下文工程 将模型窗口视为变化的工作集,而计划、证据和检查点则持久保存在转录记录之外。
  • 工具契约 明确副作用、重试、审批和部分失败,而不是让模型从函数名中推断。

这些层级对小规模本地模型尤为重要:缩短迭代周期、缩小工具集、返回有界输出,并让确定性检查决定是否需要下一轮交互。

Pi:可编程的最小 Harness

Pi 自称是一个最小终端编程 Harness。它将模型调用、代理循环、工具执行、可分支会话及终端界面保留在核心中,而将特定工作流行为留给可组合的资源。默认情况下,模型仅接收 readwriteeditbashgrepfindls 也是内置工具,但必须显式选择或通过配置启用。

除了交互式 TUI,Pi 还支持单次 -p 输出、JSON 事件流、stdin/stdout RPC 以及用于在 Node.js 应用中嵌入代理的 SDK。提供商可切换。会话存储为可分支的 JSONL 树;/tree/fork/clone/compact 涵盖文件内探索、独立会话及上下文压缩。

以下 Pi 细节基于 2026-08-28 对照本地安装的 Pi 0.84.3 文档核实。它们是版本化的产品事实,而非永久兼容性承诺。

各定制层级的所有权

层级典型入口点适合放置内容勿混淆为
项目上下文AGENTS.md, CLAUDE.md, .pi/SYSTEM.md稳定规则、路径边界、验收命令插件或沙箱
提示模板.pi/prompts/review.md/review可重复的参数化起始提示自动执行的工作流
技能.agents/skills/*/SKILL.md/skill:name按需程序、脚本和参考权限边界或独立进程
扩展.pi/extensions/*.ts新工具、命令、事件策略、UI、提供商及会话行为本质上安全的“轻量插件”
Pi 包pi install ..., pi config通过 npm、Git 或本地路径分发扩展、技能、提示和主题隔离或可信签名
SDK / RPCcreateAgentSession(), pi --mode rpc嵌入、测试或跨语言进程集成普通仓库的强制层级

全局资源通常位于 ~/.pi/agent/;项目资源位于 .pi/.agents/skills/。提示扩展文本。技能使用渐进式披露,默认上下文中仅保留其名称和描述。扩展直接更改 Harness 行为。当缺失的是方法时优先选择技能,当是复用输入时选择提示,仅在确实需要新工具、事件钩子或 UI 时才使用扩展。

Pi 已核验的请求准备、Steering、Follow-up、压缩与会话流程集中在有界 Agent 循环中。会话分支只改变模型看到的对话,不会恢复磁盘文件;本页后面的命令仅作为操作参考。

扩展:Pi 的插件层

扩展是由 Pi 直接加载的 TypeScript 模块。它可以:

  • 注册模型可调用的工具和用户斜杠命令;
  • 挂钩模型回合、工具调用及结果、模型变更和会话生命周期事件;
  • 阻止或重写危险调用,并添加受保护路径或审批 UI;
  • 自定义压缩、会话状态、终端组件和渲染;
  • 注册提供商,或实现 MCP、子代理、计划模式和沙箱集成。

最后一点很重要:示例或第三方包可以实现这些功能,但它们不是核心默认值。较小的核心允许竞争设计,同时让安装者负责其策略、维护和恢复行为。

自动发现的扩展位于 ~/.pi/agent/extensions/ 或受信任项目的 .pi/extensions/;更改后运行 /reload。使用 pi -e ./extension.ts 进行临时实验而无需安装。Pi 包可以一起分发扩展、技能、提示和主题:

pi install npm:@scope/package@1.2.3 # 固定版本
pi install ./local-package -l # 项目范围
pi list
pi config # 启用或禁用单个资源
pi update --extensions

扩展以当前用户的权限执行任意代码,技能可能指示模型运行捆绑脚本。因此,包是分发单元,而非安全边界。安装前阅读源代码和依赖项,必要时固定版本,并仅启用工作流所需的资源。

日常使用

普通项目第一天不需要大型控制平面:

小项目可能只使用所需文件:

  • AGENTS.md 用于规则和验收命令;
  • .pi/prompts/review.md 用于可选的简短重复提示;
  • .agents/skills/release/SKILL.md 用于可选的可复用程序;
  • .pi/extensions/policy.ts 仅在主机级策略需要代码时使用。

常见启动模式:

cd my-project
pi --name "parser repair" # 交互式会话
pi -c # 继续最新会话
pi --no-session -p "Summarize this repository" # 临时单次调用

# 仅暴露只读工具进行审查
pi --no-session --tools read,grep,find,ls -p "Review the change"

# 跳过发现并仅加载待测资源
pi --no-extensions -e ./.pi/extensions/policy.ts
pi --no-skills --skill ./.agents/skills/release/SKILL.md

值得记住的首个交互式命令:

命令用途
/model切换模型
/name, /session命名会话并检查其文件、Token 和成本
/tree在同一 JSONL 文件中回访先前节点并分支
/fork, /clone将早期点或活动分支复制到新会话
/compact旧上下文的有损压缩;完整记录仍保留在会话文件中
/reload重新加载扩展、技能、提示、主题和上下文文件
/skill:name, /template显式加载技能或展开提示模板

安全基线

Pi 的项目信任决定是否加载项目 .pi 设置、资源和可执行扩展。它不是文件系统或网络沙箱。非交互模式不显示内置的项目信任提示,因此自动化必须做出明确的 --approve 决策,而不是默认永久信任任意仓库。

保守的起点是:

  1. 在信任项目资源之前,检查 Git 状态、AGENTS.md 和允许的写入范围;
  2. 审查工作时使用 --tools read,grep,find,ls,仅在需要写入时扩大工具集;
  3. 在容器或 VM 中运行不熟悉的仓库或危险命令,将凭据、Docker 套接字和不相关目录留在外部;
  4. 使用 --no-extensions--no-skills 及相关标志构建可复现的最小资源集;
  5. 审查并固定第三方包,将每个扩展视为具有完全用户权限的代码;
  6. 通过测试、Lint、差异和最终进程状态判断完成,而非模型的“已完成”声明。

这是 Pi 与更产品化 Harness 的核心交换:核心更小且更易变形,但安全策略和工作流质量不会自动出现。

Pi 和 DeepSeek Harness:谁承担复杂度

Pi 介绍视频DeepSeek Harness 视频里的系统乍看很像:都能换模型、接工具、加插件。真正值得比较的不是功能多少,而是复杂度什么时候出现、由谁处理。

Pi 从小核心开始。需要计划模式、子 Agent、MCP 或特殊界面时,使用者再把对应能力组装进来。默认状态因此容易理解,但兼容、权限和维护也由使用者负责。

DeepSeek Harness 视频则从 “Everything is a plugin” 出发,让模型、工具、界面和工作流共享一个组合面。这有利于团队复用反复出现的流程,同时也把依赖、版本和排错工作提前放进插件平台。

两种方式都没有消灭复杂度。Pi 推迟复杂度,并把它交给搭建工作流的人;视频展示的 DeepSeek Harness 则把更多复杂度集中到平台。对我现在的工作流,Pi 应该继续保持小而清楚。只有反复出现、已经稳定的能力,才值得固化成统一组件。等到这些组件多到难以分别维护时,插件工作台才真正有意义。

产品比较归 Frontier

本页只把 Pi 和视频中的 DeepSeek Harness 当作设计案例。带日期的跨产品矩阵、选型建议与复测协议统一放在如何选择 AI 编程 Agent,这样更新产品事实时不会改动 Harness 的持久模型。

实用设计顺序

  1. 定义结果和外部成功检查。
  2. 暴露最小的有用工具集。
  3. 将只读操作与写入和不可逆操作分开。
  4. 在对话记录之外保存产物和证据。
  5. 添加时间、Token、重试和并发限制。
  6. 在保护敏感数据的前提下追踪模型回合与工具调用。
  7. 更改默认模型、Harness 或推理级别前,先重放有代表性的任务。

质量门属于 Harness 和工作流,模型可以替换。更强的模型也许能减少重试,但不能取代证据、权限和端到端检查。变化较快的模型与定价信息放在模型与 API 雷达,公开测试结果和工具故障模式则记录在编码智能体评估

探索关联打开关联网络