agentscope-ai / agentscope-ai/QwenPaw
[Feature Request] save_decision() API — 结构化决策持久化,防止上下文压缩丢失关键决策
- 主要语言
- Python
- 星标
- 34.9k
- 派生
- 3.1k
- 平均合并
- 1 天 15 小时
- 30 天内合并 PR
- 225
描述
## 背景
在长对话中,用户确认的关键决策(如行程方案、技术选型、设计方案)会随着上下文压缩被驱逐,导致 agent 回退到旧决策执行。相关讨论见 #5998。
当前的 agent 级 workaround(确认后写入 MEMORY.md)存在鸡生蛋问题:agent 已经因压缩丢失了决策信息,无法可靠地触发存档动作。
## 建议:`save_decision()` API
提供一个框架级的结构化决策存储原语:
### Agent 侧
```python
# 用户确认方案后,agent 显式调用
save_decision(
key="current_travel_plan",
value="Plan B: 郑州→平遥→大同→乌兰察布→太原→郑州",
expires="7d" # 可选过期时间
)
```
### 框架侧
1. **持久化存储**:决策存入独立存储(如 decisions 表或 KV store),与对话历史解耦
2. **自动注入上下文**:框架将所有活跃决策注入 system prompt 或保留上下文槽位,**不参与压缩**
3. **生命周期管理**:支持 overwrite(同 key 更新)、delete、自动过期
### 工作流示例
```
User: "我确认方案B"
Agent: save_decision("travel_plan", "方案B: 郑州→平遥→大同→乌兰察布...")
Agent: "已记录确认方案"
[... 50轮后上下文压缩 ...]
Agent: [生成文档前检查 decisions store,获取方案B内容]
Agent: [严格按照方案B生成文档]
```
## 为什么需要框架级支持
| 层面 | 当前方案 (MEMORY.md) | 建议方案 (save_decision) |
|------|---------------------|------------------------|
| 可靠性 | 依赖 agent 自觉写入 | agent 显式 API 调用,有确定性 |
| 注入方式 | 需要 memory_search 工具调用 | 框架自动注入,零开销 |
| 结构化 | 自由文本,解析不确定 | key-value,确定性查询 |
| 压缩保护 | 无保障 | 专门的保留槽位 |
## 与现有机制的关系
- `scroll_context`:保护**已驱逐轮次的索引**,但不保护决策内容
- `active_turns`:保护**当前活跃轮次**,但不跨轮持久化
- `save_decision()`:保护**跨轮关键决策**,填补上述两者之间的空白
## 复现案例
#5998 中的内蒙古攻略场景:
- 用户确认方案B(seq 4789)→ agent 按方案A生成文档(seq 8932)
- 如果有 `save_decision()`,方案B会持久存储并在生成文档时自动可用
感谢考虑!
贡献指南
评估
这个 Issue 还没有评估数据。