重新整理提示词和工具说明。

This commit is contained in:
2026-06-02 17:42:02 +08:00
parent 5b285ad7a5
commit a825c3c31d
14 changed files with 126 additions and 1246 deletions
+34 -14
View File
@@ -1,7 +1,6 @@
---
name: tjwater-skills
description: TJWater Skills — 仅保留可复用的分析工作流。原子操作由 Agent 自行通过 tjwater-cli help 发现。
version: 2.0.0
description: TJWater Skills — 动态生长的分析工作流树。后端服务由 Agent 自行通过 tjwater-cli help 发现。
---
# TJWater Skills
@@ -34,20 +33,41 @@ tjwater_cli(command="help") → 通过工具调用
`help` 返回 JSON 格式,包含 `commands` 数组和 `summary`,Agent 可直接解析识别可用能力。
## 工作流清单
| 工作流 | 数据需求 | 输出 | 适用场景 |
|--------|---------|------|---------|
| **simulation-diagnosis** | 模拟结果 links/nodes | 问题概览 + 异常清单 + 严重级别 | 日常巡检、快速诊断 |
| **bottleneck-analysis** | 模拟结果 + 管道属性 | 瓶颈排名 + composite_score + 管径升级建议 | 规划改造 |
| **source-service-area-analysis** | 模拟结果 + 管道拓扑 + 水库列表 | 各水源服务节点数 + 分区渲染 | 供水分区可视化 |
## 使用策略
1. **工作流优先** — 用户意图匹配已有工作流时,直接加载对应 workflow skill。
2. **原子优先** — 简单查询/单项分析直接调用 `tjwater_cli`,不加载 skill。
3. **按需升级**浅层工作流不足时走升级路径(如 diagnosis → bottleneck)。
4. **应急拼装** — 无匹配工作流时,Agent 自行组合 CLI 命令 + Python 脚本完成
Skills 树是动态生长的——没有预置的 workflow,所有工作流从实际任务中沉淀:
1. **查已有**先检查 `skills/workflow/` 下是否有匹配的 workflow skill
2. **从零拼装** — 无匹配时,Agent 自行组合 `tjwater_cli` 命令 + Python 脚本完成
3. **沉淀复用** — 任务完成后复盘,如果流程稳定可复用,用 `skill_manager` 保存到 `skills/workflow/<name>/`(含 SKILL.md + scripts/*.py
4. **原子操作** — 简单查询直接调用 `tjwater_cli`,不走 skill
## Workflow 脚本编写规范
**原则:尽量用 pipe 串联 CLI 调用,减少 tool calling 次数。**
workflow skill 的 Python 脚本应在一次 `subprocess.run(shell=True)` 中用 shell pipe 串联多个 CLI 命令,而非多次 `subprocess.run` 逐次调用。中间数据转换由 `jq`/`xargs` 完成,CLI 不增加 `--input/--output`
```
subprocess 次数: 1pipe 串联) < N(逐次调用)
tool calling 次数: 1 次 skill call < N 次 tjwater_cli 调用
```
**环境变量认证**(管道场景,多用户安全):
```python
# env dict 仅用于当前子进程,不污染 os.environ,多用户并发隔离
env = {**os.environ}
env["TJWATER_SERVER"] = auth["server"]
env["TJWATER_ACCESS_TOKEN"] = auth["access_token"]
env["TJWATER_PROJECT_ID"] = auth["project_id"]
env["TJWATER_NETWORK"] = auth.get("network", "")
cmd = "tjwater-cli cmd1 | jq '...' | xargs tjwater-cli cmd2"
result = subprocess.run(cmd, shell=True, env=env, capture_output=True, text=True)
```
单次 CLI 调用仍用 `--auth-stdin`(桥接端点场景)。管道场景用子进程 env dict,两个场景各司其职。认证 JSON 由内部桥接注入,脚本不硬编码 token/server/project。
## 参考