Claude Code 源码分析与复刻实现
-
文献
-
架构图
-
![image]()
![image]()
![image]()
-
重要架构知识
-
bilibili-LLM张老师(AI汇总):Claude Code 源码分析与复刻实现
-
![image]()
1. 外向循环是一种基于大语言模型的迭代对话机制,通过连续输入提示词并根据输出结果进行判断,直至达成目标或达到最大轮数限制。 2. 在每一轮循环中,系统不仅提供用户问题和提示词,还包含可调用的工具或技能,以便模型能根据问题需求选择合适的工具执行。 3. 通过工具执行结果的反馈,模型能够调整策略,直至正确解决问题,体现了智能体在解决问题过程中的动态调整能力。 4. Cloud code模式通过引入多智能体协作,将复杂任务分解并分配给多个子智能体执行,无论是并行还是串行处理,都能提高任务处理的效率和灵活性。 5. 最新的teams swarm模式等多智能体协作方式,本质上是主智能体对任务的高效分发与管理,通过协同工作完成更复杂多样的任务目标。
1. 动态工具搜索机制:通过将工具名称和简短描述提供给模型,而非一次性输入所有工具信息,实现高效工具调用,减少上下文污染。 2. 记忆管理与索引优化:将用户话语及重要信息写入本地文件,并通过索引指向详细记忆内容,解决记忆文件过大问题,提高信息检索效率。 3. 上下文压缩策略:针对长对话,采用模型容量提升、关键信息筛选及任务分配等方法,有效缓解上下文暴涨,提升信息密度。 4. 子任务分配与物理隔离:将复杂任务分解至多个智能体或cloud code窗口处理,减少单一智能体的上下文负担,提高处理效率与资源利用。 5. 代码开源与学习:通过阅读开源代码,深入理解cloud code的实现细节与harness部分,为实际应用提供参考与灵感。
1. 大模型通过调用PWD工具确定用户所在目录,并通过file read工具读取本地文件信息,进行信息搜集。 2. 模型利用web search工具搜索open cloud的相关信息,包括其GitHub地址,进行外部信息的搜集。 3. 通过对比本地文件与外部搜索到的open cloud信息,模型进行深度调研,形成对比分析。 4. 对话展示了大模型在处理复杂任务时,通过多轮循环和工具调用,实现信息的全面搜集与分析。 5. 针对重任务,可将部分步骤分配给子智能体,实现任务的高效分解与执行。
1. 对话中提到通过搜索100个网页来获取信息,然后由子智能体总结并返回结果,用于下一步的处理,这展示了智能体之间的协作和信息处理流程。 2. 提到使用了多种工具和技术,包括本地文件调用、glove go等,这些技术的应用体现了在项目开发中对不同资源的整合和利用。 3. 对话中提及了color code和dispatch的概念,解释了它们在项目中的作用,以及与CC cloud code类似的功能,强调了这些工具的开源性和社区共享价值。 4. 张老师被提及为开源项目的支持者,对话中提到了coco lab删框,这表明在开源社区中,个人贡献和项目协作的重要性。 5. 整个对话围绕智能体之间的协作、技术工具的应用以及开源项目的共享价值展开,体现了现代科技项目开发中的关键要素和合作模式。
1. 对话中强调了不应被表面语言迷惑,如“cloud”和“harness”,其核心含义应被理解为“cloud code CC”和“打磨”,分别代表技术和过程的实质。 2. 提及了源代码导出的“cloud code”核心架构的探讨,但对话并未深入展开,仅指出这是一个关键议题。 3. 强调了即使超出了某种限制(如“最大这个透明竖了”),也应先搁置争议,继续讨论,显示出对流程的灵活处理态度。 4. 对话中隐含了对技术术语和实际应用之间关系的反思,提倡深入理解而非表面接受。 5. 表达了对技术本质的探索兴趣,特别是在“cloud code”的架构和功能上,显示出对技术深度理解的追求。
1. 对话内容强调了cloud CC系统的主要结构,包括入口文件query engine负责管理对话,以及在进入主循环前对消息数组、文件缓存和用量追踪的检查,以确保服务的正常运行和费用的合理控制。 2. 提到了系统近期新增的流式输出功能,通过server side event SIC实现,使得长文本的输出能够逐行显示,提升了用户体验,与之前的等待全部输出完成再展示的方式相比,这一改进显著增强了互动性。 3. 描述了系统中工具使用和结果回填的主循环流程,这一循环是系统运作的核心部分,负责处理工具的调用及其结果的反馈,确保了对话的连贯性和准确性。 4. 强调了cloud CC系统在处理特定race condition测试时的强大能力,这得益于模型机器的针对性训练,使其在处理复杂场景时表现出色,但同时也指出系统存在主文件过长等劣势。 5. 解释了3 cloud作为go的CRA客户端的功能,包括与open cloud的交互,以及对话和表格处理的核心差异语言,突出了系统在多语言支持和跨平台应用方面的能力。
1. 对话描述了一个基于Node.js的消息网关系统,集成多种通讯平台如Slack、TG、Line和WhatsApp,且正在添加飞书,用于处理消息和进程。 2. 系统还具备深度的macOS集成,能够调用本地工具,如控制苹果电脑的屏幕,显示了其与操作系统的高度兼容性。 3. 该系统支持用量统计,且提到使用昂贵的模型进行调用,但建议替换为更便宜的模型或开源模型以降低成本。 4. 对话提到了一个任务花费了三美金,强调了系统在处理任务时的成本考量,以及对用户提问的高效率支持。 5. 通过调用OS screen工具,系统能够控制浏览器窗口,将其置于桌面最前端,展示了其在用户界面操作上的灵活性和实用性。
1. 大元模型根据系统提示和上下文建议使用苹果内置的提醒工具,用于设置新的提醒。 2. 用户计划利用该工具在五分钟之后提醒自己站起来走动,以促进健康活动。 3. 通过应用苹果的提醒功能,用户能有效管理时间,确保每五分钟进行一次身体活动。 4. 提醒工具的使用体现了对健康生活的重视,以及利用技术手段实现个人健康目标的策略。 5. 整个对话展示了如何利用内置工具来辅助日常习惯的养成,特别是与健康相关的行为调整。
1. 动态上下文在系统提示词中的应用,如时间、工具技能等动态信息的注入,以及如何根据模型缓存机制优化提示词组装,减少上下文负担。 2. 模型API提供的缓存管理参数,允许在提示词中加入“catch heat”字段,动态控制模型的开始计数,显著节省上下文空间。 3. 工具注册与编排的运行时机制,包括工具描述的优化、危险工具的用户确认执行流程,以及读写工具的并发安全控制策略。 4. 通过CRI、SDK等消费端实现远程控制和服务器模式,以及工具编排在实际应用中的并发安全与读写分离执行机制。 5. 使用工具时的校验流程,确保工具执行的安全性与效率,如CC中的文件读写状态判断,避免读取正在写入的文件。
1. 对话内容强调了在执行逻辑中对技能、插件、MCP等的校验,包括优先级与权限的审计,以及统一管理协议的重要性。 2. 提及了流式并发执行与进度渲染的高级功能,指出不同工具在渲染过程中的差异,以及CronCode在实现这些功能上的深度与优势。 3. 强调了消息驱动的agent loop概念,说明了多条消息组成长session的机制,以及权限、上下文压缩等关键点在不同体系与子系统中的详细展开。 4. 指出由于CronCode依赖于特定API,其功能实现受限于Ansop C API,但同时提供了管理MCP server进程与启动shell子进程的能力。 5. 总结了源代码的重要性,认为拥有丰富的源代码可以快速实现AI辅助功能,尽管其具体实现细节未深入讨论。
1. 权限管理中,权限最严格的用户将获得最终控制权,涉及精神关系和权限确认机制,确保系统安全运行。 2. 运行模式包括plan、auto和bypass permission模式,不同模式下权限的确认方式和优先级有所不同,影响操作执行。 3. 在hook中设置的权限与classifier内部定义的权限确认机制不同,前者为外部设定,后者基于模型分析工具是否需要人类或权限确认。 4. bash命令被视为最危险的操作,因其在命令行中可以执行任何mash命令,需要特别的权限管理和安全策略。 5. 整个权限体系设计旨在平衡系统功能性和安全性,通过多层次的权限控制和确认机制,防止未授权操作和潜在风险。
1. 介绍了规则引擎与权限管理,包括通过原子竞争选择最佳执行规则,以及五层上下文压缩技术,如sleep compact、micro compact、strip和context collapse,以优化资源利用和性能。 2. 阐述了codex上下文压缩的优越性,指出其在对话过程中持续并行压缩的优势,强调了大算力支持下的高效体验。 3. 解释了命令、skills和plugins的功能,说明了它们通过markdown文件实现快速索引、复杂技能描述和快速安装,以及如何利用这些功能增强智能体能力。 4. 描述了子智能体系统的通讯机制,指出智能体间的通讯通过文件进行,memory和session信息存储在cloud目录下的agents backups中,便于研究和理解。 5. 提及了新版本的彩蛋功能,包括虚拟宠物的引入,提供18种宠物选择,增加了用户登录时的趣味性和个性化体验。
1. 对话内容描述了一种将本地进程转换为24小时云端运行模式的架构设计,强调了通过远程端连接实现任务处理的能力,这与张老师提出的云架构理念相似,且在某些方面超越了现有的cloud code。 2. 提到了远程规划的概念,即将任务从本地迁移至云端,例如通过浏览器审批等操作,实现本地与云端的高效协同工作,体现了云服务的灵活性和高效性。 3. 对话中提及了AI在分析两个代码库时,发现了彼此的优势与不足,表明了在技术开发过程中持续学习与借鉴的重要性,以及对现有技术进行优化的必要性。 4. 强调了在架构设计上,已有方案与张老师的云架构理念高度吻合,体现了对行业发展趋势的深刻理解和快速响应能力。 5. 通过对比分析,指出了在技术实现上既有超越现有cloud code的地方,也存在可从cloud code学习的领域,体现了开放学习、持续改进的积极态度。
1. 对话中提到的张老师被指责比克劳扣更厉害,但张老师认为香农和香港的rap作品证明了其方法的有效性和独特性。 2. 张老师强调,通过深入研究,会发现香农和香农cloud(应为“香农cloud”)的实际应用并无问题,且效果显著。 3. 张老师澄清,他所提及的并非开源版,而是自有版本,暗示其技术或方法的独特性和专属性。 4. 张老师建议听众保持关注,表示将介绍更加强大和牛逼的功能,预示着未来有更多创新和突破。 5. 整个对话体现了张老师对自己技术或方法的自信,以及对批评的正面回应,展现出积极的态度和对技术深入研究的决心。
1. CRI作为工具直接运行,Go代码适合作为进程运行,演示了24小时常驻进程的实现,强调了进程在设备上的实际应用。 2. 通过slack或飞书等通讯工具向电脑发送指令,实现远程控制电脑操作,如打开应用程序,展示了远程操作的便捷性。 3. 介绍了客户端与本地引擎的连接机制,客户端通过APP形式,实现与常驻进程的通信,强调了本地引擎的重要性。 4. 实验展示了通过发送消息指令,实现打开浏览器并访问特定网站的功能,验证了系统的响应性和实用性。 5. 提及了将指令分析与大模型结合,以确定所需工具的过程,体现了系统智能化分析和工具调用的能力。
![image]()
![image]()
1. 在直播过程中,系统会检测到直播状态,并寻找发送推特的按钮,但有时成功有时失败,这需要被捕捉和优化。 2. 每次直播结束后,系统会尝试自动发送推特,但其成功与否不一致,这是需要重点解决的环节。 3. 为了提高推特发送的可靠性,必须对整个直播-发送流程进行捕捉和分析,找出失败的原因。 4. 通过捕捉和分析直播发送推特的过程,可以识别出系统在操作中的不稳定因素,进而进行改进。 5. 优化直播发送推特的流程,确保每次直播结束后的推特发送都能成功,提升用户体验和直播效果的一致性。
![image]()
![image]()
![image]()
1. 对话中提到的“ghost y terminal”是一个常驻进程,它正在通过web socket与cloud code进行交互,实现超越cloud的功能。 2. 该进程已经接收到来自slack的消息,表明它具备实时接收和处理外部信息的能力。 3. 智能体24小时运行,确保了持续的监控和响应能力,能够及时调用工具完成任务。 4. 通过询问手机端,用户试图了解电脑端ghost determines的具体操作,显示出跨设备协作的需求。 5. 对话强调了技术工具在不同设备间的联动,以及智能体在接收信息后执行特定操作的高效性。
1. 张老师被描述为一个超越他人,永远站在顶峰的人,强调其独立和卓越的特质。 2. 对话提到运行两个绘画任务的原因是设置了两个时间点进行绘画,这可能涉及到时间管理和自动化任务的设置。 3. 提到的CRI cloud generous ly skip permissions进程,运行了六分钟,没有问题,这表明对系统进程的监控和管理。 4. 对话中提出可以询问电脑内存情况,甚至设置监控文件夹变动的提醒,展示了对个人设备状态的监控需求。 5. 最后提到可以设置定时任务,这体现了对自动化执行特定任务的需求,以提高效率和管理时间。
![image]()
1. 设定定时任务,每五分钟执行一次,用于直播时快速查看Slack,通过自动化手段提升效率和监控实时性。 2. 通过设定每分钟的定时任务,测试并验证Slack窗口是否会自动弹至屏幕前,以确保任务设置成功。 3. 探讨化繁为简的方法论,总结通过阅读大量公众号、文章和开源实现,90%的人选择走捷径的原因,反映快速解决问题的心态。 4. 分析设定定时任务的实际效果,观察其是否能有效帮助用户在直播中快速切换至Slack,提升工作流程的流畅性。 5. 强调任务设置完成后,将Slack窗口置于屏幕后方的策略,以减少干扰,同时保持其在需要时能够快速调至前台的功能性。
1. 应用克拉克的SDK实现了功能,但需更深入理解多智能体框架,以实现微调和深度理解。 2. 作为应用层,需了解底层机制,如minus公司或自建A镇工具时,应掌握底层知识并能灵活应用。 3. 通过绘制和理解底层组件,可以更好地应用AI技术,即使不亲自编码也能有效指挥AI工作。 4. 张老师通过口述而非编码实现AI应用,体现了深入理解底层机制后,应用层操作的高效性。 5. 强调在AI时代,理解底层技术的重要性,以提升应用层的创新能力和灵活性。
1. 交付速度快导致普通代码和测试的价值下降,而个人经验与投入时间研究他人成果变得更为珍贵。 2. 面对开源代码,不同的人有不同的处理方式,从直接使用到深入分析并进行修改,体现了个人经验与投入时间的重要性。 3. 作者提出在处理代码时,先进行图形化分析,有助于模块化理解和进一步的代码优化。 4. 通过画图分析模块,可以更直观地理解代码结构,为后续的代码修改和优化提供清晰的思路。 5. 强调在快速迭代的开发环境中,个人经验、投入时间与深入研究成为区别开发者价值的关键因素。
1. 对话中强调了“知己知彼,百战不殆”的原则,指出在行动前理解目标和环境的重要性,这是后续所有步骤的基础。 2. 在实际操作中,如发推特的例子,即使初次尝试可能出错,通过调整和修正,最终可以达到预期目标,体现了实践与修正的循环过程。 3. 提及“harness”概念,将其理解为系统工程的一部分,强调了工具或方法在实现目标过程中的关键作用,以及持续优化的必要性。 4. 对话暗示,通过不断实践和调整,个人或团队可以更好地掌握和利用各种工具,从而在各种情境下取得成功。 5. 总结了对话的核心观点,即在任何行动前,充分了解情况并准备相应的工具或策略,是实现目标和避免错误的关键步骤。
1. 对话中提到的harness被解释为围绕中心的周边所有细节,这可能是指某种系统或框架的外围组件。 2. 提到定时任务的存在,表明在讨论的系统或研究中,定时执行的功能是已配置的,可能是为了自动化处理某些任务。 3. 强调了张老师对智能体研究的深入理解,以及有一本关于多智能体的书籍,显示了在智能体领域的专业性和资源分享。 4. 提议未看到相关书籍的人可以访问主页查看,表明了信息的可获取性和分享的意愿。 5. 对话最后表达了可以利用这些知识和技术做很多有意思的事情,展现了对未来应用的乐观态度和探索精神。
![image]()
1. 本次讨论聚焦于分析一个开源代码,该代码可直接使用,尤其适用于熟悉Node JS的用户,它封装了许多功能,但仅支持特定供应商的服务。 2. 对比之下,张老师提到的另一套系统在多语言支持方面更为突出,包括本地的欧拉玛,且该系统正在长期更新中,鼓励用户关注并给予star支持。 3. 张老师强调,即将发布的产品欢迎用户使用,旨在提供AI多智能体的学习资源,涵盖从原理理论到技术工程实践的全方位内容。 4. 通过对比,可以看出两套系统各有优势,一套在特定服务集成上表现出色,另一套则在多语言支持和持续更新方面更胜一筹。 5. 最后,张老师邀请大家加入学习AI多智能体的行列,承诺提供世界级的学习资源,无论是理论还是实践,都将一网打尽。 (内容由AI生成)
-
-
bilibili-LLM张老师(全文归纳):Claude Code 源码分析与复刻实现
-
首先我们看一看什么是agent的loop 。
就是一个大的while循环。就是当第一轮我的一个提示词进去给大语言模型之后,那大语言模型会输出个结果,对吧?输出个结果如果是对的的话,那我们就结束这一轮对话,结束了像普通的一个聊天一样。如果不对的话,就进入第二轮,然后再给LM然后它再输出结果,然后再判断,直到这个中间某个过程结束了,或者是它到了一个最大的轮数。比如说我们设定25轮,那这个就不能太长,你不能永远的烧token就作为临时的一个结果就结束了。
那其中怎么工作呢?假如说这个问题是,那你帮我查一下我本地我的电脑上有没有一个叫什么什么名的文件,对吧?(这个里面有比如说每一轮用户问题以及系统提示词,以及我们所有的工具,或者是可以调用的skills等等,在这里面扔给他)
然后交给大模型了,这时候大模型返回的结果是什么结果呢?因为他训练过了,他知道找文件这个应该调用什么样的工具。比如说叫做dash,或者是grap这个工具。这个工具是一个命令行的工具,它就可以在本地电脑或者是服务器上去搜某个文件名,那它返回的是这个工具,这个工具本地再执行一下,执行结果对不对?对了,那我就结束。不对的话我告诉模型说,你看上一波的结果检查出来这个,但是并没有你要的。然后模型说改一改,说那你用下一个工具等等这样的不断的循环。
这个loop本身就是agent loop。Cloud code就是把它下面加上很多多智能体,就是我一个任务,可能这个主智能体我拆分拆分成多步任务,给分配给三个子智能体,你分配分别去干什么什么,无论是并行还是串行等等,最新的这种teams swarm这些模式本质上都是一样,就是由一个智能体把任务分发下去。 这个是我们从架构层面上来看,也是cloud code做的最早,打磨的最好的(要比我觉得比minus和其他的了,都都更codex什么更细致的东西。)。架构就这个里面有系统提示词,上下文的压缩,有这个工具选择
工具选择,随着工具的增长,MCP等等越来越多。那么如何高效的去去去把工具的名字告诉模型,而不是去污染模型上下文。MCP也是一样,然后现在是已经变成动态的工具搜索了。比如说你有100个工具,那你不能一次每一轮把100个工具都给大元模型告诉他这个任务我有100个工具,然后每个工具分别怎么用的,然后模型把这些全读下来,那5万个token就没有了。他不断的在调这些的部分,就是把模型的名字,不是把工具的名字和一个一句话的描述扔给他,让模型看一下,那我这一百个里面我可能要调用第二个和第12个,再去把第二和第12个的工具的详细的内容再分别动态拿出来。这种东西就是harness,
还有记忆对吧?记忆你多少轮这个过程当中用户的一些话语,比如说强调了这个东西要记住,他就写入本地的markdown文件。然后记忆如果多了,行数太大,这个记忆文件太大怎么办?再把记忆文件抽成memory.md,每一行都是一个索引,然后这个索引指向了一个另外一个文件,那个markdown.md文件那个是整体的记忆的一个完整的内容,所以他不断的就做这个抽象和索引,他就干的这个事儿。
再有就是上下文压缩。随着你这个对话越来越长,你越来越多的时候,如何缓解上下文暴涨的问题呢?三个方向。
第一个方向是最简单的模型,现在已经从256K128K已经变到一个million了,所以它比较大,这是最暴力的方式。
第二个方式就是肯定是超过上下文以后做压缩。就你有很多很多轮长对话之后,他做一个压缩,这个压缩也并不是一个非常简单的,把所有的对话,128K的对话扔给大模型,你做个简单压缩,这个里面把重要的部分挑出来,不重要的部分去掉。比如说工具调用的结果,很多不重要信息的结果。比如说一个工具调用回来生成了一堆这个列表,那其实我不要的这个列表,我只要列表中的某一个文件,那么这个中层中间的过程工具的列表结果就不重要了。所以要把这部分扔掉,只压缩重要的部分,这样减少噪音,最大化我们这个token的信息密度对吧?最小化伤,这些是关于一记忆的压缩。
另外一部分就是把这个上下文长的时候,不要所有的任务在一个智能体做,把一部分的子任务丢给其他智能体。比如说这一个就专门做,我搜索一下文件,我看一下其中某一个功能对不对。然后看好了以后,他可能消耗了50万token,但他的结果只有5万token或者是5000 token,他回到这个主循环里来,然后再继续往下做,大概就是这样。
还有第四个忘了第四个部分就更暴力的就是你开多个cloud code窗口对吧?每一个窗口物理隔离和上下文。
基本上就这四种方法他在做,这些都是我们所常知的这些东西。。这就是刚才我说的所有的harness的部分的一些细节的拆解,这个也发到视频的下面先怎么样?这个张老师讲东西都是干货。
我们先看一下咱们自己实现一个已经实现了,并且这个是开源的,就叫来看看这个东西是不是markdown.md很像,只不过我们把它们滤出来了。
例子1:那我可以问他问题,我在哪个目录下?我问了一个问题,这个就相当于第一个round_1(循环1),它交给大语言模型了。他告诉我在这个目录下,对吧?在这个目录下中间有一个过程。就是当我把这个句话在round_1(循环1)交给大模型的时候,大模型输出的是PWD这个工具,就是打印一下当前的文件夹。就一个循环round一就结束了。
![image]()
例子2:那你可以继续问他,对比下openclaw对吧? ,这个可能是个比较长的一个任务,我们让他在这待着,也是一样,这个是第二轮对话,虽然说跟第一轮没关系,然后模型返回了一个工具,叫做用请用file read来读 文件。读哪些文件呢?读readme和一些比较重要的比如说cloud MD等等,这个是模型选择的,他已经能读我当前文件夹下所有的文件了。
然后他用了一个web search的一个工具去搜open cloud是什么,然后搜到了以后去fetch一下?这个open CLUD到底是什么东西。看到其他的open cloud的这个github的地址,所以他现在在搜集信息。两部分信息,第一部分是我本地的文件,是我这个rapper讲的是什么。然后第二部分是open cloud什么,它两部分这工具调用结果回来以后,他最后一步再对比。
所以你看这里面有多少个循环呢?虽然不是很精确,但是至少五六个循环了,相当于在这儿一轮不断这种循环。举个例子,假如说这是个比较重的任务,那么其中假如说这部分任非常重,它是一个深度搜索的感觉对吧?是地深度调研的感觉。那么这几步我们就可以把它扔给一个子智能体让他去做。那你去搜吧,你搜100个网页也好。你把你搜到的结果给我总结回来,然后提回来放到这儿来,我来做下一步的用处 。
这就是ShanCode,像open cloud一样,其实它就是一个cloud code CC我觉得它们是一样的东西啊不要被语言所迷惑。包括harness这个词,其实它也就是打磨的意思,所以不要被打磨所不要被新词所疑惑,就是打磨的意思。核心架构:
cloud code的核心架构是什么。最主要的就是个红色部分,就是一个它叫query loop,其实就是agent loop,一个循环。这里面是重要的文件,
首先它分了几层进来的时候,
![image]()
ShanClaw介绍
通过ShanClaw做演示query loop
query engine,其实就是入口这个文件。入口文件就是管理对话,对吧?然后就是刚建之前,你要查一下当前的消息数组,以及当前的文件缓存,以及用量追踪,这些放在最前面。因为用量追踪就是你一旦超量了,你就不能往下走了,他要让你付费。所以这些是最先级的,放在最前面,进入主循环。
query.ts主循环 它最近两周开始加了这个流式的输出了,以前都不是流式的,你要等,比如说token很长,你要等到最后他转转,然后一下子全部刷出来。最近是一行给我们往外刷,所以它先是API的流式输出,就是那个SSE,server side event SSE ,检查这个工具使用,然后工具使用结果的回填,这个是主循环所反映的
案例问题提问:打开这个打开chrome的浏览器览器,拿到桌面前面来。这个时候他调用了本另外一个工具,什么工具?就是控制苹果电脑这个工具叫做这个OSscreen。
这个有装了play red MCP以后就能完全控制自己电脑。MCP很多很多都可以叫,比如说跟open cloud一样的,我们叫做发设置一个提醒,设置一个提醒,五分钟后提醒我站起来走走。我之前试过这个,它就会调用一样的这句话提交给大元模型。大元模型根据 我的系统提示词和上下文来告诉我你要用一个工具,也是这个工具,还有application,这也是苹果内置的一个工具。什么工具呢?就是我的弹弹出来了,就是我的这个提醒这个东西,它弹这个一会儿它会设置一个新的提醒,五分钟之后。我们回到我们要讲的主要内容来。
然后第三部分是系统提示词的组装, 这里面总结比较简单,更多要看代码什么呢?就是提示词,提示系统提示词涉及到KV cache。那么系统提示词里我们知道经常会注入动态的东西。比如当前的时间,比如说他们叫dynamic boundary,就是动态的一些边界。动态上下文这个啥意思呢?就是你当前时间就是个动态上下文,然后还有很多可能加载的工具skills等等动态上下文这些东西。
在系统提示组装的时候,要根据模型的缓存机制进行组装。现在模型的缓存机制已经跟以前不同了,不是最简单的前面就给catch住。模型有一个就是专门管理cache的参数,并且能允许你在提示词里面加入一个字段,叫做cache heat,就是中间这个部分,你加入字段之后,这部分可以让你动态的不让模型开始数(读取),所以能大量的节省的这个上下文。这个是模型大模型的API端和我们自己做API的时候是两边同时提供的一个能力。
第四部分是之前都准备好了之后就开始组装请求。比如说这个请求组装也很有意思,实际就是这组装完以后就是要把所有东西发给IOM的一个API了。怎么请求呢?就是有个beta header,就是请求头是什么,可能装一些API key等等。然后tool schema对吧?工具的这个格式,然后我们的提示词缓存这样的,
第五部分然后进入循环控制就是对吧?Mark output就是最大的这个循环次数,然后一自动压缩这个就整体上前面是从准备到进入循环,然后来回这么循环。
![image]()
消费端
![image]()
一个是刚才我们说的这个CRI,就是这个东西会消费的对吧?你用cloud就是CRA是一个消费端,
然后SDK我们知道cloude code SDK也是在消费端,然后它可以现在可以远程了,对吧?就云端就是你可以在CRI里面打,这个叫做remote control,就remote它就跑到云端去了。Server mode就是服务器端,这个spring节点,这我还不知道是什么。
Remote control,就是刚才说的remote control,这个是web。
另外这里面都是消费端,就是这个A的循环之后谁去用它,谁都行。你要用CRA你就CRA用,你要是这个APP用就APP用这个意思。
![image]()
工具
主要的讲讲了一个关于工具的运行时,这个东西是harness的一部分。
工具要注册,就是现在claude code面自带了大概二三十种工具,每种工具要提前注册,简单来说就是刚才我说的feature gate里面要排序,并且工具尽量要固定顺序。因为你固定顺序跟系统提示词这个prompt catch也有关系。并且工具其实有很长的描述,描述部分都不放在里头,描述部分放在另外一个地方,给的是工具名字和一句的简单的介绍。然后把这些东西二十多个,你想想三十多个工具,名字加介绍加起来大概比如说几百个token。那二十多个工具几千个token了,对吧?所以就不能太大的,所以三十多个工具几千个token了,所以它放的给系统提示词里面放的是这样的一些东西。
如何去orchestrate编排这些工具,就是并发安全,读写分离执行,这个是一些harness部分。有一些工具是危险的,有些工具是不危险的那不危险工具可以默认执行,危险的工具需要用户点确认,对吧?就是刚才我们这点的yes和no这个道理点确认。还有一些工具是默认这个不能执行的,一定就是你pass掉,也让你确认一下。
还有他把工具分为两类,就是读写分离,就是读的工具和写的工具它们分成两类。这可能在编排的时候不能同时进行的。意思就是一旦有写的工具在写的时候判断到了,那么读的工具就给lock住,先不读写完了这个读的工具才去会去读。这就是我们在运用CC的时候,你发现它经常会你编排了改了一个文件之后,另一个session直接读出来了,是为什么呢?是因为它能他能知道这个文件在写的状态,所以他就不去读。
然后关于使用工具的校验to execution。比如说现在CC就已经很复杂了,我们里面有这种工具对吧?命令。就是斜线斜杠的命令,有skills,还有plugin,还有MCP等等。所以它要校验这个还包括还有hook,所以他要校验这个优先级以及权限这一系列的东西,这OTEL是是审计,所以这一系列东西的校验它写在to execution这个逻辑里面。
然后所有的工具要统一的协议,这个方便统一管理,就是呼叫加上检查它的权限。Render就是在UI上怎么显示出来,不同的工具展示的UI效果不同CRI上,是否是只读,就这些东西细节就不看了。
然后streaming to execute就是在流式中并发执行,进度渲染,这个是很牛逼的。就是你的工具的结果,它是随着逐步的输出去渲染出来。这个涉及到这么多不同的工具,每种工具我觉得分不同的类型渲染出来的这个过渲染过程还是不一样的,非常不同。所以这些东西是克朗code,它可能比较比我认为比等等其他的工具要做的更深更好的地方。所以现在也有源代码了,咱也不知道源代码是不是最丰富的。有了它之后就可以完全很快的让AI帮我们实现出来一模一样的功能。
![image]()
当然它有个限制,因为colour code是open这个answer pic自己的,所以它只支持安sop c的API。然后它有管理MCP server的进程,对吧?像play right MCP等等本地文件系统,然后它能启动一个shell子进程。
![image]()
好了,这些就不说了,整体这边是个总结,就是红色部分就是agent loop,也就是消息驱动。所有东西都是一个消息,多个消息组成了一个长的session,就这样的一个意思。
![image]()
具体拆分下来以后,关于权限,上下文压缩,然后这个不同工具skills等等不同体系不同的分类,以及多A着的子系统,这些是详细的展开。
比如说权限竞争,因为cc已经非常复杂了,它有好多设置权限地方。所以他们权限不同的一个进来之后,你有不同的设置的时候,那就是涉及到竞争关系。
那么谁赢呢?就是权限最最紧的那个人会赢。他这个permission mode要try很多地方。比如说你当前运行的模式,你是plan模式还是auto模式,还是bypass permission模式,对吧?这个时候是叫权限的确认。有的时候你在hook里面会设置权限,然后classifier这个是它内部定义好了,就是要用模型来分析某些工具是不是需要人类确认,是不是需要权限确认,所以这两个完全来路不同。
然后第三个是bash class fer,就是最危险的是bash命令。也就是说你在命令行里面,其实它可以运行任何的这种mash命令,对吧?它可以RMA remove the whole hold,这样的话就是危险的命令,这种命令是默认这肯定是不准许执行的。
还有规则引擎,就是事先写好的一些规则,对吧?我们你好,就是我们在这个cloud的点come Jason里面定义的那些config有一些你可以让执行,有些不执行,这是C4的引擎。所以这些东西在一起要通过一个atomic竞争的关系,看哪个风险哪个是把关把最好的然后去执行。这个是全新竞争,就是权限管理这个方向。
上下文压缩刚才简单说了, 它有五层上下文压缩。从源代码来看,
第一个就是sleep compact。以前旧的这个工具的结果只保留结构不保留内容,这个很很合理。旧的工具的结果很可能已经没有用了。
然后micro compact就是微压缩,什么意思呢?把旧的这个工具结果然后通知catch。这个有意思了,就是strip,strip就是给它剪裁变小缩下身 ,然后把一些结果放到cache里面去。Cache可能在内存,也可能在文件,这个不确定,再读一下代码,但是这个cache数据就是他认为这个部分是有用的。我先在主线上面压缩掉,我不丢失它,我给它放在旁边。然后以后同一个session或者是子智能体,它可以动态调用。
然后最最简单就是context collapse,就是对话折叠折叠完成这个折叠字面的意思应该就是压缩的意思,然后就是触发。比如说触到85%,它就触发这个压缩进行摘要,这个是PTL point错误触发。
这个不太知道什么意思,就是关于上下文压缩。但是其实体现起来很多人说codex上下文压缩比这个克拉寇要好,因为克劳扣压缩的时候非常慢。Codex是一个进展式压缩,其实它在你使用的过程当中不断压缩。我认为codex这个体验是好,但是它后端应该应用的更大的这个算力在这儿并行。在你跟他对话的同时,他在对你压缩,
然后这个四个不同的扩展,其实本质上来说差不多过就是命令命令就是这个东西,命令自定义的。然后skills也是动态去发现的,然后plugging插件,还有MCP cline这些东西本质上都是mark down,就提我的一句话就行了,本质上来说都是mark down。
这个mark down它有不同的功能。比如说command就是快速的索引一个markdown文件,你把它这个markdown文件设置成斜杠review,那么它就触发去读这个mart文件里的内容。这个文件写好了,如何去review我的代码这个意思。
Skills比一个marketing文件来说它复杂一点。它会有一个标题,一个简介,这个东西扔给大模型的系统提示词,然后有一个详细很长的内容,这个就是关于它的skills内容。比如说这个skills如何使用飞书的在线文档,那这个东西模型可能不太知道,或者说他训练的时候没有训练到最新的飞书文档版本,那么飞书就可以写一个skill,就告诉模型你要访问那个网址,然后调用什么样工具或者API工具,然后能访问什么样的文件权限,什么样的写。这里头甚至于有一些skills会给你再套几个拍送脚本,告诉你如何正确的调用,甚至是CIR的命令行工具,这就是skills。
Plugins本质上就是这些东西的快速安装,没啥,
然后MCP我不讲了。
然后子系统这个是它的一个特色,但是也比较简单,它是子系统所有的memory,或者说the session不是内存里,就是文件里,然后他们智能体之间的通讯是通过文件通讯录,就是这个mailbox也是存在文件里的,这个在哪儿呢?你就可以这么看它一下,看你自己的目录下的这个cloud,对吧?Cloud目录然后。应该是这个里头agents black ups,好了,应该去每一个session里面,每一个session里面,你看这个memory,你的plans每一个session里面去找.
新版本有几个新功能,一个是虚拟宠物,虚拟宠物它命了有18种命名宠物,就是像你刚登进来的时候,刚登录进来的时候就这个东西一样,就虚拟宠物,然后每个人整个形象,看你运气能不能选到这个最好的宠物。具体怎么实现的不知道,但现在用不了,它没有开那个端口,
常驻智能体,这个东西其实我从字面上理解就是一个open code。因为class code也在走open call这条线。就是你你现在我们不是要长期给它打开,对吧?你打开一次,你每次进来还得cloud code,cloud打开,那么它把它做成一个进程,24小时运行的。这样你可以通过其他的端去连接它。其实本质上就是open cloud这样的一个模式。
远程规划其实就是把这个一些任务,你看30分钟,浏览器审批,就是把这些任务从本地拉到云端。所以你看他们的他这个方向,就是本地的进程24小时运行,同时配合云端。
ShanClaw更牛逼的地方
这个功能实际上是运行的CRI对吧?
Go代码最适合作为一个进程运行起来。实际上它就是一个demo这个进程。所以我现在电脑里面已经运行了一个这样的进程,这个进程就是刚才answer bic(常驻智能体)所彩蛋里面所要做的24小时的进程。
那我现在已经电脑运行了,那我怎么用它?实际上我可以通过,比如说slack,我可以通过飞书往我的电脑里面传东西,就跟open cloud效果是一样的。然后电脑里面就会操作我的电脑,比如说帮我打开这个,打开那个干什么?并且我们可以通过一个客户端,这个是一个客户端,这个是一个苹果端的一个APP native APP。好,他在干嘛呢?它在连接本地的引擎,就是这个引擎,这个引擎就是刚才给大家看的这个东西,它只不过不通过CRI我给它常驻进程了,在运行上那么。
我发个消息,咱们就来试验,就是打开浏览器进入推特,x com发一条推,我在直播,就是这个东西回到我们刚才讲的AJ loop里面来,先给大模型分析一下,你都需要什么工具。第一个工具就是brother navigate这个工具,这个工具是我写好的工具,所以这个浏览器其实已经打开了,我们放在这儿,我手也不动它。大家看看他打开了twitter,他再点击就是看这个部分,在不断的调用这工具。然后我在直播,看左边这块它显示我在直播,他会找到那个按钮,点击8,然后帮我把这个推特给他发出去。就是我在直播发完之后他会确认一下。
其实这每一轮这个过程,这个就是所谓的harness地方,这个我要harness了,为啥呢?因为他打了两次,我在直播有的时候成功,有的时候失败,这个是需要harness的地方。Harness这个词你看我总说为啥呢?因为我在讽刺这个词,因为他是作为工程师,每一天都在脑子里,东西现在被重新包装出来了。
你说你看他自我反思,自我重新调整变成正确的,这个说明你看还是很强的,推文已经完成,已经发布到X了,然后我们可以让它做很多事情打开。比如说打开flag,slack是一个一个软件,就是你苹果店里装的软件。那么它的去运行的命令,你看自动把我这个slack给打开了,就是打开了我的slack很有意思。然后那既然打开了,我们就可以干嘛呢?可以在这儿,假如说你现在这个slack是你手机上的飞书,一样的道理。我电脑的terminal,就有一个叫ghost y terminal。在干什么在干什么?假如说你现在不在电脑上,那你在手机上,那你就问一下我的电脑的ghost determines在干什么。
大家注意一下,我已经这个是你常驻进程的一个东西,他已经收到了我来自slack的一个消息,对吧?一个消息,那么你就在这个电脑上,你这个智能体24小时运行的,它就在运行了,我看看他回复我了在干嘛呢?它正在调用这个工具,实际上这个就是一个web socket的过程,跟cloud code一样超越cloud的地方。大家一定记住,张老师不是跟随别人的人,张老师是超越永远站在顶峰的人根据进程可以看到,运行一个绘画两个绘画对吧?为啥两个绘画呢?因为我两个time两个绘画。
当前运行的CRI cloud generous ly skip permissions,该进程占用了多少内存,运行了六分钟没问题,很好。然后你可以再继续问他假如你的手机上我电脑内存情况,你不知道你电脑什么情况,你就可以问他你电脑内存情况,甚至于你可以让他监控你的文件夹什么文件名动了,然后第一时间给我发个消息,或者是你设一些定时任务,你什么定时任务?设定时任务,设定时任务每隔五分钟。咱干点什么呢?咱们每隔五分钟,每隔一分钟,每隔一分钟,这样的话我们直播时间看的比较快了。
打开一次slack,并且放到前面,并且放到屏幕前。好,那我一会儿就把它这个放到屏幕后面去,我看看每每隔一分钟它会有个定时任务,对吧?我看看任务设置成功没,如果设置成功的话,它每一分钟它就崩,把我这个屏幕就给调前面来了。好看一下,这也是creating schedule。好了,设置完任务了。好,那我就给它放到底下去,一会儿看它弹不弹出来。
我们先回到这个里面来,所以化繁为简,我们看了很多公众号,我们看很多文章,我们也看了很多开源的实现,走捷径的占90%,为什么呢?你用克拉克的SDK作为底层,你实现一个东西没问题,这个很好,它的目的就是这样。但是这不是所谓的你可以去深度理解,甚至是微调的这个多智能体框架对吧?
你是一个应用层,你不是做A正层的。如果是像minus等等这样的公司做A镇层,或者你自己的公司要自己的A镇工具的话怎么办呢?你一定要了解底层的机制,像我一样把这些东西画出来,都知道每一个东西是干什么的,同时把它应用进来。
现在有AI了,其实张老师已经半年多不再写一行代码了,全是口喷,对吧?现在口喷都有点懒了,已经,交付的速度非常快,所以说重要不值钱的代码就变得不值钱,测试变得也不值钱。因为你循环的非常快,值钱的是经验,值钱的是你愿意花的时间去读去研究别人东西,这个时间是变得值钱了。
同样的一个东西出来,这个开源代码出来了,我相信现在很多人都在看,让不同的人看有不同的结果。有的人可能马上上来,我要给我AI分析一下,然后跟我代码互不对比一下,改一下等等。其实我第一步先画图,我画图画出来了,我模块分析出来了,针对每一块我可以让他继续画图,对不对?我现在有的是什么他没有的,他有什么我没有的,我需要改的,这个就非常循序渐进。
你对知己知彼百战百胜。那么最基本原理是这个之后每一步可以去延伸的部分非常多。你只要做了,你只要做用自己做的东西之后,你就会发现这一步当中,我这个工具结果不对,我要改改。就像刚才我们用的时候?这个发推的时候,刚才技术发推的时候,第一次不是发错了吗?发了两次,我在直播,我在直播,但是他最后调整回来了。这个过程也是我在中间做的,所谓的harness,其实就是工程系统工程。
那么harness是什么呢?就是周围着周边所有的细节,这个东西就是harness。刚才没给我弹出来,我们我们来看看为啥没弹出来,定时任务里有没有,有啊,有定时,那没关系,那就可能是我当时在按别的东西放在那儿。可以,就可以做很多很多很有意思的东西。这个智能体研究,张老师研究很透了,而且我还有一本书没有看到的话,可以上我的主页上去看,讲多智能体的这本书。这两个合在一起可以做很多很多的事情,今天主要是来分析这个开源代码,但是如果你觉得cloud和开源代码你可以直接用,因为那个是node JS的,大家可能更熟悉一些。
没问题但是它有很多的东西是它封装好的,并且只支持安thorpe一家的这种。比如说它的流式输出,比如说他接API接口。而张老师的相同和相抗这两个东西相抗在哪呢?这两个东西相抗在这儿,我这两个是支持多语言的,包括本地的欧拉玛这两个,大家可以截图然后去关注看一下。
这个是长期更新,大家一定要点star。之后这个产品即将发布,欢迎大家来使用。好了,今天就讲这么多,跟着张老师一起学习AI多智能体,无论是原理理论还是技术工程实践,世界第一,拜拜。
(内容由AI生成)
-
- 面试问题(自编):
- 为什么企业不用市面上现成的大模型 和 agent ,一定要公司自己部署?
- 2131
- 1
-




















浙公网安备 33010602011771号