# 实现与接口 命名插件使用宿主默认图标,不随包分发额外图标素材。 ## Host 与 Client `index.js` 注册 DSH `sessionTitle` 的 `all-prompts` 提供者。宿主管理手动命名、并发取消与标题回退;插件构造最近用户消息、上一轮 assistant 文本和工具名称的上下文,通过选定的 LLM 路由生成标题。最近活动扫描最多 1000 条事件;`title-policy.js` 按 UTF-8 字节预算优先保留最新消息。 `client.js` 同时注册独立设置分区和插件管理器的配置组件。模型目录与配置独立加载,目录按服务并发查询、缓存 60 秒。旧查询不会覆盖新保存;请求在组件或插件卸载时取消。 ## API 路由前缀 `/api/title-oil`。所有路由先通过 DSH `connection.admit` 验证请求,普通外部浏览器直接访问可能得到 401/403。写入必须是 JSON,正文最多 64 KiB、读取超时 10 秒。 | 路径 | 方法 | 用途 | | --- | --- | --- | | `/config` | GET | 当前有效配置、默认配置和 revision | | `/config` | PUT | `{revision, config}` 保存覆盖配置;过期 revision 返回 409 | | `/config` | DELETE | `If-Match` 携带 revision,删除覆盖配置并恢复 bundle 默认值 | | `/routes` | GET | 可选的供应商与模型目录 | | `/settings` | GET | 兼容 HTML 设置页;同样要求已认证上下文 | 旧版原始 PUT 配置格式仍被接受,新调用方应传 revision。发生 409 时客户端保留草稿,用户可选择重新载入最新配置。 ## 存储 默认目录 `~/.dsh/plugin-data/title-oil/`,设置 `DSH_HOME` 时改用其下的 `plugin-data/title-oil/`。目录 0700、配置 0600;JSON 先写同目录临时文件,再原子替换。覆盖配置优先于 `cordis.patch.yml`。 首次加载从旧插件源码目录复制 `config.overrides.json`,保留原件;`.migration-v1.json` 防止恢复默认后又导入旧文件。卸载不自动删除用户配置。 ## 验证范围 纯策略测试覆盖目标反转和长中文/emoji 输入预算。已在 macOS 的 DSH Desktop 0.2.0-rc.2 检查插件加载、设置展示、保存行为与明暗/窄屏布局;没有为发布而触发付费模型调用。其他宿主版本、操作系统和模型服务需单独验证。