本文是对标 Lovekey 做 AI 聊天回复键盘的可行性、收益与方案的实现稿。品牌已定为 火候(英文 Finesse)。读者是产品和研发。范围以 P0:iOS 容器 App + 键盘扩展 为准;安卓、截图记忆、文风学习放 P1。未写进验收标准的,不算做完。
资料时点:2026-09-12。技术约束按当前 iOS 自定义键盘规则理解,上架前须用真机和 App Store 审核再核一次。
1. 要做成什么样
一句话:用户在微信里卡住时,切到「火候」键盘,贴上对方的话,选出关系火候,得到 3 条像自己、不过火的回复,点一下写进输入框。
成功标准沿用立项稿,本文件只负责「P0 怎样算做完」:
- 国区 App Store 可上架;无完全访问时键盘能打字、能切走;有完全访问后「帮你回」可用。
- 从打开 App 到第一次成功插入回复,新手引导可独立走完,不依赖客服。
- 免费额度用尽后走容器 App 内购,键盘扩展里不出现商品页或广告。
- 不记录普通击键;密码类输入框不展示「帮你回」。
1.1 范围与非目标
做(P0) | 明确不做 |
|---|---|
iOS 16+ 容器 App、键盘扩展、帮你回、火候档、预置人设、恋爱/职场场景、免费额度、IAP、安全过滤、基础引导 | 自研拼音引擎、皮肤商店、自动读微信聊天、无障碍爬屏、代发消息、虚拟伴侣、键盘内广告/内购、山寨 Lovekey 素材 |
1.2 术语
词 | 含义 |
|---|---|
火候 | 关系远近档,0–4。决定回复进取程度,不是人格标签。 |
人设 | 说话口气(温和、直接、清楚…)。与火候独立,可组合。 |
帮你回 | 用对方原文(可加自己上一句)生成 3 条候选并插入输入框。 |
完全访问 | 系统「允许完全访问」。没有它,键盘不能联网,也不能读剪贴板。 |
上屏 | 调用 |
2. 谁在什么情况下用
角色 | 情境 | 想要的结果 |
|---|---|---|
卡壳的聊天者 | 微信收到一句,删了又打,3 分钟发不出去 | 30 秒内有 3 条能发出去的、不过火的回复 |
怕得罪人的职场用户 | 要回领导/客户,怕太硬或太软 | 切到职场场景,生成清楚、客气的回复 |
第一次装的人 | 不知道第三方键盘怎么开 | 按 App 里的步骤打开键盘和完全访问,第一次生成成功 |
证据来自立项稿对 Lovekey 的拆解:付费来自「卡壳时立刻能发」,不是来自输入法本身。本产品用火候和人设降低油腻,而不是堆话术市场。
3. 功能地图
优先级 | 功能 | 用户可观察到什么 | P0 是否必须 |
|---|---|---|---|
P0 | 新手引导 | 分步教:添加键盘 → 完全访问 → 微信里切到火候 | 是 |
P0 | 无权限键盘 | 未开完全访问时仍能打字、切键盘;帮你回入口说明缺权限 | 是(审核) |
P0 | 帮你回 | 粘贴对方原文,生成 3 条,点选上屏 | 是 |
P0 | 火候档 | 0–4 五档,生成结果明显不同档 | 是 |
P0 | 场景 | 恋爱 / 职场一键切,默认恋爱 | 是 |
P0 | 预置人设 | 8 个口气,键盘与 App 同步 | 是 |
P0 | 额度与会员 | 免费 20 次;月 38 / 年 128 / 终身 298;键盘内只提示去 App 开通 | 是 |
P0 | 安全阀 | 骚扰、威胁、未成年相关被拒;火候 0–1 不出口味过重的句子 | 是 |
P0 | 隐私底线 | 不上传击键;安全输入框无帮你回 | 是 |
P1 | 截图补上下文 | App 里选聊天截图,勾选几轮后供键盘使用 | 否 |
P1 | 会话记忆 | 按「这个人」记住火候和最近几轮 | 否 |
P1 | 文风 | 用户贴自己发过的话,之后更像他 | 否 |
P1 | 开场白 | 无对方原文时,按场景生成第一句 | 否 |
P1 | 安卓 | 同一套 API 的 IME | 否 |
P2 | 职场包 / 客服口吻 | 更深模板与年付主推 | 否 |
4. P0 行为与验收
4.1 新手引导
**前置:**用户刚安装,尚未添加键盘。
**行为:**容器 App 首页按 4 步走,每步有系统设置跳转或示意图:打开键盘列表 → 添加「火候」→ 打开「允许完全访问」→ 在任意输入框长按地球键切到火候。App 能检测「键盘是否已添加」「是否完全访问」(扩展侧 hasFullAccess 写入 App Group,App 读取)。
验收:
- 未添加键盘时,不能把「开始聊天」画成已就绪。
- 已添加但未完全访问时,文案明确说:现在可以打字,帮你回需要打开完全访问;提供跳转。
- 两状态都满足后,首页出现「去微信试一次」和一张 10 秒内能看完的示意图。
- 不要求用户注册才能做完引导。
4.2 无完全访问时的键盘
**行为:**扩展必须带地球键。未完全访问时提供可插入字符的基础 QWERTY(含常用标点、删除、换行),帮你回区域展示锁态说明,不发起网络请求。
**验收:**关闭完全访问后,在备忘录里能打出「你好」,能切到其他键盘。Instruments 下扩展内存峰值 < 50 MB。审核用机按此路径走一遍不崩溃。
4.3 帮你回
**前置:**完全访问已开;剪贴板里是用户刚复制的对方一句话,或用户在键盘粘贴框里改过。
行为:
- 打开键盘时,若剪贴板是纯文本且长度 1–500 字,预填到「对方说了」。超过则截断并提示。
- 可选填「我上一句」,可空。
- 点「按火候生成」。生成中按钮不可重复点。流式展示或完成后一次出示 3 条,标签固定为「稳妥 / 合适 / 更进一步」。
- 点某条即上屏。上屏后保留 3 条,允许改点另一条(先删已插入内容再插入新内容;若删不干净则改为追加,并 toast「已插入,请在对话框里检查」)。
验收:
- 微信、备忘录、iMessage 各插入一次成功。
- 从点生成到 3 条齐全,Wi-Fi 下 P50 < 2.5 s,P95 < 6 s(国内机房、短句)。超时 8 s 给出重试,不白屏。
- 空输入点生成:提示「先贴上对方的话」,不扣次数。
- 3 条互不相同;火候 0 与火候 4 对同一句的「更进一步」明显不同(抽检 10 条,人工过)。
4.4 火候档与场景、人设
火候 | 恋爱场景含义 | 职场场景含义 |
|---|---|---|
0 生 | 刚加好友 / 相亲第一句 | 不熟的客户或跨部门 |
1 淡 | 说过几句 | 普通同事 |
2 常 | 经常聊,未明确关系 | 合作中的同事 |
3 近 | 暧昧或已在交往 | 熟络、可略轻松 |
4 熟 | 伴侣或很熟,仍禁止油腻连发 | 内部很熟,仍禁止情绪发泄式回复 |
预置人设 P0 共 8 个:恋爱侧温和、直接、轻松、认真、克制;职场侧清楚、客气、坚定。人设只改口气,不改火候。
**验收:**键盘改火候/场景/人设后,杀键盘进程再开,状态仍在(App Group)。默认:场景=恋爱,火候=2,人设=温和。首页不做「网红话术市场」瀑布流。
4.5 额度与会员
**行为:**每个 Apple ID(拿不到则用 Keychain 设备号)免费 20 次成功生成。空输入、安全拦截、服务端 5xx 不扣次。用尽后键盘展示剩余 0,主按钮变为「去火候开通」,点击用 URL Scheme / App Group 打开容器 App 会员页。会员页提供:连续包月 38 元、包年 128 元、终身 298 元。终身不是首屏主按钮,主按钮是包年。
验收:
- 键盘扩展 UI 内无 SKPayment、无价格表、无广告。
- 恢复购买能把同一 Apple ID 的年费/终身拉回来。
- 沙盒账号买月费后,扩展在 10 s 内额度变为无限(或日上限 200 次防刷)。
相对立项稿的收窄:P0 只做「20 次不限时」,不做「20 次或 24 小时取先到」。24 小时窗更像卡死试用。转化不够时再加时间窗,不作为上架门槛。
4.6 安全阀与隐私
**行为:**服务端在模型前后都做规则+模型分类。直接拒绝:骚扰纠缠、威胁恐吓、性相关且涉及未成年、诈骗话术。火候 0–1 时,把露骨暧昧改写成中性。被拒时键盘展示「这条不适合代写」,不返回擦边改写充数。安全输入:当 keyboardType 为 numberPad / phonePad / decimalPad,或 textContentType 能判断为 password / oneTimeCode 时,隐藏帮你回。
**验收:**测试集至少 30 条攻击句(纠缠、骂人、骗验证码、未成年)拦截率 ≥ 90%,误杀日常恋爱句 < 10%(集合外置,上线前人工标)。完全访问说明里写清:只在用户点生成时上传「对方原文 / 我上一句 / 火候人设」,不上传击键。
5. 主路径与异常
正常路径:安装 → 引导完成 → 微信复制对方句子 → 切火候 → 生成 3 条 → 点「合适」上屏 → 用户可改字再发。
异常 | 表现 | 处理 |
|---|---|---|
无完全访问 | 帮你回锁态 | 说明 + 跳转设置;不请求网络 |
剪贴板空或非文本 | 粘贴框空 | 占位「先复制对方的话」;不扣次 |
网络失败 / 超时 | 生成失败 | 重试一次;仍失败则提示,不扣次 |
额度用尽 | 不能生成 | 去 App 开通;已生成的 3 条仍可上屏 |
安全拒绝 | 无 3 条 | 固定文案;不扣次 |
模型返回无法拆成 3 条 | 解析失败 | 把全文放进「合适」一条,稳妥/更进一步禁用;记错误日志 |
宿主不允许插入 | insertText 无效 | 复制到剪贴板并提示「已复制,去对话框粘贴」 |
扩展内存压力 | 系统杀键盘 | UI 不得加载大图/WebView;图片只在容器 App |
6. 技术实现
P0 目标环境:iOS 16.0+,Swift 5.9,Xcode 当前稳定版。后端部署在国内区域(阿里云或华为云北京/上海),延迟和备案都按境内公众服务准备。模型不自训,只调已备案厂商 API。
6.1 架构取舍
备选 A:键盘扩展内直接调模型厂商。否决——密钥进扩展、额度无法服务端强制、换模型要发版。
备选 B:容器 App 做本地代理,扩展用 App Group 排队。否决——扩展不能依赖 App 在前台,用户切微信时 App 已在后台,生成会挂。
采用 C:扩展只做 UI 和 HTTPS,业务网关鉴权、计量、拼提示词、调模型、审核。 扩展内存只保轻 UI;OCR、IAP、引导放容器 App。
不变量:密钥不出客户端;没点「生成」不上行聊天文本;键盘扩展不出现商店 UI;普通击键不上行。
6.2 工程拆分
模块 | 职责 | 约束 |
|---|---|---|
HuohouApp | 引导、会员、设置、隐私协议、检测键盘状态 | 可较重;Vision OCR 只放这里 |
HuohouKeyboard | QWERTY、帮你回、上屏 | 无 WebView、无大图、无 StoreKit;峰值内存 < 50 MB |
HuohouShared | App Group 模型、URL Scheme、常量 | 两端共用,结构体要 Codable 且向后兼容 |
API | 鉴权、额度、生成、收据 | 国内 HTTPS;TLS 1.2+ |
建议 Bundle:app.huohou.ios,扩展 app.huohou.ios.keyboard,App Group group.app.huohou.ios。键盘 PrimaryLanguage 用 zh-Hans,RequestsOpenAccess = YES。展示名「火候」。
6.3 一次生成的时序
额度采用预扣 + 失败回滚:5xx、客户端超时、安全拒绝回滚;成功拆出至少 1 条才确认扣除。防止「失败也扣次」和「重试刷免费」。
6.4 客户端状态
App Group 只存小 JSON,不存聊天全文(P1 会话记忆再单开文件,按联系人别名加密)。
{
"scene": "dating",
"heat": 2,
"persona_id": "warm",
"entitlement": "free",
"quota_left": 17,
"keyboard_added": true,
"full_access": true,
"session": "eyJ..."
}会话 token 放 Keychain,扩展与 App 同 Access Group。键盘被杀再开时先读本地 entitlement 做 UI,再后台拉 /v1/me 校准。校准失败不把已购用户打回免费,只在连续失败 > 24 h 时提示「打开火候 App 刷新会员」。
6.5 接口(P0)
鉴权:Authorization: Bearer <session>。设备首次 POST /v1/device/bootstrap 用 Keychain UUID + App Attest(若耗时过长可 P0 先做 UUID,P1 补 Attest)。IAP 成功后 POST /v1/iap/verify 传 signed transaction,服务端走 App Store Server API。
方法 | 路径 | 作用 | 失败 |
|---|---|---|---|
POST | /v1/device/bootstrap | 创建设备会话 | 409 设备锁定 |
GET | /v1/me | 额度与会员 | 401 刷新 bootstrap |
POST | /v1/iap/verify | 校验苹果交易 | 402 收据无效 |
POST | /v1/replies/stream | 生成 3 条 | 见下 |
生成请求体:
{
"scene": "dating",
"heat": 2,
"persona_id": "warm",
"incoming": "今天下班好早",
"outgoing_prev": "",
"locale": "zh-CN",
"client_request_id": "uuid"
}incoming 必填,1–500 字。client_request_id 幂等 10 分钟:同一 id 重试返回同一结果、不重复扣次。
SSE 事件:delta(拼 JSON)、done(完整 replies)、error。业务错误码:quota_exceeded、filtered、invalid_input、upstream_timeout、unauthorized。成功的 done:
{
"replies": [
{"tag": "稳妥", "text": "下班早也挺好,回家歇会儿。"},
{"tag": "合适", "text": "这么早?今天事情少?"},
{"tag": "更进一步", "text": "那晚饭能从容点了。"}
],
"quota_left": 16
}限流:免费 10 次/分钟;会员 30 次/分钟。超限 429,Retry-After 秒。会员另有 200 次/自然日硬顶,防盗刷打爆模型账单。
6.6 提示词与模型
系统提示分层,顺序固定,后层不得覆盖安全层:
- 安全:不写骚扰、威胁、诈骗、未成年相关;不教用户隐瞒已读或伪造身份。
- 身份:你在给用户起草「他自己要发的下一句」,必须像日常微信,短句,少形容词,不用网红腔。
- 场景 + 火候:用上表的档位说明「过火」边界。火候 4 仍禁止连珠炮和性暗示。
- 人设:只调语气词和句长。
- 输出:只输出 3 条 JSON,每条不超过 40 个汉字(职场可到 60)。不用 emoji,除非对方原句已用。
P0 选一家国内已备案、延迟低的文本模型(通义 / 豆包 / DeepSeek 按当时合同与备案名单定)。温度 0.7,max tokens 够 3 条短句即可。单次目标成本 < 0.05 元。厂商密钥只在网关。
被否方案:端侧小模型——键盘 60–70 MB 内存放不下可用中文模型。被否方案:一次请求并发生成 3 遍——费用 ×3,P0 不划算。
6.7 IAP 与账号
P0 不强制登录。会员权益绑 Apple ID 收据。容器 App 用 StoreKit 2 监听 Transaction.updates,把 signed transaction 交给网关。网关校验后把 entitlement 写入设备会话。
商品 ID 建议:huohou.plus.monthly、huohou.plus.yearly、huohou.lifetime。年费为首推。家庭共享:P0 跟随 App Store 默认;若苹果把终身标成非消耗,需在审核备注里写清恢复购买路径。
安卓 P1 再用微信/支付宝,账号体系到 P1 才上「Apple 登录 / 手机号」做跨端恢复。P0 换机:打开 App → 恢复购买。
6.8 隐私、日志、合规
数据 | 处理 |
|---|---|
击键 | 不上行、不落盘 |
生成请求文本 | 点生成才上传;服务端默认存 7 天用于安全抽检,到期删除或哈希;不做推荐训练对外卖 |
收据、设备号 | 用于会员;不与通讯录关联 |
崩溃日志 | 可用国内崩溃收集,关闭键盘扩展里的第三方广告 SDK |
上架并行件(不在本文件展开流程,但是发布门):软著、App 备案、生成合成类算法备案、隐私政策写明完全访问用途、生成内容按要求做 AI 标识。P0 可先上 App Store,安卓商店等备案截图。
6.9 可观测与测试
客户端埋点只记状态,不记原文:引导每步完成、完全访问开关、生成开始/成功/失败原因码、上屏、付费页曝光/成交。网关指标:QPS、TTFT、P95、扣次成功率、filtered 比例、上游错误、单次成本。
测试最低集:
- 扩展 UI 测试:无完全访问打字;有权限生成;额度 0。
- 真机:微信、备忘录、系统短信、Safari 输入框。
- 内存:反复切键盘 50 次,无泄漏到被杀。
- 安全回归:固定 30 条攻击句。
- IAP 沙盒:购买、恢复、过期(月费)。
7. 90 天怎么切开
周 | 交付 | 人 |
|---|---|---|
1–2 | 工程骨架:App + 扩展 + App Group + 假数据生成 3 条上屏;引导能跳系统设置 | iOS |
3–5 | 网关 bootstrap / me / stream;接一家模型;安全预检;额度预扣 | 后端 + iOS |
6–7 | 火候/场景/人设调通;提示词抽检;超时与失败回滚 | 后端 + 产品 |
8–9 | StoreKit 2、会员页、键盘锁态跳转、隐私文案 | iOS |
10–11 | 真机打磨、内存、审核材料、备案材料并行 | 全员 |
12 | 提审;修拒审;TestFlight 给 10 个目标用户走完第一次上屏 | 全员 |
P1 不穿插进这 90 天,除非 P0 提审被 4.4.1 卡住需要补「无网络也能用」的打字体验。
8. 开放问题
问题 | 影响 | 谁在何时定 |
|---|---|---|
最低系统用 iOS 16 还是 15 | 15 多覆盖、16 少坑(StoreKit 2 / 并发) | 开工第 1 周,iOS 负责人 |
密码框检测 API 在目标系统是否够用 | 不够则只能按 keyboardType 启发式隐藏帮你回 | 第 2 周真机验证 |
模型厂商与备案号 | 决定网关合同和上架材料 | 第 3 周前 |
App Attest 是否进 P0 | 防刷额度;实现成本 | 第 3 周,可降级为设备 UUID |
微信对自定义键盘 insertText 的机型差异 | 失败则走复制粘贴兜底,体验下降 | 第 6 周真机矩阵 |
算法备案周期 | 安卓商店;iOS 先上的合规口径 | 与开发并行,法务/运营 |
本文件不批准预算,也不替代算法备案材料。P0 验收以「真机在微信里完成一次上屏 + 沙盒买通年费」为发布门。截图 OCR 和安卓在 P0 发布后再开子页。
