mcpField
T
TaskHub

TaskHub

本地服务
github.com/FelixMUrphy生产力04 天前更新

关于 TaskHub

TaskHub 是 Windows 托盘应用,用于集中查看和控制本机后台任务,也可接收 AI Agent 启动的作业状态。它通过本地 API、MCP 工具和命令行接入任务,并提供进度面板、通知及任务自定义控制。

主要功能

  1. 01汇总任务进度、日志与图表
  2. 02提供暂停、恢复和终止等控制
  3. 03通过 Windows 通知报告状态
  4. 04支持 Telegram 任务通知与按钮
  5. 05提供 MCP 工具、CLI 和本地 API
  6. 06检测任务停滞或进程丢失

适用场景

  1. 01跟踪长时间运行的构建或备份
  2. 02查看训练任务进度并调整参数
  3. 03接收 AI Agent 作业完成或故障通知
  4. 04从面板控制后台任务

MCP 相关

TaskHub 提供本机 MCP 服务 `taskhub mcp`,并可为 Claude Code 和 Codex 配置工具。Agent 可报告任务状态、更新进度、发送通知,并查询任务或接收控制命令。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

暂未收录安装方式

我们还没有获取到这个服务的安装包或远程地址,请按项目 README 中的说明安装。

代码仓库
安装包
mcpbtaskhub-mcp-win-x64.mcpb4.2.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

TaskHub

CI

集中查看和控制 Windows PC 上所有后台任务——训练任务、模拟、渲染、构建、备份,以及 AI Agent(Claude、Codex、ChatGPT)为你启动的脚本。

任何进程都可以通过一个轻量的本地 HTTP API 报告进度,并获得托盘图标、Windows 通知和弹出面板,其中包含实时图表、仪表盘和专属按钮(暂停、更改参数、保存快照、终止)。无需云服务或账户,仅限环回连接。

TaskHub 演示:一个渲染任务向面板报告进度和图表,在通知和 Telegram 中提问,并在手机上点选答案后继续

演示数据由脚本录制——一个渲染任务报告进度和图表,在通知和 Telegram 中询问“要上传到 NAS 吗?”,并在手机上点选答案后继续运行。

⬇ 下载最新的 setup.exe · 更新内容 · API 参考 · 隐私 · ❤ 赞助

正在阅读本文的 AI Agent? Claude Code / Codex:请使用 TaskHub 的 MCP 工具(task_start、notify,……)。如果看不到这些工具,请勿使用 curl——请让用户启用 TaskHub tools (MCP)(面板 → ⚙ 设置 → AI Agent),然后启动新会话。详情:API.md → AI Agent(请先阅读)。

为什么选择 TaskHub

  • 启动一项需要 6 小时的任务后,你想知道它何时完成、失败或卡住,而不必一直盯着控制台。
  • AI Agent 为你启动长时间运行的脚本;TaskHub 为它们提供一种有文档说明的方式来报告状态并接收你的指令(“降低学习率”“这个周期结束后停止”)。
  • 多项任务并行运行时,你想一眼掌握它们的情况。

功能

TaskHub 面板:包含一个渲染任务(进度、每帧耗时图表、VRAM 仪表盘)和一个训练任务(损失图表) - **托盘图标**带有进度环和活跃任务数量;颜色表示运行中/停滞/失败/已完成。 - **面板**(点击托盘图标):显示每个任务的进度、预计完成时间、状态、日志和组件 — 折线图/面积图/柱状图、仪表盘、带变化值的统计数据、LED 指示灯、键值列表、表格和文本。 - **任务自行声明控件**:按钮、数字/文本/选择输入框、确认操作、Shell 命令、打开文件/文件夹、优雅停止、暂停/恢复、强制终止。输入值通过长轮询返回进程。 - **任务链接**会在浏览器中打开;从 2.9 开始,文件/文件夹链接会在资源管理器中显示(绝不会运行),其地址会显示在链接提示中;Shell 命令会将输入值作为纯文本传递(不会从 `&`、`|` 等符号中执行额外命令)。 - **Windows 通知**:默认在任务完成/失败/停滞时通知;可按需发送开始、里程碑(纯文本)和日志通知;如果任务提出请求,通知中会显示任务的按钮和输入字段;提供实时进度通知;面板打开时保持安静。 - **一键使用 Claude Code 和 Codex**:为 Agent 提供 TaskHub 工具(MCP),并发送“已完成/需要你的许可”通知(钩子)——见[下文](#claude-code-and-codex-one-click)。 - **计划限额** *(从 3.1 开始,默认关闭)*:在面板中查看 Claude Code 和 Codex 对 5 小时限额和每周限额的使用情况;使用量达到 75% 和 90% 时发出警告——见[下文](#claude-code-and-codex-one-click)。 - **Telegram**:通过你自己的机器人在手机上接收相同的通知,并显示任务按钮;每个任务都有实时进度条,完成后显示图表;支持 `/tasks`、`/mute`(可设置为仅在你离开电脑时生效)——见 [Telegram](#telegram)。 - **GitHub Actions** *(从 2.9 开始)*:将仓库的工作流运行显示为任务 — 根据以往运行的常规时长估算进度和预计完成时间(没有历史运行时则按作业/步骤显示),显示失败步骤及其日志末尾,提供取消/重新运行按钮,以及制品和发布链接——见 [GitHub Actions](#github-actions)。 - **Runpod** *(从 2.9 开始)*:将 GPU Pod 显示为任务 — GPU、区域、镜像、$/h、已花费金额、运行时间、SSH 和 Jupyter 链接、负载图表;带有停止按钮的 *GPU 空闲*警告;余额和可用时长,以及余额不足警告;停止/启动/重启(只能在面板中删除,且需先输入 Pod 名称)——见 [Runpod](#runpod)。 - **Vast.ai** *(从 2.9 开始)*:将实例显示为任务 — 功能与 Runpod 相同(GPU、位置、镜像、$/h、已花费金额、运行时间、SSH、包含磁盘信息的负载图表、*GPU 空闲*、余额/额度和可用时长、停止/启动/重启;只能在面板中删除)——见 [Vast.ai](#vastai)。 - **AWS** *(从 3.1 开始;默认关闭;依据 AWS 文档构建,尚未在真实账户上验证)*:将 EC2 实例显示为任务,并提供 *遗忘提醒*;SageMaker 训练作业、AWS Batch 作业、本月费用和预测,以及 AWS Budgets,各自都有独立的开关。只读。[AWS](#aws)。 - **余额保护** *(从 2.9 开始,默认关闭)*:适用于 Runpod 和 Vast.ai — 达到你设定的余额阈值时发出警告(余额、$/h、剩余时间);达到停止阈值时,在发送包含 *立即停止*/*稍后提醒*选项的通知(Windows 和 Telegram)后,**停止**正在运行的机器(绝不删除)——见 [余额保护](#balance-guard)。 - **停滞检测**(心跳超时);进程退出时标记为 *丢失*。 - **便于 Agent 使用**:MCP 服务(`taskhub mcp`)、位于 PATH 中的原生 `taskhub` CLI、仅依赖 Python 标准库的客户端,以及供其他一切使用的纯 HTTP;`taskhub api` 会打印 Agent 所需的文档。 - **更新检查**:发布新版本时发送通知(每天一次;可在“设置”→“系统”中切换,并选择 *立即检查*;点击 *立即检查* 后会直接显示结果,即使你已安装最新版本也一样)。 - **类似 Windows 通知中心的面板**:停靠在屏幕右侧并占据全高,可滑入和滑出(关闭 Windows 动画时会立即切换);拖动左边缘调整宽度;可固定面板使其保持打开状态(*从 2.9.7 开始*,固定的面板会保持在屏幕边缘:最大化窗口会为其留出空间;如果在 ⚙ 中启用,其他窗口也会如此);带模糊效果的半透明背景和卡片(在 ⚙ 中设置 *面板透明度*;从 2.9 开始可设置 *卡片透明度*);明暗主题和强调色跟随 Windows(也可在 ⚙ 中设置)。*从 2.9.4 开始*,设置中会提示 Windows 何时未启用模糊效果(已开启节能模式,或在 Windows 设置中关闭了 *透明效果*),并提供指向该设置的链接。 - **设置** *(从 2.9 开始可在面板中访问;从 3.1 开始设置位于面板旁并以图标标签页显示)*:点击面板中的 ⚙(或托盘菜单中的 *设置*)即可在面板旁打开设置,每个区块都有一个图标标签页 — 外观、通知、Telegram、连接器、AI Agent、系统(开机自启、更新、数据文件夹、API 参考)、关于;Windows 11 风格的托盘菜单只保留快捷操作(打开面板、静音、设置、支持、退出)。面板固定时,只能通过设置自身的按钮将其关闭。 使用电池供电时(从 3.1 开始),面板和设置会立即显示和隐藏,不使用滑动动画。 - 支持 10 种 UI 语言(English、Українська、Español、Deutsch、Français、Italiano、Português、Polski、中文、日本語)。 - 按用户安装,无需管理员权限,也无需 .NET 运行时;开机自启可自动修复。 ## 快速开始 1. 运行 `TaskHub--setup.exe` → **Install**(选择文件夹、是否开机自启、PATH 和 Claude Code / Codex 选项)。 从 2.9 版本开始,安装窗口会保持打开,显示进度,完成后显示 *Open TaskHub*;卸载方式相同 (可选择 *Also delete my data*)。 2. 报告一项任务:
taskhub notify "Render" "finished in 42 min"
taskhub run --name "Build" -- cmake --build build -j 16     # wraps any command, parses % from its output
taskhub run --name "Shot 12" -- blender -b shot12.blend -s 1 -e 240 -a   # 2.9.2: frame, samples, overall %, s/frame

从 2.9.2 版本开始: taskhub run 可自动识别 Blender 的后台渲染输出(无需在 Blender 中安装插件):当前帧及其采样数、已知帧范围时的整体进度(通过 -s/-e 或 -f 指定)、每帧耗时图表、最后保存的文件以及渲染内存。即使渲染失败,Blender 也会以 0 退出,因此其中的 Error: 行会将任务标记为失败(taskhub run 以 1 退出;Blender 退出时打印的内存泄漏提示不算)。视频输出(FFmpeg)和保存为单独文件的立体视图会按帧计数(2.9.3)。在此帧后停止(面板 / 通知)会在当前帧保存并开始下一帧后结束 Blender;这样停止或发生崩溃后,任务会告知从何处继续,taskhub run 会打印相同命令,并将 -s 设为下一帧。--preset none 可关闭此功能。

from taskhub_client import Task, W, C          # stdlib only; installed next to taskhub.exe

with Task("Train", total=100, unit="epochs", source="codex",
          widgets=[W.chart("loss", "Loss", series=["train", "val"]), W.gauge("vram", "VRAM", max=24, unit="GB")],
          controls=[C.signal("lr", "Set LR", input=C.number(default=1e-3))], pausable=True) as t:
    t.on("lr", lambda v: set_lr(v))
    for e in range(100):
        t.wait_if_paused()
        if t.stop_requested: break
        t.progress(e + 1, status=f"epoch {e+1}", widgets={"loss": {"train": tl, "val": vl}, "vram": mem})
curl -s -X POST localhost:47800/api/notify -H "X-TaskHub: 1" -d '{"title":"Done","message":"backup ok"}'

使用 AI Agent——Claude Code 和 Codex:启用 TaskHub tools (MCP)(见下一节),无需其他操作。对于其他 Agent(ChatGPT、脚本或任何带有 shell 的工具),在 AGENTS.md / 自定义指令中添加一行:

对于任何超过一分钟的任务,请将其报告给 TaskHub(taskhub api 会打印文档;使用 taskhub run --name ... -- <cmd> 包装命令)。

Claude Code 和 Codex:一键设置

设置对话框(以及之后的“设置” → AI Agent)中,每个 Agent 都有独立选项。从 3.1 版本起,如果你的电脑上正在使用某个 Agent,且你尚未选择,面板就会显示一张卡片,直到你作出选择;同时会显示一条通知,并且在你点击 连接 之前不会写入任何内容:

选项你将获得什么TaskHub 写入位置
通知(钩子)Agent 完成回复或需要你授权时显示一条 toast 通知Claude Code:~/.claude/settings.json · Codex:~/.codex/hooks.json
计划限额(从 3.1 版本起,默认关闭;需在“设置” → AI Agent 中为每个 Agent 开启)面板中显示 5 小时限额和每周限额的使用量;达到 75% 时变为黄色并显示警告,达到 90% 时变为红色并显示警告Claude Code:~/.claude/settings.json(statusLine)· Codex:不写入任何内容,TaskHub 会直接向它查询
TaskHub 工具(MCP)Agent 可使用 notify、task_start/update/finish、task_commands、task_wait(从 2.9.2 版本起)、task_list 工具,并会自动在面板中显示其长时间运行的任务Claude Code:~/.claude.json · Codex:~/.codex/config.toml

TaskHub 只会添加自己的条目,卸载时也只会移除自己的条目(商店版:见下文),并保留其他所有内容(原始文件备份为: *.taskhub.bak)。之后在 Agent 中需要执行的操作:

  • Claude Code — 开始新的本地会话(桌面应用 → Code 选项卡 → 环境选择 Local,也可使用 CLI 或 VS Code)。 /mcp 应显示 taskhub 已连接。云端会话运行在 Anthropic 的服务器上,无法访问你电脑上的 TaskHub。
  • 计划限额 — 需要 Pro、Max 或 Ultra 计划;数字会在 Claude Code 的下一条回复后显示,并且只会在会话运行期间更新,因此旧读数会标明其时间。 你自己的状态栏会照常工作。如果你没有设置状态栏,Claude Code 会显示一个空状态栏,并隐藏 esc to interrupt 等提示。详情请见:API.md。
  • Codex 的计划限额 — Codex 运行期间,TaskHub 每 10 分钟向 Codex 查询一次数字,不会发起模型请求。此功能依赖 Codex 开发者称为实验性的部分,因此 Codex 更新可能会使其失效:届时数字只会变旧,其他功能仍可正常使用。如果没有可显示的数字,面板会说明原因(未在 PATH 中找到、未登录或无法读取)。详情请见:API.md。
  • Codex — 重启 Codex。钩子:Codex → Settings → Hooks → Trust all(Codex 会询问一次是否信任新钩子)。 MCP:taskhub 服务应出现在 Codex 的 MCP 服务列表中。

脚本设置:TaskHubHost.exe --integrations claude=on codex=on claude-mcp=on codex-mcp=off。手动设置: API.md → Claude Code 钩子、Codex 钩子、MCP 服务。

Telegram

设置 → Telegram:使用 @BotFather(/newbot)创建机器人,粘贴其令牌,点击 Connect,用手机扫描二维码(或在此电脑上打开链接),然后点击 Start(需与机器人进行私聊: 无法关联群组,因为每位成员都能点击任务按钮)。所有设置都可直接在设置页面完成 (从 2.9.4 开始;此前在独立窗口中完成)。若要稍后关联另一个账户(例如手机上的账户),点击 New link;Disconnect 会从此电脑移除机器人令牌。之后,TaskHub 显示的每条通知也会发送到该聊天中(只有该聊天能与机器人对话);任务通知按钮会变成内联按钮——包括 选项和是/否;对于数字/文本输入:机器人会询问数值,你的回复会发送到任务——点击按钮后 会返回任务。有进度的任务会发送一条静默消息,其中包含进度条、预计剩余时间、状态和任务 按钮,并在原消息中更新(每次更新都不会发送新消息);任务完成后,图表会以一张图片的形式发送 (选项 Progress and charts,telegram_progress)。命令:/tasks、/mute、/unmute。选项:仅在你离开电脑时发送(5 分钟内没有键盘/鼠标操作,config.json 中的 telegram_away_minutes)。机器人令牌 保存在 Windows Credential Manager 中(2.9;此前保存在 config.json 中;如果 Credential Manager 不可用,则仍保存在 config.json 中,并会在设置中显示警告);消息会从你的电脑直接发送到 Telegram 的 Bot API。 从 2.9 开始,TaskHub 会遵循 Telegram 的发送节奏(大约每秒一条消息;遇到 Too many requests 后,则按 Telegram 要求等待),而不是丢弃消息;长文本也会缩短,确保始终能够送达。

GitHub Actions

从 2.9 版本开始;默认关闭,需手动开启。 设置 → Connectors → GitHub Actions(从 2.9.6 开始,所有操作都可在设置页面完成):列出存储库(owner/repo)并授权访问——可以使用你自己的 细粒度令牌,将权限限制在这些存储库(Actions:读取和 写入,Contents:只读,Metadata:只读;保存在 Windows Credential Manager 中,绝不会写入 config.json),也可以使用 Git Credential Manager 已保存的令牌(权限较广:可访问你的所有存储库)。你的工作流保持不变。每次运行都会成为一个 任务,包含存储库、工作流、分支/标签、提交和操作者;失败时始终会发送通知(Windows 和 Telegram),成功时 则可按需通知。TaskHub 只与 api.github.com 通信;可选的日志尾部内容通过 GitHub 提供的 一次性链接从其日志存储中获取,不会使用令牌。令牌到期前一周会收到通知。等待 审批的运行(例如来自 fork 的运行)会显示 Waiting for approval on GitHub,并在获批后继续跟进;重命名后的存储库会继续跟进并报告(repository moved to …);达到 GitHub 的速率限制时会暂停轮询(2.9)。详情: API.md → Connectors。 *从 2.9.4 版本开始:*拉取请求,仅只读(同一窗口中的两个开关,默认都关闭):等待你审核的拉取请求(令牌可查看的任何存储库;细粒度令牌只能查看自己的存储库和公开存储库),以及所列存储库中尚未关闭的 Dependabot 拉取请求(令牌还需要 Pull requests: 只读 权限)。每项都会成为一个任务,包含链接,并在出现时发送通知;当其不再出现在列表中时,任务会静默结束(Merged、Closed without merging、No longer waiting for your review)。不会合并、批准或评论任何内容。 如何获取令牌:docs/keys/github.md(逐步说明、最低权限、撤销方式;українською)。

Runpod

从版本 2.9 开始;默认关闭,需手动开启。 Settings → Connectors → Runpod:粘贴从 Runpod 控制台获取的 API 密钥(Settings → API Keys;密钥保存在 Windows Credential Manager 中,不会存入 config.json;关闭连接器会保留密钥,点击 Remove 则会删除)。只读密钥就足以查看:TaskHub 会检查一次(之后每天检查一次)该密钥是否可执行操作,只有可以执行操作时才显示 Stop / Start / Restart / Delete 按钮。每个 Pod 都是一个任务(rp-<pod id>):运行或启动时为活动状态,停止时状态为已完成的 stopped,删除时状态为已完成的 terminated;还会显示 GPU(类型 × 数量)、区域、镜像、每小时价格、迄今花费(≈,来自 Runpod 的账单)、运行时间、SSH 命令,以及通过 Runpod 代理访问其 HTTP 端口的 https 链接(Jupyter 使用 8888 端口);GPU / VRAM 和 CPU / RAM 图表则来自 TaskHub 自行进行的轮询(每 30 秒一次)。当 Pod 的所有 GPU 连续 30 分钟低于 5 %(idle_minutes、idle_util)时,TaskHub 会发出 GPU idle 警告——在 Windows 和 Telegram 中均会显示,并附带 Stop 按钮。Settings 和 Pod 页面会显示余额和可用时长(余额 ÷ 当前每小时花费);低于 12 小时(low_runway_hours,或低于 low_balance $)时,TaskHub 会发出一次警告——余额降至 $0 时,Runpod 会停止 Pod,并终止没有网络卷的 Pod。停止、启动和重启操作都需要确认(也可以通过通知和 Telegram 停止和重启);删除只能在面板中进行,且必须输入 Pod 名称(绝不会通过 HTTP API 删除)。TaskHub 只与 api.runpod.io 通信:使用 REST v2 管理 Pod 和账单,并使用 GraphQL 查询余额(graphql_balance 默认开启;关闭后将跳过余额查询)。详情:API.md → Connectors。 如何获取密钥: docs/keys/runpod.md(分步说明、最低权限、撤销方法;українською)。

Vast.ai

从版本 2.9 开始;默认关闭,需手动开启。 Settings → Connectors → Vast.ai:粘贴从 Vast.ai 控制台获取的 API 密钥(其 API keys 页面;拥有 instance_read、user_read 和 billing_read 权限的密钥就足以查看,执行操作则需要 instance_write 权限)。密钥保存在 Windows Credential Manager 中,不会存入 config.json;关闭连接器会保留密钥,点击 Remove 则会删除。与 Runpod 一样,TaskHub 会检查一次(之后每天检查一次)该密钥是否可执行操作,只有可以执行操作时才显示 Stop / Start / Reboot / Delete 按钮。每个实例都是一个任务(va-<id>,以其标签命名):运行或启动时为活动状态,停止时状态为已完成的 stopped,销毁时状态为已完成的 terminated;还会显示 GPU(类型 × 数量)、位置、镜像、每小时价格、迄今花费(≈,来自 Vast.ai 过去 30 天的费用)、运行时间、SSH 命令、Vast.ai 控制台链接,以及 GPU / VRAM 和 CPU / RAM / 磁盘图表;图表数据来自 TaskHub 自行进行的轮询(Vast.ai 经常不报告负载,此时图表会保持空白)。GPU idle 和低余额警告的工作方式与 Runpod 相同。Vast.ai 会报告 balance 和 credit;TaskHub 会显示两者,并在计算可用时长时将 credit 计入余额——余额降至 $0 时,Vast.ai 会停止实例(已停止的实例仍需支付存储费用);如果没有付款方式,这些实例会被安排删除。若 GPU 已被主机另行出租,启动操作可能会处于 Scheduling 状态等待;TaskHub 会说明这一情况。TaskHub 只与 console.vast.ai 通信。详情:API.md → Connectors。 如何获取密钥: docs/keys/vastai.md(分步说明、最低权限、撤销方法;українською)。

AWS

从 3.1 版开始提供;默认关闭,需手动启用。基于 AWS 文档构建,并通过模拟器测试,尚未在真实账户中测试。 Settings → Connectors → AWS:粘贴具有只读策略的专用 IAM 用户的访问密钥 (获取方法)。TaskHub 不会在你的账户中启动、停止或更改任何内容。 EC2 实例会变成任务,并显示其状态和已运行时长:可涵盖账户中已启用的所有 Region,也可仅涵盖你列出的 Region。运行时间超过你所设上限的实例(默认为 72 小时,设为 0 即关闭)会收到 忘记了? 提醒,并附带一个按钮,供你确认哪些实例本就应该运行。 以下每项功能都有独立开关和权限:SageMaker 训练任务(阶段和时长;SageMaker 不会报告常规训练的百分比,因此 TaskHub 不会显示)、AWS Batch 任务(数组任务的实际进度)、本月费用和预测(来自 Cost Explorer;AWS 每次请求收费 $0.01,TaskHub 每 8 小时最多发起 2 次请求,每月约 $1.80,重启不会再次收费)以及 AWS Budgets(预算超出上限时发送一条通知)。 详情:API.md → Connectors。 如何获取密钥: docs/keys/aws.md(分步说明、最低权限、撤销方法;українською)。

余额保护

从 2.9 版本开始;默认关闭,需手动开启。“设置” → 连接器 → Runpod / Vast.ai → 余额过低时自动停止。 每个提供商都有两个以 $ 为单位的阈值:警告(默认 $10)和停止(默认 $2;警告阈值必须高于停止阈值)。

  • 达到警告阈值时,TaskHub 会警告一次(Windows 通知;如果已连接 Telegram,也会通过 Telegram 通知):余额、当前每小时支出,以及距离达到停止阈值还有多久。余额回升后才会再次警告。
  • 达到停止阈值时,TaskHub 会通知你即将停止正在运行的机器,并提供立即停止和延后 N 分钟按钮(显示在通知、Telegram 和面板的余额保护卡片中)。如果没有回复,等待回复的时间用完后就会停止机器(默认 10 分钟;但绝不会晚于按当前支出速度余额将降至 $0 的时刻;延后时间也受同样限制,并会显示截止时间)。充值使余额高于停止阈值后,待执行的停止操作将取消。
  • **只停止机器——TaskHub 绝不会删除、终止或销毁机器。**同一设置中标记为永不自动停止的机器不会被停止。每次停止都会确认结果(Runpod:EXITED;Vast.ai:不再运行);无法停止的机器会报告为失败,绝不会报告为已停止。
  • 如果无法读取余额(无网络、服务中断、密钥已撤销),TaskHub 会警告一次;到达截止时间时,不会停止任何机器(“自动停止已暂缓,请手动检查”),直到能够再次读取余额。只读密钥只能用于警告——设置中会注明。对于提供商不会在余额降至 $0 时停止机器的账户也是如此(Runpod 后付费账户;Vast.ai 中绑定了会自动扣款的银行卡的账户):余额保护仅会发出警告。
  • 立即停止会先请求确认。停止失败的机器会在下次读取余额时重试。TaskHub 重启后,待执行的停止操作仍会保留。启用余额保护后,原有的余额过低警告仍会生效(不会在余额保护阈值处重复警告)。
  • 从 2.9.3 版本开始:GPU 空闲时自动停止——同一设置中的GPU 空闲时停止,分钟数(0 = 关闭,默认值),即使余额保护关闭也可使用。机器运行期间,如果其所有 GPU 持续空闲达到设定时长,就会收到同样的停止通知,并可选择立即停止 / 延后;GPU 再次繁忙时,待执行的停止操作会取消;到达截止时间时,只有 GPU 仍处于空闲状态才会停止(必须有近期读数,且空闲时间至少达到当前设置;负载未知时不会停止)。标记为永不自动停止的机器不会被停止;如果余额保护和 GPU 空闲停止同时触发,则由余额保护停止操作优先。
  • 停止后,TaskHub 会说明停止了什么,以及停止期间的存储费用——约数,以提供商价目表为准:Runpod——容器磁盘会被清除且不收费,卷磁盘在停止期间每月收费 $0.20 / GB,网络卷仍按每月 $0.07 / GB 收费(从 2.9.1 版本开始,其容量会从 Runpod 读取;Runpod 定价,存储类型);Vast.ai——实例存储价格 × 磁盘容量(因主机而异;Vast.ai 定价)。设置中会显示预测(“按当前支出速度,余额将在……达到停止阈值”)和最近的停止记录;每次停止的记录(时间、机器、原因、当前累计支出、结果、存储费用约数)都会保存在数据文件夹中的 guard_log.json 内(GET /api/guard/log)。
  • Runpod 会分批记账:余额不会持续变化,而是每隔几分钟扣减一次(测试中约每 10 分钟一次),因此可能会比达到停止阈值晚最多约 10 分钟;请留出一定余量来设置阈值(设置中会提示)。 详情:API.md → 余额保护。

安装详情

安装对话框默认安装到 %LOCALAPPDATA%\Programs\TaskHub(也可以选择其他文件夹),解压 taskhub CLI、taskhub_client.py 和 API.md,注册 taskhub:// 和一个 应用和功能 条目,并且(从 2.9 起) 将 TaskHub 添加到开始菜单。覆盖现有安装时,安装程序会显示已安装的版本和文件夹(版本从已安装的 exe 读取),并提供 更新、重新安装(相同版本)或安装较旧版本的选项,同时保留文件夹、自动启动和 PATH 设置。也可以选择 运行但不安装。

  • 静默安装:TaskHub-<version>-setup.exe --install [--dir PATH] [--no-autostart] [--no-path] [--claude|--no-claude] [--codex|--no-codex] [--claude-mcp|--no-claude-mcp] [--codex-mcp|--no-codex-mcp] --quiet(未指定的 Agent 选项保持不变)
  • 卸载:应用和功能 → TaskHub,或 TaskHubHost.exe --uninstall [--quiet] [--purge] (--purge 还会删除 %APPDATA%\TaskHub 中的数据,以及从 2.9 起,TaskHub 保存在 Windows 凭据管理器中的 Telegram 令牌和 GitHub、Runpod、Vast.ai 及 AWS 密钥;普通卸载会保留这些内容,以便重新安装)。还会删除 TaskHub 在 Claude Code / Codex 设置中的条目。
  • 如果自动启动条目被删除或更改,自动启动会自行恢复,除非你在“设置” → 系统 中将其关闭。 从 2.9 起,在“任务管理器”/“设置” → 应用 → 启动 中将其关闭也会生效(此时 TaskHub 的开关会显示为关闭); 2.9 之前则会重新开启。
  • 安装和卸载前,都会先请求正在运行的 TaskHub 退出(它会保存任务);只有当它在几秒钟内未退出时,才会将其结束 (2.9 起;此前会立即结束,包括结束它打开的所有内容)。
  • 系统要求:Windows 10 1809+ / 11 x64(Microsoft Store 版:从 2.9 起要求 Windows 10 2004+)、WebView2 运行时(当前 Windows 已预装)。 从 2.9 起,如果缺少运行时,TaskHub 会提示这一点(并提供 Microsoft 的下载链接);如果 WebView2 崩溃,面板会自动恢复。如果 Windows 已关闭 TaskHub 的通知功能,“设置” → 通知 会显示警告,并提供打开 Windows 设置的按钮。
  • 端口 47800,仅限 127.0.0.1,采用 CSRF 标头 + Host/Origin 检查;可选 bearer 令牌(config.json 中的 "token")。

更新:已安装的 hub 每天会在 GitHub 上查询最新版本(向 api.github.com 发送一次请求,不会下载或安装任何内容;从 2.9.5 起,打开设置页面时,如果上次检查距今超过 15 分钟,也会进行检查),并在有更新版本时显示通知;“设置” → 系统 中提供 立即检查 和 每日检查 开关(config.json 中的 "update_check": false)。运行新的 setup.exe 即可更新。

如果出现问题,数据文件夹中的 taskhub.log 会记录发生的情况。从 3.1 起,在 config.json 中设置 "log_level": "debug" 可记录更多信息,包括通知文本和任务名称;不会向任何地方发送内容,因此分享前请先检查日志。

通知显示时长:在 config.json 中设置 toast_seconds / toast_seconds_interactive(4 秒 / 8 秒);之后通知会留在通知中心。通知集中出现时(2.9 起):每分钟最多显示 toast_rate 条通知(10;0 = 不限),每个任务每隔 toast_task_gap 秒最多显示一条(2);其余通知会合并到最新的一条中(“+N 条更多通知”),弹出通知和 Telegram 通知均适用。

从源代码构建

build.cmd(需要 .NET 10 SDK)→ dist\TaskHub-<version>-setup.exe(单个独立文件;先构建 CLI 并将其嵌入),以及用于开发的 app\;build.cmd beta 使用相同版本,但会显示完整日志,绝不会用于发布。源代码:src\Host(Kestrel HTTP API、WinForms 托盘、WebView2 面板、WinRT 通知;连接器位于 src\Host\Connectors\<Name>\,请参阅其中的 README)、src\Cli、ui\(面板页面:index.html + CSS / JS 部件,由中心组合在一起)、i18n\(翻译,10 种语言)、clients\python。

Microsoft Store 版:运行 build.cmd 后,执行 packaging\build-msix.ps1 → dist\TaskHub-<version>.msix(未签名;由 Store 签名;-Name / -Publisher / -PublisherDisplay 的值来自 Partner Center)。代码相同:在安装包中,TaskHub 不会自行安装或检查更新;自动启动、taskhub:// 和 taskhub 命令由 packaging\AppxManifest.xml 提供。-Register 会将构建文件夹注册为安装包以供测试(开发人员模式)。 同一时间只能使用一个版本:Store 版会提示移除通过安装程序 exe 安装的版本(或者选择“Keep both”时,关闭自身的自动启动),安装程序 exe 则会提示替换 Store 版。两者使用相同的数据文件夹和 Agent 连接;安装包会写入实际的 %APPDATA% 和 HKCU(unvirtualizedResources)。 Windows 在卸载安装包时不会运行任何内容,因此 Store 版会将 Agent 指向 %LOCALAPPDATA%\TaskHub\bin 中的 taskhub.exe 副本(store.json 中记录了安装包名称):安装包卸载后,如果 Agent 启动该副本,它会从 Agent 的设置中移除 TaskHub 的条目(该副本会保留;安装程序 exe 版则会在启动时将其移除)。

测试:tests\run_tests.cmd 会启动一个隔离的中心(端口 47899、临时数据、无托盘、无通知),并运行 api_test.py(API 契约、Agent 钩子、CLI)、validation_test.py(输入验证:非有限数值、小组件属性、控件值、Shell 控件)、parallel_test.py(8 个并发工作线程 + 通知突发)、integration_test.py(Claude Code / Codex 设置编辑,在临时主目录中)、install_test.py(在临时文件夹中安装 / 卸载)、mcp_test.py(taskhub mcp)、telegram_test.py(通过模拟 Bot API 测试 Telegram 桥接)、github_test.py、runpod_test.py、vastai_test.py 和 guard_test.py(针对模拟 API 测试连接器和余额保护)、aws_sigv4_test.py 和 aws_test.py(使用 AWS 测试套件测试 AWS 签名器,使用模拟器测试连接器)、limits_test.py 和 codex_limits_test.py(计划限额)、payload_bounds_test.py(本地进程可提交的内容)、hooks_offer_test.py 和 hook_form_test.py(Agent 钩子)、log_test.py(日志级别、屏蔽、轮换)。 每次推送都会在 GitHub Actions(.github/workflows/ci.yml,Windows 运行器)上运行构建和这些测试;推送与 Settings.Version、build.cmd 和两个 .csproj 中的版本一致的 v<version> 标签,也会发布包含安装程序 exe 及其 SHA-256 的版本。 tests\demo_long.py 是一个针对主中心运行、约 20 分钟的交互式演示。tools\demo\record.py 会在隔离的中心上录制本页顶部的演示(MP4、GIF 和供 Store 使用的 1920×1080 静帧),使用模拟数据和模拟 Telegram 机器人:在运行 build.cmd 后执行 python tools\demo\record.py(需要 Microsoft Edge 和 ffmpeg)。 可以在不进行任何更改的情况下检查安装和卸载窗口:设置 TASKHUB_SETUP_DRYRUN=1,然后运行安装程序 exe(或 --uninstall)——只会显示每个步骤。

中心命令行:TaskHubHost.exe [--port N] [--data DIR] [--install|--uninstall [--quiet] [--purge] | --status | --panel [ID] | --integrations [claude|codex|claude-mcp|codex-mcp|claude-limits|codex-limits=on|off ...] | --no-tray]。exe 同目录下的 TaskHubHost.settings.json({"port": 47801, "data": "..."})会运行一个独立的第二实例。

支持

TaskHub 免费使用。如果它为你节省了时间,赞助有助于维护项目, 也能告诉我接下来哪些想法值得实现。Bug 报告和功能请求: Issues。

许可证

PolyForm Shield 1.0.0 — 源码可用:可出于任何目的免费使用、修改和分享,包括在工作中使用,但不得提供与 TaskHub 竞争的产品(例如重新打包或转售)。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。