关于 Conductor
Conductor 是本地任务调度器和工作器管理工具,Claude 可通过对话创建计划任务、串联脚本并查看运行日志。它还提供本地 Web 仪表板,供用户查看状态、暂停任务和编辑工作器。
主要功能
- 01按固定时间、间隔或 cron 调度
- 02串联脚本并支持并行阶段
- 03运行 Python、批处理和 Shell 脚本
- 04通过邮件发送报告与通知
- 05保存运行历史并查看错误日志
适用场景
- 01定时运行指标脚本并邮件发送报告
- 02串联每日备份与清理任务
- 03监控 URL 并发送故障提醒
- 04查看失败任务的运行记录
MCP 相关
Conductor 内置 MCP 服务,并在首次启动时注册到 Claude Desktop。其工具允许 Claude 管理工作器、任务链、调度、运行和日志。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Conductor
Claude 的本地自动化助手之手 — 配有供监督者查看的 Web 面板。
Conductor 让 Claude 能够直接、持续地控制本地任务运行器。告诉 Claude 你想要自动化什么;它会创建计划任务,构建多步骤流水线,配置电子邮件报告,触发测试运行,并在发生故障时读取日志 — 全程通过对话完成。与此同时,127.0.0.1:5000 上还会运行一个 Web 面板,方便用户查看状态、点击暂停,或手动编辑任务。
Conductor 最初是为自动化仓库报告工作流(每日 ShipExec 指标拉取)而构建的,现在已适用于各种用途:任何 Python / 批处理 / shell 脚本、任何计划安排、任何执行链。
MCP 服务位于此仓库中(
server.py)— 这是将 Conductor REST API 暴露为 Claude 工具的轻量层。安装时会一并打包并自动注册,因此大多数用户无需直接操作它。单独的 conductor-mcp 仓库已弃用 — 其中包含的是较早的副本,没有自动启动竞态保护。

Claude 集成
Conductor 会在首次启动时将自身注册为 Claude Desktop 中的 MCP 服务。重启一次 Claude Desktop 后,Claude 就能使用 21 个工具进行全面控制:
对话示例:
你: 每天晚上 8:30 运行我的指标脚本,并通过电子邮件给我发送报告
Claude: 我会使用“运行 + 发送邮件”模板进行设置。 (创建任务、配置计划、接入 Gmail,并触发测试) 完成 — “Daily Metrics Report”任务已启用。请查收测试运行的邮件。
你: 那个正常运行时间检查一直失败。怎么回事?
Claude: (调取最近 10 次运行记录,读取错误日志) 该网站在过去一小时内三次返回 503。SSL 证书昨天过期了。以下是最近一次运行的完整错误信息……
你: 把我的备份脚本和清理脚本串联起来。先运行备份,完成后再运行清理。每天凌晨 2 点运行。
Claude: *(创建一个链:阶段 0 = 备份,阶段 1 = 清理,cron 计划为 "0 2 * * ") “Nightly Maintenance”链已创建,包含 2 个步骤。备份先运行,成功后再运行清理。
工作原理:
- 安装 Conductor(Windows 安装程序或从源代码安装)
- Conductor 首次启动时会将 MCP 配置项写入 Claude Desktop 的配置文件
- 重启一次 Claude Desktop
- Claude 现在可以通过自然语言控制 Conductor — 创建任务、构建执行链、触发任务、查看日志、发送电子邮件
功能
- 由 Claude 控制 — 21 个 MCP 工具让 Claude 创建工作进程、任务链、组、模板等。非技术用户也可以通过对话自动化任何任务。
- 灵活调度 — 固定时间(
09:00, 14:30)、间隔(2h 30m)或 cron 表达式(0 9 * * 1-5,并提供通俗易懂的预览)。 - 任务支持 — Python(
.py)、批处理(.bat、.cmd)和 shell(.sh)脚本。Selenium 和 GUI 脚本通过new_console在可见的终端窗口中运行。 - 内置邮件功能 — 配置一次 Gmail 后,任何模板或工作进程都可以发送邮件。使用 Run + Email 模板生成自动报告。Folder Watcher 会在文件到达时发送邮件。Uptime Check 会在服务不可用时发送警报。工作进程会在成功或失败时发送通知。
- 任务链 — 支持并行执行的多步骤流水线。相同的阶段编号表示并行运行。可切换失败时停止。
- 工作进程组 — 可折叠的命名组,便于整理。可按组批量暂停或删除。
- 运行历史 — 按工作进程/任务链记录历史,包含状态、耗时和错误详情。彩色圆点可一目了然地显示上次运行状态。
- 内置模板 — Folder Backup、File Cleanup、Folder Watcher、Uptime Check、Open URL、Run + Email。生成的脚本仅依赖标准库且自包含。
- 每个工作进程的环境变量 — 将
KEY=VALUE键值对注入子进程环境。 - 工作进程超时 — 终止并记录运行时间超过指定分钟数的工作进程。
- 邮件通知 — 按工作进程/任务链发送邮件提醒:始终、失败时或成功时。
- 导入 / 导出 — 可移植的 JSON 快照,包含所有工作进程、任务链和组。
- 已保存的配置 — 保存并加载命名的工作进程配置。
- 登录时自动启动 — 一键安装 Registry Run 项。无需管理员权限。
- 自动更新检查 — 有更新版本时显示模态对话框。
- 系统托盘图标 — 右键单击可选择 Open Dashboard 或 Stop。
- AI 错误分析 — 直接在仪表板中将错误日志发送给 Claude 进行诊断。
- 持久化状态 — 使用 SQLite 数据库。重启后会恢复工作进程和任务链。
添加工作进程表单

内置模板

任务链

调试日志

安装(Windows)
从最新版本下载并运行 Conductor_Setup.exe。
- 计算机上需要安装 Python 3(见下方说明)——Conductor 使用它运行
.py工作进程 - 安装到
%AppData%\Conductor— 无需管理员权限/UAC - 添加“开始”菜单快捷方式和可选的桌面快捷方式
- 可选登录时自动启动
- 包含卸载程序
Python 工作进程需要 Python。 Conductor 本身以独立可执行文件的形式提供, 但它会使用系统上找到的真实解释器运行你的
.py脚本 (py启动器、PATH或 Windows 注册表)。如果找不到解释器,工作进程会明确报错 并提供说明——绝不会被报告为成功。 将CONDUCTOR_PYTHON设置为完整路径,可指定使用某个解释器。.bat/.cmd/.sh工作进程不需要 Python。
从源代码设置
要求
- Python 3.10+
git clone https://github.com/jarmstrong158/conductor.git
cd conductor
pip install -r requirements.txt
python launch.py
仪表板会在 http://127.0.0.1:5000 打开。按 Ctrl+C 停止。
构建安装程序
.\build.bat
强制完整重建:
.\build.bat --rebuild
输出:Output\Conductor_Setup.exe。需要 Inno Setup。
任务文件格式
Python(.py)
脚本以子进程的形式运行:
if __name__ == "__main__":
print("Task executed!")
批处理 / Shell(.bat、.sh、.cmd)
以子进程的形式执行。如果已设置工作进程的输出目录,则将其用作工作目录。
计划格式
| 类型 | 格式 | 示例 |
|---|---|---|
| 固定时间 | HH:MM 或 HH:MM,HH:MM | 09:00, 14:30, 17:00 |
| 间隔 | Xh Ym | 2h 30m、1h、45m |
| Cron | 5 字段 crontab | 0 9 * * 1-5(工作日早上 9 点) |
任务链
任务链会按顺序运行多个脚本。每个步骤都有一个阶段编号——相同阶段的步骤会并行运行,各阶段按顺序执行。失败时停止会在任意步骤失败时终止任务链。
Stage 0: backup.py ──┐
Stage 0: cleanup.py ──┤ (both run at once)
↓
Stage 1: report.py (runs after both finish)
模板
| 模板 | 功能 | 邮件功能 |
|---|---|---|
| 文件夹备份 | 复制文件夹,保留 N 个备份 | 发送摘要邮件 |
| 文件清理 | 按模式删除旧文件 | 发送摘要邮件 |
| 文件夹监视器 | 按扩展名移动/发送文件 | 每条规则可选择:移动、发送邮件或两者兼有 |
| 正常运行时间检查 | 监控 URL,记录状态 | 状态为 DOWN 时发送提醒邮件 |
| 打开 URL | 在浏览器中打开 URL | — |
| 运行并发送邮件 | 运行脚本,并通过邮件发送输出文件 | 将输出作为附件发送 |
所有生成的脚本仅使用 Python 标准库。
架构
conductor/
├── launch.py # Entry point — Flask, browser, tray, MCP registration
├── app.py # Flask backend + APScheduler + SQLite
├── server.py # MCP server for Claude Desktop
├── CLAUDE.md # Context file for Claude Code / Desktop
├── static/
│ └── index.html # Frontend — HTML + CSS + JS (no frameworks)
├── tasks/
│ └── example_task.py
├── templates/
│ └── generated/ # Auto-generated template scripts
├── build.bat # One-click installer build
├── build_icon.py # Generates conductor.ico
├── conductor.spec # PyInstaller spec
├── installer.iss # Inno Setup script
└── conductor.db # SQLite database (auto-created)
| 层 | 技术 |
|---|---|
| 后端 | Python 3、Flask |
| 调度 | APScheduler(BackgroundScheduler + MemoryJobStore) |
| 持久化 | SQLite(WAL 模式) |
| 前端 | 原生 JS,单个 HTML 文件 |
| AI 集成 | 通过 MCP 使用 Claude(21 个工具)+ Anthropic API(错误分析) |
AI 错误分析
调试日志中包含一个分析错误按钮。当存在 ERROR 条目时,点击该按钮即可将它们发送给 Claude 进行诊断。需要在 .env 中配置 Anthropic API 密钥:
ANTHROPIC_API_KEY=sk-ant-...
示例——分析前/后:
调试日志中的原始错误:
[ERROR] worker "Daily Metrics Report" exit code 1
Traceback (most recent call last):
File "C:\scripts\metrics.py", line 142, in <module>
driver.find_element(By.ID, "report-table").click()
File ".../selenium/.../webdriver.py", line 830, in find_element
raise NoSuchElementException(message)
selenium.common.exceptions.NoSuchElementException: Message: no such element:
Unable to locate element: {"method":"css selector","selector":"[id="report-table"]"}
Claude 的诊断(点击后即可获得):
脚本在页面加载完成前就调用了
find_element,因此失败了——Selenium 与 DOM 的加载发生了竞争。#report-table元素要等到 XHR 完成后才会渲染。以下两种修复方法按优先级排序:
- 使用
WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "report-table")))包装元素查找,使其持续轮询,直到元素出现。- 如果不想导入等待辅助工具,可以在点击前添加
time.sleep(2),但这种做法不够可靠。 回溯信息显示,此问题发生在昨天 ShipExec 更改 UI 后的首次运行中——他们也可能重命名了该元素。添加等待逻辑前,请在 DevTools 中确认 ID 仍为report-table。
邮件设置
点击标题栏中的 📧 邮件,配置 Gmail 凭据。需要 Gmail 应用专用密码(必须先启用两步验证)。凭据保存在本地 .env 文件中,除发送到 Gmail 的 SMTP 服务器外,不会传输到其他地方。
配置完成后,所有模板和工作进程通知都可以发送邮件。
API
| 方法 | 路径 | 用途 |
|---|---|---|
GET | /api/workers | 列出所有工作器 |
POST | /api/workers | 注册工作器 |
PUT | /api/workers/<id> | 更新工作器 |
POST | /api/workers/<id>/pause | 切换暂停/恢复状态 |
POST | /api/workers/<id>/run-now | 立即触发 |
GET | /api/workers/<id>/history | 运行历史 |
POST | /api/workers/<id>/assign-group | 分配到组 |
DELETE | /api/workers/<id> | 删除工作器 |
POST | /api/workers/pause-all | 暂停所有工作器 |
DELETE | /api/workers/all | 删除所有工作器 |
GET | /api/chains | 列出所有链 |
POST | /api/chains | 创建链 |
PUT | /api/chains/<id> | 更新链 |
POST | /api/chains/<id>/pause | 切换暂停/恢复状态 |
POST | /api/chains/<id>/run-now | 立即触发 |
GET | /api/chains/<id>/history | 运行历史 |
DELETE | /api/chains/<id> | 删除链 |
GET | /api/groups | 列出组 |
POST | /api/groups | 创建组 |
DELETE | /api/groups/<id> | 删除组 |
GET | /api/profiles | 列出配置文件 |
POST | /api/profiles | 保存配置文件 |
GET | /api/profiles/<id> | 加载配置文件 |
DELETE | /api/profiles/<id> | 删除配置文件 |
POST | /api/templates | 根据模板创建 |
GET | /api/export | 将全部内容导出为 JSON |
POST | /api/import | 从 JSON 导入 |
GET/POST | /api/email-settings | 电子邮件配置 |
GET | /api/service/status | 自动启动状态 |
POST | /api/service/install | 安装自动启动 |
POST | /api/service/uninstall | 移除自动启动 |
GET | /api/update-check | 检查更新 |
GET | /api/logs?since=N | 日志条目 |
GET | /api/status | 调度器和数据库状态 |
GET | /api/browse?mode=file|dir | 原生文件选择器 |
许可证
MIT
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。