Harness

让模型成为 Agent 的一整套外围机制:工具、System Prompt、上下文窗口管理、权限、hooks。Claude.ai 和 Claude Code 底层是同一个模型,但行为不同,就是因为它们的 Harness 不同。

模型本身只做一件事:输入文本,输出文本。它不会读文件、运行命令,也不会记住上一轮。这些都是 Harness 提供的。它负责为每次模型请求组装上下文、执行模型要求的工具调用、把工具结果回传、保存 Session 历史、在风险操作前征求你的同意,并决定何时进行上下文压缩。Agent 的循环——模型提议、Harness 执行、再循环——由 Harness 驱动。

这对排查问题很重要。当两个产品的行为不同,或者同一产品昨天和今天表现不一致时,变量通常不是模型,而是 Harness。不同的 System Prompt、不同的工具集、变更的权限默认,或是新的上下文管理策略,都会在不改变模型的情况下改变行为。这也意味着你的大部分配置都写在 Harness 里:Agent.md 文件、权限设置、hooks,都是对 Harness 的指令,而不是对模型的。

例如:Claude Code、Cursor、Codex CLI,以及 Claude.ai——后者是一个聊天 Harness,而非编程 Harness。

用法:

“同一个模型,为什么 Claude Code 能改文件,而 Claude.ai 只会回答问题?”

“因为 Harness 不同——Claude Code 有文件系统工具、不同的 System Prompt 和权限层。变量不是模型。”