完全免费的开源 Windows 效率神器,可替代 Quicker
用过 Quicker 吗?燕子做的事情差不多,但完全免费、源码公开、永远不会涨价停服。
鼠标一划弹出常用工具面板,打几个字就能搜到任何东西。最酷的是:你可以让 AI 帮你生成专属工具,不需要懂编程,一句话描述需求,粘贴进来就能用。
一句话说清楚燕子能干嘛:
- 按快捷键弹出搜索框,快速打开任何软件、文件夹、网站
- 鼠标一划呼出面板,一键执行你最常用的操作
- 让 AI 帮你生成专属工具,不懂编程也没关系
- 多台电脑的配置自动同步,换电脑不用重新设置
- 所有数据存你自己电脑,不怕隐私泄露
| 我关心的问题 | 燕子怎么说 | Quicker 怎么样 |
|---|---|---|
| 要花钱吗? | 永久免费,没有会员 | 部分功能需要付费订阅 |
| 会不会突然停服? | 开源自部署,不怕跑路 | 官方服务,停服就完了 |
| 能让 AI 帮我做工具吗? | 可以,内置 AI 生成提示词 | 不支持 |
| 我的数据安全吗? | 全存本地,同步到你自己的网盘 | 存在第三方服务器 |
| 能自己改代码吗? | 完整源码公开,随便改 | 不可修改 |
| 会不会越用越贵? | 不会,永远免费 | 可能涨价 |
- 一键呼出搜索 — 按
Alt+Space,在任何界面弹出搜索框,输几个字就找到想要的东西,支持中文、拼音缩写 - 鼠标面板 — 在桌面划一下鼠标,常用工具面板弹出来,不用找图标不用记快捷键
- AI 生成工具 — 告诉 AI 你想要什么功能,它帮你生成,粘贴到燕子里直接用
- 快速网页搜索 — 输入
bing 今天的新闻,自动打开搜索,支持自定义任意搜索引擎 - 自动化脚本 — 批量重命名、自动整理文件、定时操作,做成按钮一键搞定
- 多设备同步 — 配置一次,多台电脑自动同步,换电脑不用重新设置
- 扩展市场 — 下载别人分享的现成工具,也可以把自己的工具分享出去
- 后台驻留 — 最小化到系统托盘,随时呼出,不占地方
从蓝奏云下载最新版安装包:
- 下载地址:https://wwbnh.lanzout.com/b0pnkaj6j
- 提取密码:
62yn
下载后直接运行安装包。安装完成后启动 Yanzi.exe,默认使用 Alt+Space 呼出启动器。
系统要求:
- Windows 10 / 11(64 位)
- 安装包为自包含构建,不需要用户额外安装 .NET 运行时
为了避免本地调试、发布和临时验证目录混淆,当前项目只认这两个标准输出目录:
- 调试版:
src\OpenQuickHost\bin\Debug\net9.0-windows\ - 发布版:
src\OpenQuickHost\bin\Release\net9.0-windows\
约定说明:
src\OpenQuickHost\bin\Debug\net9.0-windows\是默认本地运行目录src\OpenQuickHost\bin\Release\net9.0-windows\是默认发布构建目录- 像
net9.0、net9.0-windows-verify这类目录,属于历史残留或临时验证目录,不作为正式输出目录使用 - 临时验证输出如果需要保留,统一明确标成
verify,验证完成后清理
| 操作 | 快捷键 / 动作 |
|---|---|
| 呼出启动器 | Alt+Space |
| 搜索命令 | 直接输入关键字 |
| 切换条目 | Up / Down |
| 执行命令 | Enter 或双击 |
| 打开动作菜单 | Ctrl+K |
| 返回 / 收起 | Esc |
| 右键管理 | 右键点击条目 |
方法一:启动器内 + 按钮
- 呼出启动器,点击底部状态栏右侧
+ - 粘贴扩展 JSON(可让 AI 帮你生成,也支持直接粘贴剪贴板里的
json代码块) - 点击保存即可立即使用
方法二:直接写 JSON 文件
在应用运行目录的 Extensions/ 下新建一个子目录,放入 manifest.json:
{
"id": "open-downloads",
"name": "打开下载目录",
"version": "0.1.0",
"category": "目录",
"description": "打开当前用户的下载目录。",
"keywords": ["downloads", "下载", "xiazai"],
"icon": "mdi:folder",
"openTarget": "C:\\Users\\你的用户名\\Downloads"
}重启启动器或在设置页刷新扩展统计后即可命中。
方法三:搜索类扩展
使用 queryPrefixes 和 queryTargetTemplate。启动器输入 gg openai,即可用默认浏览器打开搜索页。
{
"id": "google-search",
"name": "谷歌搜索",
"version": "0.1.0",
"category": "搜索",
"description": "用默认浏览器打开 Google 搜索。",
"keywords": ["google", "谷歌", "gg", "guge"],
"icon": "mdi:search",
"queryPrefixes": ["谷歌", "google", "gg", "guge"],
"queryTargetTemplate": "https://www.google.com/search?q={query}"
}方法三点五:前缀传参脚本扩展
如果你希望用户在主界面输入 前缀 + 内容,然后把后面的内容直接传给脚本,就要同时提供 queryPrefixes 和脚本入口:
{
"id": "text-length-counter",
"name": "文本长度统计",
"version": "0.1.0",
"category": "脚本",
"description": "读取主界面输入的后半段文本并返回长度。",
"keywords": ["文本", "长度", "统计"],
"queryPrefixes": ["统计", "count"],
"runtime": "csharp",
"entryMode": "inline",
"permissions": [],
"icon": "mdi:counter",
"script": {
"source": "using System.Threading.Tasks;\\npublic static class YanziAction\\n{\\n public static Task<string> RunAsync(YanziActionContext context)\\n {\\n var input = context.InputText ?? string.Empty;\\n return Task.FromResult(\\\"原文:\\\" + input + \\\"\\\\n长度:\\\" + input.Length);\\n }\\n}"
}
}用户输入 统计 今天的安排 后,脚本里收到的 context.InputText 就是 今天的安排。
方法四:内联 C# 动作
快捷面板触发扩展时,燕子会在点击扩展后抓取当前选中的文本或文件路径,并写入 context.InputText。
{
"id": "csharp-selection-summary",
"name": "选中内容摘要",
"version": "0.1.0",
"category": "C#",
"description": "读取快捷面板传入的选中文本。",
"keywords": ["csharp", "selection", "选中", "摘要"],
"icon": "mdi:code",
"runtime": "csharp",
"entryMode": "inline",
"permissions": ["context.read"],
"script": {
"source": "public static class YanziAction\\n{\\n public static Task<string> RunAsync(YanziActionContext context)\\n {\\n var text = string.IsNullOrWhiteSpace(context.InputText) ? \\\"没有收到选中内容。\\\" : context.InputText.Trim();\\n return Task.FromResult($\\\"来源: {context.LaunchSource}\\\\n长度: {text.Length}\\\\n\\\\n{text}\\\");\\n }\\n}"
}
}方法五:内联 PowerShell 脚本
{
"id": "clipboard-read",
"name": "读取剪贴板",
"version": "0.1.0",
"category": "脚本",
"description": "读取当前剪贴板文本。",
"keywords": ["clipboard", "剪贴板"],
"icon": "mdi:clipboard",
"runtime": "powershell",
"entryMode": "inline",
"permissions": ["clipboard.read"],
"script": {
"source": "param([string]$InputText = \\\"\\\", [string]$ContextPath = \\\"\\\")\\n[Console]::OutputEncoding = [System.Text.Encoding]::UTF8\\n$text = Get-Clipboard -Raw\\nif ([string]::IsNullOrWhiteSpace($text)) { Write-Output \\\"当前剪贴板为空。\\\" } else { Write-Output $text.Trim() }"
}
}方法六:宿主界面扩展
适合翻译、文本处理、查询等需要输入区和结果区的工具。actionType = "script" 时,按钮会执行当前扩展的 C# 或 PowerShell 入口,并把结果显示在右侧。
{
"id": "text-workbench",
"name": "文本处理台",
"version": "0.1.0",
"category": "工具",
"description": "在宿主窗口中输入文本并执行 C# 动作。",
"keywords": ["text", "文本", "workbench"],
"icon": "mdi:terminal",
"runtime": "csharp",
"entryMode": "inline",
"hostedView": {
"type": "split-workbench",
"title": "文本处理台",
"description": "左侧输入文本,右侧显示执行结果。",
"inputLabel": "输入",
"inputPlaceholder": "输入要处理的文本...",
"outputLabel": "结果",
"actionButtonText": "执行",
"actionType": "script",
"emptyState": "结果会显示在这里。"
},
"script": {
"source": "public static class YanziAction\\n{\\n public static Task<string> RunAsync(YanziActionContext context)\\n {\\n return Task.FromResult(context.InputText.ToUpperInvariant());\\n }\\n}"
}
}更多示例见 扩展编写指南。
当前客户端支持两类同步:
- Cloudflare 账号同步:用于账号、分享扩展、坚果云配置等账户级信息。
- 坚果云 / WebDAV 个人扩展同步:用于低频同步个人扩展包,适合多设备恢复和备份。
推荐流程:
- 在设置窗口登录燕子云账号。
- 在“同步”设置里配置坚果云 / WebDAV。
- 点击“立即同步”完成首轮上传或拉取。
- 后续新建、修改、删除扩展后,客户端会按低频策略进行后台同步。
前置依赖:
- .NET 9 SDK
- Windows 系统(WPF 依赖 Windows)
# 克隆仓库
git clone https://github.com/luoluoluo22/yanzi.git
cd yanzi
# 编译
dotnet build
# 运行(Debug)
.\src\OpenQuickHost\bin\Debug\net9.0-windows\Yanzi.exedotnet publish .\src\OpenQuickHost\OpenQuickHost.csproj -c Release -r win-x64 --self-contained true -p:PublishSingleFile=true -o .\publish输出文件在 ./publish/Yanzi.exe,可直接分发给用户,无需安装 .NET 运行时。
也可以使用仓库脚本生成发布产物:
.\scripts\publish-installer.ps1 -Version 0.1.0脚本会先生成自包含单文件:.artifacts\publish\win-x64\Yanzi.exe。
如果本机安装了 Inno Setup 6,还会继续生成一键安装包:.artifacts\installer\YanziSetup-0.1.0.exe。
云同步基于 Cloudflare Worker + KV 存储,你需要部署自己的 Worker 实例。
# 进入 Worker 目录
cd cloudflare
# 安装依赖
npm install
# 部署到你的 Cloudflare 账户
npx wrangler deploy部署完成后,将 Worker 的 URL 填入项目根目录的 syncsettings.json:
{
"baseUrl": "https://your-worker.your-account.workers.dev"
}参考示例文件:syncsettings.example.json。
官网静态站位于 website/ 目录:
# 部署到 Cloudflare Pages
npx wrangler pages deploy ./website --project-name openquickhost-site --branch mainOpenQuickHost/
├── OpenQuickHost.sln 根目录解决方案
├── src/
│ └── OpenQuickHost/ WPF 桌面应用源码
│ ├── MainWindow.xaml / .cs
│ ├── SettingsWindow.xaml / .cs
│ ├── QuickPanelWindow.xaml / .cs
│ ├── AddJsonExtensionWindow.*
│ ├── ScriptExtensionRunner.cs
│ ├── LocalAgentApiServer.cs
│ └── Sync/
├── cloudflare/ Cloudflare Worker 后端源码
├── website/ 官网静态站源码
├── docs/ 产品说明与扩展规范文档
├── installer/ Inno Setup 一键安装包脚本
├── scripts/ 发布与验证脚本
├── skills/ 内置 Agent Skill 包
└── syncsettings.example.json 云同步配置示例
| 文档 | 说明 |
|---|---|
| 产品说明 | 设计原则与产品定位 |
| 扩展编写指南 | 面向用户和 AI 的扩展写作示例 |
| 扩展规范 | manifest.json 完整字段说明 |
| Agent Skill 规范 | 为 AI 工具导出 Skill 的格式规范 |
| 使用说明 | 快速上手指南 |
- 优化燕幕默认组件样式,移除天气模块和残留说明文案,恢复便签组件并统一新增组件 HTML/AI 提示词风格。
- 修复燕幕多屏定位漂移、同步按钮触发后退出、便签同步延迟和本地缓存读取等问题。
- 扩展燕环触发配置,支持 Win、CapsLock、自定义快捷键和鼠标触发统一分配。
- 为燕环、燕幕、燕选增加进程黑白名单管理,并支持通过定位窗口自动添加目标进程。
- 新增鼠标触发录制窗口,可将识别到的鼠标动作分配给面板、燕环或燕幕。
- 调整燕选黑名单作用范围,避免影响燕环、鼠标面板等其他输入逻辑。
- 新增输入状态窗口和托盘修复入口,便于查看和重置键盘、鼠标状态。
本项目以 MIT 协议开源,欢迎 Fork、提 PR 或基于此构建你自己的启动器工具。



