From c1ed3750d20a1be537ed114fa32652c89ff0e466 Mon Sep 17 00:00:00 2001 From: QiuSW Date: Tue, 15 Sep 2026 14:50:59 +0800 Subject: [PATCH] =?UTF-8?q?fix(agent):=20=E5=A3=B0=E6=98=8E=20pdd.image-se?= =?UTF-8?q?arch.v1=20=E8=83=BD=E5=8A=9B=20(#277)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 服务端 taskCompatible 对 source='image_search' 的任务按该能力过滤, 但 AgentCapabilities.supported 从未包含它。设备不声明时图搜任务 永远不会被领取,而且是静默的——任务停在 pending、不失败也不报错。 线上设备 #7「采购2」的 capabilities_json 实测确实没有这一项,装机前 核对时发现。 新增 AgentCapabilitiesTest 锁住与服务端 task.ImageSearchCapability 的一致性,并检查清单无重复。 Co-Authored-By: Claude Opus 5 Claude-Session: https://claude.ai/code/session_01NTDbDcwbDw1TSAcE6wfh2F --- .../goauto/agent/automation/RuleContract.kt | 11 ++++++++ .../goauto/agent/AgentCapabilitiesTest.kt | 27 +++++++++++++++++++ 2 files changed, 38 insertions(+) create mode 100644 android/app/src/test/java/cn/ilapage/goauto/agent/AgentCapabilitiesTest.kt diff --git a/android/app/src/main/java/cn/ilapage/goauto/agent/automation/RuleContract.kt b/android/app/src/main/java/cn/ilapage/goauto/agent/automation/RuleContract.kt index 208f58c..c5898ba 100644 --- a/android/app/src/main/java/cn/ilapage/goauto/agent/automation/RuleContract.kt +++ b/android/app/src/main/java/cn/ilapage/goauto/agent/automation/RuleContract.kt @@ -150,11 +150,22 @@ object AgentCapabilities { const val PDD_PRODUCT_DETAIL_V1 = "collector.pdd.product-detail.v1" const val PDD_CURRENT_PAGE_SHARE_V1 = "collector.pdd.current-page-share.v1" + /** + * 图搜采集能力(#277)。 + * + * `[必须]` 必须与服务端 `task.ImageSearchCapability` 逐字一致。 + * `taskCompatible` 对 source='image_search' 的任务按该能力过滤: + * 设备不声明则图搜任务**永远不会被领取**,且是静默的—— + * 任务停在 pending、不失败也不报错。 + */ + const val PDD_IMAGE_SEARCH_V1 = "pdd.image-search.v1" + val supported: List = listOf( SCHEMA_V2, SWIPE_V1, PDD_PRODUCT_DETAIL_V1, PDD_CURRENT_PAGE_SHARE_V1, + PDD_IMAGE_SEARCH_V1, PurchaseAgentCapabilities.REHEARSAL_V1, PurchaseAgentCapabilities.LIVE_V1, PurchaseAgentCapabilities.SPEC_PROBE_V1, diff --git a/android/app/src/test/java/cn/ilapage/goauto/agent/AgentCapabilitiesTest.kt b/android/app/src/test/java/cn/ilapage/goauto/agent/AgentCapabilitiesTest.kt new file mode 100644 index 0000000..dd8cce2 --- /dev/null +++ b/android/app/src/test/java/cn/ilapage/goauto/agent/AgentCapabilitiesTest.kt @@ -0,0 +1,27 @@ +package cn.ilapage.goauto.agent + +import cn.ilapage.goauto.agent.automation.AgentCapabilities +import org.junit.Assert.assertTrue +import org.junit.Test + +class AgentCapabilitiesTest { + + // #277: 服务端 taskCompatible 对 source='image_search' 的任务按这个能力过滤。 + // 漏声明时图搜任务永远不会被领取,而且是静默的:任务停在 pending、 + // 不失败也不报错。字符串必须与 task.ImageSearchCapability 逐字一致。 + @Test + fun `supported capabilities include the image search capability the server gates on`() { + assertTrue( + "AgentCapabilities.supported 缺少 pdd.image-search.v1,图搜任务将无法被领取", + AgentCapabilities.supported.contains("pdd.image-search.v1"), + ) + } + + @Test + fun `supported capabilities have no duplicates`() { + assertTrue( + "能力清单出现重复项: " + AgentCapabilities.supported, + AgentCapabilities.supported.size == AgentCapabilities.supported.toSet().size, + ) + } +}