fix(xingbang): reward 计算后写回轨迹文件, 进化闭环数据完整

此前 cumulative_reward 只存在于返回对象, 未写回磁盘轨迹文件
(finalize 先落盘, 之后改的 reward 只在内存)。新增 rewrite() 在
reward 计算后重新覆盖轨迹, 确保自进化数据(含奖励)完整可追溯。
This commit is contained in:
NathanAlex7
2026-09-01 17:13:31 +08:00
parent d46f446364
commit f66cc93781
2 changed files with 15 additions and 0 deletions
+13
View File
@@ -90,6 +90,19 @@ class TrajectoryRecorder:
)
return path
def set_reward(self, reward: float) -> None:
"""计算奖励后写回当前轨迹并重新落盘(进化闭环数据完整)。"""
if self._current is not None:
self._current["cumulative_reward"] = reward
# 若已有 trajectory_id, 覆盖落盘(full path 已知)
tid = self._current.get("trajectory_id")
if tid:
self._save(self._current)
def rewrite(self, trajectory: dict[str, Any]) -> Path:
"""写回一条已存在的轨迹(非当前进行中的), 返回路径。"""
return self._save(trajectory)
# ── 从调用侧采集 ────────────────────────────────────
def on_evidence(self, kind: str, data: dict) -> None:
"""订阅 agents 的 evidence 回调,累积成本步记录。"""
+2
View File
@@ -122,6 +122,7 @@ class XingbangWorkflow:
)
reward = compute_reward_v1(trajectory)
trajectory["cumulative_reward"] = reward
self._recorder.rewrite(trajectory) # 写回含 reward 轨迹, 进化数据完整
insights_path = self._evolution.save_insights()
return {
@@ -180,6 +181,7 @@ class XingbangWorkflow:
trajectory = self._recorder.finalize(success=True)
reward = compute_reward_v1(trajectory)
trajectory["cumulative_reward"] = reward
self._recorder.rewrite(trajectory) # 写回含 reward 轨迹, 进化数据完整
insights_path = self._evolution.save_insights()
yield {"event": "done", "workflow_id": workflow_id,
"trajectory_id": traj_id, "reward": reward,