# v0.2.4 — 单次筛选、研究恢复与安全接入管理 这是稳定版源码交付说明,汇总 v0.2.3 之后的 beta.1–beta.9 演进与最终审查修正。Node.js 下限仍为 `>=22.13`。版本提交和面向 `master` 的 PR **不等于** npm 发布;npm dist-tag、GitHub Release 及合并均是独立操作。本次准备不执行 npm publish、不移动 dist-tag、不创建发布标签,也不自动合并。 ## 主要变化 - **Adaptive V5**:一个完整问题和研究方向,经一次 Jev 策略选择与一次 fused 检索,对完整声明快照做安全/价值/来源折扣筛选。目标 ≤10 时最多 32 个候选,更大目标按相同比例扩大至最高 160;无数量达标提前停止、关键词扩展、逐材料 constraints 门槛、自动页面补读或自设累计预算。评分、筛选标签、`targetMet` 和数量都不证明事实正确或研究完整。 - **研究保存与恢复**:显式 `save_results:true` 可保存完整选中集合与元数据到私有 v2 文件;`saved_result_id`、cursor 和 CLI `research list` / `research export` 支持离线恢复。历史 v1 快照只读展示原状态,不重新检索、不改写为 V5,不刷新证据日期。工具关闭与 Jev 配置锁仍适用于工具入口的历史读取。 - **网页/PDF 读取**:PDF 转为有界文本,保留取消、大小/页数限制和抽取不足说明;二进制、不可抽取文件及真实网络/策略失败不伪装为正文。可选 PDF 依赖已更新,并有真实离线 PDF 回归。 - **DSH CLI/Desktop**:独立发现与所属运行时校验、锁与事务备份/恢复、载荷与实际来源验证;保留禁用状态。Desktop 支持默认目录、PATH、显式 launcher 和 Windows 注册表元数据发现,以及由用户在 Desktop 界面添加持久本地目录的只读等待流程;无 npm DSH 接管 Desktop 的兜底。 - **接入管理与 TUI**:默认平铺首页,保留文件夹布局、中英切换及损坏配置导航。安装、刷新、卸载分离;软件更新由 npm 负责,刷新只同步当前持久包的已有接入。卸载默认取消,按预览范围执行;Grok 缓存重建需要单独明确同意,普通 `-y` 不授予重建或信任权限。 - **宿主说明与 CI**:MCP/Pi/DSH 共用工具描述,清楚区分 Fused、Adaptive、fetch、X 与研究子任务的职责及配置/权限边界。CI 保留四个平台/Node cell,并统一静态、依赖审计和有毒调用者隔离门禁;生成资产与实际 npm/global/npx 工件独立验收。 ## 从 v0.2.3 迁移 实际稳定版本发布后: ```sh npm install -g search-boost@0.2.4 --prefer-online search-boost # 管理 Agent 接入 → 刷新已有接入 → 选择精确范围 # 或刷新全部已有接入: search-boost refresh -y # 先仅预览: search-boost refresh --dry-run ``` - 重启受影响宿主和 MCP 服务。安装目录或插件清单版本不证明已经运行的服务加载了新包;未固定版本的 npx 启动项还需独立核验。 - `upgrade` 和 `--sync-only` 已移除。npm 更新软件后用 `refresh`;`migrate` 仅负责旧全局 `search-boost-mcp` 包更名,不代替日常软件更新或修改 Agent 配置。详见 [迁移说明](migration.md) 与 [接入刷新](host-upgrades.md)。 - `adaptive_search` 不再接受 V3 的 `tasks` / `keywords` 等输入;新研究只接受一个 `questions` 元素与必填 `intent`。非空 `constraints` 明确拒绝,空数组仅兼容忽略并告警。`preferences` 是独立软偏好,而非准入条件。 - 新输出是 `schemaVersion=5`,不再返回 `coverageComplete` / `retrievalSufficient` / `keywordProgress` 等旧字段。用 `selection.incomplete`、`stopReason`、诊断计数及 warnings 判断执行状态;`targetMet` 只表示数量。 - 新运行 cursor 是进程内 `s5:`,历史 v1 读取是 `h1:`;旧裸 UUID.offset 与实验 `s4:` cursor 不兼容。重启后需保存的 ID,而不是旧 cursor。详见 [Adaptive 契约](jev-adaptive-search.md) 与 [筛选迁移](adaptive-screening-migration.md)。 ## 最终审查修正 最终审查以 beta.9 的 `4e14650` 为基线,两路独立只读审查覆盖搜索/恢复与安装/刷新安全。以下缺陷均先以隔离回归重现,再修正: 1. **合法长输入分页失败**:最大长度中文或 JSON 转义输入可能超过 16,000 字节页面元数据预算,造成完成筛选甚至写入私有快照后仍抛异常。现仅缩短页面 `inputSummary` 的 Unicode 完整前缀并告警;真实检索/判断输入、完整私有输入、已审摘录、计数和使用量不变。新增最大输入、完整 160 候选/50 结果、保存/恢复及零网络分页回归。 2. **卸载范围披露与冻结**:Antigravity 原先预览“无工作区”却执行全部已登记工作区卸载。现先读取并展示准确列表,再将该列表传入执行;确认期间新增工作区不会被移除。Grok 原生插件全局注册/缓存移除也在预览中明确披露,不被 project MCP 作用域隐藏;`--skip-grok-plugin` 仍保留原生插件。 3. **精确刷新误报失败**:未选宿主的发现错误保留为跳过说明,不再使已选且成功的范围失败;不可用的已选目标、真实执行失败和全范围刷新中的发现失败仍阻塞。 4. **首次 Desktop dry-run**:已有合法 launcher 但尚未初始化 profile 时允许显示计划,不写入 profile。真实执行仍要求初始化、退出宿主并尊重应用锁;缺失 launcher 仍失败,不回退 npm DSH。 未改变筛选算法、评分系数、宿主信任默认值、网络策略或真实用户配置。 ## 审查中的非阻塞边界 - `unreviewed` 是未进入判断或快照外的计数,不是“所有有效判断已完成”的布尔证明;已派发但判断不可用另计,失败/取消原因查看 `stopReason`、`judgeFailures`、不可用计数与 `selection.incomplete`。已澄清文档,不变更历史诊断计数语义。 - DSH 恢复标记和官方 package run 记录有意阻止新写入,不自动清理。先退出宿主、确认前次包管理进程停止并按私有备份恢复/核验,再由维护者处理标记;不能直接删锁/标记后强行重试。已有安全恢复步骤见 [Desktop 接入说明](dsh-desktop.md)。本次不新增自动恢复命令。 - **沿用的 Grok 安装兼容行为**:重新安装时清理本工具 marked 权限块与未标记的旧 `MCPTool(search-boost__...)` 规则;不能仅凭相同文字区分旧注入和用户手写规则。拒绝自动授权可能撤销这些匹配的旧规则,这不是无操作。需要保留手写权限时先备份/审核;刷新已有接入不会执行这项安装迁移。本次不改写旧权限迁移算法。 ## 验证义务与限制 本地最终门禁为 `npm run prepublishOnly`:语法、CI 结构/策略、精确依赖锁审计和全部隔离入口,包含生成资产、真实 PDF、适配器、安装/刷新/卸载、研究恢复与实际 npm/global/npx 分发。另审查最终 npm tarball 的版本、文件集合及源码字节。最终提交的 Linux Node 22.13、Windows Node 22、macOS Node 22、Linux Node 24 CI 仍需与准确提交/PR 对应;旧 beta.9 的绿色结果不是新提交的验收。 离线 fixture 与平台 CI不证明真实 Desktop/Electron/ASAR GUI 加载、真实注册表形态、付费 Jev/X、在线覆盖率、筛选语义质量或 Agent 必然遵循提示词。未经这些实际验证,不将它们写成通过。本次不修改用户真实宿主配置、缓存、信任或凭据。 ## 回退 保留配置与私有事务备份,必要时显式安装 `search-boost@0.2.4-beta.9`,按该版本的 dry-run 和管理入口审核后刷新,并重启宿主。若回到 `0.2.3`,其 V3 契约和 `upgrade --sync-only` 是旧版行为,不能将 V5 保存文件或新管理命令当作自动逆迁移保证。不要删除 profile/数据、绕过信任或移动 npm dist-tag 来伪造恢复。 ## English summary v0.2.4 brings schema-V5 single-snapshot screening, explicit private research save/offline recovery, bounded PDF text extraction, DSH Desktop integration and scoped integration management. npm owns package updates; `refresh` uses the current durable package, while `migrate` only renames the retired global package. V3 adaptive inputs/outputs and `upgrade --sync-only` are no longer the current contract. Final review fixes legal long-input page failures without clipping evidence, freezes and discloses removal scopes, scopes refresh failures to selected targets, and allows a first-launch Desktop dry-run without initializing the profile. Scores and quantity never verify truth or completeness. This PR prepares version 0.2.4; npm publication, tags, merging and GitHub Releases are separate actions. Real GUI/paid-service behaviour remains outside offline verification.