AI-debugging-agent / env /reward.py
prashasti
Initial changes for ai-debugger
205f6c7
Raw
History Blame Contribute Delete
1.44 kB
"""
Reward function - provides dense, shaped signals to guide learning.
Signal summary
--------------
+150 full resolution bonus
+ 30 correct intermediate fix step
- 15 wrong action (no progress)
-0.04 per ms of latency (continuous cost)
- 25 per unit of error_rate (continuous cost)
- 2 time penalty per step (urgency)
"""
from __future__ import annotations
from typing import Dict, Any, Tuple
def compute_reward(
prev: Dict[str, Any],
curr: Dict[str, Any],
action: str,
time_step: int = 0,
) -> Tuple[float, Dict[str, Any]]:
reward = 0.0
# Resolution bonus
if curr["resolved"]:
reward += 150.0
# Partial progress
if curr["fix_progress"] > prev["fix_progress"]:
reward += 30.0
elif action != "noop":
# Wrong action (no progress, not a passive noop)
reward -= 15.0
# Continuous metric penalties
reward -= curr["metrics"]["latency"] * 0.04
reward -= curr["metrics"]["error_rate"] * 25.0
# Time penalty (escalates after step 10 for urgency)
time_penalty = 2.0 + (0.5 * max(0, time_step - 10))
reward -= time_penalty
info = {
"latency": round(curr["metrics"]["latency"], 2),
"error_rate": round(curr["metrics"]["error_rate"], 4),
"cpu": round(curr["metrics"]["cpu"], 2),
"progress": curr["fix_progress"],
"resolved": curr["resolved"],
}
return reward, info