e10-ebuilder-prototype
v0.5.10
Published
Generate offline E10 application prototypes from published page, modeling-list and workflow menus
Readme
e10-ebuilder-prototype
根据 E10 应用 ID 或后台应用地址生成应用原型,包含已发布菜单中的页面、建模列表和流程页面。 版本 0.5.10;WorkBuddy Skill 新任务默认显式使用并发 8,直接调用 CLI 省略参数时仍默认 6。保持我们的 TypeScript CLI 为主:CLI 管用户所提供登录态的接入、菜单发现、配置采集、截图、任务队列、校验、恢复与打包;宿主 AI 根据完整截图或建模配置生成独立 HTML。CLI 不调用 LLM,不要求额外模型 API Key,也不调用 ui-code-agent 生成。
范围与交付
/api/cusapp/app/allMenus?appId=ID&terminalType=PC&isFront=0决定范围,未发布到 PC 菜单的页面/表单不生成独立入口;流程关联表单可作为字段和布局依赖采集。实际菜单名称、层级、顺序、默认项、同名入口均保留;回收站和设置排除。- PAGE 菜单对应普通搭建、ECode HTML、ECode React,统一截图并由宿主还原;同一页面的多个菜单共享产物而不合并入口。
- SEARCH/VIEWPORT 按当前菜单的传统列表/NList 配置生成,不取一个表单的首列表。LAYOUT 直接打开对应增/查/改模式;支持已识别的 EB URL 和组合菜单标签。
- 表单迁入参考包的采集契约、按钮隔离、字段控件与视图规范、增改查、主明细、评论/日志、本地 Mock 交互规范;同表单的多菜单共享记录。未知组件/条件/动作明确记录替代方式,不把未知后台动作接到线上。
- 主框架由 CLI 固定生成,商务蓝风格;无顶部预览/设计/设置按钮。菜单仅切换本地 iframe,主框架不刷新。支持搜索、分组折叠、浏览器前进后退、刷新与移动端导航。
- 解压后直接打开
index.html,不需要本地服务器。各业务 HTML 单独打开也可使用。
index.html
page/<页面ID>/<页面ID>.html
page/<页面ID>/<名称>.png
form/<菜单键>/<菜单键>.html
form/<菜单键>/<名称>.png
manifest.json组合子菜单的菜单键为 <父菜单键>-<子菜单ID>。表单目录不用 objId 或底层 formId,避免多个入口覆盖。
ZIP 名为 应用页面-<appId>.zip,位于任务目录 artifacts/;本地入口为 artifacts/site/index.html。
原始表单配置、私有布局参考、真实参考记录 ID、草稿和认证信息不进入 ZIP。
页面 PNG 是源站截图;表单 PNG 是从生成 HTML 离线渲染的效果图。
使用
需要 Node >=22.5、npm 和已安装 Google Chrome,playwright-core 固定 1.62.1,不下载浏览器。
WorkBuddy 推荐导入 e10-ebuilder-prototype-workbuddy-registry-0.5.10.zip,首次使用自动安装固定版本。直接使用 CLI 时:
npm install -g [email protected] --registry=https://registry.npmmirror.com
e10-ebuilder-prototype auth set --base-url https://your-e10.example.com --eteamsid-stdin
e10-ebuilder-prototype run --app-id 1234567890123456789 --dir ./work/app-demo --concurrency 8 --json
# 或使用后台应用地址:
e10-ebuilder-prototype run --app-url "https://your-e10.example.com/sp/ebdapp/detail/1234567890123456789" --dir ./work/app-demo --concurrency 8 --json登录值从标准输入传入并加密保存;支持 auth status / auth status --local / auth profile list|current|use NAME。
ETEAMSID 由用户取得并提供;工具负责接收、校验、加密保存,并注入任务专用浏览器和源站请求。用户已提供新值时直接通过 auth set --base-url <环境地址> --eteamsid-stdin 接入,成功后继续任务。缺失或失效且没有新值时停止并索取,不代用户登录、不使用账号密码或调用登录桥接 Skill。保留原任务目录,已有失败源按 sourceRecovery 重试。auth status --local 仅检查本地配置,不证明服务端登录态有效;凭据不在回复或日志中回显。
地址会解析 ID 并核对环境,已有任务还绑定用户与租户。ID 保持字符串,不转成浮点数。
状态目录 .e10-page-capture 与 E10_PAGE_CAPTURE_HOME/CHROME 等设置沿用,既有登录无需迁移。
run 完成确定性工作后停在 HTML,由宿主继续:
e10-ebuilder-prototype html next --dir ./work/app-demo --brief --json
# 宿主读取各 job 的 promptPath,写完整草稿;CLI 离线渲染后实际看图
e10-ebuilder-prototype html inspect --dir ./work/app-demo --kind page --page-id "<ID>" --token "<TOKEN>" --json
e10-ebuilder-prototype html accept --dir ./work/app-demo --kind page --page-id "<ID>" --token "<TOKEN>" --refill --brief --json
e10-ebuilder-prototype html accept --dir ./work/app-demo --kind form --page-id "<菜单键>" --token "<TOKEN>" --json
e10-ebuilder-prototype pack --dir ./work/app-demo --concurrency 8 --json同一个生成队列默认最多 6 个任务,可按用户需求 --concurrency 1..8。page 输入 screenshotPath;form 输入 sourcePath,附带 generationPath 去重生成视图和 contextPath 原始分片回退索引、guidePath 当前页面类型的精简规范及 referenceGuidePath 按需参考手册、runtimePath 固定存储脚本及 navigationPath 已发布目标映射。一个协调者串行 accept/fail/next,任务只写自己的草稿;宿主支持且允许并行时补位执行,否则如实采用顺序生成。
生成文件为真实 DOM、内联 CSS/JS/SVG,无外部资源或后台调用。页面忠实还原视觉结构,空数据用一致 Mock 内容填充。表单按当前模式/字段/选项/按钮及布局依据生成,固定种子约 20 条主记录、明细每条 2–5 行;所有统计由数据推导。完整规范随 CLI 打包,不能用“能打开表格”代替验收。
独立部署检测兼容(0.5.1)
isIndependentDeploy 请求失败时,默认按非独立部署继续采集,并记录兼容提示。需要部署路由的接口使用 /api/ebuilder/form/;检测成功返回 true 时使用 /api/ebuilder{appId}/form/。后续配置接口的真实错误照常报告,采集未成功不会标为完成。
传统列表配置(0.5.2)
基础设置、显示列、搜索、统计和固定条件统一使用 /api/bs/ebuilder/form/ 接口,URL 在原参数基础上增加小写 appid。这些接口固定走后台路径,需要账号具备应用后台访问权限,不受独立部署检测结果影响。列表初始化、排序、按钮等接口沿用各自路径。
固定条件接口成功但未返回 data 时按未配置条件处理;权限、HTTP 和业务错误仍明确报错。已有失败任务可在升级后执行 retry --dir <原任务目录>。
参考布局与临时记录
默认只读业务记录:先读取至多一条现有记录,若可用则请求导出 HTML 作为私有布局参考;没有参考时根据全部自定义字段生成布局,报告缺项。导出可能在源站生成参考文件。
与参考包相同的临时记录能力已迁入。明确允许这类采集写入时,在新任务加 --allow-temporary-records。启用后,如无法取得现有布局,按可构造字段创建最多一条带唯一标记的参考记录/表单,用它取得布局及查改按钮,随后按确切 ID 和标记删除并回查。不能可靠构造必填人员/关联/明细时使用字段兜底。
创建前原子记录私有台账;响应丢失不重放写入,恢复时按精确标记只读核实;删除前再次核验归属,删除响应丢失只回查,不重复删除。清理未确认会阻止新临时写入和打包,恢复登录后 collect 先处理台账。默认不会因为读取参考包就自动开启线上写入。最终原型的操作始终只改本地 Mock 数据。
状态与恢复
DISCOVER → COLLECT → CAPTURE → HTML → PACKAGE → DONE/PARTIAL;需要登录时 WAITING_AUTH。
顶层 next|status 只读,html next 分配任务。run --dir DIR 恢复中断,校验通过的配置/PNG/HTML复用。
retry 重试失败配置/截图并重置失败生成;html retry 只重试 HTML。HTML/打包不读取登录环境。
接收后需修正某页可用 html retry --kind page|form --page-id ID --dir DIR,只重开指定目标。
html fail --kind page|form --page-id ID --token TOKEN --reason TEXT 记录生成失败,其余目标继续。
待完成任务阻止打包。采集、截图或生成失败只能交付 PARTIAL 和明确失败占位;不能当成已接入表单。 表单打包必须在离线 Chrome 初始化成功且无脚本错误;渲染失败可通过 html retry 修复。 所有产物及最终 ZIP 以 SHA-256 校验。退出码 0 正常、2 PARTIAL、1 阻断错误。 旧目录无 menuRequired 时保留旧清单/占位语义,使用新目录启用本次功能。
固定 E10FormStore 提供 load/save/reset、navigate/parameters。主框架验证发送窗口和对象范围,按 appId:objId 存储;独立打开有 localStorage/内存回退。同表单多列表共享主数据,筛选、按钮和草稿独立。浏览器禁止持久化时回退仅维持当前会话。
截图和资源限制
PC 默认 1440×900,MOBILE-only 页面 390×844;默认并发 6。页面初始渲染上限 10 秒、稳定窗口 800ms;超时本轮失败,其他可恢复失败额外重试一次。就绪后立即继续,不固定睡眠。 只用页面组件请求、可见加载、字体/图片、主体内容与稳定性判断;全局后台请求不阻塞。随后滚动检查、编码和清理另有边界,详见协议。
截图覆盖当前已加载/可滚动内容,不自动点击标签或分页。承载 EB 主体的 iframe 完整滚动展开,普通内嵌网站保留设计视口。稳定业务错误可原样截图并带 warning,未知空白、超时、身份失效、内容丢失仍失败。源站错误截图不等于业务功能健康。
每次尝试结束即关 Page,批次结束关本工具创建的上下文与 Chrome。默认最大高度 50000px、60M 像素。仅关闭自己拥有的进程;清理失败阻止完成。
测试和 Skill 交付
npm ci --registry=https://registry.npmjs.org/
npm test
npm run test:package
npm run pack:skillartifacts/ 生成 npm tarball、本地版 Skill ZIP、registry 四文件版 Skill ZIP。本地版含本产品 tarball 及散列,依赖从淘宝 npm 镜像安装;registry 版从 https://registry.npmmirror.com 安装固定版本,与 WorkBuddy 中 ui-code-agent 对齐,要求对应版本已在官方 npm 发布并同步镜像。npm 发布使用 https://registry.npmjs.org/。打包命令不会自动发布 npm 或上传 Skill。
WorkBuddy 推荐提示词和执行流程见 Skill,迁入能力对应关系见 表单能力核对,协议见 PROTOCOL。
Windows 使用原生 Node,无需 Bash/WSL/Python;支持 WorkBuddy 内置 npm、中文/空格路径、受控进程清理与暂时文件占用重试。系统 Chrome 自动发现,非标准位置可指定 E10_PAGE_CAPTURE_CHROME。
npm run test:windows 必须在 Windows 实机执行;macOS 的模拟分支不算实机通过,详见 WINDOWS。
流程菜单(0.5.0)
支持已发布的待办、已办、我提交的、共享、下属待办、全部流程、草稿、流程监控和流程新建入口,包含 WORKFLOW、明确 workflow URL 和组合子标签。只生成真实菜单;流程引用但没有独立菜单的 EB 表单仅作为字段/选项/布局依赖采集。普通表单的各菜单配置和按钮保持独立。
流程列表的列、标签、筛选和按钮来自内置固定原型模板;目录接口提供真实流程名称和关联表单,不读取真实流程实例/审批权限。宿主按 CLI 的 workflow-guide 生成右侧页面,固定 E10WorkflowStore 负责本地已读、批量提交、草稿续填、收藏/关注、实例评论以及关联记录联合保存。所有流程动作仅修改本地模拟数据。流程仍使用 kind=form 队列和 form/<菜单键>/ 交付路径,job.workflowType 区分流程类别。
完整流程协议见 PROTOCOL.md。
WorkBuddy 生成效率(0.5.5)
先执行 status 检查智能体团队。0.5.6 候选在未开启或无法确认时返回 blocked=true、
WAITING_HOST 和固定 userMessage,WorkBuddy 必须立即向用户展示并等待开启、重启和复查;
安装、认证写入、采集、生成和打包均被阻止,不提供串行降级。ready 仅表示运行时已安装,
taskReady 才同时反映宿主前置条件。已有任务和产物保留,复查通过后从原目录继续。
宿主检查通过、首次 status 运行时未就绪时仅提示“首次使用需要初始化工作环境,大概需要几分钟,完成后自动继续。” ensure 保留后台进度与耗时,成功后自动继续,后续正常使用不再提示初始化或依赖名称。不要给 CLI 命令附加 tail 或吞掉退出码。
页面先看完整原图再写完整首版,不要求逐像素测量。html inspect 统一生成离线校对截图,
相同源码与完整截图可复用;宿主实际看图并集中修正,最多两轮视觉微调。CLI 按 token 记录不同 HTML 版本;首版加两轮之后,具体业务缺项或运行错误修复需追加 --repair-reason "具体问题" 并留痕。不能因预算用完就跳过 ready 验证。
WorkBuddy 的所有 Agent 子任务按主任务当前请求/配置的完整模型 ID 选择:ID 以 custom 开头时,显式传相同的完整 ID(例如 custom-local:deepseek-v4-flash);否则显式传 fast-model。首次派发、补位、重派和 Agent 恢复均执行同一规则;主模型变更只影响后续调用。0.5.10 由代码读取宿主注入的 CODEBUDDY_CURRENT_MODEL_ID,在 host.modelPolicy 返回证据并把选中的 model 直接填入每份 WorkBuddy job.dispatch;Skill 原样使用完整参数,不再让主模型判断前缀,不使用响应中的底层型号判断,不省略 model,也不使用 auto/default/inherit/lite 代替。宿主未提供可靠主模型 ID 时使用 fast-model,并说明未能识别;不扫描私有配置或日志来猜测。选中模型被拒绝或宿主明确覆盖时停止新增派发并报告,不静默回退。自定义服务与快速档都可能触发限额,不承诺额度独立、自动分散或无限容量。
后台生成完成一个接收一个;新任务首次用 html next --host-events '[]' 启用持久登记,
随后只提交原生 started/terminal 增量事件,CLI 保留未确认退出的额度。旧任务继续
--host-active-tokens 快照协议,不混用。只派发 host.dispatchTokens。子任务 ready 后直接
最终回复并结束,不提前 SendMessage 报完成;有原生任务退出未确认时保留槽位,全部终态后才打包。
promptPath 将页面细节留在对应子任务。连接失败确认旧写者已退出后恢复一次,已有草稿可继续;持续失败明确报告。
并发额度不是实际活跃数,也不保证线性提速,结论以同输入同模型的实际验收计时为准。
0.5.6 候选为协调者增加 host.reconcile 和只读 html watch:本批仅一个后台 Bash 检查,
回执变化或 60 秒到期后唤醒宿主核对原生状态;超时和 ready 均不自动释放名额。
activeCount 明确为已派发未确认退出数,已交付待退出和异常状态分别报告。
--brief 配合原生活跃 token 快照时,已派发任务只返回身份字段,减少反复复制完整描述。
底层取消后自动重试必须确认写者已退出;CLI 检查通过不等于桌面宿主通知链路已验证。
0.5.5 返回宿主后台能力预检、实际生效参数与失败源的直接恢复命令; 续跑参数冲突明确报错,截图仍维持默认 10 秒上限。WorkBuddy 设置 → 智能体 → 智能体团队管理应处于启用状态,并确认原生 Agent 返回后台任务编号和独立完成事件。 0.5.9 新表单任务按类型、显示/增改查/流程模式及有无明细安排同类代表页:全部检查 1440 桌面,代表页另查 390 手机;旧任务保持双视口。不同页面的手机效果不由抽样自动保证,未检查范围如实说明。 macOS 受控 Chrome 关闭自动更新使用的临时应用克隆,不修改宿主文件保护。 生成任务只读当前页面类型的精简指南,完整手册按需查阅;不为多截状态反复改写成品。
0.5.6 候选的表单/流程 worker 先读 generationPath:重复配置以引用或明确差异保留,
未知属性、按钮条件/完整动作链与模式差异都保留,并由 CLI 校验还原完整性。
参考 HTML 提取字段父子结构和主明细绑定,脚本/样式/真实记录不再整份必读;
原始 contextPath 留作无法识别部分的定向回退。业务表单本身仍由宿主 AI 生成,
此改动不代表固定渲染器,也不代表所有业务交互已经通过验收。
离线输入体积与预处理耗时见 docs/acceptance/worker-context-0.5.6-20260917.md。
0.5.6 本地候选补充:新 WorkBuddy 任务用 html next --host-events '[]' 启用轻量任务登记,
后续只提交真实原生 started/terminal 事件,不重复手抄整个活跃 token 数组。已有任务保留原协议。
表单严格沿用原包功能范围;固定 E10FormUI 接管常见字段、筛选排序分页和配置允许的草稿事务,
AI 决定布局与有来源的映射;暂未覆盖的原包能力仍需按原规范模拟/披露,不能默认删掉。
校对和打包共用 file URL 加载,打包失败保留具体诊断以便定向修复。上述改动尚不代表新一轮
整应用生成提速实测,也不代表已经全面固定实现原包所有控件/动作。
0.5.6 候选的 CLI 已按命令分支加载实现;状态、认证、队列和宿主前置拦截不再提前初始化 浏览器和打包依赖。playwright-core 仅在实际启动 Chrome 时加载,校对缓存命中也不加载。 每条命令仍是独立 Node 进程,bootstrap 的运行时文件摘要与固定依赖检查继续执行; 此项优化减少启动开销,源站请求、截图、离线渲染和 AI 生成耗时仍取决于实际工作量。
0.5.9 表单验收统一按 job.review 和精简契约:普通页检查一个关键入口/字段绑定,代表页检查一条完整主路径;特殊动作或修复只补相关路径,不逐页重复通用组件全功能回归。原包功能范围和双尺寸布局能力保留。html interact 对同 HTML/配置/运行时、步骤、视口且证据完好的成功结果直接复用;失败、变化或证据损坏会重新执行。打包仍校验实际交付路径的离线初始化和脚本错误。
