8.4 KiB
OpenLess 整体逻辑梳理
更新时间:2026-04-26
1. 核心判断
OpenLess 要解决的不是“语音转文字”这个单点功能,而是:
用户在真实工作流里想表达一段内容时,不想被键盘速度、口语整理、格式修正、跨应用插入、隐私担忧打断。
所以产品的核心逻辑不是“录音 -> 转写”,而是:
说话 -> 理解说话意图 -> 整理成可用文字 -> 输入到原来的地方 -> 失败也不丢。
这决定了第一轮产品必须围绕“输入层”做,而不是做成聊天工具、会议工具或写作工具。
2. 产品定位
OpenLess 第一轮定位为:
本地优先、低打扰、可控润色的 macOS AI 语音输入层。
关键词:
- macOS 原生。
- 任意输入框。
- 快捷键触发。
- 底部微型状态胶囊。
- 中文和中英混输友好。
- 轻度润色,不代替用户写作。
- 插入失败自动复制。
- 本地优先,可选云增强。
- 支持买断,不强迫订阅。
3. 用户逻辑
3.1 目标用户
第一轮优先服务:
- AI 工具高频用户:ChatGPT、Claude、Cursor、Perplexity。
- 中文和中英混输用户。
- 工作 IM 高频用户:微信、飞书、Slack。
- 需要写邮件、需求、评论、prompt 的知识工作者。
- 对隐私和本地处理敏感的 Mac 用户。
3.2 用户真实痛点
| 痛点 | 用户状态 | 产品回应 |
|---|---|---|
| 想得比打得快 | 长 prompt、长消息打字慢 | 快捷键说话,自动整理 |
| 口语不能直接发 | 有口癖、重复、停顿 | 去口癖、补标点、轻度结构化 |
| AI 味太重 | 润色后不像自己 | 保留表达习惯,不强行升华 |
| 跨应用不稳定 | 失焦、插入失败 | 自动复制 + 历史找回 |
| 价格反感 | 不想为普通转写月付 | 本地买断 + 云能力可选 |
| 隐私焦虑 | 不知道是否上传 | 清楚标识本地/云端/BYOK |
| 中文不够好 | 标点、术语、中英混输错 | 中文优先验收,个人词典 |
4. 产品主链路
OpenLess 的主链路如下:
- 用户把光标放在任意输入框。
- 按住或按下全局快捷键。
- 屏幕底部出现微型状态胶囊。
- 麦克风开始录音,波形随声音变化。
- 用户说完后松开或再次按下快捷键。
- 系统完成语音识别。
- 系统按当前模式进行轻度整理。
- 结果插入到原输入框。
- 如果插入失败,自动复制到剪贴板。
- 本次输入进入本地历史,方便找回。
一句话:
用户只需要负责说,OpenLess 负责把它变成可以直接用的文字,并尽量放回原来的地方。
5. 功能逻辑
5.1 录音逻辑
第一轮推荐默认:
hold_to_talk:按住说话,松开结束。- 可选
toggle_to_talk:按一下开始,再按一下结束。 Esc取消。- 录音状态必须非常明显,避免用户担心后台监听。
5.2 转写逻辑
转写路径分三类:
| 路径 | 适合用户 | 产品表现 |
|---|---|---|
| 本地 | 隐私敏感、买断用户 | 仅在本机处理,速度取决于设备 |
| 云端 | 追求准确率和速度 | 上传音频识别,需明确提示 |
| BYOK | 开发者、高级用户 | 用户自带 API Key,成本自理 |
UI 不要直接把模型名堆给用户,默认只表达:
- 私密。
- 快。
- 准。
5.3 润色逻辑
第一轮只做 4 个模式:
| 模式 | 目标 |
|---|---|
| 原文 | 尽量保留原句,只补标点 |
| 轻度润色 | 默认模式,去口癖、补标点、轻微整理 |
| 清晰结构 | 适合 prompt、需求、说明、步骤 |
| 正式表达 | 适合邮件、客户沟通、工作汇报 |
润色原则:
- 不强行扩写。
- 不替用户补不存在的信息。
- 不把所有内容改成 AI 腔。
- 保留用户常用词和表达习惯。
- 中文标点和分段要自然。
5.4 插入逻辑
插入优先级:
- 直接输入到当前光标位置。
- 如果失败,复制到剪贴板。
- 如果剪贴板也失败,在历史中保留结果。
产品底线:
用户说过的话不能丢。
6. UI 逻辑
6.1 视觉锚点
OpenLess 的核心 UI 是:
macOS 屏幕底部的微型状态胶囊。
它不是聊天框,也不是大窗口,也不应该像一整条输入栏。它只负责提醒用户“现在正在听 / 正在整理 / 已完成 / 已取消”,平时应该尽量小,只有状态变化时才轻微弹出。
6.2 胶囊结构
| 区域 | 内容 |
|---|---|
| 左侧 | 叉号,用于取消 |
| 中间 | 极短状态提示或 3-5 根动态白色音量条 |
| 右侧 | 勾号,用于确认/完成 |
6.3 状态变化
| 状态 | 表现 |
|---|---|
| Idle | 完全隐藏,或只保留极淡的小点 |
| Listening | 从底部弹出一个很小的胶囊,中间白色条形随声音轻微跳动 |
| Processing | 胶囊略微变宽,显示“整理中”或小 spinner |
| Inserted | 右侧勾号短暂高亮,随后淡出 |
| Cancelled | 左侧叉号短暂高亮,随后淡出 |
| Copied fallback | 胶囊短暂显示“已复制”,不展开大面板 |
| Error | 胶囊显示红色状态点,点击后才展开错误详情 |
动画基调:
- 轻。
- 稳。
- 原生。
- 不做夸张动效。
- 不像营销页。
- 不让用户怀疑它一直在听。
- 不默认展示转写全文。
- 不常驻占用屏幕空间。
- 只有用户操作或状态变化时才出现。
6.4 胶囊尺寸建议
第一轮默认尺寸应非常克制:
| 状态 | 宽度 | 高度 | 说明 |
|---|---|---|---|
| Idle | 0 或 8-12px 点状提示 | 0 或 8-12px | 默认推荐隐藏 |
| Listening | 128-180px | 32-38px | 只显示叉号、动态条、勾号 |
| Processing | 150-210px | 32-38px | 可显示 2-3 个字的状态 |
| Success | 128-160px | 32-38px | 勾号高亮后淡出 |
| Error | 150-210px | 32-38px | 不展开详情,点击再看 |
位置:
- 屏幕底部居中。
- 距离底边 18-28px。
- 视觉上像 macOS 系统提示,而不是产品主界面。
7. 数据逻辑
第一轮至少需要记录:
- 原始转写。
- 最终文本。
- 使用模式。
- 当前 app。
- 插入状态。
- 失败原因。
- 是否保存音频。
- 本地/云端/BYOK 路径。
历史只解决找回问题,不做内容管理系统。
音频默认不保存。用户主动开启后,才保存音频。
8. 商业逻辑
OpenLess 不应一开始做纯订阅。
推荐商业结构:
| 层级 | 内容 |
|---|---|
| 免费版 | 基础体验、有限额度、完整主流程 |
| 买断版 | 本地无限使用、基础润色、历史、词典 |
| Pro 订阅 | 云端高精度、高级润色、同步、团队能力 |
| BYOK | 用户自带 API Key,适合高级用户 |
商业判断:
- 用户愿意为“稳定输入层”付费。
- 用户不愿意为“普通 Whisper 套壳”长期订阅。
- 云端能力有持续成本,可以订阅。
- 本地能力更适合买断。
9. 技术逻辑
第一轮技术模块:
| 模块 | 职责 |
|---|---|
| Menu Bar App | 常驻、设置、状态 |
| Hotkey Manager | 全局快捷键 |
| Recorder | 麦克风录音、音量采样 |
| ASR Router | 本地/云端/BYOK 转写路由 |
| Polish Engine | 模式化润色 |
| Inserter | 当前输入框插入 |
| Clipboard Fallback | 插入失败兜底 |
| History Store | 本地历史 |
| Dictionary | 个人词典 |
| Settings | 权限、模式、隐私、模型 |
第一轮可行性高,但要控制复杂度:
- 不先做会议。
- 不先做多端同步。
- 不先做复杂 voice command。
- 不默认截图上下文。
- 不默认保存音频。
10. 第一轮落地顺序
建议按这个顺序做:
- macOS 菜单栏应用骨架。
- 权限引导:麦克风 + Accessibility。
- 全局快捷键录音。
- 底部微型状态胶囊 UI。
- ASR 转写。
- 轻度润色。
- 当前输入框插入。
- 插入失败复制兜底。
- 历史记录。
- 个人词典。
- 设置页。
- 模式切换。
优先级原则:
先保证用户每天能用,再增加高级能力。
11. 最终概念版
OpenLess 的概念版可以定义为:
一个 macOS 上的语音输入层。用户在任何 app 里按住快捷键说话,OpenLess 在底部显示录音状态,把语音整理成自然、清楚、不过度 AI 化的文字,并自动输入到当前光标位置。它本地优先、失败不丢、支持中文和中英混输,商业上以本地买断为基础,云端增强作为可选订阅。