【AI手记系列-2026/6/18】iSparto & Harness,Caveman 以及AI时代的生存指南

iSparto 诞生记:Harness Engineering 是 Agent 时代公司治理,不止技术,更是管理

原文链接:mp.weixin.qq.com/s/YhsmIXdIv...

这篇文章是一名独立开发者的 Harness Engineering 实践记录。作者使用 Claude Code,设计出一套不同角色的 Agent Team,并通过这套 Team 真正完成了 iOS App "勇芽" 的开发与上线。我认为,文中最值得借鉴的是一种组织设计思路:围绕最终目标,为不同任务设置独立角色,再把这些角色组装成一个多职能团队。

我一直有一个观点:现阶段在应用 Agent 时手搓出来的工具、框架和方法,未来大概率会被大模型厂商(OpenAI、Anthropic)集成到 Agent 内部。本文作者实践的多分工团队模式,也许以后会直接内置在 Codex 或 Claude Code 里。但即便如此,这个问题暴露出来的大模型局限,以及围绕这些局限探索出的工程方案,仍然很有启发。

flowchart TD Goal["最终目标:可上线的产品"] --> Split["任务拆分"] Split --> Product["产品 / 需求 Agent"] Split --> Design["交互 / UI Agent"] Split --> Dev["开发 Agent"] Split --> Test["测试 Agent"] Split --> Review["评审 / 集成 Agent"] Product --> Contract["输入输出协议"] Design --> Contract Dev --> Contract Test --> Contract Contract --> Review Review --> Ship["交付与上线"] Review --> Archive["知识归档"] Archive --> Product Archive --> Dev

先说大模型的局限。问题的根源在于 Agent 自身的注意力窗口。即使一些模型已经声明支持 1M token 上下文,窗口仍然不是无限的,必然存在边界。随着信息持续输入,注意力涣散、上下文腐烂不可避免,Agent 的回答质量也会随之下降。归根到底,Harness 系统要解决的是一件事:让 Agent 知道它该知道的事,也让它不知道它不该知道的事。

这种思想有点像软件工程里的高内聚、低耦合。每个模块专注于自己的职责,一个职责尽量交给一个模块处理,不同模块之间通过协议交互,不需要了解对方的实现细节。Agent Team 也是如此:精确控制每个 Agent 的角色、职责、输入和输出,在必要时重置上下文,同时设计知识的归档与传承方案。相比于碳基人类,硅基 Agent 的优势在于不知疲倦、没有情绪、带宽很高,也能相对容易地进行状态重置和恢复。

flowchart LR Raw["原始需求与上下文"] --> Gate["任务边界与权限控制"] Gate --> RoleA["角色 A:只接收必要信息"] Gate --> RoleB["角色 B:只接收必要信息"] Gate --> RoleC["角色 C:只接收必要信息"] RoleA --> Output["结构化产出"] RoleB --> Output RoleC --> Output Output --> Review["汇总、评审、交接"] Review --> Memory["知识沉淀"] Memory --> Gate

当然,这套系统并非无懈可击。如果 AI 对某些私域知识了解不足,那么即使设计再多 Agent,也只是把同一个信息盲区拆成了更多环节。人类组织处理这类问题,通常依赖分级评审和审批链条:决策越重要,介入的角色越多,底层信息盲区也越有机会被上层角色纠偏。Agent Team 也需要类似的治理机制,否则角色分工只会提高形式复杂度,并不必然提高决策质量。

最后借用文中的一句话总结:Harness 不是纯工程问题,而是工程、管理学、组织设计和公司治理交织在一起的复合问题。

将 Claude Code 的输出 token 减少 75%。为什么没人告诉我?

原文链接:mp.weixin.qq.com/s/ZCHPq9jgn...

Caveman 是什么

Caveman(github.com/juliusbruss... 是一个用来降低 Agent 啰嗦程度、节约 token 用量的工具,支持 Claude Code、Codex、Gemini、Cursor 等环境。它的目标不是"让模型更聪明",而是"让模型少废话"。

Caveman 的作用机理

它本质上利用 Agent 的注入机制,在会话启动或每次提问时自动补充一段提示词,要求 Agent 以简明扼要的方式回答。

以 Claude Code 为例,Caveman 主要在以下环节注入规则:

  • 每次 session 启动时,caveman-activate.js 解析默认模式,写入 $CLAUDE_CONFIG_DIR/.caveman-active,再把压缩规则作为隐藏的 SessionStart 上下文输出给 Claude Code。参考:caveman-activate.js
  • 同时,UserPromptSubmit 会在每轮补一条短提醒,避免模型聊着聊着又漂回 verbose 模式。这个机制比单次 prompt 更稳定。参考:plugin.json

对于 Codex,它会修改 .codex/config.toml 文件,在 startup/resume 时 echo 一段 Caveman 规则,让会话从一开始就带上"少说话"指令。配置大意如下:

text 复制代码
[features]
hooks = true

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup|resume",
        "hooks": [
          {
            "type": "command",
            "command": "echo 'CAVEMAN MODE ACTIVE...'"
          }
        ]
      }
    ]
  }
}

它提供的 Slash Command,例如 /caveman full/caveman ultra,同样是一次 prompt 注入。定义这些命令的核心文件是 commands/caveman.toml

toml 复制代码
prompt = "Switch to caveman {{args}} mode..."
sequenceDiagram participant User as 用户 participant Hook as Caveman Hook participant State as 模式状态文件 participant Agent as Claude Code / Codex User->>Hook: 启动或恢复会话 Hook->>State: 读取或写入当前模式 Hook->>Agent: 注入压缩表达规则 User->>Hook: 提交新问题 Hook->>Agent: 补充短提醒 Agent-->>User: 输出更短的回答

从 Caveman 的设计思路上,可以学到什么

相比于普通做法里只给模型一句"请简洁回答",Caveman 更聪明的地方在于它把规则变成了可持续生效的系统机制。

  1. 用 Claude Code hook 做自动注入。SessionStart 注入完整规则,UserPromptSubmit 每轮补一条短提醒,避免模型漂回 verbose 模式。参考:plugin.json

  2. 用 flag 文件维护状态。.caveman-active 作为当前模式状态,statusline、hook、stats 都读取它。状态外置后,模式切换、显示和统计都能解耦。参考:caveman-mode-tracker.js

  3. 规则有边界,不是盲目压缩。SKILL.md 明确要求保留代码、命令、API、错误原文;遇到安全警告、不可逆操作、多步骤容易误读时退出压缩表达。这点很关键,否则"省 token"会牺牲正确性。参考:SKILL.md

  4. 把效果做成反馈闭环。/caveman-stats 会读取 Claude Code transcript,统计真实输出 token,再估算节省量。即使估算不等于真实总成本,它也能让用户感知工具是否真的有用。

Caveman 的局限性

这个工具也有局限。它声称的 65% token 节省率需要谨慎看待,因为它主要省的是输出 token,而真实 Agent 成本通常还包括输入上下文、工具输出、缓存读取、推理 token 和多轮试错。短回答也可能丢失推理链、验收口径和风险解释。尤其在需求分析、架构评审、安全确认、复杂排障里,过度压缩会降低可审计性。

停止编码的那天,就是失去架构判断力的开始:一位 30 年架构师的 AI 生存指南

原文链接:www.infoq.cn/article/zLa...

Q1:在 AI 越来越强大的当下,"古法编程"还有意义么?

Dennis 认为,即使是架构负责人,也仍然需要一线动手实践的经验。讽刺的是,很多一线工程师已经放弃了对代码的敬畏:他们把问题抛给 AI,等 AI 生成代码后编译运行,简单点检一下没有问题,就直接提交到代码仓库。我并不是反对 AI 编程,但这种不负责任的做法,只会制造越来越多难以维护的庞然大物。AI 写代码,AI 埋 bug,AI 解 bug,如此循环,越陷越深。

"古法编程"当然还有意义,但它的意义发生了转移。工程师不一定再逐行敲出所有代码,而是站在更高的视角上,评价 AI 生成代码的合理性,控制系统边界,并做出关键设计决策。换句话说,今天的工程师应当具备昨日架构师的知识与能力。

flowchart TD Task["需求 / 问题"] --> AI["AI 生成实现方案"] AI --> Build["编译、测试、运行"] Build --> Human["工程师判断"] Human --> Boundary["系统边界是否清楚"] Human --> Debt["复杂度是否可控"] Human --> Owner["责任是否有人承担"] Boundary --> Decision["接受、修改或重做"] Debt --> Decision Owner --> Decision Decision --> Repo["进入代码仓库"] Decision --> Iterate["回到提示与实现"] Iterate --> AI

Q2:软件工程的核心是什么?

Patrick 认为,软件工程的核心,无论过去还是未来,都是在已有系统与不断增长的复杂性之间维持平衡。如果对过去的决策缺乏理解,却仍机械遵循,就会持续累积复杂性;时间会放大这一问题,甚至决定系统成败。

很遗憾,一些管理者并没有认识到这一点。在他们看来,既然 AI 能写出 10 个人的代码行数,为什么不把团队里另外 9 个人换成 AI?这种想法的危险之处在于,原本是 10 个人写代码,并对自己所写或所生成的代码进行判断和担责;现在,判断和担责都压到了仅剩的一个人身上。AI 可以编码,但 AI 无法承担责任。

同时,即使强如 ChatGPT-5.5(我已经有一段时间没有使用 Claude),写出的代码也不一定完全合理。这些不够合理的代码会导致项目熵增,我们只能寄希望于 AI 能力进化的速度,大过系统腐化的速度。值得庆幸的是,很多功能从设计之初就是产品经理的一厢情愿,它们很快会被替代、被遗忘,上线后也未必需要长期维护。

在这种前提下,只要 AI 生成的代码功能正确、测试通过,就可以接受,又何必过度优化。

Q3:我们能从 AI 身上学到什么?

我感触最深的是,在与 AI 的交流里,人类最欠缺的不是硬知识,反而是情绪稳定性。AI 不会产生负面情绪,但人会。公司制度不合理、项目推进受阻、交流对象难缠,都可能让人感到生气、不耐烦,产生防御心理,甚至爆发争论。很多沟通成本并不是来自技术问题,而是来自情绪和立场摩擦。

在人机协作中,这些因素基本不存在,所以它有时反而比人与人协作更高效。但反过来想,如果任由 AI "惯着"自己,会不会让人逐渐丧失与他人正常沟通和交流的能力?

也许 AI 真正教会人类的,并不只是如何解决技术难题,还有如何把自己训练成一台没有情绪波动的高效机器。即使对面的人极其难沟通,自己也能保持滴水不漏的礼貌回应,不露纰漏,也不上头。

相关推荐
冬奇Lab3 小时前
每日一个开源项目(第134篇):Zvec - 阿里开源的嵌入式向量数据库,向量搜索界的 SQLite
数据库·人工智能·llm
冬奇Lab3 小时前
Agent 系列(22):Context Engineering 深度——三种上下文管理策略的量化对比
人工智能·agent
hboot3 小时前
AI工程师第二课 - 数据处理
人工智能·python·数据分析
程序员cxuan3 小时前
DeepSeek 杀入多模态,识图功能正式上线!
人工智能·后端·程序员
米小虾5 小时前
告别单打独斗:2026年多Agent协作架构实战指南
人工智能·agent
IT_陈寒6 小时前
SpringBoot这个自动配置坑我跳了三次
前端·人工智能·后端
BingoGo6 小时前
Openai Codex 重大更新 已支持接入任意开源大模型
openai
Larcher6 小时前
AI Loop:让AI像人一样自主完成任务的核心机制
javascript·人工智能·设计模式