fix(xingbang): reward 计算后写回轨迹文件, 进化闭环数据完整
此前 cumulative_reward 只存在于返回对象, 未写回磁盘轨迹文件 (finalize 先落盘, 之后改的 reward 只在内存)。新增 rewrite() 在 reward 计算后重新覆盖轨迹, 确保自进化数据(含奖励)完整可追溯。
This commit is contained in:
@@ -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 回调,累积成本步记录。"""
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in New Issue
Block a user