技能提交
This commit is contained in:
1 parent
210cb5117f
commit
6851c96a45
38 files changed
+8043
-1903
No files matched your search
@@ -6,10 +6,10 @@
|
||||
|
||||
1. 受众目标分析,选出最优 3 个受众并入库。
|
||||
2. 关键传播节点分析,跨受众去重后选出最优 3 个节点并入库。
|
||||
3. 受众脆弱点分析并入库。
|
||||
4. 关键传播节点脆弱点分析并入库。
|
||||
5. 受众策略分析并入库。
|
||||
6. 关键传播节点策略分析并入库。
|
||||
3. 从已入库受众中默认选前 2 个继续,每个生成最多 3 个脆弱点并入库。
|
||||
4. 从已入库关键传播节点中默认选前 2 个继续,每个生成最多 3 个脆弱点并入库。
|
||||
5. 对上述选中的每个受众默认生成最多 3 个策略并入库。
|
||||
6. 对上述选中的每个关键传播节点默认生成最多 3 个策略并入库。
|
||||
7. 同步前端步骤状态,保证原 `item-aiceh` 页面步骤条可继续识别。
|
||||
|
||||
## 技能位置
|
||||
@@ -41,9 +41,9 @@ skills-data/xdfx-single-agent-full-flow/scripts/xdfx_flow.py
|
||||
}
|
||||
```
|
||||
|
||||
默认会自动处理登录态:当命令没有传 `Authorization`,或某个接口返回 401 时,脚本会用固定账号 `admin`、口令 `ch@user` 调用 `POST /api/v1/auth/login/username?password=ch%40user`,请求体为 `{"username":"admin"}`。拿到 `access_token` 后写入 `Authorization: Bearer ...` 并重试原接口一次。
|
||||
默认会自动处理登录态:脚本启动时先 `import scripts/xdfx_auth.py`,用固定账号 `admin`、口令 `ch@user` 调用 `POST /api/v1/auth/login/username?password=ch%40user`,请求体为 `{"username":"admin"}`。拿到 `access_token` 后写入内部 `Authorization: Bearer ...`,再调用第一步业务接口;不要通过任何命令行参数传 token。
|
||||
|
||||
默认关闭 HTTPS 证书校验,用于兼容 UAT/内网自签证书;如果部署环境证书链正常,可以追加 `--verify-ssl`。如果已经有可用 token,也可以继续追加 `--auth-token TOKEN` 或 `--header "Authorization: Bearer TOKEN"`,脚本会优先使用传入 token。
|
||||
默认关闭 HTTPS 证书校验,用于兼容 UAT/内网自签证书;如果部署环境证书链正常,可以追加 `--verify-ssl`。接口返回 401 时仍由 `xdfx_auth.py` 刷新 token 并重试原接口一次。
|
||||
|
||||
## 执行命令
|
||||
|
||||
@@ -60,30 +60,44 @@ python scripts/xdfx_flow.py --mode step6 --input xdfx-input.json --state xdfx-fl
|
||||
|
||||
`--mode full` 只作为无人值守或排障兜底,不作为默认执行方式;外层工具通常会等长命令结束后才返回输出,无法保证真实逐步反馈。逐步命令共享同一个 `xdfx-flow-state.json`,不会影响 id 传递、断点续跑和最终入库。
|
||||
|
||||
如果需要一条命令完成逐步编排,可以使用包装脚本。它内部仍按 step1-step6 调用 `xdfx_flow.py`,并逐行转发反馈:
|
||||
|
||||
```bash
|
||||
python scripts/xdfx_run_full_steps.py --input xdfx-input.json --state xdfx-flow-state.json --summary xdfx-flow-summary.md
|
||||
```
|
||||
|
||||
每完成一步都会输出一行:
|
||||
|
||||
```text
|
||||
STEP_FEEDBACK {...}
|
||||
步骤反馈 {...}
|
||||
```
|
||||
|
||||
调用技能的智能体必须在每个 step 命令结束后读取 `STEP_FEEDBACK`,给用户一次反馈,再执行下一条 step 命令。
|
||||
调用技能的智能体必须在每个 step 命令结束后读取 `步骤反馈`,给用户一次反馈,再执行下一条 step 命令。
|
||||
|
||||
每次执行具体操作或调用接口前,脚本会输出:
|
||||
|
||||
```text
|
||||
OP_FEEDBACK {...}
|
||||
操作反馈 {...}
|
||||
```
|
||||
|
||||
调用技能的智能体必须把 `operation`、`method` 和 `url` 转述给用户,例如:
|
||||
调用技能的智能体必须把 `操作`、`请求方式` 和 `接口地址` 转述给用户,例如:
|
||||
|
||||
```text
|
||||
正在保存受众目标,调用 POST https://.../api/task/task-action-design。
|
||||
```
|
||||
|
||||
每次保存接口成功拿到 `id` 后,脚本会输出:
|
||||
|
||||
```text
|
||||
入库反馈 {...}
|
||||
```
|
||||
|
||||
调用技能的智能体必须把 `入库对象类型`、`入库对象名称` 和 `返回ID` 转述给用户,例如“已入库受众目标:xxx,designId=123”或“已入库受众脆弱点:xxx,id=456”。
|
||||
|
||||
如果报错,脚本会立即输出:
|
||||
|
||||
```text
|
||||
ERROR_FEEDBACK {...}
|
||||
错误反馈 {...}
|
||||
```
|
||||
|
||||
调用技能的智能体必须立刻告诉用户失败阶段、接口 URL、状态码、请求摘要和响应摘要。
|
||||
@@ -91,10 +105,10 @@ ERROR_FEEDBACK {...}
|
||||
如果模型 JSON 经过自动提取和修复仍无法解析,脚本会输出:
|
||||
|
||||
```text
|
||||
JSON_PARSE_REVIEW {...}
|
||||
JSON解析复核 {...}
|
||||
```
|
||||
|
||||
调用技能的智能体必须查看 `responseExcerpt`,判断是否能识别真正 JSON;无法确认时重跑当前步骤或重新调用对应模型接口。
|
||||
调用技能的智能体必须查看 `响应片段`,判断是否能识别真正 JSON;无法确认时重跑当前步骤或重新调用对应模型接口。
|
||||
|
||||
只检查脚本与参数、不调用真实接口:
|
||||
|
||||
@@ -130,6 +144,8 @@ python scripts/xdfx_flow.py --mode step6 --input xdfx-input.json --state xdfx-fl
|
||||
- `task-action-design-strategy-relation`
|
||||
- `task/task-action/{actionId}` 的 `step` 字段
|
||||
|
||||
策略信息形式/模态会按前端 `modelType` 字典保存为 value 逗号串,例如模型输出“图片,视频”时,脚本先查 `sys/sys-dict-data` 再写入 `task-action-message.modelType`,不会直接保存中文文字。
|
||||
|
||||
## 输出文件
|
||||
|
||||
执行后查看:
|
||||
@@ -139,27 +155,29 @@ xdfx-flow-state.json
|
||||
xdfx-flow-summary.md
|
||||
```
|
||||
|
||||
`xdfx-flow-state.json` 保存断点状态、接口返回 id、模型解析结果与错误明细。
|
||||
`xdfx-flow-state.json` 保存断点状态、接口返回 ID、模型解析结果与错误明细。
|
||||
|
||||
`xdfx-flow-summary.md` 是给用户看的执行摘要。
|
||||
|
||||
## 每步反馈
|
||||
|
||||
脚本会输出三类反馈行:
|
||||
脚本会输出五类反馈行:
|
||||
|
||||
- `OP_FEEDBACK`:当前正在做什么、调用哪个接口。
|
||||
- `ERROR_FEEDBACK`:当前错误的阶段、接口、状态码、请求摘要和响应摘要。
|
||||
- `JSON_PARSE_REVIEW`:模型返回内容无法稳定解析为 JSON,需要执行智能体复核是否重试。
|
||||
- `STEP_FEEDBACK`:当前步骤最终状态和累计入库数量。
|
||||
- `操作反馈`:当前正在做什么、调用哪个接口。
|
||||
- `入库反馈`:当前已入库的对象类型、名称和返回 ID。
|
||||
- `错误反馈`:当前错误的阶段、接口、状态码、请求摘要和响应摘要。
|
||||
- `JSON解析复核`:模型返回内容无法稳定解析为 JSON,需要执行智能体复核是否重试。
|
||||
- `步骤反馈`:当前步骤最终状态和累计入库数量。
|
||||
|
||||
`STEP_FEEDBACK` 中包含:
|
||||
`步骤反馈` 中包含:
|
||||
|
||||
- `step`:步骤编号。
|
||||
- `label`:步骤名称。
|
||||
- `status`:`ok`、`partial` 或 `skipped`。
|
||||
- `counts`:当前累计入库数量。
|
||||
- `newErrors`:本步骤新增错误数。
|
||||
- `totalErrors`:累计错误数。
|
||||
- `步骤`:步骤编号。
|
||||
- `步骤名称`:步骤名称。
|
||||
- `状态`:`成功`、`部分完成` 或 `已跳过`。
|
||||
- `执行状态`:中文执行状态。
|
||||
- `累计入库数量`:当前累计入库数量。
|
||||
- `本步骤新增错误数`:本步骤新增错误数。
|
||||
- `累计错误数`:累计错误数。
|
||||
|
||||
智能体反馈用户时建议使用这种格式:
|
||||
|
||||
@@ -167,20 +185,23 @@ xdfx-flow-summary.md
|
||||
Step1 受众目标分析完成:当前已入库受众 X 个,本步骤新增错误 Y 个。
|
||||
```
|
||||
|
||||
如果 `status=partial`,要补一句“该步骤部分完成”,并说明稍后最终汇总会列出错误明细。
|
||||
如果 `状态` 为 `部分完成`,要补一句“该步骤部分完成”,并说明稍后最终汇总会列出错误明细。
|
||||
|
||||
如果 `status=skipped`,要说明跳过原因。
|
||||
如果 `状态` 为 `已跳过`,要说明跳过原因。
|
||||
|
||||
## 容错规则
|
||||
|
||||
- 单个受众、账号、传播节点、脆弱点或策略失败,不中断整个流程。
|
||||
- 保存接口必须返回 `id`,否则不会进入下游步骤。
|
||||
- 受众目标默认入库 3 个,关键传播节点默认入库 3 个。
|
||||
- 下游脆弱点/策略默认只选择前 2 个受众和前 2 个传播节点继续,可用 `--downstream-audiences` / `--downstream-pathways` 调成 1 或 2。
|
||||
- 每个被选中的对象默认最多生成 3 个脆弱点、3 个策略。
|
||||
- 模型流式 `answer` 会自动拼接。
|
||||
- 流式模型接口第一次返回空响应、`y模型没有响应`、`模型没有响应` 或超时类字符串时,会自动再调用一次;仍失败才写入 `errors`。
|
||||
- 模型输出会自动去掉 `<think>`,从前后混杂文本、多个 JSON 代码块、无换行流式文本、连续 JSON 对象、非工整 JSON 中提取多个候选,并按当前步骤所需字段选择最像的 JSON。
|
||||
- 模型 JSON 会尝试修复中文引号、全角冒号/逗号、尾随逗号、未加引号的键、Python 风格 `True/False/None`。
|
||||
- 模型 JSON 解析失败会自动重试 1 次。
|
||||
- 每一步完成都会写入 state/summary 并输出 `STEP_FEEDBACK`。
|
||||
- 每一步完成都会写入 state/summary 并输出 `步骤反馈`。
|
||||
- 接口失败会写入 `errors`,包含阶段、URL、状态码、请求摘要、响应正文和异常类型。
|
||||
|
||||
## 回复用户规则
|
||||
@@ -190,3 +211,4 @@ Step1 受众目标分析完成:当前已入库受众 X 个,本步骤新增
|
||||
如果 `errors` 为空,可以说明“全流程完成”。
|
||||
|
||||
如果 `errors` 非空,只能说明“部分完成”,并列出失败阶段、接口 URL、状态码和响应摘要。
|
||||
|
||||
Reference in new issue
Block a user