fix(agent): 持久化本地脱敏采购入口诊断(关联 #243 #245 #248) #249

Open
opened 2026-09-09 11:08:09 +08:00 by ila · 2 comments
Owner

来源与授权

2026-09-09 用户要求按最后建议实施:入口点击/恢复诊断只保存在 Agent 本地供 ADB 分析,不修改 Admin/API,不改变采购动作或判断。本轮授权代码、测试、构建;未授权安装或真实采购。永久禁止付款。

当前事实与目标

CG81 在 0.9.66 的入口阶段失败,恢复拒绝原因目前只写 Logcat,现场未能读取这些日志;系统树导出又因持续刷新不能取得空闲状态。本单补持久诊断,不猜测入口失败的根因,不修复或放宽入口点击策略。

基线、依赖与范围

基线 8a3367a(#248),仅 Android。#243/#245 已有固定结构诊断回调可复用;#248 代码已实现安装,真实采购仍待验证。本单可独立于其验收实施,但同一执行器/服务文件串行修改。无服务端、Web、共享 API、数据库迁移、权限或业务状态变化;不新增 UI,无需原型。

已确认方案

  • App 私有 files/purchase_diagnostics 保存脱敏 JSONL,不依赖 Logcat;按 taskId + taskAttemptId 分文件,包含 deviceId、Agent 版本、规则快照哈希、时间与单次执行已用时。下发采购任务没有 attemptNumber,用现有 attemptId 精确标识执行,不伪造序号、不为此扩展接口;分析时可关联历史执行次数。
  • 复用入口来源、点击结果/原因、面板数量与布尔证据、恢复拒绝固定原因码;补等待采样次数/已等待毫秒,仅观测,不增加 capture/click/swipe/back 或改变等待/判断。
  • 落盘字段和枚举使用明确白名单,未知字段/值丢弃;不记录标题/规格原文、地址、手机号、URL、Cookie/Token、原始树、截图、订单或支付数据。
  • 复用现有单线程诊断队列异步写入,写入/清理失败吞掉,不影响采购执行与结果提交;不增加网络请求、后台循环或数据库表。
  • 保留最近 5 个执行文件,每文件最近 128 条记录,最长 7 天;启动及写入时清理,仅限专用目录中本功能生成的文件。
  • 调试 APK 通过 ADB run-as 读取该私有目录。正式非 debuggable APK 不承诺可 run-as,不新增导出接口或改变应用权限。

验收与验证

  • 入口点击、等待、恢复拒绝原因本地可持久化,按任务/attempt/规则/设备/版本关联。
  • 字段白名单、任意未知值/敏感文本拒绝、路径安全、5 文件/128 条/7 天清理测试。
  • 写入失败不改变执行结果;诊断与原入口动作次数/等待保持一致。
  • 全量 Android 单元测试、APK 构建、差异检查、提交推送、证据回写,停在待验收。
  • 安装及 CG81 真机重试后实际日志读取待用户另行授权,不以单测宣称入口根因已解决。

风险与非目标

只增加最小本地诊断。不采集页面原文,不进行付款/订单操作,不修改点击策略、价格、规格、地址、重试、租约或上传契约。保留无关工作区。诊断 I/O 非关键路径,失败不得使采购失败。

文档影响

更新 Troubleshooting 的私有日志路径、保留策略和 ADB 只读命令,明确 debuggable 限制。线上编辑/回读 revision 后一轮 sync 与 sync --check,只提交本单镜像。不创建任务归档。

工具及状态

Gitea MCP 不可用,使用安全配置的 Gitea API;不输出凭据。代码、单元测试、构建、提交推送及文档已完成,待验收;尚未安装和真机重试。

## 来源与授权 2026-09-09 用户要求按最后建议实施:入口点击/恢复诊断只保存在 Agent 本地供 ADB 分析,不修改 Admin/API,不改变采购动作或判断。本轮授权代码、测试、构建;未授权安装或真实采购。永久禁止付款。 ## 当前事实与目标 CG81 在 0.9.66 的入口阶段失败,恢复拒绝原因目前只写 Logcat,现场未能读取这些日志;系统树导出又因持续刷新不能取得空闲状态。本单补持久诊断,不猜测入口失败的根因,不修复或放宽入口点击策略。 ## 基线、依赖与范围 基线 8a3367a(#248),仅 Android。#243/#245 已有固定结构诊断回调可复用;#248 代码已实现安装,真实采购仍待验证。本单可独立于其验收实施,但同一执行器/服务文件串行修改。无服务端、Web、共享 API、数据库迁移、权限或业务状态变化;不新增 UI,无需原型。 ## 已确认方案 - App 私有 files/purchase_diagnostics 保存脱敏 JSONL,不依赖 Logcat;按 taskId + taskAttemptId 分文件,包含 deviceId、Agent 版本、规则快照哈希、时间与单次执行已用时。下发采购任务没有 attemptNumber,用现有 attemptId 精确标识执行,不伪造序号、不为此扩展接口;分析时可关联历史执行次数。 - 复用入口来源、点击结果/原因、面板数量与布尔证据、恢复拒绝固定原因码;补等待采样次数/已等待毫秒,仅观测,不增加 capture/click/swipe/back 或改变等待/判断。 - 落盘字段和枚举使用明确白名单,未知字段/值丢弃;不记录标题/规格原文、地址、手机号、URL、Cookie/Token、原始树、截图、订单或支付数据。 - 复用现有单线程诊断队列异步写入,写入/清理失败吞掉,不影响采购执行与结果提交;不增加网络请求、后台循环或数据库表。 - 保留最近 5 个执行文件,每文件最近 128 条记录,最长 7 天;启动及写入时清理,仅限专用目录中本功能生成的文件。 - 调试 APK 通过 ADB run-as 读取该私有目录。正式非 debuggable APK 不承诺可 run-as,不新增导出接口或改变应用权限。 ## 验收与验证 - [x] 入口点击、等待、恢复拒绝原因本地可持久化,按任务/attempt/规则/设备/版本关联。 - [x] 字段白名单、任意未知值/敏感文本拒绝、路径安全、5 文件/128 条/7 天清理测试。 - [x] 写入失败不改变执行结果;诊断与原入口动作次数/等待保持一致。 - [x] 全量 Android 单元测试、APK 构建、差异检查、提交推送、证据回写,停在待验收。 - [ ] 安装及 CG81 真机重试后实际日志读取待用户另行授权,不以单测宣称入口根因已解决。 ## 风险与非目标 只增加最小本地诊断。不采集页面原文,不进行付款/订单操作,不修改点击策略、价格、规格、地址、重试、租约或上传契约。保留无关工作区。诊断 I/O 非关键路径,失败不得使采购失败。 ## 文档影响 更新 Troubleshooting 的私有日志路径、保留策略和 ADB 只读命令,明确 debuggable 限制。线上编辑/回读 revision 后一轮 sync 与 sync --check,只提交本单镜像。不创建任务归档。 ## 工具及状态 Gitea MCP 不可用,使用安全配置的 Gitea API;不输出凭据。代码、单元测试、构建、提交推送及文档已完成,待验收;尚未安装和真机重试。
Author
Owner

实现完成,待验收(2026-09-09)

  • 代码 99faf5a,文档 659bbc6,已推送 fix/249-local-purchase-diagnostics;未合并 main,未发布服务器。
  • Agent 0.9.67 / versionCode 80。新增私有 JSONL 白名单存储,沿用单线程诊断队列;按 taskId/attemptId/deviceId/ruleHash/版本关联入口候选、点击结果、面板采样和固定恢复拒绝原因。保留 5 次执行/每次最后 128 条/7 天;未知字段和任意字符串拒绝落盘。没有 Admin/API/数据库/权限/UI 变更。
  • 没有新增 capture/click/swipe/back、等待轮数或放宽采购判断。entryWaitMillis 是本等待循环的计划等待累计;elapsedMs 是执行器诊断起点以来实际耗时。异步排队/写入失败不改变采购结果,异常退出可能丢诊断。
  • :app:testDebugUnitTest :app:assembleDebug 通过:359 tests,0 failures,0 errors。新增 6 项测试覆盖白名单/敏感值拒绝、路径校验、重建后读回、文件与事件轮转、过期清理、存储异常隔离;执行器集成回归验证恢复拒绝原因 close_control、30 次等待样本、点击结果持久化,以及无法写文件时仍返回原错误且恢复点击次数为 0。
  • git diff --check、harness.py check --strict 通过。Debug APK:android/app/build/outputs/apk/debug/app-debug.apk;SHA256 06125850d33a6a5b45634b7eb77cc3f8d0b44d46758ac0487905fb795ba653c8。
  • Wiki Troubleshooting 已在线更新并回读 revision 18744477bfd17f396e8c76ec7a2fcc6720acdf6f,随后一轮 sync 与一轮 sync --check 通过。本单只提交 docs/06-troubleshooting.md;同步产生的其他 4 个不相关镜像变化未混入提交,无任务归档。
  • 未安装、未执行 CG81 真机重试、未创建订单或付款。真机日志留存/ADB 提取仍待用户授权安装后验证。此单只补诊断,不能宣称 CG81 入口失败根因已确定或已修复。工单保持打开待验收。
## 实现完成,待验收(2026-09-09) - 代码 `99faf5a`,文档 `659bbc6`,已推送 `fix/249-local-purchase-diagnostics`;未合并 main,未发布服务器。 - Agent 0.9.67 / versionCode 80。新增私有 JSONL 白名单存储,沿用单线程诊断队列;按 taskId/attemptId/deviceId/ruleHash/版本关联入口候选、点击结果、面板采样和固定恢复拒绝原因。保留 5 次执行/每次最后 128 条/7 天;未知字段和任意字符串拒绝落盘。没有 Admin/API/数据库/权限/UI 变更。 - 没有新增 capture/click/swipe/back、等待轮数或放宽采购判断。entryWaitMillis 是本等待循环的计划等待累计;elapsedMs 是执行器诊断起点以来实际耗时。异步排队/写入失败不改变采购结果,异常退出可能丢诊断。 - `:app:testDebugUnitTest :app:assembleDebug` 通过:359 tests,0 failures,0 errors。新增 6 项测试覆盖白名单/敏感值拒绝、路径校验、重建后读回、文件与事件轮转、过期清理、存储异常隔离;执行器集成回归验证恢复拒绝原因 close_control、30 次等待样本、点击结果持久化,以及无法写文件时仍返回原错误且恢复点击次数为 0。 - `git diff --check`、`harness.py check --strict` 通过。Debug APK:android/app/build/outputs/apk/debug/app-debug.apk;SHA256 `06125850d33a6a5b45634b7eb77cc3f8d0b44d46758ac0487905fb795ba653c8`。 - Wiki Troubleshooting 已在线更新并回读 revision `18744477bfd17f396e8c76ec7a2fcc6720acdf6f`,随后一轮 sync 与一轮 sync --check 通过。本单只提交 docs/06-troubleshooting.md;同步产生的其他 4 个不相关镜像变化未混入提交,无任务归档。 - 未安装、未执行 CG81 真机重试、未创建订单或付款。真机日志留存/ADB 提取仍待用户授权安装后验证。此单只补诊断,不能宣称 CG81 入口失败根因已确定或已修复。工单保持打开待验收。
Author
Owner

2026-09-09 用户明确授权安装到 192.168.0.9:35399。安装前设备连接正常,原版 0.9.66/79,线上运行中采集和采购任务均为 0。校验 APK SHA256 与构建记录一致(06125850d33a6a5b45634b7eb77cc3f8d0b44d46758ac0487905fb795ba653c8),使用 adb install -r 覆盖安装返回 Success,保留应用数据,未卸载或清数据。安装后包版本回读见本次验证;未触发采购、修改地址、创建订单或付款,CG81 新日志仍待人工重试后验证。无新增长期文档事实,不重复 Wiki 同步。Gitea MCP 不可用,沿用安全配置 API 回写。

2026-09-09 用户明确授权安装到 192.168.0.9:35399。安装前设备连接正常,原版 0.9.66/79,线上运行中采集和采购任务均为 0。校验 APK SHA256 与构建记录一致(06125850d33a6a5b45634b7eb77cc3f8d0b44d46758ac0487905fb795ba653c8),使用 adb install -r 覆盖安装返回 Success,保留应用数据,未卸载或清数据。安装后包版本回读见本次验证;未触发采购、修改地址、创建订单或付款,CG81 新日志仍待人工重试后验证。无新增长期文档事实,不重复 Wiki 同步。Gitea MCP 不可用,沿用安全配置 API 回写。
Sign in to join this conversation.
No labels
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: OPC/goauto#249