0:00.100–0:01.760
zh大家好,我是为什么叫QQ
0:01.760–0:05.100
zhResell最近发布了一个全新的开源Agent框架
0:05.100–0:05.660
enEVE
0:05.660–0:07.640
zh官方给它的定位极其嚣张
0:07.640–0:09.500
zhAgent领域的NextDNJs
0:09.500–0:11.740
zh你可能会想现在市面上的Agent
0:11.740–0:13.880
zh框架没有100也有80个了
0:13.880–0:15.720
zh从Line Chain到AutoGen
0:15.720–0:18.180
zh从MetaGPT到CrewAI
0:18.180–0:20.320
zhResell凭什么敢喊出这种口号
0:20.320–0:22.200
zh难道又是一个套壳的玩具
0:22.200–0:25.180
zh但当我仔细扒了它的原码和架构设计后
0:25.180–0:26.840
zh我发现事情没那么简单
0:27.000–0:29.900
zh这个框架可能会彻底改变我们写Agent的姿势
0:29.900–0:32.340
zh如果你在过去一年里写过Agent
0:32.340–0:35.740
zh你一定体会过那种被手搓基建支配的恐惧
0:35.740–0:37.240
zh写一个demo很简单
0:37.240–0:38.560
zh调个API写断
0:38.560–0:40.260
zhPrompt跑个Python脚本
0:40.260–0:42.200
zh一个简单的Agent就跑起来了
0:42.200–0:44.400
zh但推到生产环境就不一样了
0:44.400–0:46.220
zh你需要自己做持久化
0:46.220–0:47.900
zhAgent可能会运行好几天
0:47.900–0:49.180
zh中间网络断了怎么办
0:49.180–0:50.660
zhAgent状态丢了吗
0:50.660–0:52.080
zh对话历史没了吗
0:52.080–0:53.480
zh你得自己处理这些
0:53.480–0:54.680
zh然后是沙香隔离
0:54.980–0:57.820
zhAI生成的代码不能直接跑在业务服务器上
0:57.820–0:59.600
zh万一Agent写了个RM
0:59.600–1:00.400
enRF
1:00.400–1:01.700
zh这样的命令怎么办
1:01.700–1:02.580
zh谁负责
1:02.580–1:04.200
zh还要自己接Slack
1:04.200–1:04.820
zh接丁丁
1:04.820–1:05.760
zh接企业内部系统
1:05.760–1:07.740
zh甚至还要自己写一套审批流
1:07.740–1:09.420
zh防止Agent的自作主张
1:09.420–1:10.840
zh把生产数据库给删了
1:10.840–1:12.380
zh这些脏活累活
1:12.380–1:14.320
zh跟Agent的核心业务逻辑
1:14.320–1:15.600
zh半毛钱关系都没有
1:15.600–1:18.700
zh但你需要花80%的时间去搞定它们
1:18.700–1:19.380
zh这合理吗
1:19.380–1:21.240
zh其实现在的Agent开发
1:21.240–1:22.540
zh就特别像当年
1:22.540–1:24.600
zh没有Next.js时的Web开发
1:24.600–1:27.180
zh大家都在疯狂地重复造轮子
1:27.180–1:30.320
zh拼凑各种路由 打包工具和状态管理
1:30.320–1:32.740
zh每个团队都在写自己的一套脚手架
1:32.740–1:35.400
zhRissel这次搞出Eve的思路非常明确
1:35.400–1:37.960
zh不要让开发者再去拼凑零件了
1:37.960–1:40.000
zh我把生产环境需要的所有基建
1:40.000–1:41.160
zh直接打包送给你
1:41.160–1:44.000
zh而且它用了一个极其讨巧的设计理念
1:44.000–1:45.200
zh文件系统优先
1:45.200–1:46.440
enFile System First
1:46.440–1:49.320
zh就像Next.js把目录变成了路由一样
1:49.320–1:51.400
zhEve把目录变成了Agent
1:51.400–1:53.980
zh接下来我们从工程落地的视角
1:53.980–1:56.840
zh硬核拆解一下Eve到底解决了哪些痛点
1:56.840–1:58.360
zh文件系统及Agent
1:58.360–2:01.700
zh在Eve里你不需要写一堆复杂的注册代码
2:01.700–2:03.240
zh一个目录就是一个Agent
2:03.240–2:05.840
zh你的Agent.ts用来配模型
2:05.840–2:08.460
zhInstructions.md就是系统提示词
2:08.460–2:09.820
zh你想加个工具
2:09.820–2:12.740
zh直接在Tools目录下建个TypeScript文件
2:12.740–2:14.580
zh文件名就是工具名
2:14.580–2:17.360
zhEve会在构建时自动发现它
2:17.500–2:20.700
zh比如你建一个Tools.run下滑线SQL.ts的文件
2:20.700–2:22.840
zh里面有Zo的定义输入Schema
2:22.840–2:25.540
zhEve就会自动把这个工具暴露给模型
2:25.540–2:28.280
zh模型可以直接调用RunSQL
2:28.280–2:30.320
zh不需要任何额外的注册步骤
2:30.320–2:31.780
zh你想教它个新技能
2:31.780–2:33.260
zh在Skills目录下
2:33.260–2:34.180
zhDeal个Markdown
2:34.180–2:36.660
zh模型在需要的时候会自动加载
2:36.660–2:37.960
zh比如你有个Skills
2:37.960–2:38.720
enRevenue
2:38.720–2:39.840
enDefinitions
2:39.840–2:40.840
en.md
2:40.840–2:43.840
zh里面写着收入是扣除退款后的金额
2:43.840–2:46.320
zh按周统计周一为起点
2:46.320–2:47.300
zh这样的业务规则
2:47.300–2:49.660
zh当用户问上周收入多少时
2:49.660–2:51.580
zh模型会自动加载这个技能
2:51.580–2:53.500
zh确保回答符合公司的定义
2:53.500–2:55.080
zh这种设计太直觉了
2:55.080–2:57.820
zh你一眼扫过去就能知道这个agent是干嘛的
2:57.820–2:58.980
zh能用什么工具
2:58.980–2:59.820
zh有什么技能
2:59.820–3:02.640
zh它消除了传统框架里那种到处注册
3:02.640–3:04.800
zh到处引用的意大利面条代码
3:04.800–3:07.780
zh这极大的降低了团队协作时的认知负担
3:07.780–3:09.540
zh新人上手也快得多
3:09.540–3:11.720
zh你不需要学习一堆复杂的API
3:11.720–3:13.680
zh只需要理解目录结构就行了
3:13.680–3:15.880
zh开箱即用的生产机基建
3:15.880–3:18.040
zh这才是EV最核心的杀手键
3:18.040–3:20.280
zh它底层集成了Workflow SDK
3:20.280–3:21.480
zh这意味着什么
3:21.480–3:24.460
zh意味着你的agent是自带持久化执行的
3:24.460–3:27.080
zh每一步操作都会被checkpoint记录下来
3:27.080–3:29.300
zhEV把绘画做成checkpointed workflow
3:29.300–3:31.520
zh已完成的步骤会记录结果
3:31.520–3:32.220
zh不会重跑
3:32.220–3:33.420
zh崩溃或部署后
3:33.420–3:35.220
zh可以从已确认的步骤继续
3:35.220–3:37.780
zh遇到人工审批或等待后续消息时
3:37.780–3:39.960
zhSession可以暂停不消耗计算资源
3:39.960–3:43.080
zh这解决了一个agent的开发中最头疼的问题
3:43.080–3:44.860
zh状态管理想象一个场景
3:44.860–3:48.240
zh你的agent在处理一个复杂的数据分析任务
3:48.240–3:50.280
zh它需要先从数据库查询数据
3:50.280–3:52.560
zh然后调用一个外部API做分析
3:52.560–3:53.520
zh最后生成报告
3:53.520–3:54.860
zh在传统框架里
3:54.860–3:57.460
zh如果在第二部API调用时网络断了
3:57.460–3:59.260
zh整个任务就得重新开始
3:59.260–4:01.560
zh在EV里已完成的第一步会被记录
4:01.560–4:03.860
zh网络恢复后直接从第二部继续
4:03.860–4:05.220
zh但这里有个重要细节
4:05.220–4:07.440
zh如果某个Tool在执行中被打断
4:07.440–4:08.680
zh这一步可能会重跑
4:08.680–4:10.280
zh所以调用外部系统时
4:10.280–4:11.660
zh你要么做好密等设计
4:11.660–4:13.040
zh要么加上人工审批
4:13.040–4:14.740
zh这样才能保证数据一致性
4:14.740–4:16.360
zh安全问题他也想好了
4:16.360–4:17.820
zh这里要注意一个细节
4:17.820–4:20.360
zhEV把agent的生成和执行的代码
4:20.360–4:21.720
zh放进独立sandbox
4:21.720–4:24.300
zh包括shell命令脚本和文件读写
4:24.300–4:25.920
zh但开发者定义的tools
4:25.920–4:27.620
zh运行在应用run time中
4:27.620–4:30.220
zh可以通过ctx.getsandbox
4:30.220–4:31.200
zh调用沙箱
4:31.200–4:33.620
zh所以安全边界不是绝对的隔离
4:33.620–4:35.200
zh而是靠窄工具设计
4:35.200–4:38.300
zh权限控制审批和密等设计一起完成的
4:38.300–4:40.560
zhEV支持多个sandbox后端
4:40.560–4:42.700
zh在生产环境用versail sandbox
4:42.700–4:45.320
zh本地开发可以用darker micro sandbox
4:45.320–4:46.140
zh或纯bash
4:46.140–4:47.440
zh这样的分层设计
4:47.440–4:49.380
zh让你既能灵活调用业务系统
4:49.380–4:51.960
zh又能隔离AI生成的不可信代码
4:51.960–4:54.660
zh极简的human indial loop和多渠道分发
4:54.660–4:56.300
zh在EV的工具定义里
4:56.300–4:58.700
zh加个人工审批简直不要太简单
4:58.700–5:00.940
zh只要加一行needs approval判断
5:00.940–5:03.340
zh比如发现SQL查询超过50G
5:03.340–5:05.260
zhBagent就会自动停下来
5:05.260–5:06.780
zh等你点个头它才继续
5:06.780–5:10.180
zh这解决了企业对agent行为失控的终极恐惧
5:10.180–5:12.200
zh当agent要执行一个会扫描
5:12.200–5:14.560
zh超过50GB数据的查询时
5:14.560–5:17.200
zh系统会自动暂停等待人工审批
5:17.200–5:20.360
zh这种细利度的控制是传统框架很难做到的
5:20.360–5:21.860
zh同一个agent的代码库
5:21.860–5:24.340
zh加个slack.ts就能接入slack
5:24.340–5:26.680
zh加个discord.ts就能接discord
5:26.680–5:28.320
zh核心逻辑完全不用改
5:28.320–5:31.200
zh这才是真正意义上的write once run anywhere
5:31.200–5:33.440
zh定时任务则放在schedules下
5:33.440–5:35.720
zh用chrome表达式触发同一个agent
5:35.720–5:38.680
zh你可以用同一个agent处理多个平台的请求
5:38.680–5:40.600
zh比如你的数据分析agent
5:40.600–5:42.220
zh可以在slack里回答问题
5:42.220–5:44.740
zh也可以通过API被其他系统调用
5:44.740–5:47.280
zh还可以通过定时任务每周生成报告
5:47.280–5:49.380
zh所有这些都用同一份代码
5:49.380–5:51.100
zh但这里有个很离谱的地方
5:51.100–5:54.160
zh很多人觉得用这种高度封装的框架
5:54.160–5:56.340
zh会失去对底层逻辑的控制力
5:56.340–5:57.480
zh觉得它太重了
5:57.480–5:59.020
zh其实你理解错了
5:59.020–6:00.500
zhEVE的重是重在
6:00.500–6:04.040
zh他帮你兜底了那些最容易出bug的基建层
6:04.040–6:05.600
zh他把脏活包揽了
6:05.600–6:07.440
zh反而释放了你的精力
6:07.440–6:08.920
zh让你能真正去思考
6:08.920–6:11.540
zh这个agent到底该怎么解决也有问题
6:11.540–6:12.960
zh在过去的框架里
6:12.960–6:14.960
zh你花大量时间在写连接器
6:14.960–6:16.460
zh写重视逻辑
6:16.460–6:17.420
zh写状态机
6:17.420–6:18.500
zh而在EVE里
6:18.500–6:20.580
zh你只需要关心两件事
6:20.580–6:22.180
zh你要给agent什么指令
6:22.180–6:23.180
zh你要给他什么工具
6:23.180–6:25.160
zh而且EVE并不是一个黑盒
6:25.160–6:26.720
zh它是完全开源的
6:26.720–6:28.660
zh基于APACHE 2.0许可证
6:28.660–6:30.700
zh你可以看到所有的原代码
6:30.700–6:32.020
zh可以自定义任何部分
6:32.020–6:34.540
zh如果你需要特殊的sandbox后端
6:34.540–6:36.100
zh你可以写自己的适配器
6:36.100–6:38.180
zh如果你需要特殊的渠道集成
6:38.180–6:39.900
zh你可以用Define Channel自己写
6:39.900–6:42.000
zh所以EVE不是限制你的自由
6:42.000–6:43.980
zh而是给你一个坚实的基础
6:43.980–6:45.880
zh让你可以在上面自由地构建
6:45.880–6:49.260
zh所以EVE给我们带来了一个非常重要的认知升级
6:49.260–6:51.200
zhagent不再是一段脚本
6:51.200–6:52.760
zh而是一个系统工程
6:52.760–6:55.200
zh一个真正能落地的企业级agent
6:55.200–6:58.460
zh它的核心竞争力不在于你用了多牛的prompt
6:58.460–7:00.180
zh而在于你有没有一套稳定
7:00.180–7:02.800
zh安全可追溯的工程脚手架
7:02.800–7:05.100
zhEVE其实是在用工程化的手段
7:05.100–7:07.680
zh却对抗大模型本身的不确定性
7:07.680–7:10.820
zh它把大模型包装成了一个可靠的工程组件
7:10.820–7:14.340
zh这才是它自称agent领域的nextdngs的底气
7:14.340–7:16.040
zh让我给你举个具体的例子
7:16.040–7:19.200
zh假设你要为一个电商公司构建一个客服agent
7:19.200–7:22.400
zh这个agent需要查询订单信息处理退货申请
7:22.400–7:25.240
zh在slack和webchat两个渠道同时运行
7:25.240–7:27.000
zh每天生成一份客服报告
7:27.000–7:28.980
zh用传统框架你需要自己
7:28.980–7:31.420
zh写数据库连接和查询逻辑
7:31.420–7:34.660
zh自己实现状态管理确保退货申请不会丢失
7:34.660–7:36.520
zh自己写两个渠道的适配器
7:36.520–7:38.820
zh自己实现定时任务和报告生成
7:38.820–7:41.380
zh自己处理错误恢复和日志追踪
7:41.380–7:43.540
zh这可能需要几周的开发时间
7:43.540–7:45.540
zh用eve你只需要在tools query
7:45.540–7:47.700
zhorderts里写个查询函数
7:47.700–7:50.040
zh在tools process下划线refund
7:50.040–7:52.300
zhts里加个nextapproval标记
7:52.300–7:54.740
zh在channels目录下加两个文件
7:54.740–7:57.420
zh在schedule s目录下加个定时任务
7:57.420–7:59.300
zh整个过程可能只需要几天
7:59.300–8:01.660
zh而且意味会自动处理持久化
8:01.660–8:04.720
zh错误恢复日志追踪等所有的基建工作
8:04.720–8:06.220
zhRissell内部的应用实践
8:06.220–8:07.640
zhRissell公开提到
8:07.640–8:10.840
zh他们在生产环境运行100多个基于eve的agent
8:10.840–8:13.300
zh其中包括D0数据分析agent
8:13.300–8:15.240
zh每月处理3万多个分析问题
8:15.240–8:18.480
zh还有销售线索agentathena销售cockpit
8:18.480–8:20.300
zhVertex支持agent
8:20.300–8:22.940
zhDraft0内容agent和Vluoagent等
8:22.940–8:25.240
zh这些都是真实的生产级应用
8:25.240–8:28.360
zh说明eve的持久化执行sandbox隔离
8:28.360–8:31.680
zhHuman in the loop和多渠道能力已经经过验证
8:31.680–8:33.760
zh这些agent的共同特点是
8:33.760–8:36.220
zh他们都需要处理长期运行的任务
8:36.220–8:40.060
zh调用多个外部系统在关键操作前获得人工确认
8:40.060–8:42.100
zh这正是eve设计的核心场景
8:42.100–8:44.160
zh未来随着模型能力的提升
8:44.160–8:46.540
zhagent的业务逻辑会越来越复杂
8:46.540–8:48.580
zh多agent的编排会成为常态
8:48.580–8:51.240
zh一个主agent带着一群子agent的干活
8:51.240–8:54.220
zheve这种约定优于配置自带基建的模式
8:54.220–8:56.420
zh给出了一个很有参考价值的方向
8:56.420–8:57.560
zh需要说明的是
8:57.560–9:00.480
zheve当前仍处于public preview阶段
9:00.480–9:02.060
zh官方文档明确说
9:02.060–9:05.040
zhAPI文档和行为在GA前可能会变化
9:05.040–9:08.020
zh但这不妨碍它成为一个有影响力的设计参考
9:08.020–9:11.320
zhRissel把agent的工程化问题收敛到文件系统
9:11.320–9:13.900
zhWorkflow Sandbox Channel和Evos这几个约定里
9:13.900–9:15.980
zh这个思路本身就很值得借鉴
9:15.980–9:17.480
zheve的开源属性
9:17.480–9:19.820
zh意味着社区会不断贡献新的工具
9:19.820–9:21.100
zh新的技能
9:21.100–9:22.060
zh新的集成
9:22.060–9:24.320
zh随着更多团队的时间和反馈
9:24.320–9:25.880
zh这个框架会不断完善
9:25.880–9:28.000
zh最后让我分享一些eve的最佳实践
9:28.000–9:29.700
zh写好你的instructions
9:29.700–9:30.860
eninstructions
9:30.860–9:32.880
zhmd是agent的大脑
9:32.880–9:35.780
zh好的instructions应该清晰具体有约束
9:35.780–9:38.700
zh不要写你是一个有帮助的助手这样的废话
9:38.700–9:40.960
zh要写你是一个数据分析师
9:40.960–9:43.740
zh你的工作是回答关于公司数据的问题
9:43.740–9:45.540
zh优先使用精确的数字
9:45.540–9:46.420
zh而不是估计
9:46.420–9:48.840
zh如果你不能从数据中得出答案
9:48.840–9:49.540
zh就直说
9:49.540–9:51.000
zh精心设计你的tools
9:51.000–9:53.320
zh每个tool应该做一件事并且做好
9:53.320–9:54.780
zh不要设计一个超级tool
9:54.780–9:55.620
zh什么都能做
9:55.620–9:58.340
zh而且tool的输入输出要清晰
9:58.340–10:00.000
zh用zod定义scammer
10:00.000–10:01.380
zh让模型知道怎么调用
10:01.380–10:02.960
zh用skills来教导agent
10:02.960–10:04.820
zhskills是markdown文件
10:04.820–10:06.680
zh用来教导agent的如何做事
10:06.680–10:08.380
zh比如你可以写一个
10:08.380–10:09.520
enskillshowto
10:09.520–10:13.540
en-write-good-sequel-md
10:13.540–10:14.600
zh里面写着
10:14.600–10:18.540
zh写sql时要避免n加1查询这样的建议
10:18.540–10:20.460
zh当agent需要写sql时
10:20.460–10:22.180
zh他会自动加载这个skill
10:22.180–10:24.180
zh充分利用human in the loop
10:24.180–10:25.920
zh不要让agent的完全自主
10:25.920–10:28.300
zh对于重要的操作加上审批流
10:28.300–10:30.120
zh这不仅提高了安全性
10:30.120–10:31.660
zh也提高了用户的信任度
10:31.660–10:32.740
zh监控和追踪
10:32.740–10:36.000
zheve生成的open telemetry追踪非常详细
10:36.000–10:37.540
zh充分利用这些信息
10:37.540–10:38.860
zh来理解agent的行为
10:38.860–10:40.560
zh定期审查追踪日志
10:40.560–10:42.300
zh找出agent的问题所在
10:42.300–10:43.220
zh总结一下
10:43.220–10:45.140
zh别再手搓玩具agent了
10:45.140–10:46.640
zheve把企业机基建
10:46.640–10:48.140
zh直接塞进了文件系统
10:48.140–10:49.480
zh如果你也收购了
10:49.480–10:51.120
zh天天修agent的底层bug
10:51.120–10:52.940
zh真的建议去试一下eve
10:52.940–10:55.120
zh那么你目前在开发agent的时
10:55.120–10:57.540
zh遇到最头疼的工程化问题是什么
10:57.540–10:59.320
zh把你的看法打在公屏上
10:59.320–11:00.940
zh或者在评论区告诉我
11:00.940–11:02.140
zh我是为什么叫QQ
11:02.140–11:03.180
zh我们下期见
11:03.180–11:04.500
zh别忘了长按点赞
11:04.500–11:05.500
zh一键三连
0:00.100–0:01.760
大家好,我是为什么叫QQ
0:01.760–0:05.100
Resell最近发布了一个全新的开源Agent框架
0:05.100–0:05.660
EVE
0:05.660–0:07.640
官方给它的定位极其嚣张
0:07.640–0:09.500
Agent领域的NextDNJs
0:09.500–0:11.740
你可能会想现在市面上的Agent
0:11.740–0:13.880
框架没有100也有80个了
0:13.880–0:15.720
从Line Chain到AutoGen
0:15.720–0:18.180
从MetaGPT到CrewAI
0:18.180–0:20.320
Resell凭什么敢喊出这种口号
0:20.320–0:22.200
难道又是一个套壳的玩具
0:22.200–0:25.180
但当我仔细扒了它的原码和架构设计后
0:25.180–0:26.840
我发现事情没那么简单
0:27.000–0:29.900
这个框架可能会彻底改变我们写Agent的姿势
0:29.900–0:32.340
如果你在过去一年里写过Agent
0:32.340–0:35.740
你一定体会过那种被手搓基建支配的恐惧
0:35.740–0:37.240
写一个demo很简单
0:37.240–0:38.560
调个API写断
0:38.560–0:40.260
Prompt跑个Python脚本
0:40.260–0:42.200
一个简单的Agent就跑起来了
0:42.200–0:44.400
但推到生产环境就不一样了
0:44.400–0:46.220
你需要自己做持久化
0:46.220–0:47.900
Agent可能会运行好几天
0:47.900–0:49.180
中间网络断了怎么办
0:49.180–0:50.660
Agent状态丢了吗
0:50.660–0:52.080
对话历史没了吗
0:52.080–0:53.480
你得自己处理这些
0:53.480–0:54.680
然后是沙香隔离
0:54.980–0:57.820
AI生成的代码不能直接跑在业务服务器上
0:57.820–0:59.600
万一Agent写了个RM
0:59.600–1:00.400
RF
1:00.400–1:01.700
这样的命令怎么办
1:01.700–1:02.580
谁负责
1:02.580–1:04.200
还要自己接Slack
1:04.200–1:04.820
接丁丁
1:04.820–1:05.760
接企业内部系统
1:05.760–1:07.740
甚至还要自己写一套审批流
1:07.740–1:09.420
防止Agent的自作主张
1:09.420–1:10.840
把生产数据库给删了
1:10.840–1:12.380
这些脏活累活
1:12.380–1:14.320
跟Agent的核心业务逻辑
1:14.320–1:15.600
半毛钱关系都没有
1:15.600–1:18.700
但你需要花80%的时间去搞定它们
1:18.700–1:19.380
这合理吗
1:19.380–1:21.240
其实现在的Agent开发
1:21.240–1:22.540
就特别像当年
1:22.540–1:24.600
没有Next.js时的Web开发
1:24.600–1:27.180
大家都在疯狂地重复造轮子
1:27.180–1:30.320
拼凑各种路由 打包工具和状态管理
1:30.320–1:32.740
每个团队都在写自己的一套脚手架
1:32.740–1:35.400
Rissel这次搞出Eve的思路非常明确
1:35.400–1:37.960
不要让开发者再去拼凑零件了
1:37.960–1:40.000
我把生产环境需要的所有基建
1:40.000–1:41.160
直接打包送给你
1:41.160–1:44.000
而且它用了一个极其讨巧的设计理念
1:44.000–1:45.200
文件系统优先
1:45.200–1:46.440
File System First
1:46.440–1:49.320
就像Next.js把目录变成了路由一样
1:49.320–1:51.400
Eve把目录变成了Agent
1:51.400–1:53.980
接下来我们从工程落地的视角
1:53.980–1:56.840
硬核拆解一下Eve到底解决了哪些痛点
1:56.840–1:58.360
文件系统及Agent
1:58.360–2:01.700
在Eve里你不需要写一堆复杂的注册代码
2:01.700–2:03.240
一个目录就是一个Agent
2:03.240–2:05.840
你的Agent.ts用来配模型
2:05.840–2:08.460
Instructions.md就是系统提示词
2:08.460–2:09.820
你想加个工具
2:09.820–2:12.740
直接在Tools目录下建个TypeScript文件
2:12.740–2:14.580
文件名就是工具名
2:14.580–2:17.360
Eve会在构建时自动发现它
2:17.500–2:20.700
比如你建一个Tools.run下滑线SQL.ts的文件
2:20.700–2:22.840
里面有Zo的定义输入Schema
2:22.840–2:25.540
Eve就会自动把这个工具暴露给模型
2:25.540–2:28.280
模型可以直接调用RunSQL
2:28.280–2:30.320
不需要任何额外的注册步骤
2:30.320–2:31.780
你想教它个新技能
2:31.780–2:33.260
在Skills目录下
2:33.260–2:34.180
Deal个Markdown
2:34.180–2:36.660
模型在需要的时候会自动加载
2:36.660–2:37.960
比如你有个Skills
2:37.960–2:38.720
Revenue
2:38.720–2:39.840
Definitions
2:39.840–2:40.840
.md
2:40.840–2:43.840
里面写着收入是扣除退款后的金额
2:43.840–2:46.320
按周统计周一为起点
2:46.320–2:47.300
这样的业务规则
2:47.300–2:49.660
当用户问上周收入多少时
2:49.660–2:51.580
模型会自动加载这个技能
2:51.580–2:53.500
确保回答符合公司的定义
2:53.500–2:55.080
这种设计太直觉了
2:55.080–2:57.820
你一眼扫过去就能知道这个agent是干嘛的
2:57.820–2:58.980
能用什么工具
2:58.980–2:59.820
有什么技能
2:59.820–3:02.640
它消除了传统框架里那种到处注册
3:02.640–3:04.800
到处引用的意大利面条代码
3:04.800–3:07.780
这极大的降低了团队协作时的认知负担
3:07.780–3:09.540
新人上手也快得多
3:09.540–3:11.720
你不需要学习一堆复杂的API
3:11.720–3:13.680
只需要理解目录结构就行了
3:13.680–3:15.880
开箱即用的生产机基建
3:15.880–3:18.040
这才是EV最核心的杀手键
3:18.040–3:20.280
它底层集成了Workflow SDK
3:20.280–3:21.480
这意味着什么
3:21.480–3:24.460
意味着你的agent是自带持久化执行的
3:24.460–3:27.080
每一步操作都会被checkpoint记录下来
3:27.080–3:29.300
EV把绘画做成checkpointed workflow
3:29.300–3:31.520
已完成的步骤会记录结果
3:31.520–3:32.220
不会重跑
3:32.220–3:33.420
崩溃或部署后
3:33.420–3:35.220
可以从已确认的步骤继续
3:35.220–3:37.780
遇到人工审批或等待后续消息时
3:37.780–3:39.960
Session可以暂停不消耗计算资源
3:39.960–3:43.080
这解决了一个agent的开发中最头疼的问题
3:43.080–3:44.860
状态管理想象一个场景
3:44.860–3:48.240
你的agent在处理一个复杂的数据分析任务
3:48.240–3:50.280
它需要先从数据库查询数据
3:50.280–3:52.560
然后调用一个外部API做分析
3:52.560–3:53.520
最后生成报告
3:53.520–3:54.860
在传统框架里
3:54.860–3:57.460
如果在第二部API调用时网络断了
3:57.460–3:59.260
整个任务就得重新开始
3:59.260–4:01.560
在EV里已完成的第一步会被记录
4:01.560–4:03.860
网络恢复后直接从第二部继续
4:03.860–4:05.220
但这里有个重要细节
4:05.220–4:07.440
如果某个Tool在执行中被打断
4:07.440–4:08.680
这一步可能会重跑
4:08.680–4:10.280
所以调用外部系统时
4:10.280–4:11.660
你要么做好密等设计
4:11.660–4:13.040
要么加上人工审批
4:13.040–4:14.740
这样才能保证数据一致性
4:14.740–4:16.360
安全问题他也想好了
4:16.360–4:17.820
这里要注意一个细节
4:17.820–4:20.360
EV把agent的生成和执行的代码
4:20.360–4:21.720
放进独立sandbox
4:21.720–4:24.300
包括shell命令脚本和文件读写
4:24.300–4:25.920
但开发者定义的tools
4:25.920–4:27.620
运行在应用run time中
4:27.620–4:30.220
可以通过ctx.getsandbox
4:30.220–4:31.200
调用沙箱
4:31.200–4:33.620
所以安全边界不是绝对的隔离
4:33.620–4:35.200
而是靠窄工具设计
4:35.200–4:38.300
权限控制审批和密等设计一起完成的
4:38.300–4:40.560
EV支持多个sandbox后端
4:40.560–4:42.700
在生产环境用versail sandbox
4:42.700–4:45.320
本地开发可以用darker micro sandbox
4:45.320–4:46.140
或纯bash
4:46.140–4:47.440
这样的分层设计
4:47.440–4:49.380
让你既能灵活调用业务系统
4:49.380–4:51.960
又能隔离AI生成的不可信代码
4:51.960–4:54.660
极简的human indial loop和多渠道分发
4:54.660–4:56.300
在EV的工具定义里
4:56.300–4:58.700
加个人工审批简直不要太简单
4:58.700–5:00.940
只要加一行needs approval判断
5:00.940–5:03.340
比如发现SQL查询超过50G
5:03.340–5:05.260
Bagent就会自动停下来
5:05.260–5:06.780
等你点个头它才继续
5:06.780–5:10.180
这解决了企业对agent行为失控的终极恐惧
5:10.180–5:12.200
当agent要执行一个会扫描
5:12.200–5:14.560
超过50GB数据的查询时
5:14.560–5:17.200
系统会自动暂停等待人工审批
5:17.200–5:20.360
这种细利度的控制是传统框架很难做到的
5:20.360–5:21.860
同一个agent的代码库
5:21.860–5:24.340
加个slack.ts就能接入slack
5:24.340–5:26.680
加个discord.ts就能接discord
5:26.680–5:28.320
核心逻辑完全不用改
5:28.320–5:31.200
这才是真正意义上的write once run anywhere
5:31.200–5:33.440
定时任务则放在schedules下
5:33.440–5:35.720
用chrome表达式触发同一个agent
5:35.720–5:38.680
你可以用同一个agent处理多个平台的请求
5:38.680–5:40.600
比如你的数据分析agent
5:40.600–5:42.220
可以在slack里回答问题
5:42.220–5:44.740
也可以通过API被其他系统调用
5:44.740–5:47.280
还可以通过定时任务每周生成报告
5:47.280–5:49.380
所有这些都用同一份代码
5:49.380–5:51.100
但这里有个很离谱的地方
5:51.100–5:54.160
很多人觉得用这种高度封装的框架
5:54.160–5:56.340
会失去对底层逻辑的控制力
5:56.340–5:57.480
觉得它太重了
5:57.480–5:59.020
其实你理解错了
5:59.020–6:00.500
EVE的重是重在
6:00.500–6:04.040
他帮你兜底了那些最容易出bug的基建层
6:04.040–6:05.600
他把脏活包揽了
6:05.600–6:07.440
反而释放了你的精力
6:07.440–6:08.920
让你能真正去思考
6:08.920–6:11.540
这个agent到底该怎么解决也有问题
6:11.540–6:12.960
在过去的框架里
6:12.960–6:14.960
你花大量时间在写连接器
6:14.960–6:16.460
写重视逻辑
6:16.460–6:17.420
写状态机
6:17.420–6:18.500
而在EVE里
6:18.500–6:20.580
你只需要关心两件事
6:20.580–6:22.180
你要给agent什么指令
6:22.180–6:23.180
你要给他什么工具
6:23.180–6:25.160
而且EVE并不是一个黑盒
6:25.160–6:26.720
它是完全开源的
6:26.720–6:28.660
基于APACHE 2.0许可证
6:28.660–6:30.700
你可以看到所有的原代码
6:30.700–6:32.020
可以自定义任何部分
6:32.020–6:34.540
如果你需要特殊的sandbox后端
6:34.540–6:36.100
你可以写自己的适配器
6:36.100–6:38.180
如果你需要特殊的渠道集成
6:38.180–6:39.900
你可以用Define Channel自己写
6:39.900–6:42.000
所以EVE不是限制你的自由
6:42.000–6:43.980
而是给你一个坚实的基础
6:43.980–6:45.880
让你可以在上面自由地构建
6:45.880–6:49.260
所以EVE给我们带来了一个非常重要的认知升级
6:49.260–6:51.200
agent不再是一段脚本
6:51.200–6:52.760
而是一个系统工程
6:52.760–6:55.200
一个真正能落地的企业级agent
6:55.200–6:58.460
它的核心竞争力不在于你用了多牛的prompt
6:58.460–7:00.180
而在于你有没有一套稳定
7:00.180–7:02.800
安全可追溯的工程脚手架
7:02.800–7:05.100
EVE其实是在用工程化的手段
7:05.100–7:07.680
却对抗大模型本身的不确定性
7:07.680–7:10.820
它把大模型包装成了一个可靠的工程组件
7:10.820–7:14.340
这才是它自称agent领域的nextdngs的底气
7:14.340–7:16.040
让我给你举个具体的例子
7:16.040–7:19.200
假设你要为一个电商公司构建一个客服agent
7:19.200–7:22.400
这个agent需要查询订单信息处理退货申请
7:22.400–7:25.240
在slack和webchat两个渠道同时运行
7:25.240–7:27.000
每天生成一份客服报告
7:27.000–7:28.980
用传统框架你需要自己
7:28.980–7:31.420
写数据库连接和查询逻辑
7:31.420–7:34.660
自己实现状态管理确保退货申请不会丢失
7:34.660–7:36.520
自己写两个渠道的适配器
7:36.520–7:38.820
自己实现定时任务和报告生成
7:38.820–7:41.380
自己处理错误恢复和日志追踪
7:41.380–7:43.540
这可能需要几周的开发时间
7:43.540–7:45.540
用eve你只需要在tools query
7:45.540–7:47.700
orderts里写个查询函数
7:47.700–7:50.040
在tools process下划线refund
7:50.040–7:52.300
ts里加个nextapproval标记
7:52.300–7:54.740
在channels目录下加两个文件
7:54.740–7:57.420
在schedule s目录下加个定时任务
7:57.420–7:59.300
整个过程可能只需要几天
7:59.300–8:01.660
而且意味会自动处理持久化
8:01.660–8:04.720
错误恢复日志追踪等所有的基建工作
8:04.720–8:06.220
Rissell内部的应用实践
8:06.220–8:07.640
Rissell公开提到
8:07.640–8:10.840
他们在生产环境运行100多个基于eve的agent
8:10.840–8:13.300
其中包括D0数据分析agent
8:13.300–8:15.240
每月处理3万多个分析问题
8:15.240–8:18.480
还有销售线索agentathena销售cockpit
8:18.480–8:20.300
Vertex支持agent
8:20.300–8:22.940
Draft0内容agent和Vluoagent等
8:22.940–8:25.240
这些都是真实的生产级应用
8:25.240–8:28.360
说明eve的持久化执行sandbox隔离
8:28.360–8:31.680
Human in the loop和多渠道能力已经经过验证
8:31.680–8:33.760
这些agent的共同特点是
8:33.760–8:36.220
他们都需要处理长期运行的任务
8:36.220–8:40.060
调用多个外部系统在关键操作前获得人工确认
8:40.060–8:42.100
这正是eve设计的核心场景
8:42.100–8:44.160
未来随着模型能力的提升
8:44.160–8:46.540
agent的业务逻辑会越来越复杂
8:46.540–8:48.580
多agent的编排会成为常态
8:48.580–8:51.240
一个主agent带着一群子agent的干活
8:51.240–8:54.220
eve这种约定优于配置自带基建的模式
8:54.220–8:56.420
给出了一个很有参考价值的方向
8:56.420–8:57.560
需要说明的是
8:57.560–9:00.480
eve当前仍处于public preview阶段
9:00.480–9:02.060
官方文档明确说
9:02.060–9:05.040
API文档和行为在GA前可能会变化
9:05.040–9:08.020
但这不妨碍它成为一个有影响力的设计参考
9:08.020–9:11.320
Rissel把agent的工程化问题收敛到文件系统
9:11.320–9:13.900
Workflow Sandbox Channel和Evos这几个约定里
9:13.900–9:15.980
这个思路本身就很值得借鉴
9:15.980–9:17.480
eve的开源属性
9:17.480–9:19.820
意味着社区会不断贡献新的工具
9:19.820–9:21.100
新的技能
9:21.100–9:22.060
新的集成
9:22.060–9:24.320
随着更多团队的时间和反馈
9:24.320–9:25.880
这个框架会不断完善
9:25.880–9:28.000
最后让我分享一些eve的最佳实践
9:28.000–9:29.700
写好你的instructions
9:29.700–9:30.860
instructions
9:30.860–9:32.880
md是agent的大脑
9:32.880–9:35.780
好的instructions应该清晰具体有约束
9:35.780–9:38.700
不要写你是一个有帮助的助手这样的废话
9:38.700–9:40.960
要写你是一个数据分析师
9:40.960–9:43.740
你的工作是回答关于公司数据的问题
9:43.740–9:45.540
优先使用精确的数字
9:45.540–9:46.420
而不是估计
9:46.420–9:48.840
如果你不能从数据中得出答案
9:48.840–9:49.540
就直说
9:49.540–9:51.000
精心设计你的tools
9:51.000–9:53.320
每个tool应该做一件事并且做好
9:53.320–9:54.780
不要设计一个超级tool
9:54.780–9:55.620
什么都能做
9:55.620–9:58.340
而且tool的输入输出要清晰
9:58.340–10:00.000
用zod定义scammer
10:00.000–10:01.380
让模型知道怎么调用
10:01.380–10:02.960
用skills来教导agent
10:02.960–10:04.820
skills是markdown文件
10:04.820–10:06.680
用来教导agent的如何做事
10:06.680–10:08.380
比如你可以写一个
10:08.380–10:09.520
skillshowto
10:09.520–10:13.540
-write-good-sequel-md
10:13.540–10:14.600
里面写着
10:14.600–10:18.540
写sql时要避免n加1查询这样的建议
10:18.540–10:20.460
当agent需要写sql时
10:20.460–10:22.180
他会自动加载这个skill
10:22.180–10:24.180
充分利用human in the loop
10:24.180–10:25.920
不要让agent的完全自主
10:25.920–10:28.300
对于重要的操作加上审批流
10:28.300–10:30.120
这不仅提高了安全性
10:30.120–10:31.660
也提高了用户的信任度
10:31.660–10:32.740
监控和追踪
10:32.740–10:36.000
eve生成的open telemetry追踪非常详细
10:36.000–10:37.540
充分利用这些信息
10:37.540–10:38.860
来理解agent的行为
10:38.860–10:40.560
定期审查追踪日志
10:40.560–10:42.300
找出agent的问题所在
10:42.300–10:43.220
总结一下
10:43.220–10:45.140
别再手搓玩具agent了
10:45.140–10:46.640
eve把企业机基建
10:46.640–10:48.140
直接塞进了文件系统
10:48.140–10:49.480
如果你也收购了
10:49.480–10:51.120
天天修agent的底层bug
10:51.120–10:52.940
真的建议去试一下eve
10:52.940–10:55.120
那么你目前在开发agent的时
10:55.120–10:57.540
遇到最头疼的工程化问题是什么
10:57.540–10:59.320
把你的看法打在公屏上
10:59.320–11:00.940
或者在评论区告诉我
11:00.940–11:02.140
我是为什么叫QQ
11:02.140–11:03.180
我们下期见
11:03.180–11:04.500
别忘了长按点赞
11:04.500–11:05.500
一键三连
0:00.100–0:01.760
zh大家好,我是为什么叫QQ
大家好,我是为什么叫QQ
0:01.760–0:05.100
zhResell最近发布了一个全新的开源Agent框架
Resell最近发布了一个全新的开源Agent框架
0:05.100–0:05.660
enEVE
EVE
0:05.660–0:07.640
zh官方给它的定位极其嚣张
官方给它的定位极其嚣张
0:07.640–0:09.500
zhAgent领域的NextDNJs
Agent领域的NextDNJs
0:09.500–0:11.740
zh你可能会想现在市面上的Agent
你可能会想现在市面上的Agent
0:11.740–0:13.880
zh框架没有100也有80个了
框架没有100也有80个了
0:13.880–0:15.720
zh从Line Chain到AutoGen
从Line Chain到AutoGen
0:15.720–0:18.180
zh从MetaGPT到CrewAI
从MetaGPT到CrewAI
0:18.180–0:20.320
zhResell凭什么敢喊出这种口号
Resell凭什么敢喊出这种口号
0:20.320–0:22.200
zh难道又是一个套壳的玩具
难道又是一个套壳的玩具
0:22.200–0:25.180
zh但当我仔细扒了它的原码和架构设计后
但当我仔细扒了它的原码和架构设计后
0:25.180–0:26.840
zh我发现事情没那么简单
我发现事情没那么简单
0:27.000–0:29.900
zh这个框架可能会彻底改变我们写Agent的姿势
这个框架可能会彻底改变我们写Agent的姿势
0:29.900–0:32.340
zh如果你在过去一年里写过Agent
如果你在过去一年里写过Agent
0:32.340–0:35.740
zh你一定体会过那种被手搓基建支配的恐惧
你一定体会过那种被手搓基建支配的恐惧
0:35.740–0:37.240
zh写一个demo很简单
写一个demo很简单
0:37.240–0:38.560
zh调个API写断
调个API写断
0:38.560–0:40.260
zhPrompt跑个Python脚本
Prompt跑个Python脚本
0:40.260–0:42.200
zh一个简单的Agent就跑起来了
一个简单的Agent就跑起来了
0:42.200–0:44.400
zh但推到生产环境就不一样了
但推到生产环境就不一样了
0:44.400–0:46.220
zh你需要自己做持久化
你需要自己做持久化
0:46.220–0:47.900
zhAgent可能会运行好几天
Agent可能会运行好几天
0:47.900–0:49.180
zh中间网络断了怎么办
中间网络断了怎么办
0:49.180–0:50.660
zhAgent状态丢了吗
Agent状态丢了吗
0:50.660–0:52.080
zh对话历史没了吗
对话历史没了吗
0:52.080–0:53.480
zh你得自己处理这些
你得自己处理这些
0:53.480–0:54.680
zh然后是沙香隔离
然后是沙香隔离
0:54.980–0:57.820
zhAI生成的代码不能直接跑在业务服务器上
AI生成的代码不能直接跑在业务服务器上
0:57.820–0:59.600
zh万一Agent写了个RM
万一Agent写了个RM
0:59.600–1:00.400
enRF
RF
1:00.400–1:01.700
zh这样的命令怎么办
这样的命令怎么办
1:01.700–1:02.580
zh谁负责
谁负责
1:02.580–1:04.200
zh还要自己接Slack
还要自己接Slack
1:04.200–1:04.820
zh接丁丁
接丁丁
1:04.820–1:05.760
zh接企业内部系统
接企业内部系统
1:05.760–1:07.740
zh甚至还要自己写一套审批流
甚至还要自己写一套审批流
1:07.740–1:09.420
zh防止Agent的自作主张
防止Agent的自作主张
1:09.420–1:10.840
zh把生产数据库给删了
把生产数据库给删了
1:10.840–1:12.380
zh这些脏活累活
这些脏活累活
1:12.380–1:14.320
zh跟Agent的核心业务逻辑
跟Agent的核心业务逻辑
1:14.320–1:15.600
zh半毛钱关系都没有
半毛钱关系都没有
1:15.600–1:18.700
zh但你需要花80%的时间去搞定它们
但你需要花80%的时间去搞定它们
1:18.700–1:19.380
zh这合理吗
这合理吗
1:19.380–1:21.240
zh其实现在的Agent开发
其实现在的Agent开发
1:21.240–1:22.540
zh就特别像当年
就特别像当年
1:22.540–1:24.600
zh没有Next.js时的Web开发
没有Next.js时的Web开发
1:24.600–1:27.180
zh大家都在疯狂地重复造轮子
大家都在疯狂地重复造轮子
1:27.180–1:30.320
zh拼凑各种路由 打包工具和状态管理
拼凑各种路由 打包工具和状态管理
1:30.320–1:32.740
zh每个团队都在写自己的一套脚手架
每个团队都在写自己的一套脚手架
1:32.740–1:35.400
zhRissel这次搞出Eve的思路非常明确
Rissel这次搞出Eve的思路非常明确
1:35.400–1:37.960
zh不要让开发者再去拼凑零件了
不要让开发者再去拼凑零件了
1:37.960–1:40.000
zh我把生产环境需要的所有基建
我把生产环境需要的所有基建
1:40.000–1:41.160
zh直接打包送给你
直接打包送给你
1:41.160–1:44.000
zh而且它用了一个极其讨巧的设计理念
而且它用了一个极其讨巧的设计理念
1:44.000–1:45.200
zh文件系统优先
文件系统优先
1:45.200–1:46.440
enFile System First
File System First
1:46.440–1:49.320
zh就像Next.js把目录变成了路由一样
就像Next.js把目录变成了路由一样
1:49.320–1:51.400
zhEve把目录变成了Agent
Eve把目录变成了Agent
1:51.400–1:53.980
zh接下来我们从工程落地的视角
接下来我们从工程落地的视角
1:53.980–1:56.840
zh硬核拆解一下Eve到底解决了哪些痛点
硬核拆解一下Eve到底解决了哪些痛点
1:56.840–1:58.360
zh文件系统及Agent
文件系统及Agent
1:58.360–2:01.700
zh在Eve里你不需要写一堆复杂的注册代码
在Eve里你不需要写一堆复杂的注册代码
2:01.700–2:03.240
zh一个目录就是一个Agent
一个目录就是一个Agent
2:03.240–2:05.840
zh你的Agent.ts用来配模型
你的Agent.ts用来配模型
2:05.840–2:08.460
zhInstructions.md就是系统提示词
Instructions.md就是系统提示词
2:08.460–2:09.820
zh你想加个工具
你想加个工具
2:09.820–2:12.740
zh直接在Tools目录下建个TypeScript文件
直接在Tools目录下建个TypeScript文件
2:12.740–2:14.580
zh文件名就是工具名
文件名就是工具名
2:14.580–2:17.360
zhEve会在构建时自动发现它
Eve会在构建时自动发现它
2:17.500–2:20.700
zh比如你建一个Tools.run下滑线SQL.ts的文件
比如你建一个Tools.run下滑线SQL.ts的文件
2:20.700–2:22.840
zh里面有Zo的定义输入Schema
里面有Zo的定义输入Schema
2:22.840–2:25.540
zhEve就会自动把这个工具暴露给模型
Eve就会自动把这个工具暴露给模型
2:25.540–2:28.280
zh模型可以直接调用RunSQL
模型可以直接调用RunSQL
2:28.280–2:30.320
zh不需要任何额外的注册步骤
不需要任何额外的注册步骤
2:30.320–2:31.780
zh你想教它个新技能
你想教它个新技能
2:31.780–2:33.260
zh在Skills目录下
在Skills目录下
2:33.260–2:34.180
zhDeal个Markdown
Deal个Markdown
2:34.180–2:36.660
zh模型在需要的时候会自动加载
模型在需要的时候会自动加载
2:36.660–2:37.960
zh比如你有个Skills
比如你有个Skills
2:37.960–2:38.720
enRevenue
Revenue
2:38.720–2:39.840
enDefinitions
Definitions
2:39.840–2:40.840
en.md
.md
2:40.840–2:43.840
zh里面写着收入是扣除退款后的金额
里面写着收入是扣除退款后的金额
2:43.840–2:46.320
zh按周统计周一为起点
按周统计周一为起点
2:46.320–2:47.300
zh这样的业务规则
这样的业务规则
2:47.300–2:49.660
zh当用户问上周收入多少时
当用户问上周收入多少时
2:49.660–2:51.580
zh模型会自动加载这个技能
模型会自动加载这个技能
2:51.580–2:53.500
zh确保回答符合公司的定义
确保回答符合公司的定义
2:53.500–2:55.080
zh这种设计太直觉了
这种设计太直觉了
2:55.080–2:57.820
zh你一眼扫过去就能知道这个agent是干嘛的
你一眼扫过去就能知道这个agent是干嘛的
2:57.820–2:58.980
zh能用什么工具
能用什么工具
2:58.980–2:59.820
zh有什么技能
有什么技能
2:59.820–3:02.640
zh它消除了传统框架里那种到处注册
它消除了传统框架里那种到处注册
3:02.640–3:04.800
zh到处引用的意大利面条代码
到处引用的意大利面条代码
3:04.800–3:07.780
zh这极大的降低了团队协作时的认知负担
这极大的降低了团队协作时的认知负担
3:07.780–3:09.540
zh新人上手也快得多
新人上手也快得多
3:09.540–3:11.720
zh你不需要学习一堆复杂的API
你不需要学习一堆复杂的API
3:11.720–3:13.680
zh只需要理解目录结构就行了
只需要理解目录结构就行了
3:13.680–3:15.880
zh开箱即用的生产机基建
开箱即用的生产机基建
3:15.880–3:18.040
zh这才是EV最核心的杀手键
这才是EV最核心的杀手键
3:18.040–3:20.280
zh它底层集成了Workflow SDK
它底层集成了Workflow SDK
3:20.280–3:21.480
zh这意味着什么
这意味着什么
3:21.480–3:24.460
zh意味着你的agent是自带持久化执行的
意味着你的agent是自带持久化执行的
3:24.460–3:27.080
zh每一步操作都会被checkpoint记录下来
每一步操作都会被checkpoint记录下来
3:27.080–3:29.300
zhEV把绘画做成checkpointed workflow
EV把绘画做成checkpointed workflow
3:29.300–3:31.520
zh已完成的步骤会记录结果
已完成的步骤会记录结果
3:31.520–3:32.220
zh不会重跑
不会重跑
3:32.220–3:33.420
zh崩溃或部署后
崩溃或部署后
3:33.420–3:35.220
zh可以从已确认的步骤继续
可以从已确认的步骤继续
3:35.220–3:37.780
zh遇到人工审批或等待后续消息时
遇到人工审批或等待后续消息时
3:37.780–3:39.960
zhSession可以暂停不消耗计算资源
Session可以暂停不消耗计算资源
3:39.960–3:43.080
zh这解决了一个agent的开发中最头疼的问题
这解决了一个agent的开发中最头疼的问题
3:43.080–3:44.860
zh状态管理想象一个场景
状态管理想象一个场景
3:44.860–3:48.240
zh你的agent在处理一个复杂的数据分析任务
你的agent在处理一个复杂的数据分析任务
3:48.240–3:50.280
zh它需要先从数据库查询数据
它需要先从数据库查询数据
3:50.280–3:52.560
zh然后调用一个外部API做分析
然后调用一个外部API做分析
3:52.560–3:53.520
zh最后生成报告
最后生成报告
3:53.520–3:54.860
zh在传统框架里
在传统框架里
3:54.860–3:57.460
zh如果在第二部API调用时网络断了
如果在第二部API调用时网络断了
3:57.460–3:59.260
zh整个任务就得重新开始
整个任务就得重新开始
3:59.260–4:01.560
zh在EV里已完成的第一步会被记录
在EV里已完成的第一步会被记录
4:01.560–4:03.860
zh网络恢复后直接从第二部继续
网络恢复后直接从第二部继续
4:03.860–4:05.220
zh但这里有个重要细节
但这里有个重要细节
4:05.220–4:07.440
zh如果某个Tool在执行中被打断
如果某个Tool在执行中被打断
4:07.440–4:08.680
zh这一步可能会重跑
这一步可能会重跑
4:08.680–4:10.280
zh所以调用外部系统时
所以调用外部系统时
4:10.280–4:11.660
zh你要么做好密等设计
你要么做好密等设计
4:11.660–4:13.040
zh要么加上人工审批
要么加上人工审批
4:13.040–4:14.740
zh这样才能保证数据一致性
这样才能保证数据一致性
4:14.740–4:16.360
zh安全问题他也想好了
安全问题他也想好了
4:16.360–4:17.820
zh这里要注意一个细节
这里要注意一个细节
4:17.820–4:20.360
zhEV把agent的生成和执行的代码
EV把agent的生成和执行的代码
4:20.360–4:21.720
zh放进独立sandbox
放进独立sandbox
4:21.720–4:24.300
zh包括shell命令脚本和文件读写
包括shell命令脚本和文件读写
4:24.300–4:25.920
zh但开发者定义的tools
但开发者定义的tools
4:25.920–4:27.620
zh运行在应用run time中
运行在应用run time中
4:27.620–4:30.220
zh可以通过ctx.getsandbox
可以通过ctx.getsandbox
4:30.220–4:31.200
zh调用沙箱
调用沙箱
4:31.200–4:33.620
zh所以安全边界不是绝对的隔离
所以安全边界不是绝对的隔离
4:33.620–4:35.200
zh而是靠窄工具设计
而是靠窄工具设计
4:35.200–4:38.300
zh权限控制审批和密等设计一起完成的
权限控制审批和密等设计一起完成的
4:38.300–4:40.560
zhEV支持多个sandbox后端
EV支持多个sandbox后端
4:40.560–4:42.700
zh在生产环境用versail sandbox
在生产环境用versail sandbox
4:42.700–4:45.320
zh本地开发可以用darker micro sandbox
本地开发可以用darker micro sandbox
4:45.320–4:46.140
zh或纯bash
或纯bash
4:46.140–4:47.440
zh这样的分层设计
这样的分层设计
4:47.440–4:49.380
zh让你既能灵活调用业务系统
让你既能灵活调用业务系统
4:49.380–4:51.960
zh又能隔离AI生成的不可信代码
又能隔离AI生成的不可信代码
4:51.960–4:54.660
zh极简的human indial loop和多渠道分发
极简的human indial loop和多渠道分发
4:54.660–4:56.300
zh在EV的工具定义里
在EV的工具定义里
4:56.300–4:58.700
zh加个人工审批简直不要太简单
加个人工审批简直不要太简单
4:58.700–5:00.940
zh只要加一行needs approval判断
只要加一行needs approval判断
5:00.940–5:03.340
zh比如发现SQL查询超过50G
比如发现SQL查询超过50G
5:03.340–5:05.260
zhBagent就会自动停下来
Bagent就会自动停下来
5:05.260–5:06.780
zh等你点个头它才继续
等你点个头它才继续
5:06.780–5:10.180
zh这解决了企业对agent行为失控的终极恐惧
这解决了企业对agent行为失控的终极恐惧
5:10.180–5:12.200
zh当agent要执行一个会扫描
当agent要执行一个会扫描
5:12.200–5:14.560
zh超过50GB数据的查询时
超过50GB数据的查询时
5:14.560–5:17.200
zh系统会自动暂停等待人工审批
系统会自动暂停等待人工审批
5:17.200–5:20.360
zh这种细利度的控制是传统框架很难做到的
这种细利度的控制是传统框架很难做到的
5:20.360–5:21.860
zh同一个agent的代码库
同一个agent的代码库
5:21.860–5:24.340
zh加个slack.ts就能接入slack
加个slack.ts就能接入slack
5:24.340–5:26.680
zh加个discord.ts就能接discord
加个discord.ts就能接discord
5:26.680–5:28.320
zh核心逻辑完全不用改
核心逻辑完全不用改
5:28.320–5:31.200
zh这才是真正意义上的write once run anywhere
这才是真正意义上的write once run anywhere
5:31.200–5:33.440
zh定时任务则放在schedules下
定时任务则放在schedules下
5:33.440–5:35.720
zh用chrome表达式触发同一个agent
用chrome表达式触发同一个agent
5:35.720–5:38.680
zh你可以用同一个agent处理多个平台的请求
你可以用同一个agent处理多个平台的请求
5:38.680–5:40.600
zh比如你的数据分析agent
比如你的数据分析agent
5:40.600–5:42.220
zh可以在slack里回答问题
可以在slack里回答问题
5:42.220–5:44.740
zh也可以通过API被其他系统调用
也可以通过API被其他系统调用
5:44.740–5:47.280
zh还可以通过定时任务每周生成报告
还可以通过定时任务每周生成报告
5:47.280–5:49.380
zh所有这些都用同一份代码
所有这些都用同一份代码
5:49.380–5:51.100
zh但这里有个很离谱的地方
但这里有个很离谱的地方
5:51.100–5:54.160
zh很多人觉得用这种高度封装的框架
很多人觉得用这种高度封装的框架
5:54.160–5:56.340
zh会失去对底层逻辑的控制力
会失去对底层逻辑的控制力
5:56.340–5:57.480
zh觉得它太重了
觉得它太重了
5:57.480–5:59.020
zh其实你理解错了
其实你理解错了
5:59.020–6:00.500
zhEVE的重是重在
EVE的重是重在
6:00.500–6:04.040
zh他帮你兜底了那些最容易出bug的基建层
他帮你兜底了那些最容易出bug的基建层
6:04.040–6:05.600
zh他把脏活包揽了
他把脏活包揽了
6:05.600–6:07.440
zh反而释放了你的精力
反而释放了你的精力
6:07.440–6:08.920
zh让你能真正去思考
让你能真正去思考
6:08.920–6:11.540
zh这个agent到底该怎么解决也有问题
这个agent到底该怎么解决也有问题
6:11.540–6:12.960
zh在过去的框架里
在过去的框架里
6:12.960–6:14.960
zh你花大量时间在写连接器
你花大量时间在写连接器
6:14.960–6:16.460
zh写重视逻辑
写重视逻辑
6:16.460–6:17.420
zh写状态机
写状态机
6:17.420–6:18.500
zh而在EVE里
而在EVE里
6:18.500–6:20.580
zh你只需要关心两件事
你只需要关心两件事
6:20.580–6:22.180
zh你要给agent什么指令
你要给agent什么指令
6:22.180–6:23.180
zh你要给他什么工具
你要给他什么工具
6:23.180–6:25.160
zh而且EVE并不是一个黑盒
而且EVE并不是一个黑盒
6:25.160–6:26.720
zh它是完全开源的
它是完全开源的
6:26.720–6:28.660
zh基于APACHE 2.0许可证
基于APACHE 2.0许可证
6:28.660–6:30.700
zh你可以看到所有的原代码
你可以看到所有的原代码
6:30.700–6:32.020
zh可以自定义任何部分
可以自定义任何部分
6:32.020–6:34.540
zh如果你需要特殊的sandbox后端
如果你需要特殊的sandbox后端
6:34.540–6:36.100
zh你可以写自己的适配器
你可以写自己的适配器
6:36.100–6:38.180
zh如果你需要特殊的渠道集成
如果你需要特殊的渠道集成
6:38.180–6:39.900
zh你可以用Define Channel自己写
你可以用Define Channel自己写
6:39.900–6:42.000
zh所以EVE不是限制你的自由
所以EVE不是限制你的自由
6:42.000–6:43.980
zh而是给你一个坚实的基础
而是给你一个坚实的基础
6:43.980–6:45.880
zh让你可以在上面自由地构建
让你可以在上面自由地构建
6:45.880–6:49.260
zh所以EVE给我们带来了一个非常重要的认知升级
所以EVE给我们带来了一个非常重要的认知升级
6:49.260–6:51.200
zhagent不再是一段脚本
agent不再是一段脚本
6:51.200–6:52.760
zh而是一个系统工程
而是一个系统工程
6:52.760–6:55.200
zh一个真正能落地的企业级agent
一个真正能落地的企业级agent
6:55.200–6:58.460
zh它的核心竞争力不在于你用了多牛的prompt
它的核心竞争力不在于你用了多牛的prompt
6:58.460–7:00.180
zh而在于你有没有一套稳定
而在于你有没有一套稳定
7:00.180–7:02.800
zh安全可追溯的工程脚手架
安全可追溯的工程脚手架
7:02.800–7:05.100
zhEVE其实是在用工程化的手段
EVE其实是在用工程化的手段
7:05.100–7:07.680
zh却对抗大模型本身的不确定性
却对抗大模型本身的不确定性
7:07.680–7:10.820
zh它把大模型包装成了一个可靠的工程组件
它把大模型包装成了一个可靠的工程组件
7:10.820–7:14.340
zh这才是它自称agent领域的nextdngs的底气
这才是它自称agent领域的nextdngs的底气
7:14.340–7:16.040
zh让我给你举个具体的例子
让我给你举个具体的例子
7:16.040–7:19.200
zh假设你要为一个电商公司构建一个客服agent
假设你要为一个电商公司构建一个客服agent
7:19.200–7:22.400
zh这个agent需要查询订单信息处理退货申请
这个agent需要查询订单信息处理退货申请
7:22.400–7:25.240
zh在slack和webchat两个渠道同时运行
在slack和webchat两个渠道同时运行
7:25.240–7:27.000
zh每天生成一份客服报告
每天生成一份客服报告
7:27.000–7:28.980
zh用传统框架你需要自己
用传统框架你需要自己
7:28.980–7:31.420
zh写数据库连接和查询逻辑
写数据库连接和查询逻辑
7:31.420–7:34.660
zh自己实现状态管理确保退货申请不会丢失
自己实现状态管理确保退货申请不会丢失
7:34.660–7:36.520
zh自己写两个渠道的适配器
自己写两个渠道的适配器
7:36.520–7:38.820
zh自己实现定时任务和报告生成
自己实现定时任务和报告生成
7:38.820–7:41.380
zh自己处理错误恢复和日志追踪
自己处理错误恢复和日志追踪
7:41.380–7:43.540
zh这可能需要几周的开发时间
这可能需要几周的开发时间
7:43.540–7:45.540
zh用eve你只需要在tools query
用eve你只需要在tools query
7:45.540–7:47.700
zhorderts里写个查询函数
orderts里写个查询函数
7:47.700–7:50.040
zh在tools process下划线refund
在tools process下划线refund
7:50.040–7:52.300
zhts里加个nextapproval标记
ts里加个nextapproval标记
7:52.300–7:54.740
zh在channels目录下加两个文件
在channels目录下加两个文件
7:54.740–7:57.420
zh在schedule s目录下加个定时任务
在schedule s目录下加个定时任务
7:57.420–7:59.300
zh整个过程可能只需要几天
整个过程可能只需要几天
7:59.300–8:01.660
zh而且意味会自动处理持久化
而且意味会自动处理持久化
8:01.660–8:04.720
zh错误恢复日志追踪等所有的基建工作
错误恢复日志追踪等所有的基建工作
8:04.720–8:06.220
zhRissell内部的应用实践
Rissell内部的应用实践
8:06.220–8:07.640
zhRissell公开提到
Rissell公开提到
8:07.640–8:10.840
zh他们在生产环境运行100多个基于eve的agent
他们在生产环境运行100多个基于eve的agent
8:10.840–8:13.300
zh其中包括D0数据分析agent
其中包括D0数据分析agent
8:13.300–8:15.240
zh每月处理3万多个分析问题
每月处理3万多个分析问题
8:15.240–8:18.480
zh还有销售线索agentathena销售cockpit
还有销售线索agentathena销售cockpit
8:18.480–8:20.300
zhVertex支持agent
Vertex支持agent
8:20.300–8:22.940
zhDraft0内容agent和Vluoagent等
Draft0内容agent和Vluoagent等
8:22.940–8:25.240
zh这些都是真实的生产级应用
这些都是真实的生产级应用
8:25.240–8:28.360
zh说明eve的持久化执行sandbox隔离
说明eve的持久化执行sandbox隔离
8:28.360–8:31.680
zhHuman in the loop和多渠道能力已经经过验证
Human in the loop和多渠道能力已经经过验证
8:31.680–8:33.760
zh这些agent的共同特点是
这些agent的共同特点是
8:33.760–8:36.220
zh他们都需要处理长期运行的任务
他们都需要处理长期运行的任务
8:36.220–8:40.060
zh调用多个外部系统在关键操作前获得人工确认
调用多个外部系统在关键操作前获得人工确认
8:40.060–8:42.100
zh这正是eve设计的核心场景
这正是eve设计的核心场景
8:42.100–8:44.160
zh未来随着模型能力的提升
未来随着模型能力的提升
8:44.160–8:46.540
zhagent的业务逻辑会越来越复杂
agent的业务逻辑会越来越复杂
8:46.540–8:48.580
zh多agent的编排会成为常态
多agent的编排会成为常态
8:48.580–8:51.240
zh一个主agent带着一群子agent的干活
一个主agent带着一群子agent的干活
8:51.240–8:54.220
zheve这种约定优于配置自带基建的模式
eve这种约定优于配置自带基建的模式
8:54.220–8:56.420
zh给出了一个很有参考价值的方向
给出了一个很有参考价值的方向
8:56.420–8:57.560
zh需要说明的是
需要说明的是
8:57.560–9:00.480
zheve当前仍处于public preview阶段
eve当前仍处于public preview阶段
9:00.480–9:02.060
zh官方文档明确说
官方文档明确说
9:02.060–9:05.040
zhAPI文档和行为在GA前可能会变化
API文档和行为在GA前可能会变化
9:05.040–9:08.020
zh但这不妨碍它成为一个有影响力的设计参考
但这不妨碍它成为一个有影响力的设计参考
9:08.020–9:11.320
zhRissel把agent的工程化问题收敛到文件系统
Rissel把agent的工程化问题收敛到文件系统
9:11.320–9:13.900
zhWorkflow Sandbox Channel和Evos这几个约定里
Workflow Sandbox Channel和Evos这几个约定里
9:13.900–9:15.980
zh这个思路本身就很值得借鉴
这个思路本身就很值得借鉴
9:15.980–9:17.480
zheve的开源属性
eve的开源属性
9:17.480–9:19.820
zh意味着社区会不断贡献新的工具
意味着社区会不断贡献新的工具
9:19.820–9:21.100
zh新的技能
新的技能
9:21.100–9:22.060
zh新的集成
新的集成
9:22.060–9:24.320
zh随着更多团队的时间和反馈
随着更多团队的时间和反馈
9:24.320–9:25.880
zh这个框架会不断完善
这个框架会不断完善
9:25.880–9:28.000
zh最后让我分享一些eve的最佳实践
最后让我分享一些eve的最佳实践
9:28.000–9:29.700
zh写好你的instructions
写好你的instructions
9:29.700–9:30.860
eninstructions
instructions
9:30.860–9:32.880
zhmd是agent的大脑
md是agent的大脑
9:32.880–9:35.780
zh好的instructions应该清晰具体有约束
好的instructions应该清晰具体有约束
9:35.780–9:38.700
zh不要写你是一个有帮助的助手这样的废话
不要写你是一个有帮助的助手这样的废话
9:38.700–9:40.960
zh要写你是一个数据分析师
要写你是一个数据分析师
9:40.960–9:43.740
zh你的工作是回答关于公司数据的问题
你的工作是回答关于公司数据的问题
9:43.740–9:45.540
zh优先使用精确的数字
优先使用精确的数字
9:45.540–9:46.420
zh而不是估计
而不是估计
9:46.420–9:48.840
zh如果你不能从数据中得出答案
如果你不能从数据中得出答案
9:48.840–9:49.540
zh就直说
就直说
9:49.540–9:51.000
zh精心设计你的tools
精心设计你的tools
9:51.000–9:53.320
zh每个tool应该做一件事并且做好
每个tool应该做一件事并且做好
9:53.320–9:54.780
zh不要设计一个超级tool
不要设计一个超级tool
9:54.780–9:55.620
zh什么都能做
什么都能做
9:55.620–9:58.340
zh而且tool的输入输出要清晰
而且tool的输入输出要清晰
9:58.340–10:00.000
zh用zod定义scammer
用zod定义scammer
10:00.000–10:01.380
zh让模型知道怎么调用
让模型知道怎么调用
10:01.380–10:02.960
zh用skills来教导agent
用skills来教导agent
10:02.960–10:04.820
zhskills是markdown文件
skills是markdown文件
10:04.820–10:06.680
zh用来教导agent的如何做事
用来教导agent的如何做事
10:06.680–10:08.380
zh比如你可以写一个
比如你可以写一个
10:08.380–10:09.520
enskillshowto
skillshowto
10:09.520–10:13.540
en-write-good-sequel-md
-write-good-sequel-md
10:13.540–10:14.600
zh里面写着
里面写着
10:14.600–10:18.540
zh写sql时要避免n加1查询这样的建议
写sql时要避免n加1查询这样的建议
10:18.540–10:20.460
zh当agent需要写sql时
当agent需要写sql时
10:20.460–10:22.180
zh他会自动加载这个skill
他会自动加载这个skill
10:22.180–10:24.180
zh充分利用human in the loop
充分利用human in the loop
10:24.180–10:25.920
zh不要让agent的完全自主
不要让agent的完全自主
10:25.920–10:28.300
zh对于重要的操作加上审批流
对于重要的操作加上审批流
10:28.300–10:30.120
zh这不仅提高了安全性
这不仅提高了安全性
10:30.120–10:31.660
zh也提高了用户的信任度
也提高了用户的信任度
10:31.660–10:32.740
zh监控和追踪
监控和追踪
10:32.740–10:36.000
zheve生成的open telemetry追踪非常详细
eve生成的open telemetry追踪非常详细
10:36.000–10:37.540
zh充分利用这些信息
充分利用这些信息
10:37.540–10:38.860
zh来理解agent的行为
来理解agent的行为
10:38.860–10:40.560
zh定期审查追踪日志
定期审查追踪日志
10:40.560–10:42.300
zh找出agent的问题所在
找出agent的问题所在
10:42.300–10:43.220
zh总结一下
总结一下
10:43.220–10:45.140
zh别再手搓玩具agent了
别再手搓玩具agent了
10:45.140–10:46.640
zheve把企业机基建
eve把企业机基建
10:46.640–10:48.140
zh直接塞进了文件系统
直接塞进了文件系统
10:48.140–10:49.480
zh如果你也收购了
如果你也收购了
10:49.480–10:51.120
zh天天修agent的底层bug
天天修agent的底层bug
10:51.120–10:52.940
zh真的建议去试一下eve
真的建议去试一下eve
10:52.940–10:55.120
zh那么你目前在开发agent的时
那么你目前在开发agent的时
10:55.120–10:57.540
zh遇到最头疼的工程化问题是什么
遇到最头疼的工程化问题是什么
10:57.540–10:59.320
zh把你的看法打在公屏上
把你的看法打在公屏上
10:59.320–11:00.940
zh或者在评论区告诉我
或者在评论区告诉我
11:00.940–11:02.140
zh我是为什么叫QQ
我是为什么叫QQ
11:02.140–11:03.180
zh我们下期见
我们下期见
11:03.180–11:04.500
zh别忘了长按点赞
别忘了长按点赞
11:04.500–11:05.500
zh一键三连
一键三连
影片筆記:Agent版Next.js来了?文件系统即Agent!拆解 eve
一句話總結
Resend 發布開源 Agent 框架 EVE,定位為「Agent 領域的 Next.js」,透過「文件系統優先」的設計理念,將目錄結構直接映射為 Agent 行為,並內建生產級基建(如持久化、沙箱隔離、人工審批),旨在解決當前 Agent 開發中狀態管理困難、安全隔離不足及基建重複造輪子的痛點。
核心重點
- 市場定位與痛點:
- 當前 Agent 框架(如 LangChain, AutoGen, MetaGPT, CrewAI)眾多,但生產環境面臨狀態丟失、安全隔離不足、基建重複(80% 時間處理持久化、審批、對接)等問題。
- EVE 類比 Next.js 出現前的 Web 開發,提供工程化解決方案。
- 核心設計:文件系統優先 (File System First):
- 目錄即 Agent:目錄結構直接定義 Agent 行為。
Agent.ts:配置模型。
Instructions.md:系統提示詞。
Tools/:放置 TypeScript 文件,文件名即工具名,自動發現並暴露給模型。
Skills/:放置 Markdown 文件,定義業務規則或技能(如收入定義),模型按需加載。
- 優勢:消除「意大利麵條代碼」,降低認知負擔,結構直觀。
- 生產級基建內建:
- 持久化執行 (Checkpointed Workflow):基於 Workflow SDK,記錄每一步操作。已完成步驟不重跑,崩潰或部署後可從確認步驟繼續。遇到人工審批或等待消息時,Session 暫停,不消耗計算資源。需注意 Tool 執行中斷開可能重跑,外部系統調用需做好冪等設計。
- 安全與沙箱隔離:Agent 生成和執行的代碼(Shell 命令、腳本、文件讀寫)放入獨立 Sandbox。開發者定義的 Tools 運行在應用 Runtime 中,可通過
ctx.getsandbox 調用沙箱。支援多種 Sandbox 後端(生產環境使用 versail sandbox,本地開發可使用 darker micro sandbox 或純 Bash)。
- 極簡 Human-in-the-loop 與多渠道分發:在 Tool 定義中加一行
needs approval 判斷(如 SQL 查詢超過 50GB 時暫停等待確認)。核心邏輯不變,通過 channels 目錄下的文件(如 slack.ts, discord.ts)接入不同平台,實現「Write once, run anywhere」。
- 定時任務:在
schedules 目錄下使用 Cron 表達式觸發同一個 Agent。
- 框架定位與開源屬性:
- EVE 的「重」在於兜底易出 Bug 的基建層,釋放開發者精力思考業務邏輯。
- 完全開源,基於 Apache 2.0 許可證。可自定義 Sandbox 後端和渠道集成。
- 將大模型包裝為可靠的工程組件,Agent 不再是腳本,而是具備穩定、安全、可追溯的工程系統。
- 實際應用案例與實踐:
- 電商客服 Agent 案例:傳統框架需自行處理數據庫連接、狀態管理等,耗時數週;EVE 框架僅需在
tools、channels、schedules 寫對應文件,耗時數天,自動處理基建。
- Resend 內部實踐:生產環境運行 100+ 基於 EVE 的 Agent,包括 D0 數據分析 Agent、銷售線索 Agent (Athena)、銷售 Cockpit、Vertex 支持 Agent、Draft0 內容 Agent、Vluo Agent 等,驗證了持久化、沙箱隔離、人工審批及多渠道能力。
- 未來趨勢與最佳實踐:
- 模型能力提升導致業務邏輯複雜化,多 Agent 編排(主 Agent 帶子 Agent)成為常態。
- 當前處於 Public Preview 階段,API 和行為在 GA 前可能變化。
- 最佳實踐:
- 寫好 Instructions:清晰、具體、有約束,避免空泛描述。
- 精心設計 Tools:單一職責,輸入輸出清晰,使用 Zod 定義 Schema。
- 利用 Skills:通過 Markdown 文件教導 Agent 做事。
- 充分利用 Human-in-the-loop:對重要操作加審批流。
- 監控與追蹤:利用 EVE 生成的詳細 Open Telemetry 追蹤信息,定期審查日誌。
詳細大綱
一、 背景與痛點:當前 Agent 開發的困境
- 市場現狀:市面上已有大量 Agent 框架(如 LangChain, AutoGen, MetaGPT, CrewAI),但 Resend 提出 EVE 為「Agent 領域的 Next.js」。
- 生產環境挑戰:
- 狀態管理:長期運行的 Agent 面臨網絡中斷、狀態丟失、對話歷史遺失等問題。
- 安全隔離:AI 生成的代碼(如 Shell 命令
rm -rf)不能直接運行在業務服務器上,需解決責任歸屬與隔離問題。
- 基建重複:開發者需花費 80% 時間處理持久化、審批流、企業內部系統對接(Slack, 釘釘等),而非核心業務邏輯。
- 類比:如同 Next.js 出現前的 Web 開發,團隊各自拼湊路由、打包工具和狀態管理。
二、 EVE 的核心設計理念:文件系統優先
- 目錄即 Agent:
Agent.ts:配置模型。
Instructions.md:系統提示詞(System Prompt)。
Tools/ 目錄:放置 TypeScript 文件,文件名即工具名,構建時自動發現並暴露給模型,無需額外註冊。
Skills/ 目錄:放置 Markdown 文件,定義業務規則或技能(如收入定義),模型按需加載。
- 優勢:消除「意大利麵條代碼」,降低團隊協作認知負擔,新人上手快,結構直觀。
三、 生產級基建內建
- 持久化執行(Checkpointed Workflow):
- 基於 Workflow SDK,每一步操作被記錄。
- 已完成步驟不重跑,崩潰或部署後可從確認步驟繼續。
- 遇到人工審批或等待消息時,Session 暫停,不消耗計算資源。
- 注意事項:若 Tool 執行中被斷開可能重跑,因此外部系統調用需做好冪等設計或加入人工審批以保證數據一致性。
- 安全與沙箱隔離:
- Agent 生成和執行的代碼放入獨立 Sandbox(包括 Shell 命令、腳本、文件讀寫)。
- 開發者定義的 Tools 運行在應用 Runtime 中,可通過
ctx.getsandbox 調用沙箱。
- 安全邊界依賴:窄工具設計 + 權限控制 + 審批 + 冪等設計。
- 支援多種 Sandbox 後端:生產環境使用
versail sandbox,本地開發可使用 darker micro sandbox 或純 Bash。
- 極簡 Human-in-the-loop 與多渠道分發:
- 人工審批:在 Tool 定義中加一行
needs approval 判斷(如 SQL 查詢超過 50GB 時暫停等待確認)。
- 多渠道接入:核心邏輯不變,通過
channels 目錄下的文件(如 slack.ts, discord.ts)接入不同平台,實現「Write once, run anywhere」。
- 定時任務:在
schedules 目錄下使用 Cron 表達式觸發同一個 Agent。
四、 框架定位與開源屬性
- 重與輕的辯證:EVE 的「重」在於兜底易出 Bug 的基建層,釋放開發者精力思考業務邏輯。
- 非黑盒:完全開源,基於 Apache 2.0 許可證。
- 可自定義 Sandbox 後端(寫自己的適配器)。
- 可自定義渠道集成(用
Define Channel 自己寫)。
- 認知升級:Agent 不再是腳本,而是具備穩定、安全、可追溯的工程系統。EVE 將大模型包裝為可靠的工程組件。
五、 實際應用案例與實踐
- 電商客服 Agent 案例:
- 傳統框架:需自行處理數據庫連接、狀態管理、渠道適配、定時任務、錯誤恢復,耗時數週。
- EVE 框架:僅需在
tools 寫查詢與退款函數(加審批標記),在 channels 加文件,在 schedules 加定時任務,耗時數天,自動處理基建。
- Resend 內部實踐:
- 生產環境運行 100+ 基於 EVE 的 Agent。
- 具體應用:D0 數據分析 Agent(每月處理 3 萬+ 問題)、銷售線索 Agent (Athena)、銷售 Cockpit、Vertex 支持 Agent、Draft0 內容 Agent、Vluo Agent 等。
- 驗證了持久化、沙箱隔離、人工審批及多渠道能力。
六、 未來趨勢與最佳實踐
- 未來趨勢:模型能力提升導致業務邏輯複雜化,多 Agent 編排(主 Agent 帶子 Agent)成為常態。EVE 的「約定優於配置」模式提供參考方向。
- 當前狀態:Public Preview 階段,API 和行為在 GA 前可能變化。
- 最佳實踐建議:
- 寫好 Instructions:清晰、具體、有約束,避免空泛描述(如「你是有幫助的助手」),應定義具體角色和工作原則。
- 精心設計 Tools:單一職責,輸入輸出清晰,使用 Zod 定義 Schema。
- 利用 Skills:通過 Markdown 文件教導 Agent 做事(如寫 SQL 時避免 N+1 查詢)。
- 充分利用 Human-in-the-loop:對重要操作加審批流,提高安全性與用戶信任。
- 監控與追蹤:利用 EVE 生成的詳細 Open Telemetry 追蹤信息,定期審查日誌以發現問題。
工具 / 模型 / 名詞整理
- 框架/產品:
- EVE (Resend 發布的開源 Agent 框架)
- Next.js (被類比對象)
- LangChain
- AutoGen
- MetaGPT
- CrewAI
- Workflow SDK
- versail sandbox (生產環境沙箱後端)
- darker micro sandbox (本地開發沙箱後端)
- Open Telemetry (追蹤系統)
- 技術/標準:
- Apache 2.0 (許可證)
- TypeScript
- Zod (輸入 Schema 定義工具)
- Cron 表達式 (定時任務觸發)
- 平台/渠道:
- Slack
- Discord
- 釘釘 (DingTalk)
- Webchat
- 內部應用名稱 (Resend):
- D0 數據分析 Agent
- Athena 銷售線索 Agent
- Sales Cockpit
- Vertex 支持 Agent
- Draft0 內容 Agent
- Vluo Agent
操作流程整理
- 初始化 Agent 結構:
- 創建
Agent.ts 配置模型。
- 創建
Instructions.md 撰寫系統提示詞。
- 定義工具 (Tools):
- 在
Tools/ 目錄下創建 TypeScript 文件。
- 文件名即工具名(如
query_orders.ts, process_refund.ts)。
- 在 Tool 定義中可加入
needs approval 標記(如 SQL 查詢超過 50GB 時暫停等待確認)。
- 使用 Zod 定義輸入 Schema。
- 定義技能 (Skills):
- 在
Skills/ 目錄下創建 Markdown 文件(如 Revenue Definitions.md, Howto write good sequel md)。
- 定義業務規則或技能,模型按需加載。
- 配置渠道 (Channels):
- 在
channels 目錄下創建文件(如 slack.ts, discord.ts)接入不同平台。
- 配置定時任務 (Schedules):
- 在
schedules 目錄下使用 Cron 表達式觸發同一個 Agent。
- 運行與監控:
- 生產環境使用
versail sandbox,本地開發可使用 darker micro sandbox 或純 Bash。
- 通過
ctx.getsandbox 調用沙箱執行代碼。
- 利用 EVE 生成的詳細 Open Telemetry 追蹤信息,定期審查日誌。
值得注意的限制或風險
- Tool 執行中斷重跑風險:若 Tool 執行中被斷開可能重跑,因此外部系統調用需做好冪等設計或加入人工審批以保證數據一致性。
- API 穩定性:當前處於 Public Preview 階段,API 和行為在 GA 前可能變化。
- 安全邊界依賴:安全邊界依賴窄工具設計、權限控制、審批及冪等設計,需開發者自行確保。
- 模型不確定性:雖有工程化包裝,但底層大模型仍存在不確定性,需通過清晰的 Instructions 和 Skills 進行約束。
逐字稿辨識疑點
- Resell / Rissel:逐字稿中交替出現「Resend」、「Resell」、「Rissel」,根據上下文應指同一公司,但需查證正確英文名稱(疑為 Resend)。
- NextDNJs / Nextdngs:逐字稿中出現「NextDNJs」和「Nextdngs」,疑為口誤或聽寫錯誤,應指「Next.js」。
- RM RF:逐字稿中出現「RM RF」,疑為 Shell 命令
rm -rf 的聽寫錯誤。
- Zo 的定義:逐字稿中出現「Zo 的定義輸入 Schema」,疑為「Zod 的定義」或類似工具名的聽寫錯誤。
- Deal 個 Markdown:逐字稿中出現「在 Skills 目錄下 Deal 個 Markdown」,疑為「放一個」或「寫一個」的口誤。
- Revenue Definitions.md:具體文件名,保留原樣。
- Query orderts:逐字稿中出現「tools query orderts」,疑為「query_orders.ts」或類似文件名的聽寫錯誤。
- Process 下劃線 refund ts:逐字稿中出現「tools process 下劃線 refund ts」,疑為「process_refund.ts」的聽寫錯誤。
- Schedules:逐字稿中出現「在 schedule s 目錄下」,疑為「schedules」目錄。
- Chrome 表達式:逐字稿中出現「用 chrome 表達式觸發」,疑為「Cron 表達式」的聽寫錯誤。
- Scammer:逐字稿中出現「用 zod 定義 scammer」,疑為「Schema」的聽寫錯誤。
- Howto write good sequel md:具體技能文件名,保留原樣。
- 為什麼叫 QQ:講者自我介紹,保留原樣。
可延伸追問
- EVE 框架如何處理多 Agent 編排中的狀態共享與衝突解決?
- 在生產環境中,
versail sandbox 的具體性能指標與成本結構為何?
- 對於非 TypeScript 生態的開發者,EVE 的學習曲線與適配難度如何?
- EVE 的持久化機制在面對極高併發寫入時的擴展性如何?
- 人工審批(Human-in-the-loop)的介面與流程是否支援自定義 UI 或第三方審批系統?
尚未產生學習筆記
請在 Telegram 指令最後加上「學習」,例如:videonote 網址 英文 雙語 學習