规划对话指定数据包与算法

新增本轮对话式数据包与 Optimize 算法选择计划,明确通用注册表解析、闭环调用、验收命令和合并前风险边界。关键洞察是把数据与算法作为同一条指令的两个独立槽位,复用现有柔性排产管线。
This commit is contained in:
ssk 2026-09-03 21:11:32 +08:00
parent 5485f6de62
commit 1e64e9c0ae
1 changed files with 55 additions and 0 deletions

View File

@ -0,0 +1,55 @@
# Round 88:对话指定数据包与排产算法
## 目标
让用户可以用一条自然语言指令同时指定数据包和算法,例如:
> 使用 Optimize synthetic debug V1 数据,用 EDD 算法生成排产方案
系统应解析出 `dataPackRef`、`engine=OPTIMIZE` 和 `sortMode=EDD`,从已登记的数据包加载完整世界,再通过现有柔性闭环流程生成方案。
## 设计
1. 数据包使用 `server/state/packs.py` 的通用注册表解析,不增加某个客户或某个文件的专用 loader。支持文件名、名称和包内 aliases;找不到或匹配不唯一时不执行排产,直接提示可用数据包。
2. 对话解析器识别 Optimize 算法及 EDD/SPT/PRIORITY/FIFO/LPT/CR/ATC 等排产规则,并保留原有未点名算法时的默认行为。
3. `_run_flex` 在明确指定数据包时替换当前会话世界、重置 ID 计数器并记录所选包;随后把算法交给现有 `run_flex_schedule(..., engine_type="OPTIMIZE")`,不复制调度逻辑。
4. 结果块增加数据包和算法证据,文本明确显示“使用哪个数据包、哪个算法、生成多少虚拟产线/工单”。
## 实施范围
- `server/state/packs.py`:包别名和通用引用解析。
- `server/agent_core/intent.py`:数据包引用、算法槽位和自然语言参数。
- `server/aps_domain/workflow.py`:加载包、重置计数器、结果证据和未找到包的错误提示。
- `server/data/packs/optimize-simulation-v1.json`:补充可读 aliases(仅包元数据)。
- `tests/golden/test_optimize_chat_data_selection.py`:解析和端到端柔性排产验证。
## 验收标准
- 指令 `使用 Optimize synthetic debug V1 数据,用 EDD 算法生成排产方案` 命中 `flex.schedule`,参数包含 `dataPackRef`、`engine=OPTIMIZE`、`sortMode=EDD`。
- 在干净会话中执行后得到 `FEASIBLE`、10 条虚拟产线、72 条工单,结果块能看到数据包名称和算法。
- 未知数据包不会创建排产版本,并返回可用数据包提示。
- 普通“生成一版柔性排产方案”仍走原来的 CLOSED_LOOP 默认路径。
## 验证命令
```text
pytest -q tests/golden/test_optimize_chat_data_selection.py tests/golden/test_optimize_chat_trigger.py tests/golden/test_optimize_simulation_world_pack.py tests/golden/test_optimize_engine.py
```
再使用独立 `APS_HOME` 启动后端和前端,通过 `/api/chat` 发送上述完整中文指令,检查 SSE 中的 intent 参数、`FEASIBLE` 结果及 10/72 统计。
## 风险与边界
- 数据包选择是显式的会话世界替换,只允许来自注册表的路径;本轮不开放任意路径加载。
- 规则名由 Optimize 适配器支持的 dispatch rule 白名单约束,未知算法不会被静默当成 EDD。
- 当前轮次只在 `round/88-chat-data-algorithm-selection` 验证;完成后停在合并前,等待用户确认是否合并到 `codex/integrate-optimize`。
## 计划审计
PLAN AUDIT: PASS
Blocking issues: none
Clarification needed: none
Non-blocking improvements: 后续可再把算法白名单从代码抽到能力描述接口。