返回首页

PromptPilot for AI CLI:任务调度器

PromptPilot — 类似 Claude Code 的 AI CLI 队列调度器。支持 CLI、Web UI、Telegram 机器人,带限速处理和会话恢复。基于 SQLite + 单线程工作进程的架构确保可靠性。

使用 PromptPilot 的 AI CLI 自动化:机器人和队列
Advertisement 728x90

PromptPilot:AI CLI 工具的队列调度器

PromptPilot 允许您为 Claude Code、Codex 和 Qwen 等 AI CLI 工具排队任务。该工具可通过 CLI、Web 界面或 Telegram 机器人按计划运行提示。它支持优先级、速率限制重试和会话恢复。工作进程一次处理一个任务,避免 API 限制竞争。

实际应用场景:工作前预热限制、月底前使用剩余配额、通过机器人远程排队任务。任务存储在启用 WAL 模式的 SQLite 中,以支持并发。

实际用例

该工具解决开发者的日常问题:

Google AdInline article slot
  • 预热限制:在凌晨 5:00 安排一个轻量提示,以便会话提前开始。到上午 9:00,限制已部分使用;上午 10:00 — 限制重置。
  • 夜间速率限制:深夜,为重置时间排队任务 — 结果在早晨就绪。
  • 远程启动:通过机器人从出租车发送代码审核 — 返回时,限制已刷新,任务完成。
  • 移动端调整:直接从 Telegram 为 payments.py 添加验证和测试。
  • Claude 技能:通过机器人中的 /skills 或 UI 中的按钮调用技能,如 demo-invite.md。

CLI 启动示例:

pp add "为 api.py 编写测试" --dir C:\Projects\PromptPilot -p 1 -a "2026-04-01T05:00"

系统架构

接口(CLI、Web UI、TG 机器人)写入 SQLite(~/.promptpilot)。工作进程每 5 秒轮询队列,启动一个带有 AI CLI 的子进程。

接口 → SQLite(WAL) → 工作进程(轮询 5 秒) → 子进程(claude.exe | codex | qwen)
服务器:FastAPI + JS UI
机器人:Telegram API

进程独立:

Google AdInline article slot
  • 工作进程:单线程,一次一个任务。遇到速率限制时 — 指数退避。
  • 服务器:在 :8420 上提供 REST,使用原生 JS UI。
  • 机器人:逐步对话,通过电话号码授权。

崩溃恢复:启动时,正在运行的任务回滚为待处理状态。

安装与配置

克隆仓库,安装可编辑版本:

git clone https://github.com/your/promptpilot
cd PromptPilot
pip install -e .

创建 .env:

Google AdInline article slot
PP_CLAUDE_EXE=C:\Users\username\.local\bin\claude.exe
PP_DEFAULT_CLI=claude
PP_PROJECTS_ROOT=C:\Projects
PP_TASK_TIMEOUT=300
PP_BASE_DELAY=60
PP_MAX_DELAY=3600
PP_TG_TOKEN=...
PP_TG_ALLOWED_PHONES=+79001234567
PP_TASK_PASSWORD=12345

启动服务

CLI 模式

pp worker  # 处理队列
pp server  # http://127.0.0.1:8420
pp bot     # Telegram
pp start   # 工作进程 + 服务器

托盘(Windows 的 .exe):双击 — 托盘图标(🟢/🟠/⚫)。构建:\.build.ps1 → dist/pp.exe(40MB,自包含)。

PowerShell\.start.ps1(所有服务),\.stop.ps1

管理界面

CLI

pp add "重构 db.py" --dir /path -p 5
pp add --file prompts.txt
pp list --status pending

Web UI(:8420)

  • 提示 + Ctrl+Enter
  • Claude 技能
  • 计划预设
  • 状态过滤器
  • 详情:令牌、成本、模型

自动刷新 5 秒,单个 HTML 文件。

Telegram 机器人

授权:分享联系人(PP_TG_ALLOWED_PHONES)。逐步:提示 → 提供者 → 优先级 → 目录 → 计划。

命令:/skills,带分页的任务列表,带按钮的详情 [回复|删除]。

处理速率限制

通过 stderr 检测:"rate limit"、"429"、"quota exceeded"。

指数退避:

def compute_next_run(retry_count: int) -> datetime:
    delay = min(BASE_DELAY * (2 ** retry_count), MAX_DELAY)
    jitter = delay * 0.1 * (random.random() * 2 - 1)
    return datetime.now(timezone.utc) + timedelta(seconds=delay + jitter)

延迟:60 秒 → 120 秒 → ... → 3600 秒 + ±10% 抖动。超过最大重试次数 — 失败。

继续对话

Claude 可能会问:"auth.py 还是 auth_v2.py?"。任务保存 session_id。在机器人/UI 中:💬 回复 → 带有 --resume <session_id> 的新任务。

关键要点

  • 单线程工作进程确保 API 限制无竞争条件。
  • WAL SQLite + 崩溃恢复,提高可靠性。
  • 三种界面:CLI 追求速度,UI/机器人提供便利。
  • 带抖动的指数退避处理速率限制。
  • 支持技能和 Claude Code 会话恢复。

— Editorial Team

Advertisement 728x90

继续阅读