文本范围与已接受段落
UnimeType 如何选择请求文本、保留结构,以及处理转换后追加的文字。
UnimeType 区分三个对象:
- **捕获文本:**从宿主或本地输入缓冲读取的文本。
- **请求文本:**经过本地保护处理后发送给模型的正文。
- **替换文本:**保留前缀 + 模型输出 + 保留后缀。
捕获顺序
Convert
- 使用非空选区。Convert 会把外层空白排除在请求和替换范围之外,但保留选中的 结构标记。
- 在 Terminal、Ghostty、VS Code 或 VS Code Insiders 中,如果光标没有选区且当前 本地输入缓冲可用,优先使用该缓冲。
- 否则读取光标所在的完整段落。
- 如果段落为空或无法读取,使用当前输入缓冲。
- 如果没有可用来源,显示没有可转换内容。
Polish 与 Explain
- 使用精确的非空选区,包括外层空白。
- 否则捕获光标所在句子。句子分隔符是
。!?.!?和换行。 - 如果无法读取句子,使用当前输入缓冲。
段落与结构边界
硬换行定义段落边界;界面软换行不定义新段落。边界换行永远不属于自动替换范围。
自动 Convert 捕获会保留外层空白,并把以下结构前缀排除在请求正文之外:
##等 Markdown 标题>等引用- 有序和无序列表标记
[ ]、[x]等任务框
Convert 只会把明确选区的外层空白排除,不会剥离选中的结构前缀。Polish 和 Explain 保持明确选区完全不变,包括外层空白和结构前缀。
已接受段落与追加文字
段落替换通过验证后,UnimeType 会记住结果文本、起始位置和宿主客户端。如果同一 段落仍以已接受文本开头,而用户又追加了文字,下一次 Convert 只发送新后缀,并把 已接受前缀末尾最多 100 个字符作为只读上下文。
如果当前段落不再以已接受文本开头,UnimeType 会重新发送完整段落正文。如果只能 通过本地缓冲验证新输入的后缀,替换只删除并改写该后缀,宿主中的已接受前缀保持 不变。
输入缓冲失效条件
切换客户端、在操作菜单外点击、换行、导航或焦点按键、Command/Control 编辑命令、 Option-Backspace、无法跟踪的按键、输入法停用,以及已完成或内容未变化的操作,都会 清空本地缓冲。普通 Backspace 只删除缓冲末尾一个字符。
替换前,UnimeType 会确认宿主范围或输入缓冲版本仍与捕获时一致。不一致时显示 文本已变化并阻止替换。