新增基础版系统仿真 Skill
This commit is contained in:
1 parent
ce62079335
commit
48da6be21c
7 files changed
+3333
No files matched your search
@@ -0,0 +1,142 @@
|
||||
# 命令与对话工作流
|
||||
|
||||
## CLI 合同
|
||||
|
||||
从仓库根目录调用:
|
||||
|
||||
```powershell
|
||||
py -3.12 skills/system-simulation/scripts/simulation_skill.py [--base-url URL] [--timeout SECONDS] COMMAND
|
||||
```
|
||||
|
||||
若仓库已有 `.venv-win\Scripts\python.exe`,Windows 应优先用它替换 `py -3.12`;Linux 使用 `.venv/bin/python` 或 `python3.12`。不要使用本机可能指向旧版本的裸 `python`。默认服务地址为 `http://127.0.0.1:8000`,超时参数不得低于 10 秒,以保持在后端 5 秒心跳间隔之上。`inspect`、`repair-format`、`status` 和 `cancel` 在标准输出返回一个结构化 JSON;`simulate` 在标准输出给出节流后的 JSONL 进展和精简完成摘要。输出目录的 `progress.jsonl` 保留完整进展/错误事件,但只保存精简结果摘要;完整数值结果另存为 `result.json`,避免时间序列重复占用空间和智能体上下文。
|
||||
|
||||
退出码:
|
||||
|
||||
| 退出码 | 含义 |
|
||||
| --- | --- |
|
||||
| `0` | 命令按合同成功完成 |
|
||||
| `2` | 输入、参数或安全前置条件错误 |
|
||||
| `3` | HTTP、连接或后端结构化错误 |
|
||||
| `4` | 仿真事件流报告失败 |
|
||||
| `5` | 本地结果文件写入失败 |
|
||||
|
||||
不要只看退出码 `0` 就声称仿真数值成功;还要检查最终事件和 `result.json` 中的状态。不要通过匹配本地化消息文本判断状态。
|
||||
|
||||
## 检查与解释
|
||||
|
||||
```powershell
|
||||
py -3.12 skills/system-simulation/scripts/simulation_skill.py inspect INPUT --format auto
|
||||
```
|
||||
|
||||
`--format` 可为 `auto`、`json` 或 `xml`。完成后按 [file-contracts.md](file-contracts.md) 解释模型。错误和警告应保留层级、稳定错误码、路径或行号;不要只复述最后一句消息。
|
||||
|
||||
默认只返回首批 50 个紧凑组件、25 条连接和 20 个结果变量,避免大型工程输出撑满上下文。翻阅模型摘要、按组件查看完整合同或搜索结果变量时使用:
|
||||
|
||||
```powershell
|
||||
py -3.12 skills/system-simulation/scripts/simulation_skill.py inspect INPUT `
|
||||
--component COMPONENT_ID `
|
||||
--component-offset 0 `
|
||||
--component-limit 50 `
|
||||
--connection-offset 0 `
|
||||
--connection-limit 25 `
|
||||
--variable-query QUERY `
|
||||
--variable-offset 0 `
|
||||
--variable-limit 20
|
||||
```
|
||||
|
||||
分别依据 `componentPage`、`connectionPage` 和 `resultVariablePage` 的 `hasMore`、`nextOffset` 继续分页,不要为寻找一个组件或变量请求全部详细合同。`componentTypes` 始终汇总完整模型,可先用它判断系统构成。`--component` 返回该 ID 的源文件数据和(若参与求解)编译合同,因此物性介质等配置节点也能查看参数。
|
||||
|
||||
## 文本规范化修复
|
||||
|
||||
先检查并取得源文件 SHA-256。第一次不带 `--confirmed` 调用只返回差异预览、不会写文件:
|
||||
|
||||
```powershell
|
||||
py -3.12 skills/system-simulation/scripts/simulation_skill.py repair-format INPUT `
|
||||
--format auto `
|
||||
--output OUTPUT `
|
||||
--expected-sha256 SHA256
|
||||
```
|
||||
|
||||
向用户展示预览中的目标路径、源/输出哈希和 `confirmationToken`,取得明确确认后,再用原样 token 执行写入:
|
||||
|
||||
```powershell
|
||||
py -3.12 skills/system-simulation/scripts/simulation_skill.py repair-format INPUT `
|
||||
--format auto `
|
||||
--output OUTPUT `
|
||||
--expected-sha256 SHA256 `
|
||||
--confirmation-token PREVIEW_TOKEN `
|
||||
--confirmed
|
||||
```
|
||||
|
||||
token 同时绑定源文件哈希、规范化输出哈希和目标绝对路径;任何一项变化都必须重新预览和确认。脚本拒绝覆盖源文件、哈希/token 不匹配和未确认写入。完整边界见 [repair-policy.md](repair-policy.md)。写入后再次运行 `inspect OUTPUT`。
|
||||
|
||||
## 仿真前对话
|
||||
|
||||
运行前必须完成以下判断:
|
||||
|
||||
1. `inspect` 通过,并取得可用结果变量清单。
|
||||
2. 用户选择 `separate`、`overlay` 或 `stacked`。
|
||||
3. 把自然语言对象解析为稳定结果 `key`;重名、缺单位或把输入参数误称为曲线时先澄清。
|
||||
4. 向用户复述将运行的文件、仿真时段、算法、所选结果变量和曲线方式。
|
||||
|
||||
本版没有网页自动预装能力。用户要求“网页查看”时,说明当前只能直接交付 SVG 曲线与 CSV;不要启动浏览器、生成临时 URL,或声称现有页面会自动载入文件。
|
||||
|
||||
## 启动并监视仿真
|
||||
|
||||
```powershell
|
||||
py -3.12 skills/system-simulation/scripts/simulation_skill.py simulate INPUT `
|
||||
--format auto `
|
||||
--output-dir OUTPUT_DIR `
|
||||
--variables RESULT_KEY_1 RESULT_KEY_2 `
|
||||
--chart-mode overlay `
|
||||
--simulation-id SIMULATION_ID
|
||||
```
|
||||
|
||||
`--variables` 接受结果变量稳定 `key`;不能传组件参数名。`--simulation-id` 可省略并由脚本生成,但应保存最终 ID,供恢复查询或取消使用。
|
||||
|
||||
监视规则:
|
||||
|
||||
- 消费 JSONL,记录最新 `progress`、`phase`、`simulatedTime/totalTime`、心跳和内部活动快照;
|
||||
- 长任务期间定期向用户给出简短进展,避免逐条转发事件;
|
||||
- 仅有仿真时间平台期不能证明卡死。活动序号、RHS、solver step、Jacobian 或闭合计数仍增长时,应报告“正在处理慢步”;
|
||||
- 网络读取中断后,用已知 simulation ID 查询一次任务快照,再决定是否继续说明、恢复结果或报告连接问题;
|
||||
- 不因运行缓慢自动取消。只有用户明确要求取消,或既有系统已经把任务判定为 stalled 时,才使用对应取消原因;
|
||||
- `completed` 才表示完整完成;`stopped`、`stalled`、`failed` 都必须标明是非完整结果。
|
||||
|
||||
当前任务状态保存在后端进程内,终态记录只短期保留,服务重启后也不能恢复。本 Skill 不承诺跨进程或长期断线续传;需要查询时应及时保存 simulation ID、事件日志和已经写出的结果文件。
|
||||
|
||||
`status` 对已完成任务只输出结果摘要,不在终端重复打印整套时间序列;正常 `simulate` 流程会把完整数据保存为 `result.json` 和 `results.csv`。
|
||||
|
||||
恢复查询:
|
||||
|
||||
```powershell
|
||||
py -3.12 skills/system-simulation/scripts/simulation_skill.py status SIMULATION_ID
|
||||
```
|
||||
|
||||
用户要求取消时:
|
||||
|
||||
```powershell
|
||||
py -3.12 skills/system-simulation/scripts/simulation_skill.py cancel SIMULATION_ID --reason user
|
||||
```
|
||||
|
||||
`--reason stalled` 只用于已有充分停滞证据的内部流程,不用来表达普通的用户取消。
|
||||
|
||||
## 结果文件与交付
|
||||
|
||||
正常运行目录应包含:
|
||||
|
||||
- `progress.jsonl`:原始进度、心跳和结束事件;
|
||||
- `result.json`:最终结构化结果;
|
||||
- `results.csv`:全部可用结果变量的 UTF-8 CSV;
|
||||
- 根据 `separate`、`overlay` 或 `stacked` 生成的 SVG 曲线。
|
||||
|
||||
交付时:
|
||||
|
||||
1. 说明最终状态和实际计算到的仿真时间;
|
||||
2. 返回用户选择的 SVG 曲线;
|
||||
3. 无论用户只选了几条曲线,都同时返回完整 `results.csv`;
|
||||
4. 若失败或取消但存在部分序列,明确标注曲线和 CSV 是部分结果;
|
||||
5. 若没有产生可用时间序列,明确说明没有 CSV,不能创建空文件冒充结果;
|
||||
6. 保留 `result.json` 和 `progress.jsonl` 作为诊断依据,但通常无需把完整事件日志逐行展示给用户。
|
||||
|
||||
本版不会根据结果自动改变模型并重试。诊断后若要改参数、拓扑或算法,先把建议交给用户,等待后续迭代能力或单独授权的人工修改流程。
|
||||
Reference in new issue
Block a user