系统架构

从用户点击到链上广播,AI Crypto Wallet 如何编排 UI、智能体、安全网关与链数据?本篇拆解四层架构、六大设计原则与关键数据流,帮助你理解一个「会交易」的钱包到底如何运作。

系统架构底层逻辑

01四层架构总览

系统整体划分为四层,自顶向下分别是用户交互层、智能体核心层、安全与风控层、数据与链上层。每一层职责单一、边界清晰,上层只能通过既定接口调用下层,从而保证安全与可维护性。

用户交互层(UI)HomeActivity / AIAgentActivity / ChatInterface
智能体核心层(Core)AgentRuntime(思考循环)· AgentToolRegistry(工具集)· AgentMemory(记忆)
安全与风控层(Safety)SafetyGate · RiskManager · TradeAuthManager
数据与链上层(Data)ChainAPI · MultiChainMarketData · NodeManager · WalletManager

用户交互层

负责界面渲染与用户输入采集。主页承载「资产 / 行情 / 交易 / 发现 / 我的」五大 Tab;AI 交易界面在「详情 / 聊天」两种模式间切换。本层不承载任何业务逻辑,只做展示与转发。

智能体核心层

AI 的「大脑」。AgentRuntime 运行思考循环,AgentToolRegistry 声明 12 个可调用工具,AgentMemory 保存 AI 的自述文件与记忆,AIAnalyzer 封装 LLM 调用。参考 Trae 的 Agent 架构实现。

安全与风控层

所有写入操作的「闸门」。SafetyGate 做交易前五步校验,RiskManager 做交易中风控,TradeAuthManager 控制 AI 交易启动条件。任何资金变更都必须穿越本层。

数据与链上层

链上与现实数据的「地基」。ChainAPI 封装多链 RPC,NodeManager 管理节点切换,MultiChainMarketData 计算技术指标,WalletManager 在内存中持有并管理私钥、完成本地签名。

02核心设计原则

架构的每一个取舍都源于以下六条原则:

原则含义落地体现
证据驱动AI 决策必须基于链上数据与技术指标,不凭感觉决策前调用 get_market_data / get_position 等只读工具
安全优先所有写入操作必须经过 SafetyGate写入工具在 AgentToolRegistry 中强制门控
用户可控自动交易由用户手动开启/关闭,AI 不能自行启动TradeAuthManager 启动条件 + UI 开关
白名单机制非白名单代币必须用户确认,60 秒超时自动拒绝SafetyGate 白名单检查
脱敏存储API Key 脱敏,钱包地址实时获取不静态存储apiKeyMasked 前4后4;address 实时从 WalletManager 取
可审计所有工具调用记录完整日志,可追溯Logger 记录 [时间][级别][模块] 全链路
底层逻辑

安全优先与用户可控是「自动交易」的前提。AI 只拥有「发起意图」的能力,真正的放行权始终握在安全网关与用户手中。脱敏与可审计则确保即使 AI 出错,也能被记录、被追责、被纠正。

03关键流程

AI 自动交易流程

定时触发每 N 分钟(checkIntervalMinutes)
TradeAuthManager.checkAsync()检查启动条件(主流币≥$200 或 R-MAB≥20000)
▼ 不满足 → 提示加仓
SafetyGate.isCircuitBroken()检查是否熔断
▼ 未熔断
AgentRuntime.run()LLM 分析 → 调工具 → 决策 BUY/SELL/HOLD
执行写入swap_tokens → SafetyGate 校验 → 链上广播
更新 UI 与状态信号 / 盈亏 / 交易笔数 / autoTradeEnabled

用户对话流程

用户输入消息appendChatMessage("user", msg)
显示"思考中…"避免空窗
后台调用 LLM注入 AgentMemory + 市场状态构建系统提示词
解析 @SET 指令有则 applySetCommand() 写入记忆文件
过滤指令,显示回复appendChatMessage("assistant", reply)

两条流程共享同一套「构建上下文 → 调用 LLM → 执行工具 → 返回」的循环骨架,区别仅在于触发来源(定时 vs 用户)与是否允许写入。

04异常处理机制

系统针对三类异常分别设计了处置策略:

网络异常

异常类型处理方式
ConnectException切换备用节点,重试当前批次
SocketTimeout超时缩短至 3s,快速失败快速回退
Cloudflare 403切换 User-Agent 与 HttpClient
GFW 阻断使用自建代理节点(如 BSC AVE 代理)

交易异常

异常类型处理方式
交易失败记录错误,通知 SafetyGate 更新错误率
滑点过大拒绝交易,提示调整滑点容忍度
Gas 不足提示用户充值原生币
合约调用失败返回错误信息,AI 可调整策略重试

应用异常

异常类型处理方式
onCreate 崩溃try-catch(Throwable) + Toast + 写 crash_log
onResume 冲突延迟 500ms 执行网络请求
空指针所有 View 操作前判空
View 初始化失败try-catch + Toast,不闪退
实战经验

主线程禁止做 OkHttp 网络请求(易被系统限制);批量查询 getAllTokenBalances 比单查更稳定;BscScan 的 Cloudflare Challenge 无法绕过,需走自建代理节点。这些踩坑经验均已沉淀进架构。