Skip to content

v1.4.1

Choose a tag to compare

@github-actions github-actions released this 16 Aug 14:01
· 38 commits to main since this release
0e022a9

v1.4.1

改进 / Changed

  • vision_html_screenshot 整页截图(#111:新增 fullPage: true(默认 false,原有行为不变)——Puppeteer 原生整页捕获一次拿下完整可滚动高度,结果 JSON 新增 pageHeight(CSS px),Agent 无需再猜视口高度;截取前唤醒折叠内容:禁用图片懒加载、覆盖 smooth scroll、视口步进扫动触发 IntersectionObserver 揭示并等待过渡动画结束。
  • vision_html_screenshot full-page capture (#111): fullPage: true (default false, existing behavior unchanged) captures the complete scrollable height in one shot and adds pageHeight (CSS px) to the result JSON, so agents no longer guess ever-taller viewports; below-the-fold content is woken first — lazy-loading images disabled, smooth scroll overridden, a viewport-stepped sweep fires IntersectionObserver reveals before a settle wait.
  • 手动更新面板样式整理(#116:手动更新兜底改为独立竖向卡片,命令以整行等宽代码块展示(横向溢出滚动),pnpm 发布年龄提示降级为紧凑附注,操作按钮保持成组排列。
  • Manual-update panel layout cleanup (#116): the manual-update fallback gets its own vertical card with full-width monospace command blocks (horizontal overflow), the pnpm release-age warning becomes a compact secondary note, and the action buttons stay grouped.

修复 / Fixed

  • 视觉失败链不再拖垮文本对话(#117:单个视觉后端的配置错误 / 401 / 429 / 临时故障此前会被放大成数分钟的重复视觉工具调用——超时逐层叠加(120s×N)、429 盲等 30–60s 重试、无熔断、无同轮失败记忆,后端失败以异常形式抛给模型,诱导其反复改问法重试直至 tool call aborted。现在引入统一韧性机制:AUTH 按凭据指纹熔断(换 Key 自动解除)、429 按 Retry-After 冷却、INVALID_REQUEST 本轮跳过;同一轮全部后端失败后,后续视觉调用零网络快速返回 VISION_BACKEND_UNAVAILABLE_THIS_TURN。单次视觉任务共享一个总预算(新增 visionTaskTimeoutMs,默认 45s),OCR 由 tesseract(≤12s)与视觉模型回退共享另一个预算(新增 ocrTimeoutMs,默认 30s),不再把两层超时相加。后端失败以结构化结果(ok:false + code + retryable:false + attemptedProviders)返回而非抛异常;401 时附带 Qwen Token Plan Key/端点不匹配提示;vision_describe / vision_ground / vision_detect / vision_ocr 工具描述、自动挂载提醒、wrapper 图片标记与 vision-tools skill 统一写明失败语义与「OCR 只读文字、绝不当识别重试」边界。新增 22 个回归测试覆盖 401/429 熔断、同轮防重打、总 deadline、OCR 预算、凭据更新解除熔断、wrapper/twin 委托一致性等全部场景。
  • Vision failure chains can no longer stall text turns (#117): one misconfigured/broken vision backend (401 / 429 / outage) used to cascade into minutes of repeated vision tool calls — stacked per-request timeouts (120s × N), blind 30–60s 429 retry waits, no circuit breaking, no same-turn failure memory, and backend failures surfaced as exceptions that invited the model to rephrase and retry until tool call aborted. A unified resilience layer now trips AUTH backends per credential fingerprint (auto-released when the key changes), applies Retry-After cooldowns for 429s, skips INVALID_REQUEST backends for the turn, and answers instantly with VISION_BACKEND_UNAVAILABLE_THIS_TURN once every backend failed this turn — zero further network attempts. One vision task shares a wall-clock budget (new visionTaskTimeoutMs, default 45s); OCR shares one budget between tesseract (≤12s cap) and the vision-model fallback (new ocrTimeoutMs, default 30s) instead of stacking the two timeouts. Backend failures return structured results (ok:false + code + retryable:false + attemptedProviders) instead of throwing; 401s carry a Qwen Token Plan key/endpoint mismatch hint; and the vision_describe / vision_ground / vision_detect / vision_ocr descriptions, the auto-mount reminder, the wrapper image marker and the vision-tools skill all state the failure semantics and that OCR is text-only, never a recognition retry. 22 new regression tests cover the full matrix: 401/429 trips, same-turn no-rehit, shared deadlines, OCR budget, credential-change release, and wrapper/twin delegation parity.
  • 「+ 自动识图」包装委托保留推理回放(#110:会话经由自动识图包装路由委托文本 provider 时不再丢失 reasoning replay 记录,切换「+ 自动识图」模型后思考过程仍然可见。
  • Reasoning replay survives Auto Vision wrapper delegation (#110): delegating through the auto-vision wrapper no longer drops the session's reasoning replay, so thinking traces remain visible after switching to a "+ Auto Vision" model.
  • 设置保存失败不再困住引导流程(#114:引导的跳过/完成在当前页面内即时生效,被 Host 拒绝的隐藏设置写入不会再复活引导;隐藏持久化改为单次排队的等待写入,Host 拒绝后不再无限重试;保留 #102 的读回校验并对瞬态冲突重试一次;旧版空视觉链行被归一化,不再渲染多个空白 provider/model 行;保存失败提示会点名失败的字段。
  • Settings save failures can no longer trap the vision guide (#114): walkthrough dismissal/finish is authoritative in-page, so a rejected hidden settings write cannot resurrect the guide; hidden persistence becomes a single-attempt queued write that never spins after Host rejection; the readback verification from #102 is kept with one retry for transient conflicts; legacy empty vision-chain rows are normalized so old settings no longer render blank provider/model rows; and save errors name the failed fields.
  • 一键更新不再被 pnpm 发布年龄限制假成功欺骗(#115:pnpm 11 的 minimumReleaseAge(默认 1440 分钟)会静默扣住发布不满 24 小时的新版本并仍以 0 退出("Already up to date")——这正是「更新成功但版本没变」的根源。一键更新现在显式安装 registry 确认的目标版本(add dsh-vision-router@<目标>,显式安装自动豁免该策略),退出后读取 profile 内已安装清单并校验版本确实到达目标,零退出码不再等于成功;失败提示会解释发布年龄限制,并给出 npx dsh-vision-router repair 修复过期钉住豁免的路径。
  • One-click update is no longer fooled by the pnpm release-age hold (#115): pnpm 11's minimumReleaseAge (default 1440 minutes) silently keeps releases younger than 24h while still exiting 0 ("Already up to date") — the root cause of "update succeeded but the version never changed". The one-click updater now installs the registry-confirmed target explicitly (add dsh-vision-router@<target>, which pnpm auto-exempts from the policy) and verifies the installed manifest under the profile afterwards, so a zero exit code is never reported as success; failures explain the release-age hold and point to npx dsh-vision-router repair for stale pinned exemptions.

Commits

  • fix: preserve reasoning replay across Auto Vision wrapper delegation
  • feat(vision_html_screenshot): fullPage full-page capture + pageHeight result (#111)
  • fix: stop settings save failures from trapping the vision guide (#114)
  • fix: verify one-click update result and install the confirmed version explicitly
  • Merge pull request #115 from ysr666/fix/update-release-age-gate
  • chore: stage manual update UI cleanup
  • chore: keep UI patch helper off main
  • chore: register temporary manual update UI patch workflow
  • chore: simplify temporary manual update UI workflow
  • chore: remove temporary UI patch workflow
  • chore: register temporary manual update UI workflow
  • chore: remove temporary manual update UI workflow
  • style: clean up manual update command panel (#116)
  • fix: stop vision failure chains from stalling text turns (#117)
  • release: prepare v1.4.1
  • Merge pull request #118 from ysr666/release/v1.4.1