Skip to main content
Glama
README.md
# 火山引擎智能外呼 剧本操作与文本测试工具集

把火山引擎智能外呼控制台(console.volcengine.com/aibot)的网页功能转换为 Python 脚本与 MCP 服务,供 AI 通过自然语言完成剧本的查询、修改、导入、发布与对话测试闭环。

**17 个功能脚本 + Web 快捷工具**:获取当前登录账号、查询项目组、查询项目组下的剧本、按剧本ID查询、按名称搜索、导出剧本、导入剧本、发布测试版本、查询剧本变量、变量增删改、测试版本变量赋值、文本对话测试、查询剧本基本信息(含 Sub Agent)、查询分析Agent、获取分析Agent内容、批量导出剧本、搜索已导出剧本内容关键字、查询通话明细、删除剧本(仅 _由AI修改 后缀)、修改剧本 json HASH;Web 快捷工具:批量查询剧本信息、批量搜索剧本内容、批量下载搜索分析Agent、批量删除剧本。

## 目录结构

```
volcengine_aibot_scripts/
├─ volc_aibot/                  # 公共包(所有脚本与 MCP 共用)
│  ├─ client.py                 # 控制台 API 客户端(全部接口封装+账号守卫)
│  ├─ cookie_client.py          # chrome_capture_operate Cookie 查询客户端
│  ├─ global_config.py          # 全局配置(~/.volcengine_aibot_scripts/global.json)
│  ├─ web/                      # 页面独立文件(2026-09-10 从 web_server.py 拆出)
│  │  └─ index.html             # 整页 HTML(含内联样式与脚本,改后刷新即生效)
│  ├─ web_server.py             # Web 配置页(与 MCP SSE 同端口)
│  ├─ tray.py                   # 系统托盘(双击开页面/右键退出,无窗口运行)
│  ├─ config.py                 # 常量(基址/产品线/变量类型表)
│  ├─ logging_util.py           # 日志(log/ 每天一个文件)
│  └─ result.py                 # 结果目录(result/{日期}/{时间_账号_功能}/)
├─ scripts/                     # 20 个独立可执行脚本(一功能一脚本)
│  ├─ get_current_user.py       # 获取当前登录的账号(--save-allowed 写配置)
│  ├─ query_project_groups.py   # 查询项目组
│  ├─ list_group_scripts.py     # 查询项目组下的剧本
│  ├─ query_script.py           # 根据剧本ID查询剧本
│  ├─ search_script.py          # 根据剧本名称搜索剧本
│  ├─ export_script.py          # 导出剧本
│  ├─ import_script.py          # 导入剧本
│  ├─ publish_preview.py        # 发布剧本测试版本
│  ├─ query_variables.py        # 查询剧本变量
│  ├─ modify_variables.py       # 剧本变量新增/修改/删除
│  ├─ set_preview_variables.py  # 测试版本全局变量赋值
│  ├─ text_chat_test.py         # 文本对话测试(固定话术文件模式)
│  ├─ query_script_info.py      # 查询剧本基本信息(含 Sub Agent/分析Agents)
│  ├─ query_analysis_agents.py  # 查询分析Agent列表(CloudLadder 域)
│  ├─ get_analysis_agent.py     # 获取分析Agent内容(提示词/状态/模型)
│  ├─ batch_export_scripts.py   # 批量导出剧本(按项目组/全部)
│  ├─ search_exported_scripts.py # 搜索已导出剧本内容关键字
│  ├─ query_call_records.py      # 查询通话明细(过滤/分页/参数留档)
│  ├─ delete_script.py           # 删除剧本(仅 _由AI修改 后缀;ID或名称)
│  └─ update_script_hash.py      # 剧本 json HASH(checksum)校验/重算
├─ mcp_server.py                # 服务入口(同端口:Web 配置页 + MCP SSE;托盘)
├─ md/                          # 文档(Web 页面内容:使用说明/适用场景/提示词示例;非技术人员AI协助部署指南)
├─ install.bat                  # 安装依赖(虚拟环境 .venv)
├─ start.bat                    # 启动服务(pythonw 无窗口 + 系统托盘)
├─ requirements.txt             # Python 依赖
├─ queries.txt                  # 文本对话测试示例话术(每行一句)
├─ log/                         # 运行日志(每天一个文件,运行时生成)
└─ result/                      # 结果输出(每次运行一个子目录,运行时生成)
```

完整文档(项目架构、火山引擎接口协议、用法说明)在服务页面的「使用说明」等标签页中查看(启动后浏览器打开)。

非技术人员部署:电脑上未安装 Git、Python 时,将 `md/非技术人员AI协助部署指南.md` 的**文件路径**发给 AI(如 Claude Code)即可,AI 可自行读取该文档并按其协助完成部署,无需复制全文。文档包含已实测验证的下载地址与国内镜像(Python 安装包、项目 ZIP、pip 依赖)、AI 可自动完成与必须人工完成的步骤划分(人工仅 3 项:安装 Chrome 插件、配置 Cookie 推送范围、登录火山引擎控制台)。

## 快速开始

### 1. 安装依赖

```bat
install.bat          # 创建/复用 .venv 并安装 requests/mcp/uvicorn/sse-starlette/websockets
```

### 2. 运行前提(关键)

- **chrome_capture_operate 服务**已启动(默认 `http://127.0.0.1:33445`),Chrome 插件已安装且允许推送 `volcengine.com` 的 Cookie;
- **日常 Chrome** 已登录火山引擎智能外呼控制台。脚本不写死任何 Cookie,登录态每次运行时实时查询获取。

chrome_capture_operate 的安装与配置说明见其项目 README(github.com/Adrninistrator/chrome_capture_operate 或 gitee.com/adrninistrator/chrome_capture_operate)。

### 3. 运行脚本(示例)

```bat
.venv\Scripts\python.exe scripts\query_script.py llm_xxx
.venv\Scripts\python.exe scripts\export_script.py llm_xxx
.venv\Scripts\python.exe scripts\publish_preview.py llm_xxx --description "发布测试"
.venv\Scripts\python.exe scripts\text_chat_test.py llm_xxx queries.txt
```

(`llm_xxx` 替换为实际的剧本ID。)脚本可在任意目录下执行(内部自动把项目根加入 sys.path,PyCharm 与命令行包引用均正确);每个脚本支持 `--help` 查看参数。

### 4. 启动服务(pythonw 无窗口 + 系统托盘;同端口 Web 配置页 + MCP SSE)

```bat
start.bat                              # 默认端口(全局配置,缺省 19000)
start.bat 19001                        # 本次覆盖端口
```

- 系统托盘:**双击打开配置页**(http://127.0.0.1:19000/),右键菜单可退出;
- 配置页(与 MCP SSE 同端口):**快捷工具**(批量查询剧本信息、批量搜索剧本内容、批量下载搜索分析Agent,结果支持复制与导出 Excel(首行冻结+筛选,文件名含导出时间);页面上方可折叠的执行状态面板经 WebSocket 实时展示当前请求、剧本ID/名称与百分比进度,完成时提醒)、设置**监听端口**(改后需重启)与
 **允许操作的账号**(唯一),显示当前可用的 MCP SSE URL(带复制按钮);
- 全局配置文件:`C:\Users\<用户名>\.volcengine_aibot_scripts\global.json`;
- **修改守卫**:修改类操作执行前先检查「**是否允许执行修改操作**」开关(默认关闭,未开启一律拒绝),再校验当前 Chrome 登录账号(/console/api/v2/user
 的 id)是否为允许账号,不一致拒绝执行;同一 Cookie 未变化时免重复检查;开关未开启或账号未配置时报错并提示到配置页设置(可用 `scripts\get_current_user.py --save-allowed` 直接写入当前账号)。

### 5. 安装 MCP 服务到 Claude Code

```bash
claude mcp add --scope user --transport sse volc-aibot http://127.0.0.1:19000/sse
```

MCP 服务共 28 个工具(含 `get_current_user` 账号工具与 `usage_guide` 使用说明工具——返回运行前提、各工具用法与典型调用序列,AI 不确定怎么用时先调它)。

新增的剧本信息与分析 Agents 工具:`query_script_info`(剧本基本信息:类型/最大轮次/模型/ASR/分析Agents挂载/发布状态)、`get_sub_agents` / `get_sub_agent_info`(Multi Agents 剧本的 Sub Agent 清单与配置)、`query_analysis_agents` / `get_analysis_agent`(分析Agent 列表与内容:系统/用户提示词、发布状态)、`batch_export_scripts`(批量导出)与 `search_exported_scripts`(导出内容关键字搜索)。

对话测试提示词示例(⚠ 对话测试占用生产实际外呼资源:请勿同时发起大量会话,避免业务高峰,建议晚上测试——MCP 的 usage_guide 与 Web 配置页均有此提示):

```
使用 volc-aibot MCP,先调用 usage_guide 工具了解怎么用,然后与机器人进行任意对话,对话5轮,剧本ID:llm_xxx
```

## 典型链路

- **改剧本变量并测试**:`query_variables.py` → `modify_variables.py --op update ...` → `publish_preview.py`(发布后生效)→ `text_chat_test.py`
- **复制剧本**:`export_script.py` → `import_script.py <文件> <项目组名>` → 得到新剧本ID → `publish_preview.py`(新剧本未发布,对话前必须发布)
- **变量赋值后对话**:`set_preview_variables.py --set 变量名=值` → `text_chat_test.py`(对话 context 默认使用测试版本变量值)
- **批量导出并检查关键字**:`batch_export_scripts.py`(按项目组导出全部剧本)→ `search_exported_scripts.py --dir <导出目录> --keyword <关键字> [--count]`(按行搜索是否出现/出现次数)
- **剧本配置体检**:`query_script_info.py llm_xxx`(类型/轮次/模型/ASR/分析Agents/发布状态一览);Multi Agents 剧本可用 MCP `get_sub_agents`/`get_sub_agent_info` 查各 Sub Agent 的模型与提示词

## 说明

- **测试版本全局变量赋值**:必填变量(is_required=true)赋值时值不能为空,传空值会被拒绝;
- 修改类操作执行前会自动备份剧本与变量当前值到 result 目录;
- 运行产物(log/、result/)运行时生成,已默认 git 忽略。