返回目录
开源项目AI 音频与语音类新手

Clicky:住在你 Mac 光标旁的 AI 老师(开源版)

Clicky 是作者 Farza 开发的开源 macOS 菜单栏应用,一个「住在光标旁边的 AI 伙伴」:它能看你的屏幕、和你语音对话,还能用蓝色光标指到屏幕上的具体元素。应用由 Swift 编写,通过 Cloudflare Worker 代理 Claude 对话、AssemblyAI 实时转写与 ElevenLabs 语音合成三类 API。项目以 MIT 许可证开源,适合想在此基础上二次开发或研究其内部实现的人。

0 次阅读2026/09/14 发布
Clicky:住在你 Mac 光标旁的 AI 老师(开源版) 来源图片

社区作者 · zZz

它解决什么问题

项目简介

Clicky 是作者 Farza 做的一个「住在你光标旁边的 AI 伙伴」——作者称其为 AI teacher:它能看见你的屏幕、和你说话,甚至能指向屏幕上的东西,就像身边真的坐着一位老师。

配图 1(Clicky — an ai buddy that lives on your mac)展示了它在 Mac 上的运行效果。

这个仓库是 Clicky 的开源版本,面向想要魔改它、做自己的功能、或者单纯想看它内部怎么跑的人。

许可与更新说明

  • 许可证:MIT(正文明确「It's an MIT license」)。
  • 作者声明:现有代码库仍然开源,随便折腾、做成自己的东西、甚至拿它开公司都行。但作者本人正在开发的新东西会保持私有;想要最新版 Clicky 需要走作者给出的下载入口。
  • 页面顶部标注更新时间:2026 年 4 月 27 日。

技术架构(正文「Architecture」小节)

  • 菜单栏应用(没有 Dock 图标),包含两个 NSPanel 窗口:一个用于控制面板下拉,一个用于全屏透明光标浮层。
  • 按住说话(push-to-talk)通过 websocket 把音频流送到 AssemblyAI,再把转写文本 + 屏幕截图通过流式 SSE 发给 Claude,最后用 ElevenLabs TTS 播放回复。
  • Claude 可以在回复中嵌入 [POINT:x,y:label:screenN] 标签,让光标飞到多显示器中指定的 UI 元素上。
  • 三个 API 全部通过一个 Cloudflare Worker 代理。

更完整的技术细节在仓库的 CLAUDE.md 中。

项目结构

  • leanring-buddy/ — Swift 源码目录(目录名的拼写错误是历史遗留,作者在正文中明确表示保留)
  • CompanionManager.swift — 中央状态机
  • CompanionPanelView.swift — 菜单栏面板 UI
  • ClaudeAPI.swift — Claude 流式客户端
  • ElevenLabsTTSClient.swift — 文本转语音播放
  • OverlayWindow.swift — 蓝色光标浮层
  • AssemblyAI*.swift — 实时转写
  • BuddyDictation*.swift — 按住说话流水线
  • worker/ — Cloudflare Worker 代理
  • src/index.ts — 三条路由:/chat/tts/transcribe-token
  • CLAUDE.md — 完整架构文档(给 agent 读取用)

贡献与反馈

欢迎 PR。如果使用 Claude Code,它已经了解代码库,只要告诉它你想做什么并指向 CLAUDE.md 即可。反馈可以通过 X(推特)私信作者 @farzatv。

— 本文由 AI 根据公开来源辅助整理,命令、版本与许可证请在使用前到原始页面复核。

安装 / 开始使用

方式一:用 Claude Code 快速跑起来(作者推荐的最快方式)

  1. 先让 Claude 运行起来(作者称这是最快的方式)。
  1. 运行后粘贴下面这段话:
代码
Hi Claude.

Clone https://github.com/farzaa/clicky.git into my current directory.

Then read the CLAUDE.md. I want to get Clicky running locally on my Mac.

Help me set up everything — the Cloudflare Worker with my own API keys, the proxy URLs, and getting it building in Xcode. Walk me through it.

它会自动克隆仓库、读取文档,并带你走完整个配置流程。跑起来之后可以继续和它对话:加功能、修 bug,随便折腾。

方式二:手动配置

前置条件

  • macOS 14.2+(ScreenCaptureKit 需要)
  • Xcode 15+
  • Node.js 18+(用于 Cloudflare Worker)
  • 一个 Cloudflare 账号(免费版即可)
  • 以下服务的 API Key:Anthropic、AssemblyAI、ElevenLabs

1. 配置 Cloudflare Worker

Worker 是一个很小的代理,用来保存你的 API Key。应用和 Worker 通信,Worker 再和各家 API 通信,这样密钥就不会被打进应用二进制里。

代码
cd worker
npm install

接着添加密钥,Wrangler 会提示你逐个粘贴:

代码
npx wrangler secret put ANTHROPIC_API_KEY
npx wrangler secret put ASSEMBLYAI_API_KEY
npx wrangler secret put ELEVENLABS_API_KEY

ElevenLabs 的 voice ID 需要打开 wrangler.toml 设置(它不是敏感信息):

代码
[ vars ]
ELEVENLABS_VOICE_ID = "your-voice-id-here"

然后部署:

代码
npx wrangler deploy

部署后会得到一个类似 https://your-worker-name.your-subdomain.workers.dev 的 URL,把它复制下来。

2. 本地运行 Worker(开发用)

如果不想部署就想测试 Worker 的改动:

代码
cd worker
npx wrangler dev

这会启动一个本地服务器(通常是 http://localhost:8787),行为与部署后的 Worker 完全一致。你需要在 worker/ 目录下创建 .dev.vars 文件并填入密钥:

代码
ANTHROPIC_API_KEY=sk-ant-...
ASSEMBLYAI_API_KEY=...
ELEVENLABS_API_KEY=...
ELEVENLABS_VOICE_ID=...

开发时把 Swift 代码中的代理 URL 改成 http://localhost:8787,而不是已部署的 Worker URL。用 grep 搜 clicky-proxy 可以找到所有需要改的地方。

3. 更新应用中的代理 URL

应用的 Worker URL 硬编码在几个地方。搜索 your-worker-name.your-subdomain.workers.dev 并替换成你自己的 Worker URL:

代码
grep -r "clicky-proxy" leanring-buddy/

会出现在:

  • CompanionManager.swift — Claude 对话 + ElevenLabs TTS
  • AssemblyAIStreamingTranscriptionProvider.swift — AssemblyAI token 端点

4. 在 Xcode 中打开并运行

代码
open leanring-buddy.xcodeproj

在 Xcode 中:

  • 选择 leanring-buddy scheme(对,拼写错误是故意的,说来话长)
  • 在 Signing & Capabilities 里设置你的签名团队
  • 按 Cmd + R 构建并运行

应用会出现在菜单栏(不是 Dock)。点击图标打开面板,按提示授予它要求的权限,就可以用了。

应用需要的权限

  • 麦克风 — 用于按住说话的语音采集
  • 辅助功能(Accessibility) — 用于全局键盘快捷键(Control + Option)
  • 屏幕录制 — 使用热键时截图用
  • 屏幕内容(Screen Content) — 用于 ScreenCaptureKit 访问

常见问题

  • 找不到应用窗口:它是菜单栏应用,没有 Dock 图标,去菜单栏点图标。
  • 快捷键不生效:检查是否授予了辅助功能权限。
  • 截图/看到屏幕内容失败:检查屏幕录制与屏幕内容权限。
  • 想改 Worker 地址却不知道改哪里:用 grep -r "clicky-proxy" leanring-buddy/ 定位。

来源教程配图

Clicky — an ai buddy that lives on your mac
配图 1 · Clicky — an ai buddy that lives on your mac查看原图

适用场景

在 macOS 上搭建一个能看屏幕
能语音对话的桌面 AI 助手
作为学习 macOS 原生开发(ScreenCaptureKit
NSPanel
菜单栏应用)的参考实现
研究如何用 Cloudflare Worker 代理多家 AI API
避免把密钥打进客户端二进制
在现有代码基础上二次开发
加入自己的功能或做成产品
研究 push-to-talk + 实时转写 + 流式 LLM + TTS 的完整语音代理链路
借助 Claude Code 快速理解和改造一个陌生的代码库