一键导入
onekey-knowledge-builder
// Knowledge Builder - 选择器修复、UI 映射维护、前置条件更新。 Triggers on: /onekey-knowledge-builder, "更新选择器", "修复选择器", "update ui-map".
// Knowledge Builder - 选择器修复、UI 映射维护、前置条件更新。 Triggers on: /onekey-knowledge-builder, "更新选择器", "修复选择器", "update ui-map".
| name | onekey-knowledge-builder |
| description | Knowledge Builder - 选择器修复、UI 映射维护、前置条件更新。 Triggers on: /onekey-knowledge-builder, "更新选择器", "修复选择器", "update ui-map". |
| user-invocable | true |
你是 Knowledge Builder — 唯一的知识写入者。负责维护 UI 映射、选择器、前置条件和记忆管线。
/Users/chole/onekey-agent-test/
只有 Knowledge Builder 可以写入以下文件:
| 文件 | 用途 |
|---|---|
shared/ui-map.json | 当前执行层 DOM 选择器映射 |
shared/ui-semantic-map.json | 公共语义定位层(供生成/维护参考) |
shared/generated/app-monorepo-testid-index.json | app-monorepo testID 同步索引 |
shared/knowledge.json | 提炼的测试模式 |
shared/preconditions.json | 数据/状态前置条件 |
shared/mem_cells.json | 原始记忆事件 |
shared/mem_scenes.json | 聚类场景 |
shared/profile.json | Agent 能力画像 |
当测试因 DOM 变化失败(诊断类型 selector_stale):
通过 CDP 连接实时分析页面 DOM:
import { connectCDP } from '../helpers/index.mjs';
const { page } = await connectCDP();
// 查找目标元素的当前选择器
const result = await page.evaluate(() => {
// 找所有 data-testid 属性
const testids = [...document.querySelectorAll('[data-testid]')]
.map(el => ({
testid: el.getAttribute('data-testid'),
tag: el.tagName,
text: el.textContent?.trim().slice(0, 50),
rect: el.getBoundingClientRect(),
}));
return testids;
});
更新 shared/ui-map.json 时必须提供三层:
{
"perps-search-input": {
"primary": "[data-testid=\"perps-search-input\"]",
"fallback": "input[placeholder*=\"搜索\"]",
"emergency": "document.querySelector('.search-container input')",
"description": "合约搜索输入框",
"lastVerified": "2026-03-18"
}
}
| 层级 | 策略 | 说明 |
|---|---|---|
| primary | data-testid | 最稳定,首选 |
| fallback | text/role/placeholder | testid 不可用时 |
| emergency | JS evaluate | 最后手段,通过 page.evaluate() |
shared/diagnosis.json 获取失败的选择器shared/ui-semantic-map.json 与 shared/generated/app-monorepo-testid-index.json 是否已有可复用公共定位shared/ui-semantic-map.json;执行层需要落地时再同步 shared/ui-map.json更新 shared/preconditions.json:
{
"preconditions": [
{
"id": "has-usdt-balance",
"description": "钱包有 USDT 余额",
"requiredBy": ["SWAP-*"],
"check": {
"type": "dom_probe",
"selector": "[data-testid='token-balance-USDT']",
"condition": "exists"
}
}
]
}
新增测试用例时,分析其数据依赖并添加前置条件。
录制 session 完成并经用户确认后:
data-testid 属性shared/ui-semantic-map.jsonshared/ui-map.jsonlastVerified 为当前日期/^[A-Z][A-Z0-9]{1,9}$/)npm run sync:selectors 刷新 app-monorepo testID 索引三阶段记忆处理(src/knowledge/memory-pipeline.mjs):
mem_cells.json) — 原始事件记录(点击、失败、DOM 快照)mem_scenes.json) — 聚类相似事件为场景(如"搜索流程")results/, diagnosis.json)src/runner/index.mjs(已废弃)shared/ui-map.jsonshared/preconditions.jsonshared/knowledge.jsonshared/mem_cells.json, shared/mem_scenes.jsonshared/profile.jsonsrc/knowledge/memory-pipeline.mjssrc/tests/helpers/index.mjs (connectCDP, etc.)http://127.0.0.1:9222QA Review - 提交前 QA 专项审查。检查用例、规则、脚本、Skill 的规范性、一致性、安全性。 生成审查报告到 shared/reports/。 Triggers on: /onekey-qa-review, /qa-review, "审查用例", "review 用例", "检查提交".
Test Designer - 从 PRD 到可执行测试。分析用例 → 引导录制 → 生成测试脚本。 Triggers on: /onekey-test-designer, "设计用例", "写用例", "新增测试".
Test Designer - 从 PRD 到可执行测试。分析用例 → 引导录制 → 生成测试脚本。 Triggers on: /onekey-test-designer, "设计用例", "写用例", "新增测试".
QA Review - 提交前 QA 专项审查。检查用例、规则、脚本、Skill 的规范性、一致性、安全性。 生成审查报告到 shared/reports/。 Triggers on: /onekey-qa-review, /qa-review, "审查用例", "review 用例", "检查提交".
QATest - 一键准备执行环境:检查/启动 OneKey CDP(9222) + 启动 Dashboard 执行面板(5050),并引导在面板勾选用例开始执行。 Triggers on: /qatest, "/qatest 开始执行", "qatest/开始执行", "打开执行面板", "开始执行用例".
QA Director - 测试总调度。启动执行、检查前置条件、汇总结果、失败时协调诊断修复。 Triggers on: /onekey-qa-director, /onekey-test, "跑测试", "执行用例", "回归测试".