news 2026/5/5 10:03:37

为OpenClaw AI对话添加可验证的数字指纹与溯源能力

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
为OpenClaw AI对话添加可验证的数字指纹与溯源能力

1. 项目概述:为AI对话加上“数字指纹”

如果你正在开发基于OpenClaw的AI应用,或者对AI对话的可信度、可审计性有要求,那么你很可能遇到过这样的困扰:用户和AI之间的对话,就像一阵风,吹过就散了。你如何向用户证明,他们收到的回复确实来自你的系统,且没有被篡改?你又如何向监管方或审计方证明,整个对话流程是合规且可追溯的?这不仅仅是技术问题,更是建立信任的基石。

fzurro/traceproof-openclaw这个npm包,就是为了解决这个核心痛点而生的。它不是一个花哨的UI组件,而是一个深植于运行时的“数字公证员”。简单来说,它为OpenClaw中的每一次对话会话(Session)创建一条不可篡改的“对话轨迹”(Trace),并为会话中的每一条流入和流出消息,都签发一个可独立验证的“数字证明”(Proof)。你可以把这些证明理解为每条消息独一无二的“数字指纹”和“出生证明”。

想象一下,你和AI的每一轮问答,都被自动、静默地记录在一条具有时间戳的链上。用户可以对任何一条AI回复进行独立验证,确认它确实由你的系统在特定时间生成,且内容完整无误。这对于客服系统、法律咨询助手、医疗信息问答等对准确性和问责制要求极高的场景,价值不言而喻。

这个包的核心价值在于验证,而非展示。它负责在后台默默完成所有繁重的密码学证明生成与验证工作,并将验证结果和访问链接准备好。至于如何在你的聊天界面上展示一个“已验证”徽章、一个可点击的验证链接,或者一个供用户扫描的二维码——这部分UI和交互逻辑,完全交由作为开发者的你来设计和实现。这种架构给予了开发者最大的灵活性,可以将可验证性无缝集成到任何风格的UI设计中。

2. 核心设计思路与架构解析

2.1 为什么是“溯源优先”的验证?

传统的日志系统也能记录对话,但其核心问题是中心化和可篡改。服务器管理员可以随意修改日志文件,其真实性无法向第三方证明。TraceProof引入的“溯源优先”(Provenance-first)理念,是将对话的“起源”和“流转”过程,通过密码学手段,转化为一系列可公开验证的证据。

它的工作流可以这样理解:

  1. 创建对话轨迹:当一个新的OpenClaw会话开始时,插件会向TraceProof服务注册一条新的“轨迹”。这条轨迹会获得一个全局唯一的publicReference(公开引用ID)和一个verifyUrl(验证页面URL)。这相当于为本次对话建立了一个专属的、不可伪造的“档案袋”。
  2. 签发流入消息证明:用户发送一条消息到OpenClaw。插件会捕获这条消息,计算其内容哈希(Digest),然后向TraceProof服务为这条“流入”消息签发一个类型为message:received的证明。这个证明会被锚定在之前创建的对话轨迹下。
  3. 签发流出消息证明:OpenClaw的AI助手生成回复后,插件同样会捕获回复内容,为其签发一个类型为message:sent的证明。
  4. 独立验证:任何人拿到verifyUrl,都可以在TraceProof的公开验证页面上,看到完整的、按时间排序的对话轨迹,并独立验证每一条消息证明的真实性和完整性。验证过程不依赖于开发者的服务器,而是基于公开的密码学协议。

这种设计确保了数据的“端到端可验证性”,即使提供服务的公司自身,也无法事后伪造或否认某次对话的发生与内容。

2.2 插件架构与OpenClaw的集成方式

traceproof-openclaw被设计为一个OpenClaw的“运行时插件”。这意味着它不是修改OpenClaw的核心代码,而是以插件的形式挂载到OpenClaw的生命周期中,主要拦截和处理消息流。

其核心架构包含以下层次:

  • 配置层:通过openclaw.json配置文件,注入OAuth认证信息、Agent身份等。这是插件运行的凭证。
  • 运行时层index.js作为主入口,在OpenClaw网关启动时被加载。它监听OpenClaw内部的消息总线事件。
  • 状态管理层:在OpenClaw的工作空间目录下(<workspace>/.traceproof-runtime/)维护一个sessions.json文件。这个文件以会话为键,持久化存储了该会话对应的TraceProof轨迹ID、消息证明列表等关键状态。这保证了即使OpenClaw进程重启,之前的验证状态也不会丢失,并能有效进行去重处理。
  • API通信层:负责与远端的TraceProof API服务进行HTTPS通信,包括OAuth2令牌获取、创建轨迹、签发和验证证明等。
  • 资源提供层:包内附带了AGENTS.mdSKILL.md等“基础文件”。这些文件包含了关于TraceProof产品的描述和指引。将它们复制到OpenClaw的工作空间后,AI助手就能“知道”TraceProof是什么,并能更准确地回答用户的相关问题。这是提升AI交互体验的补充步骤,与核心的验证功能相对独立。

注意:许多开发者容易混淆的是,安装插件(核心验证功能)和复制基础文件(增强AI认知)是两个独立的步骤。只完成第一步,验证功能已完全生效;完成第二步,则能让AI在对话中更好地解释它自己在做的事情。

2.3 关键特性与边界界定

这个版本被定位为“稳定的核心构建”,其功能边界非常清晰:

它负责完成的工作:

  • 每会话单轨迹:一个OpenClaw会话对应一条TraceProof对话轨迹,逻辑清晰。
  • 全消息证明:对所有流入(用户->AI)和流出(AI->用户)消息自动签发证明。
  • 安全认证:采用OAuth2客户端凭证模式,安全地访问TraceProof API。
  • 智能去重
    • 针对Telegram等渠道的重复出站事件,使用messageId进行去重。
    • 针对流入事件,采用“内容哈希+短时间窗口”的复合策略去重,避免因网络抖动等原因产生重复证明。
  • 状态持久化:将会话状态写入本地文件,保障了服务的连续性和可靠性。

它明确不负责的工作:

  • UI渲染:不在任何聊天渠道的UI上自动显示验证状态、徽章、链接或二维码图片。这是集成开发者的职责。
  • 渠道特定逻辑:不替代OpenClaw核心中针对不同聊天渠道(如Telegram、Discord)的原有UX逻辑。
  • AI知识灌输:除非手动复制附带的基础文件,否则AI助手不会自动了解TraceProof的细节。插件只做“事”,不教AI“说”。

这种“核心功能与表现层解耦”的设计非常明智。它使得TraceProof的验证能力可以作为一个底层服务,被集成到形态各异的OpenClaw应用前端中,无论是Web聊天窗口、移动App还是桌面客户端。

3. 详细安装与配置指南

3.1 环境准备与插件安装

假设你已经有一个正在运行或准备搭建的OpenClaw项目环境。安装过程分为两个主要部分,我们按步骤进行。

第一步:安装运行时插件首先,你需要获取traceproof-openclaw的包。通常你可以通过npm安装,或者从GitHub仓库克隆源码。假设你已将包目录放在本地路径/path/to/traceproof-openclaw

打开终端,执行以下命令:

# 进入你的OpenClaw项目目录(如果插件安装是全局的,则无需此步,具体视OpenClaw部署方式而定) cd /your/openclaw/project # 安装插件。这里使用本地路径安装,确保路径正确。 openclaw plugins install /path/to/traceproof-openclaw # 启用插件 openclaw plugins enable traceproof-runtime # 重启OpenClaw网关以使插件生效 openclaw gateway restart

这三条命令完成了核心验证引擎的部署。插件会开始监听消息,并在后台与TraceProof服务通信。

第二步:(推荐)安装工作空间基础文件为了让你的AI助手能聪明地回答关于TraceProof的问题,建议将包内附带的知识文件复制到OpenClaw的工作空间。

  • 对于macOS或Linux用户:

    # 假设当前终端就在traceproof-openclaw的包目录下 # 复制全局智能体指引文件 cp ./bootstrap/AGENTS.md ~/.openclaw/workspace/AGENTS.md # 创建技能目录并复制技能文件 mkdir -p ~/.openclaw/workspace/skills/traceproof cp ./skills/traceproof/SKILL.md ~/.openclaw/workspace/skills/traceproof/SKILL.md # 重启网关,加载新的基础文件 openclaw gateway restart
  • 对于Windows用户(使用PowerShell):

    # 复制全局智能体指引文件 Copy-Item ".\bootstrap\AGENTS.md" "$HOME\.openclaw\workspace\AGENTS.md" -Force # 创建技能目录并复制技能文件 New-Item -ItemType Directory -Path "$HOME\.openclaw\workspace\skills\traceproof" -Force Copy-Item ".\skills\traceproof\SKILL.md" "$HOME\.openclaw\workspace\skills\traceproof\SKILL.md" -Force # 重启网关,加载新的基础文件 openclaw gateway restart

完成这一步后,当你询问AI“什么是TraceProof?”时,它将能给出更准确、更详细的回答,因为它已经“学习”了相关的产品文档。

3.2 获取凭证与配置详解

插件需要合法的身份才能调用TraceProof的API。请按顺序完成以下操作:

  1. 注册开发者账号:访问 traceproof.org (请注意,此为示例域名,请以官方文档为准),注册一个免费的开发者账户。
  2. 创建OAuth客户端:在开发者控制台中,创建一个OAuth客户端。记录下生成的Client IDClient Secret。这组凭证代表你的应用。
  3. 创建智能体:创建一个TraceProof智能体。这代表了你部署的AI助手在TraceProof网络中的身份。记录下Agent ID
  4. 创建凭证:为该智能体创建一个凭证。记录下Credential Key。这个密钥用于在签发证明时进行签名授权。

现在,你需要将这些信息配置到OpenClaw中。找到OpenClaw的全局配置文件,通常位于~/.openclaw/openclaw.json(或你的项目配置路径)。在配置文件的plugins.entries部分添加以下配置块:

{ "plugins": { "entries": { "traceproof-runtime": { "enabled": true, "config": { // TraceProof API 的基础地址 "apiBaseUrl": "https://api.traceproof.org", // OAuth2 令牌获取地址 "oauthTokenUrl": "https://auth.traceproof.org/oauth/token", // 替换为你的 OAuth Client ID "oauthClientId": "YOUR_ACTUAL_CLIENT_ID_HERE", // 替换为你的 OAuth Client Secret "oauthClientSecret": "YOUR_ACTUAL_CLIENT_SECRET_HERE", // 申请的权限范围 "oauthScope": "trace:create trace:qr proof:issue proof:verify", // OAuth 资源标识 "oauthResource": "https://api.traceproof.org", // 客户端认证方式 "oauthClientAuthMethod": "client_secret_post", // 替换为你的 TraceProof Agent ID "agentId": "YOUR_ACTUAL_AGENT_ID_HERE", // 替换为你的 TraceProof Credential Key "credentialKey": "YOUR_ACTUAL_CREDENTIAL_KEY_HERE", // 渠道标识,通常为 chat "channel": "chat", // 来源系统标识 "sourceSystem": "openclaw", // 来源标签,可用于区分不同实例 "originLabel": "openclaw-chat-production-01", // QR码生成格式,可选 svg 或 png "qrFormat": "svg", // 是否在签发证明后立即进行验证(推荐为 true) "verifyProofs": true, // 调试模式,设为 true 可在日志中看到更多细节 "debug": false } } } } }

配置项关键解析:

  • oauthClientAuthMethod: “client_secret_post“:这意味着插件在申请令牌时,会将client_idclient_secret放在POST请求体中发送,这是一种常见的OAuth2客户端认证方式。
  • originLabel:这是一个非常有用的字段。如果你在多地区或多个环境部署了同一个OpenClaw应用,可以在这里设置不同的标签(如openclaw-chat-usopenclaw-chat-eu),以便在TraceProof后台区分不同数据源的流量。
  • qrFormat: “svg“:SVG格式的二维码是矢量图,在任何分辨率下都清晰,且文件体积小。如果你需要兼容性更广的位图,可以改为“png“
  • verifyProofs: true:强烈建议保持开启。它会在每次签发证明后,立即向TraceProof服务请求验证该证明,确保证明被成功记录且有效。这提供了一个即时的反馈机制。

保存配置文件后,必须重启OpenClaw网关以使新配置生效:

openclaw gateway restart

4. 运行测试与状态验证

配置完成后,让我们进行一次端到端的测试,确保一切运转正常。

4.1 执行首次对话测试

  1. 启动你的OpenClaw应用,并开启一个新的对话会话。
  2. 向AI助手发送一条消息,例如:“What is TraceProof?” 或 “介绍一下TraceProof。”。
  3. 等待AI助手生成并返回回复。

至此,后台的验证流程应该已经自动完成。现在,我们来检查插件生成的状态文件。

4.2 检查会话状态文件

插件将所有会话的验证状态保存在一个统一的JSON文件中。通过查看它,我们可以确认验证流程是否成功。

  • 在macOS/Linux上查看:
    cat ~/.openclaw/workspace/.traceproof-runtime/sessions.json
  • 在Windows PowerShell上查看:
    type $HOME\.openclaw\workspace\.traceproof-runtime\sessions.json

你应该会看到一个JSON对象,其键是OpenClaw的会话ID,值是该会话的TraceProof状态。一个成功的状态示例如下:

{ "session_abc123": { "traceCreated": true, "traceId": "trc_xyz789", "publicReference": "ref_public_abc456", "verifyUrl": "https://verify.traceproof.org/trace/ref_public_abc456", "proofs": [ { "direction": "IN", "messageId": "msg_001", "proofId": "prf_123", "verified": true, "timestamp": "2023-10-27T10:30:00Z" }, { "direction": "OUT", "messageId": "msg_002", "proofId": "prf_456", "verified": true, "timestamp": "2023-10-27T10:30:05Z" } ] } }

状态文件字段解读:

  • traceCreated: 布尔值,表示是否成功创建了TraceProof对话轨迹。
  • traceId: TraceProof服务内部使用的轨迹唯一ID。
  • publicReference:这是最重要的字段之一。它是该条对话轨迹的公开引用ID,可以安全地分享给他人用于验证。
  • verifyUrl: 直接指向TraceProof公开验证页面的URL。用户点击此链接即可查看完整的、可验证的对话记录。
  • proofs: 一个数组,包含了此会话中所有已签发证明的列表。每个证明都包含方向(IN/OUT)、对应的消息ID、证明ID、验证状态和时间戳。

如果你看到了类似的结构,并且traceCreated和各个证明的verified字段均为true,那么恭喜你,TraceProof运行时插件已经成功集成并运行!

4.3 进行独立公开验证

真正的魅力在于公开验证。复制状态文件中的verifyUrl,将其粘贴到浏览器的地址栏中打开。

你应该能看到一个清晰的验证页面,上面展示了:

  • 本次对话的公开引用ID。
  • 对话发生的概览时间。
  • 按顺序排列的所有消息(流入和流出),每条消息旁边都可能有一个“已验证”的标识。
  • 页面上可能提供“下载验证报告”或“分享此链接”的选项。

这个页面不依赖于你的服务器,任何人都可以访问并验证对话的真实性。这就是“端到端可验证性”的直观体现。

5. 高级集成与UI实现建议

插件完成了所有重活,但让用户感知到“可验证”的价值,则需要前端的配合。以下是几种常见的UI集成思路。

5.1 前端集成模式

  1. 徽章/标签模式:在每条AI回复的消息气泡旁边,添加一个小的“已验证”徽章或锁形图标。当用户鼠标悬停或点击时,可以显示简短的提示信息,如“此消息已通过TraceProof验证”,并附上验证链接。
  2. 侧栏/抽屉模式:在聊天界面侧边栏或底部固定区域,显示当前会话的验证状态。例如:“本次对话已全程记录并可验证”,并醒目地展示publicReference或一个可点击的“查看验证报告”按钮。
  3. 消息上下文菜单:为每条消息(尤其是AI回复)的右键菜单或长按菜单添加一个“验证此消息”选项,点击后跳转到该条消息在TraceProof验证页面中的具体位置。
  4. 会话总结模式:在对话结束时,或用户主动触发时,生成一个包含本次对话verifyUrl和二维码的总结卡片,方便用户保存和分享。

5.2 获取验证信息并渲染

前端如何获取到verifyUrlpublicReference?插件将这些信息写入了sessions.json文件,但前端通常无法直接访问服务器文件系统。因此,你需要建立一个简单的桥接机制:

  • 方案A:通过OpenClaw技能暴露:创建一个自定义的OpenClaw技能。当用户询问“本次对话的验证链接是什么?”时,该技能可以读取当前会话对应的sessions.json中的verifyUrl,并通过AI助手回复给用户。
  • 方案B:通过后端API暴露:在你的应用后端(承载OpenClaw服务的服务器)上,创建一个简单的API端点(如GET /api/session/:sessionId/verification)。这个端点负责读取sessions.json文件,并将当前会话的验证信息以JSON格式返回给前端。前端再根据此信息渲染UI。
  • 方案C:直接从前端可访问的存储读取:在更复杂的架构中,你可以将会话验证状态写入一个前端也能间接访问的数据库(如Redis)或通过消息队列推送。但这通常增加了架构复杂度。

示例:方案B的简单Node.js后端端点

// 假设使用Express框架 const fs = require('fs').promises; const path = require('path'); app.get('/api/session/:sessionId/verification', async (req, res) => { const { sessionId } = req.params; const statePath = path.join(process.env.OPENCLAW_WORKSPACE, '.traceproof-runtime', 'sessions.json'); try { const data = await fs.readFile(statePath, 'utf8'); const sessions = JSON.parse(data); const sessionInfo = sessions[sessionId]; if (sessionInfo && sessionInfo.verifyUrl) { res.json({ success: true, publicReference: sessionInfo.publicReference, verifyUrl: sessionInfo.verifyUrl, isVerified: sessionInfo.proofs?.every(p => p.verified) || false }); } else { res.json({ success: false, message: 'Verification info not found for this session.' }); } } catch (error) { console.error('Failed to read verification state:', error); res.status(500).json({ success: false, message: 'Internal server error.' }); } });

前端在聊天组件加载或收到新消息后,可以调用此API获取验证状态,并更新UI。

5.3 二维码生成与展示

配置中的qrFormat决定了二维码的格式。verifyUrl本身就是一个标准的URL。你可以直接使用前端的二维码生成库(如qrcode库)来动态生成二维码图片。

示例:在React组件中生成并展示二维码

import { useEffect, useState } from 'react'; import QRCode from 'qrcode'; function VerificationBadge({ verifyUrl }) { const [qrCodeDataUrl, setQrCodeDataUrl] = useState(''); useEffect(() => { if (verifyUrl) { QRCode.toDataURL(verifyUrl, { width: 128, margin: 1 }) .then(url => setQrCodeDataUrl(url)) .catch(err => console.error('QR generation failed:', err)); } }, [verifyUrl]); return ( <div className="verification-badge"> <span title="此消息已验证">✅</span> <div className="verification-dropdown"> <p>此对话已通过TraceProof验证。</p> <a href={verifyUrl} target="_blank" rel="noopener noreferrer">查看验证报告</a> {qrCodeDataUrl && ( <> <p>或扫描二维码验证:</p> <img src={qrCodeDataUrl} alt="对话验证二维码" /> </> )} </div> </div> ); }

6. 故障排查与常见问题

在实际集成过程中,你可能会遇到一些问题。以下是一些常见情况的排查思路。

6.1 插件未生效,状态文件未生成

  • 检查插件是否已正确启用:运行openclaw plugins list,确认traceproof-runtime出现在列表中且状态为enabled
  • 检查配置文件路径和语法:确认openclaw.json配置文件位于正确路径,并且JSON格式正确,没有语法错误。特别是plugins.entries.traceproof-runtime.config部分。
  • 检查网络连接:插件需要访问api.traceproof.orgauth.traceproof.org。确保你的服务器或运行环境可以访问这些外部地址。
  • 查看OpenClaw日志:启动OpenClaw时,添加--verbose标志,或在日志中搜索traceproof关键词,查看是否有加载错误或API调用失败的信息。

6.2 状态文件中verifiedfalse或证明缺失

  • 检查OAuth凭证:确保oauthClientId,oauthClientSecret,agentId,credentialKey全部正确无误,且没有过期。最快速的方法是去TraceProof开发者控制台重新核对一遍。
  • 检查权限范围:确认配置中的oauthScope包含了proof:issueproof:verify。缺少权限会导致证明签发或验证失败。
  • 检查verifyProofs配置:确保其值为true。如果为false,插件只会签发证明,不会立即验证,因此状态文件中的verified可能为nullfalse
  • 启用调试模式:将配置中的debug设为true,重启OpenClaw。这会在日志中输出更详细的HTTP请求和响应信息,有助于定位是哪个API调用出了问题。

6.3 AI助手无法回答TraceProof相关问题

  • 确认基础文件已复制:再次执行“安装工作空间基础文件”的步骤,并确保文件被复制到了正确的OpenClaw工作空间目录下(通常是~/.openclaw/workspace/)。
  • 重启OpenClaw网关:复制文件后,必须执行openclaw gateway restart才能使新的基础文件被加载。
  • 检查文件内容:确认复制的AGENTS.mdSKILL.md文件内容完整,不是空文件。

6.4 去重逻辑导致预期外的证明缺失

插件有去重逻辑以防止重复记录。如果你在测试中快速发送两条完全相同的消息,或者网络重试导致同一事件被处理多次,只有第一条会被签发证明。

  • 对于流入消息:去重基于“消息内容哈希”和“短时间窗口”。这是为了防止完全相同的用户输入在极短时间内被重复处理。
  • 对于流出消息:特别是来自Telegram等渠道的消息,去重基于messageId。确保你的OpenClaw渠道适配器能正确提供稳定且唯一的messageId

如果业务上确实需要为高度相似但不同的消息都保留证明,你可能需要根据业务逻辑调整消息内容(例如添加递增的时间戳或序列号),或者联系TraceProof团队咨询是否有更细粒度的去重配置。

6.5 性能与扩展性考量

  • 状态文件锁sessions.json文件被所有会话共享写入。在高并发场景下,需要关注文件读写锁可能带来的性能问题。目前的实现适用于中小规模并发。对于极高并发的生产环境,建议考虑将状态存储迁移到如Redis这样的高性能内存数据库中,但这需要修改插件源码。
  • 网络延迟:每次消息交互都需要调用外部TraceProof API,会引入额外的网络延迟(通常在小几百毫秒量级)。确保你的应用设计能容忍这种延迟,或者考虑采用异步、非阻塞的方式处理证明签发,不阻塞主聊天响应流。
  • API限流:关注TraceProof服务的API调用限流策略。如果您的应用消息量极大,可能需要与TraceProof团队沟通,调整配额或优化调用模式。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/5 10:01:30

初次使用Taotoken从注册到发出第一个API请求的全流程体验记录

初次使用Taotoken从注册到发出第一个API请求的全流程体验记录 1. 平台注册与API密钥获取 注册Taotoken账号的过程非常直观。访问官网后&#xff0c;通过邮箱验证即可完成基础账户创建。登录控制台后&#xff0c;左侧导航栏的"API密钥"模块提供了密钥管理功能。点击…

作者头像 李华
网站建设 2026/5/5 9:59:57

基于MCP协议构建AI工具:从自定义模板到天气查询服务器实战

1. 项目概述&#xff1a;从零理解一个自定义MCP模板最近在折腾AI应用开发&#xff0c;特别是想给Claude Desktop或者Cursor这类工具增加一些自定义能力&#xff0c;发现了一个绕不开的概念&#xff1a;MCP&#xff08;Model Context Protocol&#xff09;。简单来说&#xff0c…

作者头像 李华
网站建设 2026/5/5 9:58:56

终极Cookie导出指南:3步安全获取cookies.txt,数据永不外传

终极Cookie导出指南&#xff1a;3步安全获取cookies.txt&#xff0c;数据永不外传 【免费下载链接】Get-cookies.txt-LOCALLY Get cookies.txt, NEVER send information outside. 项目地址: https://gitcode.com/gh_mirrors/ge/Get-cookies.txt-LOCALLY 在当今数据安全意…

作者头像 李华
网站建设 2026/5/5 9:55:53

AI Agent技能开发实战:从SBTI趣味测试看纯Prompt工程与模块化设计

1. 项目概述&#xff1a;当AI Agent遇上沙雕人格测试 最近在捣鼓AI Agent生态&#xff0c;发现一个特别有意思的玩意儿——SBTI赛博人格测试Skill。这可不是什么严肃的心理学量表&#xff0c;而是把网上爆火的那个“沙雕人格测试”给搬到了AI Agent里。简单说&#xff0c;就是让…

作者头像 李华