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.
- package/README.md +6 -5
- package/package.json +62 -5
- package/plugins/computer_use/.claude-plugin/plugin.json +1 -1
- package/plugins/cron-runner/src/commands.js +4 -4
- package/plugins/cron-runner/src/commands.ts +4 -4
- package/plugins/workflow-runner/.claude-plugin/plugin.json +2 -2
- package/plugins/workflow-runner/commands/workflow.md +57 -90
- package/plugins/workflow-runner/commands/workflows.md +4 -4
- package/plugins/workflow-runner/plugin.js +24 -13
- package/plugins/workflow-runner/plugin.ts +28 -13
- package/plugins/workflow-runner/src/discovery.js +160 -0
- package/plugins/workflow-runner/src/discovery.ts +194 -0
- package/plugins/workflow-runner/src/goalAnchor.js +53 -0
- package/plugins/workflow-runner/src/goalAnchor.ts +59 -0
- package/plugins/workflow-runner/src/index.js +204 -185
- package/plugins/workflow-runner/src/index.ts +249 -224
- package/plugins/workflow-runner/src/inputCoercion.js +40 -0
- package/plugins/workflow-runner/src/inputCoercion.ts +43 -0
- package/plugins/workflow-runner/src/journal.js +224 -0
- package/plugins/workflow-runner/src/journal.ts +274 -0
- package/plugins/workflow-runner/src/jsonSchema.js +132 -0
- package/plugins/workflow-runner/src/jsonSchema.ts +162 -0
- package/plugins/workflow-runner/src/moduleResolution.js +64 -0
- package/plugins/workflow-runner/src/moduleResolution.ts +71 -0
- package/plugins/workflow-runner/src/resourceInputs.js +220 -0
- package/plugins/workflow-runner/src/resourceInputs.ts +300 -0
- package/plugins/workflow-runner/src/runner.js +404 -467
- package/plugins/workflow-runner/src/runner.ts +491 -535
- package/plugins/workflow-runner/src/runtime/config.js +46 -0
- package/plugins/workflow-runner/src/runtime/config.ts +69 -0
- package/plugins/workflow-runner/src/runtime/context.js +1304 -0
- package/plugins/workflow-runner/src/runtime/context.ts +1786 -0
- package/plugins/workflow-runner/src/runtime/exec.js +34 -0
- package/plugins/workflow-runner/src/runtime/exec.ts +53 -0
- package/plugins/workflow-runner/src/runtime/flow.js +8 -0
- package/plugins/workflow-runner/src/runtime/flow.ts +12 -0
- package/plugins/workflow-runner/src/runtime/fs.js +27 -0
- package/plugins/workflow-runner/src/runtime/fs.ts +41 -0
- package/plugins/workflow-runner/src/runtime/model.js +6 -0
- package/plugins/workflow-runner/src/runtime/model.ts +8 -0
- package/plugins/workflow-runner/src/runtime/output.js +7 -0
- package/plugins/workflow-runner/src/runtime/output.ts +21 -0
- package/plugins/workflow-runner/src/runtime/scheduler.js +141 -0
- package/plugins/workflow-runner/src/runtime/scheduler.ts +166 -0
- package/plugins/workflow-runner/src/runtime/state.js +16 -0
- package/plugins/workflow-runner/src/runtime/state.ts +19 -0
- package/plugins/workflow-runner/src/runtime/tools.js +3 -0
- package/plugins/workflow-runner/src/runtime/tools.ts +6 -0
- package/plugins/workflow-runner/src/sandbox.js +141 -0
- package/plugins/workflow-runner/src/sandbox.ts +182 -0
- package/plugins/workflow-runner/src/scriptGuard.d.mts +38 -0
- package/plugins/workflow-runner/src/scriptGuard.mjs +449 -0
- package/plugins/workflow-runner/src/taskIdentity.js +172 -152
- package/plugins/workflow-runner/src/taskIdentity.ts +233 -200
- package/plugins/workflow-runner/src/toolRuntime.js +29 -8
- package/plugins/workflow-runner/src/toolRuntime.ts +36 -11
- package/plugins/workflow-runner/src/types.js +7 -105
- package/plugins/workflow-runner/src/types.ts +155 -520
- package/plugins/workflow-runner/src/util.js +47 -0
- package/plugins/workflow-runner/src/util.ts +51 -0
- package/plugins/workflow-runner/src/workflowContext.js +20 -0
- package/plugins/workflow-runner/src/workflowContext.ts +58 -0
- package/plugins/workflow-runner/src/workflowDependencies.js +36 -0
- package/plugins/workflow-runner/src/workflowDependencies.ts +59 -0
- package/plugins/workflow-runner/src/workflowFingerprint.js +118 -0
- package/plugins/workflow-runner/src/workflowFingerprint.ts +122 -0
- package/plugins/workflow-runner/src/workflowState.js +542 -469
- package/plugins/workflow-runner/src/workflowState.ts +639 -589
- package/plugins/workflow-runner/test/api.test.ts +223 -0
- package/plugins/workflow-runner/test/apiCapabilities.test.ts +614 -0
- package/plugins/workflow-runner/test/apiConcurrencyGate.test.ts +104 -0
- package/plugins/workflow-runner/test/apiEcho.test.ts +210 -0
- package/plugins/workflow-runner/test/apiReadText.test.ts +178 -0
- package/plugins/workflow-runner/test/apiResourceLedger.test.ts +184 -0
- package/plugins/workflow-runner/test/childWorkflow.test.ts +304 -0
- package/plugins/workflow-runner/test/discovery.test.ts +234 -0
- package/plugins/workflow-runner/test/goalAnchor.test.ts +106 -0
- package/plugins/workflow-runner/test/goalController.test.ts +317 -0
- package/plugins/workflow-runner/test/journalLanes.test.ts +198 -0
- package/plugins/workflow-runner/test/listResources.test.ts +106 -0
- package/plugins/workflow-runner/test/resourceInputs.test.ts +294 -0
- package/plugins/workflow-runner/test/sandbox.test.ts +126 -0
- package/plugins/workflow-runner/test/scheduler.test.ts +70 -0
- package/plugins/workflow-runner/test/scriptGuard.test.ts +276 -0
- package/plugins/workflow-runner/test/skillDocSync.test.ts +78 -0
- package/plugins/workflow-runner/test/taskIdentity.test.ts +288 -179
- package/plugins/workflow-runner/test/workflowFingerprint.test.ts +106 -0
- package/plugins/workflow-runner/test/workflowState.test.ts +429 -0
- package/skills/pptx/examples/assets/cover-bg.svg +23 -0
- package/skills/pptx/examples/assets/icon-spark.svg +5 -0
- package/skills/skill-creator/scripts/run_eval.py +3 -2
- package/skills/ui-design/SKILL.md +5 -2
- package/skills/ui-design/references/layout-composition.md +1 -1
- package/skills/workflow-creator/SKILL.md +344 -0
- package/skills/workflow-creator/assets/template/workflow.mjs +48 -0
- package/skills/workflow-creator/references/api.md +216 -0
- package/skills/workflow-creator/references/migration.md +103 -0
- package/skills/workflow-creator/references/patterns.md +779 -0
- package/skills/workflow-creator/scripts/list-resources.mjs +205 -0
- package/skills/workflow-creator/scripts/scaffold.mjs +148 -0
- package/skills/workflow-creator/scripts/validate.mjs +275 -0
- package/skills/workflow-creator/scripts/workflow-creator.test.mjs +82 -0
- package/src/advisor/advisorCoordinator.js +503 -0
- package/src/advisor/advisorCoordinator.ts +657 -0
- package/src/cli/configMenu.tsx +0 -1
- package/src/cli/print.js +44 -6
- package/src/cli/print.ts +73 -4
- package/src/cli/streamJson.js +5 -6
- package/src/cli/streamJson.ts +8 -4
- package/src/cli/wizards/advisorWizard.js +4 -2
- package/src/cli/wizards/advisorWizard.tsx +8 -2
- package/src/cli/wizards/contextAdvisorWizard.js +5 -4
- package/src/cli/wizards/contextAdvisorWizard.tsx +7 -6
- package/src/collaboration/taskFlow.js +115 -0
- package/src/collaboration/taskFlow.ts +169 -0
- package/src/config/configDefaults.js +41 -1
- package/src/config/configDefaults.ts +43 -1
- package/src/config/configDiagnostics.ts +2 -2
- package/src/config/configFile.js +40 -9
- package/src/config/configFile.ts +60 -11
- package/src/config/configService.js +443 -74
- package/src/config/configService.ts +723 -142
- package/src/config/numericLimits.js +22 -0
- package/src/config/numericLimits.ts +24 -0
- package/src/config.js +1 -0
- package/src/config.ts +3 -2
- package/src/context/budgetPlan.js +1 -1
- package/src/context/budgetPlan.ts +1 -1
- package/src/context/compact.js +7 -2
- package/src/context/compact.ts +9 -2
- package/src/context/microCompactLite.js +212 -13
- package/src/context/microCompactLite.ts +261 -12
- package/src/context/sessionRegistry.js +8 -1
- package/src/context/sessionRegistry.ts +18 -5
- package/src/context/toolResultArchive.js +72 -0
- package/src/context/toolResultArchive.ts +95 -0
- package/src/goal/errors.js +8 -0
- package/src/goal/errors.ts +18 -0
- package/src/goal/goalRuntime.js +344 -0
- package/src/goal/goalRuntime.ts +466 -0
- package/src/goal/goalStore.js +200 -0
- package/src/goal/goalStore.ts +219 -0
- package/src/goal/index.js +4 -0
- package/src/goal/index.ts +4 -0
- package/src/goal/statusMapping.js +71 -0
- package/src/goal/statusMapping.ts +95 -0
- package/src/goal/types.js +7 -0
- package/src/goal/types.ts +179 -0
- package/src/goal/workflowController.js +306 -0
- package/src/goal/workflowController.ts +360 -0
- package/src/harness/evidenceLedger.js +2 -0
- package/src/harness/evidenceLedger.ts +1 -0
- package/src/harness/stallGuard.js +9 -3
- package/src/harness/stallGuard.ts +7 -3
- package/src/images/imageResolver.js +161 -0
- package/src/images/imageResolver.ts +189 -0
- package/src/infra/verification.js +56 -20
- package/src/infra/verification.ts +87 -20
- package/src/llm/client.js +79 -21
- package/src/llm/client.ts +182 -35
- package/src/llm/gatewayClient.js +201 -0
- package/src/llm/gatewayClient.ts +299 -0
- package/src/llm/messageProvenance.js +46 -0
- package/src/llm/messageProvenance.ts +58 -0
- package/src/llm/modelProvider.js +1 -0
- package/src/llm/modelProvider.ts +22 -0
- package/src/llm/providers/anthropicFormat.js +108 -1
- package/src/llm/providers/anthropicFormat.ts +115 -4
- package/src/llm/providers/openaiFormat.js +9 -0
- package/src/llm/providers/openaiFormat.ts +12 -3
- package/src/loop.js +319 -54
- package/src/loop.ts +373 -57
- package/src/main.js +4 -1
- package/src/main.tsx +4 -1
- package/src/managedExecution/index.js +2 -0
- package/src/managedExecution/index.ts +2 -0
- package/src/managedExecution/registry.js +15 -0
- package/src/managedExecution/registry.ts +20 -0
- package/src/managedExecution/types.js +1 -0
- package/src/managedExecution/types.ts +86 -0
- package/src/modelRef.js +9 -0
- package/src/modelRef.ts +31 -0
- package/src/multimodal.js +14 -28
- package/src/multimodal.ts +17 -33
- package/src/net/lanDiscovery.js +65 -0
- package/src/net/lanDiscovery.ts +82 -0
- package/src/plugin-sdk.js +28 -3
- package/src/plugin-sdk.ts +39 -6
- package/src/plugins/pluginApi.ts +16 -1
- package/src/plugins/pluginLoader.js +4 -0
- package/src/plugins/pluginLoader.ts +6 -0
- package/src/plugins/pluginRunner.js +152 -9
- package/src/plugins/pluginRunner.ts +186 -8
- package/src/plugins/slashFallback.js +113 -0
- package/src/plugins/slashFallback.ts +137 -0
- package/src/prompts/policyRegistry.js +15 -8
- package/src/prompts/policyRegistry.ts +18 -8
- package/src/prompts/promptAssembly.js +103 -12
- package/src/prompts/promptAssembly.ts +114 -12
- package/src/prompts/skillList.js +21 -3
- package/src/prompts/skillList.ts +27 -2
- package/src/prompts/stableSystemPrompt.js +18 -0
- package/src/prompts/stableSystemPrompt.ts +33 -0
- package/src/runtime/agentRuntimeContext.js +8 -2
- package/src/runtime/agentRuntimeContext.ts +17 -4
- package/src/session/runAgentTurn.js +78 -12
- package/src/session/runAgentTurn.ts +105 -23
- package/src/session/runTurn.js +10 -9
- package/src/session/runTurn.ts +17 -8
- package/src/session/sessionState.ts +2 -0
- package/src/team/auth.js +186 -0
- package/src/team/auth.ts +298 -0
- package/src/team/cli.js +105 -0
- package/src/team/cli.ts +122 -0
- package/src/team/onlineToolContract.js +64 -0
- package/src/team/onlineToolContract.ts +109 -0
- package/src/team/toolPolicy.js +36 -0
- package/src/team/toolPolicy.ts +75 -0
- package/src/tools/advisor/advisor.js +148 -37
- package/src/tools/advisor/advisor.ts +161 -38
- package/src/tools/advisor/advisorDecision.js +71 -0
- package/src/tools/advisor/advisorDecision.ts +85 -0
- package/src/tools/agent/agent.js +18 -5
- package/src/tools/agent/agent.ts +21 -7
- package/src/tools/agent/agentControl.js +246 -0
- package/src/tools/agent/agentControl.ts +284 -0
- package/src/tools/agent/agentTaskService.js +40 -1
- package/src/tools/agent/agentTaskService.ts +44 -1
- package/src/tools/agent/agentTypes.js +14 -2
- package/src/tools/agent/agentTypes.ts +15 -2
- package/src/tools/applypatch/applyPatch.js +362 -0
- package/src/tools/applypatch/applyPatch.ts +428 -0
- package/src/tools/bash/bash.js +70 -18
- package/src/tools/bash/bash.ts +75 -20
- package/src/tools/capabilities.js +10 -5
- package/src/tools/capabilities.ts +10 -5
- package/src/tools/computeruse/computerIntent.js +32 -0
- package/src/tools/computeruse/computerIntent.ts +46 -0
- package/src/tools/computeruse/telemetryLog.js +12 -0
- package/src/tools/computeruse/telemetryLog.ts +16 -0
- package/src/tools/computeruse/vision/telemetry.js +1 -0
- package/src/tools/computeruse/vision/telemetry.ts +1 -0
- package/src/tools/effectiveToolSet.js +4 -0
- package/src/tools/effectiveToolSet.ts +4 -0
- package/src/tools/index.js +21 -2
- package/src/tools/index.ts +33 -2
- package/src/tools/powershell/powershell.js +18 -1
- package/src/tools/powershell/powershell.ts +18 -2
- package/src/tools/presentresult/presentresult.js +6 -15
- package/src/tools/presentresult/presentresult.ts +6 -15
- package/src/tools/read/read.js +69 -11
- package/src/tools/read/read.ts +70 -11
- package/src/tools/shared/fileUtils.js +1 -2
- package/src/tools/shared/fileUtils.ts +1 -2
- package/src/tools/shared/permanentDeleteGuard.js +34 -3
- package/src/tools/shared/permanentDeleteGuard.ts +43 -6
- package/src/tools/shared/toolOutputStore.js +23 -1
- package/src/tools/shared/toolOutputStore.ts +22 -1
- package/src/tools/skill/skill.js +9 -3
- package/src/tools/skill/skill.ts +8 -4
- package/src/tools/toolPromptGuides.js +117 -0
- package/src/tools/toolPromptGuides.ts +137 -0
- package/src/tools/webbrowser/agentBrowserPath.js +19 -9
- package/src/tools/webbrowser/agentBrowserPath.ts +70 -28
- package/src/tools/webbrowser/browser.js +27 -11
- package/src/tools/webbrowser/browser.ts +68 -24
- package/src/tools/webbrowser/browserAutomation.js +329 -0
- package/src/tools/webbrowser/browserAutomation.ts +467 -0
- package/src/tools/webbrowser/browserAxState.js +97 -0
- package/src/tools/webbrowser/browserAxState.ts +142 -0
- package/src/tools/webbrowser/browserBatch.js +1578 -0
- package/src/tools/webbrowser/browserBatch.ts +2382 -0
- package/src/tools/webbrowser/browserCdp.js +208 -0
- package/src/tools/webbrowser/browserCdp.ts +255 -0
- package/src/tools/webbrowser/browserConditions.js +24 -0
- package/src/tools/webbrowser/browserConditions.ts +45 -0
- package/src/tools/webbrowser/browserContent.js +281 -0
- package/src/tools/webbrowser/browserContent.ts +438 -0
- package/src/tools/webbrowser/browserControl.js +131 -30
- package/src/tools/webbrowser/browserControl.ts +210 -50
- package/src/tools/webbrowser/browserDaemon.js +22 -14
- package/src/tools/webbrowser/browserDaemon.ts +54 -21
- package/src/tools/webbrowser/browserFrames.js +47 -0
- package/src/tools/webbrowser/browserFrames.ts +54 -0
- package/src/tools/webbrowser/browserInteractionResolver.js +17 -0
- package/src/tools/webbrowser/browserInteractionResolver.ts +40 -0
- package/src/tools/webbrowser/browserLocator.js +140 -0
- package/src/tools/webbrowser/browserLocator.ts +194 -0
- package/src/tools/webbrowser/browserOutcome.js +10 -17
- package/src/tools/webbrowser/browserOutcome.ts +48 -31
- package/src/tools/webbrowser/browserRecovery.js +58 -0
- package/src/tools/webbrowser/browserRecovery.ts +83 -0
- package/src/tools/webbrowser/browserRunRegistry.js +35 -3
- package/src/tools/webbrowser/browserRunRegistry.ts +91 -15
- package/src/tools/webbrowser/browserService.js +28 -2
- package/src/tools/webbrowser/browserService.ts +49 -9
- package/src/tools/webbrowser/browserStream.js +132 -33
- package/src/tools/webbrowser/browserStream.ts +224 -50
- package/src/tools/webbrowser/browserTabs.js +48 -15
- package/src/tools/webbrowser/browserTabs.ts +178 -96
- package/src/tools/webbrowser/webbrowser.js +683 -144
- package/src/tools/webbrowser/webbrowser.ts +979 -236
- package/src/tools/webfetch/preapproved.js +0 -2
- package/src/tools/webfetch/preapproved.ts +0 -2
- package/src/tools/websearch/websearch.js +129 -8
- package/src/tools/websearch/websearch.ts +138 -6
- package/src/types.ts +450 -42
- package/src/ui/App.js +377 -58
- package/src/ui/App.tsx +576 -111
- package/src/ui/LiveArea.js +14 -8
- package/src/ui/LiveArea.tsx +14 -10
- package/src/ui/MessageList.js +63 -20
- package/src/ui/MessageList.tsx +101 -16
- package/src/ui/ModelPicker.js +7 -4
- package/src/ui/ModelPicker.tsx +55 -8
- package/src/ui/hooks/useChat.js +152 -163
- package/src/ui/hooks/useChat.ts +396 -334
- package/src/ui/loginCommand.js +56 -0
- package/src/ui/loginCommand.ts +63 -0
- package/src/ui/toolProgress.js +41 -0
- package/src/ui/toolProgress.ts +44 -0
- package/src/web/browserBridge.js +20 -2
- package/src/web/browserBridge.ts +20 -2
- package/src/web/protocol.ts +1897 -194
- package/workflows/adaptive-research/workflow.mjs +86 -0
- package/workflows/e2e-capabilities/workflow.mjs +102 -0
- package/workflows/e2e-llm/workflow.mjs +52 -0
- package/workflows/e2e-smoke/workflow.mjs +59 -0
- package/workflows/e2e-vision-schema/README.md +48 -0
- package/workflows/e2e-vision-schema/workflow.mjs +149 -0
- package/workflows/e2e-write-greet/workflow.mjs +37 -0
- package/workflows/file-census/README.md +14 -0
- package/workflows/file-census/scripts/.gitkeep +2 -0
- package/workflows/file-census/workflow.mjs +110 -0
- package/workflows/goal/README.md +166 -0
- package/workflows/goal/prompts/audit.md +57 -0
- package/workflows/goal/prompts/contract.md +56 -0
- package/workflows/goal/prompts/iterate.md +37 -0
- package/workflows/goal/workflow.mjs +501 -0
- package/workflows/illustrate/README.md +90 -0
- package/workflows/illustrate/assets/engines.json +20 -0
- package/workflows/illustrate/assets/extract-baidu.js +21 -0
- package/workflows/illustrate/assets/extract-bing.js +33 -0
- package/workflows/illustrate/assets/extract-google.js +31 -0
- package/workflows/illustrate/workflow.mjs +301 -0
- package/workflows/plan/workflow.mjs +389 -0
- package/workflows/question-crops/README.md +35 -0
- package/workflows/question-crops/prompts/inventory.md +23 -0
- package/workflows/question-crops/scripts/image-ops.mjs +305 -0
- package/workflows/question-crops/scripts/image-ops.test.mjs +95 -0
- package/workflows/question-crops/workflow.mjs +172 -0
- package/workflows/ralph-loop/workflow.mjs +162 -0
- package/workflows/research/DESIGN.md +449 -0
- package/workflows/research/README.md +74 -0
- package/workflows/research/prompts/s0-goal.md +43 -0
- package/workflows/research/prompts/s1-early-exit.md +22 -0
- package/workflows/research/prompts/s1-map.md +58 -0
- package/workflows/research/prompts/s2-options.md +53 -0
- package/workflows/research/prompts/s3-deep-dive.md +56 -0
- package/workflows/research/prompts/s4-verify.md +74 -0
- package/workflows/research/prompts/s5-synthesis.md +81 -0
- package/workflows/research/prompts/s5b-fill-gaps.md +32 -0
- package/workflows/research/prompts/s6-package.md +32 -0
- package/workflows/research/scripts/build-report.mjs +98 -0
- package/workflows/research/workflow.mjs +288 -0
- package/workflows/wechat-reading-shots/prompts/collect-params.md +16 -0
- package/workflows/wechat-reading-shots/prompts/evaluate.md +20 -0
- package/workflows/wechat-reading-shots/prompts/open-book.md +28 -0
- package/workflows/wechat-reading-shots/prompts/read-page.md +13 -0
- package/workflows/wechat-reading-shots/prompts/turn-batch.md +24 -0
- package/workflows/wechat-reading-shots/test/control-flow.test.ts +329 -0
- package/workflows/wechat-reading-shots/workflow.mjs +266 -0
- package/workflows/wrong-question-docx/README.md +55 -0
- package/workflows/wrong-question-docx/prompts/figure-qa.md +8 -0
- package/workflows/wrong-question-docx/prompts/transcribe.md +25 -0
- package/workflows/wrong-question-docx/scripts/workbook.mjs +857 -0
- package/workflows/wrong-question-docx/test/control-flow.test.ts +165 -0
- package/workflows/wrong-question-docx/test/workbook.test.mjs +303 -0
- package/workflows/wrong-question-docx/workflow.mjs +485 -0
- package/plugins/workflow-runner/src/agentCommon.js +0 -354
- package/plugins/workflow-runner/src/agentCommon.ts +0 -435
- package/plugins/workflow-runner/src/controlFlow/branch.js +0 -40
- package/plugins/workflow-runner/src/controlFlow/branch.ts +0 -46
- package/plugins/workflow-runner/src/controlFlow/loop.js +0 -211
- package/plugins/workflow-runner/src/controlFlow/loop.ts +0 -248
- package/plugins/workflow-runner/src/controlFlow/pause.js +0 -129
- package/plugins/workflow-runner/src/controlFlow/pause.ts +0 -141
- package/plugins/workflow-runner/src/controlFlow/signal.js +0 -21
- package/plugins/workflow-runner/src/controlFlow/signal.ts +0 -29
- package/plugins/workflow-runner/src/controlFlow/types.js +0 -18
- package/plugins/workflow-runner/src/controlFlow/types.ts +0 -63
- package/plugins/workflow-runner/src/dslManifest.js +0 -72
- package/plugins/workflow-runner/src/dslManifest.ts +0 -127
- package/plugins/workflow-runner/src/expressions.js +0 -618
- package/plugins/workflow-runner/src/expressions.ts +0 -622
- package/plugins/workflow-runner/src/loader.js +0 -573
- package/plugins/workflow-runner/src/loader.ts +0 -721
- package/plugins/workflow-runner/src/multimodal.js +0 -38
- package/plugins/workflow-runner/src/multimodal.ts +0 -64
- package/plugins/workflow-runner/src/recovery.js +0 -119
- package/plugins/workflow-runner/src/recovery.ts +0 -149
- package/plugins/workflow-runner/src/stepExecutors/agent.js +0 -173
- package/plugins/workflow-runner/src/stepExecutors/agent.ts +0 -234
- package/plugins/workflow-runner/src/stepExecutors/assert.js +0 -41
- package/plugins/workflow-runner/src/stepExecutors/assert.ts +0 -50
- package/plugins/workflow-runner/src/stepExecutors/echo.js +0 -31
- package/plugins/workflow-runner/src/stepExecutors/echo.ts +0 -38
- package/plugins/workflow-runner/src/stepExecutors/llm.js +0 -99
- package/plugins/workflow-runner/src/stepExecutors/llm.ts +0 -133
- package/plugins/workflow-runner/src/stepExecutors/set.js +0 -49
- package/plugins/workflow-runner/src/stepExecutors/set.ts +0 -56
- package/plugins/workflow-runner/src/stepExecutors/skill.js +0 -111
- package/plugins/workflow-runner/src/stepExecutors/skill.ts +0 -140
- package/plugins/workflow-runner/src/stepExecutors/tool.js +0 -208
- package/plugins/workflow-runner/src/stepExecutors/tool.ts +0 -256
- package/plugins/workflow-runner/src/stepExecutors/verify.js +0 -58
- package/plugins/workflow-runner/src/stepExecutors/verify.ts +0 -68
- package/plugins/workflow-runner/src/stepPipeline.js +0 -277
- package/plugins/workflow-runner/src/stepPipeline.ts +0 -366
- package/plugins/workflow-runner/test/agent.test.ts +0 -587
- package/plugins/workflow-runner/test/agentLlmError.test.ts +0 -373
- package/plugins/workflow-runner/test/bashBlacklist.sweep.test.ts +0 -65
- package/plugins/workflow-runner/test/captureMisbind.test.ts +0 -99
- package/plugins/workflow-runner/test/cli.e2e.test.ts +0 -147
- package/plugins/workflow-runner/test/context-files.test.ts +0 -320
- package/plugins/workflow-runner/test/e2e.test.ts +0 -370
- package/plugins/workflow-runner/test/engineRobustness.test.ts +0 -226
- package/plugins/workflow-runner/test/expressions.test.ts +0 -397
- package/plugins/workflow-runner/test/foundation.test.ts +0 -126
- package/plugins/workflow-runner/test/graceful.test.ts +0 -139
- package/plugins/workflow-runner/test/greedyInputs.load.test.ts +0 -47
- package/plugins/workflow-runner/test/hostCapability.test.ts +0 -108
- package/plugins/workflow-runner/test/illustrate.load.test.ts +0 -183
- package/plugins/workflow-runner/test/jsonPayload.test.ts +0 -83
- package/plugins/workflow-runner/test/loader.test.ts +0 -617
- package/plugins/workflow-runner/test/maxTurnsRetryDelay.test.ts +0 -33
- package/plugins/workflow-runner/test/multimodal.test.ts +0 -342
- package/plugins/workflow-runner/test/output-schema.test.ts +0 -213
- package/plugins/workflow-runner/test/parseWorkflowArgs.test.ts +0 -87
- package/plugins/workflow-runner/test/pluginRunner.isolation.test.ts +0 -269
- package/plugins/workflow-runner/test/ppt.load.test.ts +0 -1220
- package/plugins/workflow-runner/test/ralphLoop.e2e.test.ts +0 -220
- package/plugins/workflow-runner/test/recovery.test.ts +0 -265
- package/plugins/workflow-runner/test/runner.test.ts +0 -911
- package/plugins/workflow-runner/test/runnerPreflight.test.ts +0 -379
- package/plugins/workflow-runner/test/skillTurnDone.test.ts +0 -71
- package/plugins/workflow-runner/test/stateLifecycle.test.ts +0 -150
- package/plugins/workflow-runner/test/stepPipeline.test.ts +0 -114
- package/plugins/workflow-runner/test/taskArbitration.test.ts +0 -338
- package/plugins/workflow-runner/test/taskLifecycle.test.ts +0 -270
- package/plugins/workflow-runner/test/toolArtifactOverwrite.test.ts +0 -221
- package/plugins/workflow-runner/test/toolCapabilityBoundary.test.ts +0 -29
- package/plugins/workflow-runner/test/toolRuntimeIntegration.test.ts +0 -168
- package/plugins/workflow-runner/test/webppt.load.test.ts +0 -250
- package/plugins/workflow-runner/test/word.load.test.ts +0 -208
- package/plugins/workflow-runner/test/workflows.smoke.test.ts +0 -76
- package/plugins/workflow-runner/test/yamlGuardConditions.test.ts +0 -207
- package/src/advisorState.js +0 -22
- package/src/cli/configWizard.js +0 -293
- package/src/tools/toolProgressBridge.js +0 -48
- package/workflows/adaptive-research.yaml +0 -50
- package/workflows/book-review-short.yaml +0 -125
- package/workflows/e2e-write-greet.yaml +0 -31
- package/workflows/illustrate.yaml +0 -227
- package/workflows/plan.yaml +0 -470
- package/workflows/ppt.yaml +0 -1670
- package/workflows/ralph-loop.yaml +0 -199
- package/workflows/schema.json +0 -176
- package/workflows/webppt.yaml +0 -496
- package/workflows/wechat-reading-shots.yaml +0 -315
- package/workflows/word.yaml +0 -720
- package/workflows/youtube-shorts.yaml +0 -202
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
# goal —— 目标驱动的自主循环
|
|
2
|
+
|
|
3
|
+
`/workflow goal` 现在是文件式 **Goal Runtime** 的唯一命令入口。Goal Runtime 管长期目标、契约版本、
|
|
4
|
+
Attempt、暂停恢复和人类验收;本工作流只负责一次 Attempt 内的“执行 → 确定性硬门 → 独立审计”。
|
|
5
|
+
Agent 自检成功只会进入 `ready_for_acceptance`,不会替人完成最终验收。
|
|
6
|
+
|
|
7
|
+
这里坚持“轻引擎、重工作流”:`workflow-runner` 不含 Goal 状态机、契约字段或群业务分支,只提供
|
|
8
|
+
通用 managed-execution 租约、journal、工具/Agent 调用和验证能力。`managedRuntime: 'goal'` 只声明
|
|
9
|
+
本工作流受外层 Goal Runtime 管理;如何拟定契约、分阶段循环、检测停滞、审计和生成报告仍全部位于
|
|
10
|
+
本目录的 `workflow.mjs` 与配套脚本中。
|
|
11
|
+
|
|
12
|
+
对标 OpenAI Codex 的 `/goal`(其内部叫 Ralph Loop),但有三处刻意的不同 —— 见下。
|
|
13
|
+
|
|
14
|
+
## 用法
|
|
15
|
+
|
|
16
|
+
```bash
|
|
17
|
+
# 完整路径:自己拟契约,开头确认一次,之后全程自主
|
|
18
|
+
minimal-agent -p "/workflow goal 把 src/parser.ts 的错误处理补全,所有现有测试保持通过"
|
|
19
|
+
|
|
20
|
+
# 已经想好退出条件 —— 跳过契约拟定与确认,直接开跑(Codex 推荐的用法)
|
|
21
|
+
minimal-agent -p "/workflow goal 修复 #1234 --input checks=\"shell:bun test test/bug.test.ts,file_exists:src/fix.ts\""
|
|
22
|
+
|
|
23
|
+
# 无人值守(跳过确认闸门)
|
|
24
|
+
minimal-agent -p "/workflow goal <目标> --input interactive=false --input max_iterations=12"
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
`objective` 是贪婪首参(整句自然语言不会被空格拆碎),其余参数**必须**走 `--input k=v`。
|
|
28
|
+
|
|
29
|
+
```bash
|
|
30
|
+
# 查看、暂停、继续
|
|
31
|
+
/workflow goal --input action=status
|
|
32
|
+
/workflow goal --input action=pause
|
|
33
|
+
/workflow goal --input action=resume
|
|
34
|
+
|
|
35
|
+
# 显式改变目标(产生新契约版本和 Attempt)
|
|
36
|
+
/workflow goal "修订后的目标" --input action=update
|
|
37
|
+
|
|
38
|
+
# 人类验收或发回同一个 Goal 返工
|
|
39
|
+
/workflow goal --input action=accept
|
|
40
|
+
/workflow goal --input action=rework --input reason="补充 Windows 绿色版说明"
|
|
41
|
+
|
|
42
|
+
# 取消后才能创建另一个 Goal;历史不会删除
|
|
43
|
+
/workflow goal --input action=cancel
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
同一个 Session 同时只能有一个未完成 Goal。输入不同目标不会隐式覆盖当前 Goal,必须明确 `update`
|
|
47
|
+
或 `cancel`;这取代了旧的 LLM 语义仲裁和“换目标就自动清除”行为。
|
|
48
|
+
|
|
49
|
+
### ⚠️ 含空格的 `--input` 值一定要加引号(自测时真踩到了)
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
# ❌ 值被静默截断成 `shell:bun`,剩下的词跑去拼进目标文本,全程无警告
|
|
53
|
+
--input checks=shell:bun test test/x.ts
|
|
54
|
+
|
|
55
|
+
# ✅ 引号包住整个 k=v(引号在 token 任意位置都认)
|
|
56
|
+
--input "checks=shell:bun test test/x.ts"
|
|
57
|
+
--input checks="shell:bun test test/x.ts"
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
`shell:` 检查几乎必然含空格,所以这条基本每次都会遇到。
|
|
61
|
+
|
|
62
|
+
**为什么没有警告**:引擎对「值被拆碎」有自动拼回 + 告警的机制,但它只在贪婪首参
|
|
63
|
+
**已经走了 `--input`** 时才触发;本工作流的 `objective` 通常走位置参数,命中的是另一条
|
|
64
|
+
分支,于是散落的词被静默拼进目标末尾。截断后的检查串往往**仍然合法**
|
|
65
|
+
(`shell:exit 1` 截成 `shell:exit`,而不带参数的 `exit` 退出码是 0)——
|
|
66
|
+
于是硬门反而"通过"了。这是自测时真实发生的一幕。
|
|
67
|
+
|
|
68
|
+
| 参数 | 默认 | 说明 |
|
|
69
|
+
|---|---|---|
|
|
70
|
+
| `checks` | 空 | 逗号分隔的退出条件。给了就跳过契约拟定与确认 |
|
|
71
|
+
| `max_iterations` | 8 | 最大轮数(硬顶 50) |
|
|
72
|
+
| `stall_rounds` | 3 | 连续几轮「失败项及归一化失败证据完全相同」判定卡死 |
|
|
73
|
+
| `interactive` | `true` | `false` 跳过契约确认闸门 |
|
|
74
|
+
| `action` | 空 | `status/pause/resume/update/cancel/accept/rework` |
|
|
75
|
+
| `reason` | 空 | 暂停、取消或返工原因 |
|
|
76
|
+
|
|
77
|
+
## 退出条件只能写这四种
|
|
78
|
+
|
|
79
|
+
契约里的 `hard_checks` 由引擎的 `verify()` 真跑,格式必须是:
|
|
80
|
+
|
|
81
|
+
| 格式 | 例子 |
|
|
82
|
+
|---|---|
|
|
83
|
+
| `shell:<命令>` | `shell:bun test test/parser.test.ts` |
|
|
84
|
+
| `file_exists:<路径>` | `file_exists:src/parser.ts` |
|
|
85
|
+
| `file_contains:<路径>:<字符串>` | `file_contains:README.md:## 安装` |
|
|
86
|
+
| `test_count:<数字>` | `test_count:12` |
|
|
87
|
+
|
|
88
|
+
⚠️ **`shell:` 有 30 秒超时**(引擎写死)。跑不完的全量测试套件要缩到具体文件或加过滤。
|
|
89
|
+
|
|
90
|
+
⚠️ **`node --test <目录>` 与 `node --test <文件>` 行为不同**(Node v22 上跑目录会把目录本身
|
|
91
|
+
当一个 subtest,目录里的非测试文件会让它失败)。写检查时用你**真正想跑的那条命令**,
|
|
92
|
+
别想当然 —— 这条是自测时踩到的。
|
|
93
|
+
|
|
94
|
+
## 三处与 Codex `/goal` 刻意的不同
|
|
95
|
+
|
|
96
|
+
**① 我们做目标澄清,Codex 不做。**
|
|
97
|
+
Codex 官方明确「finish line 模糊时就别用 Goals」,只肯在你要求时帮你起草。
|
|
98
|
+
社区反复吐槽的坑正是弱目标 → 循环不收敛 → 烧 token。我们有 `ask()`,所以在阶段 0 把目标
|
|
99
|
+
**契约化**:拟不出可验证判据时把缺的信息问出来。
|
|
100
|
+
⚠️ 但**只在开头问一次**,确认后全程自主 —— 循环体里绝不停下来问。
|
|
101
|
+
|
|
102
|
+
**② 完成判定是两道独立的关,不是让干活的模型自己打分。**
|
|
103
|
+
先过引擎跑命令的确定性硬门,再过一个 `isolated: true` 的审计 agent ——
|
|
104
|
+
它**看不见执行者的对话**,只能自己去查文件系统。Codex 的 completion audit 是同一思路,
|
|
105
|
+
而社区吐槽「有时仍不够严格,需要额外的独立 critic」—— 隔离上下文就是为这个。
|
|
106
|
+
|
|
107
|
+
审计除了判达成与否,还专门查两件硬门查不出来的事:
|
|
108
|
+
- **为通过检查而削弱检查**(改松断言、`|| true`、`--passWithNoTests`、把关键字塞进注释)
|
|
109
|
+
- **检查覆盖不全**(目标要三种格式,检查只测了实现的那一种)
|
|
110
|
+
|
|
111
|
+
**③ 质量评估只报告、不阻塞。**
|
|
112
|
+
功能达成做门;性能 / 易用性 / 鲁棒性做报告。把开放式质量判断放进停止条件,
|
|
113
|
+
循环永远不收敛(总能再挑出一条可优化的)。本仓库有过真实教训:PPT 视觉门一度把对比度、
|
|
114
|
+
字号做成硬 ERROR,结果是卡死重试;后来改成质量类一律 WARNING、硬 ERROR 只留确定性缺陷。
|
|
115
|
+
|
|
116
|
+
## 两层状态
|
|
117
|
+
|
|
118
|
+
Goal Runtime 是事实源,状态为:
|
|
119
|
+
|
|
120
|
+
`active / paused / blocked / usage_limited / budget_limited / ready_for_acceptance / accepted / cancelled`
|
|
121
|
+
|
|
122
|
+
除 `accepted/cancelled` 外都属于未完成。只有指定人类能把 `ready_for_acceptance` 变成 `accepted`。
|
|
123
|
+
`STATUS.json` 只是一次 Attempt 的兼容投影:
|
|
124
|
+
|
|
125
|
+
| 状态 | 含义 |
|
|
126
|
+
|---|---|
|
|
127
|
+
| `achieved` | 硬门全过且独立审计确认;对应 Goal `ready_for_acceptance`,不是最终完成 |
|
|
128
|
+
| `stalled` | 连续 N 轮失败项和证据都不变 —— 空转,Goal 转为 `blocked` |
|
|
129
|
+
| `max_iterations` | 轮数耗尽仍未达成 |
|
|
130
|
+
| `budget_limited` | 用户设定的 Token 预算已用尽;对应 Goal `budget_limited`,加预算后可从断点续跑 |
|
|
131
|
+
|
|
132
|
+
工作流可以通过 Goal 契约的 `tokenBudget` 使用 `budget_limited`:引擎在每轮结束后
|
|
133
|
+
持久化 provider 用量,并在下一轮开始前停止;工作流通过 `workflowOutcome` 把这个
|
|
134
|
+
Attempt 结局传回 Goal Runtime。除此之外,轮数上限和无进展检测仍然负责防止空转。
|
|
135
|
+
这两类限制不能混为一谈:预算耗尽可以加预算后续跑,轮数/无进展失败则需要先处理
|
|
136
|
+
具体阻塞原因。
|
|
137
|
+
|
|
138
|
+
**未达成时工作流会抛错**(落盘之后才抛),让 `-p --output-format json` 的
|
|
139
|
+
`ok`/`stop_reason` 如实反映"没做成"。产物在抛错前已全部写好。
|
|
140
|
+
|
|
141
|
+
## 断点续跑 / 暂停恢复
|
|
142
|
+
|
|
143
|
+
Goal Runtime 为每个 Attempt 分配 UUID 状态目录,不再用规范化目标哈希判断是否完成:
|
|
144
|
+
|
|
145
|
+
- **暂停** = `ESC` 或 `action=pause`,Attempt journal 与现场保留;
|
|
146
|
+
- **恢复** = `action=resume`,复用被停止/失败 Attempt 的 journal;
|
|
147
|
+
- **返工** = `action=rework`,保持同一 Goal,建立新 Attempt;
|
|
148
|
+
- **更新契约** = `action=update`,旧 Attempt 标记 superseded,新契约和 Attempt 接管;
|
|
149
|
+
- **取消** = `action=cancel`,只结束当前 Goal,不删除事件、报告或产物。
|
|
150
|
+
|
|
151
|
+
⚠️ 每轮开头会 `resetContext()`,契约每轮重新拼进 prompt,所以截断上下文不会丢关键信息。
|
|
152
|
+
|
|
153
|
+
## 产物
|
|
154
|
+
|
|
155
|
+
```
|
|
156
|
+
out/goal/<session>/<attemptId>/
|
|
157
|
+
├── CONTRACT.md 完成契约(目标复述、产出物、确定性检查、质量维度)
|
|
158
|
+
├── STATUS.json 结局状态 + 四维分数 + 阻塞原因(给宿主程序读)
|
|
159
|
+
└── REPORT.md 人看的报告:结果、审计证据、未达成原因、质量评估
|
|
160
|
+
```
|
|
161
|
+
|
|
162
|
+
## 什么时候**不该**用它
|
|
163
|
+
|
|
164
|
+
- 一行修改、一个解释、一次简短 review —— 循环的开销远大于收益(Codex 官方同款建议)。
|
|
165
|
+
- **给不出任何可机器验证判据的目标**。阶段 0 会尝试问你,但如果连问完都拟不出
|
|
166
|
+
`hard_checks`,说明这件事还不适合跑自主循环 —— 先用 `/workflow plan` 把它想清楚。
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
你是**独立验收审计员**。
|
|
2
|
+
|
|
3
|
+
⚠️ **你没有参与前面的执行,也看不到执行者说过什么** —— 这是刻意的。
|
|
4
|
+
你唯一的信息来源是**文件系统的当前状态**和**你自己跑命令得到的输出**。
|
|
5
|
+
不要脑补执行者做了什么,去看。
|
|
6
|
+
|
|
7
|
+
## 被审计的目标
|
|
8
|
+
|
|
9
|
+
{{restated_goal}}
|
|
10
|
+
|
|
11
|
+
## 完成契约
|
|
12
|
+
|
|
13
|
+
**应当存在的产出物**:
|
|
14
|
+
{{deliverables}}
|
|
15
|
+
|
|
16
|
+
**确定性检查**(这些已经由引擎跑过,全部通过了 —— 你要查的是它们**是否真的意味着目标达成**):
|
|
17
|
+
{{hard_checks}}
|
|
18
|
+
|
|
19
|
+
**质量维度**(无法用命令验证,需要你判断):
|
|
20
|
+
{{soft_criteria}}
|
|
21
|
+
|
|
22
|
+
{{supplements}}
|
|
23
|
+
|
|
24
|
+
## 你要做的事
|
|
25
|
+
|
|
26
|
+
### 1. 逐条核实产出物真实存在且有实质内容
|
|
27
|
+
用 `Read` / `Glob` / `Bash` 亲自查。**空文件、只有 TODO 的文件、只有函数签名没有实现的文件
|
|
28
|
+
都不算数** —— 这是最常见的"检查通过但目标没达成"。
|
|
29
|
+
|
|
30
|
+
### 2. 警惕「为了通过检查而削弱检查」
|
|
31
|
+
确定性检查全过了,但要确认它们**没有被做手脚**:
|
|
32
|
+
- 测试断言是不是被改松了 / 被删了 / 被 `skip` 了?
|
|
33
|
+
- 命令是不是被加了 `|| true`、`--passWithNoTests` 之类?
|
|
34
|
+
- `file_contains` 要求的字符串是不是被塞在注释里凑数?
|
|
35
|
+
|
|
36
|
+
发现这类情况 → `achieved: false`,并在 `blocking_reason` 里指名道姓说清楚。
|
|
37
|
+
|
|
38
|
+
### 3. 判断检查是否**充分覆盖**目标
|
|
39
|
+
契约里的检查是一开始拟的,可能不完整。如果所有检查都过了但目标显然还没达成
|
|
40
|
+
(例如目标要「支持三种格式」而只实现了一种,恰好检查只测了那一种)——
|
|
41
|
+
`achieved: false`,把缺口写进 `blocking_reason`。
|
|
42
|
+
|
|
43
|
+
### 4. 给质量评分(这部分**不影响** achieved 判定)
|
|
44
|
+
四个维度各给 0-10 分,并在 `notes` 里写清楚扣分点和最值得做的优化。
|
|
45
|
+
- `functionality` 功能完整度(目标要的事做到了几成)
|
|
46
|
+
- `performance` 性能(有明显低效/阻塞/重复计算吗;没依据就按中位数给分并在 notes 说明)
|
|
47
|
+
- `usability` 易用性(API/CLI/文档对使用者是否清楚)
|
|
48
|
+
- `robustness` 鲁棒性(错误处理、边界情况、失败时的表现)
|
|
49
|
+
|
|
50
|
+
**这四个分数只用于生成报告,不会阻塞循环。** 所以请诚实打分,
|
|
51
|
+
不要因为「打低分会不会导致又跑一轮」而虚高 —— 不会。
|
|
52
|
+
|
|
53
|
+
## 输出
|
|
54
|
+
|
|
55
|
+
只输出 JSON 对象本身,不要 markdown 代码围栏、不要解释。
|
|
56
|
+
`evidence` 数组里每一条写成「我做了什么 → 看到了什么」,必须是你**本轮真实执行**的结果,
|
|
57
|
+
不得转述、不得推测。
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
你的任务是把一个自然语言目标,转成一份**可机器验证的完成契约**。
|
|
2
|
+
|
|
3
|
+
## 目标原文
|
|
4
|
+
|
|
5
|
+
{{objective}}
|
|
6
|
+
|
|
7
|
+
## 为什么这一步决定成败
|
|
8
|
+
|
|
9
|
+
后面会有一个自主循环反复执行、反复检查,直到契约被满足才停。所以:
|
|
10
|
+
|
|
11
|
+
- 契约写得**可验证**,循环就能自己收敛,跑完就是真做完了。
|
|
12
|
+
- 契约写得含糊(「代码更好」「性能优化」「体验提升」),循环**永远判断不了何时结束** ——
|
|
13
|
+
要么早早误判完成,要么一直空转烧钱。
|
|
14
|
+
|
|
15
|
+
**你现在写的东西就是那个停止条件本身。**
|
|
16
|
+
|
|
17
|
+
## 输出字段
|
|
18
|
+
|
|
19
|
+
### `restated_goal`
|
|
20
|
+
用一句话复述目标。如果原文有歧义,按最合理的解释复述,并把你的解释写明确
|
|
21
|
+
(例如原文说「加个测试」,你复述成「为 X 模块新增单元测试并使其通过」)。
|
|
22
|
+
|
|
23
|
+
### `deliverables`
|
|
24
|
+
具体的产出物清单。**要写路径或可指认的东西**,不要写动作。
|
|
25
|
+
- ✅ `src/parser.ts`、`README 的「安装」一节`、`test/parser.test.ts`
|
|
26
|
+
- ❌ `重构代码`、`改进文档`
|
|
27
|
+
|
|
28
|
+
### `hard_checks` —— 最重要的字段
|
|
29
|
+
可以被**机器确定性验证**的退出条件。每一条必须是下面四种格式之一:
|
|
30
|
+
|
|
31
|
+
| 格式 | 含义 | 例子 |
|
|
32
|
+
|---|---|---|
|
|
33
|
+
| `shell:<命令>` | 命令退出码为 0 算通过 | `shell:bun test test/parser.test.ts` |
|
|
34
|
+
| `file_exists:<路径>` | 文件存在 | `file_exists:src/parser.ts` |
|
|
35
|
+
| `file_contains:<路径>:<字符串>` | 文件含某内容 | `file_contains:README.md:## 安装` |
|
|
36
|
+
| `test_count:<数字>` | 测试数不少于 N | `test_count:12` |
|
|
37
|
+
|
|
38
|
+
**硬性约束(写错会导致整条工作流启动即失败)**:
|
|
39
|
+
- 冒号前的类型名必须**逐字**是上表四个之一,不要自创 `command:` / `exists:` / `assert:`。
|
|
40
|
+
- `shell:` 的命令有 **30 秒超时**。跑不完的全量测试套件要缩到具体文件或用 `--filter`。
|
|
41
|
+
- `shell:` 命令必须**不需要人交互**、不依赖只有你这次会话才有的临时状态。
|
|
42
|
+
- 至少给 1 条。给不出任何可验证判据的目标,说明它还不适合跑自主循环 ——
|
|
43
|
+
这种情况把缺的信息写进 `clarifications`。
|
|
44
|
+
|
|
45
|
+
### `soft_criteria`
|
|
46
|
+
需要**人或模型判断**、无法用命令验证的质量要求(可读性、API 是否好用、边界情况覆盖…)。
|
|
47
|
+
|
|
48
|
+
⚠️ 它们**不会**被用作停止条件 —— 只会在收尾时作为评估报告输出。
|
|
49
|
+
这是刻意的:把开放式质量判断放进停止条件,循环永远不会收敛(总能再挑出一条可优化的)。
|
|
50
|
+
所以别把「必须做到的事」写进这里,那种要写进 `hard_checks`。
|
|
51
|
+
|
|
52
|
+
### `clarifications`
|
|
53
|
+
目标里**缺失且影响验收口径**的关键信息,最多 3 条,每条写成一个可以直接问用户的问题。
|
|
54
|
+
没有就给空数组。**不要为了凑数而问**——能自己合理推断的就推断,写进 `restated_goal`。
|
|
55
|
+
|
|
56
|
+
## 只输出 JSON 对象本身,不要 markdown 代码围栏、不要解释。
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
你正在一个**目标驱动的自主循环**里工作。这是第 {{iter}}/{{max}} 轮。
|
|
2
|
+
|
|
3
|
+
## 目标
|
|
4
|
+
|
|
5
|
+
{{restated_goal}}
|
|
6
|
+
|
|
7
|
+
## 完成契约(这是验收标准,不是建议)
|
|
8
|
+
|
|
9
|
+
**产出物**:
|
|
10
|
+
{{deliverables}}
|
|
11
|
+
|
|
12
|
+
**必须通过的确定性检查**(循环会真的跑这些命令,你说做完了不算):
|
|
13
|
+
{{hard_checks}}
|
|
14
|
+
|
|
15
|
+
{{supplements}}
|
|
16
|
+
|
|
17
|
+
## 上一轮的情况
|
|
18
|
+
|
|
19
|
+
{{last_status}}
|
|
20
|
+
|
|
21
|
+
## 这一轮要做什么
|
|
22
|
+
|
|
23
|
+
**动手做,不要只描述计划。** 你有工具,用它们真实地修改文件、跑命令、看结果。
|
|
24
|
+
|
|
25
|
+
具体要求:
|
|
26
|
+
1. 先弄清现状 —— 该读的文件读、该跑的命令跑,别在假设上动手。
|
|
27
|
+
2. 针对上面列出的**未通过的检查**做实际修改。上一轮卡在哪,这一轮就攻哪。
|
|
28
|
+
3. 改完**自己先跑一遍**对应的检查命令,确认真的过了再结束这一轮。
|
|
29
|
+
4. 如果发现契约里的某条检查本身写错了(命令不存在、路径拼错),
|
|
30
|
+
**不要绕过它去改别的** —— 明确说出来,并说明你认为正确的写法是什么。
|
|
31
|
+
|
|
32
|
+
## 不要做的事
|
|
33
|
+
|
|
34
|
+
- ❌ 不要为了让检查通过而**削弱检查本身**(改测试断言、删测试、给命令加 `|| true`)。
|
|
35
|
+
循环下一轮会用同样的命令重新验证,而最后还有一道独立审计会看你到底改了什么。
|
|
36
|
+
- ❌ 不要宣称完成。完成与否由循环跑命令决定,不由你的自述决定。
|
|
37
|
+
- ❌ 不要一次改一大片不相关的东西。这一轮只推进契约里还没满足的部分。
|