背景
当前 OpenLess 每次 polish 调用都是「无记忆、无个性」的:同一个用户、同一个产品语境,每次都从零开始让 LLM 理解。词汇表已经存了用户的术语,但用词偏好、句长习惯、收尾风格、敏感词回避这些更深层特征没有被利用。
目标
让 polish 输出在无人工调教的情况下,逐次趋近用户的"自然写法":
- 风格指纹:从历史
DictationSession.finalText 中归纳几条用户高频特征(句长 / 标点偏好 / 是否爱用句末助词 / 列表风格 / 中英混排习惯),作为 system prompt 后缀附加到 polish 请求
- 跨会话词汇增强:词汇表已有,但只是机械替换;扩展为「正确写法 + 上下文示例」,命中后 LLM 知道为什么这么写
- 场景模板(通用性):识别口述场景(IM 短句 / 邮件 / 代码注释 / 会议纪要),自动选择更贴合的 polish 取向
实现路径(建议)
polish.rs
└─ user_profile.rs (新增)
├─ 周期性从 history.json 抽样最近 N 条 finalText
├─ 用本地启发式 + 一次性 LLM 抽取(可选)生成 ~150 字的 "USER_STYLE_FINGERPRINT"
└─ 缓存到 preferences.json / user_style.json,每 50 段 dictation 重算一次
└─ compose_system_prompt
├─ base prompt
├─ + hotwords block (现有)
├─ + USER_STYLE_FINGERPRINT (新增,≤200 字,避免吃光上下文)
└─ + scene hint (新增,根据 active app bundle 推断)
开放设计问题
- 隐私: 风格指纹归纳是否走云端 LLM?建议仅在用户开启 polish 通道的同一 provider 上跑,且只跑一次/批量
- 冷启动: 历史 < 20 条时跳过指纹注入,避免基于噪声的过拟合
- 可回退: 指纹是否会拉低输出质量?在设置中给一个总开关 + 一键清除指纹缓存
- 场景判定: 用 active app bundle id 还是 polish 前快速 LLM 判定?前者更便宜也够用 80%
验收标准(可分步交付)
非目标
- 模型微调 / LoRA:成本与产品定位不符
- 多 profile 切换(工作风格 vs 个人风格):先把单一指纹跑通
关联
背景
当前 OpenLess 每次 polish 调用都是「无记忆、无个性」的:同一个用户、同一个产品语境,每次都从零开始让 LLM 理解。词汇表已经存了用户的术语,但用词偏好、句长习惯、收尾风格、敏感词回避这些更深层特征没有被利用。
目标
让 polish 输出在无人工调教的情况下,逐次趋近用户的"自然写法":
DictationSession.finalText中归纳几条用户高频特征(句长 / 标点偏好 / 是否爱用句末助词 / 列表风格 / 中英混排习惯),作为 system prompt 后缀附加到 polish 请求实现路径(建议)
开放设计问题
验收标准(可分步交付)
user_style.jsonschema + 增量更新机制compose_system_prompt接受指纹片段非目标
关联