@microi.net/cli 5.8.5 → 5.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (211) hide show
  1. package/.codebuddy-plugin/marketplace.json +2 -2
  2. package/.codebuddy-plugin/plugin.json +1 -1
  3. package/.codex-plugin/plugin.json +1 -1
  4. package/.mcp.json +1 -1
  5. package/.workbuddy-plugin/marketplace.json +2 -2
  6. package/.workbuddy-plugin/plugin.json +1 -1
  7. package/LICENSE +21 -21
  8. package/README.md +71 -71
  9. package/assets/build-meta.json +6 -6
  10. package/assets/feature-matrix.json +138 -138
  11. package/assets/logo.svg +4 -4
  12. package/cordis.patch.yml +1 -1
  13. package/package.json +1 -1
  14. package/scripts/codex-marketplace.json +20 -20
  15. package/scripts/mcp-codex-stdio-adapter.js +189 -189
  16. package/scripts/mcp-trae-windows-launcher.cmd +21 -21
  17. package/scripts/microi-cli-mcp.js +7 -7
  18. package/scripts/microi-cli.js +66 -65
  19. package/scripts/microi-codex-broker.js +450 -450
  20. package/scripts/microi-codex-router.js +618 -618
  21. package/scripts/microi-skills.meta.json +384 -384
  22. package/skills/.microi-skills-version.json +2 -2
  23. package/skills/.progressive-disclosure-manifest.json +3566 -3566
  24. package/skills/README.md +287 -287
  25. package/skills/ai-engine/SKILL.md +269 -265
  26. package/skills/ai-engine/agents/openai.yaml +4 -4
  27. package/skills/ai-engine/references/ai-employees.md +48 -48
  28. package/skills/ai-engine/references/self-hosted-digital-human.md +59 -59
  29. package/skills/ai-platform-governance/SKILL.md +177 -177
  30. package/skills/ai-platform-governance/references/progressive-01-/345/212/237/350/203/275/345/274/200/345/205/263.md +190 -190
  31. package/skills/app-store/SKILL.md +525 -525
  32. package/skills/app-store/agents/openai.yaml +4 -4
  33. package/skills/business-blueprint/SKILL.md +193 -193
  34. package/skills/datasource-engine/SKILL.md +93 -93
  35. package/skills/datasource-engine/agents/openai.yaml +4 -4
  36. package/skills/dos-orm/SKILL.md +97 -97
  37. package/skills/dos-orm/references/api-reference.md +229 -229
  38. package/skills/email-engine/SKILL.md +81 -81
  39. package/skills/email-engine/references/v8-email.md +34 -34
  40. package/skills/job-engine/SKILL.md +176 -176
  41. package/skills/job-engine/agents/openai.yaml +4 -4
  42. package/skills/message-notification/SKILL.md +156 -156
  43. package/skills/message-notification/agents/openai.yaml +5 -5
  44. package/skills/message-notification/references/contracts.md +102 -102
  45. package/skills/microi/SKILL.md +14 -14
  46. package/skills/microi-ai-app-auth.js +652 -652
  47. package/skills/microi-ai-application/SKILL.md +115 -115
  48. package/skills/microi-ai-application/agents/openai.yaml +4 -4
  49. package/skills/microi-ai-application/references/frontend-baseline.md +164 -164
  50. package/skills/microi-client-frontend/SKILL.md +244 -244
  51. package/skills/microi-client-frontend/references/progressive-01-3-/345/212/250/346/200/201/346/214/211/351/222/256/347/263/273/347/273/237.md +144 -144
  52. package/skills/microi-client-frontend/references/progressive-02-8-/350/277/220/350/241/214/346/227/266/351/253/230/351/242/221/345/235/221/345/244/215/347/233/230.md +196 -196
  53. package/skills/microi-client-frontend/references/progressive-03-vue3-/345/211/215/347/253/257/345/276/256/346/234/215/345/212/241/345/256/277/344/270/273/350/247/204/345/210/231.md +167 -167
  54. package/skills/microi-codex/SKILL.md +102 -102
  55. package/skills/microi-codex-installer/SKILL.md +231 -231
  56. package/skills/microi-codex-installer/agents/openai.yaml +7 -7
  57. package/skills/microi-datasource-mapping/SKILL.md +122 -122
  58. package/skills/microi-db-schema/SKILL.md +175 -175
  59. package/skills/microi-db-schema/agents/openai.yaml +4 -4
  60. package/skills/microi-db-schema/references/core-tables.md +695 -695
  61. package/skills/microi-db-schema/references/form-component-options.md +256 -256
  62. package/skills/microi-db-schema/references/schema-overview.md +202 -202
  63. package/skills/microi-db-schema/references/schema.md +646 -646
  64. package/skills/microi-db-schema/references/table-catalog.md +1599 -1599
  65. package/skills/microi-deployment/SKILL.md +221 -221
  66. package/skills/microi-deployment/references/deployment-matrix.md +109 -109
  67. package/skills/microi-docs-coverage/SKILL.md +133 -133
  68. package/skills/microi-docs-coverage/references/capability-map.md +91 -91
  69. package/skills/microi-docs-coverage/scripts/audit-doc-skill-coverage.mjs +894 -894
  70. package/skills/microi-form-engine/SKILL.md +333 -333
  71. package/skills/microi-form-engine/references/component-catalog.md +218 -218
  72. package/skills/microi-form-engine/references/data-source-events.md +124 -124
  73. package/skills/microi-form-layout/SKILL.md +205 -205
  74. package/skills/microi-form-layout/references/progressive-01-3-/344/270/211/347/247/215/345/210/206/347/273/204/347/232/204/345/255/230/345/202/250/344/270/216/351/205/215/347/275/256.md +235 -235
  75. package/skills/microi-frontend-sdk/SKILL.md +194 -194
  76. package/skills/microi-frontend-sdk/references/progressive-01-token-/345/275/223/345/211/215/347/231/273/345/275/225/347/224/250/346/210/267/344/270/216/345/275/223/345/211/215/347/273/210/347/253/257/347/231/273/345/275/225/345/215/217/350/256/256.md +176 -176
  77. package/skills/microi-left-right-layout/SKILL.md +141 -141
  78. package/skills/microi-microservice/SKILL.md +326 -324
  79. package/skills/microi-microservice/references/runtime-delivery.md +278 -278
  80. package/skills/microi-mobile-app-quality/SKILL.md +185 -185
  81. package/skills/microi-mobile-app-quality/references/progressive-01-4-/351/207/215/350/246/201/346/214/211/351/222/256/345/277/205/351/241/273/345/270/246/345/233/276/346/240/207.md +213 -213
  82. package/skills/microi-mobile-app-quality/references/progressive-02-9-/344/270/273/351/242/230/345/210/207/346/215/242/345/277/205/351/241/273/347/234/237/345/256/236/344/270/224/345/205/250/345/261/200/347/224/237/346/225/210.md +128 -128
  83. package/skills/microi-solution-quotation/SKILL.md +78 -78
  84. package/skills/microi-solution-quotation/agents/openai.yaml +4 -4
  85. package/skills/microi-solution-quotation/scripts/build_solution_quote.py +296 -296
  86. package/skills/microi-sso/SKILL.md +92 -92
  87. package/skills/microi-sso/references/acceptance.md +49 -49
  88. package/skills/microi-sso/references/configuration-and-security.md +53 -53
  89. package/skills/microi-sso/references/inbound.md +53 -53
  90. package/skills/microi-sso/references/outbound.md +39 -39
  91. package/skills/microi-system-delivery/SKILL.md +137 -137
  92. package/skills/microi-system-delivery/references/progressive-01-/346/240/207/345/207/206/345/267/245/344/275/234/346/265/201.md +193 -193
  93. package/skills/microi-system-delivery/references/progressive-02-/350/207/252/345/212/250/345/214/226/346/265/213/350/257/225/345/277/205/351/241/273/350/246/206/347/233/226/347/232/204/345/235/221.md +217 -217
  94. package/skills/microi-ui/SKILL.md +192 -192
  95. package/skills/microi-ui/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/234/272/346/231/257/350/223/235/345/233/276.md +183 -183
  96. package/skills/microi-uniapp-frontend/SKILL.md +193 -193
  97. package/skills/microi-uniapp-frontend/references/progressive-01-/347/247/273/345/212/250/347/253/257/345/210/206/347/261/273-/345/217/214/346/240/217/345/210/227/350/241/250/347/213/254/347/253/213/346/273/232/345/212/250.md +225 -225
  98. package/skills/microi-uniapp-frontend/references/progressive-02-/345/205/263/351/224/256/344/270/232/345/212/241/350/265/204/344/272/247/344/270/215/345/276/227/351/273/230/350/256/244/351/200/211/344/270/255.md +154 -154
  99. package/skills/microi.v8.js +1921 -1921
  100. package/skills/module-engine/SKILL.md +255 -255
  101. package/skills/module-engine/references/module-config.md +204 -204
  102. package/skills/ocr-engine/SKILL.md +113 -113
  103. package/skills/ocr-engine/agents/openai.yaml +4 -4
  104. package/skills/page-engine/SKILL.md +206 -206
  105. package/skills/page-engine/examples/compact-dashboard.json +1444 -1444
  106. package/skills/page-engine/references/progressive-01-/346/211/200/346/234/211/347/273/204/344/273/266/347/261/273/345/236/213.md +234 -234
  107. package/skills/page-engine/references/progressive-02-/347/211/210/346/234/254/345/216/206/345/217/262-/345/271/266/345/217/221/344/277/235/345/255/230/344/270/216/345/233/236/346/273/232.md +60 -60
  108. package/skills/performance-testing/SKILL.md +221 -221
  109. package/skills/playwright-e2e/SKILL.md +196 -196
  110. package/skills/playwright-e2e/references/progressive-01-/345/205/250/350/207/252/345/212/250/347/231/273/345/275/225-/345/205/215/351/252/214/350/257/201/347/240/201-/344/275/206/344/270/215/345/205/215/345/257/206/347/240/201-/345/277/205/350/257/273.md +173 -173
  111. package/skills/playwright-e2e/references/progressive-02-/346/226/207/345/255/227/345/257/271/346/257/224/345/272/246/344/270/216/345/217/257/350/257/273/346/200/247/350/207/252/345/212/250/345/214/226/346/243/200/346/237/245-/345/277/205/345/201/232.md +183 -183
  112. package/skills/playwright-e2e/references/progressive-03-microi-helper-/346/250/241/346/235/277.md +221 -221
  113. package/skills/playwright-e2e/references/progressive-04-ci-/345/273/272/350/256/256.md +115 -115
  114. package/skills/print-engine/SKILL.md +259 -259
  115. package/skills/production-readonly-audit/SKILL.md +41 -41
  116. package/skills/report-engine/SKILL.md +71 -71
  117. package/skills/report-engine/agents/openai.yaml +4 -4
  118. package/skills/scripts/optimize-progressive-disclosure.mjs +204 -204
  119. package/skills/scripts/refresh-progressive-disclosure.mjs +64 -64
  120. package/skills/scripts/sync-embedded-skills.mjs +46 -46
  121. package/skills/scripts/validate-progressive-disclosure.mjs +57 -57
  122. package/skills/search-engine/SKILL.md +75 -75
  123. package/skills/search-engine/agents/openai.yaml +4 -4
  124. package/skills/spider-engine/SKILL.md +190 -190
  125. package/skills/system-observability/SKILL.md +248 -248
  126. package/skills/system-observability/references/memory-incident-triage.md +77 -77
  127. package/skills/translate-engine/SKILL.md +140 -140
  128. package/skills/translate-engine/agents/openai.yaml +4 -4
  129. package/skills/ui-design/SKILL.md +223 -223
  130. package/skills/ui-design/assets/pattern-showcase/app.js +54 -54
  131. package/skills/ui-design/assets/pattern-showcase/index.html +163 -163
  132. package/skills/ui-design/assets/pattern-showcase/styles.css +311 -311
  133. package/skills/ui-design/assets/templates/MCI-DESIGN.md +206 -206
  134. package/skills/ui-design/references/design-pattern-library.md +184 -184
  135. package/skills/ui-design/references/mci-design-contract.md +163 -163
  136. package/skills/ui-design/references/motion-and-media.md +78 -78
  137. package/skills/ui-design/references/product-flow-recipes.md +94 -94
  138. package/skills/ui-design/references/progressive-01-/351/242/234/350/211/262/344/275/223/347/263/273-css-variables-/346/224/257/346/214/201/344/270/273/351/242/230/345/210/207/346/215/242.md +218 -218
  139. package/skills/ui-design/references/progressive-02-/345/255/227/344/275/223.md +164 -164
  140. package/skills/ui-design/references/progressive-03-/345/212/250/346/225/210/350/247/204/350/214/203-/344/270/260/345/257/214/344/275/206/344/270/215/345/215/241.md +235 -235
  141. package/skills/ui-design/references/progressive-04-/347/273/204/344/273/266/351/243/216/346/240/274/351/200/237/346/237/245.md +152 -152
  142. package/skills/ui-design/references/progressive-05-/347/247/273/345/212/250/347/253/257/344/270/223/347/224/250/350/247/204/350/214/203.md +238 -238
  143. package/skills/ui-design/references/progressive-06-/344/270/273/351/242/230/345/210/207/346/215/242/345/256/236/347/216/260.md +194 -194
  144. package/skills/ui-design/references/progressive-07-/351/200/237/346/237/245-/344/273/216/345/244/264/346/220/255/345/273/272/344/270/200/344/270/252/347/247/273/345/212/250/347/253/257/351/241/265/351/235/242.md +207 -207
  145. package/skills/ui-design/references/progressive-08-/350/241/250/345/215/225/345/210/206/347/273/204/350/247/204/350/214/203-tabs-vs-collapsegroup-/345/274/272/345/210/266.md +142 -142
  146. package/skills/uniapp-mall-assets/SKILL.md +176 -176
  147. package/skills/unity-integration/SKILL.md +171 -171
  148. package/skills/unity-integration/agents/openai.yaml +4 -4
  149. package/skills/unity-integration/references/ai-app-delivery.md +119 -119
  150. package/skills/unity-integration/references/sdk-api.md +82 -82
  151. package/skills/unity-integration/references/toolbox-migration.md +66 -66
  152. package/skills/unity-integration/references/webgl-hosting.md +57 -57
  153. package/skills/v8-api-config/SKILL.md +388 -388
  154. package/skills/v8-cache-pattern/SKILL.md +312 -312
  155. package/skills/v8-crud-api/SKILL.md +178 -178
  156. package/skills/v8-crud-api/references/progressive-01-/346/237/245/350/257/242/345/210/227/350/241/250-/345/210/206/351/241/265.md +226 -226
  157. package/skills/v8-crud-api/references/progressive-02-where-/346/235/241/344/273/266/350/257/255/346/263/225/351/200/237/346/237/245.md +49 -49
  158. package/skills/v8-debugging/SKILL.md +284 -284
  159. package/skills/v8-explorer-tree/SKILL.md +228 -228
  160. package/skills/v8-export-import/SKILL.md +219 -219
  161. package/skills/v8-export-import/references/progressive-01-excellayout-/351/253/230/347/272/247/350/207/252/347/224/261/345/270/203/345/261/200.md +211 -211
  162. package/skills/v8-export-import/references/progressive-02-powerpoint-/345/257/274/345/207/272.md +202 -202
  163. package/skills/v8-export-import/references/progressive-03-/345/256/211/345/205/250-/346/200/247/350/203/275/346/263/250/346/204/217.md +42 -42
  164. package/skills/v8-file-upload/SKILL.md +284 -284
  165. package/skills/v8-file-upload/references/progressive-01-/345/205/254/346/234/211/346/241/266-vs-/347/247/201/346/234/211/346/241/266.md +263 -263
  166. package/skills/v8-file-upload/references/progressive-02-office-/346/226/207/344/273/266/345/234/250/347/272/277/347/274/226/350/276/221/347/211/210/346/234/254/345/217/267/350/247/204/345/210/231.md +161 -161
  167. package/skills/v8-formengine-http/SKILL.md +238 -238
  168. package/skills/v8-frontend-events/SKILL.md +180 -180
  169. package/skills/v8-frontend-events/references/bluetooth-print-api.md +135 -135
  170. package/skills/v8-frontend-events/references/bluetooth-print.md +258 -258
  171. package/skills/v8-frontend-events/references/progressive-01-/345/210/227/350/241/250/344/272/213/344/273/266.md +219 -219
  172. package/skills/v8-http-integration/SKILL.md +182 -182
  173. package/skills/v8-http-integration/references/progressive-01-get-/350/257/267/346/261/202.md +220 -220
  174. package/skills/v8-http-integration/references/progressive-02-/351/224/231/350/257/257/345/244/204/347/220/206/346/250/241/345/274/217.md +44 -44
  175. package/skills/v8-image-processing/SKILL.md +190 -190
  176. package/skills/v8-image-processing/agents/openai.yaml +4 -4
  177. package/skills/v8-image-processing/references/api-reference.md +623 -623
  178. package/skills/v8-menu-buttons/SKILL.md +186 -186
  179. package/skills/v8-menu-buttons/references/progressive-01-2-/346/214/211/351/222/256/345/257/271/350/261/241-schema.md +222 -222
  180. package/skills/v8-menu-buttons/references/progressive-02-8-/346/250/241/345/274/217-f-/345/220/216/345/217/260/344/273/273/345/212/241/346/214/211/351/222/256-/351/225/277/344/273/273/345/212/241.md +228 -228
  181. package/skills/v8-menu-buttons/references/progressive-03-10-/345/217/215/346/250/241/345/274/217-/351/201/277/345/205/215.md +104 -104
  182. package/skills/v8-mongodb/SKILL.md +200 -200
  183. package/skills/v8-mq-mqtt/SKILL.md +176 -176
  184. package/skills/v8-mq-mqtt/references/mqtt-production.md +342 -342
  185. package/skills/v8-mq-mqtt/references/progressive-01-v8-mqtt-iot-/347/211/251/350/201/224/347/275/221.md +181 -181
  186. package/skills/v8-mq-mqtt/scripts/check-mqtt-skill-coverage.mjs +203 -203
  187. package/skills/v8-saas-multi-tenant/SKILL.md +305 -305
  188. package/skills/v8-security/SKILL.md +210 -210
  189. package/skills/v8-security/references/progressive-01-2-/346/235/203/351/231/220/346/240/241/351/252/214.md +200 -200
  190. package/skills/v8-security/references/progressive-02-7-/346/227/245/345/277/227/350/256/260/345/275/225.md +160 -160
  191. package/skills/v8-sql-query/SKILL.md +302 -302
  192. package/skills/v8-table-event/SKILL.md +176 -176
  193. package/skills/v8-table-event/references/progressive-01-informv8-js-/350/241/250/345/215/225/346/211/223/345/274/200/344/272/213/344/273/266.md +216 -216
  194. package/skills/v8-table-event/references/progressive-02-/345/211/215/347/253/257/344/272/213/344/273/266/345/220/215-v8-eventname-/345/217/257/350/203/275/347/232/204/345/200/274.md +46 -46
  195. package/skills/v8-tcp-integration/SKILL.md +147 -147
  196. package/skills/v8-tcp-integration/agents/openai.yaml +4 -4
  197. package/skills/v8-template-engine/SKILL.md +167 -167
  198. package/skills/v8-utilities/SKILL.md +104 -104
  199. package/skills/v8-utilities/references/client-api-index.md +143 -143
  200. package/skills/v8-utilities/references/platform-http-routes.md +83 -83
  201. package/skills/v8-utilities/references/server-api-index.md +188 -188
  202. package/skills/v8-workflow/SKILL.md +252 -252
  203. package/skills/v8-workflow/references/progressive-01-/350/212/202/347/202/271/345/274/200/345/247/213-v8-/344/272/213/344/273/266.md +180 -180
  204. package/skills/v8-workflow/references/workflow-configuration.md +49 -49
  205. package/skills/vision-engine/SKILL.md +160 -160
  206. package/skills/vision-engine/agents/openai.yaml +4 -4
  207. package/skills/vision-engine/references/architecture-and-acceptance.md +194 -194
  208. package/skills/workspace-conventions/SKILL.md +273 -273
  209. package/skills/workspace-conventions/references/progressive-01-/347/211/210/346/234/254/346/233/264/346/226/260/346/227/245/345/277/227/344/277/235/346/212/244/350/247/204/345/210/231-/345/274/272/345/210/266.md +209 -209
  210. package/skills/workspace-conventions/references/progressive-02-microi-net-api-/346/234/254/345/234/260/345/220/257/345/212/250/347/272/246/345/256/232.md +217 -217
  211. package/skills/workspace-conventions/references/progressive-03-cli-/344/270/216-ide-/346/217/222/344/273/266/351/224/231/347/211/210/345/205/261/345/255/230/347/272/246/345/256/232.md +27 -27
@@ -1,190 +1,190 @@
1
- ---
2
- name: spider-engine
3
- description: Microi 采集引擎规范。用于设计、维护、测试或调用 Microi.Spider、OpenClaw 本地 Worker、Chrome/Playwright 采集、验证码、MCP 建模、V8 入库与导出、可重复采集站点规则。
4
- ---
5
-
6
- > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
-
8
- # Microi 采集引擎
9
-
10
- ## 核心原则
11
-
12
- 采集引擎是可重复执行的数据采集系统,不是一次性 AI 代采。完成交付后,用户应能在没有 AI 参与的情况下,使用同一套规则、账号、浏览器 Profile、保存引擎和导出引擎再次采集。
13
-
14
- 处理采集任务前,必须同时读取并遵守:
15
-
16
- - `microi.skills/workspace-conventions/SKILL.md`
17
- - `microi.skills/microi-system-delivery/SKILL.md`
18
- - `microi.skills/spider-engine/SKILL.md`
19
- - 涉及 V8 入库、导出、文件上传、菜单按钮、前端页面或自动化测试时,对应读取 `v8-crud-api`、`v8-file-upload`、`v8-export-import`、`v8-menu-buttons`、`microi-client-frontend`、`playwright-e2e` 等相关 Skill。
20
-
21
- 不能在最终回复里把仍可执行的用户需求写成“下一步继续采集”。如果任务被验证码、登录、限流或人工确认卡住,应保持 Worker/Chrome 会话可用,明确提示用户完成当前动作,然后继续采集、入库、统计和导出。只有所有用户编号需求已完成并验证,或外部阻塞经过多次尝试且有证据,才允许收尾。
22
-
23
- ## 通用引擎与业务数据分层
24
-
25
- 采集引擎必须保持通用,不要把某个业务项目的概念写进通用模块。
26
-
27
- - 通用引擎表统一使用 `mci_spider_*`,负责站点、规则、账号、浏览器会话、任务、步骤、产物、通用结果和通用导出记录。
28
- - 业务采集结果写入业务表,例如内容表、视频表、资料表、商品表等。
29
- - 每个站点规则通过规则专属 V8 保存引擎,把通用采集结果转换并写入业务表。
30
- - 每个站点规则通过规则专属 V8 导出引擎,生成该业务需要的 TXT、Word、ZIP、JSON、Excel、视频清单、法条包等格式。
31
- - 通用表字段、Tab、菜单名不能写死具体行业的主对象、分类或内容字段;这些业务含义应出现在业务表或规则配置中。
32
-
33
- ## 标准表建议
34
-
35
- 通用采集层推荐包含下列表:
36
-
37
- - `mci_spider_site`:采集站点或小程序元数据,包含入口地址、登录方式、验证码策略、平台类型。
38
- - `mci_spider_rule`:可重复采集规则,保存 `RecipeJson`、`CredentialSchemaJson`、`RetryPolicyJson`、`ExpectedPlanJson`、`SaveApiEngineKey`、`ExportApiEngineKey`、`ExportConfigJson`、目标业务表等。
39
- - `mci_spider_account`:具体账号/Profile 数据,保存登录账号、加密或私密密码字段、登录身份姓名、`ProfileKey`、`CredentialJson`、`CaptchaPolicyJson`、最大验证码识别次数、最大密码尝试次数。
40
- - `mci_spider_profile`:本地浏览器 Profile 或会话状态,由 Worker 写入和更新。
41
- - `mci_spider_worker`:Worker 心跳、机器标识、浏览器路径、当前任务、运行状态。
42
- - `mci_spider_task`:可执行任务和进度,必须支持应采集数、成功数、失败数、完成数、剩余数、人工提示。
43
- - `mci_spider_task_step`:步骤级执行日志,记录每一步输入、输出、耗时、异常和截图/响应引用。
44
- - `mci_spider_artifact`:采集产物,保存截图、验证码图片、HTML、HAR、API 响应、日志、本地文件或私有附件引用。
45
- - `mci_spider_result`:通用规范化结果,字段用 `ObjectName`、`CategoryName`、`SubType`、`SummaryText`、`DetailText`、`IsComplete` 等中性命名。
46
- - `mci_spider_export`:通用导出产物记录,字段用导出标题、导出格式、导出数量、完整数量、缺失数量、私有附件、业务表、业务记录等中性命名。
47
-
48
- ## 可重复规则必备内容
49
-
50
- 每条生产采集规则必须保存足够信息,保证后续能重复运行:
51
-
52
- - 站点入口地址、登录地址、采集入口地址。
53
- - 全量账号列表或账号选择策略;不得只取第一个账号或截图里可见账号。
54
- - 凭据结构和具体凭据存放位置;如果站点还需要姓名、手机号、身份证后几位等派生身份,也必须写入账号资料。
55
- - 浏览器 Profile 策略,通常按站点 + 账号生成稳定 `ProfileKey`。
56
- - 采集步骤配方,包括自动步骤、人工确认步骤、验证码步骤、网络响应捕获规则、DOM 选择器、分页/分类遍历规则。
57
- - 保存引擎 `SaveApiEngineKey`。
58
- - 导出引擎 `ExportApiEngineKey` 与导出配置。
59
- - 预期采集计划 `ExpectedPlanJson`,用于统计本应采集多少、已成功多少、失败多少、剩余多少。
60
- - 重试策略 `RetryPolicyJson`,包含验证码、密码错误、网络失败、接口空返回、重复数据的处理方式。
61
-
62
- ## 全量账号与分类核验
63
-
64
- 采集多账号、多分类、多入口站点时,启动采集前必须做“来源资料全量核验”:
65
-
66
- 1. 从用户给出的 Excel、Markdown、TXT、截图、地址文件和历史资料中提取所有账号、密码、身份信息、登录地址、分类、模块和采集入口。
67
- 2. 生成账号清单和采集计划,并与 `mci_spider_account`、`mci_spider_rule.ExpectedPlanJson`、`mci_spider_task` 回读结果逐项比对。
68
- 3. 如果来源资料里有账号但规则表没有,必须补入规则和账号表后再采集。
69
- 4. 如果某个账号能看到独有分类或模块,必须将该账号的身份和可见范围映射保存下来,不能因为其他账号已采集过相似内容就跳过。
70
- 5. 判断“采集完成”必须以全量账号、全量分类、全量模块和全量内容条目均完成为准,不能用单账号、单模块成功替代整体完成。
71
-
72
- 结构化内容交付还必须满足:
73
-
74
- - 用户要求分类或模块独立交付时,应分别生成对应的 TXT、Word、Excel 或其他格式导出。
75
- - 项目或来源层级应提供汇总包,便于一次性下载。
76
- - 业务表里应能直接查看主要内容、属性、来源和导出附件。
77
- - 业务主表、分类表和内容明细表应按实际数据关系建立关联,并能从主记录访问对应导出。
78
- - 统计接口应给出应采集、已采集、完整、缺失、失败和剩余数量。
79
- - 枚举值导出和后台展示不得直接输出无解释的 `1`、`0`、`true`、`false` 等机器值;必须结合字段配置或数据源映射为可读文本。
80
- - 统计首页不要用 `GetTableData` 分页扫描大表后直接汇总;数据量较大时必须使用 SQL 聚合、专用统计接口或已维护的统计字段,避免 `_PageSize=5000` 之类分页上限导致首页数据错误。
81
- - 业务主表的备注/说明字段可写入最新采集统计块,包含业务主体、后台项目、分类数、内容条目数、完整数、缺失数、导出产物、待执行、失败/阻塞和未完成原因;旧错误日志可保留在统计块下方用于追溯。
82
-
83
- ## 批量站点交付
84
-
85
- 当用户要求一次性交付多个业务主体、多个网站或多套站点规则时,不能由 AI 手工逐站抓取后临时打包。必须让采集引擎承担完整闭环:
86
-
87
- - 每个站点至少对应一条 `mci_spider_site` 和一条生产 `mci_spider_rule`;同站点多入口、多账号、多分类时,规则中必须保存完整 `ExpectedPlanJson`。
88
- - 每个站点的账号、姓名、密码密文字段、入口地址、验证码策略、人工兜底策略、浏览器 ProfileKey 都要写入 `mci_spider_account` 或规则配置,保证后续无 AI 参与也能复跑。
89
- - 任务执行、失败原因、人工确认、截图、接口响应、导出文件和 ZIP 包都必须由 Worker/V8 写入 `mci_spider_task`、`mci_spider_task_step`、`mci_spider_artifact`、`mci_spider_export`。
90
- - 交付包必须由规则导出引擎生成并上传为私有附件;业务主表和导出表都应保存 TXT、Word、ZIP 的私有附件路径,后台用户可随时重复下载。
91
- - 对失败站点不能只写“失败”。必须在任务和最终报告中写明失败阶段、账号/分类/模块范围、错误码或页面证据、是否可人工继续、下次复跑建议。
92
- - 最终交付报告必须按站点列出:规则是否存在、账号是否完整、应采集数量、成功数量、失败数量、剩余数量、导出附件、失败原因、是否达到可重复采集验收。
93
- - 交付报告应由接口引擎生成,例如 `<project>-spider-delivery-report`。报告必须按规则级判断,不要因为同一业务对象已由另一条规则交付,就把旧规则也算作已交付;旧入口应标记为“同对象已交付/当前规则未执行”或类似状态。
94
- - 当来源 Excel 的工作表、后台业务主体行、采集规则行不一一对应时,必须区分“业务主体”和“后台项目/规则”。不同入口、补充资料或重复别名可以是多个可复跑项目,但首页和总报告应按业务主体逻辑合并统计;除非用户明确要求迁移数据,不要物理删除项目行,以免丢失规则、账号、导出附件和错误日志。
95
- - 对“应该有 N 个业务主体”这类说法,必须回到原始资料和后台项目双向核验:列出原始资料条目数量、按业务主体合并后的数量、后台项目数量、重复或别名原因,再给出交付数和缺口数。
96
- - 交付类首页应以图表统计为主,显示业务主体交付率、内容完整率、导出产物覆盖、失败/待执行风险和按主体内容量等;不要默认添加本日/本周/本月/本年周期筛选,除非用户明确要求按时间分析。
97
- - 交付类首页发布前必须做界面回读验收:不得出现 `????` 乱码、`{a}/{b}/{c}/{d}` 图表模板占位符、默认 `More/更多` 入口、用户明确不要的周期按钮;彩色统计卡和图表说明必须使用高对比文字色,不能出现背景色与文字色接近导致不可读。若标准图表组件自动注入周期筛选或默认模板,可改用实时接口驱动的 `html` 组件承载图形化驾驶舱。
98
- - 采集交付首页的组件选择必须先区分“平台标准能力”和“项目定制区块”:指标卡、进度、状态分布、排行、时间线、描述列表等高频能力应优先使用或补强 Page Engine 标准组件;业务交付结论、特殊失败说明、客户交付口径等强业务组合区块可以用 `html` 组件承载。
99
- - 采集交付首页的长文本必须可读:失败原因、未完成来源、交付结论、风险说明不得用分号拼成一整行;应使用逐条列表、卡片或带 `white-space:normal`、`overflow-wrap:anywhere` 的块级布局,回读/截图验收时必须确认底部说明不挤压、不横向溢出。
100
- - 采集交付首页必须明确双口径:业务主体用于交付统计,后台项目/规则/别名用于保留不同入口、补充资料、账号规则、导出附件和错误日志。用户提出最低交付数量时,首页应展示原始资料条目数、主体合并数、后台项目数和口径差异说明,不要把后台项目数当成业务主体数,也不要只写“未交付 N 个”。
101
- - 业务内容列表通常不应按单一业务主体创建固定 PageTabs,也不要放“导出某主体 TXT/Word”这类固定主体按钮。项目、来源或业务主表的表单详情里才放“导出本项目 TXT+Word”“重导分类附件”等 FormBtns;列表页按钮只适合全局批处理且必须中性命名。
102
- - 业务主表的数字字段(应采、已采、剩余、失败、完整条目数等)在菜单列表上应配置 `StatisticsFields`,方便后台直接看汇总;统计字段要使用真实 `diy_field.Id`,写入后必须回读 `sys_menu.StatisticsFields` 验收。
103
-
104
- ## 验证码与登录安全
105
-
106
- 验证码识别必须保守,优先保护账号和 IP。
107
-
108
- - 同一个账号同一次登录,AI/OCR 自动识别最多允许 2 次失败或未确认。
109
- - 第 2 次仍失败、为空、置信度低或用户未确认时,必须弹出或聚焦真实 Chrome,让用户手动输入验证码。
110
- - AI/OCR 返回识别值后,界面应允许用户确认或修正;未经确认的低置信度结果不能继续无限尝试。
111
- - 密码错误默认只尝试 1 次。若凭据来自可信资料但登录失败,应停止该账号任务并记录失败原因,不要反复重试。
112
- - 登录后拿到的真实姓名、昵称、学号、租户身份等派生信息必须回写到 `mci_spider_account`,例如 `LoginIdentityName` 或 `CredentialJson`。
113
- - 评估新的验证码识别方案时,必须先准备带人工标注的样本集,对当前 AI 模型、开源 OCR、图像预处理方案分别统计准确率、空返回率、误读率和平均耗时。没有样本和数据证明更好,不要盲目替换生产方案。
114
- - 需要对比的候选方案可包括视觉大模型、`Tesseract + OpenCvSharp`、`Sdcb.PaddleOCR`、`DdddOCR` 本地服务或自训练 ONNX 模型。任何方案都必须先在目标站点真实样本上评测,达到站点规则要求后才能进入生产。
115
- - 生产规则推荐采用可插拔验证码策略,例如 `MiniMaxVision -> Manual`、`TesseractOpenCv -> Manual`、`DdddOcrLocalService -> Manual`。无论使用哪种自动识别,人工兜底规则都不能删除。
116
- - 后端统一验证码识别入口推荐为 `POST /api/Captcha/Recognize`,参数包含 `OsClient`、`Provider`、`ImageBase64`、`ExpressionText`、`AllowedChars`、`Endpoint`、`TimeoutSeconds`。`Auto` 先解析算术表达式,再调用配置的 HTTP OCR 服务,失败返回 `NeedManual=true`。
117
- - 生产配置可使用 `CaptchaOcr:Provider`、`CaptchaOcr:Endpoint`、`CaptchaOcr:<Provider>:Endpoint`、`CaptchaOcr:TimeoutSeconds` 指向 DdddOCR、PaddleOCR、Tesseract 或自训练模型服务;后端主进程不要直接加载重型 OCR 模型。
118
-
119
- ## OpenClaw 本地 Worker
120
-
121
- 需要 Windows/macOS 桌面能力、真实 Chrome 登录态、人工验证码或本地打包时,优先使用 OpenClaw 作为本地 Worker 外壳。
122
-
123
- OpenClaw Worker 应做到:
124
-
125
- - 连接用户配置的 Microi `ApiBase` 和 `OsClient`。
126
- - 登录 Microi 后调用后端 V8/API 引擎,不把复杂业务全部写死在本地前端。
127
- - 默认使用随包 Chrome 或用户配置 Chrome,不默认改用 Edge。
128
- - 按站点 + 账号使用持久化浏览器 Profile。
129
- - 将浏览器会话写入 `mci_spider_profile`。
130
- - 将截图、验证码图片、网络响应、HTML、日志和本地文件写入 `mci_spider_artifact`。
131
- - 通过通用任务上报引擎持续写入任务进度、步骤日志、成功失败数量和人工提示。
132
- - 遇到验证码、登录、限流或站点变化时,不隐藏问题;必须让用户知道当前卡在哪一步。
133
-
134
- ## 服务端 V8.Spider 运行边界
135
-
136
- - SSRF 严格模式与 `V8.Http` 使用同一配置,默认关闭以兼容存量内网采集;开启后必须校验初始 URL、重定向和浏览器子资源。
137
- - V8 调用禁止传 `ExecutablePath`、`UserDataDir`,平台按 `OsClient + ApiEngineKey/EventName + SessionId/ProfileKey` 隔离浏览器目录。
138
- - 默认当前节点最多 32 个会话、每租户/引擎作用域最多 4 个;空闲 30 分钟或总生命周期 8 小时回收。
139
- - 抓包响应体默认最多 200,000 字符、硬上限 1,000,000,每会话保留最近 100 条。
140
- - 会话额度统一在 SaaS 引擎主租户配置 `SpiderMaxSessionsTotal`、`SpiderMaxSessionsPerScope`、`SpiderSessionIdleMinutes`、`SpiderSessionMaxHours`;不要为普通采集运行参数增加 API/Worker 环境变量。
141
- - 浏览器会话和会话数配额当前是节点内状态。多节点复用登录态必须使用粘性路由或独立 Spider Worker;任务状态、幂等键、checkpoint 和结果必须写共享数据库/MQ。
142
- - SSRF 默认兼容不等于任意用户都可提交 URL。采集目标仍应由受控规则/白名单决定,普通用户不能创建任意采集脚本。
143
-
144
- ## MCP 建模流程
145
-
146
- 通过 MCP 创建或修复采集引擎时:
147
-
148
- 1. 先调用状态和 schema 工具,确认当前 API Server、`OsClient`、已有表、字段、菜单和角色权限。
149
- 2. 写入前确认用户请求的租户与 MCP 绑定租户一致,避免写错库。
150
- 3. 通用采集表使用 `mci_` 前缀,业务结果表使用业务前缀。
151
- 4. 菜单默认规划两级:业务域或系统域父菜单 + 具体模块。
152
- 5. 如果用户或项目明确把采集作为主产品,或已明确创建分组菜单,则保留三级结构,例如 `系统引擎 / 采集引擎 / 采集规则`。不得因为“两级推荐”而删除、扁平化用户故意创建的三级菜单。
153
- 6. 添加字段前回读 `diy_field`,避免重复字段和组件不一致。
154
- 7. 选项字段必须配置数据源。
155
- 8. 写入后回读表、字段、菜单、权限、规则和关键业务数据,并刷新必要缓存。
156
-
157
- ## V8 引擎分工
158
-
159
- 建议保留通用引擎与规则专属引擎:
160
-
161
- - `mci-spider-task-next`:领取下一条可执行任务。
162
- - `mci-spider-task-report`:上报任务状态、步骤、产物、通用结果和计数。
163
- - `mci-spider-worker-heartbeat`:OpenClaw/本地 Worker 心跳。
164
- - 规则专属保存引擎:将某站点数据写入对应业务表。
165
- - 规则专属导出引擎:根据该业务规则生成 TXT、Word、ZIP、JSON、Excel 等产物并上传私有附件。
166
-
167
- 通用上报引擎必须保持中性;业务字段映射、去重、清洗、导出格式放在规则专属引擎中。
168
-
169
- ## 临时文件与交付产物
170
-
171
- 采集任务常需要临时脚本、网络响应、截图和调试文件,必须遵守:
172
-
173
- - 一次性脚本、响应缓存、调试 JSON、临时 JS、截图、运行日志统一写到工作区根目录 `.tmp/` 下。
174
- - 严禁在根目录生成 `.tmp-xxx.js`、`.tmp-xxx.json`、`.tmp-xxx.txt` 这类散落文件。
175
- - 客户交付文件才能放入项目交付目录,例如 `<项目目录>/采集结果/`。
176
- - 临时文件不作为最终证据,最终证据应是后台数据、私有附件、导出文件、统计接口和可复跑规则。
177
-
178
- ## 最终报告清单
179
-
180
- 完成采集引擎任务时,必须按用户编号逐条汇报:
181
-
182
- - 完成了哪些功能、规则、数据、导出和页面。
183
- - 修改了哪些表、字段、菜单、接口引擎、按钮、前端文件、Skill、文档。
184
- - 创建或清理了哪些数据,哪些是真实有效数据,哪些是脏数据已作废。
185
- - 当前采集进度:应采集、已成功、失败、完整、缺失、剩余。
186
- - 验证码是否仍需要人工兜底,触发条件是什么。
187
- - 运行过哪些构建、接口、MCP 回读、导出、下载或页面测试。
188
- - 每个用户编号需求的状态:完成、部分完成、阻塞,并写明证据。
189
-
190
- 最终回复前必须重新审计用户的编号清单。凡是还能继续执行的采集、入库、导出、上传、清理、回读、测试,不允许留到“下一步”。
1
+ ---
2
+ name: spider-engine
3
+ description: Microi 采集引擎规范。用于设计、维护、测试或调用 Microi.Spider、OpenClaw 本地 Worker、Chrome/Playwright 采集、验证码、MCP 建模、V8 入库与导出、可重复采集站点规则。
4
+ ---
5
+
6
+ > **Microi吾码基础规范(强制):** 任何 AI 模型与宿主每次新建或接续吾码任务,先完整读取 `../workspace-conventions/SKILL.md`,必须执行版本播报、`@microi.net/cli` 后台自动升级、Skills/MCP 同步和进度播报。安装与诊断读取 `../microi-codex-installer/SKILL.md`;更新失败延后重试,不阻断当前工作。
7
+
8
+ # Microi 采集引擎
9
+
10
+ ## 核心原则
11
+
12
+ 采集引擎是可重复执行的数据采集系统,不是一次性 AI 代采。完成交付后,用户应能在没有 AI 参与的情况下,使用同一套规则、账号、浏览器 Profile、保存引擎和导出引擎再次采集。
13
+
14
+ 处理采集任务前,必须同时读取并遵守:
15
+
16
+ - `microi.skills/workspace-conventions/SKILL.md`
17
+ - `microi.skills/microi-system-delivery/SKILL.md`
18
+ - `microi.skills/spider-engine/SKILL.md`
19
+ - 涉及 V8 入库、导出、文件上传、菜单按钮、前端页面或自动化测试时,对应读取 `v8-crud-api`、`v8-file-upload`、`v8-export-import`、`v8-menu-buttons`、`microi-client-frontend`、`playwright-e2e` 等相关 Skill。
20
+
21
+ 不能在最终回复里把仍可执行的用户需求写成“下一步继续采集”。如果任务被验证码、登录、限流或人工确认卡住,应保持 Worker/Chrome 会话可用,明确提示用户完成当前动作,然后继续采集、入库、统计和导出。只有所有用户编号需求已完成并验证,或外部阻塞经过多次尝试且有证据,才允许收尾。
22
+
23
+ ## 通用引擎与业务数据分层
24
+
25
+ 采集引擎必须保持通用,不要把某个业务项目的概念写进通用模块。
26
+
27
+ - 通用引擎表统一使用 `mci_spider_*`,负责站点、规则、账号、浏览器会话、任务、步骤、产物、通用结果和通用导出记录。
28
+ - 业务采集结果写入业务表,例如内容表、视频表、资料表、商品表等。
29
+ - 每个站点规则通过规则专属 V8 保存引擎,把通用采集结果转换并写入业务表。
30
+ - 每个站点规则通过规则专属 V8 导出引擎,生成该业务需要的 TXT、Word、ZIP、JSON、Excel、视频清单、法条包等格式。
31
+ - 通用表字段、Tab、菜单名不能写死具体行业的主对象、分类或内容字段;这些业务含义应出现在业务表或规则配置中。
32
+
33
+ ## 标准表建议
34
+
35
+ 通用采集层推荐包含下列表:
36
+
37
+ - `mci_spider_site`:采集站点或小程序元数据,包含入口地址、登录方式、验证码策略、平台类型。
38
+ - `mci_spider_rule`:可重复采集规则,保存 `RecipeJson`、`CredentialSchemaJson`、`RetryPolicyJson`、`ExpectedPlanJson`、`SaveApiEngineKey`、`ExportApiEngineKey`、`ExportConfigJson`、目标业务表等。
39
+ - `mci_spider_account`:具体账号/Profile 数据,保存登录账号、加密或私密密码字段、登录身份姓名、`ProfileKey`、`CredentialJson`、`CaptchaPolicyJson`、最大验证码识别次数、最大密码尝试次数。
40
+ - `mci_spider_profile`:本地浏览器 Profile 或会话状态,由 Worker 写入和更新。
41
+ - `mci_spider_worker`:Worker 心跳、机器标识、浏览器路径、当前任务、运行状态。
42
+ - `mci_spider_task`:可执行任务和进度,必须支持应采集数、成功数、失败数、完成数、剩余数、人工提示。
43
+ - `mci_spider_task_step`:步骤级执行日志,记录每一步输入、输出、耗时、异常和截图/响应引用。
44
+ - `mci_spider_artifact`:采集产物,保存截图、验证码图片、HTML、HAR、API 响应、日志、本地文件或私有附件引用。
45
+ - `mci_spider_result`:通用规范化结果,字段用 `ObjectName`、`CategoryName`、`SubType`、`SummaryText`、`DetailText`、`IsComplete` 等中性命名。
46
+ - `mci_spider_export`:通用导出产物记录,字段用导出标题、导出格式、导出数量、完整数量、缺失数量、私有附件、业务表、业务记录等中性命名。
47
+
48
+ ## 可重复规则必备内容
49
+
50
+ 每条生产采集规则必须保存足够信息,保证后续能重复运行:
51
+
52
+ - 站点入口地址、登录地址、采集入口地址。
53
+ - 全量账号列表或账号选择策略;不得只取第一个账号或截图里可见账号。
54
+ - 凭据结构和具体凭据存放位置;如果站点还需要姓名、手机号、身份证后几位等派生身份,也必须写入账号资料。
55
+ - 浏览器 Profile 策略,通常按站点 + 账号生成稳定 `ProfileKey`。
56
+ - 采集步骤配方,包括自动步骤、人工确认步骤、验证码步骤、网络响应捕获规则、DOM 选择器、分页/分类遍历规则。
57
+ - 保存引擎 `SaveApiEngineKey`。
58
+ - 导出引擎 `ExportApiEngineKey` 与导出配置。
59
+ - 预期采集计划 `ExpectedPlanJson`,用于统计本应采集多少、已成功多少、失败多少、剩余多少。
60
+ - 重试策略 `RetryPolicyJson`,包含验证码、密码错误、网络失败、接口空返回、重复数据的处理方式。
61
+
62
+ ## 全量账号与分类核验
63
+
64
+ 采集多账号、多分类、多入口站点时,启动采集前必须做“来源资料全量核验”:
65
+
66
+ 1. 从用户给出的 Excel、Markdown、TXT、截图、地址文件和历史资料中提取所有账号、密码、身份信息、登录地址、分类、模块和采集入口。
67
+ 2. 生成账号清单和采集计划,并与 `mci_spider_account`、`mci_spider_rule.ExpectedPlanJson`、`mci_spider_task` 回读结果逐项比对。
68
+ 3. 如果来源资料里有账号但规则表没有,必须补入规则和账号表后再采集。
69
+ 4. 如果某个账号能看到独有分类或模块,必须将该账号的身份和可见范围映射保存下来,不能因为其他账号已采集过相似内容就跳过。
70
+ 5. 判断“采集完成”必须以全量账号、全量分类、全量模块和全量内容条目均完成为准,不能用单账号、单模块成功替代整体完成。
71
+
72
+ 结构化内容交付还必须满足:
73
+
74
+ - 用户要求分类或模块独立交付时,应分别生成对应的 TXT、Word、Excel 或其他格式导出。
75
+ - 项目或来源层级应提供汇总包,便于一次性下载。
76
+ - 业务表里应能直接查看主要内容、属性、来源和导出附件。
77
+ - 业务主表、分类表和内容明细表应按实际数据关系建立关联,并能从主记录访问对应导出。
78
+ - 统计接口应给出应采集、已采集、完整、缺失、失败和剩余数量。
79
+ - 枚举值导出和后台展示不得直接输出无解释的 `1`、`0`、`true`、`false` 等机器值;必须结合字段配置或数据源映射为可读文本。
80
+ - 统计首页不要用 `GetTableData` 分页扫描大表后直接汇总;数据量较大时必须使用 SQL 聚合、专用统计接口或已维护的统计字段,避免 `_PageSize=5000` 之类分页上限导致首页数据错误。
81
+ - 业务主表的备注/说明字段可写入最新采集统计块,包含业务主体、后台项目、分类数、内容条目数、完整数、缺失数、导出产物、待执行、失败/阻塞和未完成原因;旧错误日志可保留在统计块下方用于追溯。
82
+
83
+ ## 批量站点交付
84
+
85
+ 当用户要求一次性交付多个业务主体、多个网站或多套站点规则时,不能由 AI 手工逐站抓取后临时打包。必须让采集引擎承担完整闭环:
86
+
87
+ - 每个站点至少对应一条 `mci_spider_site` 和一条生产 `mci_spider_rule`;同站点多入口、多账号、多分类时,规则中必须保存完整 `ExpectedPlanJson`。
88
+ - 每个站点的账号、姓名、密码密文字段、入口地址、验证码策略、人工兜底策略、浏览器 ProfileKey 都要写入 `mci_spider_account` 或规则配置,保证后续无 AI 参与也能复跑。
89
+ - 任务执行、失败原因、人工确认、截图、接口响应、导出文件和 ZIP 包都必须由 Worker/V8 写入 `mci_spider_task`、`mci_spider_task_step`、`mci_spider_artifact`、`mci_spider_export`。
90
+ - 交付包必须由规则导出引擎生成并上传为私有附件;业务主表和导出表都应保存 TXT、Word、ZIP 的私有附件路径,后台用户可随时重复下载。
91
+ - 对失败站点不能只写“失败”。必须在任务和最终报告中写明失败阶段、账号/分类/模块范围、错误码或页面证据、是否可人工继续、下次复跑建议。
92
+ - 最终交付报告必须按站点列出:规则是否存在、账号是否完整、应采集数量、成功数量、失败数量、剩余数量、导出附件、失败原因、是否达到可重复采集验收。
93
+ - 交付报告应由接口引擎生成,例如 `<project>-spider-delivery-report`。报告必须按规则级判断,不要因为同一业务对象已由另一条规则交付,就把旧规则也算作已交付;旧入口应标记为“同对象已交付/当前规则未执行”或类似状态。
94
+ - 当来源 Excel 的工作表、后台业务主体行、采集规则行不一一对应时,必须区分“业务主体”和“后台项目/规则”。不同入口、补充资料或重复别名可以是多个可复跑项目,但首页和总报告应按业务主体逻辑合并统计;除非用户明确要求迁移数据,不要物理删除项目行,以免丢失规则、账号、导出附件和错误日志。
95
+ - 对“应该有 N 个业务主体”这类说法,必须回到原始资料和后台项目双向核验:列出原始资料条目数量、按业务主体合并后的数量、后台项目数量、重复或别名原因,再给出交付数和缺口数。
96
+ - 交付类首页应以图表统计为主,显示业务主体交付率、内容完整率、导出产物覆盖、失败/待执行风险和按主体内容量等;不要默认添加本日/本周/本月/本年周期筛选,除非用户明确要求按时间分析。
97
+ - 交付类首页发布前必须做界面回读验收:不得出现 `????` 乱码、`{a}/{b}/{c}/{d}` 图表模板占位符、默认 `More/更多` 入口、用户明确不要的周期按钮;彩色统计卡和图表说明必须使用高对比文字色,不能出现背景色与文字色接近导致不可读。若标准图表组件自动注入周期筛选或默认模板,可改用实时接口驱动的 `html` 组件承载图形化驾驶舱。
98
+ - 采集交付首页的组件选择必须先区分“平台标准能力”和“项目定制区块”:指标卡、进度、状态分布、排行、时间线、描述列表等高频能力应优先使用或补强 Page Engine 标准组件;业务交付结论、特殊失败说明、客户交付口径等强业务组合区块可以用 `html` 组件承载。
99
+ - 采集交付首页的长文本必须可读:失败原因、未完成来源、交付结论、风险说明不得用分号拼成一整行;应使用逐条列表、卡片或带 `white-space:normal`、`overflow-wrap:anywhere` 的块级布局,回读/截图验收时必须确认底部说明不挤压、不横向溢出。
100
+ - 采集交付首页必须明确双口径:业务主体用于交付统计,后台项目/规则/别名用于保留不同入口、补充资料、账号规则、导出附件和错误日志。用户提出最低交付数量时,首页应展示原始资料条目数、主体合并数、后台项目数和口径差异说明,不要把后台项目数当成业务主体数,也不要只写“未交付 N 个”。
101
+ - 业务内容列表通常不应按单一业务主体创建固定 PageTabs,也不要放“导出某主体 TXT/Word”这类固定主体按钮。项目、来源或业务主表的表单详情里才放“导出本项目 TXT+Word”“重导分类附件”等 FormBtns;列表页按钮只适合全局批处理且必须中性命名。
102
+ - 业务主表的数字字段(应采、已采、剩余、失败、完整条目数等)在菜单列表上应配置 `StatisticsFields`,方便后台直接看汇总;统计字段要使用真实 `diy_field.Id`,写入后必须回读 `sys_menu.StatisticsFields` 验收。
103
+
104
+ ## 验证码与登录安全
105
+
106
+ 验证码识别必须保守,优先保护账号和 IP。
107
+
108
+ - 同一个账号同一次登录,AI/OCR 自动识别最多允许 2 次失败或未确认。
109
+ - 第 2 次仍失败、为空、置信度低或用户未确认时,必须弹出或聚焦真实 Chrome,让用户手动输入验证码。
110
+ - AI/OCR 返回识别值后,界面应允许用户确认或修正;未经确认的低置信度结果不能继续无限尝试。
111
+ - 密码错误默认只尝试 1 次。若凭据来自可信资料但登录失败,应停止该账号任务并记录失败原因,不要反复重试。
112
+ - 登录后拿到的真实姓名、昵称、学号、租户身份等派生信息必须回写到 `mci_spider_account`,例如 `LoginIdentityName` 或 `CredentialJson`。
113
+ - 评估新的验证码识别方案时,必须先准备带人工标注的样本集,对当前 AI 模型、开源 OCR、图像预处理方案分别统计准确率、空返回率、误读率和平均耗时。没有样本和数据证明更好,不要盲目替换生产方案。
114
+ - 需要对比的候选方案可包括视觉大模型、`Tesseract + OpenCvSharp`、`Sdcb.PaddleOCR`、`DdddOCR` 本地服务或自训练 ONNX 模型。任何方案都必须先在目标站点真实样本上评测,达到站点规则要求后才能进入生产。
115
+ - 生产规则推荐采用可插拔验证码策略,例如 `MiniMaxVision -> Manual`、`TesseractOpenCv -> Manual`、`DdddOcrLocalService -> Manual`。无论使用哪种自动识别,人工兜底规则都不能删除。
116
+ - 后端统一验证码识别入口推荐为 `POST /api/Captcha/Recognize`,参数包含 `OsClient`、`Provider`、`ImageBase64`、`ExpressionText`、`AllowedChars`、`Endpoint`、`TimeoutSeconds`。`Auto` 先解析算术表达式,再调用配置的 HTTP OCR 服务,失败返回 `NeedManual=true`。
117
+ - 生产配置可使用 `CaptchaOcr:Provider`、`CaptchaOcr:Endpoint`、`CaptchaOcr:<Provider>:Endpoint`、`CaptchaOcr:TimeoutSeconds` 指向 DdddOCR、PaddleOCR、Tesseract 或自训练模型服务;后端主进程不要直接加载重型 OCR 模型。
118
+
119
+ ## OpenClaw 本地 Worker
120
+
121
+ 需要 Windows/macOS 桌面能力、真实 Chrome 登录态、人工验证码或本地打包时,优先使用 OpenClaw 作为本地 Worker 外壳。
122
+
123
+ OpenClaw Worker 应做到:
124
+
125
+ - 连接用户配置的 Microi `ApiBase` 和 `OsClient`。
126
+ - 登录 Microi 后调用后端 V8/API 引擎,不把复杂业务全部写死在本地前端。
127
+ - 默认使用随包 Chrome 或用户配置 Chrome,不默认改用 Edge。
128
+ - 按站点 + 账号使用持久化浏览器 Profile。
129
+ - 将浏览器会话写入 `mci_spider_profile`。
130
+ - 将截图、验证码图片、网络响应、HTML、日志和本地文件写入 `mci_spider_artifact`。
131
+ - 通过通用任务上报引擎持续写入任务进度、步骤日志、成功失败数量和人工提示。
132
+ - 遇到验证码、登录、限流或站点变化时,不隐藏问题;必须让用户知道当前卡在哪一步。
133
+
134
+ ## 服务端 V8.Spider 运行边界
135
+
136
+ - SSRF 严格模式与 `V8.Http` 使用同一配置,默认关闭以兼容存量内网采集;开启后必须校验初始 URL、重定向和浏览器子资源。
137
+ - V8 调用禁止传 `ExecutablePath`、`UserDataDir`,平台按 `OsClient + ApiEngineKey/EventName + SessionId/ProfileKey` 隔离浏览器目录。
138
+ - 默认当前节点最多 32 个会话、每租户/引擎作用域最多 4 个;空闲 30 分钟或总生命周期 8 小时回收。
139
+ - 抓包响应体默认最多 200,000 字符、硬上限 1,000,000,每会话保留最近 100 条。
140
+ - 会话额度统一在 SaaS 引擎主租户配置 `SpiderMaxSessionsTotal`、`SpiderMaxSessionsPerScope`、`SpiderSessionIdleMinutes`、`SpiderSessionMaxHours`;不要为普通采集运行参数增加 API/Worker 环境变量。
141
+ - 浏览器会话和会话数配额当前是节点内状态。多节点复用登录态必须使用粘性路由或独立 Spider Worker;任务状态、幂等键、checkpoint 和结果必须写共享数据库/MQ。
142
+ - SSRF 默认兼容不等于任意用户都可提交 URL。采集目标仍应由受控规则/白名单决定,普通用户不能创建任意采集脚本。
143
+
144
+ ## MCP 建模流程
145
+
146
+ 通过 MCP 创建或修复采集引擎时:
147
+
148
+ 1. 先调用状态和 schema 工具,确认当前 API Server、`OsClient`、已有表、字段、菜单和角色权限。
149
+ 2. 写入前确认用户请求的租户与 MCP 绑定租户一致,避免写错库。
150
+ 3. 通用采集表使用 `mci_` 前缀,业务结果表使用业务前缀。
151
+ 4. 菜单默认规划两级:业务域或系统域父菜单 + 具体模块。
152
+ 5. 如果用户或项目明确把采集作为主产品,或已明确创建分组菜单,则保留三级结构,例如 `系统引擎 / 采集引擎 / 采集规则`。不得因为“两级推荐”而删除、扁平化用户故意创建的三级菜单。
153
+ 6. 添加字段前回读 `diy_field`,避免重复字段和组件不一致。
154
+ 7. 选项字段必须配置数据源。
155
+ 8. 写入后回读表、字段、菜单、权限、规则和关键业务数据,并刷新必要缓存。
156
+
157
+ ## V8 引擎分工
158
+
159
+ 建议保留通用引擎与规则专属引擎:
160
+
161
+ - `mci-spider-task-next`:领取下一条可执行任务。
162
+ - `mci-spider-task-report`:上报任务状态、步骤、产物、通用结果和计数。
163
+ - `mci-spider-worker-heartbeat`:OpenClaw/本地 Worker 心跳。
164
+ - 规则专属保存引擎:将某站点数据写入对应业务表。
165
+ - 规则专属导出引擎:根据该业务规则生成 TXT、Word、ZIP、JSON、Excel 等产物并上传私有附件。
166
+
167
+ 通用上报引擎必须保持中性;业务字段映射、去重、清洗、导出格式放在规则专属引擎中。
168
+
169
+ ## 临时文件与交付产物
170
+
171
+ 采集任务常需要临时脚本、网络响应、截图和调试文件,必须遵守:
172
+
173
+ - 一次性脚本、响应缓存、调试 JSON、临时 JS、截图、运行日志统一写到工作区根目录 `.tmp/` 下。
174
+ - 严禁在根目录生成 `.tmp-xxx.js`、`.tmp-xxx.json`、`.tmp-xxx.txt` 这类散落文件。
175
+ - 客户交付文件才能放入项目交付目录,例如 `<项目目录>/采集结果/`。
176
+ - 临时文件不作为最终证据,最终证据应是后台数据、私有附件、导出文件、统计接口和可复跑规则。
177
+
178
+ ## 最终报告清单
179
+
180
+ 完成采集引擎任务时,必须按用户编号逐条汇报:
181
+
182
+ - 完成了哪些功能、规则、数据、导出和页面。
183
+ - 修改了哪些表、字段、菜单、接口引擎、按钮、前端文件、Skill、文档。
184
+ - 创建或清理了哪些数据,哪些是真实有效数据,哪些是脏数据已作废。
185
+ - 当前采集进度:应采集、已成功、失败、完整、缺失、剩余。
186
+ - 验证码是否仍需要人工兜底,触发条件是什么。
187
+ - 运行过哪些构建、接口、MCP 回读、导出、下载或页面测试。
188
+ - 每个用户编号需求的状态:完成、部分完成、阻塞,并写明证据。
189
+
190
+ 最终回复前必须重新审计用户的编号清单。凡是还能继续执行的采集、入库、导出、上传、清理、回读、测试,不允许留到“下一步”。