Improve: Add optional max_width to get_screenshot

The get_screenshot tool inherited the MFC thumbnail-preview profile, capping
the frame at 1024px wide (1280 on 4K source), which is too small for AI
vision/OCR of dense UI. Add an optional max_width argument that overrides the
width (clamped to the client's 64..1920 limit) while keeping the RTT-adaptive
jpegQuality. Omitted or 0 keeps the existing thumbnail profile; 1920 yields
near-native resolution (full 1080p on a 1080p source, 1920 wide on 4K). Sync
the design doc.

Co-Authored-By: deepseek-v4-pro
This commit is contained in:
yuanyuanxiang
2026-08-19 13:41:38 +02:00
parent 61089e5fae
commit c6c6e1d5ef
2 changed files with 37 additions and 1 deletions

View File

@@ -271,6 +271,7 @@ Web 是长连接子链接可长驻MCP 是**一次性 request/response**。
- 复用现有双击预览机制 `COMMAND_SCREEN_PREVIEW_REQ`(247)→`TOKEN_SCREEN_PREVIEW_RSP`(248)`common/commands.h:416-455`,单帧 JPEG`ScreenPreviewReq`/`ScreenPreviewRspHeader``ctx->Send2Client` 发请求、主连接回响应,**不建子链接、不弹框**。
- 复用 MFC 预览的 RTT/FRP 自适应参数挑选 `ChooseScreenPreviewParams` + `SendScreenPreviewRequest`,不重复实现 `GetTargetQualityLevel`
- **可选 `max_width` 参数**:缺省/0 沿用缩略图档位(最大 10244K 源屏高档 1280`max_width`>0 覆盖宽度并钳制到客户端上限 `[64,1920]`(客户端 `CaptureAndEncodePreview` 硬钳制),供 AI 视觉/OCR 场景请求接近原分辨率1080p 源屏传 1920 即原分辨率4K 源屏最多 1920`jpegQuality` 仍沿用档位自适应值。
- **请求关联**`ScreenPreviewReq.reqId` 提供关联MCP 用独立 16 位 reqId 发生器(`NextPreviewReqId`,跳过 0+ `SetPendingReqId` 登记期望值,`TakePreviewResponse` 只接受「挂起命中 + reqId 一致」的响应,过期/他途MFC 预览并发)响应原样回落到 MFC 路径。
- 客户端能力位 `CLIENT_CAP_SCREEN_PREVIEW`(0x0004仅 Windows 客户端声明):非 Windows 主机返回 `-32005`「不支持」。
- 返回结构:`content[0] = {type:"image", data: base64(JPEG), mimeType:"image/jpeg"}` + `structuredContent.image = {mimeType,width,height,bytes}`(元数据,不含 base64避免二次膨胀