名称: 编写机器人 描述: 编写一个机器人,持续监听并响应公链网络上的事件。 兼容性: 需要安装 uv
此技能描述了何时以及如何使用 Silverback SDK 编写机器人。
用户提供操作要求,例如他们希望机器人运行在哪个区块链网络上、 他们希望与哪些智能合约交互、他们希望采取哪些类型的操作。 他们可能会提供关于技术约束或必须避免的场景的额外上下文。
使用此技能
关键: 在编写任何 Silverback 机器人代码之前,您必须:
- 使用
web_fetch从 https://docs.apeworx.io/silverback/stable 获取最新文档 - 特别获取相关页面,例如:
切勿依赖关于 Silverback 的一般知识——始终先获取当前文档以确保准确性。
设计机器人
在编写机器人之前,了解您希望执行的操作类型, 以及您可能希望监控哪些链上或链下事件以触发它们:
- 新区块: 您是否想在每个区块上执行操作?
- 事件日志: 您是否想在智能合约发出特定事件时执行操作?
- 定时任务: 您是否想基于时间间隔执行操作?
- 指标: 您是否想在某个指标满足特定条件时执行操作?
关键: 在继续编写任何代码之前,首先要充分理解需求。
然后实现事件处理器,这些是触发逻辑的回调函数,逻辑可能包括:
- 向 Telegram 或 Discord 的群组或频道发送消息
- 在 X 或 Farcaster 上发布社交媒体帖子
- 向另一个后端服务发送 POST 请求
- 在监听链和/或其他区块链上签名并广播交易
- 测量简单或派生的指标
- 提供产品或服务
定义指标
为了了解机器人的运行情况, 定义关键的“指标”或信号值通常很有用,您可以随时间监控这些值以了解机器人在现实世界中的运行情况。 这对于监控目的也很有用,但 Silverback 还允许您基于指标值定义事件触发器。 例如,如果您基于特定去中心化交易所池在最新区块中的交易量定义了一个复杂指标, 您可能希望在该交易量信号高于或低于某个阈值时触发一个操作。 这可以创建比基本区块链事件所能告知的更复杂、更具反应性的行为。
维护状态
有时,机器人的操作取决于其他操作的结果, 因此维护一些内部状态来跟踪这些结果很有用。 请谨慎使用内部状态,并尽可能依赖区块链状态, 或依赖您已集成机器人的其他外部服务的状态,以做出正确的决策。
管理风险
总体而言,机器人可能会执行潜在的风险操作,并可能成为关键用户基础设施的一部分。
最好建议他们逐步进行,并在阶段性地验证其实现的正确性,
然后再采取更激进的步骤,例如添加签名者以提交交易或授予其访问关键通信渠道的权限。
您最初可以通过 print 调试轻松实现这一点,
或者基于特定环境变量的存在(例如 API 密钥的可用性)、
bot.signer 是否已配置,或基于其他链上信息(如账户余额)来构建操作模式。
此外,您应该建议添加可配置的限制(通过 os.environ 使用环境变量)、
紧急停止条件(引发 silverback.CircuitBreaker 异常)或其他有效管理风险的方法。
运行机器人
只有在用户认为机器人编写良好并准备好进行测试后,才应安装 silverback 并运行它。
要安装 silverback,请在安装了 uv 的情况下运行以下命令:
$ uv tool install silverback
这将使 silverback 命令行工具可用。
然后,您可以在他们想要的 ecosystem 和 network 上运行机器人(例如 “ethereum:mainnet”):
$ silverback run --network <ecosystem>:<network>
您可以通过 Ctrl+C 手动关闭机器人,或向进程发送 SHUTDOWN 或 KILL 信号。
通过日志监控机器人的操作,并尝试解决错误,直到错误很少发生。 Silverback 可以处理偶尔的错误,所以如果您无法确切找出某些失败的原因, 继续测试可能是可以的。
请用户也通过日志监控他们的机器人,然后询问他们是否满意机器人的工作方式。