1. 报告结论与证据范围
当前系统的核心是"结构化简历 + 站点配置 + 字段语义匹配 + 网页控件执行"。已有适配规则负责稳定填写,字段映射模型负责处理规则未覆盖的页面;两条路径最终复用本地控件执行器。
字段匹配需要同时回答四个问题:
- 页面字段属于哪个章节,例如基本信息、教育经历或项目经历。
- 字段应当对应哪个简历键,例如
name或school。 - 页面上的这一组经历对应简历数组的第几条。
- 应操作哪个真实控件,以及怎样触发网页框架更新。
"模型输出了一个字段名"只解决其中一部分。网页定位、重复经历对齐、值转换、事件触发和结果回读都直接影响最终效果。
本报告使用三类证据:
| 证据等级 | 本报告覆盖内容 | 不能据此推断的内容 |
|---|---|---|
| 客户端静态代码 | 模块职责、匹配顺序、请求字段、执行保护 | 真实服务端模型、提示词、数据库约束的具体实现 |
| 本地 Mock 请求日志 | 本次页面请求顺序、域名、章节数和路径数摘要 | 模型真实准确率、服务器正式配置内容 |
| 用户提供的截图 | 页面状态和界面显示的失败提示 | 每个网页字段是否实际被修改、网页是否已成功保存 |
包内部分注释提到比 2.0.19 更新的版本和历史改造。本文以读取到的执行代码为准,不把注释中的历史结论直接当作本次运行结果。
2. 系统边界和整体数据流
#mermaid-svg-fSoA3ICLNsfjfakX{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-fSoA3ICLNsfjfakX .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-fSoA3ICLNsfjfakX .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-fSoA3ICLNsfjfakX .error-icon{fill:#552222;}#mermaid-svg-fSoA3ICLNsfjfakX .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-fSoA3ICLNsfjfakX .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-fSoA3ICLNsfjfakX .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-fSoA3ICLNsfjfakX .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-fSoA3ICLNsfjfakX .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-fSoA3ICLNsfjfakX .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-fSoA3ICLNsfjfakX .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-fSoA3ICLNsfjfakX .marker{fill:#333333;stroke:#333333;}#mermaid-svg-fSoA3ICLNsfjfakX .marker.cross{stroke:#333333;}#mermaid-svg-fSoA3ICLNsfjfakX svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-fSoA3ICLNsfjfakX p{margin:0;}#mermaid-svg-fSoA3ICLNsfjfakX .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-fSoA3ICLNsfjfakX .cluster-label text{fill:#333;}#mermaid-svg-fSoA3ICLNsfjfakX .cluster-label span{color:#333;}#mermaid-svg-fSoA3ICLNsfjfakX .cluster-label span p{background-color:transparent;}#mermaid-svg-fSoA3ICLNsfjfakX .label text,#mermaid-svg-fSoA3ICLNsfjfakX span{fill:#333;color:#333;}#mermaid-svg-fSoA3ICLNsfjfakX .node rect,#mermaid-svg-fSoA3ICLNsfjfakX .node circle,#mermaid-svg-fSoA3ICLNsfjfakX .node ellipse,#mermaid-svg-fSoA3ICLNsfjfakX .node polygon,#mermaid-svg-fSoA3ICLNsfjfakX .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-fSoA3ICLNsfjfakX .rough-node .label text,#mermaid-svg-fSoA3ICLNsfjfakX .node .label text,#mermaid-svg-fSoA3ICLNsfjfakX .image-shape .label,#mermaid-svg-fSoA3ICLNsfjfakX .icon-shape .label{text-anchor:middle;}#mermaid-svg-fSoA3ICLNsfjfakX .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-fSoA3ICLNsfjfakX .rough-node .label,#mermaid-svg-fSoA3ICLNsfjfakX .node .label,#mermaid-svg-fSoA3ICLNsfjfakX .image-shape .label,#mermaid-svg-fSoA3ICLNsfjfakX .icon-shape .label{text-align:center;}#mermaid-svg-fSoA3ICLNsfjfakX .node.clickable{cursor:pointer;}#mermaid-svg-fSoA3ICLNsfjfakX .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-fSoA3ICLNsfjfakX .arrowheadPath{fill:#333333;}#mermaid-svg-fSoA3ICLNsfjfakX .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-fSoA3ICLNsfjfakX .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-fSoA3ICLNsfjfakX .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fSoA3ICLNsfjfakX .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-fSoA3ICLNsfjfakX .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fSoA3ICLNsfjfakX .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-fSoA3ICLNsfjfakX .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-fSoA3ICLNsfjfakX .cluster text{fill:#333;}#mermaid-svg-fSoA3ICLNsfjfakX .cluster span{color:#333;}#mermaid-svg-fSoA3ICLNsfjfakX div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-fSoA3ICLNsfjfakX .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-fSoA3ICLNsfjfakX rect.text{fill:none;stroke-width:0;}#mermaid-svg-fSoA3ICLNsfjfakX .icon-shape,#mermaid-svg-fSoA3ICLNsfjfakX .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-fSoA3ICLNsfjfakX .icon-shape p,#mermaid-svg-fSoA3ICLNsfjfakX .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-fSoA3ICLNsfjfakX .icon-shape .label rect,#mermaid-svg-fSoA3ICLNsfjfakX .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-fSoA3ICLNsfjfakX .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-fSoA3ICLNsfjfakX .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-fSoA3ICLNsfjfakX :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 本地结构化简历
生成候选简历路径目录
招聘网页 DOM
站点和平台识别
加载并检查站点配置
传统规则匹配引擎
配置缺失或特定不兼容状态
扫描可见可编辑字段
本地规则先匹配
剩余字段请求远程映射
过滤模型结果并合并本地映射
控件执行器
扫描令牌与路径安全检查
事件触发、回读与结果记录
桌面应用负责选择简历、发起任务、调用服务接口和把脚本注入内嵌网页。注入的插件在网页内定位元素、读取页面结构和操作表单。远程服务提供共享站点配置及未知字段的语义映射。
普通字段填写时,真实简历值由本地按路径读取。远程字段映射请求主要传递字段结构与候选路径目录。用户主动选择 PDF 的 AI 解析属于另一条文件上传流程,不应和网页字段映射混为一谈。
3. 模块职责
以下路径均相对于 app.asar 内部,不是安装目录中已解包的独立源文件。
| 模块 | 输入与职责 | 主要输出 |
|---|---|---|
resume-schema.js |
定义简历类别、字段和编辑结构 | 结构化简历模型 |
autofill-plugin/content/field-dictionary.js |
建立类别和字段的中文别名 | 标签与内部字段之间的语义词典 |
renderer.js |
管理运行状态、授权、脚本注入、配置准备和兜底分流 | 本次任务上下文与执行结果 |
content/platform-fingerprint.js |
用页面资源和 DOM 特征识别招聘平台 | 平台 ID、配置主机名及识别证据 |
content/site-loader.js |
在调试配置、内置模板、服务端配置、缓存等来源中选择可用配置 | 当前页面有效站点配置 |
content/element-matcher.js |
根据标签、章节容器、邻近关系和控件特征寻找元素 | 标签对应的元素及控件类型 |
content/data-matcher.js |
匹配章节类别及简历字段,生成有序候选 | 类别、字段键和候选结果 |
content/fill-engine.js |
调度 simple、structured、xyz51job 等执行路径 | 分区和字段的执行进度 |
content/experience-handler.js |
处理重复经历的卡片和数据条目对齐 | 经历组与简历数组条目的对应关系 |
content/llm-resume-paths.js |
从非空简历字段生成路径目录,并处理经历顺序语义 | path/category/field 等元信息 |
content/llm-field-collector.js |
扫描当前页面字段,先计算本地映射,再整理剩余候选 | 扫描令牌、章节字段、路径清单和诊断 |
content/llm-local-matcher.js |
为扫描后的字段提供本地确定性匹配 | 本地映射、已使用路径和字段状态 |
content/llm-fallback-runner.js |
对映射做执行前检查,并按本地路径取值 | 已填写、未验证、拒绝等结果 |
content/form-handler.js |
分发文本、下拉、日期、地址、单复选等操作,触发事件和回读 | 控件写入与验证结果 |
表中以 content/ 开头的路径均位于 autofill-plugin/ 下。
4. 站点识别与配置路由
站点配置相当于引擎的"页面操作说明"。它不仅提供字段别名,也描述章节、标签、输入区域、添加按钮及特定交互。
这里有两层调度,不能简化成一条固定的四级回退列表。
4.1 桌面端的任务分流
renderer.js 的主要过程为:
- 请求填写授权,并检查特殊站点是否有专用流程。
- 注入插件和必要的网页主执行环境桥接代码。
- 检查是否有本机调试配置、优先使用的内置模板或 DOM 识别能力。
- 在适用时获取服务端站点配置,预置给网页内的加载器。
- 主机名没有配置时,尝试平台指纹和平台通配配置。
- 满足门槛后才进入字段映射兜底;已有稳定配置的页面尽量沿用原引擎。
特定配置不兼容探针受开关和主机白名单约束。"服务器返回了配置"不自动等于"当前页面的选择器有效"。
4.2 网页内的配置选择
SiteLoader.loadConfigLayers() 还会检查手动生成的本地候选、明确优先的专用模板、桌面端预取配置、已验证远程配置及其他本地回退来源。
其设计意图是兼顾两件事:已验证的新配置能够替换旧配置,专门调过复杂交互的站点又不会被通用候选配置随意覆盖。配置来源、是否验证、路由命中及兼容性都会影响选择结果。
4.3 本次大易平台识别
platform-fingerprint.js:42 定义大易平台,使用两类证据共同识别:
- 资源:
/pb/js/resumeOperation.js。 - DOM:
.form-cell章节容器和.tit-wrap .tit标题。
命中后返回配置主机名 *.hotjob.cn。这使多个企业租户可以共享平台适配,无须每个域名单独复制规则。但平台指纹本身不包含完整平台配置,仍需要加载对应配置。
5. 传统引擎的字段匹配
5.1 先确定类别和上下文
章节和字段需要联合判断。基本信息中的"姓名"指向本人,家庭成员中的"姓名"应指向对应亲属;教育中的"名称"也不能被项目名称抢占。
类别判断使用站点语义声明、标题词典及可配置的严格匹配或模糊匹配。strictSectionTitleMatch 等站点设置会改变允许的匹配方式,因此同一标签在不同站点不一定产生相同结果。
5.2 实际字段候选优先级
data-matcher.js:573 的 findFieldCandidatesByCategory() 按以下顺序收集候选:
- 对指定的地址相关字段,优先加入站点精确映射结果。
- 加入通用词典匹配结果。
- 加入达到阈值的模糊匹配结果。
- 加入其他站点精确映射结果。
- 加入站点配置中的 AI 字段映射结果。
候选加入时会去重,并排除被安全规则判为不合适的匹配。findFieldByCategory() 返回候选列表第一项。其他调用点可能继续处理候选列表,因此不能把所有填写路径都描述为"按一个分数取第一"。
特别需要注意:当前实现并非所有字段都"站点精确映射优先"。地址链路有特定优先级,普通字段保留了通用词典优先的历史策略。
5.3 相似度含义
字段和类别的基础模糊阈值均为 0.55,这是代码中的规则分数,不是经过标定的正确概率。
data-matcher.js:393 的字符串相似度计算为:
| 条件 | 规则 |
|---|---|
| 两串相等 | 返回 1 |
| 一串包含另一串 | 短串长度 ÷ 长串长度 × 0.9 |
| 其他情况 | 1 − 编辑距离 ÷ 两串最大长度 |
因此,短标签、相近中文词和缺失章节上下文会提高误匹配风险。例如"现居地址"和"户籍地址"虽然文字相近,业务含义不同,需要站点声明、上下文及语义保护共同约束。
5.4 重复经历对齐
教育、实习、工作、项目等数据以数组保存。引擎必须把网页卡片组与数组索引对齐,而不是把所有同名输入框都填成第一条经历。
传统经历流程会定位分区、分组标签,必要时按站点规则新增卡片。字段扫描兜底会提取 groupIndex 和章节信息;路径目录还提供经历序号及部分顺序语义,并维护已消费段落状态。
顺序仍需以实际页面验证。页面可能按最新经历优先、最高学历优先或用户手动排序,不能只依靠页面出现顺序推断。
6. 字段映射兜底的数据契约
6.1 扫描与本地预匹配
扫描器主要处理当前可见、可编辑、为空的控件,并排除密码、上传、验证码、协议和危险操作等对象。每个接受的控件得到本次扫描生成的 ID,与本地元素引用关联。
扫描后先运行本地匹配。对远程服务发送的字段结构包含:
| 属性 | 用途 |
|---|---|
id |
本次扫描中定位字段 |
label、placeholder、type |
描述字段语义和控件类型 |
groupIndex、order |
描述重复块和出现顺序 |
rowContext |
补充同一行的上下文 |
target、localStatus、localMatchedPath |
标记本地匹配状态及是否需要远程补充 |
rowContext 的实现可能读取同一行其他下拉控件的已选文本。因此,虽然扫描器避免发送普通输入框的真实值,也不能笼统宣称请求中绝不包含任何用户选择信息。
6.2 请求内容
renderer.js:6955 调用 POST /api/autofill/map-fields,请求包含:
text
hostname, routeKey, taskId, fingerprint, mappingVersion,
sections, paths, allPaths, usedPaths
其中:
sections:网页章节及字段结构。paths:本轮模型可选择的简历路径目录。allPaths:上下文目录,不等于输出授权清单。usedPaths:本地已经占用的路径。taskId:一次任务的关联标识。fingerprint:页面字段结构指纹。
路径目录条目带 path/category/field 元信息,例如 education[0].school / 第1段教育经历 / 学校名称。这里提供路径及语义,而不是学校名称的真实值;目录的有无和条目数量仍会透露部分简历结构。
6.3 响应与合并
客户端读取 response.mappings。以下仅展示结构,不是抓取到的正式服务响应:
json
{
"success": true,
"mappings": {
"field_example_1": "basicInfo.name",
"field_example_2": "education[0].school"
}
}
renderer.js:7002 先过滤模型对已占用路径的重复分配,再合并本地结果:
js
const mappings = { ...modelMappings, ...localMappings };
所以同一个字段 ID 冲突时,本地映射覆盖模型映射。即使远程请求失败,只要本地映射仍然非空,也可能继续执行;远程不可用并不必然导致所有页面零填写。
真实服务端的模型供应商、提示词、映射过滤和返回模式未包含在当前目录,本文不能确认其内部实现。
7. 执行前保护、控件适配与回读
llm-fallback-runner.js 将映射结果交给已有的 FormHandler,不另造一套控件引擎。执行前检查包括:
- 扫描令牌仍然有效,避免网页重渲染后使用旧映射。
- 字段 ID 属于当前扫描,路径属于本次允许目录。
- 路径使用和敏感字段语义符合规则。
- 元素仍连接在 DOM 中、可见且为空。
- 从本地简历读取值,拒绝将模型生成内容直接作为真实简历值。
字段映射兜底只填写当前可见空字段,不负责点击新增经历、保存、提交或上传。传统站点引擎和特殊流程则可以按已配置的规则展开模块或新增经历。两者的操作边界不能混写。
控件适配处理文本、单选、复选、下拉、多选、日期、搜索、富文本、地址级联等情况。form-handler.js:3279 等位置使用原生 value setter,配合 input/change/blur 或逐字输入事件,使网页框架更新内部状态。
写入之后进行本地回读;无法确认的结果记为 unverified。即使 DOM 回读成功,也不等于招聘网站已经成功保存到服务端。网站保存结果应另行验收,不能与字段写入成功合并统计。
8. 本次页面失败的证据链
用户页面:卡夫亨氏招聘租户,主机名 wecruit.hotjob.cn。Mock 日志中出现以下顺序:
| 顺序 | 请求 | 本地 Mock 行为 | 含义 |
|---|---|---|---|
| 1 | /api/autofill/authorize |
返回授权成功 | 客户端继续准备填写 |
| 2 | /api/autofill/special-runtime/match |
返回未命中特殊流程 | 进入普通流程 |
| 3 | /api/site-config/wecruit.hotjob.cn |
404 | 没有租户配置 |
| 4 | /api/site-config/*.hotjob.cn |
404 | 没有大易平台通配配置 |
| 5 | /api/autofill/map-fields |
501,Mock 未实现字段映射 | 远程兜底没有产生可执行映射 |
日志摘要记录了两组章节和 319/320 条候选简历路径。路径数会随本轮可用目录变化,不能解读为"识别了 320 个网页字段",更不能解读为成功填写数。
截图显示"智能识别服务暂时不可用,页面尚未修改"。结合 Mock 行为,可以确认远程配置与字段映射能力缺失导致本轮无法继续有效填写。尚未读取实际 DOM 前后快照,不能独立证明每一个页面字段都没有变化。
页面的"已适配"提示不构成本次加载成功的证据。真正验收应同时看到配置来源、页面兼容性探针和控件执行结果。
9. 当前结构的优点与薄弱处
| 现有设计 | 带来的价值 | 仍需关注 |
|---|---|---|
| 数据匹配与控件执行分离 | 语义变化和控件变化可以分别处理 | 不同路径的字段描述和结果类型仍需保持一致 |
| 本地规则优先保留 | 避免模型覆盖已确定映射 | 当前规则和站点映射优先级较复杂,需记录实际命中原因 |
| 平台指纹与通配配置 | 支持同平台的多企业租户 | 指纹命中后仍依赖配置服务,可用性需要监控 |
| 路径白名单与扫描令牌 | 限制越界映射和旧页面写入 | 页面持续重渲染、跨 iframe 或 Shadow DOM 仍需专项验证 |
| 复用控件适配器 | 规则引擎和模型兜底使用同一执行能力 | 新框架或定制控件仍会造成写入失败 |
| 模糊匹配阈值 | 提升标签变化时的覆盖 | 0.55 不是置信概率,短词和语义相近字段可能误判 |
| 结果回读 | 降低"写了就算成功"的误报 | DOM 正确、框架状态正确和网站持久化成功是三种证据 |
10. 建议的架构完善方向(尚未实现)
以下内容是改进建议,不代表当前包已经具备。
10.1 统一字段与匹配结果描述
为传统引擎和字段映射路径定义统一描述,至少保留:网页字段 ID、章节、经历组号、标签、控件类型、元素定位证据、页面版本、候选路径、匹配来源、匹配理由、约束检查结果。
单独表示 matched / ambiguous / no_value / excluded / stale / unsupported_control,避免把所有失败都压成"未匹配"。DOM 元素引用保留本地,外发数据只使用必要的结构信息。
10.2 将候选生成与最终决策显式分开
保留当前已验证站点的行为作为兼容基线,先增加可解释记录,再逐站调整优先级。对多个语义接近的候选,应记录第一、第二候选及差距;对姓名、证件、地址、他人信息等高风险字段设置更严格约束。
不要把通用相似度分数直接展示为"正确率"。如果需要置信度,应使用标注样本校准,并按字段类型分别评估。
10.3 把经历对齐作为独立决策
显式记录页面章节、卡片索引、目标简历条目、排序依据和已消费状态。无法确定最高学历优先或时间排序时,允许用户选择顺序,不应默认为数组第一条。
10.4 建立配置兼容与发布闭环
配置应带版本、适用路由、平台证据、验证状态、适用控件和兼容性探针结果。发布前检查选择器覆盖、重复块分组和危险操作边界;发布后保留回滚能力。
只下发"已适配"标志不足以证明当前页面可填。界面可以分别显示"已识别平台""配置已加载""检测到可填写字段"和执行结果。
10.5 完善本地 Mock 能力
当前 Mock 验证了授权和失败分支,尚未覆盖实际字段匹配。建议分三阶段扩展:
- 增加无真实个人信息的固定表单样本,覆盖基本信息、两段教育、日期和下拉。
- 返回有版本的静态站点配置,验证规则引擎与控件执行器。
- 返回固定字段 ID 到路径的映射,用于验证合并、安全检查和失败处理;再单独接入真实模型评估语义能力。
固定映射仅适用于对应扫描或稳定测试表单,不能把某次真实网页的临时字段 ID 永久硬编码到 Mock。Mock 成功也不能替代真实服务端、真实招聘页面和模型效果验收。
11. 验收与观测建议
建议每轮保存任务 ID、配置版本及来源、页面结构指纹、分流路径、各阶段耗时和分类计数。默认只保存路径、字段类型、原因代码等信息,避免将真实简历值、网页 HTML 或原始模型内容写入普通诊断日志。
| 指标或结果 | 统计口径 |
|---|---|
| 候选网页控件数 | 扫描到的候选控件,包含后续排除对象 |
| 可填写字段数 | 通过可见、可编辑、空值及安全检查的字段 |
| 匹配覆盖率 | 有合法映射的可填写字段数 ÷ 可填写字段数 |
| 映射正确率 | 人工标注中映射正确字段数 ÷ 已评估映射字段数 |
| 控件确认率 | 回读确认符合预期的字段数 ÷ 实际尝试写入字段数 |
| 网站保存结果 | 由用户保存后重新读取网站数据,独立记录 |
| 误填与拒绝 | 分别统计误填、主动排除、无简历值、歧义、页面失效、控件不支持 |
验收样例应包括:同名异义字段、多段经历重排、隐藏或已有值字段、动态新增卡片、无效模型路径、重复路径、旧扫描令牌、模型超时及未支持控件。每项记录是否执行及证据,不能只汇总成功案例。
12. 关键代码索引与后续材料
| 内部源文件位置 | 核对内容 |
|---|---|
resume-schema.js:7、:77 |
姓名和学校字段结构 |
content/field-dictionary.js:36、:186 |
姓名与学校别名 |
content/data-matcher.js:90、:393、:573 |
阈值、相似度算法与字段候选顺序 |
content/platform-fingerprint.js:42 |
大易平台识别和通配配置主机名 |
content/site-loader.js:879 |
配置来源和回退选择 |
renderer.js:7849、:7978、:8057 |
注入、服务端配置准备和平台指纹分流 |
renderer.js:6955、:7002、:7027 |
模型请求、结果合并和本地执行 |
content/llm-field-collector.js:847、:899、:945 |
字段结构与扫描结果 |
content/llm-resume-paths.js:158 |
非空简历路径目录 |
content/llm-fallback-runner.js:7 |
执行保护边界 |
content/form-handler.js:3256、:4711 |
文本处理与控件分发 |
此处 content/ 均指 autofill-plugin/content/。行号按本次读取的 ASAR 文件内容计算,更新版本后需重新核对。
继续验证真实平台效果所需材料包括:正式大易站点配置、字段映射服务实现及契约、去除个人信息的网页样本、标注过的字段对应关系,以及带配置版本和任务 ID 的填写回读结果。当前报告尚未覆盖这些服务端和端到端证据。