动手实战 · 从能跑的 Demo 到能用的产品

并发的代价:谁能同时跑

「看」可以并行,「改」必须排队,为什么以及怎么判断

本页解决的问题

先给结论

「并发的代价:谁能同时跑」要解决的关键问题是什么?

「看」可以并行,「改」必须排队,为什么以及怎么判断

判断标准

让这个结论先证明自己值得留下。 把这一页当成决策工具,而不是需要背下来的定义。把概念连到一个真实任务、一个可观察结果,以及一个能改变你判断的失败上。

下一步

写下一个问题:试完这个方法后,你能用什么证据回答它?

常见误区

结论听起来很完整,却没有检查最关键的假设。

可并行 vs 必须串行
可并行(只读操作)
搜索网页
读取文件
查询 API
数据分析
数据库查询
读取笔记

这些操作不修改任何东西,多个同时跑互不影响。10 个 Agent 同时搜索不会冲突。

必须串行(写操作)
写入文件
发送邮件
执行命令
删除资源
支付操作
编辑笔记

这些操作会改变外部状态。两个 Agent 同时改同一个文件 = 数据覆盖、内容丢失。

时间线对比

同一个任务:3 次搜索 + 1 次写入

3 个搜索并行,写入排在最后
搜索 A
2s
搜索 B
3s
搜索 C
2s
写入
1s
0s2s4s6s
总耗时:~4 秒 ✓
判断规则
一条规则判断能否并发:
这个操作执行完,世界有没有变?没变 → 可以并行
这个操作执行完,世界有没有变?变了 → 必须排队
两个「写」操作如果改的是不同的东西(不同文件、不同数据库表)→ 也可以并行

简单说:冲突发生在多个操作修改同一个资源的时候。只要目标不同,写操作之间也可以并行。

并行能省时间,但只有只读类操作才安全,涉及「写」的操作必须排队。设计多 Agent 系统时,第一步就是把工具分成「读」和「写」两类。

「可并行 vs 必须串行」里的风险边界在哪里

「这些操作不修改任何东西,多个同时跑互不影响。10 个 Agent 同时搜索不会冲突」把安全问题从一句“请模型不要犯错”拉回到权限、数据和环境。真正需要保护的是:模型即使判断失误,系统也不能让错误变成不可逆的结果。

把模型建议和实际权限分开

在「这些操作会 改变外部状态 。两个 Agent 同时改同一个文件 = 数据覆盖、内容丢失」涉及的流程中,要分别检查用户能要求什么、模型能建议什么、工具实际允许什么,以及谁有权批准写入或发送。网页、文档和工具返回值都可能携带不可信指令,不能因为它们看起来像说明就自动提升权限。

安全设计必须包含失败和恢复

结合「简单说:冲突发生在多个操作修改同一个资源的时候。只要目标不同,写操作之间也可以并行」做一次反向演练:加入错误输入、缺失凭证或迟迟不到的审批,确认系统会拒绝、暂停并留下可追踪信息,而不是继续执行到底。

从「可并行 vs 必须串行」走到「时间线对比」

「可并行 vs 必须串行」先把问题落在「这些操作不修改任何东西,多个同时跑互不影响。10 个 Agent 同时搜索不会冲突」上;到了「时间线对比」,讨论继续推进到「同一个任务:3 次搜索 + 1 次写入 并行执行 串行执行 3 个搜索并行,写入排在最后 搜索 A 2s 搜索 B 3s 搜索 C 2s 写入 1s 0s 2s 4s 6s 总耗时:~4 秒 ✓ 所有操作依次执行 搜索 A 2s 搜索 B 3s 搜索 C 2s 写入 1s 0s 2s 5s 8s 总耗时:~8 秒 ✗」。两段连起来,重点就不只是记住一个结论,而是看清它成立所依赖的条件。

把这条判断带到下一个场景

做安全判断时,把“模型想做什么”和“系统允许做什么”分开,逐个检查数据边界、工具权限、人工确认和失败后的恢复路径。

  • 「可并行 vs 必须串行」:这些操作不修改任何东西,多个同时跑互不影响。10 个 Agent 同时搜索不会冲突
  • 「时间线对比」:同一个任务:3 次搜索 + 1 次写入 并行执行 串行执行 3 个搜索并行,写入排在最后 搜索 A 2s 搜索 B 3s 搜索 C 2s 写入 1s 0s 2s 4s 6s 总耗时:~4 秒 ✓ 所有操作依次执行 搜索 A 2s 搜索 B 3s 搜索 C 2s 写入 1s 0s 2s 5s 8s 总耗时:~8 秒 ✗
  • 「最后的要点」:这些操作会 改变外部状态 。两个 Agent 同时改同一个文件 = 数据覆盖、内容丢失

最后的「最后的要点」把讨论落到「这些操作会 改变外部状态 。两个 Agent 同时改同一个文件 = 数据覆盖、内容丢失」。回看这条线索时,最值得保留的是:当输入、规模或风险改变,哪些判断需要重新做一遍。

标记为已学完 阅读进度会自动记录
← 上一篇下一篇 →

继续阅读

同一条线上的下一篇。

文章讨论

读到这里,留下一个判断。

把刚想明白的地方、还没想通的问题,留给下一位一起学习的人。

正在讨论 并发的代价:谁能同时跑 从能跑的 Demo 到能用的产品
3条讨论文章讨论 · 与共学社区同步
在共学社区查看
AM
Asha Morgan内容编辑
观点实践记录

我把这篇文章里的一个判断改写成了今天可以验证的小实验。比记住结论更有用的是,知道下一步要观察什么。

文章讨论7 有帮助
LH
Lin Harper独立开发者
观点观点

读完以后我先回头找它成立的条件,而不是直接把方法搬进项目。这个顺序让后面的取舍清楚很多。

文章讨论5 有帮助
KM
Kiki Moore产品运营
问题问题

如果把这个判断放到真实工作里,最先需要补的约束是什么?我想知道从阅读到第一次实践之间,哪一步最值得先做。

文章讨论4 有帮助