fix(xingbang): reward 计算后写回轨迹文件, 进化闭环数据完整
此前 cumulative_reward 只存在于返回对象, 未写回磁盘轨迹文件 (finalize 先落盘, 之后改的 reward 只在内存)。新增 rewrite() 在 reward 计算后重新覆盖轨迹, 确保自进化数据(含奖励)完整可追溯。
This commit is contained in:
@@ -90,6 +90,19 @@ class TrajectoryRecorder:
|
|||||||
)
|
)
|
||||||
return path
|
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:
|
def on_evidence(self, kind: str, data: dict) -> None:
|
||||||
"""订阅 agents 的 evidence 回调,累积成本步记录。"""
|
"""订阅 agents 的 evidence 回调,累积成本步记录。"""
|
||||||
|
|||||||
@@ -122,6 +122,7 @@ class XingbangWorkflow:
|
|||||||
)
|
)
|
||||||
reward = compute_reward_v1(trajectory)
|
reward = compute_reward_v1(trajectory)
|
||||||
trajectory["cumulative_reward"] = reward
|
trajectory["cumulative_reward"] = reward
|
||||||
|
self._recorder.rewrite(trajectory) # 写回含 reward 轨迹, 进化数据完整
|
||||||
insights_path = self._evolution.save_insights()
|
insights_path = self._evolution.save_insights()
|
||||||
|
|
||||||
return {
|
return {
|
||||||
@@ -180,6 +181,7 @@ class XingbangWorkflow:
|
|||||||
trajectory = self._recorder.finalize(success=True)
|
trajectory = self._recorder.finalize(success=True)
|
||||||
reward = compute_reward_v1(trajectory)
|
reward = compute_reward_v1(trajectory)
|
||||||
trajectory["cumulative_reward"] = reward
|
trajectory["cumulative_reward"] = reward
|
||||||
|
self._recorder.rewrite(trajectory) # 写回含 reward 轨迹, 进化数据完整
|
||||||
insights_path = self._evolution.save_insights()
|
insights_path = self._evolution.save_insights()
|
||||||
yield {"event": "done", "workflow_id": workflow_id,
|
yield {"event": "done", "workflow_id": workflow_id,
|
||||||
"trajectory_id": traj_id, "reward": reward,
|
"trajectory_id": traj_id, "reward": reward,
|
||||||
|
|||||||
Reference in New Issue
Block a user