零依赖 GUI:把 OpenCode CLI 变成可视化 AI 任务流水线

为什么写这个工具

最近在用 OpenCode 跑 AI 编码任务,很快遇到一个痛点:opencode run 一次只能跑一个 prompt,想做"先 plan 再 build"这种多步流水线,或者同时给几个项目分头派活,就得自己开一堆终端窗口手动串。

写 shell 脚本编排也能干,但看不到每个任务的实时日志、失败了不知道是哪一步、想停还得挨个找 PID。于是我用 Python 标准库撸了一个 tkinter GUI,把 opencode run 包成可视化任务队列,开源在 GitHub:

https://github.com/YiShan-X/opencode-task-orchestrator

零依赖 ------只用标准库,Python 3.8+ 直接跑,不需要 pip install 任何东西。

核心功能

  • 任务队列 GUI --- 新增 / 编辑 / 排序 / 单击启用切换;每个任务独立的工作目录、提示词、Agent(plan/build)和模型(模型列表自动从 opencode models 拉取)
  • 最多 6 路并发 --- 1 路就是顺序执行,共享同一个任务队列
  • 失败策略 --- 可选「某任务失败后中止后续任务」
  • 假成功防护 --- 三道闸门,见下文详解
  • 断点续跑 --- 状态实时持久化,重跑自动跳过已成功任务,中途关窗口也不丢进度
  • 定时启动 --- 每天定时 / 间隔循环(1-1440 分钟)/ 一次性定时三种模式,到点等同点击「开始执行」
  • 右键批量操作 --- Shift/Ctrl 多选后批量改状态、批量切模型
  • 日志分 tab --- 「全部」汇总 + 每个任务独立 tab,日志跨多次运行持续追加
  • 秒级停止 --- taskkill /T 杀整个进程树,看门狗保证 UI 不卡死
  • 安全退出 --- 运行中关窗需确认,退出前自动停止所有任务并保存状态

亮点:假成功防护

用 AI 跑自动化任务最烦的不是失败,是假成功------进程退出码 0,但实际啥也没干,或者 AI 反问一句"是否按此方案实施?"就停了。这个工具内置三道闸门:

  1. 等待确认语句检测 --- 扫描输出末尾,匹配"是否按此方案实施?""要不要我继续?"这类反问模式,命中即判失败
  2. expect_change 目录快照对比 --- 任务执行前后对目录做文件快照,一个字节都没变就判假成功
  3. verify_cmd 验收命令 --- 任务退出码 0 之后再跑一条用户自定义命令(比如 python -m py_compile main.py),非 0 判失败

三道闸门都可以按任务粒度开关,默认全开。

快速开始

bash 复制代码
# 前提:Python 3.8+,且 opencode CLI 在 PATH 中
python opencode_orchestrator.py
  1. 点 新增任务 --- 选项目目录、填提示词,可选 Agent 和模型
  2. 设置 并发数 (1-6)、失败后中止 、跳过已完成 开关
  3. 点 ▶ 开始执行 ,在 tab 里看各任务日志;■ 停止 立即终止全部进程
  4. 中断后重开,已成功的任务自动跳过;点 重置状态 全部重来

配置长这样

任务列表持久化为 JSON,可以直接手编也可以 GUI 操作:

json 复制代码
{
  "concurrency": 2,
  "stop_on_fail": true,
  "skip_done": true,
  "schedule": {
    "enabled": true,
    "mode": "daily",
    "time": "08:00",
    "fired": false
  },
  "tasks": [
    {
      "path": "D:/projects/app",
      "prompt": "分析项目结构,输出技术方案到 plan.md",
      "agent": "plan",
      "model": "deepseek-api/deepseek-v4-flash",
      "enabled": true
    },
    {
      "path": "D:/projects/app",
      "prompt": "按照 plan.md 中的方案执行重构",
      "agent": "build",
      "verify_cmd": "python -m py_compile main.py",
      "expect_change": true,
      "enabled": true
    }
  ]
}

任务间传上下文

每个 opencode run 都是独立会话,任务之间通过中间文件 传递产物:前一个任务输出 plan.md,后一个任务的提示词引用它------这就是 OpenCode 官方推荐的 plan → build 串联模式,GUI 只是把它可视化、可重跑化。

定时启动

支持三种模式,设置随配置持久化,重启自动恢复:

  • 每天定时 --- 到点触发,错过不补跑(适合上班前自动开跑)
  • 间隔循环 --- 1-1440 分钟,适合持续集成式巡检
  • 一次性定时 --- 指定日期时间,fire 一次后自动失效

一些实现细节

整个工具是单文件 tkinter 应用,约 1000 行,零依赖。几个值得说的点:

  • 线程模型 --- 工作线程绝不直接操作 tkinter 控件,所有 UI 更新走 queue.Queue,主线程每 100ms 排空一次。这是 tkinter 多线程的标准做法,避免了一堆诡异的竞态崩溃
  • 进程树终止 --- Windows 下用 taskkill /F /T /PID 杀整棵树,配合 CREATE_NO_WINDOW 避免弹控制台黑窗
  • 子进程输出解码 --- 统一 encoding="utf-8", errors="replace",遇到非 UTF-8 输出优雅降级而不是崩溃
  • 状态机约束 --- Task.__init__ 会把持久化的 status: "running" 强制归一化为 "pending"------配置文件不可能复活"执行中"状态,避免上次异常退出留下的脏状态误导 UI

适合谁

  • 已经在用 OpenCode CLI,想批量/定时跑任务的人
  • 想做"AI 流水线"但又不想引入 Airflow / Dagster 这种大家伙的人
  • 需要把 AI 编码任务接入 CI 之前,先在本机手动验证流程的人

项目地址

GitHub: https://github.com/YiShan-X/opencode-task-orchestrator

MIT 协议,欢迎 Star / Issue / PR。如果你也在用 OpenCode 做自动化,不妨试试,有问题随时提 Issue。

相关推荐
“AI国潮设计-小江”8 小时前
《Python+SDXL实战:用ControlNet精准控制“英歌舞翻糖吐司”构图,附批量生成脚本》
开发语言·人工智能·python·prompt·aigc
wenwen_chao8 小时前
Python学习与开发资源合集:实用技巧与工具推荐
python
for_ever_love__9 小时前
函数——参数、lambda、*args与作用域
python·函数·大模型开发·编程基础
东莞市云毅网络有限公司9 小时前
企业资料时效性判定:Last-Modified、正文日期与版本字段三路交叉
python·sqlite·自动化运维·geo·数据监测
Query*9 小时前
深入浅出LangGraph【一】_基础篇
python·ai·langchain
XiaoMaqqqq9 小时前
市面上正规的IP驱动产业新场景新工具哪家强
运维·python·网络协议·tcp/ip
熊猫钓鱼>_>9 小时前
Kotlin Multiplatform for OpenHarmony 实战:为 KMPNotifier 实现 OpenHarmony 本地通知引擎
kotlin·ai编程·harmonyos·鸿蒙·openharmony·适配·kmp
ShyanZh10 小时前
【Python3基础】19-Socket 与 TCP、UDP 编程
python·网络协议·tcp/ip·udp
惊讶的猫11 小时前
工具选对之后还不够:商城 Agent 的参数与权限治理
开发语言·python
天赐范式11 小时前
天赐范式第186天:让方差开始自洽——Bulmer效应的闭式验证
python·数字生命·天赐范式·动态运行时·遗传方差·bulmer效应