Claude Code 核心推理流程解析:从 AI 编程助手到 Agent Runtime,再到大数据平台智能化
Claude Code 核心推理流程解析:从 AI 编程助手到 Agent Runtime,再到大数据平台智能化

前言
很多人第一次使用 Claude Code 的时候,会觉得它像一个“会写代码的命令行助手”。
你输入一句话:
帮我修复这个 bug
它可能会自动读取文件、分析代码、执行命令、修改文件、跑测试,最后给你一个结果。
表面上看,这像是大模型在“直接写代码”。
但如果仔细看它背后的运行方式,就会发现 Claude Code 并不是简单地把用户问题丢给模型,然后等模型回答。它背后其实是一套完整的工程流程:
用户输入
↓
构造系统提示词
↓
组装上下文消息
↓
调用大模型
↓
模型判断下一步动作
↓
如果需要,调用工具
↓
执行工具
↓
把工具结果重新交给模型
↓
继续推理
↓
直到任务完成
也就是说,Claude Code 的核心不是“单次问答”,而是一个由:
LLM
工具系统
上下文管理
权限控制
任务循环
错误处理
历史压缩
共同组成的 Agent Runtime。
如果只从普通开发者角度看,它是 AI 编程助手。
但如果从工程架构角度看,它更像是一个轻量级任务编排系统。
如果再从大数据平台工程师角度看,它甚至和我们熟悉的 Spark、Flink、Hudi、Hive、调度系统、任务状态管理、失败重试、权限控制有很多相似之处。
这也是我觉得 Claude Code 真正值得研究的地方。
它不是简单告诉我们“AI 会写代码了”,而是告诉我们:未来 AI Agent 真正落地,靠的不是一个很长的 Prompt,而是一整套工程系统。
一、先理解几个核心概念
在分析 Claude Code 的执行流程之前,先把几个基础概念讲清楚。
这些概念看似简单,但它们决定了 Claude Code 为什么不是一个普通聊天机器人。
1. Query:一次完整任务执行周期
Query 可以理解为一次完整的任务执行周期。
它不一定只调用一次模型。
一个 Query 里面,可能包含多次模型调用、多次工具调用、多轮上下文组装。
例如用户输入:
帮我修复登录接口 bug
Claude Code 可能会经历这样的过程:
第一次模型调用:分析问题,判断需要读取文件
第一次工具调用:读取登录相关代码
第二次模型调用:发现需要查看配置文件
第二次工具调用:读取配置文件
第三次模型调用:定位问题,决定修改代码
第三次工具调用:编辑代码
第四次模型调用:判断需要验证
第四次工具调用:执行测试命令
第五次模型调用:根据测试结果总结修复情况
这一整套流程,才是一个完整的 Query。
所以 Query 不是一次问答,而是一次任务生命周期。
这一点非常重要。
因为我们很多人理解 AI 编程工具时,还是停留在:
我问一句,AI 答一句
但 Claude Code 的模式已经变成:
我提出目标,Agent 自己拆解、执行、反馈、再执行
这就是普通聊天工具和 Agent 工具的区别。
2. Turn:用户和模型的一轮交互
Turn 可以理解为一次用户和模型之间的交互轮次。
用户输入一句话,模型响应一次,这可以看成一个 Turn。
但在 Claude Code 里,一个 Turn 内部可能发生很多事情:
模型分析
工具调用
读取文件
执行命令
修改代码
运行测试
再次推理
所以表面上看是“一轮对话”,内部其实可能已经完成了一组复杂任务。
这也是很多 AI 编程工具让人感觉“它自己在干活”的原因。
3. Task:后台任务
Task 是后台任务。
比如:
执行一个长时间运行的 Bash 命令
启动测试
运行构建
执行 npm install
启动子 Agent
分析大量文件
这些任务不一定马上结束,可能需要持续监听状态。
这就很像大数据平台里的任务。
比如 Spark 任务、Flink 任务、Hudi 写入任务,都不是提交后立刻结束,而是要关注:
任务是否启动
执行是否成功
日志有没有异常
资源是否够用
失败是否需要重试
最终状态是否回写
Claude Code 里的 Task 管理,本质上也是类似问题。
4. Tool Use:模型请求调用工具
Tool Use 指模型主动请求调用工具。
模型本身不能直接读取你的文件,也不能直接执行命令。
它只能表达意图。
比如模型判断自己需要读取文件,它会发起一个工具调用:
Read("src/main.ts")
然后 Claude Code 负责真正读取文件,把结果返回给模型。
模型再根据读取结果继续推理。
这就是 Agent 的基本工作模式:
模型负责判断
工具负责执行
执行结果再进入下一轮判断
这也是 Claude Code 比普通代码生成工具更可靠的地方。
普通模型可能会“猜”代码结构,而 Claude Code 可以真的去读文件。
普通模型可能会“假装测试通过”,而 Claude Code 可以真的去执行测试命令。
5. System Prompt:系统级行为说明书
System Prompt 是系统级指令。
它会告诉模型:
你是谁
你能做什么
你不能做什么
你有哪些工具
什么时候应该调用工具
什么时候不能乱操作
遇到危险操作怎么办
如何写代码
如何处理用户请求
如何控制输出风格
很多人以为 AI 编程工具强,是因为模型本身强。
这只对了一半。
真正成熟的 Agent 系统,除了模型能力,还必须依赖系统提示词、工具编排、权限控制、上下文管理。
如果没有这些东西,模型再强,也容易变成一个“不受控的聪明人”。
而工程系统最怕的不是“不聪明”,而是“不受控”。
二、Claude Code 的整体执行链路
Claude Code 的整体执行链路,可以先用一个简化流程理解:
1. 应用启动
↓
2. 构建系统提示词
↓
3. 接收用户输入
↓
4. 组装消息上下文
↓
5. 压缩历史消息,控制 Token
↓
6. 调用 Claude API
↓
7. 解析模型流式响应
↓
8. 如果模型请求工具,则执行工具
↓
9. 把工具结果写回消息
↓
10. 再次调用模型
↓
11. 没有新的工具调用后,输出最终结果
这套流程的关键点是:
模型不是一次性完成任务,而是在不断“分析 — 调用工具 — 观察结果 — 继续分析”的循环中完成任务。
这正是 Agent 和普通聊天机器人的根本区别。
普通聊天机器人更像:
输入问题
↓
输出答案
Agent 更像:
输入目标
↓
拆解任务
↓
调用工具
↓
观察结果
↓
调整方案
↓
继续执行
↓
完成目标
这也是为什么 Claude Code 能处理一些复杂工程任务。
它不是靠一次回答赌对,而是通过多轮反馈逐步逼近正确结果。
三、核心模块可以简化理解
Claude Code 的源码涉及很多文件,如果直接看源码,小白会很容易迷路。
我们可以把它简化成几个核心模块。
| 模块 | 作用 |
|---|---|
main.tsx |
应用入口,负责启动 CLI 或交互界面 |
query.ts |
核心推理循环,Claude Code 的主控制器 |
systemPrompt.ts |
构造系统提示词 |
messages.ts |
处理消息格式和历史上下文 |
attachments.ts |
处理文件、记忆、图片、MCP 资源等附件 |
claude.ts |
调用 Anthropic API |
StreamingToolExecutor |
流式工具执行器 |
toolOrchestration.ts |
工具编排逻辑 |
tools/* |
各类工具实现,例如 Bash、Read、Write、Edit |
tasks/* |
后台任务实现,例如 Shell 任务、子 Agent 任务 |
如果只看主线,最重要的是这几个:
query.ts
systemPrompt.ts
messages.ts
attachments.ts
claude.ts
toolOrchestration.ts
StreamingToolExecutor
其中,query.ts 基本可以理解成 Claude Code 的“大脑中枢”。
它不是模型本身,但它负责控制模型怎么被调用、工具怎么执行、结果怎么回填、循环什么时候结束。
如果用大数据系统来类比,query.ts 很像一个轻量级调度器。
它不真正执行所有计算,但它控制整个任务生命周期。
四、queryLoop:真正的核心推理循环
Claude Code 的关键,不是某一个工具,也不是某一段 Prompt,而是 queryLoop() 这一类主循环。
它负责把整个任务串起来。
简化之后,大概是这样:
初始化状态
↓
预取记忆和 Skill
↓
整理历史消息
↓
检查 Token 限制
↓
准备系统提示词和工具
↓
调用模型
↓
处理模型输出
↓
执行工具
↓
把工具结果放回上下文
↓
继续下一轮
这个循环就是 Claude Code 能“持续干活”的核心。
1. 状态初始化
每次进入主循环时,系统会先准备一些运行状态,比如:
当前消息列表
当前工具上下文
当前是第几轮对话
是否触发过压缩
是否有待处理的工具结果
是否有 Token 预算限制
是否处于停止或恢复状态
这些状态保证 Claude Code 不只是“问一次答一次”,而是可以维持一个持续运行的任务过程。
这和大数据任务也很像。
一个 Flink 任务、Spark 任务、Hudi 写入任务,也不只是提交一下就完事。它需要维护:
任务状态
执行进度
失败原因
资源使用
checkpoint 状态
commit 状态
日志输出
最终结果
工程系统的复杂性,往往就在状态管理里。
AI Agent 也是一样。
真正难的不是让模型回答一句话,而是让它在复杂任务中保持状态不丢、不乱、不重复执行危险动作。
2. 预取记忆和 Skill
Claude Code 不会等到真正需要时才临时加载所有信息,而是会提前预取一些可能有用的内容。
主要包括:
记忆预取
Skill 预取
相关上下文预取
这样做的好处是:
减少等待时间
让模型更早拿到有价值的信息
避免每轮都重复扫描大量内容
对长任务更友好
可以把它理解为:
在模型正式开始干活之前,系统先把可能用得上的资料准备好。
这和大数据任务里的预加载、元数据预取、缓存机制很像。
比如一个数据平台在执行任务前,往往会先获取:
表结构
分区信息
权限信息
数据源配置
任务依赖
历史运行状态
否则任务执行到一半才发现元数据不完整,就会非常低效。
Agent 也是一样。
上下文准备得越好,模型越不容易乱猜。
3. 历史消息压缩
Claude Code 经常要处理很长的上下文,比如:
用户历史对话
文件内容
工具执行结果
Bash 输出
测试日志
代码片段
记忆文件
Skill 内容
这些内容如果全部塞给模型,很快就会超过上下文限制,也会浪费大量 Token。
所以 Claude Code 会做多层压缩。
大致可以理解成:
原始消息
↓
工具结果预算控制
↓
History Snip
↓
Microcompact
↓
Context Collapse
↓
Autocompact
↓
最终发送给模型的消息
不同层级的作用不同。
| 压缩层级 | 作用 |
|---|---|
| Tool Result Budget | 限制工具返回结果的长度 |
| History Snip | 删除中间不重要的历史内容 |
| Microcompact | 轻量合并和清理消息 |
| Context Collapse | 把旧对话折叠成摘要 |
| Autocompact | 上下文快满时,让模型生成摘要 |
这套机制很重要。
因为 Claude Code 能不能跑长任务,很大程度取决于它能不能管理上下文。
我的个人理解是:
Agent 的长期能力,不只是模型上下文窗口有多大,而是系统怎么治理上下文。
这和大数据领域也很像。
数据量变大之后,不能什么都全量扫,必须做分区、索引、裁剪、压缩、冷热分层。
Agent 上下文也是一样。
不是把所有东西塞进去就好,而是要知道:
哪些信息必须保留
哪些信息可以摘要
哪些信息可以丢弃
哪些信息需要按需召回
这才是工程化能力。
五、系统提示词:Claude Code 的行为说明书
很多人以为大模型写代码靠的是模型能力。
其实只对了一半。
在 Claude Code 里,System Prompt 非常关键。
它像一份“行为说明书”,告诉模型应该如何工作。
大致包含这些内容:
基础角色定义
系统规则
编程任务规范
工具使用规则
MCP 服务器说明
Skills 说明
用户自定义提示词
1. 基础角色定义
系统会告诉模型:
你是一个帮助用户完成软件工程任务的交互式 Agent。
这句话看似普通,但作用很大。
它把模型的角色从“聊天助手”变成了“软件工程协作 Agent”。
所以它后续的行为不是闲聊,而是围绕代码、工程、工具和任务交付展开。
这也是 Prompt 的第一层价值:定义角色边界。
2. 系统规则
系统规则主要约束模型行为。
例如:
工具调用之外的文本会展示给用户
工具执行受权限模式控制
system-reminder 这类内容来自系统,不是用户
如果发现提示词注入,要提醒用户
用户可能配置 hooks
上下文过长时系统会自动压缩
这些规则的核心目标是:
让模型知道什么是用户输入,什么是系统信息,什么是工具结果,什么是安全边界。
这对 Agent 非常重要。
因为 Agent 不只是回答问题,它还会读取文件、执行命令、修改代码。
如果边界不清楚,就容易误操作。
3. 编程任务规范
系统提示词里会特别约束模型写代码的方式。
比如:
不要过度设计
不要做用户没要求的功能
不要随便重构
不要为了一个小场景抽象一大套框架
不要无意义增加复杂度
这个设计非常工程化。
很多 AI 写代码的问题不是“不会写”,而是“写过头”。
比如:
用户只想修一个 bug,它顺手重构半个项目
用户只想加一个字段,它设计了一套复杂框架
用户只想跑个命令,它开始改目录结构
用户只是问原因,它直接动手改生产配置
所以 Claude Code 的提示词会不断强调:
按需修改,避免过度工程化。
这一点我个人非常认同。
尤其是做企业项目和大数据平台时,最怕的不是代码不够“高级”,而是改动不可控。
很多时候,一个简单、可解释、可回滚的方案,比一个“看起来很高级”的方案更适合生产环境。
4. 信任边界
Claude Code 还会要求模型区分哪些东西需要校验,哪些东西不需要过度校验。
需要校验的包括:
用户输入
外部 API 返回
文件系统内容
网络请求结果
命令执行结果
第三方工具返回
不需要过度校验的包括:
内部类型安全的函数参数
明确由当前代码生成的中间结果
已经通过上游校验的数据
这就是工程里的“信任边界”思想。
不是所有地方都加校验,而是在真正不可信的边界加校验。
这和后端系统、大数据平台完全一致。
比如数据平台接入外部数据源时,必须校验字段、类型、权限、格式。
但内部经过强约束的对象,就不需要每一步都重复做无意义校验。
好的系统,不是到处加防御,而是知道在哪里防御。
5. 高风险操作必须谨慎
Claude Code 会特别约束模型在危险操作前进行确认。
比如:
rm -rf
git reset --hard
git push --force
DROP TABLE
生产环境部署
修改 CI/CD 配置
上传内容到第三方服务
删除大量文件
清理数据目录
这些操作一旦执行,可能很难恢复。
所以正确行为不是直接执行,而是先提醒用户确认。
例如:
我将删除 feature-old 分支,这个操作不可恢复。是否确认?
这就是 Agent 工程化中非常重要的一点:
Agent 不是越自动越好,而是要在合适的地方自动,在危险的地方停下来。
这也是我看企业级 Agent 的一个核心判断。
AI 可以提高效率,但不能绕过权限、审批、确认和审计。
尤其是大数据平台里,涉及:
删除 HDFS 目录
DROP Hive 表
清理 Hudi 文件
重启 Flink 任务
调整生产调度
导出敏感数据
修改数据血缘
这些操作绝对不能让 Agent 靠一句自然语言就直接执行。
真正可用的 Agent,必须懂得“停下来”。
6. 工具使用规则
Claude Code 会要求模型优先使用专门工具,而不是随便用 Bash。
比如:
| 任务 | 推荐工具 | 不推荐方式 |
|---|---|---|
| 读文件 | Read | cat/head/sed |
| 改文件 | Edit | sed/awk |
| 创建文件 | Write | cat <<EOF |
| 查找文件 | Glob | find/ls |
| 搜索内容 | Grep | grep/rg |
| 执行命令 | Bash | 只有无专用工具时使用 |
为什么要这样设计?
因为专用工具的输出更结构化,更容易审计,也更容易控制权限。
Bash 虽然万能,但副作用也更大。
这和数据平台里的 Connector、Operator 很像。
理论上你可以让用户写任意脚本解决所有问题。
但真正的平台不会这么设计。
平台会提供结构化能力:
数据源连接器
SQL 执行器
文件导出组件
权限校验组件
调度组件
质量检查组件
因为结构化能力更容易治理。
Agent 工具系统也是同样逻辑。
六、系统提示词为什么要做“动静分离”?
Claude Code 的系统提示词并不是一大坨字符串直接拼起来。
它会区分静态内容和动态内容。
1. 静态内容
静态内容包括:
角色定义
系统规则
任务规范
工具使用说明
输出风格
安全边界
这些内容变化不大,适合缓存。
2. 动态内容
动态内容包括:
当前工作目录
Git 分支状态
启用的工具
MCP 服务器状态
记忆文件
当前会话信息
环境状态
这些内容每轮可能变化,不适合长期缓存。
所以系统会通过类似边界标记的方式,把提示词分成两部分:
静态提示词
↓
动态边界
↓
动态提示词
这样做有两个好处:
降低成本:静态部分可以复用缓存
降低延迟:不用每次都重新处理完整提示词
这说明 Prompt 工程已经不是简单“写一段提示词”了。
真正工程化的 Prompt,要考虑:
缓存
动态拼接
上下文变化
成本控制
延迟优化
可维护性
我觉得这一点对做企业系统很有启发。
以后我们做内部 Agent,不应该把 Prompt 写成一个几千行的大字符串。
更好的方式应该是模块化:
基础角色 Prompt
安全规则 Prompt
领域知识 Prompt
工具说明 Prompt
当前任务上下文 Prompt
用户个性化 Prompt
然后按需组合。
这才是可维护的 Prompt Engine。
七、消息组装:真正烧 Token 的地方
系统提示词只是规则。
真正每轮都在变化的是 Messages。
Messages 里面会包含大量动态内容:
用户输入
历史对话
文件附件
相关记忆
Skill 推荐
工具结果
计划模式提醒
Token 使用情况
后台任务通知
系统上下文
可以简单理解:
| 类型 | 作用 |
|---|---|
| System Prompt | 告诉模型怎么工作 |
| Messages | 告诉模型当前发生了什么 |
System Prompt 更像“规则手册”。
Messages 更像“现场材料”。
1. 用户上下文
Claude Code 会把一些上下文信息注入到消息中,比如:
当前目录
Git 分支
环境变量
会话元数据
示例:
cwd: /path/to/project
git_branch: main
NODE_ENV: production
这可以帮助模型判断当前任务环境。
比如用户说:
帮我提交代码
模型至少要知道当前是不是 Git 仓库,分支是什么,是否有改动。
上下文越完整,模型越不容易乱做。
2. 文件附件
当用户输入:
帮我看看 @src/user/UserService.java
Claude Code 会读取这个文件内容,把它作为附件放入消息中。
但它不会无限制塞入整个文件。
如果文件太大,会做截断,通常保留头部和尾部,中间部分省略。
原因很简单:
文件开头通常有导入、类定义、结构信息
文件结尾可能有关键逻辑或闭合结构
中间部分可以按需再读
这是一种很实用的上下文节省策略。
这和我们看日志也类似。
一个几万行日志,不可能全读。
通常先看:
开头环境信息
中间异常关键词
最后失败堆栈
关键时间点附近日志
Agent 管上下文,本质上也是类似方法。
3. Memory 和 Relevant Memories
Claude Code 中有两类记忆:
| 类型 | 作用 |
|---|---|
| 固定记忆 | 项目规则、用户偏好、长期配置 |
| 相关记忆 | 根据当前问题动态召回的补充资料 |
可以这样理解:
固定记忆 = 宪法
相关记忆 = 参考手册
固定记忆每次都比较重要,但不能太大。
相关记忆可以很多,但每次只挑和当前任务相关的部分加载。
这样既能利用长期经验,又不会让上下文爆炸。
对企业 Agent 来说,这一点尤其重要。
比如一个数据平台 Agent,可能需要知道:
公司表命名规范
生产环境权限规则
Hudi 表设计规范
Flink 任务发布流程
Hive 分区规范
数据出口审批规则
这些不应该每次都靠用户重新告诉它。
但也不能每次把所有规范全部塞进去。
合理方式就是:
长期规则固定注入
任务相关规则动态召回
4. Skill 渐进式披露
Skill 可以理解为某个领域的专项能力包。
比如:
React 最佳实践
Spring Boot 编码规范
Docker 部署指南
Flink 任务排查指南
Hudi 表修复指南
Hive SQL 优化规范
如果一次性把所有 Skill 全部加载进上下文,会非常浪费 Token。
所以 Claude Code 采用类似“渐进式披露”的方式:
先暴露 Skill 名称和描述
模型判断需要哪个 Skill
需要时再读取 Skill 详细内容
这就像查书。
不是一上来把整本书塞给模型,而是先给目录,需要哪章再翻哪章。
我觉得这个思想非常适合企业知识库。
比如我们可以把大数据平台经验整理成多个 Skill:
Hudi 写入异常排查 Skill
Flink Checkpoint 排查 Skill
Hive 表删除风险检查 Skill
Spark SQL 导出 Skill
Kerberos 认证排查 Skill
数据质量规则设计 Skill
Agent 平时只知道这些 Skill 存在。
真正遇到相关问题时,再加载具体内容。
这样既节省上下文,又能沉淀团队经验。
八、历史消息压缩:长任务能跑起来的关键
Claude Code 的上下文会越来越长。
如果不压缩,很快就会出现几个问题:
Token 成本高
请求变慢
超过上下文窗口
模型注意力分散
工具结果污染上下文
所以它设计了多层历史优化策略。
第一层:工具结果预算
工具输出可能非常大。
比如:
npm install 日志
测试失败堆栈
grep 搜索结果
大文件读取结果
编译错误日志
这些内容如果完整放进去,会迅速吃掉上下文。
所以系统会限制工具结果大小,必要时截断或摘要。
这在工程上非常关键。
比如一个 Maven 编译失败日志,真正重要的可能只有几行:
哪个类报错
哪一行报错
什么异常
根因是什么
其他大量下载依赖日志,其实都可以省略。
第二层:History Snip
History Snip 是一种轻量裁剪。
它会删除中间一些不重要的历史,保留最近几轮和关键内容。
第三层:Microcompact
Microcompact 是轻量压缩。
比如:
合并连续消息
移除空消息
清理冗余结构
保留必要的工具调用关系
第四层:Context Collapse
当历史太长时,把旧对话折叠成摘要。
类似:
前面用户要求修复登录接口。
已经检查了 UserController 和 AuthService。
发现问题出在 token 过期判断逻辑。
已修改 AuthService,待运行测试。
这样模型不需要记住每一条原始日志,只需要知道关键进度。
第五层:Autocompact
当上下文接近上限时,系统会触发自动压缩。
它会让模型对历史进行总结,然后用摘要替代旧消息。
这一步成本更高,但能保证长任务继续运行。
我的理解是:
长任务 Agent 的核心不是一直记住所有细节,而是能够持续保留“任务状态”。
这一点和 Flink 的 checkpoint 很像。
Flink 不需要保存每一个原始事件,但它要保存足够恢复任务的状态。
Agent 也是一样。
它不需要记住所有工具输出,但必须记住:
目标是什么
已经做了什么
当前结论是什么
下一步要做什么
哪些风险还没处理
九、API 请求:从消息到模型响应
当系统提示词和消息都准备好后,就会调用 Claude API。
大体结构可以分成几层:
queryModelWithStreaming()
↓
withStreamingVCR()
↓
queryModel()
↓
Anthropic API
第一层:queryModelWithStreaming
这是对外的流式调用入口。
它负责把请求包装起来,并支持流式返回。
流式返回的好处是,用户不用等所有内容生成完才能看到反馈。
第二层:VCR 录制回放
VCR 这个名字来自测试领域,意思是“录一次,以后可以回放”。
它的作用是:
录制模式:真实请求 API,并保存响应
回放模式:直接读取之前保存的响应
这样做有几个好处:
测试不用每次都真实调用 API
节省 Token
便于复现问题
方便调试模型输出
这一点非常工程化。
因为模型调用是有成本、有延迟、还有不确定性的。
如果每次测试都真实请求模型,不仅贵,而且不稳定。
所以 VCR 思路非常适合 Agent 系统测试。
第三层:queryModel
这是最终发起真实 API 请求的地方。
它会把这些内容传给模型:
model
system prompt
messages
tools
max_tokens
thinking config
stream config
然后通过流式方式接收模型响应。

十、为什么要用流式响应?
流式响应的好处不只是“用户更快看到字”。
在 Agent 场景里,它还有更重要的价值。
1. 更快反馈
模型生成一部分内容,就可以先展示给用户。
用户不用等完整回答生成完。
这对长任务体验很重要。
2. 工具可以更早启动
如果模型在流式输出中已经产生了工具调用,系统可以尽早解析并准备执行。
这能减少整体等待时间。
3. 更适合长任务
长任务如果等到最后一次性返回,体验会很差。
流式响应可以让系统持续观察模型进度。
4. 可以做连接健康检测
流式连接可能出现“假死”。
比如连接没有断,但很久没有新数据。
所以 Claude Code 设计了 Watchdog 机制。
十一、Watchdog:防止流式连接假死
流式请求有一个常见问题:
连接卡住了,但程序不知道
所以需要一个看门狗机制。
逻辑很简单:
收到一个流式事件
↓
重置计时器
↓
一段时间内没有新事件
↓
认为连接异常
↓
主动中止请求
↓
进入错误处理或降级逻辑
这就是 Watchdog 的价值。
它不是为了提升模型能力,而是为了提升系统可靠性。
成熟的 Agent 系统,不能只考虑模型怎么回答,还要考虑:
网络卡住
请求超时
服务端异常
工具执行阻塞
长任务无响应
这些都是工程问题。
也是 AI 应用真正落地时绕不开的问题。
十二、错误处理:哪些错误能重试,哪些不能重试?
Claude Code 会把错误分成几类。
| 错误类型 | 处理方式 |
|---|---|
| 网络错误 | 可以重试 |
| 服务端 5xx | 可以重试 |
| 服务过载 529 | 可以重试 |
| 速率限制 429 | 按 Retry-After 等待 |
| 认证失败 401/403 | 不应盲目重试 |
| 请求参数错误 400 | 不应盲目重试 |
| 流式超时 | 可考虑降级或重试 |
重试也不是立刻疯狂重试,而是采用指数退避。
简单理解:
第一次失败:等 500ms
第二次失败:等 1s
第三次失败:等 2s
第四次失败:等 4s
并且会加入一点随机抖动,避免大量请求同时重试,把服务打爆。
这也是后端系统里非常经典的可靠性设计。
在我看来,Agent 系统必须具备这种后端工程思维。
不能因为套了一层 AI,就忘了服务稳定性。
AI Agent 本质上仍然是软件系统。
软件系统该有的:
超时
重试
降级
限流
熔断
审计
幂等
回滚
Agent 一个都少不了。
十三、流式降级:为什么有时不能随便降级?
如果流式请求失败,一个常见想法是:
那就降级成非流式请求
但在 Agent 场景里,这件事有风险。
因为流式过程中可能已经执行了工具。
比如:
流式模式收到 tool_use
↓
开始执行 npm install
↓
连接中断
↓
降级为非流式
↓
模型又返回同一个 tool_use
↓
工具被执行第二次
这会导致重复执行。
如果工具是读文件,问题不大。
但如果工具是:
写文件
删除文件
提交代码
部署服务
清理目录
修改配置
那就可能出大问题。
所以在启用流式工具执行时,系统可能会禁用某些降级策略,避免重复执行工具。
这就是 Agent 系统和普通聊天系统不一样的地方:
普通聊天失败了可以重试,Agent 失败了要考虑副作用。
这一点和大数据任务非常像。
比如一个 Hudi 写入任务失败后,不能简单粗暴重新跑。
要看:
commit 是否完成
inflight 是否残留
数据是否重复写入
文件是否生成了一半
元数据是否一致
Agent 也是一样。
每一次工具调用,都可能改变外部世界。
所以重试之前,必须先判断副作用。
十四、工具执行:Claude Code 真正动手的地方
模型本身不能直接读你的文件,也不能直接执行命令。
真正动手的是工具系统。
Claude Code 的工具执行可以分成三层:
第一层:工具编排
第二层:工具实现
第三层:任务管理
第一层:工具编排
工具编排负责决定:
哪些工具可以执行
是否需要用户授权
哪些工具可以并行
哪些工具必须串行
工具失败后如何处理
工具结果如何返回给模型
比如模型同时请求:
读取 package.json
读取 tsconfig.json
搜索 UserService
执行 npm test
前面几个读取、搜索操作可能可以并行。
但如果是:
先修改文件
再执行测试
那就必须串行。
因为测试依赖文件修改结果。
这就是编排能力。
Agent 不只是能调用工具,还要知道工具之间的依赖关系。
第二层:工具实现
常见工具包括:
| 工具 | 作用 |
|---|---|
| BashTool | 执行 shell 命令 |
| ReadTool | 读取文件 |
| WriteTool | 写文件 |
| EditTool | 修改文件 |
| GlobTool | 查找文件 |
| GrepTool | 搜索内容 |
| AgentTool | 启动子 Agent |
这些工具把模型的意图变成真实操作。
例如模型想看代码,不是让模型猜,而是调用 ReadTool。
模型想跑测试,不是模型自己说“应该能过”,而是调用 BashTool 执行真实命令。
这就是工具增强型 Agent 的价值。
第三层:任务管理
有些工具调用不是瞬间完成的。
比如:
npm install
mvn test
docker build
启动子 Agent
运行长脚本
这些都可能变成后台任务。
任务管理模块负责:
启动任务
跟踪状态
收集输出
保存结果
通知主循环
失败时返回错误信息
最终,工具执行结果会被包装成 ToolResultMessage,重新送回主循环。
模型再根据结果继续判断下一步。
十五、多轮循环:Agent 的核心工作模式
Claude Code 最关键的地方,就是多轮循环。
它不是一次性回答,而是不断循环:
模型思考
↓
请求工具
↓
系统执行工具
↓
工具结果返回
↓
模型继续思考
↓
继续请求工具
↓
直到没有工具调用
↓
输出最终结果
举个例子。
用户说:
帮我修复登录接口报错
Claude Code 可能会这样工作:
第 1 轮:
模型判断需要了解项目结构
调用 Glob / Grep
第 2 轮:
模型找到登录相关代码
调用 Read 读取文件
第 3 轮:
模型发现异常处理问题
调用 Edit 修改代码
第 4 轮:
模型需要验证
调用 Bash 执行测试
第 5 轮:
模型根据测试结果判断是否成功
如果失败,继续修改
如果成功,输出总结
这就是 Agent 的基本范式:
大模型负责决策,工具负责执行,执行结果再反过来影响下一次决策。
如果用大数据调度类比,这有点像动态 DAG。
传统 DAG 是人提前配置好的。
而 Agent 的 DAG,是模型在运行过程中根据反馈动态生成的。
这也是 Agent 强大的地方,同时也是它危险的地方。
因为动态生成,就必须配套权限、日志、审计和回滚。
否则系统会很难控制。
十六、为什么要处理“确定性顺序”?
在源码里还有一个容易被忽略但很重要的细节:排序。
比如 Agent、插件、MCP 服务器这些东西可能是异步加载的。
异步加载会带来一个问题:
第一次加载顺序:A、B、C
第二次加载顺序:B、A、C
第三次加载顺序:C、A、B
如果顺序不稳定,就会导致:
Prompt 内容不稳定
缓存命中率下降
调试难以复现
模型行为轻微波动
所以系统会对某些列表做排序,保证输出尽量稳定。
这看起来是小细节,但在 Agent 工程里非常重要。
因为模型对上下文顺序很敏感。
输入稍微变化,输出就可能变化。
我认为这一点特别值得做企业 Agent 的团队重视。
很多时候,我们以为是“模型不稳定”,但其实是系统输入不稳定。
比如:
工具顺序不稳定
记忆召回顺序不稳定
文件读取顺序不稳定
规则拼接顺序不稳定
上下文裁剪策略不稳定
这些都会影响最终结果。
所以工程系统要尽量减少不必要的不确定性。
十七、Claude Code 设计里值得学习的工程思想
读完这套流程后,可以总结出几个很有价值的工程经验。
1. Agent 不是一个 Prompt,而是一套系统
很多人做 Agent,第一反应是写一个很长的 Prompt。
但 Claude Code 证明了一件事:
真正可用的 Agent,不是靠一个 Prompt,而是靠 Prompt、上下文、工具、记忆、压缩、权限、重试、任务管理共同组成。
Prompt 只是入口,不是全部。
一个真正能落地的 Agent,至少要考虑:
Prompt 构建
上下文组装
消息压缩
模型调用
流式处理
错误重试
工具编排
权限控制
任务管理
结果回填
多轮循环
可观测性
这才是完整系统。
2. 上下文管理决定长任务能力
短任务可以直接塞上下文。
长任务必须有上下文治理:
截断
摘要
压缩
折叠
预算控制
相关性召回
没有这些能力,Agent 跑不了复杂任务。
这就像大数据系统。
小数据量可以直接全量扫描。
数据量大了,就必须考虑:
分区
索引
压缩
缓存
冷热分层
元数据裁剪
Agent 的上下文治理,本质上就是 AI 系统里的“数据治理”。
3. 工具调用必须有权限边界
Agent 能执行工具,就一定要考虑风险。
尤其是:
删除
覆盖
部署
推送
发送消息
访问密钥
修改共享状态
修改生产配置
删除数据目录
这些操作不能简单自动化,必须有权限控制和确认机制。
我个人对这点非常敏感。
因为做大数据平台时,很多事故不是因为技术不会,而是因为权限边界没控制好。
一个错误的删除目录,一个错误的 DROP TABLE,一个错误的生产任务重启,都可能造成很大影响。
所以企业级 Agent 要想落地,必须先解决权限和审计。
4. 流式执行要考虑副作用
普通聊天可以失败重试。
Agent 不行。
因为 Agent 可能已经执行了真实操作。
所以重试、降级、恢复都要考虑副作用。
这也是 Agent 工程和传统 API 调用最大的不同之一。
5. 确定性很重要
异步加载、插件顺序、工具顺序、MCP 连接顺序,如果不稳定,都会影响模型行为。
所以稳定排序、固定结构、可复现日志,对 Agent 系统非常关键。
十八、从大数据工程师视角看 Claude Code
如果只是站在普通开发者视角看 Claude Code,可能会觉得它是一个“更聪明的代码助手”。
但如果站在大数据平台工程师视角看,它其实更像一个小型的 Agent Runtime 调度系统。
我自己长期接触的是 Java 后端、大数据平台、Flink、Spark、Hive、Hudi、HDFS、Kerberos 这类工程体系。
所以我看 Claude Code 的时候,第一反应不是:
它会不会写代码?
而是:
它怎么调度任务?
它怎么管理上下文?
它怎么控制副作用?
它怎么处理失败重试?
它怎么保证长任务不跑偏?
它怎么管理工具权限?
它怎么把一次用户输入拆成多轮执行?
这些问题,其实和大数据平台里的很多问题非常像。
比如在数据平台里,一个任务不是简单执行一条 SQL 就结束。
它可能包含:
数据接入
↓
元数据校验
↓
权限检查
↓
SQL 解析
↓
任务编排
↓
Spark / Flink 执行
↓
结果写入 Hudi / Hive / HDFS
↓
状态回写
↓
失败重试
↓
血缘记录
Claude Code 也是类似的模式:
用户输入
↓
上下文组装
↓
系统提示词约束
↓
模型推理
↓
工具调用
↓
执行结果回填
↓
继续推理
↓
直到任务完成
所以我更愿意把 Claude Code 理解成:
它不是一个简单的 AI 问答工具,而是一个围绕大模型构建的轻量级任务编排系统。
十九、Claude Code 和大数据架构的相似点
如果把 Claude Code 放到大数据架构里类比,会发现很多设计思想是相通的。
| Claude Code 里的概念 | 大数据平台里的类比 | 说明 |
|---|---|---|
| Query Loop | 调度引擎 / 工作流引擎 | 负责控制整个任务生命周期 |
| System Prompt | 平台规范 / 执行策略 | 定义 Agent 能做什么、不能做什么 |
| Messages | 任务上下文 / 元数据上下文 | 保存当前任务现场 |
| Tool Use | Connector / 算子 / 执行动作 | 真正连接外部系统并执行操作 |
| Tool Result | 任务执行结果 / 日志 / 状态 | 反馈给下一轮决策 |
| Context Compact | 数据压缩 / 日志裁剪 / 状态压缩 | 控制上下文成本,避免无限膨胀 |
| Watchdog | 任务心跳检测 | 发现长时间无响应的异常任务 |
| Retry | 失败重试机制 | 网络异常、服务异常时自动恢复 |
| Permission Control | Kerberos / Ranger / 权限系统 | 控制高风险操作 |
| Background Task | Yarn / Flink Job / Spark Job | 长时间运行的异步任务 |
| Tool Orchestration | DAG 编排 | 控制哪些任务并行、哪些任务串行 |
这个类比非常有意思。
很多人觉得 Agent 是一个新东西,但从工程角度看,Agent 并不是凭空出现的。
它本质上是把过去后端系统、大数据调度、工作流编排、权限控制、状态管理这些能力,重新围绕大模型组织了一遍。
模型负责“判断下一步做什么”。
工具负责“真正执行动作”。
系统负责“控制边界和状态”。
这和大数据平台里的调度器非常像。
区别只是:
大数据平台的 DAG 通常是人提前定义好的,而 Claude Code 的执行 DAG 是模型在运行过程中动态生成的。
二十、Agent Runtime 和大数据平台融合的想象空间
站在数据平台角度看,未来 Agent 很可能不是独立存在的,而是会和现有的大数据架构融合。
以前我们做数据平台,通常是用户在页面上配置任务:
选择数据源
选择目标表
配置字段映射
配置调度周期
配置质量规则
配置告警策略
点击发布
这个过程对普通业务人员来说,门槛很高。
即使对开发人员来说,也需要理解很多平台细节。
如果引入 Agent Runtime,未来可能变成这样:
用户:帮我把订单实时数据接入到 Hudi,按用户维度做分钟级聚合,并导出一份给风控系统使用。
Agent 可以继续拆解:
1. 识别数据源
2. 查询元数据
3. 判断目标表是否存在
4. 生成 Flink SQL
5. 生成 Hudi 表结构
6. 配置 checkpoint
7. 配置并发和资源
8. 生成任务 DAG
9. 执行发布前校验
10. 等待用户确认后发布
这时候 Agent 就不只是写代码了,而是在充当一个“智能数据平台操作员”。
它可以连接:
元数据系统
调度系统
Flink 集群
Spark 集群
Hive Metastore
Hudi 表
HDFS
质量规则系统
权限系统
告警系统
这就是我觉得非常值得关注的方向:
未来大数据平台不会只是多几个 AI 对话框,而是会把 Agent Runtime 深度嵌入到任务创建、数据治理、故障诊断和运维处理流程中。
二十一、从 Hudi / Flink / Spark 看 Claude Code 的工程启发
我做 Hudi、Flink、Spark 这类系统时,最深的感受是:
真正难的不是“跑起来”,而是“稳定跑、长期跑、出问题能恢复”。
Claude Code 也是一样。
一个 Demo 级 Agent 很容易做:
用户输入
↓
调用大模型
↓
模型返回结果
但真正可用的 Agent 必须处理这些问题:
上下文太长怎么办?
工具执行失败怎么办?
命令卡住怎么办?
重复执行怎么办?
权限越界怎么办?
任务执行一半中断怎么办?
历史信息怎么压缩?
结果如何回填?
如何避免模型胡乱操作?
这些问题在大数据系统里也非常常见。
比如:
Flink 要考虑 checkpoint
Hudi 要考虑 commit timeline
Spark 要考虑任务失败重试
Hive 要考虑元数据一致性
HDFS 要考虑文件状态和权限
Kerberos 要考虑认证上下文
Claude Code 的工具执行,其实也有类似问题。
比如模型调用了一个写文件工具,如果请求中断后再次重试,就可能出现重复写入。
这和大数据里的“幂等性”问题很像。
在数据平台里,我们经常会问:
这个任务能不能重复执行?
重复执行会不会产生脏数据?
失败后能不能回滚?
状态是不是一致?
在 Agent 系统里,也应该问同样的问题:
这个工具能不能重复调用?
这个操作有没有副作用?
失败后能不能恢复?
是否需要用户确认?
是否需要记录执行日志?
所以我认为,做 Agent 工程不能只学 Prompt,也要学习后端系统和大数据系统里的工程经验。
尤其是这几个能力:
幂等设计
状态管理
任务编排
失败恢复
权限边界
执行日志
上下文压缩
可观测性
这些才是 Agent 从玩具走向生产系统的关键。
二十二、如果把 Claude Code 思想用到企业数据平台
如果让我把 Claude Code 的思想融入到企业数据平台里,我不会一上来就做一个“万能 AI 平台”。
那样很容易失控,也很难落地。
我更倾向于从几个小场景切入。
1. 智能建表助手
用户用自然语言描述需求:
我要建一张用户订单宽表,每天凌晨加工,数据来自订单明细表和用户表。
Agent 自动完成:
识别源表
生成字段设计
推荐分区字段
生成建表 SQL
生成加工 SQL
生成调度配置
生成数据质量规则
最后由用户确认发布。
这里 Agent 不直接绕过平台,而是作为平台的智能入口。
真正执行仍然走平台流程。
2. Hudi 表异常诊断助手
当 Hudi 表出现问题时,Agent 可以辅助排查:
读取 .hoodie timeline
检查 commit / inflight / requested 状态
扫描分区文件
识别重复 fileId
判断是否存在脏文件
生成修复建议
这类场景非常适合 Agent。
因为它需要读很多信息、做多步判断,而且普通开发排查成本很高。
尤其是 Hudi 这种系统,一旦涉及 fileId、commit、rollback、compaction、bucket index,排查起来很耗时间。
Agent 如果能把这些排查步骤标准化,会极大提高效率。
3. Flink 任务稳定性分析助手
Agent 可以分析:
checkpoint 变慢原因
反压情况
并发配置是否合理
状态大小是否异常
sink 写入是否成为瓶颈
Hudi 写入是否冲突
然后给出调参建议。
这比单纯让 AI 写一段 Flink SQL 更有价值。
真正的企业价值,不是生成一段代码,而是帮助工程师更快定位问题。
4. 数据出口任务生成助手
比如常见的:
Hive / Hudi → SparkSQL → HDFS / NAS / SFTP
Agent 可以根据用户输入自动生成:
导出 SQL
字段分隔符配置
文件格式选择
目录规范
权限校验
任务 DAG
失败重试策略
这其实就能和现有数据平台很好融合。
尤其是一些重复性的导出需求,非常适合用 Agent 辅助生成配置。
5. 删除表 / 清理数据风险检查助手
这是我认为非常适合落地的场景。
用户说:
我要删除某张 Hive 表,并清理 HDFS 数据。
Agent 不应该直接删除。
它应该先做检查:
表是否存在
是否是生产表
是否有下游血缘
是否有调度任务依赖
是否有最近访问记录
是否涉及 Hudi timeline
HDFS 路径是否匹配表路径
是否存在误删风险
是否需要审批
然后生成风险报告。
最后必须由人确认。
这才是企业级 Agent 应有的姿势。
二十三、我的个人判断:Agent 会先从“工程副驾驶”落地
很多人一提 Agent,就会想象它完全替代程序员,或者完全自动管理系统。
我个人不太认同这个判断。
至少在企业工程场景里,短期内最靠谱的方向不是“完全自动化”,而是“工程副驾驶”。
也就是说:
人负责目标和最终确认
Agent 负责拆解、检索、生成、执行低风险动作
平台负责权限、状态、审计和回滚
尤其在大数据平台里,很多操作不能完全交给 Agent 自动执行。
比如:
删除 HDFS 目录
DROP Hive 表
修改生产 Flink 任务
重启实时任务
清理 Hudi 文件
调整核心调度链路
导出敏感数据
这些操作都必须有权限校验、审批流程和人工确认。
所以我认为未来比较合理的架构是:
用户自然语言输入
↓
Agent 理解意图
↓
查询元数据和运行状态
↓
生成执行方案
↓
平台做权限和风险校验
↓
用户确认
↓
系统执行
↓
Agent 总结结果
这才是企业级 Agent 比较稳妥的落地路径。
Agent 不应该绕过平台,而应该成为平台能力的智能入口。
二十四、未来数据平台可能会出现的新架构
如果把 Agent Runtime 和大数据平台结合,未来可能会形成一种新的平台架构。
可以简单描述为:
自然语言入口层
↓
Agent Runtime 层
↓
工具与能力编排层
↓
数据平台服务层
↓
计算与存储层
具体来看:
1. 自然语言入口层
负责接收用户需求。
比如:
帮我创建一个实时 Hudi 表
帮我排查这个 Flink 任务为什么 checkpoint 变慢
帮我生成一条 SparkSQL 导出任务
帮我分析这张表能不能删除
2. Agent Runtime 层
负责理解用户意图,拆解任务。
包括:
意图识别
任务拆解
上下文组装
多轮推理
风险判断
执行计划生成
3. 工具与能力编排层
负责把 Agent 的动作转成平台能力。
例如:
查询元数据
读取任务日志
生成 SQL
检查权限
读取 HDFS 文件
查询 Hudi timeline
调用调度系统
调用质量规则系统
4. 数据平台服务层
这一层仍然是企业已有平台能力。
比如:
元数据服务
调度服务
权限服务
质量服务
血缘服务
表管理服务
任务发布服务
告警服务
Agent 不替代这些服务,而是调用这些服务。
5. 计算与存储层
最终落到实际系统:
Flink
Spark
Hive
Hudi
HDFS
Kafka
NAS
SFTP
这套架构的关键思想是:
Agent 不直接接管底层系统,而是通过平台已有能力安全地操作底层系统。
这才符合企业级落地要求。
二十五、为什么 Agent 不能绕过现有平台?
有些人可能会觉得:
既然 Agent 这么强,为什么不直接让它连服务器、执行命令、改配置?
原因很简单:
企业系统最重要的不是“能不能做”,而是“能不能可控地做”。
如果 Agent 绕过平台,直接操作底层系统,会带来很多问题:
权限不可控
操作不可审计
结果不可追踪
失败不可恢复
风险无法拦截
责任边界不清楚
而企业平台已经沉淀了大量治理能力:
权限审批
操作日志
任务状态
血缘关系
告警通知
回滚机制
数据质量
资源隔离
Agent 应该复用这些能力。
所以我认为:
Agent + 平台能力
才是正确方向。
而不是:
Agent 替代平台能力
这也是 Claude Code 给我的一个启发。
Claude Code 强,不是因为模型可以绕过一切,而是因为它把模型放进了一个有工具、有规则、有权限、有循环的系统里。
企业 Agent 也应该如此。
二十六、对 Java 后端和大数据工程师的启发
对于 Java 后端、大数据平台工程师来说,Claude Code 这类工具值得学习的不只是使用方法,更是背后的架构思想。
未来 AI 工程能力,可能会越来越偏向这种组合能力:
懂业务
懂后端
懂数据平台
懂大模型
懂工具编排
懂权限治理
懂工程落地
单纯会调 API,不够。
单纯会写 Prompt,也不够。
真正有价值的是把 AI 能力放进工程系统里。
比如我们可以思考:
如何把 AI 接入 Spring Boot 服务?
如何把 Agent 接入现有数据平台?
如何把元数据变成 Agent 可查询的上下文?
如何把平台操作封装成安全工具?
如何让 Agent 生成方案但不越权执行?
如何让所有 AI 操作都有日志和审计?
如何让 Agent 出错后可追踪、可恢复?
这些问题,才是接下来工程师真正应该关注的。
二十七、用一句话总结 Claude Code 的核心流程
Claude Code 的本质不是“一个会写代码的聊天机器人”,而是一个围绕大模型构建的工程执行循环:
系统提示词定义行为边界
消息上下文提供任务现场
大模型负责分析和决策
工具系统负责真实执行
执行结果重新进入上下文
主循环不断推进任务完成
如果用更工程化的话说:
Claude Code 是一个以 Query Loop 为核心的 Agent Runtime。它通过系统提示词约束模型行为,通过消息组装提供上下文,通过工具调用连接真实环境,通过压缩和重试机制保障长任务稳定运行。
最后说一句
Claude Code 真正值得研究的地方,不只是它能不能写代码,而是它展示了一种新的工程范式:
大模型负责理解和决策
工具系统负责真实执行
上下文系统负责保存现场
权限系统负责控制风险
压缩机制负责支撑长任务
任务循环负责持续推进
站在普通开发者视角,它是 AI 编程助手。
站在工程架构视角,它是一个轻量级 Agent Runtime。
站在大数据平台视角,它甚至可以看成未来智能数据平台的一个雏形。
过去我们做数据平台,重点是把数据流、任务流、元数据、权限、调度、质量规则管理起来。
未来如果 Agent 能接入这些能力,就有可能让数据平台从“人工配置平台”升级为“智能协同平台”。
但这个过程不会一蹴而就。
真正可落地的方向,不是让 Agent 一上来接管所有生产操作,而是先让它成为工程师和数据平台之间的智能协作层:
帮人理解系统
帮人生成方案
帮人检查风险
帮人执行低风险动作
帮人总结结果
这也是我看 Claude Code 最大的启发:
AI Agent 的核心不是“替人做所有事”,而是把复杂工程系统里的理解、决策、执行和反馈串成一个可控闭环。
未来真正有价值的 Agent,一定不是只有一个强模型,而是能和现有工程体系深度融合。
对于 Java 后端、大数据平台、实时数据湖、Hudi、Flink、Spark 这些技术栈来说,Agent 不是外来的玩具,而是有机会成为下一代平台入口的一层智能运行时。
最近很多人想找工作,所以将以前的内容整理出来,希望对大家有帮助。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)