概览与产品方案
问题、目标用户、价值主张、推荐的用户流程,以及给 Agent24 的具体功能提案。
Agent24 本地隐私填表助手
本地保险箱、字段谱系、站点配方、本地模型、DOM 与视觉、人机闸门,以及落到 Agent24 的推荐结构。
目录 / Agent24 本地隐私填表助手 / 技术架构
ApprovalBroker 和按工具风险等级审批(架构基线,2026-11-12,bc923205),应直接复用,不要另做一套同意 UI。http_fetch、fs_read、fs_write、shell_exec。浏览器驱动应作为进程外模块或 sidecar,崩溃和站点反爬隔离在外。flowchart TD
user[用户: 网址加一句话] --> daemon[Agent24 daemon<br/>LocalOnly 任务画像]
daemon --> match{URL 是否有配方}
match -->|有| recipe[站点配方执行器]
match -->|无| planner[本机规划器<br/>只输出字段映射]
planner --> recipe
recipe --> vault[本地保险箱<br/>操作系统钥匙串解包]
vault --> operator[本机浏览器操作器<br/>CDP 附着或 Playwright]
operator --> gate{闸门}
gate -->|验证码 OTP 支付 提交| human[交给用户]
gate -->|普通填写| operator
human --> operator
operator --> audit[审计日志与回执档案]
根据 2026-11-12 对 bc923205 的架构阅读(见 agent24-evolution 基线,源码在 iDoris-ai/agent24):
| Agent24 已有 | 怎么用在 FormVault | 不够的地方 |
|---|---|---|
ModelRouter 与 LocalOnly:默认 oMLX(Qwen3-8B-4bit)和 Ollama;本地实例只走回环,不读代理环境变量 | 填表 run 一律 LocalOnly。规划用本地 7B/8B 级模型足够给字段分类;视觉用本地 VLM 做兜底 | 默认没有按任务自动升到复杂档。填表应显式指定,不要依赖默认 TaskProfile |
ApprovalBroker、工具风险等级、会话级授权 | form_submit、vault_export、打开新域名为高风险,必须人批。普通 form_type 可按站点白名单授权 | 默认工具超时 30 秒,主循环最多 10 轮、每轮 16 次工具。一整份 e-Visa 必须由配方引擎在一次工具调用里跑多步,而不是每填一个框就占一轮模型 |
SQLite 存储、审计日志带 prev_hash / hash 链 | 每次填写与提交写审计。回执文件入工作区 | 现有 Store 自己写明「只记账,不建调用方授权」。保险箱的授权要另做,不能只靠多一张表 |
| 调度器(cron / at,漏触发只补一次) | TM.47 窗口提醒、状态轮询(注意礼貌间隔,不要高频打政府站点) | 调度触发的 run 也必须 LocalOnly,且不能自动提交 |
进程外领域 OS、os attach、MCP | 推荐 FormVault 作为进程外模块:独立进程、自己的库、经 /api/v1/<name>/* 或附着连接与 daemon 对话 | 进程外模块与内核同 UID、无沙箱。这是既有限制,要在文档里写清:保险箱加密是防御磁盘泄露,不是防御本机恶意进程 |
| Electron 桌面壳 | 核对清单、验证码接管、预览比对做在壳里 | 不要把 Playwright 塞进 Electron 渲染进程 |
技能契约 ADR-040 在该快照里仍是「零代码」。MVP 不要等技能加载器,把配方做成模块内的数据文件即可。
推荐设计:
agent24.db。field_id、明文只在内存、日志里只留掩码(护照号只留后四位、电话只留后四位)。不要把保险箱做成 Solid Pod 那种对外授权网络服务。需求是本机单用户。Solid 的启发只在字段谱系和授权语义,不在部署形态。
用一份与具体网站无关的个人档案,配方只做「谱系路径 → 表单控件」的映射。建议至少包括:
person:given / middle / family、护照上的完整大写姓名、性别、出生日期、国籍、出生地。姓名必须支持「与护照完全一致」的存储,包括连字符。大使馆明确警告过自动填充把连字符搞丢的问题(伦敦大使馆说明)。documents.passport:号码、类型、签发国、签发地、签发日、到期日、资料页扫描。documents.photo:近六个月证件照、拍摄日期、是否戴眼镜(e-Visa 要求不要太阳镜或普通眼镜,见同一份大使馆说明)。contact:邮箱、电话及国家码。address.thailand:巷/路、区(tambon)、县(amphoe / khet)、府、邮编、电话。这是 TM.47 纸质表格上的结构(Form TM.47)。address.other:常住国地址,e-Visa 需要。employment:职业、雇主、雇主地址。travel:上次入境日期、入境口岸或交通工具、入境卡号(若还在使用)、预计入出境、在泰住所。tm47:上次回执、下次到期日、网上账号标识(不含密码)。credentials:按站点存放用户名,密码在钥匙串或加密项里。visa:拟申请类型、入境次数、出行目的。映射表示例:person.family_name → #familyName,或「无障碍树里 name 为 Family Name 的文本框」。配方版本要跟着站点改动升级。
配方(P0 主力) 是 YAML 或 JSON,内容包括:起始 URL 与允许的域、步骤列表(打开、等待、点击、填、上传、截图)、每步的选择器(CSS、角色、标签文本,可写多个备选)、字段映射、文件规格(类型、大小、尺寸)、已知闸门(验证码、OTP)、成功判定(出现「Pending」或回执编号)、失败时的人读说明。配方由维护者针对真实站点书写并回归,不在运行时让模型改写选择器,除非进入修复模式并再次请人确认。
通用智能体(P1) 在未知 URL 上:本机模型读 DOM 和无障碍树(去掉值),输出填表计划;本机执行器取值填写;视觉模型只在 DOM 不够时看截图。截图在发给模型前要做红action:用占位块盖住已填的值。这一步是「盲规划」的具体实现。
Skyvern 选择纯视觉是为了企业门户经常改 class。个人政府站点改版没那么频繁,但改一次就会让配方失败,所以要有「修复模式」:模型提议新选择器,人看一遍再写回配方。
三种做法,按推荐顺序:
[{field_id, action, control_ref}]。执行器本地填值。任何把值拼进提示词的代码路径都应视为缺陷。