ELI5 · 说人话

三个工作台

同一个模型 Claude Code pi DeepSeek Harness

模型是租来的脑子,三家都能用。
真正不一样的,是脑子外面那套手、眼睛和闸门

这套东西叫 harness(工作台 / 挽具)。它决定 AI 能不能真把活干完。

AGENT = MODEL + HARNESS

先分清谁是谁

脑子只负责想,台子负责让它能动

你把模型想成一个很聪明、但被关在小黑屋里的人。他看不见你的文件,摸不到你的键盘,也记不住昨天说过什么。

harness 就是给他开一扇窗、递一双手、放一个记事本,再在门口安一道闸门。然后让这套动作一圈一圈转起来

装料 拼上下文 问脑子 调一次模型 派活 它想用工具 过闸门 准不准干 真动手 拿回结果 转一圈叫一步,转到没活可干为止

点一下方块可以看清每一站

1.6%

有人把 Claude Code 拆开数过:真正"让 AI 做决策"的代码只占约 1.6%,剩下 98.4% 全是搬砖的基础设施——压缩、权限、日志、工具、恢复。
harness 才是工作量的大头。

谁都躲不掉

每张台子都要回答四道题

三家的差别,其实就是这四题答得不一样。看懂这四题,后面全是细节。

Q1 谁来想?

是让模型自己想,台子只管盯着;还是台子先画好流程图,模型只在格子里填空。

Q2 几台发动机?

命令行、SDK、编辑器插件……是共用同一个循环,还是各写一套各自跑偏。

Q3 默认多小心?

开箱就拦着你,还是开箱就放开、让你自己去搭围栏。

Q4 什么最不够用?

几乎都是上下文窗口。装不下了怎么办,是每张台子最费心的地方。

01 / Claude Code

一条流水线,七道闸门

这是"帮你都装好"的那一派。全部入口共用同一条主循环——你在终端敲、用 SDK 调、在编辑器里点,走的是同一条管子。

模型想干 真的执行 七道全过才算数,任何一道说不行,就到此为止
1
每次开口前,先给上下文瘦五次身

按从便宜到贵的顺序跑:卡住单条大小 → 剪掉老历史 → 微压缩 → 只在读的时候折叠 → 最后才让模型自己写一份摘要。摘要是最后的手段,因为它一定会丢东西。

2
扩展有四档,越往上越贵

钩子(几乎不占上下文)→ 技能(占一点)→ 插件(占中等)→ MCP 外部工具(最占)。同一件事能用便宜的档位做,就别上贵的。

3
子 agent 是"另开一个窗口"

它自己有一份独立上下文,自己写自己的日志,干完只把一段摘要交回来。代价大约是 7 倍 token,换来主窗口干干净净。

4
CLAUDE.md 是"建议",权限规则才是"法律"

写在记忆文件里的规矩,模型是大概率照做;真要卡死一件事,得靠权限规则。这条分得很清楚,别指望写一句话就能杜绝。

5
记忆不搞向量库

就是一堆你能看见、能改、能提交进 git 的 markdown 文件,用的时候扫一遍文件头,最多挑 5 个塞进去。

好在哪

  • 开箱即用,安全默认值最厚
  • 一条循环通吃所有入口,行为一致
  • 上下文快满时有五层兜底,不容易直接崩
  • 会话就是纯文本日志,人能读、能进 git

代价

  • 循环本身你动不了,只能在它给的口子上挂东西
  • 闸门层数多,想放开时也要绕好几道
  • 子 agent 贵,滥用直接烧 token
  • 核心是闭源的,遇上不合口味的行为只能等官方
02 / pi

一把小刀,缺的自己焊

这一派的态度很直接:核心越小越好,别的功能你自己装。它把一串别人当卖点的东西,明明白白地写在文档里说"我不做"。

小核心 循环 + 工具 + 会话 子 agent 自己焊 权限弹窗 自己焊 计划模式 自己焊 MCP 自己焊 虚线框都是空的:官方不给,写个 TypeScript 扩展自己补
1
一串"我不做"

不做子 agent、不做 MCP、不做权限弹窗、不做计划模式、不做内置待办(作者说待办会把模型带偏)、不做后台 shell(要看进度就用 tmux)。

2
补法只有一种:写扩展

一个 TypeScript 文件就能加工具、加命令、加快捷键、换编辑器,甚至整个替换掉内置工具。扩展能把 pi 改装成 Claude Code 的样子——也能让你在等模型时打一局 Doom。

3
会话是一棵树,不是一条线

每条记录带 id 和 parentId,全在同一个文件里。你可以退回任意一句话原地开分支,来回切换,历史一条都不丢。

4
台子有明确的"档位"

空闲 / 干活 / 压缩 / 摘要 / 重试。像换挡一样,重活必须在空闲档才准开始,正在跑的时候插队会被直接顶回来。这是防止状态写乱的硬规矩。

5
安全交给外面

它自己不做权限系统,默认就以你的身份跑。要围栏,就把整个进程塞进容器、micro-VM 或沙箱里。

好在哪

  • 核心小,读得完、改得动、心里有数
  • 扩展能力极强,连内置工具都能换掉
  • 会话树是三家里最好用的"后悔药"
  • 不绑 MCP,工具就是普通 CLI + 一份说明

代价

  • 开箱即缺功能,想要就得自己写
  • 没有权限系统:不上容器就是裸奔
  • 扩展是社区生态,质量和维护都看运气
  • 团队用的时候,每个人的 pi 可能都不一样
03 / DeepSeek Harness

一切都是插件,连循环也是

前两家都还有一个"核心"。这一家干脆把核心也拆成了积木——模型适配、工具表、会话日志,甚至那条主循环本身,都是挂在同一根总线上的插件。

模型 工具 会话 沙箱 存储 循环 对,它也是 界面 没有特权核心可以打补丁——你只是往旁边再挂一块
1
启动时按三层"叠"出来

先套一个预设(网页版 / 无头版 / SDK 版),再叠一层层功能包,最后叠你自己的补丁文件。一条命令就能把最终组装出来的整棵树打印出来看。

2
一条铁律:模型看得见的,必须记进日志

任何进到模型眼前的东西,都得能从会话日志重新拼回来,运行时还会断言这一点。好处是永远能重放、能复现;代价是加个新功能就得先加一种日志事件。

3
换一个接头,整个环境跟着搬

文件系统和子进程共用同一个"执行世界"。把这个接头指向远程沙箱,shell、终端、语言服务会一起搬过去,不用为每个工具再改一遍。

4
加功能靠"挂到哪个事件上"

加模型、加工具、加后台任务、加审批策略,各有各的挂点。文档直接给了一张"你要干什么 → 挂哪儿"的对照表。

5
目前是开发者预览版

官方自己在 README 里用大写字母写着:会有破坏兼容性的改动。

好在哪

  • 可改造程度最高,循环都能整块换
  • 换执行环境是"换一块",不用改一堆工具
  • 日志即真相,重放、分叉、审计天然成立
  • 源码开放,网页版、无头版、SDK 同一套骨架

代价

  • 概念多:预设、功能包、补丁、接头、事件域
  • 上手要先学它底下那套插件框架
  • 预览版,接口随时可能变
  • 灵活到"配置能改行为",也意味着配置能改错行为

摆一起看

同一件事,三种答法

Claude Code pi DeepSeek Harness
核心大小 厚:功能全在里面 薄:只留最小一圈 没有核心:全是插件
加功能 在给定的口子上挂 写 TypeScript 扩展 改配置换插件
主循环 动不了 能绕过、能包一层 能整块替换
安全 七层默认拦着 不管,交给容器 审批和沙箱也是插件
会话 一条线 + 压缩断点 一棵树,能原地分叉 事件日志,投影出视图
子 agent 内置,独立上下文 不做,自己搭 是一个可换的接头
适合谁 想马上干活的人 想自己捏一把刀的人 想造自己那台 harness 的人

表格可以左右滑动

一句话记住

差别其实只有一根轴:你能改到多深

Claude Code 改配置 钩子、技能、插件 pi 改代码 写扩展,换掉内置工具 DeepSeek 改组装 连循环都能换掉 给你装好一台车 给你一箱零件

越往右,你能改的越多,要自己想清楚的也越多。这根轴上没有"更好",只有"你现在缺哪一头"。

会翻车的地方

四条别越的线

直接在自己机器上裸跑 pi

它没有权限系统,默认就是你的身份、你的文件、你的密钥。要么上容器,要么先自己焊一道确认闸门。

把预览版接进生产

DeepSeek Harness 自己在 README 里大写警告会破坏兼容。拿它做实验和自研底座可以,别当稳定依赖。

指望在记忆文件里写句"禁止 X"就真能禁止

那是给模型的建议,只有概率上的遵守。真要卡死,用权限规则或钩子这种确定性的闸门。

为了"更可改"就换台子

插件化不是免费的,多出来的是概念和维护成本。先问一句:我真的需要改那条循环吗?大多数时候答案是不需要。

模型决定它能想多远
台子决定它能走多远