minimal-agent 0.12.0 → 0.14.0

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 (472) hide show
  1. package/README.md +6 -5
  2. package/package.json +62 -5
  3. package/plugins/computer_use/.claude-plugin/plugin.json +1 -1
  4. package/plugins/cron-runner/src/commands.js +4 -4
  5. package/plugins/cron-runner/src/commands.ts +4 -4
  6. package/plugins/workflow-runner/.claude-plugin/plugin.json +2 -2
  7. package/plugins/workflow-runner/commands/workflow.md +57 -90
  8. package/plugins/workflow-runner/commands/workflows.md +4 -4
  9. package/plugins/workflow-runner/plugin.js +24 -13
  10. package/plugins/workflow-runner/plugin.ts +28 -13
  11. package/plugins/workflow-runner/src/discovery.js +160 -0
  12. package/plugins/workflow-runner/src/discovery.ts +194 -0
  13. package/plugins/workflow-runner/src/goalAnchor.js +53 -0
  14. package/plugins/workflow-runner/src/goalAnchor.ts +59 -0
  15. package/plugins/workflow-runner/src/index.js +204 -185
  16. package/plugins/workflow-runner/src/index.ts +249 -224
  17. package/plugins/workflow-runner/src/inputCoercion.js +40 -0
  18. package/plugins/workflow-runner/src/inputCoercion.ts +43 -0
  19. package/plugins/workflow-runner/src/journal.js +224 -0
  20. package/plugins/workflow-runner/src/journal.ts +274 -0
  21. package/plugins/workflow-runner/src/jsonSchema.js +132 -0
  22. package/plugins/workflow-runner/src/jsonSchema.ts +162 -0
  23. package/plugins/workflow-runner/src/moduleResolution.js +64 -0
  24. package/plugins/workflow-runner/src/moduleResolution.ts +71 -0
  25. package/plugins/workflow-runner/src/resourceInputs.js +220 -0
  26. package/plugins/workflow-runner/src/resourceInputs.ts +300 -0
  27. package/plugins/workflow-runner/src/runner.js +404 -467
  28. package/plugins/workflow-runner/src/runner.ts +491 -535
  29. package/plugins/workflow-runner/src/runtime/config.js +46 -0
  30. package/plugins/workflow-runner/src/runtime/config.ts +69 -0
  31. package/plugins/workflow-runner/src/runtime/context.js +1304 -0
  32. package/plugins/workflow-runner/src/runtime/context.ts +1786 -0
  33. package/plugins/workflow-runner/src/runtime/exec.js +34 -0
  34. package/plugins/workflow-runner/src/runtime/exec.ts +53 -0
  35. package/plugins/workflow-runner/src/runtime/flow.js +8 -0
  36. package/plugins/workflow-runner/src/runtime/flow.ts +12 -0
  37. package/plugins/workflow-runner/src/runtime/fs.js +27 -0
  38. package/plugins/workflow-runner/src/runtime/fs.ts +41 -0
  39. package/plugins/workflow-runner/src/runtime/model.js +6 -0
  40. package/plugins/workflow-runner/src/runtime/model.ts +8 -0
  41. package/plugins/workflow-runner/src/runtime/output.js +7 -0
  42. package/plugins/workflow-runner/src/runtime/output.ts +21 -0
  43. package/plugins/workflow-runner/src/runtime/scheduler.js +141 -0
  44. package/plugins/workflow-runner/src/runtime/scheduler.ts +166 -0
  45. package/plugins/workflow-runner/src/runtime/state.js +16 -0
  46. package/plugins/workflow-runner/src/runtime/state.ts +19 -0
  47. package/plugins/workflow-runner/src/runtime/tools.js +3 -0
  48. package/plugins/workflow-runner/src/runtime/tools.ts +6 -0
  49. package/plugins/workflow-runner/src/sandbox.js +141 -0
  50. package/plugins/workflow-runner/src/sandbox.ts +182 -0
  51. package/plugins/workflow-runner/src/scriptGuard.d.mts +38 -0
  52. package/plugins/workflow-runner/src/scriptGuard.mjs +449 -0
  53. package/plugins/workflow-runner/src/taskIdentity.js +172 -152
  54. package/plugins/workflow-runner/src/taskIdentity.ts +233 -200
  55. package/plugins/workflow-runner/src/toolRuntime.js +29 -8
  56. package/plugins/workflow-runner/src/toolRuntime.ts +36 -11
  57. package/plugins/workflow-runner/src/types.js +7 -105
  58. package/plugins/workflow-runner/src/types.ts +155 -520
  59. package/plugins/workflow-runner/src/util.js +47 -0
  60. package/plugins/workflow-runner/src/util.ts +51 -0
  61. package/plugins/workflow-runner/src/workflowContext.js +20 -0
  62. package/plugins/workflow-runner/src/workflowContext.ts +58 -0
  63. package/plugins/workflow-runner/src/workflowDependencies.js +36 -0
  64. package/plugins/workflow-runner/src/workflowDependencies.ts +59 -0
  65. package/plugins/workflow-runner/src/workflowFingerprint.js +118 -0
  66. package/plugins/workflow-runner/src/workflowFingerprint.ts +122 -0
  67. package/plugins/workflow-runner/src/workflowState.js +542 -469
  68. package/plugins/workflow-runner/src/workflowState.ts +639 -589
  69. package/plugins/workflow-runner/test/api.test.ts +223 -0
  70. package/plugins/workflow-runner/test/apiCapabilities.test.ts +614 -0
  71. package/plugins/workflow-runner/test/apiConcurrencyGate.test.ts +104 -0
  72. package/plugins/workflow-runner/test/apiEcho.test.ts +210 -0
  73. package/plugins/workflow-runner/test/apiReadText.test.ts +178 -0
  74. package/plugins/workflow-runner/test/apiResourceLedger.test.ts +184 -0
  75. package/plugins/workflow-runner/test/childWorkflow.test.ts +304 -0
  76. package/plugins/workflow-runner/test/discovery.test.ts +234 -0
  77. package/plugins/workflow-runner/test/goalAnchor.test.ts +106 -0
  78. package/plugins/workflow-runner/test/goalController.test.ts +317 -0
  79. package/plugins/workflow-runner/test/journalLanes.test.ts +198 -0
  80. package/plugins/workflow-runner/test/listResources.test.ts +106 -0
  81. package/plugins/workflow-runner/test/resourceInputs.test.ts +294 -0
  82. package/plugins/workflow-runner/test/sandbox.test.ts +126 -0
  83. package/plugins/workflow-runner/test/scheduler.test.ts +70 -0
  84. package/plugins/workflow-runner/test/scriptGuard.test.ts +276 -0
  85. package/plugins/workflow-runner/test/skillDocSync.test.ts +78 -0
  86. package/plugins/workflow-runner/test/taskIdentity.test.ts +288 -179
  87. package/plugins/workflow-runner/test/workflowFingerprint.test.ts +106 -0
  88. package/plugins/workflow-runner/test/workflowState.test.ts +429 -0
  89. package/skills/pptx/examples/assets/cover-bg.svg +23 -0
  90. package/skills/pptx/examples/assets/icon-spark.svg +5 -0
  91. package/skills/skill-creator/scripts/run_eval.py +3 -2
  92. package/skills/ui-design/SKILL.md +5 -2
  93. package/skills/ui-design/references/layout-composition.md +1 -1
  94. package/skills/workflow-creator/SKILL.md +344 -0
  95. package/skills/workflow-creator/assets/template/workflow.mjs +48 -0
  96. package/skills/workflow-creator/references/api.md +216 -0
  97. package/skills/workflow-creator/references/migration.md +103 -0
  98. package/skills/workflow-creator/references/patterns.md +779 -0
  99. package/skills/workflow-creator/scripts/list-resources.mjs +205 -0
  100. package/skills/workflow-creator/scripts/scaffold.mjs +148 -0
  101. package/skills/workflow-creator/scripts/validate.mjs +275 -0
  102. package/skills/workflow-creator/scripts/workflow-creator.test.mjs +82 -0
  103. package/src/advisor/advisorCoordinator.js +503 -0
  104. package/src/advisor/advisorCoordinator.ts +657 -0
  105. package/src/cli/configMenu.tsx +0 -1
  106. package/src/cli/print.js +44 -6
  107. package/src/cli/print.ts +73 -4
  108. package/src/cli/streamJson.js +5 -6
  109. package/src/cli/streamJson.ts +8 -4
  110. package/src/cli/wizards/advisorWizard.js +4 -2
  111. package/src/cli/wizards/advisorWizard.tsx +8 -2
  112. package/src/cli/wizards/contextAdvisorWizard.js +5 -4
  113. package/src/cli/wizards/contextAdvisorWizard.tsx +7 -6
  114. package/src/collaboration/taskFlow.js +115 -0
  115. package/src/collaboration/taskFlow.ts +169 -0
  116. package/src/config/configDefaults.js +41 -1
  117. package/src/config/configDefaults.ts +43 -1
  118. package/src/config/configDiagnostics.ts +2 -2
  119. package/src/config/configFile.js +40 -9
  120. package/src/config/configFile.ts +60 -11
  121. package/src/config/configService.js +443 -74
  122. package/src/config/configService.ts +723 -142
  123. package/src/config/numericLimits.js +22 -0
  124. package/src/config/numericLimits.ts +24 -0
  125. package/src/config.js +1 -0
  126. package/src/config.ts +3 -2
  127. package/src/context/budgetPlan.js +1 -1
  128. package/src/context/budgetPlan.ts +1 -1
  129. package/src/context/compact.js +7 -2
  130. package/src/context/compact.ts +9 -2
  131. package/src/context/microCompactLite.js +212 -13
  132. package/src/context/microCompactLite.ts +261 -12
  133. package/src/context/sessionRegistry.js +8 -1
  134. package/src/context/sessionRegistry.ts +18 -5
  135. package/src/context/toolResultArchive.js +72 -0
  136. package/src/context/toolResultArchive.ts +95 -0
  137. package/src/goal/errors.js +8 -0
  138. package/src/goal/errors.ts +18 -0
  139. package/src/goal/goalRuntime.js +344 -0
  140. package/src/goal/goalRuntime.ts +466 -0
  141. package/src/goal/goalStore.js +200 -0
  142. package/src/goal/goalStore.ts +219 -0
  143. package/src/goal/index.js +4 -0
  144. package/src/goal/index.ts +4 -0
  145. package/src/goal/statusMapping.js +71 -0
  146. package/src/goal/statusMapping.ts +95 -0
  147. package/src/goal/types.js +7 -0
  148. package/src/goal/types.ts +179 -0
  149. package/src/goal/workflowController.js +306 -0
  150. package/src/goal/workflowController.ts +360 -0
  151. package/src/harness/evidenceLedger.js +2 -0
  152. package/src/harness/evidenceLedger.ts +1 -0
  153. package/src/harness/stallGuard.js +9 -3
  154. package/src/harness/stallGuard.ts +7 -3
  155. package/src/images/imageResolver.js +161 -0
  156. package/src/images/imageResolver.ts +189 -0
  157. package/src/infra/verification.js +56 -20
  158. package/src/infra/verification.ts +87 -20
  159. package/src/llm/client.js +79 -21
  160. package/src/llm/client.ts +182 -35
  161. package/src/llm/gatewayClient.js +201 -0
  162. package/src/llm/gatewayClient.ts +299 -0
  163. package/src/llm/messageProvenance.js +46 -0
  164. package/src/llm/messageProvenance.ts +58 -0
  165. package/src/llm/modelProvider.js +1 -0
  166. package/src/llm/modelProvider.ts +22 -0
  167. package/src/llm/providers/anthropicFormat.js +108 -1
  168. package/src/llm/providers/anthropicFormat.ts +115 -4
  169. package/src/llm/providers/openaiFormat.js +9 -0
  170. package/src/llm/providers/openaiFormat.ts +12 -3
  171. package/src/loop.js +319 -54
  172. package/src/loop.ts +373 -57
  173. package/src/main.js +4 -1
  174. package/src/main.tsx +4 -1
  175. package/src/managedExecution/index.js +2 -0
  176. package/src/managedExecution/index.ts +2 -0
  177. package/src/managedExecution/registry.js +15 -0
  178. package/src/managedExecution/registry.ts +20 -0
  179. package/src/managedExecution/types.js +1 -0
  180. package/src/managedExecution/types.ts +86 -0
  181. package/src/modelRef.js +9 -0
  182. package/src/modelRef.ts +31 -0
  183. package/src/multimodal.js +14 -28
  184. package/src/multimodal.ts +17 -33
  185. package/src/net/lanDiscovery.js +65 -0
  186. package/src/net/lanDiscovery.ts +82 -0
  187. package/src/plugin-sdk.js +28 -3
  188. package/src/plugin-sdk.ts +39 -6
  189. package/src/plugins/pluginApi.ts +16 -1
  190. package/src/plugins/pluginLoader.js +4 -0
  191. package/src/plugins/pluginLoader.ts +6 -0
  192. package/src/plugins/pluginRunner.js +152 -9
  193. package/src/plugins/pluginRunner.ts +186 -8
  194. package/src/plugins/slashFallback.js +113 -0
  195. package/src/plugins/slashFallback.ts +137 -0
  196. package/src/prompts/policyRegistry.js +15 -8
  197. package/src/prompts/policyRegistry.ts +18 -8
  198. package/src/prompts/promptAssembly.js +103 -12
  199. package/src/prompts/promptAssembly.ts +114 -12
  200. package/src/prompts/skillList.js +21 -3
  201. package/src/prompts/skillList.ts +27 -2
  202. package/src/prompts/stableSystemPrompt.js +18 -0
  203. package/src/prompts/stableSystemPrompt.ts +33 -0
  204. package/src/runtime/agentRuntimeContext.js +8 -2
  205. package/src/runtime/agentRuntimeContext.ts +17 -4
  206. package/src/session/runAgentTurn.js +78 -12
  207. package/src/session/runAgentTurn.ts +105 -23
  208. package/src/session/runTurn.js +10 -9
  209. package/src/session/runTurn.ts +17 -8
  210. package/src/session/sessionState.ts +2 -0
  211. package/src/team/auth.js +186 -0
  212. package/src/team/auth.ts +298 -0
  213. package/src/team/cli.js +105 -0
  214. package/src/team/cli.ts +122 -0
  215. package/src/team/onlineToolContract.js +64 -0
  216. package/src/team/onlineToolContract.ts +109 -0
  217. package/src/team/toolPolicy.js +36 -0
  218. package/src/team/toolPolicy.ts +75 -0
  219. package/src/tools/advisor/advisor.js +148 -37
  220. package/src/tools/advisor/advisor.ts +161 -38
  221. package/src/tools/advisor/advisorDecision.js +71 -0
  222. package/src/tools/advisor/advisorDecision.ts +85 -0
  223. package/src/tools/agent/agent.js +18 -5
  224. package/src/tools/agent/agent.ts +21 -7
  225. package/src/tools/agent/agentControl.js +246 -0
  226. package/src/tools/agent/agentControl.ts +284 -0
  227. package/src/tools/agent/agentTaskService.js +40 -1
  228. package/src/tools/agent/agentTaskService.ts +44 -1
  229. package/src/tools/agent/agentTypes.js +14 -2
  230. package/src/tools/agent/agentTypes.ts +15 -2
  231. package/src/tools/applypatch/applyPatch.js +362 -0
  232. package/src/tools/applypatch/applyPatch.ts +428 -0
  233. package/src/tools/bash/bash.js +70 -18
  234. package/src/tools/bash/bash.ts +75 -20
  235. package/src/tools/capabilities.js +10 -5
  236. package/src/tools/capabilities.ts +10 -5
  237. package/src/tools/computeruse/computerIntent.js +32 -0
  238. package/src/tools/computeruse/computerIntent.ts +46 -0
  239. package/src/tools/computeruse/telemetryLog.js +12 -0
  240. package/src/tools/computeruse/telemetryLog.ts +16 -0
  241. package/src/tools/computeruse/vision/telemetry.js +1 -0
  242. package/src/tools/computeruse/vision/telemetry.ts +1 -0
  243. package/src/tools/effectiveToolSet.js +4 -0
  244. package/src/tools/effectiveToolSet.ts +4 -0
  245. package/src/tools/index.js +21 -2
  246. package/src/tools/index.ts +33 -2
  247. package/src/tools/powershell/powershell.js +18 -1
  248. package/src/tools/powershell/powershell.ts +18 -2
  249. package/src/tools/presentresult/presentresult.js +6 -15
  250. package/src/tools/presentresult/presentresult.ts +6 -15
  251. package/src/tools/read/read.js +69 -11
  252. package/src/tools/read/read.ts +70 -11
  253. package/src/tools/shared/fileUtils.js +1 -2
  254. package/src/tools/shared/fileUtils.ts +1 -2
  255. package/src/tools/shared/permanentDeleteGuard.js +34 -3
  256. package/src/tools/shared/permanentDeleteGuard.ts +43 -6
  257. package/src/tools/shared/toolOutputStore.js +23 -1
  258. package/src/tools/shared/toolOutputStore.ts +22 -1
  259. package/src/tools/skill/skill.js +9 -3
  260. package/src/tools/skill/skill.ts +8 -4
  261. package/src/tools/toolPromptGuides.js +117 -0
  262. package/src/tools/toolPromptGuides.ts +137 -0
  263. package/src/tools/webbrowser/agentBrowserPath.js +19 -9
  264. package/src/tools/webbrowser/agentBrowserPath.ts +70 -28
  265. package/src/tools/webbrowser/browser.js +27 -11
  266. package/src/tools/webbrowser/browser.ts +68 -24
  267. package/src/tools/webbrowser/browserAutomation.js +329 -0
  268. package/src/tools/webbrowser/browserAutomation.ts +467 -0
  269. package/src/tools/webbrowser/browserAxState.js +97 -0
  270. package/src/tools/webbrowser/browserAxState.ts +142 -0
  271. package/src/tools/webbrowser/browserBatch.js +1578 -0
  272. package/src/tools/webbrowser/browserBatch.ts +2382 -0
  273. package/src/tools/webbrowser/browserCdp.js +208 -0
  274. package/src/tools/webbrowser/browserCdp.ts +255 -0
  275. package/src/tools/webbrowser/browserConditions.js +24 -0
  276. package/src/tools/webbrowser/browserConditions.ts +45 -0
  277. package/src/tools/webbrowser/browserContent.js +281 -0
  278. package/src/tools/webbrowser/browserContent.ts +438 -0
  279. package/src/tools/webbrowser/browserControl.js +131 -30
  280. package/src/tools/webbrowser/browserControl.ts +210 -50
  281. package/src/tools/webbrowser/browserDaemon.js +22 -14
  282. package/src/tools/webbrowser/browserDaemon.ts +54 -21
  283. package/src/tools/webbrowser/browserFrames.js +47 -0
  284. package/src/tools/webbrowser/browserFrames.ts +54 -0
  285. package/src/tools/webbrowser/browserInteractionResolver.js +17 -0
  286. package/src/tools/webbrowser/browserInteractionResolver.ts +40 -0
  287. package/src/tools/webbrowser/browserLocator.js +140 -0
  288. package/src/tools/webbrowser/browserLocator.ts +194 -0
  289. package/src/tools/webbrowser/browserOutcome.js +10 -17
  290. package/src/tools/webbrowser/browserOutcome.ts +48 -31
  291. package/src/tools/webbrowser/browserRecovery.js +58 -0
  292. package/src/tools/webbrowser/browserRecovery.ts +83 -0
  293. package/src/tools/webbrowser/browserRunRegistry.js +35 -3
  294. package/src/tools/webbrowser/browserRunRegistry.ts +91 -15
  295. package/src/tools/webbrowser/browserService.js +28 -2
  296. package/src/tools/webbrowser/browserService.ts +49 -9
  297. package/src/tools/webbrowser/browserStream.js +132 -33
  298. package/src/tools/webbrowser/browserStream.ts +224 -50
  299. package/src/tools/webbrowser/browserTabs.js +48 -15
  300. package/src/tools/webbrowser/browserTabs.ts +178 -96
  301. package/src/tools/webbrowser/webbrowser.js +683 -144
  302. package/src/tools/webbrowser/webbrowser.ts +979 -236
  303. package/src/tools/webfetch/preapproved.js +0 -2
  304. package/src/tools/webfetch/preapproved.ts +0 -2
  305. package/src/tools/websearch/websearch.js +129 -8
  306. package/src/tools/websearch/websearch.ts +138 -6
  307. package/src/types.ts +450 -42
  308. package/src/ui/App.js +377 -58
  309. package/src/ui/App.tsx +576 -111
  310. package/src/ui/LiveArea.js +14 -8
  311. package/src/ui/LiveArea.tsx +14 -10
  312. package/src/ui/MessageList.js +63 -20
  313. package/src/ui/MessageList.tsx +101 -16
  314. package/src/ui/ModelPicker.js +7 -4
  315. package/src/ui/ModelPicker.tsx +55 -8
  316. package/src/ui/hooks/useChat.js +152 -163
  317. package/src/ui/hooks/useChat.ts +396 -334
  318. package/src/ui/loginCommand.js +56 -0
  319. package/src/ui/loginCommand.ts +63 -0
  320. package/src/ui/toolProgress.js +41 -0
  321. package/src/ui/toolProgress.ts +44 -0
  322. package/src/web/browserBridge.js +20 -2
  323. package/src/web/browserBridge.ts +20 -2
  324. package/src/web/protocol.ts +1897 -194
  325. package/workflows/adaptive-research/workflow.mjs +86 -0
  326. package/workflows/e2e-capabilities/workflow.mjs +102 -0
  327. package/workflows/e2e-llm/workflow.mjs +52 -0
  328. package/workflows/e2e-smoke/workflow.mjs +59 -0
  329. package/workflows/e2e-vision-schema/README.md +48 -0
  330. package/workflows/e2e-vision-schema/workflow.mjs +149 -0
  331. package/workflows/e2e-write-greet/workflow.mjs +37 -0
  332. package/workflows/file-census/README.md +14 -0
  333. package/workflows/file-census/scripts/.gitkeep +2 -0
  334. package/workflows/file-census/workflow.mjs +110 -0
  335. package/workflows/goal/README.md +166 -0
  336. package/workflows/goal/prompts/audit.md +57 -0
  337. package/workflows/goal/prompts/contract.md +56 -0
  338. package/workflows/goal/prompts/iterate.md +37 -0
  339. package/workflows/goal/workflow.mjs +501 -0
  340. package/workflows/illustrate/README.md +90 -0
  341. package/workflows/illustrate/assets/engines.json +20 -0
  342. package/workflows/illustrate/assets/extract-baidu.js +21 -0
  343. package/workflows/illustrate/assets/extract-bing.js +33 -0
  344. package/workflows/illustrate/assets/extract-google.js +31 -0
  345. package/workflows/illustrate/workflow.mjs +301 -0
  346. package/workflows/plan/workflow.mjs +389 -0
  347. package/workflows/question-crops/README.md +35 -0
  348. package/workflows/question-crops/prompts/inventory.md +23 -0
  349. package/workflows/question-crops/scripts/image-ops.mjs +305 -0
  350. package/workflows/question-crops/scripts/image-ops.test.mjs +95 -0
  351. package/workflows/question-crops/workflow.mjs +172 -0
  352. package/workflows/ralph-loop/workflow.mjs +162 -0
  353. package/workflows/research/DESIGN.md +449 -0
  354. package/workflows/research/README.md +74 -0
  355. package/workflows/research/prompts/s0-goal.md +43 -0
  356. package/workflows/research/prompts/s1-early-exit.md +22 -0
  357. package/workflows/research/prompts/s1-map.md +58 -0
  358. package/workflows/research/prompts/s2-options.md +53 -0
  359. package/workflows/research/prompts/s3-deep-dive.md +56 -0
  360. package/workflows/research/prompts/s4-verify.md +74 -0
  361. package/workflows/research/prompts/s5-synthesis.md +81 -0
  362. package/workflows/research/prompts/s5b-fill-gaps.md +32 -0
  363. package/workflows/research/prompts/s6-package.md +32 -0
  364. package/workflows/research/scripts/build-report.mjs +98 -0
  365. package/workflows/research/workflow.mjs +288 -0
  366. package/workflows/wechat-reading-shots/prompts/collect-params.md +16 -0
  367. package/workflows/wechat-reading-shots/prompts/evaluate.md +20 -0
  368. package/workflows/wechat-reading-shots/prompts/open-book.md +28 -0
  369. package/workflows/wechat-reading-shots/prompts/read-page.md +13 -0
  370. package/workflows/wechat-reading-shots/prompts/turn-batch.md +24 -0
  371. package/workflows/wechat-reading-shots/test/control-flow.test.ts +329 -0
  372. package/workflows/wechat-reading-shots/workflow.mjs +266 -0
  373. package/workflows/wrong-question-docx/README.md +55 -0
  374. package/workflows/wrong-question-docx/prompts/figure-qa.md +8 -0
  375. package/workflows/wrong-question-docx/prompts/transcribe.md +25 -0
  376. package/workflows/wrong-question-docx/scripts/workbook.mjs +857 -0
  377. package/workflows/wrong-question-docx/test/control-flow.test.ts +165 -0
  378. package/workflows/wrong-question-docx/test/workbook.test.mjs +303 -0
  379. package/workflows/wrong-question-docx/workflow.mjs +485 -0
  380. package/plugins/workflow-runner/src/agentCommon.js +0 -354
  381. package/plugins/workflow-runner/src/agentCommon.ts +0 -435
  382. package/plugins/workflow-runner/src/controlFlow/branch.js +0 -40
  383. package/plugins/workflow-runner/src/controlFlow/branch.ts +0 -46
  384. package/plugins/workflow-runner/src/controlFlow/loop.js +0 -211
  385. package/plugins/workflow-runner/src/controlFlow/loop.ts +0 -248
  386. package/plugins/workflow-runner/src/controlFlow/pause.js +0 -129
  387. package/plugins/workflow-runner/src/controlFlow/pause.ts +0 -141
  388. package/plugins/workflow-runner/src/controlFlow/signal.js +0 -21
  389. package/plugins/workflow-runner/src/controlFlow/signal.ts +0 -29
  390. package/plugins/workflow-runner/src/controlFlow/types.js +0 -18
  391. package/plugins/workflow-runner/src/controlFlow/types.ts +0 -63
  392. package/plugins/workflow-runner/src/dslManifest.js +0 -72
  393. package/plugins/workflow-runner/src/dslManifest.ts +0 -127
  394. package/plugins/workflow-runner/src/expressions.js +0 -618
  395. package/plugins/workflow-runner/src/expressions.ts +0 -622
  396. package/plugins/workflow-runner/src/loader.js +0 -573
  397. package/plugins/workflow-runner/src/loader.ts +0 -721
  398. package/plugins/workflow-runner/src/multimodal.js +0 -38
  399. package/plugins/workflow-runner/src/multimodal.ts +0 -64
  400. package/plugins/workflow-runner/src/recovery.js +0 -119
  401. package/plugins/workflow-runner/src/recovery.ts +0 -149
  402. package/plugins/workflow-runner/src/stepExecutors/agent.js +0 -173
  403. package/plugins/workflow-runner/src/stepExecutors/agent.ts +0 -234
  404. package/plugins/workflow-runner/src/stepExecutors/assert.js +0 -41
  405. package/plugins/workflow-runner/src/stepExecutors/assert.ts +0 -50
  406. package/plugins/workflow-runner/src/stepExecutors/echo.js +0 -31
  407. package/plugins/workflow-runner/src/stepExecutors/echo.ts +0 -38
  408. package/plugins/workflow-runner/src/stepExecutors/llm.js +0 -99
  409. package/plugins/workflow-runner/src/stepExecutors/llm.ts +0 -133
  410. package/plugins/workflow-runner/src/stepExecutors/set.js +0 -49
  411. package/plugins/workflow-runner/src/stepExecutors/set.ts +0 -56
  412. package/plugins/workflow-runner/src/stepExecutors/skill.js +0 -111
  413. package/plugins/workflow-runner/src/stepExecutors/skill.ts +0 -140
  414. package/plugins/workflow-runner/src/stepExecutors/tool.js +0 -208
  415. package/plugins/workflow-runner/src/stepExecutors/tool.ts +0 -256
  416. package/plugins/workflow-runner/src/stepExecutors/verify.js +0 -58
  417. package/plugins/workflow-runner/src/stepExecutors/verify.ts +0 -68
  418. package/plugins/workflow-runner/src/stepPipeline.js +0 -277
  419. package/plugins/workflow-runner/src/stepPipeline.ts +0 -366
  420. package/plugins/workflow-runner/test/agent.test.ts +0 -587
  421. package/plugins/workflow-runner/test/agentLlmError.test.ts +0 -373
  422. package/plugins/workflow-runner/test/bashBlacklist.sweep.test.ts +0 -65
  423. package/plugins/workflow-runner/test/captureMisbind.test.ts +0 -99
  424. package/plugins/workflow-runner/test/cli.e2e.test.ts +0 -147
  425. package/plugins/workflow-runner/test/context-files.test.ts +0 -320
  426. package/plugins/workflow-runner/test/e2e.test.ts +0 -370
  427. package/plugins/workflow-runner/test/engineRobustness.test.ts +0 -226
  428. package/plugins/workflow-runner/test/expressions.test.ts +0 -397
  429. package/plugins/workflow-runner/test/foundation.test.ts +0 -126
  430. package/plugins/workflow-runner/test/graceful.test.ts +0 -139
  431. package/plugins/workflow-runner/test/greedyInputs.load.test.ts +0 -47
  432. package/plugins/workflow-runner/test/hostCapability.test.ts +0 -108
  433. package/plugins/workflow-runner/test/illustrate.load.test.ts +0 -183
  434. package/plugins/workflow-runner/test/jsonPayload.test.ts +0 -83
  435. package/plugins/workflow-runner/test/loader.test.ts +0 -617
  436. package/plugins/workflow-runner/test/maxTurnsRetryDelay.test.ts +0 -33
  437. package/plugins/workflow-runner/test/multimodal.test.ts +0 -342
  438. package/plugins/workflow-runner/test/output-schema.test.ts +0 -213
  439. package/plugins/workflow-runner/test/parseWorkflowArgs.test.ts +0 -87
  440. package/plugins/workflow-runner/test/pluginRunner.isolation.test.ts +0 -269
  441. package/plugins/workflow-runner/test/ppt.load.test.ts +0 -1220
  442. package/plugins/workflow-runner/test/ralphLoop.e2e.test.ts +0 -220
  443. package/plugins/workflow-runner/test/recovery.test.ts +0 -265
  444. package/plugins/workflow-runner/test/runner.test.ts +0 -911
  445. package/plugins/workflow-runner/test/runnerPreflight.test.ts +0 -379
  446. package/plugins/workflow-runner/test/skillTurnDone.test.ts +0 -71
  447. package/plugins/workflow-runner/test/stateLifecycle.test.ts +0 -150
  448. package/plugins/workflow-runner/test/stepPipeline.test.ts +0 -114
  449. package/plugins/workflow-runner/test/taskArbitration.test.ts +0 -338
  450. package/plugins/workflow-runner/test/taskLifecycle.test.ts +0 -270
  451. package/plugins/workflow-runner/test/toolArtifactOverwrite.test.ts +0 -221
  452. package/plugins/workflow-runner/test/toolCapabilityBoundary.test.ts +0 -29
  453. package/plugins/workflow-runner/test/toolRuntimeIntegration.test.ts +0 -168
  454. package/plugins/workflow-runner/test/webppt.load.test.ts +0 -250
  455. package/plugins/workflow-runner/test/word.load.test.ts +0 -208
  456. package/plugins/workflow-runner/test/workflows.smoke.test.ts +0 -76
  457. package/plugins/workflow-runner/test/yamlGuardConditions.test.ts +0 -207
  458. package/src/advisorState.js +0 -22
  459. package/src/cli/configWizard.js +0 -293
  460. package/src/tools/toolProgressBridge.js +0 -48
  461. package/workflows/adaptive-research.yaml +0 -50
  462. package/workflows/book-review-short.yaml +0 -125
  463. package/workflows/e2e-write-greet.yaml +0 -31
  464. package/workflows/illustrate.yaml +0 -227
  465. package/workflows/plan.yaml +0 -470
  466. package/workflows/ppt.yaml +0 -1670
  467. package/workflows/ralph-loop.yaml +0 -199
  468. package/workflows/schema.json +0 -176
  469. package/workflows/webppt.yaml +0 -496
  470. package/workflows/wechat-reading-shots.yaml +0 -315
  471. package/workflows/word.yaml +0 -720
  472. package/workflows/youtube-shorts.yaml +0 -202
@@ -1,315 +0,0 @@
1
- name: wechat-reading-shots
2
- description: >
3
- 微信读书逐页截图(通用,不绑定具体书):收齐参数(缺的问用户)→ 打开目标书正文 →
4
- 翻到指定页并校验 → 循环「截图 + 翻页」指定张数 → 如实评估。
5
- 纯只读:不发消息、不点提交类按钮、不改动书的任何状态。
6
- version: "0.4"
7
-
8
- # ══════════════════════════════════════════════════════════════════════════
9
- # ★ 这份 yaml 只写**要什么**,不写**怎么点**
10
- # ══════════════════════════════════════════════════════════════════════════
11
- #
12
- # 微信读书的界面知识(页码在哪、怎么用放大镜读、返回箭头在窗口左上角而不是屏幕
13
- # 左上角、书架封面直接点、翻页用 right/left…)全部住在
14
- # plugins/computer_use/app/weread.md
15
- # 引擎会把它的摘要**注入每一次观测**——跨步骤、跨压缩、跨 agent 都在。
16
- #
17
- # ⚠️ 不要再把这些知识抄回 yaml。v0.2/v0.3 就是那么干的,代价是:
18
- # ① yaml prompt 只在步骤首轮出现一次,很快被观测图片埋掉,模型**跳读**
19
- # (实测两次:在第 84 页直接按 right 方向反了;停在发现页不点书架直接转搜索)
20
- # ② 当时还没有 weread 说明书,内核每次观测都注入「你对这个应用一无所知……
21
- # 不要连续盲操作」——和 yaml 里的「批量连发 repeat:8」直接对撞,
22
- # 而说明书那条每次都新鲜送达,必然赢。这就是「越走越慢、反复确认」的根因。
23
- # ③ 写在 yaml 里的知识只服务这一个工作流,换个任务完全用不上。
24
- #
25
- # 工作流在这里的职责只有三件事,都是**引擎能确定性判定**的:
26
- # · 参数收齐了没有(guard_params)
27
- # · 到没到目标页(guard_landing,从模型报的数字算得出)
28
- # · 截图循环跑够没有(loop 结构保证,模型没有数错和撒谎的余地)
29
- # ⛔ 不要把模型对画面的主观分类("现在算书架页还是发现页")包装成协议令牌再当
30
- # 分支条件——那没换来任何确定性,只会把 TAOR 在一步之内自适应的空间切碎。
31
- #
32
- # ⚠️ 刻意不配 self_heal.max_retries:引擎重试是「原样重跑同一步」,对翻页不安全
33
- # (重试一次 = 多翻一页,后续页码全错且不报错)。宁可失败停下。
34
-
35
- inputs:
36
- - name: book
37
- type: string
38
- required: false
39
- default: "" # 空 = 未提供,阶段1 会问用户
40
- greedy: true # 书名含空格,整句吃进来(如 "claude code 源码解析")
41
- - name: start_page
42
- type: number
43
- required: false
44
- default: 0 # 0 = 未提供,阶段1 会问用户
45
- - name: shots
46
- type: number
47
- required: false
48
- default: 0 # 0 = 未提供,阶段1 会问用户
49
-
50
- steps:
51
- # ═══ 阶段 1/4:激活 + 收齐参数 ═══════════════════════════════════════
52
- - id: activate
53
- title: "阶段1/4·打开微信读书"
54
- tool: ComputerUse
55
- uses: [computer] # 显式声明本步要碰这台机器(最小权限)
56
- args:
57
- action: activate_app
58
- appId: com.tencent.weread
59
-
60
- - id: collect_params
61
- title: "阶段1/4·收齐参数"
62
- agent: |
63
- 本次任务需要三个参数。**已经给了的直接用,只问缺的那些**:
64
-
65
- 书名 book = 「${inputs.book}」 (空字符串 = 未提供)
66
- 起始页 start_page = ${inputs.start_page} (0 = 未提供)
67
- 截图张数 shots = ${inputs.shots} (0 = 未提供)
68
-
69
- 有缺失就用 **AskUserQuestion 一次性问清所有缺的项**(不要一项一项分多轮问)。
70
- 给选项的同时也允许自由输入:起始页给 1 / 12 / 50 之类,张数给 5 / 10 / 20 之类。
71
-
72
- 三项都齐了就**不要问任何问题**,直接输出结果。
73
-
74
- 最后**只回复一行 JSON**,不要任何解释、不要代码块围栏:
75
- {"book":"书名","page":起始页数字,"shots":张数数字}
76
- allowed_tools: [AskUserQuestion]
77
- maxTurns: 6
78
- capture:
79
- text: params_json
80
-
81
- - id: set_params
82
- title: "阶段1/4·固化参数"
83
- type: set
84
- set:
85
- # ⚠️ **先把 JSON 从自由文本里抠出来再 parse。**
86
- # 「只回复一行 JSON」这种约定是**没法强制**的 —— 实测模型会在前面加一句
87
- # 「三项参数都已给出:…」,也可能套 ```json 围栏。裸 parseJson 拿到整段就炸,
88
- # 而炸的表现是 cfg=null → guard_params 报「参数没收齐」,
89
- # 文案完全指不向真因(参数明明齐了,是解析被前言撑爆了)。
90
- # `([{][^]*[}])` 取首个 { 到末个 } —— 无反斜杠(YAML 会吃掉一层,见 guard_open 注释),
91
- # 对「纯 JSON / 带前言 / 带围栏 / 前后都有话」四种形态都成立。
92
- cfg: "${parseJson(join(extract(params_json, '([{][^]*[}])'), ''))}"
93
-
94
- - id: guard_params
95
- title: "阶段1/4·校验参数"
96
- type: assert
97
- condition: "cfg.book != '' && cfg.page > 0 && cfg.shots > 0"
98
- onFail: >
99
- 参数没收齐(书名为空,或起始页/张数不是正数)。通常是上一步没按约定只回一行 JSON,
100
- 或用户取消了提问。可以直接在命令行给全参数重跑:
101
- /workflow wechat-reading-shots <书名> --input start_page=N --input shots=N
102
-
103
- # ═══ 阶段 2/4:打开目标书的正文 ══════════════════════════════════════
104
- # 一个步骤,交给 TAOR 自己随机应变。怎么归位、怎么进书、什么时候该改用搜索,
105
- # 说明书里全有(open_book / back_to_home / read_page_number / seek_to_page 四条流程),
106
- # 而且每次观测都在它眼前。这里只声明**目标和判据**。
107
- - id: open_book
108
- title: "阶段2/4·打开《${cfg.book}》正文"
109
- agent: |
110
- 把微信读书弄到《${cfg.book}》的**正文页**。
111
-
112
- 判据只有一条:**能读出页码**(形如「N / 总数」)。读得到就算完成。
113
- 读页码的方法、界面各处的位置、遇到奇怪界面怎么退回去 —— 说明书里都有,
114
- 它的摘要就在你每次 observe 的回执里,照着做。
115
-
116
- ⛔ **这一步只负责「打开到正文页」,到此为止。**
117
- **不要**去翻到第几页 —— 说明书里那条 seek_to_page 流程不归你执行,
118
- 下一步由引擎驱动,它会先读页码再决定翻多少。你在这里翻页只会把落点搞乱。
119
- **一旦读到页码,立刻回 OPEN=ok 结束本步**,一个多余动作都不要做。
120
- (实测教训:这一步曾自作主张把书翻到目标页,干了 4 分钟、还忘了给结论行,
121
- 整条工作流因为「没有产出任何结果」而 halt。)
122
-
123
- 纪律:
124
- - 第一个动作必须是 observe,先看清在哪再决定做什么
125
- - 只读任务:不点购买 / 订阅 / 分享 / 赠一得一 / 加入书架
126
- - **搜索结果里出现多本书名高度相似的书时(这在本应用里非常常见),
127
- 不要自己挑 —— 用 AskUserQuestion 把候选的完整书名 + 作者列给用户确认。**
128
- 点错书的代价是后面全部十几张截图都白拍。
129
- - 操作飞到了不认识的界面:按说明书的 back_to_home 流程复位。
130
- **别在原地反复试**,也别用鼠标去正文里乱点。
131
- - 其它卡住、拿不准的地方一样用 AskUserQuestion 问,不要瞎试
132
-
133
- ⚠️ 无论过程如何,**最后一行必须是下面两者之一**,缺了这行整步算失败:
134
- - 已停在能读到页码的正文页 → OPEN=ok
135
- - 试过各种办法仍进不去 → OPEN=fail
136
- allowed_tools: [ComputerUse, AskUserQuestion]
137
- maxTurns: 35
138
- capture:
139
- text: open_state
140
-
141
- - id: guard_open
142
- title: "阶段2/4·校验已在正文"
143
- type: assert
144
- # ⚠️ 两条都是实测踩出来的:
145
- # ① 用 OPEN=xxx 令牌精确取值,不能用 includes 在自由文本里找关键词 ——
146
- # 模型回「ok 的路子都走不通」时 includes('ok') 会判真放行。
147
- # ② 正则里不要用 \w、\d 这类反斜杠转义,一律写字符类 [a-z] / [0-9]。
148
- # 表达式引擎的字符串字面量吃一层反斜杠,YAML 双引号标量又吃一层 ——
149
- # 写 '(\w+)' 传到引擎手上变成 '(w+)',正则悄悄失配。
150
- # **不报错,护栏只是永远判假**,看到的是完全误导人的 onFail 文案。
151
- condition: "extract(open_state, 'OPEN=([a-z]+)') == 'ok'"
152
- onFail: >
153
- 没能停到《${cfg.book}》的正文页上(判据是读不到页码)。模型的说法:${open_state}
154
- 请确认书名是否正确、该书在你的账号下是否可读,或人工把书翻到正文任意一页后重跑。
155
-
156
- # ═══ 阶段 3/4:翻到目标页 ════════════════════════════════════════════
157
- # ⚠️ **这一段拆成引擎循环是有价值的,和阶段 2 不同**:
158
- # 它路由的是引擎**能确定性算出来**的东西(目标页在不在当前对开的两页里),
159
- # 而且强制每翻一批之前先重读一次页码 —— 模型没有跳过的余地。
160
- # 实测:一次就把书从第 84 页收敛到 12/13 页,批量档转精准档一步不差。
161
- # 对照 v0.3 把整套算法写进一段 prompt 时,它进书后第一个动作就是按 right
162
- # (当时在第 84 页、目标 12 页,方向都反了),页码一次都没读。
163
- - id: seek_loop
164
- title: "阶段3/4·翻到第 ${cfg.page} 页"
165
- type: loop
166
- max_iterations: 14 # 足够从任意页收敛;真收敛不了由 guard_landing 诚实报错
167
- do:
168
- - id: read_page
169
- title: "阶段3/4·读当前页码"
170
- agent: |
171
- 只做一件事:**读出当前页码**。不要翻页,不要点任何东西。
172
- 方法见说明书的 read_page_number 流程(摘要就在你的 observe 回执里)。
173
-
174
- **只回复一行**,格式严格如下,不要任何解释:
175
- PAGE=<左页码> <右页码>
176
- 例:PAGE=84 85 单页显示时两个写一样:PAGE=12 12
177
- 实在读不出来就回复:PAGE=0 0
178
- allowed_tools: [ComputerUse]
179
- maxTurns: 5
180
- capture:
181
- text: cur_page
182
-
183
- # 目标页已经出现在当前对开的两页里 → 到位,收工
184
- - id: reached
185
- type: break
186
- when: >
187
- extract(cur_page, 'PAGE=([0-9]+)') == cfg.page
188
- || extract(cur_page, 'PAGE=[0-9]+ ([0-9]+)') == cfg.page
189
-
190
- - id: turn_batch
191
- title: "阶段3/4·翻页"
192
- agent: |
193
- 当前页码:${cur_page} 目标页:${cfg.page}
194
-
195
- 照这三步做,**不要自由发挥**:
196
-
197
- ① 取当前左页码 L —— 就是 ${cur_page} 里的第一个数字
198
- ② 方向 = L > ${cfg.page} 时用 left,否则用 right
199
- N(还要按几次)= 向上取整( |L − ${cfg.page}| ÷ 2 )
200
- (每次按键翻几页由说明书 seek_to_page 给出,别自己假设)
201
- ③ 按 N 发**一次**工具调用,然后立刻结束本步:
202
- N ≥ 5 → {action:"key", key:"<方向>", repeat:<min(N,8)>, repeatFrames:"last"}
203
- N ≤ 4 → {action:"key", key:"<方向>"}
204
-
205
- ⛔ **N ≥ 5 时必须用 repeat 一次发满,不许一下一下按。**
206
- 一下一下按,每按一次都要多花一个完整的 LLM 往返(约 30 秒),
207
- 而 repeat 一轮就干完(约 1 秒)—— 实测 N=6 时一次一按比批量多花了 5 分钟。
208
- `repeatFrames:"last"` 也必须带上:不带的话 repeat:8 会回 8 张全屏图
209
- (约 1 万 token),而中间那些页你根本不看。
210
- ⛔ 发完就结束本步。不要自己循环、不要自己再 observe 确认 ——
211
- 外层引擎下一轮会先重新读页码,那才是权威值。
212
- ⛔ 全程零鼠标。
213
- allowed_tools: [ComputerUse]
214
- maxTurns: 4
215
-
216
- - id: guard_landing
217
- title: "阶段3/4·校验是否到达目标页"
218
- type: assert
219
- # 用循环里**最后一次** read_page 的结果 —— 它每轮都读,最后那次就是落点。
220
- # ⚠️ 循环体里 capture 的变量能活到这里,是靠 VarStack 区分「迭代变量」与
221
- # 「作者命名变量」(见 types.ts::VarStack)。此前迭代帧把它一起弹掉,
222
- # 导致刚刚成功翻到第 12 页的运行被判成失败,报错文案还完全指不向真因。
223
- # 双页对开:目标页落在左页或右页都算到位。
224
- # 必须用 extract 精确取数,不能用 includes —— 'PAGE=112 113' 含子串 '12' 会误判。
225
- condition: >
226
- extract(cur_page, 'PAGE=([0-9]+)') == cfg.page
227
- || extract(cur_page, 'PAGE=[0-9]+ ([0-9]+)') == cfg.page
228
- onFail: >
229
- 没能翻到第 ${cfg.page} 页(最后读到的页码:${cur_page})。
230
- 可能原因:目标页超出本书范围、翻页中撞到首/末页、或页码始终读不出来(PAGE=0 0)。
231
- ⚠️ 这里**故意不自动重试** —— 重试会在错误的位置上继续翻,把落点推得更远。
232
-
233
- # ═══ 阶段 4/4:截图循环 + 汇报 ═══════════════════════════════════════
234
- # 确定性 loop,不是 agent:动作固定、次数固定,没有需要判断的余地。
235
- # ⚠️ 实测教训:这步曾经是 agent,它按了 3 次却报告「12 次已完成」。
236
- # 次数确定的事交给模型,它唯一能贡献的就是数错并且说谎。引擎自己数没有撒谎余地,
237
- # 还快一个数量级(每轮约 2 秒 vs agent 每轮一个 LLM 往返约 30 秒)。
238
- - id: shoot_loop
239
- title: "阶段4/4·截图并翻页"
240
- type: loop
241
- max_iterations: "${cfg.shots}"
242
- do:
243
- - id: shoot
244
- title: "阶段4/4·截图"
245
- tool: ComputerUse
246
- uses: [computer]
247
- args:
248
- action: observe
249
- # 每张截图附一张页码特写。全屏图上页码只有约 5px、肉眼和模型都读不了,
250
- # 不带这个的话交付出去的 10 张图**无法核对到底拍的是哪几页**(实测踩过)。
251
- # ⚠️ 坐标是**相对窗口**的(magnifyAnchor: window)——窗口常常不是全屏,
252
- # 用全屏坐标写死必然框偏,而确定性 tool 步里没有模型来现算窗口范围。
253
- magnify: { x: 0, y: 945, width: 1000, height: 55 }
254
- magnifyAnchor: window
255
- capture:
256
- # { 结果字段: 变量名 }:tool 步的 raw.images 是截图路径数组
257
- images: last_shot
258
-
259
- - id: turn_page
260
- title: "阶段4/4·翻页"
261
- tool: ComputerUse
262
- uses: [computer]
263
- args:
264
- action: key
265
- key: right
266
- capture:
267
- content: turn_receipt
268
-
269
- # 撞到书末就收工:继续拍只会得到 N 张一模一样的最后一页。
270
- # ⚠️ 这条判据可信,是因为「变化率」信号已被修好 —— 此前翻页恒报 0.0%
271
- # (前后差分抢在应用重绘之前测),拿它当判据会第一次翻页就误停。
272
- # 修好后实测:真翻动 15%~26%、真撞墙精确 0.00,泾渭分明。
273
- - id: mark_edge
274
- type: set
275
- when: "includes(turn_receipt, '变化很小')"
276
- set:
277
- hit_edge: true
278
-
279
- - id: shoot_break
280
- type: break
281
- when: "hit_edge == true"
282
-
283
- # echo 是确定性输出(不烧 LLM、零幻觉):张数由引擎的循环结构保证,
284
- # 不需要、也不应该让模型去"回忆"拍了几张。
285
- - id: report_count
286
- title: "阶段4/4·截图张数结论"
287
- type: echo
288
- message: >
289
- 📸 截图循环结束。请求 ${cfg.shots} 张,起始页 ${cfg.page}(实际落点 ${cur_page})。
290
- hit_edge=${hit_edge} —— true 表示中途撞到书末提前收工、实际张数少于请求值;
291
- 未置位表示完整跑满 ${cfg.shots} 轮。轮数由引擎循环结构保证,不是模型自述。
292
-
293
- - id: evaluate
294
- title: "阶段4/4·评估本次自动化"
295
- agent: |
296
- 评估**这次自动化跑得成不成功**(不是评估书的内容)。
297
-
298
- 本次流程:打开《${cfg.book}》正文 → 翻到第 ${cfg.page} 页(落点 ${cur_page})→
299
- 循环 ${cfg.shots} 次「截图 + 翻页」。
300
-
301
- observe 一次(用说明书的 read_page_number 流程读清当前页码),结合过程中看到的
302
- 截图,如实回答:
303
-
304
- 1. 打开的确实是《${cfg.book}》吗?依据是什么?
305
- 2. 截图是否都是**不同**的页面?依据是每次 turn_page 回执的变化率(0.0% = 没翻动)。
306
- 3. 过程中有没有误触?(弹出菜单、放大插图、跳转别的界面、触发购买/分享)
307
- 4. 当前停在第几页?用放大镜读出来的真实数字,不要猜。
308
-
309
- 要求:
310
- - 每条结论都要说清依据,不要笼统说"成功"
311
- - 拿不准就明说拿不准
312
- - **不要凭记忆报按键次数或截图张数** —— 记不清就直说记不清
313
- - 最后一句总评:成功 / 部分成功 / 失败,以及卡在哪一步
314
- allowed_tools: [ComputerUse]
315
- maxTurns: 12