# 本地表情试演
打开同目录 `index.html`,使用已有 8 种候选立绘观看真实工作回复的演出。无需服务器、模型或 API。页面支持逐字模拟流式、暂停、按原插件分段翻页、切换发生点回看、粘贴新回复、深浅背景和导出判定记录。
本页是独立试演,与正式 GalGame 视图共用 expressionDirector 本地规则;2026-10-18 已接入正式客户端的可见文字回调,支持设置开关、思考差分与流式结算去重。工作阶段由真实状态驱动,工具执行专用差分尚未制作,本页不伪造该状态。
## 构建与验证
在插件根目录、使用本项目 Node 24 运行:
```powershell
node scripts/build-expression-preview.mjs
node --test test/expression.test.mjs test/expression-preview.test.mjs
```
页面内嵌实际 `src/client/expressionDirector.ts` 和 `src/client/adapter.ts`,并非另一套模拟规则。Markdown 展示采用试验页的轻量安全渲染,正式接入仍用现有 DialogueBox。`sample-trace.json` 是逐字输入原始示例的实际切换记录。
本次样本:2569 字,实际分为 10 个显示单元,切换轨迹为惊讶 → 平静 → 开心 → 平静。51 项规则/流式时序/离线试演 DOM 检查、23 项正式客户端交互检查和 13 项 bundle 冒烟检查通过,分类器/播放缓存/adapter 的 TypeScript 检查通过。浏览器自动化的 URL 安全策略此前拦截了 file:// 访问,因此未进行浏览器视觉验收;DOM 检查不等于实际观感验收。
## 选择与保持
1. 表达功能识别:解释、汇报、操作说明通常用平静;明确思索可用思考。
2. 短语和自身动作加权;没有线索返回 keep,不强行选择情绪。
3. 代码、链接、引述内容(包括未闭合的流式片段)遮蔽。讨论表情、部分第三人称、否定/条件语境排除。
4. 分数至少 4,领先第二名至少 2 才选择。分数是启发式权重,不是模型置信概率。
5. 只看当前可见文字,在短句结束或段落结束时判定,显示不等待。
6. 一段最多一次情绪切换,进入工作说明可先回到平静。两个无情绪片段结束后也回到平静。
7. 稳定 unitKey + 相同文本重复结算不重放;正式接入需以真实消息身份关联 partial 与 settled,不能直接混用现有 partial-key / seq-key。
## 当前边界
- 这是规则试验,不是通用中文意图理解。隐含心虚、反讽、复杂否定、未覆盖的第三人称姓名可能漏判或误判。
- 一个长段落中的多次情绪转折暂不演出,优先稳定。
- 样本测试只验证所列文本和时序,不能证明日常会话的整体准确率。请粘贴其他真实回复检验,并导出错判位置作后续修正依据。
- 现有候选素材仍有边缘杂点和尺寸差异,未据此宣称正式切换对齐已验收。
- 原文作为本地试验夹具保留,不执行其中的命令,不加载其外链。