diff options
Diffstat (limited to 'Omni')
| -rw-r--r-- | Omni/Agent/Worker.hs | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/Omni/Agent/Worker.hs b/Omni/Agent/Worker.hs index ea2593e..d79adaa 100644 --- a/Omni/Agent/Worker.hs +++ b/Omni/Agent/Worker.hs @@ -60,6 +60,8 @@ formatGuardrailResult (Engine.GuardrailDuplicateToolCalls tool count) = "Duplicate tool calls: " <> tool <> " called " <> tshow count <> " times" formatGuardrailResult (Engine.GuardrailTestFailures count) = "Test failures: " <> tshow count <> " failures" +formatGuardrailResult (Engine.GuardrailEditFailures count) = + "Edit failures: " <> tshow count <> " 'old_str not found' errors" runOnce :: Core.Worker -> Maybe Text -> IO () runOnce worker maybeTaskId = do @@ -312,13 +314,15 @@ runWithEngine worker repo task = do logSystemEvent "Guardrail" contentJson } - -- Build Agent config with guardrails - let guardrails = + -- Build Agent config with guardrails (scale cost by complexity) + let baseCost = selectCostByComplexity (TaskCore.taskComplexity task) + guardrails = Engine.Guardrails - { Engine.guardrailMaxCostCents = 200.0, + { Engine.guardrailMaxCostCents = baseCost, Engine.guardrailMaxTokens = 2000000, Engine.guardrailMaxDuplicateToolCalls = 30, - Engine.guardrailMaxTestFailures = 3 + Engine.guardrailMaxTestFailures = 3, + Engine.guardrailMaxEditFailures = 5 } agentCfg = Engine.AgentConfig @@ -437,6 +441,17 @@ selectModelByComplexity (Just 4) = "anthropic/claude-sonnet-4.5" selectModelByComplexity (Just 5) = "anthropic/claude-opus-4.5" selectModelByComplexity (Just _) = "anthropic/claude-sonnet-4.5" +-- | Select cost guardrail based on complexity level (in cents) +-- Lower complexity = lower budget, higher complexity = more room for iteration +selectCostByComplexity :: Maybe Int -> Double +selectCostByComplexity Nothing = 200.0 +selectCostByComplexity (Just 1) = 50.0 +selectCostByComplexity (Just 2) = 100.0 +selectCostByComplexity (Just 3) = 200.0 +selectCostByComplexity (Just 4) = 400.0 +selectCostByComplexity (Just 5) = 600.0 +selectCostByComplexity (Just _) = 200.0 + formatTask :: TaskCore.Task -> Text formatTask t = "Task: " |
