Files
openless/docs/openless-overall-logic.md
T

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 的主链路如下:

  1. 用户把光标放在任意输入框。
  2. 按住或按下全局快捷键。
  3. 屏幕底部出现微型状态胶囊。
  4. 麦克风开始录音,波形随声音变化。
  5. 用户说完后松开或再次按下快捷键。
  6. 系统完成语音识别。
  7. 系统按当前模式进行轻度整理。
  8. 结果插入到原输入框。
  9. 如果插入失败,自动复制到剪贴板。
  10. 本次输入进入本地历史,方便找回。

一句话:

用户只需要负责说,OpenLess 负责把它变成可以直接用的文字,并尽量放回原来的地方。


5. 功能逻辑

5.1 录音逻辑

第一轮推荐默认:

  • hold_to_talk:按住说话,松开结束。
  • 可选 toggle_to_talk:按一下开始,再按一下结束。
  • Esc 取消。
  • 录音状态必须非常明显,避免用户担心后台监听。

5.2 转写逻辑

转写路径分三类:

路径 适合用户 产品表现
本地 隐私敏感、买断用户 仅在本机处理,速度取决于设备
云端 追求准确率和速度 上传音频识别,需明确提示
BYOK 开发者、高级用户 用户自带 API Key,成本自理

UI 不要直接把模型名堆给用户,默认只表达:

  • 私密。
  • 快。
  • 准。

5.3 润色逻辑

第一轮只做 4 个模式:

模式 目标
原文 尽量保留原句,只补标点
轻度润色 默认模式,去口癖、补标点、轻微整理
清晰结构 适合 prompt、需求、说明、步骤
正式表达 适合邮件、客户沟通、工作汇报

润色原则:

  • 不强行扩写。
  • 不替用户补不存在的信息。
  • 不把所有内容改成 AI 腔。
  • 保留用户常用词和表达习惯。
  • 中文标点和分段要自然。

5.4 插入逻辑

插入优先级:

  1. 直接输入到当前光标位置。
  2. 如果失败,复制到剪贴板。
  3. 如果剪贴板也失败,在历史中保留结果。

产品底线:

用户说过的话不能丢。


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. 第一轮落地顺序

建议按这个顺序做:

  1. macOS 菜单栏应用骨架。
  2. 权限引导:麦克风 + Accessibility。
  3. 全局快捷键录音。
  4. 底部微型状态胶囊 UI。
  5. ASR 转写。
  6. 轻度润色。
  7. 当前输入框插入。
  8. 插入失败复制兜底。
  9. 历史记录。
  10. 个人词典。
  11. 设置页。
  12. 模式切换。

优先级原则:

先保证用户每天能用,再增加高级能力。


11. 最终概念版

OpenLess 的概念版可以定义为:

一个 macOS 上的语音输入层。用户在任何 app 里按住快捷键说话,OpenLess 在底部显示录音状态,把语音整理成自然、清楚、不过度 AI 化的文字,并自动输入到当前光标位置。它本地优先、失败不丢、支持中文和中英混输,商业上以本地买断为基础,云端增强作为可选订阅。