dsh-input-assistant 0.0.0-stage → 0.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/CHANGELOG.md +83 -0
  2. package/LICENSE +21 -0
  3. package/README.en.md +100 -0
  4. package/README.md +215 -3
  5. package/cordis.patch.yml +3 -0
  6. package/docs/CHANGELOG-0.1.2.md +102 -0
  7. package/docs/evaluation.md +111 -0
  8. package/docs/images/dark.png +0 -0
  9. package/docs/images/light.png +0 -0
  10. package/docs/images/optimize.png +0 -0
  11. package/docs/references.md +39 -0
  12. package/docs/smoke-comparison.md +37 -0
  13. package/docs/validation.md +180 -0
  14. package/lib/browser/components.d.ts +11 -0
  15. package/lib/browser/controller.d.ts +187 -0
  16. package/lib/browser/dom.d.ts +29 -0
  17. package/lib/browser/floating.d.ts +21 -0
  18. package/lib/browser/index.d.ts +6 -0
  19. package/lib/browser/public.d.ts +2 -0
  20. package/lib/browser/runtime.d.ts +55 -0
  21. package/lib/browser/settings.d.ts +8 -0
  22. package/lib/browser/styles.d.ts +1 -0
  23. package/lib/client.js +2646 -0
  24. package/lib/client.meta.json +274 -0
  25. package/lib/core/config.d.ts +17 -0
  26. package/lib/core/context.d.ts +4 -0
  27. package/lib/core/diff.d.ts +6 -0
  28. package/lib/core/generation.d.ts +15 -0
  29. package/lib/core/index.d.ts +9 -0
  30. package/lib/core/models.d.ts +15 -0
  31. package/lib/core/protection.d.ts +18 -0
  32. package/lib/core/scheduler.d.ts +10 -0
  33. package/lib/core/snapshot.d.ts +2 -0
  34. package/lib/core/types.d.ts +92 -0
  35. package/lib/core.js +750 -0
  36. package/lib/core.js.map +7 -0
  37. package/lib/host/rpc.d.ts +31 -0
  38. package/lib/host/runtime.d.ts +28 -0
  39. package/lib/host/storage.d.ts +62 -0
  40. package/lib/host/transcript.d.ts +19 -0
  41. package/lib/index.d.ts +66 -0
  42. package/lib/index.js +1164 -0
  43. package/lib/index.js.map +7 -0
  44. package/package.json +128 -3
package/CHANGELOG.md ADDED
@@ -0,0 +1,83 @@
1
+ # 更新日志
2
+
3
+ 本文件记录面向用户的变更。完整的技术修正记录见 [`docs/CHANGELOG-0.1.2.md`](docs/CHANGELOG-0.1.2.md)。
4
+
5
+ ## [0.1.4] - 2026-11-10
6
+
7
+ - 整合定制 0.1.4 的独立预测按钮、三档预测详略度、三种设置预设和界面样式,保留现有 core/host/browser 架构。
8
+ - 详略度始终遵守显式长度上限;详尽预测与续写统一支持多行,并通过可滚动候选面板完整展示。
9
+ - 手动预测复用取消、快照和重试路径,编辑或 IME 中断后不再卡住操作;后台页面不触发建议。
10
+ - 暂存支持「取消清空」,保存期间取消、编辑、修改设置或切换模型均保留当前输入;删除与撤销不提供误导的取消入口。
11
+ - 保留原文路径引号,拒绝清理后空文本及不完整 Unicode;固定辅助模型、跨客户端取消、存储失败重试和严格声明消费均补齐回归。
12
+ - 修复样式过渡造成的预览焦点丢失,以及隐藏滑块阻止合法精确数值保存的问题。
13
+ - 新增直接加载实际安装包的 Edge 回归;严格类型验证隔离源码解析,并用负向控制验证检查有效性。
14
+
15
+ - 修复中文说明紧贴文件名时的漏保护与过度保护,保留线性扫描性能及明确引用路径的完整性。
16
+ - 撤销备份跨会话切换保留原截止时间;恢复失败目标独立保留,不被后续删除覆盖,提供复制和重试。
17
+ - 增加单次手动建议与显式重试,展示失败、弃权、限流和暂停状态,沿用取消、快照及最小间隔约束。
18
+ - 草稿卡增加复制;设置页增加分组辅助模型选择、跟随模式、目录刷新及高级手填,不改变主会话模型。
19
+ - 页面隐藏停止自动建议;请求 ID 增加随机前缀;预览自动失效时恢复原面板中的键盘焦点。
20
+ - 统一 Unicode 字符预算,修复 emoji 长稿被不同层使用不同单位拒绝的问题。
21
+ - 修复 Node ESM 声明解析,安装包验证覆盖 Bundler、NodeNext、Node16;CI 增加 Node 22.19 下限并避免 tag 双跑完整验证。
22
+
23
+ - 修复固定辅助模型保存后丢失、首次存储打开失败无法重试。
24
+ - 文本保护改为候选扫描,补齐常见 dotfile、Windows 相对路径、空格路径、含括号 URL;保留保护标记完整性校验。
25
+ - 区分续写临时限流与模型弃权,按宿主期限恢复;下一句预测失败与切换模型后可恢复。
26
+ - 优化先展示差异,经明确采纳才写入输入框;提供取消、Esc 放弃、原生撤销及显式还原。
27
+ - 菜单集中快捷操作,完整配置放在全局设置页;补齐键盘焦点、灰字可访问提示、设置失败重载与草稿删除撤销。
28
+ - 后台页面降低状态轮询频率,状态未变时减少渲染,缓存差异计算。
29
+ - 修复公开 core 入口的 TypeScript 声明映射;包校验实际检查打包产物与消费者类型。
30
+ - 发布依赖完整 CI 成功,复用已验证的同一份安装包,校验 tag 与版本。
31
+
32
+ 本次工程修复不改变质量评测结论:60 条真实模型评测和独立语义标注仍未完成。
33
+
34
+ ## [0.1.3] - 2026-10-23
35
+
36
+ 兼容性版本,不改变功能。
37
+
38
+ ### 兼容性
39
+
40
+ - **支持 DSH `0.2.1-rc.3`**。此前 `engines.dsh` 与全部 `@deepseek-ai/*` 对等依赖精确锁定 `0.2.1-rc.2`,DSH 升级到 rc.3 后会触发"不兼容,可能导致崩溃或数据丢失"警告并要求卸载。现改为经全量测试验证的声明范围 `>=0.2.1-rc.2 <0.3.0-0`,rc.2 与 rc.3 均可直接安装,后续 `0.2.1-rc.x` 补丁无需再发版。
41
+ - 开发依赖与主题测试基准升级到 `0.2.1-rc.3` 并去重 `dsh-typert-protocol` 实例;121 条测试(含真实 Edge 渲染)在 rc.3 基准上全部通过。
42
+ - 无功能、配置与存储格式变化;从 0.1.2 升级只需覆盖安装并重启 DSH。
43
+
44
+ ## [0.1.2] - 2026-10-23
45
+
46
+ 缺陷修正版本,不新增用户可见功能。测试从 105 条增至 121 条。
47
+
48
+ ### 修复
49
+
50
+ - **相对路径与裸文件名不再被模型改写**。此前 `修改 package.json 里的 scripts`、`看看 src/index.ts` 这类常见草稿完全不受保护;`src/core/generation.ts` 只保护后半段,模型把 `src` 改成 `lib` 会静默产生错误路径。现在带扩展名的相对路径、深层无扩展名路径、已知扩展名的裸文件名都会被锁定。
51
+ - **一次网络抖动不再中断正在进行的优化**。此前状态轮询失败会 abort 在途请求,且没有任何提示,用户的操作无声消失。
52
+ - **`debounceMs` 大于 900ms 时续写不再失效**。此前任何超过 900ms 的停顿设置都会让续写定时器被反复重置、永远不触发;设置页允许到 5000ms。
53
+ - **存储中的未知配置键不再锁死插件**。版本漂移后旧记录里的未知键会让设置读写全部失败且无法自愈;现在读取时忽略未知键、非法字段逐项回退,下次保存自动洗净。
54
+ - **中文差异对比粒度细化到词**。此前 `请解释` → `请说明` 会整段删除再插入,现在只标出实际改动的字词。
55
+ - 长会话中的两个内部集合加上限,避免内存无界增长。
56
+
57
+ ### 文档
58
+
59
+ - 新增 `docs/CHANGELOG-0.1.2.md`,逐条记录复现步骤、根因与回归用例。
60
+ - 补充 `CONTRIBUTING.md`、`SECURITY.md`。
61
+
62
+ ## [0.1.1] - 2026-10-22
63
+
64
+ 首个对外发布版本。
65
+
66
+ ### 功能
67
+
68
+ - **提示词优化**:整稿或选区改写,三档强度(轻/标准/深度),改动差异对比,一键撤销。
69
+ - **下一句预测**:回复完成后预测用户可能的下一句,以灰字提示,Tab 采纳。
70
+ - **输入续写**:根据当前草稿预测后续内容,防抖与最小间隔可配。
71
+ - **草稿暂存**:当前会话最多保留 3 份草稿,显式恢复。
72
+ - 设置页:四模块独立开关、三档强度、高级参数。
73
+
74
+ ### 保护机制
75
+
76
+ 代码块、行内代码、URL、盘符绝对路径、用户锁定片段在改写中保持不变;占位符被篡改时拒绝结果并保留原稿。
77
+
78
+ ### 已知边界
79
+
80
+ - 60 条固定合成质量集尚未完成全量真实模型评测与独立人工标注,状态为 `not_evaluated`。
81
+ - 6 次真实模型小样本对照只能说明接线可用,不足以证明效果领先。
82
+ - 中文 IME 候选组合、附件/引用组合、非 Windows x64 平台未验证。
83
+ - 目标 DSH 版本锁定 `0.2.1-rc.2`。
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 dsh-input-assistant contributors
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/README.en.md ADDED
@@ -0,0 +1,100 @@
1
+ # DSH Input Assistant
2
+
3
+ [简体中文](README.md) | English
4
+
5
+ An input assistant for [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness): rewrite drafts, suggest the next message or a continuation, and save drafts for later. Suggestions are never sent automatically.
6
+
7
+ The current source version is **0.1.4**. Build this checkout to install it locally, and check [Releases](https://github.com/Somnus678/dsh-input-assistant/releases) for published GitHub packages.
8
+
9
+ ![Optimization preview](docs/images/optimize.png)
10
+
11
+ Screenshots use the production components and host theme in a local browser fixture with simulated model output.
12
+
13
+ ## Features
14
+
15
+ - **Prompt optimization:** rewrite the whole draft or a selection with light, standard, or deep intensity. Review the diff and explicitly accept it; undo or restore the original afterward.
16
+ - **Predictions and completion:** show a candidate after a completed response or continue the current draft. Press Tab to accept, or Esc to dismiss. The independent Predict button also works when automatic suggestions are disabled; failed requests can be retried explicitly.
17
+ - **Detail and presets:** concise, standard, and detailed suggestions respect the configured character limit. Detailed suggestions can contain multiple lines and use a scrollable panel. Presets change the form and take effect only after saving.
18
+ - **Drafts:** save up to three drafts per session, then explicitly restore, append, copy, or delete them. Deletion has a ten-second undo window. During saving, Cancel clear keeps the editor contents while the save finishes.
19
+ - **Auxiliary model:** choose a model from the host catalog or enter provider and model IDs manually. This affects the plugin's calls only; it does not switch the main conversation model.
20
+
21
+ Recognized code, URLs, paths, and explicitly selected fragments are protected during rewriting. Altered or missing protection markers cause the result to be rejected. Automatic recognition and marker preservation do not guarantee semantic correctness: review the preview, and quote or manually protect ambiguous paths and filenames.
22
+
23
+ ## Requirements and installation
24
+
25
+ Node.js **22.19 or later** and DeepSeek Harness are required. The declared DSH range is `>=0.2.1-rc.2 <0.3.0-0`; this build's dependency tests use `0.2.1-rc.3`. The complete native host and every version in that range have not been tested.
26
+
27
+ Build from this checkout:
28
+
29
+ ```powershell
30
+ pnpm install --frozen-lockfile
31
+ pnpm build
32
+ pnpm pack --pack-destination dist
33
+ ```
34
+
35
+ Install the local package into a Web profile:
36
+
37
+ ```powershell
38
+ dsh --version
39
+ dsh plugin --profile web add (Resolve-Path './dist/dsh-input-assistant-0.1.4.tgz').Path
40
+ dsh --profile web --dump-config
41
+ dsh --profile web
42
+ ```
43
+
44
+ For the Windows desktop profile, use the CLI bundled with the desktop application:
45
+
46
+ ```powershell
47
+ $dsh = Join-Path $env:LOCALAPPDATA 'Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd'
48
+ & $dsh plugin --profile desktop add (Resolve-Path './dist/dsh-input-assistant-0.1.4.tgz').Path
49
+ ```
50
+
51
+ Completely quit and restart the relevant DSH instance after installation or upgrade. To remove the Web plugin, run `dsh plugin --profile web remove dsh-input-assistant` and restart. Uninstalling does not remove saved plugin settings or drafts from host storage.
52
+
53
+ If another archive was previously installed under the same 0.1.4 version, verify its source and SHA256 and check the plugin files actually loaded after restart. A same-version cache can reuse old files; the version number alone does not confirm that the new build was loaded.
54
+
55
+ ## Getting started and settings
56
+
57
+ After restarting, use **Optimize** or **Predict** next to the input, and open the assistant menu for draft operations. Full settings are under **Settings → Input Assistant** and apply to all conversations. Labels in the current interface are in Chinese.
58
+
59
+ Automatic next-message prediction and completion are **enabled by default** and invoke the configured model. Disable both in settings if you only want explicit requests. Optimization and draft saving are also enabled by default.
60
+
61
+ | Setting | Default | Range / choices |
62
+ |---|---:|---|
63
+ | Optimization intensity | Standard | Light, standard, deep |
64
+ | Prediction detail | Standard | Concise, standard, detailed |
65
+ | Display | Ghost | Ghost text or panel; detailed mode uses the panel |
66
+ | Next-message limit | 120 | 20–1000 Unicode characters |
67
+ | Completion limit | 80 | 10–500 Unicode characters |
68
+ | Completion debounce | 600 ms | 200–5000 ms |
69
+ | Minimum completion interval | 2000 ms | 500–30000 ms |
70
+ | Auxiliary model | Follow composer | Catalog selection or provider/model pair |
71
+
72
+ Manual suggestions require an idle, visible, connected plain-text composer without attachments or references, with the caret at the end. The host's minimum interval still applies; a throttled manual request is delayed at most once. Hiding the page suppresses automatic suggestions. During draft saving, edits, model changes, or settings changes preserve the current editor contents and save only the original snapshot.
73
+
74
+ ## Privacy and limitations
75
+
76
+ The plugin does not collect telemetry. Drafts and settings are stored by DSH; model calls go through the provider configured in the host. Draft text and relevant context are sent to that provider for optimization and suggestions. The plugin does not store API keys. See [SECURITY.md](SECURITY.md) for reporting and privacy details.
77
+
78
+ The 60-case model quality evaluation remains `not_evaluated`; a six-call historical smoke comparison does not establish comparative quality. Native operating-system IME composition, full desktop and other-plugin combinations, and non-Windows platforms have not been verified for this build. Consult [validation](docs/validation.md) and [the small model comparison](docs/smoke-comparison.md) for the actual evidence and its limits.
79
+
80
+ ## Development and verification
81
+
82
+ ```powershell
83
+ pnpm install --frozen-lockfile
84
+ pnpm typecheck
85
+ pnpm build
86
+ pnpm pack --pack-destination dist
87
+ pnpm test # full suite, including Edge theme tests
88
+ pnpm test:package # strict consumers and actual archive
89
+ pnpm test:web # source components in Edge
90
+ pnpm test:package:web # archive client/core in Edge, local RPC fixture
91
+ pnpm eval:validate
92
+ ```
93
+
94
+ Edge browser tests require Microsoft Edge. The package browser fixture uses local model and RPC replacements; the official Loader/Gateway tests cover the host integration separately. Linux CI excludes Edge-only tests. See [CONTRIBUTING.md](CONTRIBUTING.md) for the contribution workflow and [CHANGELOG.md](CHANGELOG.md) for release notes.
95
+
96
+ Pushing a `v*` tag triggers the npm publishing workflow after CI and requires the repository's `NPM_TOKEN`. It does not create a GitHub Release; create one separately and attach the validated archive if GitHub downloads are desired. Confirm that the tag, package version, and archive match and that the version has not already been published.
97
+
98
+ ## License
99
+
100
+ [MIT](LICENSE). Third-party dependencies and reference implementations retain their own licenses; see [references](docs/references.md).
package/README.md CHANGED
@@ -1,3 +1,215 @@
1
- # Temporary Holding Version
2
-
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
1
+ # DSH 输入助手
2
+
3
+ 简体中文 | [English](README.en.md)
4
+
5
+ [![CI](https://github.com/Somnus678/dsh-input-assistant/actions/workflows/ci.yml/badge.svg)](https://github.com/Somnus678/dsh-input-assistant/actions/workflows/ci.yml)
6
+ [![release](https://img.shields.io/github/v/release/Somnus678/dsh-input-assistant)](https://github.com/Somnus678/dsh-input-assistant/releases)
7
+ [![license](https://img.shields.io/badge/license-MIT-green)](LICENSE)
8
+ [![dsh](https://img.shields.io/badge/DSH-0.2.1--rc.2-purple)](https://github.com/deepseek-ai/deepseek-harness)
9
+ [![tests](https://img.shields.io/badge/tests-203%20passed-brightgreen)](docs/validation.md)
10
+
11
+ [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) 的输入框增强插件:**提示词优化**、**下一句预测**、**输入续写**、**草稿暂存**。
12
+
13
+ 当前源码版本为 **0.1.4**,包含预测详略度、预设、独立预测按钮、预览采纳、手动重试、草稿复制及辅助模型选择。可从当前源码构建并安装本地 `dist/dsh-input-assistant-0.1.4.tgz`;公开发布情况请参见 [Releases](https://github.com/Somnus678/dsh-input-assistant/releases)。
14
+
15
+ ![优化界面](docs/images/optimize.png)
16
+
17
+ 截图来自本地浏览器夹具,使用正式组件、宿主主题及模拟模型输出。
18
+
19
+ ## 功能
20
+
21
+ | 功能 | 说明 |
22
+ |---|---|
23
+ | **提示词优化** | 把草稿或选中文字改写成更准确、可发送的表达。三档强度(轻/标准/深度),先预览差异,采纳后写入,可还原。 |
24
+ | **下一句预测** | 回复完成后预测你接下来可能说的话,以灰字提示,Tab 采纳,不发送。 |
25
+ | **输入续写** | 根据当前草稿预测后续内容,停顿时间与最小间隔可调。 |
26
+ | **手动建议与重试** | 点击独立「预测」按钮生成一次;自动建议关闭时仍可使用,失败后可明确重试。 |
27
+ | **详略度与预设** | 简明、标准、详尽三档;详尽允许多行,始终遵守长度上限。三种预设经保存后生效。 |
28
+ | **草稿暂存** | 当前会话最多保留 3 份草稿,点击“暂存并清空”先保存再清空,显式恢复;删除后 10 秒内可撤销。 |
29
+
30
+ 深色与浅色主题均已适配:
31
+
32
+ | 浅色 | 深色 |
33
+ |---|---|
34
+ | ![浅色](docs/images/light.png) | ![深色](docs/images/dark.png) |
35
+
36
+ ### 保护机制
37
+
38
+ 改写时会识别并锁定以下内容:
39
+
40
+ - 代码块(``` 和 ~~~)与行内代码
41
+ - URL(含平衡括号)与盘符绝对路径(`C:\...`)
42
+ - 正斜线或反斜线相对路径与常见文件名(`src/core/generation.ts`、`src\index.ts`、`package.json`、`.env`、`.gitignore`)
43
+ - 你显式锁定的片段
44
+
45
+ 占位符被模型篡改、丢失或重复时,插件拒绝该结果并保留你的原稿。
46
+
47
+ 带空格的 Windows 路径支持引号边界,未加引号时会按文件名、标点或行尾识别。目录名和后续自然语言存在歧义时,请用引号、反引号或手动锁定,避免依赖自动识别。片段完整不等于语义不变,采纳前仍需审阅。
48
+
49
+ 中文紧贴普通文件名时会切出文件本身,例如“请修改package.json中的scripts”。未引用的纯中文文件名与紧贴的中文说明仍可能存在歧义;混合中英文名称请使用引号、反引号或手动锁定。
50
+
51
+ ### 失败不丢稿
52
+
53
+ 优化、续写、预测在超时、取消、网络失败、模型空输出时都保留原稿,只给出提示。一次瞬时状态轮询失败不会中断正在进行的手动优化。
54
+
55
+ ## 安装
56
+
57
+ 需要 **Node.js >= 22.19** 和 **DSH `0.2.1-rc.2` 或 `0.2.1-rc.3`**。安装预构建 `.tgz` 不需要在本地编译 TypeScript。
58
+
59
+ 构建本版后,将以下路径指向本地包并安装到 Web profile:
60
+
61
+ ```powershell
62
+ dsh --version # 确认 0.2.1-rc.2 或 rc.3
63
+ dsh plugin --profile web add (Resolve-Path './dist/dsh-input-assistant-0.1.4.tgz').Path
64
+ dsh --profile web --dump-config # 应看到 dsh-input-assistant 层
65
+ dsh --profile web
66
+ ```
67
+
68
+ 已发布的 GitHub 安装包可从 [Releases](https://github.com/Somnus678/dsh-input-assistant/releases) 下载,请核对版本号和文件来源。
69
+
70
+ 官方桌面端使用自己的 `desktop` profile(默认 Windows 安装位置):
71
+
72
+ ```powershell
73
+ $dsh = Join-Path $env:LOCALAPPDATA 'Programs\DeepSeek Harness\resources\runtime\cli\bin\dsh.cmd'
74
+ & $dsh --version
75
+ & $dsh plugin --profile desktop add (Resolve-Path './dist/dsh-input-assistant-0.1.4.tgz').Path
76
+ ```
77
+
78
+ 安装或升级后**完全退出并重新打开 DSH**,插件才会加载。
79
+
80
+ 如果曾安装其他内容的同名 0.1.4 包,请先核对安装包的来源与 SHA256,并在重启后核对实际加载的插件文件。同版本缓存可能复用旧文件;仅看到版本号相同不能证明已更新。
81
+
82
+ ### 卸载
83
+
84
+ ```powershell
85
+ dsh plugin --profile web remove dsh-input-assistant
86
+ ```
87
+
88
+ 同样需要重启对应实例。卸载**不会**清除插件保存的草稿与设置(存在宿主私有 storage 中)。
89
+
90
+ ### 从源码构建
91
+
92
+ ```powershell
93
+ git clone https://github.com/Somnus678/dsh-input-assistant.git
94
+ cd dsh-input-assistant
95
+ pnpm install
96
+ pnpm build
97
+ pnpm pack --pack-destination dist
98
+ ```
99
+
100
+ ## 快速上手
101
+
102
+ 1. 安装后重启 DSH,输入框右侧出现**「优化」「预测」按钮**和快捷菜单。
103
+ 2. 在输入框写入草稿,点「优化」,查看差异后决定**采纳优化**或**保留原文**;等待期间可取消。
104
+ 3. 左下角账号菜单 → **设置 → 输入助手**,可分别开关四个模块、调整强度与高级参数。
105
+
106
+ > **默认会调用模型。** `下一句预测` 和 `输入续写` 默认开启,会在你输入时自动发起请求。若只想手动使用优化功能或控制成本,请先在设置中关闭这两项。
107
+
108
+ ## 设置项
109
+
110
+ | 设置 | 默认 | 范围 | 说明 |
111
+ |---|---|---|---|
112
+ | 提示词优化 | 开 | — | 是否启用优化 |
113
+ | 草稿暂存 | 开 | — | 是否启用“暂存并清空”与恢复 |
114
+ | 下一句预测 | 开 | — | 回复后是否预测下一句 |
115
+ | 输入续写 | 开 | — | 输入时是否预测后续内容 |
116
+ | 优化强度 | 标准 | 轻/标准/深度 | 改写幅度 |
117
+ | 预测详略度 | 标准 | 简明/标准/详尽 | 不会自动提高长度上限;详尽使用可滚动的候选面板 |
118
+ | 显示方式 | ghost | ghost/panel | 灰字或面板 |
119
+ | 下一句长度上限 | 120 | 20–1000 | Unicode 字符上限 |
120
+ | 续写长度上限 | 80 | 10–500 | Unicode 字符上限 |
121
+ | 续写停顿 `debounceMs` | 600 | 200–5000 | 停止输入多久后触发 |
122
+ | 最小间隔 `minIntervalMs` | 2000 | 500–30000 | 两次续写请求的最小间隔 |
123
+ | 固定辅助模型 | 跟随输入框 | — | 可从宿主目录选择;高级选项支持手填 provider/model;留空跟随输入框模型 |
124
+
125
+ ### 各功能怎么用
126
+
127
+ **优化整稿或选区**:输入草稿后点「优化」。原稿保持不变,结果以差异视图展示;点「采纳优化」才写入输入框,点「保留原文」或按 `Esc` 放弃预览。采纳后可在菜单点「还原」,或按一次 `Ctrl+Z` 恢复原文。
128
+
129
+ **下一句预测与输入续写**:预测结果以**灰字**或候选面板显示。详尽模式统一使用可滚动的面板,完整展示多行候选。按 `Tab` 采纳,按 `Esc` 或继续输入忽略。采纳**不会**发送消息。
130
+
131
+ **手动生成与重试**:点击「预测」或菜单中的「生成建议」,空稿时预测下一句,有草稿时续写。自动功能关闭时仍可使用,失败或正常弃权后可明确重试。输入框需为无附件、无引用的空闲纯文本,光标位于末尾。手动请求仍遵守宿主最小间隔;限流时最多延后重试一次,不会循环调用。页面隐藏会停止自动建议,重新可见后再判断是否触发。
132
+
133
+ **暂存长草稿**:在菜单点击「暂存并清空」,保存成功后才清空输入(最多 3 份)。可显式追加或替换恢复;切换会话、切换模型、断线重连后暂存仍在该会话下。删除或清空暂存后,可在 10 秒内撤销;撤销不会覆盖其他窗口新保存的草稿,容量不足时会提示先释放空间再重试。
134
+
135
+ 保存期间可点「取消清空」保留输入,已开始的保存仍会完成。保存中编辑草稿、切换模型或修改设置,也只保存原快照并保留当前输入。该按钮不用于取消删除或撤销等存储操作。
136
+
137
+ **预设档位**:「敏捷模式」「标准平衡」「节流省流」只修改设置表单,点击「保存设置」后才全局生效,不会立即生成。滑块用于快速调整,数值框支持范围内的精确整数,如 601 毫秒。
138
+
139
+ 最近一次删除的 10 秒撤销期限不会因切走会话再返回而改变。撤销失败的目标单独保留在当前插件运行内,后续删除不会覆盖该目标;可重试、复制或主动放弃。两批备份均恢复失败时,会先要求处理一批,避免继续删除覆盖备份。插件卸载或连接切换会释放这些内存备份。草稿卡和待恢复备份都支持复制,复制不受当前输入附件或引用限制。
140
+
141
+ 功能开关、显示方式、辅助模型和高级参数集中在 **设置 → 输入助手**,均为全局设置。快捷菜单只保留常用操作,并明确标注优化强度的全局作用范围。
142
+
143
+ 辅助模型选择只保存插件自己的路由,不切换主会话模型;目录部分失败或不支持目录接口时,可刷新或使用高级手动填写,已有选择会保留。输入、优化和暂存的字数预算均按 Unicode 码点统计。
144
+
145
+ ## 兼容性
146
+
147
+ | 项目 | 支持范围 |
148
+ |---|---|
149
+ | DSH | 声明 `>=0.2.1-rc.2 <0.3.0-0`;本轮测试依赖以 `0.2.1-rc.3` 为基准,完整宿主组合尚未验证 |
150
+ | Node.js | `>= 22.19` |
151
+ | 操作系统 | Windows x64(已验证);macOS/Linux 未验证 |
152
+ | 浏览器测试 | Microsoft Edge |
153
+
154
+ ## 已知边界
155
+
156
+ **这个插件没有完成完整的效果评测。** 请据此判断是否适合你的场景:
157
+
158
+ - 60 条固定合成质量集尚未跑完真实模型评测,也没有独立人工语义标注,状态为 `not_evaluated`。
159
+ - 6 次真实模型小样本对照只能说明链路可用(2,807 tokens),**不能证明效果优于同类工具**。
160
+ - 中文 IME 候选组合、附件/引用组合、完整官方 Web 组合、其他插件组合、非 Windows x64 平台均未验证。
161
+ - 声明允许 `0.2.1-rc.2` 至 `<0.3.0-0`;本版未对声明范围内每个宿主版本完成实机验证。
162
+
163
+ 详见 [验收记录](docs/validation.md) 与 [低用量真实模型试验](docs/smoke-comparison.md)。
164
+
165
+ ## 数据与隐私
166
+
167
+ - 不收集遥测,不上传使用数据。
168
+ - 草稿与设置存在宿主 DSH 的私有 storage。
169
+ - 模型调用走宿主已配置的提供商;插件不持有或记录 API key。
170
+ - 优化/预测/续写会把当前草稿与相关上下文发给模型提供商 —— 这是功能必需,请按你所用提供商的数据政策评估。
171
+
172
+ 详见 [安全策略](SECURITY.md)。
173
+
174
+ ## 开发
175
+
176
+ ```powershell
177
+ pnpm install
178
+ pnpm typecheck # 类型检查
179
+ pnpm test # 全量工程回归(含 Edge)
180
+ pnpm build # 构建 lib/
181
+ pnpm pack --pack-destination dist # 先生成当前版本归档
182
+ pnpm test:package # 校验打包产物(需先 pack)
183
+ pnpm test:web # 真实 Edge 回归
184
+ pnpm test:package:web # 直接加载实际 .tgz 的 client/core 做 Edge 回归
185
+ ```
186
+
187
+ 贡献前请阅读 [贡献指南](CONTRIBUTING.md)。技术细节见 [0.1.2 修正记录](docs/CHANGELOG-0.1.2.md)。
188
+
189
+ ### 持续集成
190
+
191
+ 每次 push 和 PR 都会在 GitHub Actions 上自动运行 [`.github/workflows/ci.yml`](.github/workflows/ci.yml):
192
+
193
+ | Job | 环境 | 内容 |
194
+ |---|---|---|
195
+ | `test-windows` | `windows-latest` | 全量工程测试 + 源码与实际安装包的 Edge 回归 + 构建可复现性校验 |
196
+ | `test-linux` | `ubuntu-latest` | Node 22.19 与 24.19 矩阵,排除 Edge 专属渲染测试,验证核心/宿主/控制器及包消费者 |
197
+ | `package` | `ubuntu-latest` | 打包内容审计:必需文件齐全,且不含研究资料、缓存或测试夹具 |
198
+
199
+ `test-windows` 是权威结果:主题测试、`scripts/smoke-web.mjs` 和 `scripts/smoke-package.mjs` 使用
200
+ `chromium.launch({ channel: 'msedge' })` 驱动真实 Microsoft Edge 渲染已发布的 DSH 主题,
201
+ 浏览器检查在无 Edge 的 Linux 上无法运行,因此覆盖由 Windows job 提供。
202
+
203
+ 本地想复现 Linux job:
204
+
205
+ ```powershell
206
+ pnpm vitest run --exclude 'tests/browser-theme.test.ts'
207
+ ```
208
+
209
+ 发布流程复用完整 CI,全部任务通过后才下载并发布其中已验证的同一份 `.tgz`,同时校验 tag 与包版本一致。
210
+
211
+ 推送 `v*` 标签会触发 npm 发布工作流,需要仓库配置 `NPM_TOKEN`;该工作流不会自动创建 GitHub Release。如需在 GitHub 提供下载,需在 CI 成功后另行创建 Release 并附上已验证的归档。发布前应确认版本号、标签和归档一致,且该版本尚未发布。
212
+
213
+ ## 许可证
214
+
215
+ [MIT](LICENSE)。第三方依赖与参考实现各自适用其原许可证,见 [公开参考与实现边界](docs/references.md)。
@@ -0,0 +1,3 @@
1
+ - insert:
2
+ - id: input-assistant
3
+ name: dsh-input-assistant
@@ -0,0 +1,102 @@
1
+ # 0.1.2 修正记录
2
+
3
+ 记录日期:2026 年 10 月 23 日(Asia/Shanghai)。
4
+
5
+ `0.1.2` 是 `0.1.1` 的缺陷修正版本,不新增用户可见功能。以下每条都先复现、再修复、再补回归用例。测试总数从 **105** 增至 **121**(12 个测试文件)。
6
+
7
+ ## 修正清单
8
+
9
+ ### 1. 相对路径与裸文件名不受保护(`src/core/protection.ts`)
10
+
11
+ **问题**:`0.1.1` 的路径保护正则只覆盖代码块、行内代码、URL、盘符绝对路径(`C:\…`、`D:/…`)和以 `./` `../` `/` 开头的路径。编码类草稿里最常见的裸相对路径完全不保护:
12
+
13
+ ```
14
+ "修改 package.json 里的 scripts" => []
15
+ "看看 src/index.ts 的实现" => []
16
+ "不要改 src/a.ts" => []
17
+ ```
18
+
19
+ 更严重的是**部分保护**造成静默改写。`src/core/generation.ts` 只匹配到 `/core/generation.ts`,前面的 `src` 裸露在外:
20
+
21
+ ```
22
+ 原稿 : 更新 src/core/generation.ts 的实现
23
+ masked: 更新 src⟪DSH_KEEP_0⟫ 的实现
24
+ 模型把 src 改成 lib → 恢复成 lib/core/generation.ts ← 不报错,路径已错
25
+ ```
26
+
27
+ **修复**:新增四条规则——带扩展名的相对路径、无扩展名的深层相对路径、带已知扩展名的裸文件名、已知的无扩展名工程文件(`LICENSE`、`Makefile` 等)。扩展名用**闭集**而非形状猜测,避免把 `e.g.` 这类普通缩写误判成文件。
28
+
29
+ **验证**:`tests/core.test.ts` 新增 3 条用例,覆盖 6 种路径形态、`e.g.`/`i.e.` 不误保护、以及"目录部分不得裸露"的回归。core 用例 25 → 28。
30
+
31
+ ### 2. 一次瞬时 status 轮询失败会静默杀死在途优化(`src/browser/controller.ts`)
32
+
33
+ **问题**:状态轮询每 900ms 一次。`refresh()` 的 `catch` 分支注释写着"失败的 status 读取不构成草稿/模型/回合变化的证据",但紧接着调用 `invalidate(false)`,而 `invalidate` 第一行就是 `cancelActive()`。实测:点"优化"→ 一次网络抖动 → 请求被 abort、按钮复位、**没有任何提示**,用户的操作无声消失。
34
+
35
+ **修复**:`invalidate` 增加 `cancelInFlight` 参数。瞬时 status 失败走 `invalidate(false, false)`:清掉自动建议缓存(灰字便宜且必须随连接失效而消失),但保留在途的手动优化。真正的状态变化路径仍完整取消。
36
+
37
+ **验证**:`tests/browser-controller.test.ts` 新增 1 条用例,断言失败轮询后 `busy` 仍为 `optimize`、请求 `signal.aborted === false`、随后正常完成并生成改动记录。controller 用例 35 → 36。
38
+
39
+ ### 3. `debounceMs > 900` 时输入续写完全失效(`src/browser/controller.ts`)
40
+
41
+ **问题**:`driveSuggestions()` 第一行无条件 `clearTimer()`,末尾才重新 `setTimeout`。而它每 900ms 被状态轮询调用一次,于是**任何超过 900ms 的 debounce 定时器每 900ms 被清掉重建,永远等不到触发**。实测阈值是断崖式:
42
+
43
+ ```
44
+ debounce=899 → 1 次调用 debounce=901 → 0 次调用
45
+ debounce=900 → 1 次调用 debounce=2000/5000 → 0 次调用
46
+ ```
47
+
48
+ 设置页把"续写停顿"暴露为 **200–5000 ms**,也就是说用户按界面允许的范围调大停顿,续写功能会悄悄消失且没有任何提示。默认 600ms 在安全区,所以既有测试发现不了。
49
+
50
+ **修复**:记住已武装定时器对应的 cache key(`timerKey`)。`driveSuggestions()` 在各提前返回分支显式 `clearTimer()`;只有 key 变化时才重排定时器,key 未变则保留已武装的那个。
51
+
52
+ **验证**:新增 2 条用例——`debounceMs` 取 200/600/900/1000/2000/5000 时 20 次轮询后都恰好触发 1 次;以及草稿在定时器触发前变化时会正确重排并携带新草稿。controller 用例 36 → 43。
53
+
54
+ ### 4. 存储中的未知配置键会锁死整个插件(`src/core/config.ts`、`src/host/storage.ts`)
55
+
56
+ **问题**:`resolveConfig` 对未知键直接抛 `CONFIG`,而设置是整份对象持久化的。版本漂移(新版本写入新键后用户降级,或记录被部分写入)会导致 `settings/get`、`status`、`generate`、`drafts/*` 全部失败,设置页也加载不出来,且**无法通过保存自愈**——`updateSettings` 把含坏键的旧对象再 merge 回去。
57
+
58
+ **修复**:拆成两个入口。`resolveConfig` 保持严格(插件自身 Cordis 配置与每次 `settings/set` 补丁,调用方写错必须报错);新增 `resolveStoredConfig` 用于**读取已存记录**——未知键忽略、单字段非法回退默认值、`provider`/`model` 半填对回退为跟随输入框。下一次成功保存会重写成干净记录。
59
+
60
+ **验证**:`tests/host-storage.test.ts` 新增 5 条用例:未知键不锁死、保存后坏键消失、逐字段回退、半填对丢弃、显式补丁仍严格。storage 用例 4 → 9。
61
+
62
+ ### 5. 中文 diff 粒度过粗(`src/core/diff.ts`)
63
+
64
+ **问题**:分词正则把不含空格的整段中文当作一个 token,于是 `请解释缓存机制` → `请说明缓存机制` 被渲染成整短语删除 + 整短语插入,中文用户基本看不出改了什么。
65
+
66
+ **修复**:CJK 按码点切分,保留拉丁词/空白/标点的分组;同时先裁剪相同前后缀再做 DP,并保留超限时的降级路径(先句级,再整段替换),使最大长度草稿也不会卡住。
67
+
68
+ **验证**:现有 diff 用例(无损重建、emoji 代理对不拆分)继续通过;人工核对 `解释`→`说明`、`不要修改`→`保持现有` 已是词级粒度。
69
+
70
+ ### 6. 无界集合与调度器语义(`src/browser/controller.ts`、`src/core/scheduler.ts`、`src/host/runtime.ts`)
71
+
72
+ - `exposed` 与 `nextTurns` 两个 Set 只增不减。加入 512 上限,与既有的 `completionCache` 64 上限保持一致。
73
+ - `settings/set` 原来调用 `scheduler.dispose()`,语义上是"销毁调度器"却当"取消在途"用。拆出 `cancelAll()` 表达真实意图并补注释说明为何设置变更要取消所有会话的在途请求。
74
+
75
+ ## 未改变的边界
76
+
77
+ 以下与 `0.1.1` 一致,没有因为本次修正而变化:
78
+
79
+ - 60 条固定合成质量集仍为 `not_evaluated`(0/60)。本次修正**没有**新增任何真实模型调用,也没有做人工语义标注。
80
+ - 6 次小样本对照结论不变:只能说明接线可用,不能证明同类领先。
81
+ - 未验证项仍是未验证:中文 IME 候选组合、附件/引用组合、完整官方 Web 组合、其他插件组合、非 Windows x64 平台。
82
+ - 本次修正未在官方桌面端重新做原生手测;相关证据仍是 `0.1.1` 时期记录,版本号与哈希需以新的 `verification.json` 为准。
83
+
84
+ ## 复现命令
85
+
86
+ ```powershell
87
+ # 类型检查与构建
88
+ node node_modules/typescript/bin/tsc --noEmit
89
+ node scripts/build.mjs
90
+
91
+ # 全部自动化测试(121 条)
92
+ node node_modules/vitest/vitest.mjs run
93
+
94
+ # 实际打包产物的 Loader 校验
95
+ node scripts/verify-package.mjs dist/dsh-input-assistant-0.1.2.tgz
96
+
97
+ # 真实 Edge 中的编辑器回归
98
+ node scripts/smoke-web.mjs
99
+
100
+ # 评测集结构校验(0 次模型调用)
101
+ node scripts/evaluate.mjs validate
102
+ ```
@@ -0,0 +1,111 @@
1
+ # 离线模型质量评测
2
+
3
+ 本项目提供 60 条由开发助手编写的固定合成案例,三种操作各 20 条。它们没有取自用户真实聊天,也不会被插件当作长期学习数据。
4
+
5
+ 这套固定案例尚未经独立人工语义标注,当前只有结构及工具回归校验。少量真实模型接线试验记录在 [低用量真实模型试验](smoke-comparison.md),不能代替全套标注和质量验收。
6
+
7
+ `reference` 是可接受答案示例,**不作精确匹配评分,也不代表真实模型已经生成该结果**。语义上同样合理的其他表达可以通过人工评审。
8
+
9
+ ## 数据与门槛
10
+
11
+ | 操作 | 样例构成 | 首版门槛 |
12
+ |---|---|---|
13
+ | `next` | 12 条明确后续、8 条歧义或自然收尾 | 明确组至少 10 条可用,歧义组至少 7 条正确弃权 |
14
+ | `complete` | 12 条适合续写、8 条无需继续 | 明确组至少 10 条可用且只补后缀,无需组至少 7 条弃权 |
15
+ | `optimize` | 20 条约束、语言及原文保护案例 | 全部完成语义评审;无实质新增任务或授权、重大约束丢失,保护片段不变 |
16
+
17
+ 覆盖中文、英文、日文、韩文、混合语言、emoji、否定条件、最新纠正、路径、URL、命令、代码和材料内的伪指令。集合适合作为首版回归门槛,不能据此宣传普遍超过 Claude 或 Codex。
18
+
19
+ ## 1. 验证并导出真实插件提示词
20
+
21
+ 先构建,使评测使用与运行时相同的 `prepareGeneration`:
22
+
23
+ ```powershell
24
+ pnpm build
25
+ node scripts/evaluate.mjs validate
26
+ node scripts/evaluate.mjs export --out evaluation/requests.jsonl
27
+ node scripts/evaluate.mjs template --out evaluation/results.template.jsonl
28
+ ```
29
+
30
+ `export` 输出操作、输入快照、实际 `system` 与 `input` 文本及输出预算。它只生成文件,不发网络请求。将这些材料交给你已配置的模型评测环境运行,并记录提供商、精确模型 ID、推理档、运行日期和延迟。不要把凭据写入结果文件。
31
+
32
+ 基线与候选必须使用相同模型及相同上下文、预算。比较现有插件策略时,另行保存所用基线代码版本、提示词和生成设置,避免只比较不同模型的输出。
33
+
34
+ ## 2. 录入实际结果
35
+
36
+ 结果支持 JSON 数组或 JSONL,每个 ID 一条。模板默认 `recorded:false`,即未运行,不能计为正确弃权。只有真实调用完成才改为 `true`。
37
+
38
+ 直接收集插件最终文本时:
39
+
40
+ ```json
41
+ {"id":"next-01","recorded":true,"text":"运行测试。","latencyMs":920,"inputTokens":1200,"outputTokens":6}
42
+ ```
43
+
44
+ `text:null` 表示真实生成后的正常弃权。没有记录、`recorded:false` 和真实弃权是三种不同状态。
45
+
46
+ 如果收集的是模型原始输出,使用 `raw`,不要同时提供 `text`:
47
+
48
+ ```json
49
+ {"id":"optimize-04","recorded":true,"raw":"检查 ⟪DSH_KEEP_0⟫ 中的问题并说明原因。","latencyMs":1300}
50
+ ```
51
+
52
+ 评分工具会重新构造同一合成案例的保护映射,并通过真实 `finishGeneration` 校验、还原。占位符应以导出的输入为准,不能根据本说明示例猜测。生成失败不是正常弃权;应保留失败原因并重跑该项,不能将未得到结果的调用填作成功的空输出。
53
+
54
+ ## 3. 人工语义评审
55
+
56
+ 每条预期输出文本的案例至少评审这些维度,值为 `true`、`false` 或未评审的 `null`:
57
+
58
+ | 字段 | 判断标准 |
59
+ |---|---|
60
+ | `intentAligned` | 符合当前草稿及最新用户意图,没有回答成助手口吻或偏题 |
61
+ | `noUnsupportedRequirements` | 没有凭空新增功能、事实、选择、发布或执行授权 |
62
+ | `naturalUserVoice` | 对预测与续写,像用户会自然输入的话,并符合语言要求 |
63
+ | `constraintsPreserved` | 对优化,保留范围、否定条件、数值及先后顺序 |
64
+ | `editCharacters` | 可选:用户将候选改成可发送文本需要修改的字符数量 |
65
+ | `comment` | 可选:说明为何失败或需要怎样修改 |
66
+
67
+ 例如在结果中加入:
68
+
69
+ ```json
70
+ {"id":"next-01","recorded":true,"text":"运行测试。","human":{"intentAligned":true,"noUnsupportedRequirements":true,"naturalUserVoice":true,"editCharacters":0,"comment":"承接已要求但未完成的测试"}}
71
+ ```
72
+
73
+ 自动检查覆盖长度、整句前缀重复、必要原文片段及弃权行为。它无法证明语义保真。即使所有机械检查通过,缺少必要人工评价时也只会得到 `incomplete`,不会得到 `passed`。
74
+
75
+ ## 4. 匿名对照
76
+
77
+ 候选与基线结果使用相同 ID。以下命令把实际最终 `text` 输出随机化为稳定的 A/B 标签:
78
+
79
+ ```powershell
80
+ node scripts/evaluate.mjs compare --candidate evaluation/candidate.jsonl --baseline evaluation/baseline.jsonl --out evaluation/blind.jsonl
81
+ ```
82
+
83
+ 它生成:
84
+
85
+ - `blind.jsonl`:含题目、A/B 输出及空白评审字段,交给评审者。
86
+ - `blind.key.json`:候选/基线标签映射,由组织评测者单独保存,不交给评审者。
87
+
88
+ 评审者填写 A、B 内的语义字段,可另填 `preferred` 为 `A`、`B` 或 `equal`。对照导出要求已经规范化的最终 `text`;原始模型占位输出应先经插件处理,不能直接作为读者可用结果比较。
89
+
90
+ ## 5. 生成报告
91
+
92
+ ```powershell
93
+ node scripts/evaluate.mjs score --candidate evaluation/candidate.jsonl --baseline evaluation/baseline.jsonl --reviews evaluation/blind.jsonl --key evaluation/blind.key.json --out evaluation/report.json
94
+ ```
95
+
96
+ 没有基线或匿名评审时,可只提供候选文件。完全没有模型结果时也可生成状态记录:
97
+
98
+ ```powershell
99
+ node scripts/evaluate.mjs score --out evaluation/status.json
100
+ ```
101
+
102
+ 输出 JSON 和同名 Markdown,分别报告记录完成度、人工评审完成度、可用文本、正确弃权、结构失败、无根据新增要求、修改量以及有记录的 P50/P95 延迟。未提供延迟和 token 用量时不会估算或编造。加 `--strict` 会在尚未通过完整验收时返回非零退出码。
103
+
104
+ 评分状态含义:
105
+
106
+ - `not_evaluated`:没有真实结果。
107
+ - `incomplete`:结果或人工语义评价未齐。
108
+ - `failed`:完整组未达到首版门槛。
109
+ - `passed`:全部案例和必要人工评价齐全,并达到门槛。
110
+
111
+ 不要通过几乎总是不显示建议来抬高采纳率;预测可用率必须与弃权率和曝光覆盖率共同解释。60 条固定合成样例适合回归,不代表统计上覆盖所有真实任务。
Binary file