当前位置: 首页 > article >正文

【学习笔记】深度拆解 Claude Code:12 个可复用的 Agentic Harness 设计模式

模型可以换工具也会变但这些设计很可能会一直存在。Kubernetes Patterns[1] 和 Prompt Patterns[2] 的作者Bilgin lbryam从源码里整理了 12 个可以复用的设计模式分成四类记忆与上下文、工作流与编排、工具与权限、自动化。一、记忆与上下文这五个模式其实是一条逐步演进的路径一开始只是给 Agent 一份固定的规则文件然后按目录去限制这些规则的作用范围再把记忆做成分层结构接着在后台做清理最后在上下文快满的时候对对话本身做压缩。1. 持久化指令文件模式Persistent Instruction File Pattern没有持久化指令文件时每个 Agent 会话都像从零开始。同样的约定、命令和边界需要一遍遍重复甚至第几次对话还会犯和第一次一样的错误。这个模式的做法其实很直接放一个项目级的配置文件每次会话自动加载。里面写清楚构建命令、测试方式、架构规则、命名约定这些内容。文件跟着代码仓库走而不是靠人每次复制粘贴。适用场景需要在多个会话里反复处理同一个代码库。权衡点有维护成本。这个文件需要跟着项目一起更新一旦过时反而会误导 Agent还不如没有。2. 作用域上下文组装模式Scoped Context Assembly Pattern一个指令文件在小项目里够用但项目一大就容易出问题要么越写越长最后没人看要么写得太泛对具体目录又没什么用。这个模式的思路是把指令拆到不同作用域里组织级、用户级、项目根目录、父目录、子目录。Agent 会根据当前所在的位置动态加载对应的规则。这样既能保持全局一致又能允许局部有差异。另外通过导入的方式可以把大的指令集拆开管理避免重复。适用场景Monorepo、多语言项目或者不同目录有不同规范的代码库。权衡点可读性会变差。规则分散在多个文件里后很难一眼看清 Agent 实际加载了哪些内容不同作用域之间也可能出现冲突。3. 分层记忆模式Tiered Memory Pattern如果一个 Agent 什么都用同一种方式记住最后往往什么都记不好。把所有记忆都塞进上下文每次会话都会浪费 token还容易撞上窗口限制重要信息反而被淹没。这个模式的做法是把记忆分层一个精简的索引始终放在上下文里比如控制在几百行以内和当前任务相关的内容按需加载完整的历史记录则留在磁盘上需要时再去查。适用场景需要跨多次会话保留偏好、决策或状态的 Agent。权衡点实现会更复杂。需要想清楚信息该放哪一层什么时候上升或下沉以及怎么保证索引和实际数据是同步的。4. 记忆整合模式Dream Consolidation Pattern即使做了分层记忆用久了还是会「变乱」重复内容越来越多旧信息和新信息打架索引也会慢慢膨胀。这个模式的思路是加一个后台整理机制在空闲时定期做清理去重、删旧、重组结构让记忆保持干净、可用。可以理解为给 Agent 做一次「垃圾回收」。像泄露代码里提到的autoDream就是在做类似的事情合并重复、处理冲突、控制索引规模。适用场景Agent 会长期运行、持续积累记忆而且不方便靠人工去维护。权衡点整理本身也要消耗 token而且不一定完全准确。如果清理太激进可能会把有用的信息一起删掉。5. 渐进式上下文压缩模式Progressive Context Compaction Pattern对话一长很快就会碰到上下文窗口的上限。要么早期内容被挤掉要么任务直接做不下去这两种情况都挺难受。这个模式的做法是「分层压缩」新的对话尽量保留细节稍旧的内容做轻量总结再往前的就逐步压缩甚至折叠成很短的摘要。可以理解为越久远的信息保留得越粗。像源码里提到的几层压缩本质上也是这个思路只是做得更细。适用场景对话轮次比较多比如 2030 轮以上的任务。权衡点压缩一定是有损的。信息在一轮轮总结中会丢失如果后面又需要这些细节Agent 可能会「编」而不是承认不知道。二、工作流与编排这一组模式的核心其实就是一个词分离。把读取和写入拆开把「查资料」和「改代码」的上下文拆开把顺序执行和并行执行也拆开。这样做的好处是随着任务变复杂系统不会越来越乱。大多数 Agent 的默认做法是把这些事情混在一起刚开始可能没问题但任务一多质量就很容易下降。6. 探索-规划-行动循环模式Explore-Plan-Act Loop Pattern如果一上来就让 Agent 改代码很容易出问题理解不完整改错文件漏掉依赖或者直接忽略现有的实现方式。这个模式的做法是把流程拆成三步而且权限逐步放开• 先探索只读代码、查信息、摸清结构• 再规划和用户对齐思路• 最后再动手改代码本质上就是先搞清楚再决定怎么做最后再执行。适用场景不熟悉的代码库或者涉及多个文件的复杂修改。权衡点会慢一点。多了探索和规划这两步小任务会显得有点「流程过重」。7. 上下文隔离子智能体模式Context-Isolated Subagents Pattern会话一长所有东西都会堆在同一个上下文里调研内容、规划讨论、代码修改、日志输出全混在一起。等真正开始改代码时很多无关信息已经在干扰判断了。这个模式的做法是把任务拆给不同的子 Agent每个都有自己的上下文和权限• 做调研的只负责看和分析不能改代码• 做规划的只负责设计方案• 真正执行的才有完整工具权限每个子 Agent 只接触自己需要的信息避免被「流噪声」影响。适用场景长会话、多阶段流程或者不同阶段对上下文要求差异很大的任务。权衡点需要额外协调。主 Agent 要决定每一步传什么信息传少了会丢细节传多了又回到上下文污染的问题。8. 分支-合并并行模式Fork-Join Parallelism Pattern有些任务其实可以拆开做但如果 Agent 一次只能处理一件事最后还是会变成一条一条顺序执行。比如跨很多文件的改动本来互不影响却要排队完成。这个模式的思路是把任务拆成多个分支并行处理每个子 Agent 在独立的代码副本里工作比如用git worktree互不干扰。等都完成后再把结果合并回来。适用场景可以拆成多个互不依赖子任务的场景。权衡点合并会更复杂。如果不同分支改到了同一部分代码冲突可能比顺序处理更难解决。三、工具与权限如果说前面的记忆模式是在解决「Agent 知道什么」工作流是在解决「它怎么做事」那这一部分关注的就是「它能做什么」。从泄露的代码来看在工具设计和权限控制上已经细到很具体的粒度远比现在大多数 Agent 框架要更严格。9. 渐进式工具扩展模式Progressive Tool Expansion Pattern如果一开始就把所有工具都开放给 Agent反而会变得更难用工具一多选择成本变高也更容易选错。这个模式的做法是先给一小部分常用工具够用就行其他工具按需再打开。比如读写文件、搜索这些作为默认能力复杂一点的工具等用到再加载。适用场景工具很多但大多数任务其实只用到一小部分。权衡点需要额外判断什么时候该开新工具。如果开得太晚Agent 可能已经走了弯路浪费了一些轮次。10. 命令风险分类模式Command Risk Classification Pattern如果让 Agent 随便执行 shell 命令风险很高但如果每一步都让用户确认很快就会点到麻木。这个模式的做法是在执行前做一层「风险判断」低风险的命令自动放行高风险的才需要人工确认或直接拦截。实现上通常是对命令做解析比如看做什么操作、带了哪些参数、影响范围多大再结合规则去判断风险等级。适用场景Agent 能执行 shell 命令或者会操作外部系统。权衡点规则不可能覆盖所有情况需要不断调整有时候会误判要么放过风险操作要么拦住本来安全的命令。11. 单用途工具设计模式Single-Purpose Tool Design Pattern如果所有操作都走通用 shell比如cat、sed、grep问题会慢慢出现命令不直观、不好审查也更难做权限控制。对模型来说也更容易用错。这个模式的做法是把常见操作拆成专门的工具比如读文件、改文件、搜索、匹配路径各自都有明确的输入和边界。这样不仅更好理解也更容易限制权限。适用场景需要频繁做文件操作或搜索的 Agent。权衡点灵活性会受限。专用工具不可能覆盖所有情况所以还是需要保留通用 shell 作为兜底。三、自动化最后这一类可以单独拿出来说因为它其实贯穿前面的所有部分。不管是记忆、工作流还是工具本质上都有一个共同问题有些步骤是每次都必须执行的但不能指望模型每次都记得。12. 确定性生命周期钩子模式Deterministic Lifecycle Hooks Pattern有些事情是必须每次都做的比如改完代码跑一遍格式化、执行前做校验、切换目录时重新加载配置。但这些步骤如果只是写在提示词里基本不可靠。模型会忘、会跳过甚至在复杂上下文里「理解偏了」。这个模式的做法是把这些动作挂到 Agent 生命周期的关键节点上自动执行完全不依赖提示词。比如工具调用前后、会话开始、工作目录变化时系统都会触发对应的钩子。简单来说凡是「不能出错、不能漏」的事情都不该交给模型记而应该交给系统兜底。适用场景存在必须严格执行、不能遗漏的步骤权衡点出了问题不太好排查因为这些逻辑是在对话之外跑的四、结语Harness这些模式不是空谈的理论而是从生产级代码中提炼出来的架构智慧。内存怎么分层、上下文怎么压缩、权限怎么控制、哪些流程必须自动执行——这些本质上都是架构层面的决策。模型会变工具也会换但这些东西不会很快过时。这次 Claude Code 的泄露让我们第一次比较完整地看到这些模式在一个真实、大规模使用的 agent 里是怎么落地的。这样的窗口可能不会一直存在但这些经验会留下来。如果你正在做 agent 应用值得认真研究这些模式。它们不是「锦上添花」的优化而是决定系统能不能长期稳定运行的基础。参考文献[1]Kubernetes Patterns:https://k8spatterns.com/[2]Prompt Patterns:https://promptpatterns.dev/[3]12 Agentic Harness Patterns from Claude Code:https://generativeprogrammer.com/p/12-agentic-harness-patterns-from【4】https://mp.weixin.qq.com/s/eUbRoyKxOjiAPuXZi8DPsQ

相关文章:

【学习笔记】深度拆解 Claude Code:12 个可复用的 Agentic Harness 设计模式

模型可以换,工具也会变,但这些设计很可能会一直存在。Kubernetes Patterns[1] 和 Prompt Patterns[2] 的作者 Bilgin lbryam 从源码里整理了 12 个可以复用的设计模式,分成四类:记忆与上下文、工作流与编排、工具与权限、自动化。…...

Windows驱动管理终极指南:Driver Store Explorer 5分钟上手教程

Windows驱动管理终极指南:Driver Store Explorer 5分钟上手教程 【免费下载链接】DriverStoreExplorer Driver Store Explorer 项目地址: https://gitcode.com/gh_mirrors/dr/DriverStoreExplorer 你是否曾因C盘空间不足而烦恼?是否遇到过驱动程序…...

重大利好!跨境电商再获政策支持,行业迎来新机遇

刚刚得到消息,国家将进一步支持跨境电商发展。这对于我们从业者来说是好消息。一、机遇方面政策支持力度加大,海关流程更加便捷,物流渠道更加丰富。二、挑战方面行业竞争加剧,客户要求提高,合规成本上升。三、应对策略…...

全球轮胎帘子布市场深度剖析:2026-2032期间年复合增长率(CAGR)为5.2%

QYResearch调研显示,2025年全球轮胎帘子布市场规模大约为134.7亿美元,预计2032年将达到191.5亿美元,2026-2032期间年复合增长率(CAGR)为5.2%。轮胎帘子布,作为轮胎制造的关键纺织材料,又称轮胎帘…...

LLM核心参数配置指南:基础篇

gzh: AI-Frontiers和大语言模型聊天的时候,你是不是也觉得,光会写提示词还不够?有时候模型答得乱七八糟,真不是你的问题。其实不管是直接用对话框,还是调API,有个小细节特别容易被忽略——配置参数。你可以…...

当代码成为冒险:CodeCombat如何重新定义编程学习体验

当代码成为冒险:CodeCombat如何重新定义编程学习体验 【免费下载链接】codecombat Game for learning how to code. 项目地址: https://gitcode.com/gh_mirrors/co/codecombat 还记得第一次面对黑屏终端时的那种迷茫吗?或者看着满屏的语法错误却不…...

广告联盟APP开发前端逻辑

广告联盟APP如何在性能和用户体验间找到平衡?这是一个让人感兴趣的议题。 近年来,随着移动互联网的迅速发展,广告联盟APP成为众多平台和开发者关注的重点。这些应用的核心功能在于实现高效的广告展示、精准的用户行为追踪、透明的收益分配以及…...

暗黑2存档编辑神器:3分钟掌握d2s-editor终极使用指南

暗黑2存档编辑神器:3分钟掌握d2s-editor终极使用指南 【免费下载链接】d2s-editor 项目地址: https://gitcode.com/gh_mirrors/d2/d2s-editor 还在为暗黑破坏神2的装备掉落率太低而烦恼吗?😩 想不想轻松调整角色属性,打造…...

Claude code与IBM Engineering Lifecycle Management协同研发

IBM Engineering Lifecycle Management包含需求编写与管理、源代码管理、变更管理、测试管理和工程方法编写与规范等功能,我想将claude code和IBM Engineering Lifecycle Management协同工作,但是IBM Engineering Lifecycle Management的界面是web,而且它…...

终极指南:使用foo_openlyrics打造专业级foobar2000歌词显示体验

终极指南:使用foo_openlyrics打造专业级foobar2000歌词显示体验 【免费下载链接】foo_openlyrics An open-source lyric display panel for foobar2000 项目地址: https://gitcode.com/gh_mirrors/fo/foo_openlyrics 在音乐播放体验中,歌词显示是…...

起名网如何选择?美名助运:以AI算法赋能,打造专业命名体验

在当今数字化时代,为新生儿、新公司或新品牌寻找一个寓意深远、音律和谐的名字,已成为许多人的重要需求。随之而来的是,各类“起名网”如雨后春笋般涌现,为用户提供了前所未有的便利。然而,面对琳琅满目的在线起名平台…...

C++新手必看:如何彻底解决‘redefinition of ‘a’‘这个烦人报错(附真实案例)

C新手必看:如何彻底解决redefinition of ‘a’这个烦人报错(附真实案例) 刚接触C多文件编程时,你是否遇到过这样的场景:明明每个文件单独编译都没问题,但一链接就蹦出"redefinition of ‘a’"的红…...

如何在 Tkinter 网格中动态增删表格行

本文详解如何使用 Tkinter 动态管理二维网格中的行:通过按钮实现选中行的删除与新行的插入,并保持数据、控件与变量状态同步。代码采用全局高度计数器与 grid_forget() 配合列表弹出,确保内存安全与界面一致性。 本文详解如何使用 tkint…...

沁恒CH585蓝牙Notify避坑指南:从手机APP使能到Handle确认,一次搞定数据上报

沁恒CH585蓝牙Notify功能深度调试:从协议机制到实战避坑指南 当你盯着手机APP上空荡荡的数据接收界面,而CH585开发板却显示"数据已发送"时,那种挫败感我深有体会。蓝牙Notify功能看似简单,实则暗藏玄机——它不仅仅是调…...

保姆级教程:在STM32F1/F4上正确配置串口空闲中断(IDLE)接收不定长数据

STM32串口空闲中断实战指南:构建高可靠不定长数据接收框架 在物联网设备和智能硬件开发中,串口通信是最基础也最关键的环节之一。面对GPS模块、蓝牙芯片或LoRa模组发送的不定长数据包,传统轮询方式不仅效率低下,还可能导致数据丢失…...

Go语言如何做图算法_Go语言图算法实现教程【对比】

...

LayerNorm与BatchNorm对比指南:什么时候该用哪种归一化?附PyTorch代码示例

LayerNorm与BatchNorm深度对比:从原理到实战的归一化技术选型指南 在深度神经网络训练过程中,内部协变量偏移(Internal Covariate Shift)一直是影响模型收敛速度和泛化性能的关键挑战。归一化技术的出现为解决这一问题提供了有效方…...

论文查重=开盲盒?好写作AI说:NO!

凌晨两点,你颤抖着点开查重报告。页面加载的那几秒,心脏几乎跳出嗓子眼。 10%?20%?30%? 当那个数字最终定格在27%时,你长叹一口气——又要熬夜改稿了。 我见过太多这样的场景。论文查重,几乎…...

当儿童出现学习困难时,如何判断是否患有多动症?

儿童多动症的典型表现及识别技巧 儿童多动症(ADHD)的表现通常包括注意力集中困难、过度活跃与冲动。特别是在学习环境中,孩子可能很难专注于课堂内容,常常分心,难以完成作业。家长和教师应注意到是否存在频繁走动或在座…...

扩散模型做异常检测太慢?手把手教你用AnoDDPM的‘部分扩散’策略提速10倍

扩散模型在异常检测中的效率革命:AnoDDPM部分扩散策略深度解析 当扩散模型遇上异常检测,计算效率成为横亘在理想与现实之间的鸿沟。传统DDPM(Denoising Diffusion Probabilistic Models)需要完整的马尔可夫链进行前向扩散和反向去…...

C++面试突击:从new/delete到STL容器,这些高频考点你真的掌握了吗?

C面试突击:高频考点深度解析与实战技巧 最近在技术社区看到不少开发者讨论C面试中的"死亡连环问"——从内存管理到STL底层实现,面试官的问题往往直戳知识盲区。作为一门经久不衰的系统级语言,C的深度和广度让不少求职者又爱又恨。本…...

告别静态图表!用WPF LiveCharts 2.x 模拟实时数据监控面板(附完整MVVM源码)

工业级实时监控面板开发实战:WPF LiveCharts 2.x与MVVM深度整合 在工业自动化、服务器监控和物联网领域,实时数据可视化是决策支持系统的核心。传统静态图表已无法满足现代监控系统对即时反馈的需求,而WPF LiveCharts 2.x凭借其流畅的动画效果…...

容器镜像进阶:多阶段构建优化 + 镜像分层缓存策略 + 漏洞扫描自动化

容器镜像进阶:多阶段构建优化 + 镜像分层缓存策略 + 漏洞扫描自动化 **标签:**容器镜像 | Docker | 多阶段构建 | 分层缓存 | Trivy漏洞扫描 | CI/CD自动化 | 运维进阶 **核心考点:**镜像分层原理深度解析、多阶段构建进阶技巧、缓存失效规避策略、Trivy集成实战、构建+扫…...

LeetCode 1653. 使字符串平衡的最少删除次数 详细技术解析

LeetCode 1653. 使字符串平衡的最少删除次数 详细技术解析 **标签:**LeetCode | 字符串 | 动态规划 | 前缀和 | 贪心 | 中等难度 **核心考点:**字符串平衡条件理解、动态规划状态设计、前缀和优化、贪心思想应用(应对1e5级数据量)…...

AFDM、OTFS、OFDM到底怎么选?一张图看懂下一代无线通信三大波形,附6G应用场景分析

AFDM、OTFS、OFDM技术选型指南:6G时代三大波形深度对比与场景决策树 当高铁以350公里时速穿越隧道,当无人机在强风环境下实时回传4K视频,当低轨卫星为远洋船舶提供宽带连接——这些场景正在挑战传统无线通信技术的极限。作为技术决策者&…...

从PWM波形到机械臂:STM32定时器精准驱动舵机全解析

1. 舵机控制基础:从PWM波形到机械动作 第一次接触舵机控制时,我误以为只要随便给个PWM信号就能让舵机动起来。结果舵机要么纹丝不动,要么疯狂抖动,完全不听使唤。后来才发现,舵机对PWM波形的要求极其严格,差…...

视频解密实战:从加密流媒体到本地播放的完整解决方案

视频解密实战:从加密流媒体到本地播放的完整解决方案 【免费下载链接】video_decrypter Decrypt video from a streaming site with MPEG-DASH Widevine DRM encryption. 项目地址: https://gitcode.com/gh_mirrors/vi/video_decrypter 还在为无法保存喜爱的…...

Webots机器人避障实战:用Python搞定距离传感器与电机控制(附完整代码)

Webots机器人避障实战:用Python搞定距离传感器与电机控制(附完整代码) 差速驱动机器人避障是机器人学入门的经典案例。想象一下,当你第一次看到自己编写的代码让虚拟机器人灵活避开障碍物时,那种成就感绝对让人难忘。本…...

解锁u-blox F9P的科研潜力:如何配置RAWX和SFRBX输出多系统原始观测值(RTK/PPP算法必备)

深度挖掘u-blox F9P的科研级GNSS数据采集能力 在卫星导航技术飞速发展的今天,高精度定位已经成为自动驾驶、精准农业、无人机导航等领域的核心技术需求。作为GNSS算法研究者或高精度定位系统开发者,获取多系统原始观测数据是进行RTK/PPP算法验证和优化的…...

STM32 Bootloader内存规划避坑指南:H7双Bank Flash与分散加载文件(.sct)详解

STM32H7双Bank Flash架构下的Bootloader设计实战:从内存规划到链接脚本精调 当你在深夜调试STM32H7的Bootloader时,突然发现应用程序跳转后像中了邪一样跑飞,或者更糟——直接死机。这不是灵异事件,而是双Bank Flash和复杂内存架构…...