基于Nostr与AI代理的远程编程助手:加密通信与微支付实践
1. 项目概述一个通过加密消息远程控制本地AI编程助手的桥梁如果你是一名开发者可能经常遇到这样的场景你正坐在咖啡馆里用手机刷着社交网络突然灵光一现想到了一个绝佳的代码优化方案或者发现了一个线上服务的紧急Bug。但你的主力开发环境——无论是集成了强大AI的Cursor还是灵活可编程的OpenCode——都在家里的台式机上。传统上你只能掏出笔记本电脑或者等到回家再处理。但现在有一个项目试图打破这个物理限制让你能通过手机上的加密私信直接指挥你家里的AI编程助手为你工作。这就是nostr-dm-agent一个连接去中心化社交协议Nostr与本地AI代理的桥梁。简单来说它就是一个运行在你本地开发机器上的“机器人”。你可以在世界上任何有网络的地方通过任何支持Nostr协议的客户端比如Damus、Coracle等向这个机器人发送加密的私信。机器人收到指令后会唤醒你本地的Cursor Agent或OpenCode在你的代码仓库中执行任务——无论是修复Bug、添加功能还是仅仅回答一个技术问题。整个过程基于Nostr的NIP-17标准进行端到端加密确保了通信的私密性。更酷的是它还集成了基于比特币闪电网络的Cashu小额支付系统你可以按需为AI计算能力付费实现真正的“用多少付多少”。这个项目本质上解决了一个“远程控制”与“资源访问”的痛点。它将AI编程助手从单一的桌面环境解放出来变成了一个可通过加密消息协议随时随地调用的云端服务虽然“云端”其实就是你自己的电脑。对于独立开发者、远程工作者或者任何希望将工作流变得更加移动化和灵活的人来说这提供了一个极具想象力的新范式。接下来我将为你深入拆解它的设计思路、实操细节并分享在部署和使用过程中可能遇到的“坑”以及我的应对经验。2. 核心架构与设计思路拆解要理解nostr-dm-agent如何工作我们需要将其拆解为几个核心层通信层、控制层、执行层和支付层。这种分层设计使得每个部分都可以独立演进和替换也是其灵活性的来源。2.1 通信层基于Nostr协议的加密消息总线项目的通信基石是Nostr一个简单、开放的去中心化社交网络协议。它不依赖于任何中心服务器而是通过中继器Relay来传递消息。nostr-dm-agent利用Nostr的NIP-17标准来实现加密的直接消息DM。为什么选择Nostr首先去中心化特性意味着没有单点故障也不受任何单一公司的控制这对于一个追求自主性和隐私的工具来说至关重要。其次Nostr协议极其简单核心就是一个基于JSON的事件Event模型易于实现和集成。最后它拥有一个活跃的生态系统已经有众多成熟的客户端和应用用户无需安装新的聊天软件用自己已有的Nostr客户端即可与机器人交互。工作流程身份与发现机器人生成一对Nostr密钥公钥npub...和私钥nsec...。它会在你指定的中继器上发布一个kind 10050事件这个事件相当于一个“服务发现”广告告诉全世界“发送给我的私信请投递到这些中继器地址。”你的手机客户端在向机器人发送消息前会先查询这个事件获知投递地址。消息投递你从手机客户端发送一条加密的DMkind 4事件。加密使用的是你和机器人公钥的Diffie-Hellman密钥协商确保只有你和机器人能解密内容。这条事件被发布到机器人广告的中继器上。消息接收运行在你电脑上的nostr-dm-agent持续监听订阅这些中继器。一旦发现发给自己的kind 4事件就用私钥解密获取你的指令。消息回复机器人处理完指令后同样构造一个加密的kind 4事件作为回复发布到中继器。你的手机客户端监听到这个事件并解密就看到了回复。这个设计巧妙地将一个点对点的远程控制问题转化为了一个在开放协议上的异步消息传递问题。中继器就像邮局负责存储和转发加密的“信件”而“信件”的内容只有收发双方能看懂。2.2 控制层会话、模式与命令解析收到明文指令后控制层开始工作。这是机器人的“大脑”负责管理对话上下文、理解你的意图并调度相应的执行单元。核心概念会话Session机器人引入了“会话”的概念。每个独立的对话线程或任务上下文对应一个会话。这非常重要因为AI代理如Cursor Agent通常需要维护连续的对话历史来理解上下文。当你开始一个新话题比如“我们来开发一个新功能A”使用!new-session命令创建一个新会话是很好的实践这样能避免与之前关于功能B的讨论产生混淆。所有消息默认关联到“当前会话”。你可以用!list-sessions查看所有会话并用!resume-session id在它们之间切换。安全栅栏执行模式Mode这是项目设计中一个非常出色的安全特性。不是所有指令都需要AI拥有完整的写权限。机器人设置了三种执行模式像汽车的档位一样控制着AI代理的“权力范围”ask询问模式只读。AI只能查看代码、文件进行分析和回答但不能做任何修改。适合提问、代码审查、获取解释。这是默认模式也是最安全的起点。plan计划模式只读策略。AI可以分析代码库制定修改计划列出它将要执行的步骤但不会实际执行。你可以先让它“说说打算怎么改”审核通过后再行动。agent代理模式完全访问。AI可以读取、写入文件运行命令在规则允许范围内甚至执行git commit和git push。这是功能最强大的模式也最需要谨慎使用。通过!mode命令或快捷命令!ask/!plan/!agent可以随时切换。我的经验是对于不熟悉的代码库或关键操作永远从ask或plan模式开始。先让AI给出分析和计划你确认无误后再切换到agent模式并下达执行指令。这相当于多了一层人工复核能有效避免AI“好心办坏事”。命令解析所有以!开头的消息都被识别为内部命令由机器人的handleBangCommand函数处理。这些命令用于管理机器人本身的状态如切换模式、会话、支付而普通的文本消息则会被转发给当前会话的AI后端进行处理。这种设计清晰地区分了“对机器人说”和“对AI代理说”。2.3 执行层对接本地AI后端控制层解析出需要AI执行的任务后就交给执行层。执行层负责与具体的AI代理后端交互。项目目前主要支持两个后端Cursor Agent和OpenCode。1. Cursor Agent后端工作原理机器人会在后台调用agent这个命令行工具由Cursor IDE安装。它通过agent create-chat创建新聊天或agent -p --resume id恢复现有会话来与Cursor的AI引擎交互。优势与Cursor深度集成能直接利用Cursor对项目的深度理解通过.cursorrules等和强大的代码补全、重构能力。配置要点确保agent命令在系统的PATH环境变量中。这意味着你需要正确安装并登录Cursor IDE。2. OpenCode后端工作原理OpenCode是一个开源的、可编程的AI编码助手框架。机器人支持两种方式调用它CLI模式 (opencode)直接执行opencode run ...命令。简单直接。SDK模式 (opencode-sdk)在机器人进程内启动一个OpenCode服务器。这减少了进程间通信的开销可能更高效但依赖更紧密。优势开源、可定制、模型提供商无关可对接OpenAI、Anthropic、本地模型等。如果你不想被某个特定IDE绑定OpenCode是更灵活的选择。配置要点同样需要安装OpenCode CLI并确保其在PATH中。还需要在opencode.json中配置你的AI提供商如OpenAI API Key。后端选择策略如果你已经是Cursor的重度用户并且喜欢其原生体验选择Cursor后端。如果你追求灵活性希望自由切换AI模型或者你的工作流不局限于某个IDE选择OpenCode后端。一个有趣的组合是使用Cursor后端 Routstr支付。这样你既享受了Cursor的强大功能又可以通过闪电网络小额支付来使用其AI能力无需订阅。2.4 支付层基于Cashu和Routstr的微支付集成这是项目最具前瞻性的部分之一。它让按需使用、按次付费的AI计算成为可能。技术栈解读Cashu一个基于盲签名技术的Ecash协议运行在比特币闪电网络之上。你可以把它理解为一套“数字现金”系统。你从“铸币厂”Mint兑换出代表一定聪sats比特币最小单位的Token这些Token可以像现金一样匿名传递和兑换。Routstr一个将Cashu支付与AI模型API兼容OpenAI API格式桥接起来的服务。你向Routstr预付Cashu Token然后就可以像调用OpenAI API一样调用其服务费用会从预付余额中扣除。在nostr-dm-agent中的工作流钱包准备运行bun run wallet:setup在本地生成一个Cashu钱包记住助记词。充值你不能直接在机器人里用闪电网络充值。需要借助外部钱包如cashu.me网站。在cashu.me上创建一个发票用你的闪电网络钱包支付支付成功后你会得到一个Cashu Token字符串。回到机器人执行!wallet receive token这个Token就被兑换到你的本地机器人钱包里了。消费有两种方式自动流程推荐直接在指令后加上!!金额sats例如“重构这个函数提高可读性 !!500sats”。机器人会自动从本地钱包转账到Routstr执行任务并把未用完的余额退回来。极其流畅。手动流程先!provider deposit 5000sats给Routstr会话充值然后正常使用。用完后可以!provider refund取回余额。模型选择使用!provider models查看Routstr支持的模型列表然后用!model set routstr/gpt-4o-mini这样的命令来选择。为什么这个设计很巧妙它实现了无托管、隐私友好的小额支付。你不需要在Routstr注册账户支付凭证Cashu Token不包含你的身份信息。同时由于支付是预授权且自动退款避免了传统API调用可能因网络问题导致的“扣了钱没办事”或“办了事没扣钱”的复杂对账问题。对于偶尔使用AI辅助编程不想支付月费的用户来说这简直是福音。3. 从零开始完整部署与配置实操指南理论讲完了我们来点实在的。假设你有一个名为my-awesome-project的项目现在想把它变成可以通过手机遥控的“智能项目”。3.1 环境准备与项目初始化第一步前置条件检查Node.js与Bun项目使用Bun运行时。请确保已安装Bun。你可以从 bun.sh 获取安装脚本。Bun的优势是启动速度快并且内置了包管理、测试运行器等功能与这个需要快速响应的机器人场景很匹配。Git确保系统已安装Git。AI后端二选一选项ACursor安装并登录 Cursor IDE。确保在终端输入agent --version或which agent能找到命令。选项BOpenCode按照 OpenCode官方文档 安装CLI。确保opencode --version可以运行。第二步克隆并集成机器人不要单独为机器人开一个目录而是把它作为你项目的一个“子模块”虽然这里不是git submodule但概念类似。# 1. 进入你的项目目录 cd ~/projects/my-awesome-project # 2. 克隆机器人仓库到一个特定的子目录这里命名为 dm-bot git clone https://github.com/dhalsim/nostr-dm-agent.git dm-bot # 3. 将 dm-bot 目录添加到项目的 .gitignore 中避免将机器人自身的代码提交到你的项目仓库 echo /dm-bot/ .gitignore注意将dm-bot目录添加到.gitignore是关键一步。因为机器人的配置如私钥、数据库是个人化的不应提交到你的项目仓库中。机器人代码本身可以通过git submodule或直接作为依赖管理但当前教程的简单做法就是忽略整个目录。第三步基础安装与Nostr身份配置# 1. 进入机器人目录 cd dm-bot # 2. 安装依赖Bun会读取 package.json 并安装 bun install # 3. 配置Nostr身份和通信中继 bun run nostr:setup这个脚本会引导你生成一对新的Nostr密钥对或使用已有的。请务必妥善保管输出的私钥nsec...或hex格式让你输入你主人的Nostr公钥npub...或hex格式。只有这个公钥发来的消息会被处理。让你输入一组中继器地址例如wss://relay.damus.io,wss://nostr.wine。机器人会向这些中继器发布kind 10050事件告知它们接收DM的位置。脚本会自动将必要的配置BOT_KEY,BOT_MASTER_PUBKEY,BOT_RELAYS写入.env文件。第四步交互式机器人设置bun run bot:setup这个交互式脚本会一步步问你几个核心问题Workspace工作区选择parent父目录即你的my-awesome-project还是bot机器人自身目录。通常选parent这样AI操作的就是你的主项目代码。Backend后端选择cursor或opencode。Provider提供商选择local使用本地已配置的API Key如Cursor授权或OpenCode的opencode.json或routstr使用Cashu支付。初次体验可选local。Default Mode默认模式建议从最安全的ask开始。Lint代码检查是否在agent模式操作后自动运行bun run lint如果项目有。这能自动检查AI修改的代码风格推荐开启。 脚本运行后它会根据你的选择创建必要的配置文件或符号链接。3.2 支付系统可选深度配置如果你在bot:setup中选择了routstr或者后续想启用支付功能需要配置Cashu钱包。第一步初始化钱包bun run wallet:setup这个命令会生成一个12个单词的助记词Mnemonic并自动存入.env文件中的CASHU_MNEMONIC变量。这个助记词是你的钱包唯一备份请像保存比特币私钥一样离线保存好它丢失它意味着钱包里的资金无法找回。第二步添加铸币厂MintCashu需要从一个可信的“铸币厂”兑换Token。机器人需要知道铸币厂的地址。# 查看当前设置的铸币厂 !wallet mint # 设置一个铸币厂例如使用 minibits.cash !wallet mint https://mint.minibits.cash/Bitcoin其他可用的铸币厂包括https://mint.cubabitcoin.orghttps://ecashmint.otrta.me等。选择延迟低、信誉好的。第三步从外部钱包充值这是最关键也最容易卡住的一步。机器人本身不能创建闪电发票所以需要借助第三方Cashu钱包作为“入口”。打开浏览器访问 cashu.me 。点击“Receive”选项卡。输入你想充值的金额例如1000 sats选择你刚才在机器人里设置的同一个铸币厂例如Minibits。点击“Create Invoice”你会得到一个闪电网络发票Lightning Invoice。用你拥有的任何闪电网络钱包如Phoenix, Breez, 或交易所的提现功能支付这个发票。支付成功后cashu.me页面会显示一个Cashu Token一串以cashuA...开头的长字符串。复制它。回到机器人的聊天界面或终端输入!wallet receive cashuAeyJwcm9...你复制的完整Token如果成功你会看到类似“Received 1000 sats”的确认信息。使用!wallet balance查看余额。第四步使用付费AI现在你的钱包里有钱了。切换到Routstr提供商并开始使用# 1. 切换到Routstr提供商 !provider set routstr # 2. 可选查看可用的模型 !provider models # 3. 可选设置一个喜欢的模型例如GPT-4o Mini !model set routstr/gpt-4o-mini # 4. 开始使用最简单的方式自动支付 # 发送一条指令并附加预算。例如用最多500聪让AI解释一段代码。 请解释一下src/utils/auth.ts里的verifyToken函数是如何工作的 !!500sats机器人会先检查Routstr会话余额不足则自动从本地钱包转入500聪执行任务最后将未消耗的余额转回本地钱包。整个过程无需手动管理会话资金。3.3 运行与基础交互启动机器人 在dm-bot目录下执行bun run start如果一切正常你会看到机器人日志并且它会向你BOT_MASTER_PUBKEY的Nostr客户端发送一条加密的“Agent is ready.”消息。两种交互方式远程控制核心场景打开你手机上的Nostr客户端如Damus找到机器人的公钥npub...在.env的BOT_PUBKEY或nostr:setup的输出中开始发送加密私信。本地终端在运行bun run start的终端里你会看到一个提示符。你可以直接在这里输入命令或给AI的指令按回车发送。回复会直接打印在终端。这对于快速测试和调试非常方便。所有!命令在本地终端同样有效。进行第一次对话 假设你的项目是一个Node.js后端服务。在手机Damus上给机器人发消息!mode plan先切换到计划模式机器人回复确认模式已切换。你发送帮我检查一下项目根目录下的package.json看看有哪些依赖可以升级到最新稳定版机器人会指示本地的AI后端Cursor/OpenCode去分析你的package.json并生成一个升级计划回复给你。由于是plan模式它不会实际执行npm update。如果你觉得计划可行回复!mode agent然后执行这个升级计划并运行测试确保没有破坏性变更。此时AI会在你的本地项目里运行npm update和相关测试并将结果报告给你。4. 高级用法、插件系统与开发集成当基础功能跑通后你可以探索更强大的特性来定制你的工作流。4.1 插件系统扩展机器人能力nostr-dm-agent的插件系统允许社区扩展其功能。插件可以添加新的!命令或者为OpenCode后端提供新的AI工具Tools。安装插件bun run plugin:install这个命令会启动一个交互式流程列出可发现的插件目前主要来自作者dhalsim的仓库。你可以浏览、选择并为你选择的插件设置一个命令别名alias。例如安装dm-bot-todo-plugin时你可以设置别名为todo。安装后你就可以使用像!todo add 修复登录接口的边界情况或!todo list这样的命令来管理任务了。已存在的实用插件dm-bot-todo-plugin任务管理。核心亮点是!todo ai命令你可以用自然语言说“记得下周一把用户反馈的导出速度慢的问题优化一下”AI会自动解析并创建一条结构化的待办事项。dm-bot-job-plugin定时任务管理。可以创建cron作业或一次性任务。例如让AI每天凌晨3点自动运行数据库备份脚本并通过Nostr DM向你报告结果。dm-bot-bm-plugin书签管理。将有用的链接、文档与AI结合例如!bm ai 保存一篇关于Rust性能优化的文章。dm-bot-file-plugin文件管理。实现简单的文件上传/下载到机器人工作区。插件的工作原理插件被克隆到plugins/目录下。机器人在启动时会动态加载这些插件注册它们的命令到全局命令处理器并将插件提供的AI工具如果有的注入到OpenCode的后端配置中。这使得生态可以独立于核心机器人快速发展。4.2 开发模式与代码热重载当你需要修改机器人本身的代码时比如添加一个自定义命令你会希望修改能立即生效而不必手动重启。项目提供了watch模式bun run watch与常见的文件监听自动重启不同这个watch模式只监听一个特定的文件restart.requested。当这个文件被创建或修改时间戳时进程才会重启。这样设计的好处避免了在AI代理正在编辑项目代码时机器人自身的源代码变动导致意外重启。你可以安全地让AI在agent模式下修改dm-bot目录里的代码。当AI完成修改后它可以在你的授权下执行touch restart.requested命令。watch进程检测到这一变化优雅地重启机器人加载新的代码。开发工作流在dm-bot目录下运行bun run watch。在另一个终端或通过Nostr DM让AI代理修改机器人的源代码例如在src/commands.ts中添加一个新的!weather命令。AI完成修改并提交后你可以命令它现在请创建 restart.requested 文件以使更改生效。AI执行touch restart.requested。watch进程重启你的新命令!weather就可用了。4.3 与AI代理的安全协作规则让AI拥有agent模式的写权限和shell访问权是强大的但也存在风险。项目通过.cursor/rules/目录下的规则文件来引导和约束AI的行为。核心安全理念白名单机制。只允许AI运行预定义好的、受信任的命令。示例规则 (dm-bot/.cursor/rules/agent-cli-permission.mdc)## 白名单无需额外授权 你可以不经询问直接运行以下命令。其他所有命令都需要我的明确许可。 ### 项目脚本受项目配置信任 - 当 script 存在于最近一层 package.json 的 scripts 字段中时可以运行 bun run script。 - 当由package.json脚本支持或符合bun默认测试行为时可以运行 bun test。 - 可以运行 bun run仅列出脚本只读。 在运行一个package.json脚本前AI代理应当 1. 读取 package.json。 2. 验证脚本名称确实存在。 3. 仅运行该脚本命令除非用户明确批准否则不能使用额外的shell链式操作如 , ;, 或管道符。 ### 常见的只读命令 - bun --version - ls, pwd, cat 用于读取文件 - git status, git diff, git log 用于查看版本状态如何利用这个规则将你项目中所有安全的、可重复运行的命令都定义在package.json的scripts里。例如{ scripts: { dev: bun run --watch src/index.ts, build: bun build ./src/index.ts --outdir ./dist, lint: bunx biome check --apply ., test: bun test, docker:up: docker-compose up -d, db:migrate: bun run db/scripts/migrate.ts } }这样AI就可以在需要时直接运行bun run lint来格式化代码或运行bun run docker:up来启动开发环境而无需每次都向你申请权限。这既保证了安全又提升了自动化效率。5. 实战问题排查与经验心得在实际部署和使用中你几乎一定会遇到一些问题。以下是我踩过的一些坑和解决方案。5.1 通信失败收不到消息或机器人不回复这是最常见的问题根源多在Nostr中继器的配置和连接上。症状1机器人启动了但手机客户端收不到“Agent is ready”消息。排查思路这条消息是机器人主动发给你的。它需要知道你的客户端在监听哪些中继器。解决方案确保你的Nostr客户端如Damus已连接到你在bot:setup或.env的BOT_RELAYS中设置的中继器。机器人会查询BOT_MASTER_PUBKEY对应的kind 10050事件你的个人中继列表并向那里发布消息。如果你的客户端没连那些中继自然收不到。在机器人启动时设置环境变量DEBUG1即DEBUG1 bun run start。观察日志看它是否成功发布了“ready”消息以及发布到了哪些中继URL。与你客户端连接的中继器对比。有些中继器如wss://auth.nostr1.com需要NIP-42认证。机器人日志中如果看到AUTH challenge并成功AUTH说明机器人端没问题。问题可能出在你的手机客户端没有对该中继器完成认证。尝试在手机客户端手动连接该中继触发并完成认证流程。症状2你能收到“Agent is ready”但发送指令后机器人毫无反应。排查思路机器人没收到你的消息或者收到了但没解密/没处理。解决方案确认发送目标确保你在手机客户端里是向正确的机器人公钥npub...发送加密私信而不是公开帖子或未加密的消息。检查中继器一致性这是最可能的原因。机器人通过kind 10050事件告诉世界“请把给我的DM发到这些中继A, B, C”。你的手机客户端发送时应该往这些中继发。但有些客户端可能会往它自己配置的默认中继或者你个人资料kind 0里列的中继发。确保两者一致。一个粗暴的测试方法是在.env的BOT_RELAYS和你的客户端里都只使用一个公认可靠的公共中继如wss://relay.damus.io。启用调试DEBUG1 bun run start。观察当你发送消息时机器人日志是否有Received event之类的记录。如果没有说明消息没送达机器人监听的中继。如果有接收但报错可能是解密失败密钥不匹配。5.2 AI后端执行失败症状机器人回复显示它尝试调用后端如cursor或opencode但失败了提示“Command failed”或“Not found”。排查PATH问题在运行机器人的同一终端里手动执行agent --version或opencode --version看命令是否存在。如果不存在说明这些命令行工具没有正确安装或不在当前shell的PATH中。你可能需要全路径指定或者修改机器人的启动环境例如通过.env设置PATH。权限问题对于Cursor确保你已经登录agent命令需要有效的会话。对于OpenCode确保opencode.json配置正确且API Key有余额或权限。后端特定错误仔细阅读错误信息。Cursor可能报网络错误OpenCode可能报模型配置错误。根据错误信息去搜索相应后端的文档。5.3 支付流程卡住症状使用!!sats自动支付时提示“Insufficient balance”或“No Routstr session”。逐步排查!wallet balance检查本地Cashu钱包余额是否为0。如果是回到“外部钱包充值”步骤。!provider status检查当前提供商是否是routstr以及Routstr会话余额。如果会话余额不足自动流程会尝试从本地钱包转入。如果转入失败可能是网络问题或铸币厂不可用。!wallet mint确认设置的铸币厂URL是有效的并且是Routstr接受的官方推荐的几个通常没问题。可以尝试!wallet mint https://mint.minibits.cash/Bitcoin切换到一个更稳定的。网络超时Cashu的兑换和Routstr的API调用可能受网络影响。如果多次失败可以尝试先手动预存一笔小额资金!provider deposit 5000sats成功后再使用。5.4 性能与稳定性心得中继器选择公共中继器可能拥堵或不稳定。如果对延迟和可靠性要求高可以考虑自建一个私有的Nostr中继器例如使用strfry并将机器人和你的客户端都指向它。这能极大提升消息传递的速度和可靠性。会话管理长期不用的会话会占用资源。定期使用!list-sessions查看对于已完成任务的会话可以暂时不管但如果你发现AI的上下文开始混乱记错了之前的话题创建一个!new-session来开启一个干净的上下文往往更高效。指令清晰度给AI的指令要尽可能清晰、具体。与其说“优化代码”不如说“检查src/components/Button.tsx文件中的handleClick函数是否存在重复渲染的风险并提供具体的优化建议”。清晰的指令能减少来回次数节省时间和费用如果用了Routstr。agent模式下的安全网即使在agent模式下也强烈建议你的项目使用Git。在让AI执行重大修改前确保工作区是干净的git status。这样如果AI的修改不符合预期你可以轻松地git checkout -- .来回滚所有更改。更好的做法是让AI在独立的分支上操作。这个项目将前沿的去中心化通信、AI代理和比特币微支付巧妙地结合在一起创造了一种全新的、个人化的远程开发体验。它可能不是适合所有人的生产级工具但对于追求技术前沿、注重隐私和自主权的开发者来说它是一个极具启发性和可玩性的“瑞士军刀”。从简单的远程代码问答到复杂的自动化任务调度它的可能性只受限于你的想象力和你为AI编写的规则。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2581043.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!