Crypto OS
Technical Crypto OS第六阶段 · AI × Crypto Engineering

T36 · Autonomous Onchain Economy

一个能自己赚钱和花钱的系统,边界在哪里?

练习的能力
AI LiteracyBuilderSystem Thinking
动手
交付毕业项目的 Agent:有钱包、有预算、有策略、有风险引擎、有一键停机与完整日志。
AI Lab
让 AI 给你的 Agent 写一份事故预案,自己演练一次:模型失控时,多久能停住它。

一个现实问题

把前面几章拼起来,你手上现在有这么一个东西。

它有一个钱包(T34)。它会用工具查链上数据(T33)。它的每一个动作都要走完提案、校验、模拟、执行、核对的流水线(T32、T35)。它买数据要花钱,而它把研究结论卖给用户,能收到钱。

某个月,它的收入第一次超过了支出。

这时候有人在会上问了一句:它现在算什么?

这不是一个哲学问题,是四个非常具体的工程与法律问题:

  • 钱包里的钱是谁的?公司的资产,还是「它的」资产?
  • 谁能停掉它?一个人?两个人?需要多久?
  • 如果它明天把钱亏光了,谁赔?
  • 如果它做的某件事违反了某地的规定,谁负责?

会上没人能答上来。于是有人提议:先让它跑着,等规模大一点再想这些。

这个提议是这一章要反对的。 因为上面四个问题的答案不是等出来的,它们必须在部署之前就写死在系统里——尤其是第二个。一个你不知道怎么停的系统,规模越大越停不下来。

思想实验

把这个 Agent 当成一家公司,一家只有一名员工、而这名员工是软件的公司。

这个类比很有用,因为公司这个东西存在了几百年,它要回答的问题早就被回答过。逐条对照:

公司要回答怎么回答的你的 Agent 对应什么
谁拥有它股权登记钱包私钥或智能账户的控制权在谁手里
谁能叫停它董事会、法定代表人停机开关由谁持有,需要几个人
亏了谁赔有限责任没有对应物——链上没有有限责任
违法谁负责法人 + 实际控制人部署它的人
怎么证明它做过什么会计账簿、审计审计日志与链上记录

第三行是最关键的差异。

公司制度最重要的发明之一是有限责任:出资人的损失以出资额为上限。它让人们敢于承担风险,因为下行是封顶的。

你的 Agent 没有这个。它的钱包里放多少钱,理论上就能亏多少;如果它有授权额度,能亏的还不止钱包里那些。没有人给你封顶,你必须自己封。

所以「自治」这个词在这里需要被拆开。它不是一个开关,而是至少三个独立的问题:

  1. 决策自治:它能不能自己决定做什么?
  2. 资金自治:它能不能自己决定花多少?
  3. 存续自治:它能不能拒绝被关掉?

前两个可以给,而且给了才有价值。第三个永远不能给。 一个能拒绝被关掉的系统,不叫自治,叫失控。

你来决定

你要给这个 Agent 定一个自治边界,写进配置。选哪个?

观察结果

四个选项不是四选一,是一条自治度的连续谱。每往上一级,需要配套的约束就多一层:

自治度它能做什么必须配套什么最大损失
L0 只读查询、分析、给建议来源留痕0
L1 提案生成结构化提案,人来执行Schema、Validator0
L2 预算内执行额度内自主执行全部十层 + 会话密钥 + 停机额度 + 未撤销授权
L3 自负盈亏有收入、自己决定支出优先级L2 全部 + 收支账本 + 对账额度 + 收入再投入部分

这张表和 T32 的 AI 能力分级是同一条轴,只是这里把它落到了资金上。规则也一样:

你在哪一级,取决于你能验证到哪一级。

而无论在哪一级,有一条是恒定的:

自治不等于无约束。一个自治系统的价值,取决于它的约束设计有多好。

这句话听起来像口号,但它有一个非常具体的检验方式:把你的约束配置给别人看,他能不能算出你的最大损失。 算不出来,说明你的系统还没有边界。

建立模型

一、Agent Treasury:收支两条线

一旦 Agent 有了收入,它就从「一个花钱的工具」变成了「一个有资产负债表的东西」。这时候需要把账分开记:

收入侧支出侧
来源服务费、任务佣金数据、算力、Gas、模型调用
记账时点链上确认收款后链上确认付款后
归属按任务、按用户按任务、按资源类型
对账依据交易哈希交易哈希

三条实践规则:

第一,收入不要自动进入可支配预算。 赚到的钱默认进入一个单独的余额,需要一次显式操作(人工或定期规则)才转入运营预算。否则一个收入异常(比如收到一笔误转)会直接抬高它的支出上限。

第二,Gas 要单独计量。 它不属于任何一个业务任务,但它是真实成本。不单独记,你会发现毛利算出来是正的,实际余额却在减少。

第三,以交易哈希为幂等键。 这是 T16 的幂等入库在这里的直接应用:一笔收付无论回调几次,账本只记一次。

二、停机开关:四个要点

这是整章最不能妥协的部分。一个停机开关要满足四条,缺一条就不算数:

  1. 触发路径不经过模型
  2. 默认拒绝
  3. 状态持久化
  4. 外部可触发
四条同时满足,才是一个真正的停机开关

触发路径不经过模型。 模型不能参与「要不要停」的判断,否则一个被注入或失控的模型可以阻止自己被停掉。停机指令必须走一条模型完全碰不到的通道。

默认拒绝。 停机状态下,所有执行请求一律立即拒绝,而不是排队等待。排队会导致恢复瞬间涌出一批积压操作——那往往比不停机更糟。

状态持久化。 重启之后仍然是停机,必须人工显式恢复。一个「重启就自动恢复运行」的停机开关,在最需要它的时候(进程崩溃重启)会自己失效。

外部可触发。 运维、监控告警、一个 HTTP 接口都能触发。不要只留一个需要登录内部系统才能按的按钮。

还要加一条演练要求:停机开关必须定期演练,并记录「从决定停机到确认已停」的实际耗时。没演练过的开关,和不存在的开关,你无法区分——这和 T30 的「故意破坏一条不变量」是同一个道理。

三、责任矩阵:四个问题的答案要写下来

回到开头那四个问题。它们的答案应该是一份文档,而不是一次会议讨论:

问题要写明
资产归属钱包的控制权在谁手里、用什么形式(多签?门槛是多少?)
停机权谁能停、需要几个人、最长多久能停住、演练记录在哪
损失承担最大损失是多少(算给别人看)、由谁承担、有没有上限
合规责任部署方是谁、服务对象在哪些地区、哪些行为明确不做

第三行的「算给别人看」是一个很好的自检:

最大损失 = 钱包余额
         + 所有未撤销的授权额度
         + 会话密钥剩余额度
         + 可被操纵的用户资金(如果它管别人的钱)

如果这个式子里有任何一项你填不出数字,说明你的系统还没有边界。

四、整个 Part B 在这里合上

这一章是 Technical Crypto OS 的最后一章。回头看,六个阶段其实在回答同一个问题的六个层次:

阶段它回答
一 · 心智模型链上到底存了什么,一笔交易怎样发生
二 · 合约工程怎样让规则变成谁都能调用、且改不了的代码
三 · 全栈应用怎样把它变成别人真的能用的产品
四 · DeFi 工程怎样在上面实现金融机制,以及它们在哪里会断
五 · 基础设施与安全怎样让它不在上线第二天被搬空
六 · AI 工程怎样让一个不可靠的组件安全地参与一个不可逆的系统

有一条线贯穿全部六个阶段,值得在最后一章说明白:

  1. 不可逆
  2. 所以要先模拟
  3. 所以要有不变量
  4. 所以要有边界
  5. 所以要能停下来

不可逆性是这个技术栈的全部特殊之处。 它既是链的价值(没人能撤销你的所有权),也是它全部工程难度的来源(你的每一个错误也撤销不了)。Part B 教的每一样东西——Fork 测试、不变量、威胁模型、模拟、策略引擎、停机开关——本质上都是在回应同一件事。

它叫什么

Agent TreasuryAgent 金库

Agent 可支配资产的总和,以及它的收支账本。

关键设计:收入不自动进入可支配预算,需要一次显式操作转入;Gas 单独计量;以交易哈希为幂等键对账。

自治度Autonomy Level

从只读、到提案、到预算内执行、到自负盈亏的连续谱。

每升一级需要多配一层约束。你在哪一级,取决于你能验证到哪一级。

停机开关Kill Switch

能立刻停止全部执行的开关。必须满足四条:触发路径不经过模型、默认拒绝、状态持久化、外部可触发。

必须定期演练,并记录从决定到确认停住的实际耗时。

最大损失Maximum Loss

钱包余额,加未撤销的授权额度,加会话密钥剩余额度,加可被操纵的用户资金。

如果这个数字你算不出来,说明系统还没有边界。

责任归属Accountability

资产归属、停机权、损失承担、合规责任四个问题的书面答案。

它不是法务文档,是工程前置条件——尤其是停机权,它直接决定了系统怎么设计。

动手

动手交付毕业项目的 Agent:有钱包、有预算、有策略、有风险引擎、有一键停机与完整日志测试网 + 前面各章的产出0 元。全程测试网。真实资产只有在完成 T28 到 T30 的安全验收、且最大损失可被算出之后才考虑

这是 Part B 的收尾交付,也是毕业项目技术线的核心组件。它不要求你写新东西,要求你把前面几章的产出接成一条能跑通、能停住、能说清的完整链路

交付清单:逐项打勾,缺一项不算完成。

组件出处验收方式
钱包与会话密钥T27、T34链上额度上限已设置,且小于链下日限额
工具集T33每个工具的 Schema 写全六要素
提案 Schema 与 ValidatorT32五个恶意提案全部被拒
策略引擎T34规则在配置文件里,不在代码里
模拟与风险引擎T35不通过模拟的提案无法进入执行
执行与链上核对T35执行后比对实际与模拟,超阈值告警
停机开关本章四条要求全部满足,且演练过
审计日志T32、T34能回答四个问题(见下)
收支账本本章以交易哈希为幂等键,可对账

算出你的最大损失,写在 README 第一行。

按上面那个式子逐项填。填不出来的项就是你系统的漏洞,先去把它变成一个有限的数字,再继续。

做一次停机演练,掐表。

流程:让 Agent 正常运行并持续提交提案 → 由一个不接触模型的通道触发停机 → 记录从触发到「确认没有任何新执行」的耗时 → 重启进程,确认它仍然是停机状态 → 人工显式恢复。

把这个耗时写进 README。它是这个系统最重要的一个指标:它约等于事故发生时你的损失下限。

验证审计日志能回答四个问题。

随便挑一条历史提案,从日志里回答:谁提的、为什么通过或拒绝、执行了什么、执行后余额是多少。

任何一个答不上来,日志就还不够用。

写一页责任说明。

资产归属、停机权(谁、几人、多久)、最大损失、合规边界(明确不做什么)。四项各写三到五行。

这一页比代码更能体现你是否真的理解了这一章。

红线:在完成 T28 到 T30 的安全验收、并且最大损失能被算出来之前,不要接入任何真实资产。这句话在这套课里出现了很多次,这是最后一次。

AI Lab

AI Lab让 AI 给你的 Agent 写一份事故预案,然后真的演练一次Level 3 · Tool Agent

先让它写:

这是我的 Agent 架构与策略配置(附上)。请写一份事故预案,覆盖以下场景:

1. 模型持续产出异常提案,但每一条都通过了校验
2. 提示词注入导致它试图向未知地址付款
3. 依赖的价格源失效或被操纵
4. 一笔执行结果与模拟严重不符
5. 收入异常(收到一笔来源不明的大额转账)
6. 你认为我漏掉的第六种场景

每个场景写四项:怎样发现、谁负责、立刻做什么、事后怎样复盘。
「立刻做什么」必须是具体的接口调用或命令,不要写「联系相关人员」。

第 6 个场景是故意留的口子——模型在这一项上经常能提出团队没想到的东西,比如「依赖的外部协议升级了合约」(T30 提过)或者「会话密钥即将到期而无人续期」。

然后真的演练一次。 挑第 1 或第 2 个场景,在测试网上制造它,按预案执行,掐表记录:

记录项为什么重要
发现耗时从异常发生到有人知道
决策耗时从知道到决定停机
生效耗时从触发停机到确认无新执行
三者之和这就是你的真实响应时间

把这个数字和 AI 估算的比一比。差距通常很大,而实测的那个才是真的

演练里最容易暴露的问题是「谁负责」那一栏写着一个岗位而不是一个人,于是真出事时没人动手。

AI 说完之后,你必须自己验证

  • 预案里每一个「立刻停止」的动作,你都能指出具体由哪个接口、哪个人触发
  • 停机步骤的触发路径确实不经过模型——凡是需要模型配合的,划掉重写
  • 它估算的响应时间,与你实际演练掐表的结果差多少
  • 预案覆盖的场景里,有没有「模型正常但结果灾难」这一类(T35 开头那次事故)
  • 资金类步骤里,有没有把「广播成功」当成「已止损」——必须等回执确认
  • 它引用的接口、命令、配置项在你的系统里真实存在,没有编造

真实案例

停机开关从未被演练过事故复盘中的高频项

系统有暂停功能,代码也写对了。但真出事时,团队花了很久才搞清楚谁有权限、命令怎么敲、以及暂停之后已经在内存队列里的任务会不会继续执行。

一个没演练过的开关,和一个不存在的开关,你无法区分。

这和 T30 里「故意破坏一条不变量确认它能被抓到」是同一条原则:没有失败过一次的机制,不能假设它有效。

重启之后自己恢复了运行停机状态没有持久化

运维触发了停机,随后为了排查问题重启了服务。进程起来后,停机状态没有被持久化,Agent 自动恢复运行并继续执行了积压的提案。

这个问题的隐蔽之处在于:它只在「停机 + 重启」同时发生时才暴露,而这恰好是事故处理中最常见的动作组合。

收入自动进入了支出预算账本设计的疏漏

一笔误转进入 Agent 的收款地址,被账本识别为收入,自动抬高了当期可支配预算。Agent 随即按新预算加大了支出。

教训:收入不应自动成为支出许可。 两者之间要有一道显式的、人工或定期规则控制的闸门。

所有组件正常,结果仍然灾难T35 开头那次事故

数据对、模型对、代码对、没有攻击,但钱亏了。原因是整条链路上没有任何一段负责回答「如果真的执行会发生什么」。

它值得在最后一章再提一次,因为它是这一整个阶段最反直觉的一课:系统的安全性不等于各个组件正确性的总和。

改一个变量

如果把停机开关的触发权交给 Agent 自己判断

它就不再是停机开关了。

一个被注入或失控的模型,会把「不要停我」当成任务目标的一部分。触发路径必须是模型完全碰不到的通道——这不是对模型的不信任,是对不可逆操作的基本要求。

如果Agent 开始雇佣其他 Agent 完成子任务

你的最大损失公式失效了:子 Agent 的支出不在你的账本里,它们的授权也不在你的清单里。

要重新成立,必须把「子 Agent 的预算是父 Agent 预算的一部分」做成硬约束,而不是约定。同时责任矩阵要回答一个新问题:子 Agent 出事,谁负责。

如果它管理的是别人的钱

技术架构不变,但责任结构完全变了:需要授权边界、需要能向每个用户解释每一次操作、需要随时可赎回,很可能还需要合规资质。

审计日志从「排查工具」升级为「对外交代的依据」,它的保存期限和不可篡改性要求都会提高。

如果它连续三个月盈利,团队想把额度提高十倍

这是最危险的一刻,因为过去的表现会被当成安全性的证据。

但盈利证明的是「在过去三个月的市场条件下它能赚钱」,没有证明「它的约束在极端条件下有效」。这两件事之间没有因果关系。

提额的正确依据不是收益率,而是:这三个月里策略引擎拦了多少、拦的原因分布如何、有没有哪条规则从未触发、停机演练的响应时间是多少。看拦截记录,不看收益曲线。

带走的问题

16
Agent 有什么权限?

Agent 有什么权限?这一章给的最终答案是一条连续谱上的一个点,加一个能被算出来的最大损失数字。权限不是「能做什么」的列表,是「最多能亏多少」的数字。

17
AI 错误时谁承担损失?

AI 错误时谁承担损失?部署它的人,而且链上没有有限责任替你封顶——你必须自己用配置封。这就是为什么最大损失要能算出来,并写在 README 第一行。

18
哪些决策必须保留 Human-in-the-loop?

哪些决策必须保留 Human-in-the-loop?至少三类:额度的续与不续、自治度的升级、停机与恢复。这三样是人应该永远保留的权力,其余都可以在验证充分后交出去。

11
如果 Token 价格归零,产品还能运行吗?

如果 Token 价格归零,产品还能运行吗?把这一问搬到这里:如果模型明天变得不可用,这个系统还剩下什么?如果答案是「什么都不剩」,说明你造的是一个模型的外壳,不是一个系统。

本章自测

一句话带走

自治不等于无约束;一个自治系统的价值,取决于它的约束设计有多好。

做完这一章的动手环节了?勾上它查看全部进度

本页目录