feat(android): collect bounded Pinduoduo candidates
This commit is contained in:
@@ -51,9 +51,9 @@
|
||||
|
||||
## 当前阶段与优先路径
|
||||
|
||||
当前已完成 Phase 0 和 T-101:Android 可运行、设备就绪、workflow、私有样本导入
|
||||
以及固定脱敏词拼多多搜索均已在真机验证。下一步是 T-102,只浏览并采集最多 5 个
|
||||
候选,继续禁止订单提交和支付。
|
||||
当前已完成 Phase 0、T-101 和 T-102:Android 可运行、设备就绪、workflow、私有样本
|
||||
导入、固定词搜索以及最多 5 个候选截图采集均已在真机验证。下一步是 T-103,使用
|
||||
私有 ProbeTask 验证结构化需求提取,继续禁止订单提交和支付。
|
||||
|
||||
严格按以下顺序推进:
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@
|
||||
| --- | --- |
|
||||
| 任务来源 | 其他管理后台或本项目管理 Web 采集商品标题、描述、图片、数量和预算。 |
|
||||
| 第一层样本来源 | 本机目录中的蝦皮订单文本和参考图;二者以蝦皮订单号作为同名文件名。 |
|
||||
| 执行方式 | 采购人员使用 Android App 操作拼多多;固定词搜索探针已可运行,候选浏览和真实任务尚未实现。 |
|
||||
| 执行方式 | 采购人员使用 Android App 操作拼多多;固定词搜索和最多 5 个候选证据采集已可运行,需求提取和匹配判断尚未实现。 |
|
||||
| 核心痛点 | 人工把图片和描述转成搜索词、逐条比较商品并记录结果,耗时且不一致。 |
|
||||
| 验证范围 | 一台设备、一个管理身份、一个采购执行人员、拼多多单平台。 |
|
||||
| 资金边界 | MVP 不提交订单、不支付,只验证到人工确认位置。 |
|
||||
@@ -140,8 +140,8 @@ T-004 已固定首版规则:推荐私有目录为被 Git 忽略的 `private-fi
|
||||
`T-001` 完成。
|
||||
- 首份蝦皮样本已由 T-004 真实导入验证;当前只支持单 SKU 和 JPEG,扩展格式需新
|
||||
样例和独立任务。
|
||||
- OnePlus PKG110、Android 16/API 36、拼多多 8.17.0 的首页、搜索输入和结果页已形成
|
||||
可复现基线;候选列表、详情页及账号风控差异仍待 T-102 验证。
|
||||
- OnePlus PKG110、Android 16/API 36、拼多多 8.17.0 的首页、搜索输入、结果页、
|
||||
候选卡和详情返回已形成可复现基线;不同账号、类目和页面实验的差异仍是风险。
|
||||
- VLM 厂商、模型、成本上限、数据留存地区和图片隐私规则待确认。
|
||||
- 拼多多平台条款、自动化允许范围和账号风控需要业务方确认;项目不实现绕过措施。
|
||||
- 后续若允许提交订单,必须先明确 SKU、收货地址、运费、优惠、发票、金额审批、
|
||||
|
||||
@@ -11,7 +11,8 @@
|
||||
| Android 构建链 | Gradle 8.2;AGP 8.2.0;Kotlin 1.9.20;JVM target 17 | 已验证 | 已补齐上游缺失的 `gradlew.bat`,不依赖全局 Gradle。 |
|
||||
| Android SDK | compileSdk/targetSdk 34;minSdk 26;SDK Build Tools 34.0.0 | 已验证 | 支持 Android 8.0+;本机使用 Command-line Tools 22.0。 |
|
||||
| Android UI | Jetpack Compose + Material 3;Compose Compiler 1.5.5 | 上游已核实 | Compose BOM 为 2023.10.01。 |
|
||||
| Android 自动化 | `AccessibilityService` 语义节点动作;Shizuku 保留为上游兼容路径 | 固定词搜索已真机验证 | T-101 已用可见、启用、唯一节点完成打开搜索、`ACTION_SET_TEXT` 精确回读、提交和结果页确认;没有坐标或 shell 降级。上游 `main` 仍保留 Shizuku 13.1.5。 |
|
||||
| Android 自动化 | `AccessibilityService` 语义节点动作;Shizuku 保留为上游兼容路径 | 搜索与 5 个候选已真机验证 | T-101/T-102 已完成精确输入、结果页确认、候选卡识别、详情截图和验证返回;没有坐标或 shell 降级。上游 `main` 仍保留 Shizuku 13.1.5。 |
|
||||
| Android 候选证据 | API 30+ `AccessibilityService.takeScreenshot` + App cache JSON/PNG | 已真机验证 | 匿名 PNG 与只含 SHA-256、计数、尺寸的 manifest;转换/压缩使用独立 executor,文件 IO 使用 `Dispatchers.IO`。API 26-29 明确不支持该截图探针。 |
|
||||
| 第一层任务源 | UTF-8 无 BOM 四行蝦皮订单文本 + 同订单号 JPEG | 已实现 | `task-contract` 共享 `ProbeTask/TaskSource`;CLI 输出到 `.local/`,只有显式 Debug 属性才注入 APK,默认构建会清除私有资产。 |
|
||||
| Android 长任务 | 前台服务 + 持续通知 | 计划采用 | 降低执行中被系统挂起的风险,仍需处理进程死亡恢复。 |
|
||||
| 后端语言 | Go 1.23.0 | MVP 已定 | 与现有本机工具链一致;构建测试必须设置 `GOTOOLCHAIN=local` 防止静默升级。 |
|
||||
@@ -27,7 +28,7 @@
|
||||
| VLM 接入 | 应用内统一适配器,优先兼容 OpenAI 风格多模态接口 | 接口已定,供应商待定 | 模型输出必须符合本项目 JSON Schema。 |
|
||||
| 通知 | MVP 不使用推送 | 已定 | 点击“获取任务”调用原子 claim API;V2 再评估厂商推送/WebSocket。 |
|
||||
| 后端测试 | 标准库 `testing` + `httptest` | MVP 已定 | 覆盖状态机、权限、幂等、SQLite 事务和输入校验。 |
|
||||
| Android 测试 | Gradle `test` + `kotlinx-coroutines-test` 1.7.3 + 真实设备 smoke | 搜索探针已验证 | T-003 runner 与 T-101 页面分类/Fake driver 已覆盖;OnePlus PKG110 + 拼多多 8.17.0 固定词结果页 smoke 成功。 |
|
||||
| Android 测试 | Gradle `test` + `kotlinx-coroutines-test` 1.7.3 + 真实设备 smoke | 候选探针已验证 | runner、页面分类、搜索和有界候选 Fake driver 已覆盖;OnePlus PKG110 + 拼多多 8.17.0 的 5 个截图及返回 smoke 成功。 |
|
||||
| 部署 | 单机局域网 Go 服务;容器化后置 | MVP 已定 | Android 测试机必须能通过 HTTPS 或受控测试网络访问。 |
|
||||
|
||||
## Roubao 上游版本基线
|
||||
@@ -134,7 +135,7 @@ docs/
|
||||
| --- | --- | --- |
|
||||
| Android 标准验证 | `.\init.ps1` | 已验证 |
|
||||
| Android 构建 | `android-buyer\gradlew.bat assembleDebug --no-daemon` | 已验证 |
|
||||
| Android 测试任务 | `android-buyer\gradlew.bat test --no-daemon` | 已验证;当前全工程 62 次测试通过 |
|
||||
| Android 测试任务 | `android-buyer\gradlew.bat test --no-daemon` | 已验证;当前全工程 78 次测试通过 |
|
||||
| Android 安装/启动 | `$env:RUN_START_COMMAND="1"; .\init.ps1` | 已在 Android 16 真机验证 |
|
||||
| 后端依赖 | `go mod download`(在 `backend-api/`) | 待 `T-201` |
|
||||
| 后端测试 | `go test ./...`(在 `backend-api/`) | 待 `T-201` |
|
||||
|
||||
@@ -169,6 +169,23 @@ SearchProbeScreen
|
||||
登录、验证码、风控、订单或支付边界都终止 workflow。该路径不提供坐标、ADB、
|
||||
Shizuku shell、OCR 或 VLM 动作降级。
|
||||
|
||||
T-102 在搜索结果后追加一个有界候选步骤:
|
||||
|
||||
```text
|
||||
固定词结果页
|
||||
-> 最多 2 次滚动预算
|
||||
-> 最多 5 个去重商品卡
|
||||
-> 验证详情页
|
||||
-> 无障碍截图
|
||||
-> App cache/candidate-NN.png + manifest.json
|
||||
-> 一次全局返回并复核固定词结果页
|
||||
```
|
||||
|
||||
候选卡只保留语义指纹和计数,详情截图保存在 App 内部 cache。manifest 记录匿名文件名、
|
||||
截图 SHA-256、字节数和尺寸,不保存商品标题或页面原文。T-104 使用这些证据时必须通过
|
||||
受控 evidence 边界读取,不能让 VLM adapter 自行遍历 cache。Android 10/API 29 及
|
||||
以下不能运行当前截图探针,应在预检时明确不支持,不使用媒体投影或 shell 绕过。
|
||||
|
||||
### 3.2 MVP 业务闭环
|
||||
|
||||
```text
|
||||
@@ -327,6 +344,8 @@ IDLE
|
||||
不能因资源 ID 重复而任取第一个节点。
|
||||
- 已验证的首页、搜索输入和结果页路径禁止坐标降级;新页面必须先取得版本化真机
|
||||
证据并在独立任务中定义识别条件。
|
||||
- 候选 session 的候选尝试与滚动预算在动作发出前扣减,retry 不得重置;详情动作
|
||||
白名单只有截图和返回。
|
||||
- 截图发送给模型前裁剪无关区域并按配置脱敏。
|
||||
- 每个动作记录抽象步骤,不默认记录完整输入文本。
|
||||
- 发现验证码、风险控制、支付、生物识别或系统权限页面立即停止。
|
||||
|
||||
@@ -37,6 +37,12 @@
|
||||
- 每个步骤定义 timeout、有限 retry、成功条件和停止条件。
|
||||
- 禁止无界循环、无限滑动、无限候选遍历和随机点击。
|
||||
- 默认最多检查 5 个候选;扩大范围必须先改需求。
|
||||
- 候选卡必须满足视口可见比例、单列尺寸、图片、价格和语义文本约束;根不可点击时
|
||||
只允许唯一的大面积覆盖点击目标,禁止点击卡内小按钮。
|
||||
- 候选和滚动预算在发出动作前消耗,并跨 workflow retry 保持;返回 `false` 或取消
|
||||
也不能恢复预算。
|
||||
- 详情截图只保存在 App 内部目录,文件名匿名;manifest 不保存标题/页面原文,并
|
||||
校验文件 SHA-256、尺寸和字节数。
|
||||
- 前台服务通知要展示任务编号和当前步骤,并提供安全停止入口。
|
||||
- 验证码、风控、登录、支付、未知页面统一进入安全失败。
|
||||
- MVP 不得实现最终提交订单或支付动作,包括“先写好但不调用”的隐藏代码。
|
||||
|
||||
+13
-12
@@ -5,8 +5,8 @@
|
||||
## 当前快照
|
||||
|
||||
- 日期:2026-07-25
|
||||
- 阶段:T-101 已完成;准备 T-102 候选浏览和采集
|
||||
- Git:当前分支为 `main`;T-001 至 T-004 均已纳入 Git 历史
|
||||
- 阶段:T-102 已完成;准备 T-103 VLM 需求提取
|
||||
- Git:当前分支为 `main`;T-001 至 T-004、T-101 和 T-102 均已纳入 Git 历史
|
||||
- 生产代码:`android-buyer/` 已接入 Roubao Android 源码
|
||||
- Android:固定 `main@c8a6d7f03422eb01744b01f3ee77bf7757741f7e`;MIT 许可证已保留
|
||||
- 后端:已决定使用 Go 1.23.0 + Gin 1.11.0;Go Blueprint v0.10.11 骨架尚未接入
|
||||
@@ -14,21 +14,21 @@
|
||||
Build Tools 34.0.0、Platform Tools/ADB 37.0.0;用户级 SDK 环境变量已设置
|
||||
- Android Studio:未安装;`winget` 静默安装卡住后已终止,不阻塞命令行构建
|
||||
- 测试:`lintDebug test assembleDebug` 成功;App 两个变体、task contract 和导入器
|
||||
共执行 62 次测试,0 failure、0 error、0 skipped
|
||||
共执行 78 次测试,0 failure、0 error、0 skipped
|
||||
- Workflow:纯 Kotlin runner 已支持步骤 timeout、最多 3 次 retry、安全阻塞、
|
||||
用户停止和单 runner 并发拒绝;T-101 已接入真实拼多多固定词搜索四步
|
||||
用户停止和单 runner 并发拒绝;T-102 已接入搜索加有界候选采集五步
|
||||
- TaskSource:严格 CLI 已生成并验证真实私有 ProbeTask;默认 APK 不含私有 fixture
|
||||
- 测试设备:OnePlus PKG110,Android 16/API 36;肉包 `1.4.2 (7)`;拼多多
|
||||
`8.17.0 (81700)`
|
||||
- 设备就绪:肉包采购无障碍已启用并连接;拼多多首页、搜索输入和固定词结果页已通过
|
||||
8.17.0 真机验证,结果页精确词、搜索头和 4 个排序控件均确认
|
||||
- 设备就绪:肉包采购无障碍已启用并连接;拼多多首页、搜索输入、固定词结果页、
|
||||
双列候选卡、详情截图和返回均已通过 8.17.0 真机验证
|
||||
- 版本控制内测试数据:仅有脱敏、运行时生成的单元测试 fixture;没有真实订单内容
|
||||
- 本地私有样本:仓库根目录存在一组未跟踪、已本地排除的同名蝦皮文本/JPEG;
|
||||
已用 CLI 真实导入并逐字段/图片哈希验证,生成物位于被忽略的 `.local/`
|
||||
- 标准启动路径:`$env:RUN_START_COMMAND="1"; .\init.ps1`
|
||||
- 标准验证路径:`.\init.ps1`
|
||||
- 当前 blocker:候选列表/详情页语义与有界返回路径尚待 T-102 验证;当前只支持单
|
||||
SKU/JPEG;VLM 供应商、模型和测试凭证未确认
|
||||
- 当前 blocker:VLM 供应商、模型、测试凭证、成本上限和数据留存尚未确认;当前只
|
||||
支持单 SKU/JPEG;候选探针截图要求 Android 11/API 30+
|
||||
|
||||
## 当前目录
|
||||
|
||||
@@ -41,6 +41,7 @@
|
||||
| `docs/tasks/T-003.md` | DONE | 可注入 Fake automation 的受限 workflow runner |
|
||||
| `docs/tasks/T-004.md` | DONE | 私有蝦皮文本/JPEG 严格导入和 Debug TaskSource |
|
||||
| `docs/tasks/T-101.md` | DONE | 固定脱敏词拼多多搜索和结果页真机验证 |
|
||||
| `docs/tasks/T-102.md` | DONE | 最多 5 个候选详情截图、证据 manifest 和结果页返回 |
|
||||
| `deepseek总结.txt` | 已有 | 历史讨论摘要,不是正式需求权威 |
|
||||
| `android-buyer/` | 已有 | Roubao `main` 固定 commit 的 Android 基线 |
|
||||
| `android-buyer/task-contract/` | 已有 | Android/CLI 共享 ProbeTask 与 TaskSource |
|
||||
@@ -50,9 +51,9 @@
|
||||
|
||||
## 任务摘要
|
||||
|
||||
- 已完成:T-001 至 T-004,以及 T-101 固定词搜索探针。
|
||||
- 已完成:T-001 至 T-004,以及 T-101、T-102。
|
||||
- 正在进行:无。
|
||||
- 下一个可领取任务:T-102 浏览并采集最多 5 个候选。
|
||||
- 下一个可领取任务:T-103 接入 VLM 需求提取。
|
||||
|
||||
## 当前可运行内容
|
||||
|
||||
@@ -64,8 +65,8 @@ $env:RUN_START_COMMAND = "1"
|
||||
```
|
||||
|
||||
2026-07-25 已在 PKG110、Android 16/API 36、拼多多 8.17.0 上完成 Debug APK
|
||||
固定词搜索。默认首屏为搜索探针,用户点击后四步全部完成并确认结果页;设备页保留
|
||||
就绪检查入口,肉包采购无障碍服务已绑定,logcat 无崩溃或 ANR。
|
||||
固定词搜索和 5 个候选采集。默认首屏为候选探针,用户点击后五步全部完成,5 张
|
||||
匿名 PNG 与 manifest 哈希一致并返回结果页;logcat 无崩溃或 ANR。
|
||||
|
||||
## 维护规则
|
||||
|
||||
|
||||
@@ -0,0 +1,126 @@
|
||||
---
|
||||
id: T-102
|
||||
title: 浏览并采集最多 5 个候选
|
||||
phase: 1
|
||||
deps:
|
||||
- T-101
|
||||
status: DONE
|
||||
created: 2026-07-25
|
||||
context_ref: f226d0f
|
||||
work_branch: main
|
||||
write_paths:
|
||||
- android-buyer/app/src/main/java/com/roubao/autopilot/MainActivity.kt
|
||||
- android-buyer/app/src/main/java/com/roubao/autopilot/accessibility/**
|
||||
- android-buyer/app/src/main/java/com/roubao/autopilot/pinduoduo/**
|
||||
- android-buyer/app/src/main/java/com/roubao/autopilot/ui/screens/SearchProbeScreen.kt
|
||||
- android-buyer/app/src/main/java/com/roubao/autopilot/workflow/WorkflowModels.kt
|
||||
- android-buyer/app/src/main/res/xml/buyer_accessibility_service.xml
|
||||
- android-buyer/app/src/test/java/com/roubao/autopilot/pinduoduo/**
|
||||
- docs/00-ai-start-here.md
|
||||
- docs/02-requirements.md
|
||||
- docs/03-tech-stack.md
|
||||
- docs/04-architecture.md
|
||||
- docs/05-coding-rules.md
|
||||
- docs/current-state.md
|
||||
- docs/tasks/T-102.md
|
||||
- progress.md
|
||||
---
|
||||
|
||||
## 问题 / 背景
|
||||
|
||||
T-101 已能稳定进入固定词结果页,但尚未证明可以识别独立商品卡、进入详情、保存证据
|
||||
并返回同一结果页。T-102 只验证有界候选浏览,不进行匹配判断、下单或支付。
|
||||
|
||||
## 关联需求与交互
|
||||
|
||||
- 功能:F-005 的最多 5 个候选采集部分、F-007 安全失败。
|
||||
- 用户故事:US-004、US-006。
|
||||
- 交互:Android“探针”页展示候选计数和当前步骤。
|
||||
- 架构:`WorkflowRunner` + `PinduoduoCandidateAutomation` + 无障碍 driver +
|
||||
App 内部缓存证据。
|
||||
|
||||
## 方案
|
||||
|
||||
1. 只从已确认的搜索结果页识别主 RecyclerView 的直属商品卡。
|
||||
2. 商品卡必须可见、启用、可点击,包含图片和有限文本;用文本 SHA-256 去重,不在
|
||||
日志或 UI 展示标题。
|
||||
3. 每次只打开一个候选;详情页必须由稳定语义组合确认,保存全屏 PNG、文本指纹和
|
||||
节点计数后立即返回结果页。
|
||||
4. 最多采集 5 个不同候选,最多滚动结果列表 2 次;没有无界循环或翻页。
|
||||
5. 登录、验证码、风控、未知页、订单和支付边界立即阻塞;绝不点击详情页购买控件。
|
||||
|
||||
## 验收要点
|
||||
|
||||
- [x] 从 T-101 结果页依次进入候选详情并返回。
|
||||
- [x] 采集数量始终不超过 5,结果滚动次数始终不超过 2。
|
||||
- [x] 每个候选有内部缓存 PNG、SHA-256、尺寸和语义节点证据。
|
||||
- [x] 证据文件名匿名,普通日志和 UI 不输出商品标题。
|
||||
- [x] 全流程不使用坐标,不点击购买、订单或支付控件。
|
||||
- [x] 页面未知或安全边界出现时产生可区分的 `BLOCKED`。
|
||||
- [x] Fake driver 自动化测试覆盖成功、去重、上限和安全停止。
|
||||
- [x] 拼多多 8.17.0 真机 smoke 采集 5 个候选并返回结果页。
|
||||
- [x] `lintDebug test assembleDebug` 通过,默认 APK 不含私有 fixture。
|
||||
|
||||
## 边界
|
||||
|
||||
- 不评估候选是否匹配;T-104 才接入候选评估。
|
||||
- 不把候选证据上传网络;T-202 以后再接后端证据接口。
|
||||
- 不点击购买、拼单、加入购物车、订单或支付相关节点。
|
||||
- 不保存真实蝦皮输入或把商品详情文本写入普通日志。
|
||||
|
||||
## 执行记录
|
||||
|
||||
### 2026-07-25:任务开始
|
||||
|
||||
- 基于 T-101 提交 `f226d0f` 开始。
|
||||
- 脱敏结构审计确认拼多多 8.17.0 结果页主 RecyclerView 和双列商品卡;详情页有
|
||||
可点击返回语义以及联系客服、收藏、店铺语义,当前未出现订单或支付边界。
|
||||
|
||||
### 2026-07-25:实现
|
||||
|
||||
- 新增 `PinduoduoCandidateAutomation` 和复合探针 workflow。一次 session 最多尝试
|
||||
5 个不同卡片、最多发出 2 次结果滚动;预算在动作前消耗,runner retry 不会重置。
|
||||
- 主结果 RecyclerView 必须可滚动、覆盖至少 90% 宽度且拥有足够节点。候选卡必须
|
||||
至少 80% 可见、宽度在单列范围、含图片/价格/至少 2 个语义文本;根不可点击时
|
||||
只接受唯一覆盖卡片至少 85% 面积的点击目标,小型嵌套按钮不会被选中。
|
||||
- 详情页同时要求可点击返回、联系客服/收藏/店铺至少两类语义、宽 ViewPager 和宽
|
||||
可滚动主列表。详情页动作白名单只有截图和一次全局返回,返回后必须重新确认固定
|
||||
查询结果页。
|
||||
- Android 11/API 30+ 使用声明了 `canTakeScreenshot` 的无障碍截图 API。Hardware
|
||||
buffer 在独立执行器转换和压缩并始终关闭;8 秒超时后结构化失败,不绕过安全窗口。
|
||||
- 每个候选只保存匿名 PNG、卡片/详情语义 SHA-256、节点计数、文件 SHA-256、字节数
|
||||
和尺寸到 App cache;manifest 不保存标题或页面原文,文件写入在 IO dispatcher。
|
||||
- 探针页增加候选 `0/5` 计数和第五步;仅记录 workflow/候选阶段枚举与截图错误码。
|
||||
|
||||
### 2026-07-25:自动化验证
|
||||
|
||||
- `gradlew.bat lintDebug test assembleDebug --no-daemon` 成功。
|
||||
- App Debug/Release、task contract 和导入器共 14 份报告、78 次测试,0 failure、
|
||||
0 error、0 skipped。
|
||||
- Fake driver 覆盖 5 个去重候选、候选硬上限、旧页面有界过渡、两次滚动上限、
|
||||
空列表、安全阻塞、截图失败以及从已验证详情页安全恢复。
|
||||
- 普通 Debug APK 中 `assets/probe-fixtures/` 条目数为 0。
|
||||
|
||||
### 2026-07-25:真机 smoke
|
||||
|
||||
- OnePlus PKG110、Android 16/API 36、拼多多 8.17.0 上,从肉包按钮启动后 20 秒内
|
||||
依次采集 5 个候选并返回固定词结果页;肉包显示 `5 / 5` 和五步完成。
|
||||
- cache manifest 为 5 条,匿名文件名合法;5 个 PNG 均为 `1080x2376`,字节数为
|
||||
正数,文件 SHA-256 与 manifest 全部一致。
|
||||
- 最终结果页订单/支付边界计数为 0;logcat 没有肉包崩溃或 ANR,阶段日志不含商品
|
||||
标题或页面原文。
|
||||
- 真机审计 XML/PNG 位于被忽略的 `.local/`,候选证据位于 App 内部 cache,均未纳入
|
||||
Git。
|
||||
|
||||
### 2026-07-25:修正记录
|
||||
|
||||
- 首次运行在候选点击后把短暂保留的旧结果页误判为未知。改为只在固定 20 次观测
|
||||
预算内等待结果页和详情页过渡;任何安全阻塞仍立即停止。
|
||||
- 调试期间旧 Activity 造成终态读取混淆;最终 smoke 先清理肉包任务栈,再用
|
||||
`FLAG_ACTIVITY_REORDER_TO_FRONT` 返回原实例核验,未创建第二个 workflow。
|
||||
|
||||
## 后续
|
||||
|
||||
- T-103 使用 T-004 的私有 ProbeTask 接入结构化需求提取;不能把订单号或店铺名发给
|
||||
模型。
|
||||
- T-104 才把候选截图交给评估适配器;T-102 不声明任何候选匹配结论。
|
||||
Reference in New Issue
Block a user