Clawdbot 的幕后机制 Peekaboo 技术剖析
Clawdbot 已经更名为 Moltbot
https://github.com/steipete/Peekaboo
在软件开发和高级用户的工作流中,桌面自动化一直是一个充满诱惑却又布满荆棘的领域。从苹果生态系统早期的 AppleScript 和 Automator,到后来涌现出的 Keyboard Maestro、Hammerspoon 等第三方神器,无数工具试图将我们从重复、繁琐的图形界面(GUI)操作中解放出来。这些工具在特定场景下无疑是强大的,但它们共同的"阿喀琉斯之踵"在于其实现的脆弱性。它们大多依赖于精确的 UI 脚本、固定的窗口布局,或是基于像素的图像识别。这意味着,一旦目标应用程序更新、UI 元素的位置或外观发生细微变化,精心编写的自动化脚本就可能瞬间失效,其维护成本之高,常常令人望而却步。
然而,大型语言模型(LLM)的浪潮,为这个古老的问题带来了全新的曙光。当一个 AI 不仅能理解自然语言,还能"看见"和"理解"屏幕上的视觉信息时,一种全新的自动化范式便应运而生。我们不再需要告诉计算机"在坐标 (123, 456) 点击",而是可以直接说"帮我点击那个蓝色的'提交'按钮"。
这正是著名开发者 Peter Steinberger (steipete) 的开源项目 Peekaboo [1] 所要探索的核心命题。Peekaboo 并非又一个传统的自动化脚本工具,它是一个设计精良、架构清晰的框架,旨在将 macOS 操作系统的原生底层能力与现代 AI 模型的强大认知能力进行深度融合。它让 AI 代理(Agent)能够捕获屏幕截图,通过视觉问答(VQA)理解界面内容,并最终执行用户的自然语言指令。
值得一提的是,Peekaboo 不仅是一个独立的自动化框架,它还是 Clawdbot(现已更名为 Moltbot)[6] 项目的核心能力来源之一。Clawdbot/Moltbot 是由同一位开发者创建的个人 AI 助手平台,它通过集成 Peekaboo 的 UI 自动化能力,使得 AI 助手能够在 macOS 上执行复杂的图形界面操作。在 Moltbot 的架构中,Peekaboo 以 PeekabooBridge 的形式被集成,作为一个"权限感知的 UI 自动化代理"(permission-aware UI automation broker),让 peekaboo CLI 能够复用 Moltbot.app 的 macOS 辅助功能(TCC)权限,从而实现无缝的桌面自动化体验 [7]。
一、宏观架构:一个精心设计的模块化交响乐
Peekaboo 的卓越之处,首先在于其清晰、合理且高度模块化的系统架构。它没有将所有功能杂糅成一个巨大的单体,而是像一首精密的交响乐,由多个职责明确的乐章(模块)和谐地协同工作。根据其官方架构文档 [2] 和对源代码的细致分析,我们可以将其核心组件与交互流程描绘如下:
graph TD
subgraph User Interface / Entrypoints
CLI[命令行工具 / CLI]
MCP[MCP 客户端 e.g., Claude]
Moltbot[Moltbot/Clawdbot]
end
subgraph Core Logic
AgentRuntime[PeekabooAgentRuntime
(任务协调与会话管理)]
Automation[PeekabooAutomation
(GUI 操作执行)]
Tachikoma[Tachikoma
(AI 模型接口)]
Visualizer[PeekabooVisualizer
(视觉反馈)]
end
subgraph macOS Native APIs
ScreenCaptureKit[ScreenCaptureKit API]
Accessibility[Accessibility API (AX)]
AppKit[AppKit / SwiftUI]
end
CLI --> AgentRuntime
MCP --> AgentRuntime
Moltbot --> AgentRuntime
AgentRuntime -- "Hey AI, what should I do?" --> Tachikoma
AgentRuntime -- "Ok, do this action." --> Automation
Automation -- "macOS, capture the screen." --> ScreenCaptureKit
Automation -- "macOS, find and click this button." --> Accessibility
Automation -- "I just clicked at (x,y)." --- Visualizer
Visualizer -- "Draw a circle here." --> AppKit
这个架构图生动地展示了系统的控制流。用户可以通过 CLI、MCP 客户端或 Moltbot 发出指令,PeekabooAgentRuntime 作为总指挥,一方面向 Tachikoma(AI 大脑)咨询决策,另一方面向 PeekabooAutomation(四肢)下达执行命令。PeekabooAutomation 则忠实地调用底层的 macOS API 来完成任务,并顺便"知会"PeekabooVisualizer 在屏幕上"表演"一下,给用户一个直观的反馈。接下来,我们详细解读每个核心模块的职责与设计精髓。
1.1 核心模块职责详解
Tachikoma:AI 的大脑与通用翻译器
Tachikoma 是 Peekaboo 的 AI 管理层,其命名致敬了经典动漫《攻壳机动队》中的智能战车。它的核心职责是充当一个通用翻译器,将上层应用的"AI需求"翻译成对具体 AI 模型的 API 调用。
- 多提供商管理
:这是 Tachikoma的核心价值。它通过统一的AIModelProvider协议,抽象了与不同 AI 服务商(如 OpenAI 的 GPT 系列、Anthropic 的 Claude、Google 的 Gemini 以及本地运行的 Ollama 模型)的交互细节。这意味着上层业务逻辑可以"一次编写,到处运行",无需关心底层使用的是哪个具体的 AI 模型。 - 依赖注入(DI)
:在当前架构中, Tachikoma彻底拥抱了依赖注入。系统的其他部分不再依赖于一个全局的Tachikoma.shared单例,而是依赖于一个抽象的AIModelProvider协议。这种转变带来了巨大的好处:在测试中,可以轻松注入一个"模拟"的AIModelProvider,返回预设的、确定的结果,从而实现对上层逻辑的独立、快速、可靠的测试。 - 配置与凭证管理
:它负责从环境变量(如 OPENAI_API_KEY)或本地配置文件(~/.tachikoma/credentials)中安全地加载和管理访问各个 AI 服务所需的 API 密钥等敏感信息。
PeekabooAutomation:GUI 操作的忠实执行者
这是 Peekaboo 的"手"和"脚",是所有与 macOS GUI 自动化直接相关的原生代码的集合地。为了保持职责单一,它被进一步细分为多个专门的服务(Service):
ScreenCaptureService:负责屏幕和窗口的截图。它优先使用苹果在现代 macOS 中引入的高性能 ScreenCaptureKit框架,并能优雅地回退到传统的CGWindowListAPI,以保证向后兼容性。ApplicationService/WindowManagementService:封装了对应用生命周期(启动、退出、切换)和窗口状态(移动、缩放、聚焦)的控制逻辑。 ClickService/TypeService/ScrollService:这些是与用户交互最直接的服务。它们利用 Accessibility API来程序化地定位 UI 元素,并模拟用户的点击、键盘输入、鼠标滚动等操作。MenuService:一个专门用于解析和操作 macOS 应用顶部菜单栏的服务,可以实现"点击'文件'菜单下的'打开'"这类操作。 SnapshotManager:这是性能优化的关键。它负责管理操作过程中的屏幕快照。快照不仅用于 AI 分析,更重要的是,它会缓存与快照关联的 UI 元素信息(通过 AccessibilityAPI 获取)。当需要连续对同一界面进行多次操作时,可以直接从缓存中读取元素信息,避免了重复的、极其耗时的Accessibility树遍历。
值得注意的是,所有这些服务的公开接口都严格遵守 Swift 的现代并发模型,被标记为 async,并且整个服务类被标记为 @MainActor。这从编译器层面保证了所有与 UI 相关的操作都在主线程上安全地执行,彻底杜绝了多线程访问 UI 可能导致的各种诡异问题。
PeekabooAgentRuntime:任务的智慧协调者
如果说 Tachikoma 是大脑,PeekabooAutomation 是四肢,那么 PeekabooAgentRuntime 就是连接两者的中枢神经系统。它不执行具体操作,但负责所有决策的流转。
- 任务解析与工具调用循环
:这是其核心工作流。它接收来自用户的自然语言指令(例如"打开备忘录,写下购物清单"),调用 PeekabooAutomation捕获当前屏幕,然后将指令和屏幕截图一起打包,发送给Tachikoma背后的 AI 模型进行分析。接着,它接收 AI 模型返回的结构化"工具调用"(Tool Call)序列(例如app.launch(name: "Notes")->type.input(text: "- 牛奶\n- 面包")),并将其分派给PeekabooAutomation中的相应服务去执行。 - MCP 服务器实现
:当以 MCP 模式运行时, AgentRuntime负责将其ToolRegistry中注册的所有工具(如see,click,type等),按照 MCP 协议 [3] 规定的格式,向 MCP 客户端进行"自我介绍"。这样,远端的 AI 代理(如 Claude)就能知道它"学会"了哪些新技能,以及如何使用它们。 - 交互式会话管理
:在 agent聊天模式下,它负责维护会话的生命周期。通过为每一轮对话附加相同的会话 ID,它使得 AI 能够"记住"上下文,从而完成需要多轮交互才能解决的复杂任务。
PeekabooVisualizer:让冰冷的操作充满"人情味"
这是一个可选但极大提升用户体验的模块。当 Peekaboo 在后台执行点击、输入等操作时,PeekabooVisualizer 会在屏幕的相应位置实时地显示视觉反馈(例如,一个短暂高亮的圆圈表示点击位置,一个光标图标表示正在输入)。
- 优雅的解耦设计
: PeekabooVisualizer的实现堪称解耦设计的典范。它与核心自动化逻辑完全分离,两者之间通过NSDistributedNotificationCenter进行通信。当PeekabooAutomation中的服务执行一个操作时,它只是简单地发布一个通知,其中包含了操作类型和位置等信息。如果用户同时运行了Peekaboo.app,该 App 内置的VisualizerEventReceiver会监听到这个通知,并触发相应的视觉效果。如果用户没有运行Peekaboo.app(例如在纯服务器环境),这个通知就会被系统静默地忽略,自动化流程继续无缝执行。这种设计既提供了丰富的视觉反馈,又保证了核心自动化逻辑的无头(headless)运行能力,两者互不干扰。
1.2 服务编排与依赖管理
Peekaboo 的架构之美,还在于其优雅的服务编排(Service Orchestration)和依赖管理机制。
PeekabooServices服务定位器:这可以看作是所有服务的"容器"或"注册表"。它在启动时负责实例化和管理 UIAutomationService、ScreenCaptureService等所有核心服务。上层应用(如 CLI)通过这个服务定位器来获取所需的服务实例,而不是直接创建它们。installAgentRuntimeDefaults()的关键作用:在实例化 PeekabooServices后,必须立即调用installAgentRuntimeDefaults()方法。这个方法负责将服务容器实例"注入"到MCPToolContext和ToolRegistry中。这一步至关重要,它确保了无论是通过 CLI 直接调用,还是通过 MCP 服务器间接调用,所有的工具执行最终都使用的是同一个服务实例集合,从而保证了状态和行为的一致性。Package.swift中的模块定义:通过分析项目的 Package.swift文件 [5],我们可以更深入地理解其模块化结构。文件清晰地定义了PeekabooProtocols,PeekabooFoundation,PeekabooAutomationKit,PeekabooCore等多个库(library)和可执行文件(executable)。每个库都有明确的依赖关系,例如PeekabooAutomationKit依赖于PeekabooFoundation和PeekabooProtocols。这种精细的模块划分是项目保持清晰结构、实现快速编译和有效代码复用的基础。
总而言之,Peekaboo 的宏观架构展现了现代软件工程的最佳实践。通过分层、模块化、面向协议编程和依赖注入,项目在灵活性、可测试性和可维护性之间取得了令人赞叹的平衡。
二、核心机制深度剖析
在理解了宏观架构之后,我们来深入挖掘几个 Peekaboo 最具特色的核心机制。正是这些机制的协同工作,才使得 Peekaboo 如此强大和灵活。
2.1 AI 集成:Tachikoma 的魔法与提示工程
Peekaboo 与 AI 的集成主要通过 Tachikoma 模块实现,其设计的巧妙之处不仅在于对多提供商的支持,还在于其背后隐含的提示工程(Prompt Engineering)。
数据流:从自然语言到 GUI 操作的完整旅程
一个典型的自然语言自动化任务的数据流,比我们想象的要复杂和精妙:
- 初始指令
:用户通过 CLI 输入一个任务,例如 peekaboo agent "在 Safari 中打开 GitHub 并搜索 Peekaboo 项目"。 - 第一次"看见"
: PeekabooAgentService首先调用see()工具,捕获当前整个屏幕的截图。 - 构建系统提示(System Prompt)
: AgentRuntime会精心构建一个复杂的系统提示。这个提示通常包含以下部分:
- 角色扮演
:指示 AI 模型扮演一个"macOS 助手"的角色。 - 可用工具列表
:详细描述所有可用的工具,包括工具名称、功能描述、参数列表和类型。例如: click(on: string)- 用于点击标签或ID为on的UI元素。 - 输出格式要求
:要求 AI 必须以特定的 JSON 格式返回它决定调用的工具。 - 约束和指南
:例如,"优先使用 Accessibility 属性来定位元素,而不是坐标","如果看不清,可以先滚动"等。
AgentRuntime 将用户的原始指令和第一张屏幕截图一起作为用户提示发送给 AI。app.launch(name: "Safari")。AgentRuntime 解析并执行这个调用。操作成功后,它会再次调用 see() 捕获 Safari 打开后的新界面截图。AgentRuntime 将上一步的执行结果(例如"成功启动 Safari")和新的截图,再次发送给 AI,并询问"接下来做什么?"type.input(text: "github.com", pressEnter: true)。这个过程清晰地展示了 Peekaboo 并非简单地将指令翻译成代码,而是一个真正的、基于视觉反馈的闭环控制系统。
2.2 MCP 服务器:连接远程 AI 大脑的标准化桥梁
MCP(Model Context Protocol)是一套旨在标准化大型语言模型与外部工具交互的协议。Peekaboo 实现了一个 MCP 服务器 [3],这使其能够无缝地"插入"到任何支持 MCP 的生态系统中,例如 Claude Desktop 或 Cursor。
基于 stdio 的极简通信
Peekaboo 的 MCP 服务器实现选择了一条非常务实且高效的路径:它直接使用标准输入/输出(stdio)作为通信管道,而非更复杂的 HTTP 或 WebSocket。
- 工作原理
:当 MCP 客户端(如 Claude Desktop)被配置为使用 Peekaboo 时,它会直接在后台启动一个 peekaboo mcp子进程。然后,客户端通过向该子进程的stdin写入 JSON-RPC 格式的请求(例如,请求工具列表或执行某个工具),并从其stdout实时读取 JSON-RPC 格式的响应。整个过程就像两个本地程序在"聊天"。 - 优点
:这种方式的优点是显而易见的:1) 简单:无需处理网络端口、防火墙、TLS 证书等一系列网络编程的复杂问题。2) 高效:进程间通信(IPC)的开销远低于网络通信,延迟更低。3) 易于集成:任何能够启动子进程并进行 stdio重定向的应用程序都可以与 Peekaboo 集成。
通过这种方式,Peekaboo 将其强大的本地自动化能力,变成了一个可以被任何远程 AI 代理轻松调用的"云服务",极大地扩展了其应用场景。
2.3 与 Clawdbot/Moltbot 的深度集成
Peekaboo 的实用价值在 Clawdbot(现已更名为 Moltbot)项目中得到了充分体现。Moltbot 是一个功能强大的个人 AI 助手平台,它能够连接到 WhatsApp、Telegram、Slack、Discord 等多种消息渠道,并通过插件系统扩展其能力 [6]。
PeekabooBridge:权限感知的自动化代理
在 Moltbot 的 macOS 应用中,Peekaboo 以 PeekabooBridge 的形式被集成 [7]。这个桥接层的设计非常巧妙:
- 权限复用
:macOS 的辅助功能(Accessibility)权限是系统级的,需要用户在"系统设置"中手动授予。 PeekabooBridge允许peekabooCLI 工具复用 Moltbot.app 已经获得的 TCC(Transparency, Consent, and Control)权限,避免了重复授权的麻烦。 - 发现机制
:Peekaboo 客户端在寻找可用的桥接主机时,会按照优先级顺序尝试:1) Peekaboo.app(完整体验)2) Claude.app(如果已安装)3) Moltbot.app(轻量级代理)。这种灵活的发现机制确保了用户总能找到一个可用的自动化宿主。 - 安全验证
:桥接层会验证调用者的代码签名,只允许来自特定 TeamID(Peekaboo 和 Moltbot 的开发者 ID)的客户端连接,防止恶意程序滥用自动化权限。
通过这种集成,Moltbot 的 AI 助手不仅能够回答问题、处理文本,还能够真正地"操作"用户的 Mac,例如打开应用、填写表单、截取屏幕等,实现了从"对话式 AI"到"行动式 AI"的跨越。
2.4 Agent 聊天循环:从"工具"到"助手"的蜕变
如果说单次任务执行模式下的 Peekaboo 是一个"工具",那么 v3 版本引入的 agent 聊天模式 [4] 则让它蜕变为一个可以与用户持续对话、协同完成任务的"智能助手"。
会话生命周期与上下文维持
- 上下文是关键
:聊天模式的核心是"上下文维持"。通过 --resume或--resume-session <id>,用户可以创建一个持久化的会话。在该会话的每一轮交互中,AgentRuntime都会将之前的对话历史和操作结果一并发送给 AI。这使得 AI 能够"记住"它做过什么,从而理解指代性的指令。例如,在用户说了"打开最新的财务报告"之后,下一句再说"把它发给我的老板",AI 能够理解"它"指代的就是刚刚打开的财务报告。 - 交互式控制
:聊天循环提供了丰富的交互控制,如 Ctrl+C取消当前任务但保持会话、Ctrl+D退出循环、/help查看命令等,提供了类似 Shell 的友好体验。用户甚至可以在一个任务执行中途按Esc来中断它,然后给出一个修正后的指令,整个过程非常流畅自然。
这种交互式模式,将自动化的粒度从"一次性任务"细化到了"单步操作",用户可以像指导一个实习生一样,一步步引导 AI 完成非常复杂的、甚至是探索性的任务。
2.5 底层技术:根植于 macOS 的原生力量
Peekaboo 的强大能力,最终都建立在对 macOS 原生技术栈的深入理解和精妙运用之上。
Accessibility API(AX):这是 Peekaboo 能够"理解"和"操作"UI 元素的基石。macOS 会为每个运行中的应用维护一个"辅助功能元素树"(Accessibility Tree),这个树状结构描述了窗口、按钮、文本框等所有 UI 元素的层级关系和属性(如标签、值、位置)。Peekaboo 通过这个 API 遍历该树,找到目标元素,并以编程方式触发其预设的动作(如"按下"一个按钮)。子模块 AXorcist的命名也颇具深意(AX 是 Accessibility 的缩写,而 Exorcist 意为"驱魔人"),暗示了它旨在驯服这个强大但有时行为古怪的 API。ScreenCaptureKit:这是苹果在较新 macOS 版本中引入的现代屏幕捕获框架。相比传统的 CoreGraphicsAPI,ScreenCaptureKit性能更高、资源占用更低,并且能以流的形式提供数据,非常适合需要连续捕获屏幕的场景。Peekaboo 优先使用它,保证了其在进行视觉分析时的性能表现。- 现代 Swift 并发
:项目的代码是现代 Swift 并发编程的绝佳范例。它大量使用了 Swift 5.5 之后引入的 async/await语法和Actor模型。特别是,所有与 UI 交互的代码都被严谨地标记为@MainActor,这利用了 Swift 编译器的静态检查能力,从根本上保证了所有 UI 操作都在主线程上执行,避免了多线程编程中常见的竞争条件和崩溃问题。这使得处理复杂的异步逻辑(如等待 AI 响应、执行动画)的代码,可以写得像同步代码一样简洁、清晰和安全。
通过将这些强大的原生技术与上层的 AI 逻辑无缝结合,Peekaboo 在性能、稳定性和功能丰富度上都达到了一个普通脚本工具难以企及的高度。
三、代码结构与项目组织:开源项目的典范
对于希望从 Peekaboo 学习或为其贡献代码的开发者来说,其清晰的代码结构和规范的项目组织同样值得称道。
3.1 目录结构概览
Peekaboo 的根目录结构清晰地反映了其模块化的设计思想:
Core/: 包含了项目的所有核心逻辑模块,如 PeekabooAutomationKit,PeekabooCore,PeekabooProtocols等。这是项目的心脏地带,大部分的魔法都发生在这里。Apps/: 包含了 Peekaboo.app这个 macOS 应用程序的源代码。这个 App 主要负责提供前文提到的视觉反馈(Visualizer)功能,以及一些用于配置的图形界面。Commander/, Tachikoma/,AXorcist/等:这些都是以 Git 子模块(submodule)形式引入的独立项目。这种做法的好处是,这些通用模块可以独立开发、测试和版本控制,然后在多个项目中复用。例如,Commander很可能是一个通用的 Swift 命令行参数解析库。docs/: 包含了非常详尽的文档,从架构设计到命令参考,再到特定功能的实现细节,是理解项目的宝贵资源,也是优秀开源项目的重要标志。 Examples/: 提供了一些使用 Peekaboo 的示例代码,是新用户上手的绝佳起点。 Package.swift: 这是整个 Swift 项目的"蓝图",定义了所有模块、它们的依赖关系以及最终生成的产品。它是理解项目构建逻辑的入口点。
3.2 Package.swift 解读:项目的骨架
Package.swift 文件是理解一个 Swift 项目结构的关键。在 Peekaboo 中,这个文件精确地描绘了项目的骨架:
products:定义了项目最终产出的"产品",包括可以被其他项目引用的库( .library)和可以直接运行的可执行文件(.executable)。例如,PeekabooCore被定义为一个库,而peekaboo(CLI 工具)被定义为一个可执行文件。dependencies:声明了项目依赖的外部 Swift 包。除了自己的子模块外,我们还可以看到如 swift-argument-parser(用于解析命令行参数)、swift-log(用于日志记录)等社区广泛使用的优秀开源库。这体现了项目拥抱开源生态的积极态度。targets:这是最核心的部分,定义了项目中的每一个模块(Target)。每个 Target 都有自己的源文件路径、对其他 Target 或外部依赖的依赖关系,以及特定的编译设置。例如, PeekabooAutomationKitTarget 的依赖列表中包含了PeekabooFoundation和AXorcist,这精确地反映了它们在架构中的层级关系。通过阅读targets数组,开发者可以快速建立起对项目模块划分和依赖拓扑的宏观理解。
四、结论:AI 时代下的桌面自动化新篇章
经过这次深入的技术探寻,我们可以清晰地看到,Peekaboo 不仅仅是一个功能强大的工具,更是一个精心设计的、充分体现了现代软件工程思想的杰出开源项目。它巧妙地将大型语言模型的认知能力与 macOS 操作系统的底层能力结合起来,为桌面自动化这个经典领域注入了全新的活力,开启了激动人心的新篇章。
Peekaboo 的核心技术亮点可以总结为:
- 清晰的模块化架构
:通过严格的分层和职责分离,构建了一个易于理解、维护和独立测试的系统。 - 灵活的 AI 集成
:采用依赖注入和提供商模式,无缝支持多种本地及云端 AI 模型,并保持了高度的可测试性与可扩展性。 - 原生的深度整合
:充分利用 Accessibility API、ScreenCaptureKit和现代 Swift 并发等原生技术,在保证强大功能的同时,实现了卓越的性能和稳定性。 - 优雅的协议与交互设计
:通过 stdio实现的极简 MCP 服务器和交互式的 Agent 聊天循环,提供了简洁而强大的集成与交互方式,让工具蜕变为助手。 - 生态系统的赋能
:作为 Clawdbot/Moltbot 等更大型 AI 助手平台的核心能力来源,Peekaboo 展示了其作为基础设施的价值。
对于普通用户来说,Peekaboo 意味着可以用最自然的方式——语言——来完成以往需要繁琐手动操作或编写复杂脚本才能完成的任务,这无疑将极大地提升生产力。对于开发者和 AI 研究者来说,Peekaboo 提供了一个无与伦比的实验平台,可以用来探索 AI 代理在真实、复杂的桌面环境中的能力边界,推动多模态 Agent 技术的发展。
当然,作为一个仍在快速迭代的项目(当前处于 beta 阶段),Peekaboo 还有广阔的发展空间。未来,我们或许可以看到它支持更多的平台(例如 Windows 或 Linux,尽管这需要重写大量平台相关的代码),集成更丰富的工具集(例如与浏览器进行更深度的交互),甚至拥有更高级的自主规划和学习能力。
无论如何,Peekaboo 已经为我们生动地展示了 AI 驱动的桌面自动化的美好前景。它是一个绝佳的范例,告诉我们如何通过扎实的工程实践和巧妙的架构设计,将前沿的 AI 技术真正落地,创造出实用、可靠且充满想象力的工具。对于每一个热爱技术的开发者来说,Peekaboo 的源代码,无疑是一本值得反复品读、启迪思想的现代软件工程教科书。
参考资料
[1] steipete/Peekaboo GitHub Repository
[2] Peekaboo Architecture Document
[3] Peekaboo MCP Document
[4] Peekaboo Agent Chat Document
[5] Peekaboo Package.swift
[6] Moltbot (formerly Clawdbot) GitHub Repository
[7] Moltbot Peekaboo Integration Documentation