docs: make Chinese README the default
This commit is contained in:
@@ -1,29 +1,35 @@
|
||||
Update: April 27, 2026.
|
||||
<!-- WEHUB_ZH_README -->
|
||||
> [!NOTE]
|
||||
> 本文档由 WeHub 基于上游 README 翻译整理,属于社区翻译,非官方中文文档。
|
||||
> [English](./README.en.md) · [原始项目](https://github.com/farzaa/clicky) · [上游 README](https://github.com/farzaa/clicky/blob/HEAD/README.md)
|
||||
> 原作者、版权与许可证归属以原始项目及本仓库 LICENSE 文件为准。
|
||||
|
||||
Hi there! I'm Farza, the guy that made Clicky.
|
||||
更新:2026 年 4 月 27 日。
|
||||
|
||||
The existing codebase remains open source. Tinker with it, make it yours, start a company out of it, do whatever you want I don't mind. But, for all the new stuff I'm hacking on, gonna keep it private. To get the latest Clicky, you can go [here](https://www.heyclicky.com/).
|
||||
你好!我是 Farza,做 Clicky 的那个人。
|
||||
|
||||
I also tweeted about this [here](https://x.com/FarzaTV/status/2043402737828962489).
|
||||
现有代码库仍然是开源的。你可以随便折腾、改造成自己的、用它创业,想做什么都行,我不介意。但我正在开发的新内容会保持私有。要获取最新版 Clicky,可以前往[这里](https://www.heyclicky.com/).
|
||||
|
||||
Go crazy with this repo!! It's an MIT license.
|
||||
关于这件事,我也发过推文,见[这里](https://x.com/FarzaTV/status/2043402737828962489).
|
||||
|
||||
# Hi, this is Clicky.
|
||||
It's an AI teacher that lives as a buddy next to your cursor. It can see your screen, talk to you, and even point at stuff. Kinda like having a real teacher next to you.
|
||||
尽情折腾这个仓库吧!!它是 MIT 许可证。
|
||||
|
||||
Download it [here](https://www.clicky.so/) for free.
|
||||
# 你好,这是 Clicky。
|
||||
它是一个 AI 老师,会作为伙伴住在你光标旁边。它能看到你的屏幕、和你对话,甚至能指向东西。有点像身边有一位真正的老师在教你。
|
||||
|
||||
Here's the [original tweet](https://x.com/FarzaTV/status/2041314633978659092) that kinda blew up for a demo for more context.
|
||||
可以免费在[这里](https://www.clicky.so/)下载。
|
||||
|
||||

|
||||
这是当时火爆演示的[原始推文](https://x.com/FarzaTV/status/2041314633978659092),可以了解更多背景。
|
||||
|
||||
This is the open-source version of Clicky for those that want to hack on it, build their own features, or just see how it works under the hood.
|
||||

|
||||
|
||||
## Get started with Claude Code
|
||||
这是 Clicky 的开源版本,适合想动手改、自己加功能,或只是想了解其内部工作原理的人。
|
||||
|
||||
The fastest way to get this running is with [Claude Code](https://docs.anthropic.com/en/docs/claude-code).
|
||||
## 使用 Claude Code 快速开始
|
||||
|
||||
Once you get Claude running, paste this:
|
||||
最快跑起来的方式是用 [Claude Code](https://docs.anthropic.com/en/docs/claude-code).
|
||||
|
||||
等 Claude 跑起来后,粘贴这个:
|
||||
|
||||
```
|
||||
Hi Claude.
|
||||
@@ -35,30 +41,30 @@ 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.
|
||||
```
|
||||
|
||||
That's it. It'll clone the repo, read the docs, and walk you through the whole setup. Once you're running you can just keep talking to it — build features, fix bugs, whatever. Go crazy.
|
||||
就这样。它会克隆仓库、阅读文档,并带你完成整个配置流程。跑起来之后你可以继续和它对话——开发功能、修 bug,随便来。尽情折腾吧。
|
||||
|
||||
## Manual setup
|
||||
## 手动配置
|
||||
|
||||
If you want to do it yourself, here's the deal.
|
||||
如果你想自己动手,方法如下。
|
||||
|
||||
### Prerequisites
|
||||
### 前置要求
|
||||
|
||||
- macOS 14.2+ (for ScreenCaptureKit)
|
||||
- macOS 14.2+(用于 ScreenCaptureKit)
|
||||
- Xcode 15+
|
||||
- Node.js 18+ (for the Cloudflare Worker)
|
||||
- A [Cloudflare](https://cloudflare.com) account (free tier works)
|
||||
- API keys for: [Anthropic](https://console.anthropic.com), [AssemblyAI](https://www.assemblyai.com), [ElevenLabs](https://elevenlabs.io)
|
||||
- Node.js 18+(用于 Cloudflare Worker)
|
||||
- 一个 [Cloudflare](https://cloudflare.com) 账号(免费套餐即可)
|
||||
- 以下服务的 API 密钥:[Anthropic](https://console.anthropic.com),、[AssemblyAI](https://www.assemblyai.com),、[ElevenLabs](https://elevenlabs.io)
|
||||
|
||||
### 1. Set up the Cloudflare Worker
|
||||
### 1. 配置 Cloudflare Worker
|
||||
|
||||
The Worker is a tiny proxy that holds your API keys. The app talks to the Worker, the Worker talks to the APIs. This way your keys never ship in the app binary.
|
||||
Worker 是一个小型代理,用来存放你的 API 密钥。应用与 Worker 通信,Worker 再与各 API 通信。这样你的密钥就不会被打包进应用二进制文件里。
|
||||
|
||||
```bash
|
||||
cd worker
|
||||
npm install
|
||||
```
|
||||
|
||||
Now add your secrets. Wrangler will prompt you to paste each one:
|
||||
现在添加你的密钥。Wrangler 会提示你逐个粘贴:
|
||||
|
||||
```bash
|
||||
npx wrangler secret put ANTHROPIC_API_KEY
|
||||
@@ -66,31 +72,31 @@ npx wrangler secret put ASSEMBLYAI_API_KEY
|
||||
npx wrangler secret put ELEVENLABS_API_KEY
|
||||
```
|
||||
|
||||
For the ElevenLabs voice ID, open `wrangler.toml` and set it there (it's not sensitive):
|
||||
对于 ElevenLabs 的 voice ID,打开 `wrangler.toml` 并在那里设置(这不是敏感信息):
|
||||
|
||||
```toml
|
||||
[vars]
|
||||
ELEVENLABS_VOICE_ID = "your-voice-id-here"
|
||||
```
|
||||
|
||||
Deploy it:
|
||||
部署它:
|
||||
|
||||
```bash
|
||||
npx wrangler deploy
|
||||
```
|
||||
|
||||
It'll give you a URL like `https://your-worker-name.your-subdomain.workers.dev`. Copy that.
|
||||
它会给你一个类似 `https://your-worker-name.your-subdomain.workers.dev` 的 URL。复制下来。
|
||||
|
||||
### 2. Run the Worker locally (for development)
|
||||
### 2. 本地运行 Worker(用于开发)
|
||||
|
||||
If you want to test changes to the Worker without deploying:
|
||||
如果你想在不部署的情况下测试 Worker 的改动:
|
||||
|
||||
```bash
|
||||
cd worker
|
||||
npx wrangler dev
|
||||
```
|
||||
|
||||
This starts a local server (usually `http://localhost:8787`) that behaves exactly like the deployed Worker. You'll need to create a `.dev.vars` file in the `worker/` directory with your keys:
|
||||
这会启动一个本地服务器(通常是 `http://localhost:8787`),行为与已部署的 Worker 完全一致。你需要在 `worker/` 目录下创建一个 `.dev.vars` 文件,写入你的密钥:
|
||||
|
||||
```
|
||||
ANTHROPIC_API_KEY=sk-ant-...
|
||||
@@ -99,47 +105,47 @@ ELEVENLABS_API_KEY=...
|
||||
ELEVENLABS_VOICE_ID=...
|
||||
```
|
||||
|
||||
Then update the proxy URLs in the Swift code to point to `http://localhost:8787` instead of the deployed Worker URL while developing. Grep for `clicky-proxy` to find them all.
|
||||
然后在开发时,把 Swift 代码中的代理 URL 改为指向 `http://localhost:8787`,而不是已部署的 Worker URL。用 grep 搜索 `clicky-proxy` 可以找到所有相关位置。
|
||||
|
||||
### 3. Update the proxy URLs in the app
|
||||
### 3. 更新应用中的代理 URL
|
||||
|
||||
The app has the Worker URL hardcoded in a few places. Search for `your-worker-name.your-subdomain.workers.dev` and replace it with your Worker URL:
|
||||
应用在几处硬编码了 Worker URL。搜索 `your-worker-name.your-subdomain.workers.dev` 并替换为你的 Worker URL:
|
||||
|
||||
```bash
|
||||
grep -r "clicky-proxy" leanring-buddy/
|
||||
```
|
||||
|
||||
You'll find it in:
|
||||
- `CompanionManager.swift` — Claude chat + ElevenLabs TTS
|
||||
- `AssemblyAIStreamingTranscriptionProvider.swift` — AssemblyAI token endpoint
|
||||
你会在以下位置找到它:
|
||||
- `CompanionManager.swift` — Claude 聊天 + ElevenLabs TTS
|
||||
- `AssemblyAIStreamingTranscriptionProvider.swift` — AssemblyAI token 端点
|
||||
|
||||
### 4. Open in Xcode and run
|
||||
### 4. 在 Xcode 中打开并运行
|
||||
|
||||
```bash
|
||||
open leanring-buddy.xcodeproj
|
||||
```
|
||||
|
||||
In Xcode:
|
||||
1. Select the `leanring-buddy` scheme (yes, the typo is intentional, long story)
|
||||
2. Set your signing team under Signing & Capabilities
|
||||
3. Hit **Cmd + R** to build and run
|
||||
在 Xcode 中:
|
||||
1. 选择 `leanring-buddy` scheme(对,这个拼写错误是故意的,说来话长)
|
||||
2. 在 Signing & Capabilities 中设置你的签名团队
|
||||
3. 按 **Cmd + R** 构建并运行
|
||||
|
||||
The app will appear in your menu bar (not the dock). Click the icon to open the panel, grant the permissions it asks for, and you're good.
|
||||
应用会出现在菜单栏(而不是程序坞)中。点击图标打开面板,授予它请求的权限,就可以开始用了。
|
||||
|
||||
### Permissions the app needs
|
||||
### 应用所需权限
|
||||
|
||||
- **Microphone** — for push-to-talk voice capture
|
||||
- **Accessibility** — for the global keyboard shortcut (Control + Option)
|
||||
- **Screen Recording** — for taking screenshots when you use the hotkey
|
||||
- **Screen Content** — for ScreenCaptureKit access
|
||||
- **麦克风** — 用于按住说话(push-to-talk)的语音采集
|
||||
- **辅助功能** — 用于全局键盘快捷键(Control + Option)
|
||||
- **屏幕录制** — 用于在使用快捷键时截图
|
||||
- **屏幕内容** — 用于 ScreenCaptureKit 访问
|
||||
|
||||
## Architecture
|
||||
## 架构
|
||||
|
||||
If you want the full technical breakdown, read `CLAUDE.md`. But here's the short version:
|
||||
如果你想看完整技术拆解,请阅读 `CLAUDE.md`。下面是简要版本:
|
||||
|
||||
**Menu bar app** (no dock icon) with two `NSPanel` windows — one for the control panel dropdown, one for the full-screen transparent cursor overlay. Push-to-talk streams audio over a websocket to AssemblyAI, sends the transcript + screenshot to Claude via streaming SSE, and plays the response through ElevenLabs TTS. Claude can embed `[POINT:x,y:label:screenN]` tags in its responses to make the cursor fly to specific UI elements across multiple monitors. All three APIs are proxied through a Cloudflare Worker.
|
||||
**菜单栏应用**(无程序坞图标),包含两个 `NSPanel` 窗口——一个用于控制面板下拉菜单,一个用于全屏透明光标叠加层。按住说话时,音频通过 websocket 流式传输到 AssemblyAI,转写文本和截图通过流式 SSE 发送给 Claude,再通过 ElevenLabs TTS 播放回复。Claude 可以在回复中嵌入 `[POINT:x,y:label:screenN]` 标签,让光标飞到多块显示器上的特定 UI 元素。三个 API 都通过 Cloudflare Worker 代理。
|
||||
|
||||
## Project structure
|
||||
## 项目结构
|
||||
|
||||
```
|
||||
leanring-buddy/ # Swift source (yes, the typo stays)
|
||||
@@ -155,8 +161,8 @@ worker/ # Cloudflare Worker proxy
|
||||
CLAUDE.md # Full architecture doc (agents read this)
|
||||
```
|
||||
|
||||
## Contributing
|
||||
## 贡献
|
||||
|
||||
PRs welcome. If you're using Claude Code, it already knows the codebase — just tell it what you want to build and point it at `CLAUDE.md`.
|
||||
欢迎提交 PR。如果你在用 Claude Code,它已经了解这个代码库——告诉它你想做什么,并让它参考 `CLAUDE.md`。
|
||||
|
||||
Got feedback? DM me on X [@farzatv](https://x.com/farzatv).
|
||||
有反馈?在 X 上私信我 [@farzatv](https://x.com/farzatv).
|
||||
|
||||
Reference in New Issue
Block a user