Files
deerflow-code/offline-backend-20260512/backend/skill-packages/add-audience/SKILL.md
T
董宏凯 5c75e1af16 feat(deep-research): 强化任务链路可靠性并接入 agentfx 报告助手种子
功能说明:\n- 重构 Deep Research 调度与执行链,补齐 dispatcher、executor、live hub 与依赖注入入口,提升任务下发、执行、回调的稳定性\n- 增强运行时持久化与恢复能力,接入业务映射、任务来源与任务事件日志模型,覆盖持久化与执行可靠性关键路径测试\n- 新增 agentfx 报告助手 seed 与任务报告导入脚本配置,支持离线环境快速初始化与任务流模板回填\n- 完善 deep-research 与 thread_runs 路由参数编排,兼容不同业务映射与运行入口的前后端联动\n- 补充前端 agentfx deep-link 解析,保证 deep-research 场景下的登录跳转与任务上下文一致
2026-09-04 23:18:52 +08:00

96 lines
4.4 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: add-audience
description: 添加受众目标入库:校验受众JSON载荷,登录任务系统后按完整链路(查重→删除同名受众及其关系表→创建受众目标→创建账号关联)调用接口,并如实回报每个接口的入参与调用结果。
allowed-tools:
- read_file
- bash
---
# 添加受众目标(完整链路入库)
当且仅当需要把分析产出的受众目标(含关联账号)写入任务系统时使用本 Skill。脚本会自动完成:登录鉴权 → 查重 → 删除同名受众(连带删除 `task-action-pathway-account` 关系表与脆弱点关联)→ 创建受众目标 → 创建账号关联。
## 前置条件
先用 `write_file` 把载荷写到 `/mnt/user-data/outputs/add-audience-payload.json`,结构如下(`targetAudience` 也可写作 `groupName`):
```json
{
"taskId": 101,
"actionId": 201,
"audienceList": [
{
"targetAudience": "18-30岁智能穿戴尝鲜用户",
"recReason": "对新形态设备接受度高……",
"userList": [
{
"id": "mock_fa_0001",
"name": "极客评测室GeekBench",
"platformType": 1,
"platform": "facebook",
"dataSource": "target",
"score": 0.93,
"metadata": { "...": "完整user对象会整体存入 frofileInfo" }
}
]
}
]
}
```
- `taskId` / `actionId` 必须是整数,等于当前任务与行动 ID。
- `userList` 每项是完整 user 对象:`id`、`name` 必填;`platformType` 写入 accountPlat;`accountSource` 优先取 `dataSource`,缺失时回退 `score`;整个对象 JSON 序列化后存入 `frofileInfo`。
- `recReason` 中的 `<n>` 引用标记会被自动清洗,无需预处理。
完整字段定义、账号对象字段表与生成规则,见:
```text
/mnt/skills/public/add-audience/docs/受众JSON生成规范.md
```
(custom 安装时把路径中的 `public` 换成 `custom`;需要生成载荷时,先读该规范再写 JSON。)
## 接口地址与鉴权配置
部署时编辑以下文件(安装到 custom 时把路径中的 `public` 换成 `custom`):
```text
/mnt/skills/public/add-audience/config/audience_api.json
```
| 配置项 | 说明 |
| --- | --- |
| `base_url` | 任务系统地址(到端口,不带 `/api`),如 `http://192.168.1.11:3912` |
| `username` / `password` | 登录账号(环境变量 `AUDIENCE_API_USERNAME` / `AUDIENCE_API_PASSWORD` 可覆盖) |
| `request.verify_ssl` | **默认 false,已关闭 HTTPS 证书校验**,适配自签名证书内网环境;公网环境建议改回 true |
| `request.timeout_seconds` | 每个请求的超时秒数,默认 30 |
鉴权流程(脚本自动完成):`POST {base_url}/api/auth/login`(body `{username, password}`)取 `access_token`,后续所有请求附加请求头 `Authorization: Bearer {access_token}`。
## 执行方式
```bash
python /mnt/skills/public/add-audience/scripts/add_audiences.py \
--json /mnt/user-data/outputs/add-audience-payload.json
```
可加 `--dry-run` 只校验载荷并打印调用计划,不实际发送。环境变量覆盖地址:`AUDIENCE_API_BASE_URL`。
## 结果处理(必须如实转述)
脚本 stdout 是一段 JSON,其中:
- `入参摘要`:本次传入的 taskId/actionId 与每个受众组(名称、清洗后理由、账号数)——**必须告知用户**。
- `calls`:每个接口的 method、url、请求体(密码与 token 已脱敏)、HTTP 状态与响应——**必须汇总告知用户**,特别是删除了哪些同名旧受众及其关系表记录、新建的 designId。
- `groups` / `summary` / `人读摘要`:分组结果与统计。
规则:
- `success: true`:按 `人读摘要` + `groups` 如实汇报新增/删除数量。
- `success: false`:如实说明失败步骤与错误(如登录 401 → 提示检查 config 账号密码),**不要假装调用成功**,也不要静默吞掉失败。
- 不要自己用 curl / requests 逐条调接口替代本 Skill;不要在未执行脚本的情况下宣称"已添加"。
## 同名受众处理策略
与前端行为一致:同名(`targetAudience` 相同)受众已存在时**先删后建**,删除链为:关系表 `task-action-pathway-account`(按 pathwayId 逐条)→ `task-action-design/deleteDesignVulns?designId=` → `task-action-design/{id}`。如用户只想要"跳过已存在"而非覆盖,需在执行前明确说明并由用户决策。