AI代理工作流管理系统

Subconductor是一个持久化状态机和通知系统,通过Model Context Protocol (MCP)为AI代理管理复杂的多步骤工作流,防止上下文漂移并提供通知功能。

  • by PaulBenchea
  • TypeScript
  • 本地部署
  • 2 星标
  • 更新于
在 GitHub 查看 PaulBenchea/mcp-subconductor

使用说明

再分导线

一个持久状态机和通知系统,用于AI代理通过模型上下文协议(MCP)管理复杂的多步骤工作流。

子行为人通过在多个独立的检查表中维护项目进度的单一事实来源来防止“上下文漂移”。它将这些存储在结构化的 .subconductor/checklists/ 目录以及全局 .subconductor/checklists.md 索引文件。它通过一个在长时间运行的任务或检查表完成期间触发的强大通知系统向用户提供信息。这允许代理在多个会话和并行工作流中“记住”其确切状态、已完成的里程碑和剩余的阻塞。

快速开始

使用以下命令将子导体添加到您的MCP兼容主机(例如Claude Desktop或Gemini) npx:

"subconductor": {
  "command": "npx",
  "args": ["-y", "@psno/subconductor"]
}

配置标志

您可以使用以下标志自定义服务器行为:

  • --disable-batch (或 -b):禁用批处理操作工具(get_pending_tasks, mark_tasks_done, unmark_tasks, add_tasks, remove_tasks).
  • --disable-alerts (或 -a):禁用所有桌面通知和 alert 工具。

包含的工具

init_checklist

初始化新的任务清单。这会自动创建一个专用文件夹,并在中央索引中注册检查表。

  • 参数:
    • tasks (array):要执行的任务列表。可以是字符串或对象 name 以及一个可选 note.
    • goal (string):工作流的高级目标。
    • columns (string[],可选):任务表的自定义列。 Status, ID,以及 Name 总是包括在内。
  • 效果:创建嵌套 .subconductor/checklists/<goal-slug>/checklist.md 文件并更新中的活动指针 .subconductor/checklists.md.

activate_checklist

将活动上下文切换到另一个先前初始化的检查表。

  • 参数:
    • checklistName (string):索引中的数字ID,或清单目标名称的部分字符串匹配。
  • 效果:更新 .subconductor/checklists.md 将目标清单标记为 Active 以及所有其他 Idle.

archive_checklist

将检查表移动到存档目录以保持活动索引的干净。

  • 参数:
    • checklistIdentifier (string):索引中的数字ID,或清单目标名称的部分字符串匹配。
  • 效果:将检查表文件夹移动到 .subconductor/archive/checklists/ 并将其状态更新为 Archived 在索引表中。

get_pending_task

从活动检查表中检索下一个未完成的任务。

  • 效果:返回带有ID前缀的第一个任务(例如。, (#1) Task Name).退货 DONE 如果所有任务都已完成。

get_pending_tasks

从活动检查表中检索一批未完成的任务(需要启用批处理工具)。

  • 参数:
    • count (number):要检索的待处理任务数(默认值:5)。
  • 效果:返回带有ID前缀的任务列表或 DONE.

add_task

动态地将新任务附加到活动检查表中。

  • 参数:
    • name (string):任务的名称。
    • note (string,可选):可选注释。
  • 效果:追加任务,自动分配一个单调不可变的ID,并更新完成标头。

add_tasks

动态地将多个新任务附加到活动检查表中。

  • 参数:
    • tasks (array):要添加的任务列表(对象 name 可选 note).
  • 效果:按顺序附加所有任务,自动分配不可变的ID。

remove_task

从活动清单中删除任务。

  • 参数:
    • task (string):任务ID(例如“1”)或完整任务名称。
  • 效果:删除任务行并更新完成标题。注意:现有的任务ID保持不变,不会被移动。

remove_tasks

在单个批处理操作中从活动检查表中删除多个任务。

  • 参数:
    • tasks (array):要删除的任务ID或名称列表。
  • 效果:安全删除所有指定的任务行。

mark_task_done

在活动检查表中将特定任务的状态更新为已完成。

  • 参数:
    • task (string):任务ID(例如“1”)或完整任务名称。
    • note (字符串,可选):附加注释或状态消息。
  • 效果:将状态更新为 Done 并将注释记录在 Notes 列。在活动检查表中的最终任务完成后自动触发通知。

mark_tasks_done

在活动检查表中将多个任务的状态更新为已完成。

  • 参数:
    • tasks (array):包含以下内容的对象列表 name (ID或任务名称)和可选 note.
  • 效果:将所有指定任务标记为 Done 并评估整体检查表的完成情况。

unmark_task

将已完成的任务恢复为挂起状态。

  • 参数:
    • task (string):任务ID(例如“1”)或完整任务名称。
  • 效果:将状态恢复为 Pending (空闲),清除相关注释,并回滚完成目标标题。

unmark_tasks

在单个批处理操作中将多个已完成的任务恢复为挂起状态。

  • 参数:
    • tasks (array):要取消标记的任务ID或名称列表。
  • 效果:将所有指定任务还原为 Pending (空闲)。

alert

发送具有声音和图标支持的系统级通知。

  • 参数:
    • title (string):通知的标题。
    • message (string):消息正文。
    • status ('info'|'warn'|'error'):严重性级别(默认值:'info')。
  • 效果:触发具有特定状态图标和声音的桌面通知。

资源

更新日志 -查看最新更改。

许可和归属

该项目根据 Apache许可证2.0.

重要归因要求: 根据Apache许可证第4(d)节,如果您修改此软件或基于此代码库构建新功能,您 必须 保留归因于 保罗·本西亚 作为原作者。请参考 通知 文件以获取具体细节。


使用模型上下文协议构建。