112 lines
6.7 KiB
Markdown
112 lines
6.7 KiB
Markdown
---
|
||
name: xdfx-single-agent-full-flow
|
||
description: xdfx 深链接单智能体一键完成受众、关键传播节点、脆弱点与策略分析,并把结果写入行动设计相关接口。
|
||
---
|
||
|
||
# xdfx 单智能体全流程分析入库 Skill
|
||
|
||
这个 Skill 必须优先运行内置 Python 执行器,不要让模型照着说明手写接口调用。长流程、接口字段、JSON 修复、重试、id 传递、部分失败继续、详细错误汇报都已经固化在:
|
||
|
||
```text
|
||
scripts/xdfx_flow.py
|
||
```
|
||
|
||
## 使用前准备
|
||
|
||
准备一个 JSON 输入文件,例如 `xdfx-input.json`:
|
||
|
||
```json
|
||
{
|
||
"api_base": "https://ch1.b.uat.4.cn",
|
||
"taskId": "真实任务id",
|
||
"actionId": "真实xdfx行动id",
|
||
"mubiao": "传播...叙事,驱动...行为体产生...预期行为,实现...作战目的。",
|
||
"direction": "U方向",
|
||
"platform": "fb"
|
||
}
|
||
```
|
||
|
||
默认会在缺少 `Authorization` 或接口返回 401 时,自动用 `admin / ch@user` 调用:
|
||
|
||
```text
|
||
POST /api/v1/auth/login/username?password=ch%40user
|
||
body: {"username":"admin"}
|
||
```
|
||
|
||
拿到 `access_token` 后会写入 `Authorization: Bearer ...` 并重试原接口一次。登录接口和 401 重试都会输出 `OP_FEEDBACK` / `ERROR_FEEDBACK`,但反馈中的 `password`、`token` 会脱敏。默认关闭 HTTPS 证书校验,适配 UAT/内网自签证书;如果环境证书链正常,可以追加 `--verify-ssl`。
|
||
|
||
如果已经有可用登录态,也可以在命令里追加 `--auth-token TOKEN` 或 `--header "Authorization: Bearer TOKEN"`;此时脚本优先使用传入的 token。
|
||
|
||
## 执行命令
|
||
|
||
从本 Skill 目录逐步执行。虽然这是“一个技能做完整流程”的版本,但为了给用户真实的逐步反馈,智能体必须按 step1-step6 分六个命令运行,每个命令结束后先把 `STEP_FEEDBACK` / 新增错误反馈给用户,再继续下一步:
|
||
|
||
```bash
|
||
python scripts/xdfx_flow.py --mode step1 --input xdfx-input.json --state xdfx-flow-state.json --summary xdfx-flow-summary.md
|
||
python scripts/xdfx_flow.py --mode step2 --input xdfx-input.json --state xdfx-flow-state.json --summary xdfx-flow-summary.md
|
||
python scripts/xdfx_flow.py --mode step3 --input xdfx-input.json --state xdfx-flow-state.json --summary xdfx-flow-summary.md
|
||
python scripts/xdfx_flow.py --mode step4 --input xdfx-input.json --state xdfx-flow-state.json --summary xdfx-flow-summary.md
|
||
python scripts/xdfx_flow.py --mode step5 --input xdfx-input.json --state xdfx-flow-state.json --summary xdfx-flow-summary.md
|
||
python scripts/xdfx_flow.py --mode step6 --input xdfx-input.json --state xdfx-flow-state.json --summary xdfx-flow-summary.md
|
||
```
|
||
|
||
`--mode full` 仅作为无人值守或本地排障兜底,不作为默认执行方式;因为外层工具通常会等长命令结束才返回输出,无法保证用户看到实时反馈。逐步命令共享同一个 `xdfx-flow-state.json`,id 传递和断点续跑不受影响。
|
||
|
||
每一步完成后都会输出一行 `STEP_FEEDBACK {...}`。智能体必须在每个 step 命令结束后给用户一次简短反馈,说明该步骤状态、已入库数量和新增错误数,然后再执行下一步。
|
||
|
||
脚本每次调用接口前还会输出 `OP_FEEDBACK {...}`,包含当前操作、HTTP 方法和 URL。智能体必须用简短中文告诉用户“正在做什么、调用哪个接口”。
|
||
|
||
脚本出现错误时会立即输出 `ERROR_FEEDBACK {...}`,包含阶段、接口 URL、状态码、请求摘要、响应摘要和异常类型。智能体必须立刻告诉用户错误细节,不能等到最后才说。
|
||
|
||
如果模型返回内容经过多候选 JSON 提取和修复后仍无法解析,脚本会输出 `JSON_PARSE_REVIEW {...}`。智能体必须查看其中的 `responseExcerpt`,判断是否能识别出可用 JSON;无法确认时,重跑当前步骤或重新调用对应接口。
|
||
|
||
只做参数和脚本检查、不调用接口:
|
||
|
||
```bash
|
||
python scripts/xdfx_flow.py --mode full --input xdfx-input.json --dry-run
|
||
```
|
||
|
||
## 脚本保证
|
||
|
||
- 受众只取最优 3 个继续。
|
||
- 关键传播节点全局去重后只取最优 3 个继续。
|
||
- 每个保存接口必须拿到返回 `id` 才进入下游。
|
||
- 保存后会同步前端 `task/task-action.step` 步骤状态;如只想入库不更新步骤条,追加 `--no-step-status`。
|
||
- 策略保存会同步写入 `task-action-channel`、`base-narrate`、`task-action-message`、`task-action-design-strategy-relation`,兼容策略表格/编排页面读取。
|
||
- 模型流式 `{"answer":"..."}` 会自动拼接。
|
||
- 流式模型接口第一次返回空响应、`y模型没有响应`、`模型没有响应` 或超时类字符串时,会自动再调用一次;仍失败才写入 `errors`。
|
||
- 模型输出会自动去掉 `<think>`,从前后混杂文本、多个 JSON 代码块、无换行流式文本、连续 JSON 对象、非工整 JSON 中提取多个候选,并按当前步骤所需字段选择最像的 JSON。
|
||
- 模型 JSON 会尝试修复中文引号、全角冒号/逗号、尾随逗号、未加引号的键、Python 风格 `True/False/None`。
|
||
- 模型 JSON 解析失败会自动重试 1 次。
|
||
- 单个受众、账号、节点或策略失败不会拖垮全流程。
|
||
- 每完成一步都会输出 `STEP_FEEDBACK`,包含 `step`、`label`、`status`、累计入库计数和新增错误数。
|
||
- 每次接口调用前都会输出 `OP_FEEDBACK`,说明当前操作和接口 URL。
|
||
- 每个错误都会立即输出 `ERROR_FEEDBACK`,说明失败阶段、接口、状态码、请求摘要和响应摘要。
|
||
- 所有接口错误都会写入 `xdfx-flow-state.json.errors`,包含阶段、URL、状态码、请求摘要、响应正文和异常类型。
|
||
|
||
## 回复用户
|
||
|
||
执行过程中,每出现一行 `STEP_FEEDBACK`,都要立刻向用户反馈一次:
|
||
|
||
- 当前完成的步骤名称。
|
||
- 状态:`ok`、`partial` 或 `skipped`。
|
||
- 当前累计入库数量。
|
||
- 本步骤新增错误数。
|
||
|
||
每出现一行 `OP_FEEDBACK`,都要简短告诉用户当前正在执行的操作和接口,例如“正在保存受众目标,调用 POST /api/task/task-action-design”。
|
||
|
||
每出现一行 `ERROR_FEEDBACK`,都要立刻告诉用户失败阶段、接口 URL、状态码和响应摘要。
|
||
|
||
每出现一行 `JSON_PARSE_REVIEW`,都要查看 `responseExcerpt`。如果能明显识别出目标 JSON,说明需要人工复核;如果不能识别,重跑当前 step 或重新调用对应模型接口,并告诉用户“模型 JSON 不工整,正在复核并重试”。
|
||
|
||
全部执行结束后再读取 `xdfx-flow-summary.md` 和命令输出,向用户说明:
|
||
|
||
- 受众入库数量和 `designId`
|
||
- 传播节点入库数量和 `pathwayAccountId`
|
||
- 受众脆弱点数量
|
||
- 传播节点脆弱点数量
|
||
- 策略数量
|
||
- 失败明细
|
||
|
||
只要 `errors` 不为空,就说“部分完成”,不要说“全部完成”。
|