# dsh-input-limit 发布文档 > 适用版本 0.1.1 · 目标 dsh 0.1.5-rc.2 > **约定:本文所有「上传/推送/发布」动作均由维护者手动执行**,本文只提供精确步骤与预期输出。 > 设计细节见 [DESIGN](DESIGN.md);用户视角安装说明同时维护在根目录 [README](../README.md#install)。 --- ## 1. 发布门槛(全部满足才允许发布) | # | 门槛 | 命令 / 方式 | 状态(0.1.1) | |---|---|---|---| | 1 | 数值层验证 | `node --experimental-strip-types tests/capacity.verify.mjs` | ✅ 已过(50+ 断言,含千分位编辑回归) | | 2 | bundle 冒烟 | `node tests/bundle-smoke.mjs` | ✅ 已过 | | 3 | 数据层集成 | `node --experimental-strip-types tests/provider.verify.mjs` | ⏳ 发布前必跑 | | 4 | vitest 套件 | `pnpm run test` | ⏳ 发布前必跑 | | 5 | 类型检查 | `pnpm run typecheck` | ⏳ 发布前必跑 | | 6 | 浏览器 E2E | 见 §1.1 场景清单 | ⏳ 发布前必跑 | | 7 | 版本号 | `package.json` `version` 与本次变更匹配 | ✅ 0.1.1 | | 8 | 预构建产物与源码一致 | 改过 `src/` 就必须 `pnpm run build` 重新生成 `lib/` | ✅(0.1.1 已同步;再次改动后重跑) | | 9 | npm 元信息占位已替换 | `package.json` 中 `` 占位(`author`/`repository`/`bugs`/`homepage`)替换为真实 GitHub 账号 | ⏳ 发布前必改 | ### 1.1 浏览器 E2E 场景清单 1. 输入框工具行出现「输入上限」胶囊,含 K/M 值;无覆盖值时带 `· 默认`。 2. 悬浮显示精确 tokens 与模型名;点击开弹窗,预填分组拼写(如 `20,000`)。 3. **回归场景(0.1.1)**:预填值末尾直接追加数字 → 出现 `≈` 预览,可保存,不再报 「请输入正整数 token 数」。 4. 输入 `128K`、`1.5`、`0`、`,123`、`12 34` → 保存时报错且不落盘;错误行文案正确。 5. 保存后胶囊实时更新、`· 默认` 标签消失;Settings 页对应 provider → models 行出现 `contextWindow` 覆盖值。 6. 「恢复默认」→ 覆盖字段被移除,胶囊回落默认值并重新出现 `· 默认`。 7. 两个浏览器标签页同时打开:一侧保存,另一侧胶囊无需刷新即更新。 8. 切换会话模型 → 胶囊跟随新模型;切换到子代理会话 → 胶囊消失。 9. 暗色模式外观正常;Enter 保存、Escape 关闭、点击遮罩关闭。 ## 2. 产出物定义 **npm 包 / GitHub 仓库都携带预构建 `lib/`**,安装方零工具链、零构建。 | 产出物 | 内容 | 说明 | |---|---|---| | npm tarball | `files` 白名单:`lib/`、`cordis.patch.yml`、`README.md`、`LICENSE` | `node_modules`、`*.tgz`、src/tests/docs 不入包 | | GitHub 仓库 | 全部源码 + `lib/` + tests + docs | `lib/` 必须提交——`dsh plugin add github:…` 的机器可能没有构建条件 | | GitHub Release | tag `v0.1.1` + Release Notes(可直接用本文 §7 版本记录) | 附源码 zip 即可,无需附加 tarball | | `pnpm view dsh-input-limit` | 发布前查名 | 期望 404(名字未被占用);若被占用,改用 scope 包名并同步 `package.json` | ## 3. 官方要求合规清单 依据:官方 [README](https://github.com/deepseek-ai/deepseek-harness)、 [架构文档](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/architecture.md)、 [插件开发教程](https://github.com/deepseek-ai/deepseek-harness/blob/master/docs/user/develop/basic/index.md)、 本机 rc.2 CLI 实现源码(`@deepseek-ai/dsh/lib/plugin-*.js`),以及 **本机 rc.2 实测 (插件已真实加载并工作)**。 | 官方要求 | 本文现状 | 结论 | |---|---|---| | 插件 = 导出 `name` + `apply(ctx)`(可选 `inject`)的模块(官方教程) | Host/Client 两端均为函数式插件,导出 `name/inject/apply`;dotted 依赖显式声明于 `inject` | ✅ | | bundle 在自身 `package.json` 声明 `dsh.bundle` → patch 文件(架构文档) | `dsh.bundle.patch: ./cordis.patch.yml` | ✅ | | patch 形态:按 `id` 插入/替换配置行(架构文档) | `- insert: - { id: input-limit, name: dsh-input-limit }` | ✅ | | 外部插件经 `dsh plugin` 安装,pnpm 落入 profile,`dsh.bundle` 声明者自动入层栈(CLI 实现) | 已在本机 `~/.dsh/profiles/web` 以 link 方式入层,`--dump-config` 可见 | ✅ | | 浏览器半:`window.__ModuleLoader__.load({ id, factory })` 闭包工厂,仅外部化平台模块,CSS Modules 内联 `