故障诊断:调用 FAE 平台 fault-diagnosis 接口,一次 tool call 内部完成 start → poll → query 全流程,返回当前场景的故障诊断结果
| 字段 | 类型 | 必填 | 默认值 | 允许值 / 推导提示 |
|---|---|---|---|---|
--scenario | string | 是 | — | 4 个枚举值(下划线分隔):NETWORK_ACCESS_SLOW / NETWORK_ACCESS_FAILURE / LIVE_STUTTERING / GAME_STUTTERING。来自方案段落 字段(场景 1/2),或场景 3 从用户原话推导 |
故障场景--query-type | string | 是 | — | ontResId / uniUuid / gatewayId / oltResId / ponResId。选取优先级:ontResId > uniUuid > ponResId > gatewayId > oltResId(越细粒度越优) |
--query-value | string | 是 | — | 对应 query-type 的设备标识。保障链中从上一步 cei_score_query 返回的 rows[] 提取;场景 3 单点查询从用户原话或关键画像提取 |
--config | string | 否 | str(DEFAULT_CONFIG_PATH) | fae_poc/config.ini 绝对路径 |
三参(scenario + query-type + query-value)必须同时提供,缺一无法调用 FAE 接口。scenario 推导规则、query-type 选取建议、从 cei_score_query 结果提取 query-value 的映射、常用参数组合建议详见 references/diagnosis_parameters.md(L3 加载)。
本 Skill 不做业务规则判断:scenario 由 PlanningAgent 在方案段落里指定,query-type / query-value 由 Provisioning 从上一步结果或画像推导后以 CLI 参数传入。Skill 只负责"参数 → CLI → FAE 接口编排 → stdout 透传"。
脚本内部按以下顺序自驱,Agent 侧只感知为一次 get_skill_script 调用:
scenario + query-type + query-value 启动诊断任务,返回 taskIdMAX_POLL_SECONDSstart / poll 的进度信息走 stderr,不污染 stdout 主体。
cei_score_query 返回低分 rows 后,对目标设备在 scenario 下做故障诊断[任务类型: 单点故障诊断]references/diagnosis_parameters.md 即可)cei_score_query,本 Skill 依赖其产出的设备标识)remote_optimization,本 Skill 只做诊断、不做处置)scenario;从关键画像或上一步 cei_score_query 的 rows[] 推导 query-type + query-valueList[str],调用脚本:
get_skill_script(
"fault_diagnosis",
"fault_diagnosis.py",
execute=True,
args=["--scenario", "LIVE_STUTTERING", "--query-type", "ontResId", "--query-value", "10.25.81.249/0/1/0/7"],
timeout=180,
)
fae_poc/config.ini → NCELogin 校验/获取 token → start → poll → query → 原样输出结果 JSONstdout / stderr / returncode 原样透传给调用方CLI 参数连接符统一为空格(argparse 标准)。scenario 枚举值必须使用下划线写法(NETWORK_ACCESS_SLOW),不要用驼峰或去下划线形式。
timeout 建议 ≥ 180s:本 Skill 内部含 start → poll → query 三轮网络交互 + 轮询等待,比纯单次查询耗时长。Provisioning 调用时显式设置 timeout=180 更稳妥。
scripts/fault_diagnosis.py — FAE 平台 fault-diagnosis 接口调用入口(内部编排 start + poll + query;依赖项目根 fae_poc/ 包中的 NCELogin 和 config.ini,与 cei_pipeline / cei_score_query / remote_optimization 共享同一套基础设施)references/diagnosis_parameters.md — 诊断参数说明表(scenario 枚举含义与推导规则 / query-type 选取优先级与从 cei_score_query rows[] 的字段映射 / 常用参数组合建议 / FAE 返回结构白名单字段)保障链第 3 步 · 直播卡顿场景 + ontResId 定位:
python fault_diagnosis.py --scenario LIVE_STUTTERING --query-type ontResId --query-value 10.25.81.249/0/1/0/7
保障链第 3 步 · 上网慢场景 + uniUuid 定位(投诉用户):
python fault_diagnosis.py --scenario NETWORK_ACCESS_SLOW --query-type uniUuid --query-value a1cffe38-4855-4d52-beb8-6c1ba6594ef1
场景 3 · 游戏卡顿单点诊断 + PON 粒度:
python fault_diagnosis.py --scenario GAME_STUTTERING --query-type ponResId --query-value 2604843250000002
场景 3 · 无法上网故障 + 网关定位:
python fault_diagnosis.py --scenario NETWORK_ACCESS_FAILURE --query-type gatewayId --query-value GATEWAY001
指定配置文件(Windows 绝对路径覆盖默认):
python fault_diagnosis.py --scenario LIVE_STUTTERING --query-type ontResId --query-value 10.25.81.249/0/1/0/7 --config C:/path/to/fae_poc/config.ini
本 Skill 脚本封装真实 FAE 接口,与 cei_pipeline / cei_score_query / remote_optimization 共享以下 4 条硬性约束。违反任一条都会导致 agno 执行失败或挂起:
首行必须是 shebang #!/usr/bin/env python3
否则 Windows 下 agno 报 [WinError 193] %1 不是有效的 Win32 应用程序。
顶部必须做 fae_poc sys.path 双路径注入
_PROJECT_ROOT = Path(__file__).resolve().parents[3]
_FAE_POC_DIR = _PROJECT_ROOT / "fae_poc"
for _p in (str(_PROJECT_ROOT), str(_FAE_POC_DIR)):
if _p not in sys.path:
sys.path.insert(0, _p)
from fae_poc import DEFAULT_CONFIG_PATH, require_config
argparse --config 默认值必须用 str(DEFAULT_CONFIG_PATH)(绝对路径)
禁止 default='../../config.ini' 这类相对路径 —— agno 运行脚本时 cwd 由框架决定,相对路径会解析错位。
所有 requests 调用必须显式传 timeout=(connect, read)
包含 NCELogin 内部、start / poll / query 三个阶段的每一次 HTTP 调用。例如 session.post(..., timeout=(5, 15))。否则一旦 FAE 网络不通就会挂到 agno 外层 timeout 被强杀。
额外约束(内部编排专属):
poll 阶段必须有最大轮询时长与退出条件
脚本内部定义 MAX_POLL_SECONDS 和 POLL_INTERVAL_SECONDS 常量,超时后以结构化 JSON 返回 status=failed, stage=poll_timeout,不要死循环。
start / poll 的中间日志输出到 stderr query 阶段的最终结果 JSON 是 stdout 唯一主体,便于调用方解析;进度日志走 stderr。
scripts/fault_diagnosis.py 与 cei_pipeline / cei_score_query / remote_optimization 共享 fae_poc/ 包。初次部署:
NCELogin.py 拷贝到 fae_poc/NCELogin.py(已 .gitignore)fae_poc/config.ini.example 复制为 fae_poc/config.ini 并填入真实 base_url / csrf_token / cookie(已 .gitignore)[API](ip / port)和 [AuthTokens](x-uni-crsf-token / cookie)两节未完成部署时脚本应以结构化 JSON 返回 status=failed, stage=deployment_check,不要 crash(与同族 FAE Skill 的降级行为一致)。
Provisioning 从 故障诊断: 段落提取以下字段并按此表翻译为 CLI 参数:
诊断场景 → --scenario 枚举值
| 方案字段值(中文) | CLI 枚举值 |
|---|---|
直播卡顿 | LIVE_STUTTERING |
游戏卡顿 | GAME_STUTTERING |
无法上网 | NETWORK_ACCESS_FAILURE |
上网慢 | NETWORK_ACCESS_SLOW |
偶发卡顿定界字段
| 方案字段 | 值 | 处理方式 |
|---|---|---|
偶发卡顿定界 | True | 若脚本支持 --intermittent-diagnosis flag 则传入;否则记录在状态行供工程师参考 |
偶发卡顿定界 | False | 不传该 flag |
scenario 由方案段落决定,query-type/query-value 由 Provisioning 从上一步推导)base_url / csrf_token / cookie,一律从 fae_poc/config.ini 读取remote_optimization 的职责)