概述
安装
内容详情
替代品
什么是Task Graph MCP Server?
Task Graph MCP Server是一个专门为AI智能体设计的任务协调和工作流管理系统。它通过结构化的工作流程帮助多个AI智能体协同完成复杂任务,避免常见的协调问题,如上下文丢失、步骤跳过和工作冲突。如何使用Task Graph MCP Server?
使用Task Graph非常简单:1) 安装MCP服务器,2) 配置到您的AI客户端(如Claude Code),3) 智能体连接并开始协作。系统提供预置的工作流模板(如solo、swarm、relay等),智能体可以自动获取任务、协调文件访问并跟踪进度。适用场景
Task Graph特别适合以下场景: - 多智能体协作开发项目 - 复杂任务分解和执行 - 需要质量保证的自动化流程 - 团队工作流管理和协调 - 实验性AI工作流编排主要功能
如何使用
使用案例
常见问题
相关资源
安装
{
"mcpServers": {
"task-graph": {
"command": "task-graph-mcp"
}
}
}
{
"mcpServers": {
"task-graph": {
"command": "task-graph-mcp",
"args": []
}
}
}🚀 任务图MCP服务器
真正有效的代理任务工作流。
当你让AI代理处理复杂任务时,问题往往接踵而至。代理会丢失上下文、跳过步骤、忘记协调。任务图(Task Graph)通过结构化工作流解决了这些问题:通过阶段引导工作、使用提示进行自动指导、设置关卡确保质量,并为多代理场景提供协调原语 —— 这一切都通过模型上下文协议(Model Context Protocol)实现。
🚀 快速开始
# 安装
cargo install task-graph-mcp
# 添加到你的MCP客户端(如Claude Code等)
{
"mcpServers": {
"task-graph": {
"command": "task-graph-mcp"
}
}
}
# 代理工作流(如果省略worker_id,将自动生成)
connect(workflow="swarm", tags=["code"]) → "bright-lunar-swift-fox"
list_tasks(ready=true, agent="bright-lunar-swift-fox") → 可认领的工作
claim(worker_id="bright-lunar-swift-fox", task="add-auth") → 你已认领该任务
update(..., phase="implement") → 进入实现阶段
thinking(agent="bright-lunar-swift-fox", thought="Adding JWT...") → 其他代理可见
update(worker_id="bright-lunar-swift-fox", task="add-auth",
status="completed",
attachments=[{type:"commit", content:"abc123"}]) → 任务完成
✨ 主要特性
为何选择任务图?
问题所在:你有需要结构化执行的复杂任务。可能是单个代理按阶段工作,也可能是多个代理并行协调。如果没有合适的工作流,代理会迷失方向、跳过步骤,导致结果不一致。
你将获得:
- 结构化工作流 —— 阶段(探索、实现、审查、测试)引导代理完成工作。过渡提示在每个步骤提供自动指导。
- 质量关卡 —— 要求测试通过、代码提交或审查完成后才能进行过渡。自动执行你的标准。
- 即用型拓扑结构 —— 为单人工作、并行群体、专家接力或分层委派预构建的工作流。立即开始,后续自定义。
- 可配置工作流 —— 定义你自己的状态、阶段、提示和关卡。匹配你的流程,而非我们的。
- 多代理协调 —— 咨询文件锁、有向无环图(DAG)依赖关系、原子声明。不再有冲突或重复工作。
- 令牌高效 —— 专为大语言模型(LLM)上下文限制设计。紧凑查询、最少往返次数、结构化输出。
- 内置核算功能 —— 跟踪每个任务的令牌使用量、成本和时间。确切了解你的代理花费情况。
- 零基础设施 —— 使用WAL模式的SQLite。无需运行数据库服务器。只需指定一个文件。
特性详情
| 特性 | 描述 |
|---|---|
| 任务层次结构 | 具有父子关系的无限嵌套 |
| DAG依赖关系 | 带有循环检测的类型化边(阻塞、跟随、包含) |
| 阶段 | 对工作类型进行分类(探索、实现、审查、测试、部署) |
| 工作流 | 命名的工作流拓扑结构(单人、群体、接力、分层) |
| 过渡提示 | 状态/阶段更改时的自动代理指导 |
| 关卡 | 状态/阶段过渡的退出要求 |
| 原子声明 | 带有限制和基于标签路由的严格锁定 |
| 文件协调 | 带有原因和更改轮询的咨询锁 |
| 成本跟踪 | 每个任务的令牌使用量和美元成本 |
| 时间跟踪 | 从状态转换自动累积时间 |
| 实时状态 | 其他代理可见的实时“当前思考” |
| 全文搜索 | 基于FTS5的跨任务和附件搜索 |
| 附件 | 内联内容、文件引用或媒体存储 |
| 代理反馈 | 带有分类反馈的代理间通信(取决于配置) |
| 动态覆盖 | 通过添加/删除覆盖工具进行运行时工作流自定义 |
📦 安装指南
从crates.io安装(推荐)
cargo install task-graph-mcp
预构建二进制文件
从GitHub Releases下载适合你平台的最新版本:
| 平台 | 下载链接 |
|---|---|
| Linux (x64) | task-graph-mcp-x86_64-unknown-linux-gnu.tar.gz |
| macOS (Intel) | task-graph-mcp-x86_64-apple-darwin.tar.gz |
| macOS (Apple Silicon) | task-graph-mcp-aarch64-apple-darwin.tar.gz |
| Windows (x64) | task-graph-mcp-x86_64-pc-windows-msvc.zip |
解压并将二进制文件放置在你的PATH路径中。
从源代码安装
git clone https://github.com/Oortonaut/task-graph-mcp.git
cd task-graph-mcp
cargo build --release
二进制文件将位于 target/release/task-graph-mcp。
💻 使用示例
作为MCP服务器
添加到你的MCP客户端配置中:
{
"mcpServers": {
"task-graph": {
"command": "task-graph-mcp",
"args": []
}
}
}
CLI选项
task-graph-mcp [OPTIONS]
选项:
-c, --config <FILE> 配置文件的路径
-d, --database <FILE> 数据库文件的路径(覆盖配置)
-v, --verbose 启用详细日志记录
-h, --help 打印帮助信息
-V, --version 打印版本信息
📚 详细文档
配置
完整参考:请参阅 docs/CONFIGURATION.md 以获取包括工作流、提示、关卡、角色和标签的完整配置文档。
创建 .task-graph/config.yaml:
server:
db_path: .task-graph/tasks.db
media_dir: .task-graph/media # 文件附件的目录
skills_dir: .task-graph/skills # 自定义技能覆盖
stale_timeout_seconds: 900
default_format: json # 或 markdown
paths:
style: relative # 或 project_prefixed
auto_advance:
enabled: false # 自动推进未阻塞的任务
target_state: ready # 目标状态(需要在状态配置中自定义状态)
状态配置
任务状态是可配置的。默认状态为:pending(待处理)、working(进行中)、completed(已完成)、failed(失败)、cancelled(已取消)。
要添加 ready 状态以实现自动推进:
states:
initial: pending
disconnect_state: pending # 所有者断开连接时任务的状态(必须是无时间限制的状态)
blocking_states: [pending, working]
definitions:
pending:
exits: [ready, working, cancelled]
ready:
exits: [working, cancelled]
working:
exits: [completed, failed, pending]
timed: true # 此状态下的时间计入 time_actual_ms
completed:
exits: []
failed:
exits: [pending]
cancelled:
exits: []
auto_advance:
enabled: true
target_state: ready
请参阅 SCHEMA.md 以获取状态定义的完整文档。
依赖关系配置
依赖类型定义了任务之间的关系。默认类型为:blocks(阻塞)、follows(跟随)、contains(包含)、duplicate(重复)、see-also(另见)、relates-to(相关)。
dependencies:
definitions:
blocks:
display: horizontal # 同级关系
blocks: start # 阻塞对依赖任务的认领
follows:
display: horizontal
blocks: start
contains:
display: vertical # 父子关系
blocks: completion # 阻塞父任务的完成
duplicate:
display: horizontal
blocks: none # 仅作信息参考
see-also:
display: horizontal
blocks: none
relates-to:
display: horizontal
blocks: none
| 属性 | 值 | 描述 |
|---|---|---|
display |
horizontal, vertical |
视觉关系(同级 vs 父子) |
blocks |
none, start, completion |
依赖关系阻塞的内容 |
附件配置
预配置的附件键提供默认的MIME类型和模式,减少附加常见内容类型时的样板代码。
attachments:
unknown_key: warn # allow | warn (默认) | reject
definitions:
commit:
mime: text/git.hash
mode: append
checkin:
mime: text/p4.changelist
mode: append
meta:
mime: application/json
mode: replace
note:
mime: text/plain
mode: append
| 属性 | 值 | 描述 |
|---|---|---|
unknown_key |
allow, warn, reject |
未定义附件键的行为 |
definitions.<key>.mime |
MIME类型字符串 | 此键的默认MIME类型 |
definitions.<key>.mode |
append, replace |
默认模式(append保留现有内容,replace覆盖现有内容) |
内置默认值:
| 键 | MIME类型 | 模式 | 使用场景 |
|---|---|---|---|
commit |
text/git.hash | append | Git提交哈希 |
checkin |
text/p4.changelist | append | Perforce变更列表 |
changelist |
text/plain | append | 更改的文件 |
meta |
application/json | replace | 结构化元数据 |
note |
text/plain | append | 通用笔记 |
log |
text/plain | append | 日志输出 |
error |
text/plain | append | 错误消息 |
output |
text/plain | append | 命令/工具输出 |
diff |
text/x-diff | append | 补丁和差异 |
plan |
text/markdown | replace | 计划和规范 |
result |
application/json | replace | 结构化结果 |
context |
text/plain | replace | 当前上下文/状态 |
使用方法:
# 从配置中自动填充MIME和模式:
attach(task="123", name="commit", content="abc1234")
# → mime=text/git.hash, mode=append
attach(task="123", name="meta", content='{"v":1}')
# → mime=application/json, mode=replace (覆盖现有元数据)
# 显式值覆盖默认值:
attach(task="123", name="commit", mime="text/plain", content="override")
环境变量:
TASK_GRAPH_CONFIG_PATH:配置文件的路径(优先于.task-graph/config.yaml)TASK_GRAPH_DB_PATH:数据库文件路径(如果没有配置文件,则作为后备)TASK_GRAPH_MEDIA_DIR:文件附件的媒体目录(如果没有配置文件,则作为后备)TASK_GRAPH_LOG_DIR:日志目录路径(如果没有配置文件,则作为后备)
MCP工具
工作者管理
| 工具 | 描述 |
|---|---|
connect(worker_id?, tags?, workflow?, force?, db_path?, media_dir?, log_dir?, config_path?, overlays?: str[]) |
注册一个工作者。可选的 workflow 选择命名的工作流(单人、群体、接力、分层)。返回 worker_id 和活动的 paths。 |
disconnect(worker_id: worker_str, final_status?: status_str = "pending") |
注销工作者并释放所有声明/锁。 |
list_agents(tags?: str[], file?: filename, task?: task_str, depth?: int, stale_timeout?: int) |
列出符合过滤条件的已连接工作者。 |
cleanup_stale(timeout?: int, final_status?: status_str) |
清除过期的工作者并释放他们的声明。 |
add_overlay(worker_id: str, overlay: str) |
为已连接的工作者添加动态工作流覆盖。 |
remove_overlay(worker_id: str, overlay: str) |
从已连接的工作者中移除工作流覆盖。 |
任务CRUD
| 工具 | 描述 |
|---|---|
create(description: str, id?: task_str, parent?: task_str, priority?: int = 5, points?: int, time_estimate_ms?: int, tags?: str[]) |
创建一个任务。优先级范围为0 - 10(越高越重要)。 |
create_tree(tree, parent?, child_type?, sibling_type?) |
创建嵌套任务树。child_type(默认:"contains")用于父→子依赖关系,sibling_type 用于兄弟依赖关系。 |
get(task: task_str) |
通过ID获取任务及其附件元数据和计数。 |
list_tasks(status?: status_str[], ready?: bool, blocked?: bool, claimed?: bool, owner?: worker_str, parent?: task_str, recursive?: bool, agent?: worker_str, tags_any?: str[], tags_all?: str[], sort_by?: str, sort_order?: str, limit?: int, offset?: int) |
使用过滤器查询任务。使用 ready=true 获取可认领的任务。 |
update(worker_id: worker_str, task: task_str, status?: status_str, phase?: str, assignee?: worker_str, title?: str, description?: str, priority?: int, points?: int, tags?: str[], needed_tags?: str[], wanted_tags?: str[], time_estimate_ms?: int, reason?: str, force?: bool, attachments?: object[]) |
更新任务。状态/阶段更改会自动管理所有权并触发提示。包含 attachments 以记录提交/变更列表。 |
delete(worker_id: worker_str, task: task_str, cascade?: bool, reason?: str, obliterate?: bool, force?: bool) |
删除任务。默认软删除;obliterate=true 为永久删除。 |
scan(task: task_str, before?: int, after?: int, above?: int, below?: int) |
向多个方向扫描任务图。深度:0 = 无,N = 层级,-1 = 全部。 |
search(query: str, limit?: int = 20, include_attachments?: bool, status_filter?: status_str) |
FTS5搜索。支持短语、前缀*、AND/OR/NOT、title:word。 |
rename(worker_id: worker_str, task: task_str, new_id: task_str) |
原子性地重命名所有引用表中的任务ID。 |
任务认领
| 工具 | 描述 |
|---|---|
claim(worker_id: worker_str, task: task_str, force?: bool) |
认领一个任务。如果依赖关系不满足、达到限制或缺少标签,则认领失败。使用 force 可以强制认领。 |
注意:通过 update(status="pending") 释放任务。通过 update(status="completed") 完成任务。状态更改会自动管理所有权。
依赖关系
| 工具 | 描述 |
|---|---|
link(from: task_str|task_str[], to: task_str|task_str[], type?: dep_str = "blocks") |
创建依赖关系。类型:blocks、follows、contains、duplicate、see-also、relates-to。 |
unlink(from: task_str|"*", to: task_str|"*", type?: dep_str) |
移除依赖关系。使用 * 作为通配符。 |
relink(prev_from: task_str[], prev_to: task_str[], from: task_str[], to: task_str[], type?: dep_str = "contains") |
原子性地移动依赖关系(先移除再创建)。 |
跟踪
| 工具 | 描述 |
|---|---|
thinking(worker_id: worker_str, thought: str, tasks?: task_str[]) |
广播实时状态。其他工作者可见。刷新心跳。 |
task_history(task: task_str, states?: status_str[]) |
获取带有时间跟踪的状态转换历史记录。 |
project_history(from?: datetime_str, to?: datetime_str, states?: status_str[], limit?: int = 100) |
带有日期范围过滤器的项目级历史记录。 |
log_metrics(worker_id: worker_str, task: task_str, cost_usd?: float, values?: int[8]) |
记录指标(聚合)。 |
get_metrics(task: task_str|task_str[]) |
获取任务的指标。 |
give_feedback(message: str, category?: str, sentiment?: str, agent_id?: str, tool_name?: str, task_id?: str) |
记录关于工具、工作流或用户体验的反馈。默认启用;超过大小限制(默认:1MB)时拒绝写入。 |
list_feedback() |
读取反馈的markdown文件。 |
文件协调
| 工具 | 描述 |
|---|---|
mark_file(worker_id: worker_str, file: filename|filename[], task?: task_str, reason?: str) |
标记文件以表明意图。咨询性,非阻塞。 |
unmark_file(worker_id: worker_str, file?: filename|filename[]|"*", task?: task_str, reason?: str) |
移除标记。使用 * 表示所有文件。 |
list_marks(files?: filename[], worker_id?: worker_str, task?: task_str) |
获取当前的文件标记。 |
mark_updates(worker_id: worker_str) |
轮询自上次调用以来的标记更改。 |
附件
| 工具 | 描述 |
|---|---|
attach(task: task_str|task_str[], name: str, content?: str, mime?: mime_str, file?: filename, store_as_file?: bool, mode?: str) |
添加附件。使用 file 进行引用,store_as_file 进行媒体存储。 |
attachments(task: task_str, name?: str, mime?: mime_str) |
获取附件元数据。名称支持通配符模式。 |
detach(worker_id: worker_str, task: task_str, name: str, delete_file?: bool) |
按名称删除附件。 |
高级功能
| 工具 | 描述 |
|---|---|
check_gates(task: task_str) |
在状态/阶段过渡前检查关卡要求。返回未满足的关卡及其通过/警告/失败状态。 |
get_advisory(topic?: str, task?: task_str, worker_id?: worker_str) |
获取治理咨询指导。不指定主题:列出所有主题。指定主题:返回带有模板扩展的完整咨询内容。 |
query(sql: str, params?: str[], limit?: int = 100, format?: str) |
执行只读SQL。仅支持SELECT语句。需要权限。 |
get_schema(table?: str, include_sql?: bool) |
获取数据库模式。返回表名、列、类型和外键。 |
get_prompts(status?: str, phase?: str, task?: task_str, worker_id?: worker_str) |
获取工作流提示。不指定参数:列出触发器。指定状态/阶段:返回该过渡的扩展提示。 |
list_workflows() |
列出可用的工作流配置(单人、群体、接力、分层等)。 |
list_skills() |
列出可用的捆绑技能及其描述。 |
get_skill(name: str) |
获取捆绑技能的完整内容。 |
MCP资源
| URI | 描述 |
|---|---|
query://tasks/all |
带有依赖关系的完整任务图 |
query://tasks/ready |
可认领的任务 |
query://tasks/blocked |
被依赖关系阻塞的任务 |
query://tasks/claimed |
所有已认领的任务 |
query://tasks/agent/{id} |
由某个代理拥有的任务 |
query://tasks/tree/{id} |
带有所有子任务的任务 |
query://files/marks |
所有文件标记 |
query://agents/all |
已注册的代理 |
query://stats/summary |
汇总统计信息 |
config://current |
一次性返回所有配置 |
config://states |
任务状态定义 |
config://phases |
阶段定义 |
config://dependencies |
依赖类型定义 |
config://tags |
标签定义 |
docs://index |
列出所有可用的文档文件 |
docs://search/{query} |
跨文档的全文搜索 |
docs://skills/list |
列出可用的技能 |
docs://skills/{name} |
获取特定技能的内容 |
docs://workflows/list |
列出可用的工作流 |
docs://workflows/{name} |
获取工作流详细信息 |
docs://overlays/list |
列出可用的覆盖层 |
docs://overlays/{name} |
获取覆盖层详细信息 |
docs://{path} |
特定文档文件的内容 |
任务树结构
使用 create_tree 创建分层任务:
{
"tree": {
"title": "Implement auth",
"children": [
{ "title": "Design schema" },
{ "title": "Write migrations" },
{ "title": "Implement endpoints", "children": [
{ "title": "Login endpoint" },
{ "title": "Logout endpoint" },
{ "title": "Refresh endpoint" }
]},
{ "title": "Write tests" }
]
},
"sibling_type": "follows"
}
树节点字段
| 字段 | 描述 |
|---|---|
title |
任务标题(新任务必需) |
description |
任务描述 |
id |
自定义任务ID(如果省略,将生成UUID7) |
ref |
通过ID引用现有任务(设置后忽略其他字段) |
priority |
优先级范围为0 - 10(默认5) |
points |
故事点 / 复杂度估计 |
time_estimate_ms |
估计持续时间(毫秒) |
tags |
任务的分类标签 |
needed_tags |
代理必须拥有所有这些标签才能认领(AND) |
wanted_tags |
代理必须至少拥有其中一个标签才能认领(OR) |
children |
嵌套子节点 |
顶级参数
| 参数 | 默认值 | 描述 |
|---|---|---|
tree |
必需 | 任务树的根节点 |
parent |
null | 将树的根节点附加到现有的父任务 |
child_type |
"contains" | 从父任务到子任务的依赖类型 |
sibling_type |
null | 兄弟任务之间的依赖类型("follows" 表示顺序,null 表示并行) |
引用现有任务
使用 ref 将现有任务集成到树结构中:
{
"tree": {
"title": "Sprint 5",
"children": [
{ "title": "New feature" },
{ "ref": "existing-task-id" },
{ "title": "Another task" }
]
},
"sibling_type": "follows"
}
基于标签的亲和性
工作者在连接时通过标签声明其能力。任务可以要求特定的标签来控制哪些工作者可以认领它们。
示例标签类别:
- 模型能力:
image-in(图像输入)、audio-out(音频输出)、video-in(视频输入)、code(代码)、bulk(批量) - 访问级别:
prod-access(生产环境访问)、admin(管理员)、external(外部) - 专业领域:
rust、python、frontend(前端)、database(数据库)
注意:像协调员/审查员/部署员这样的角色使用阶段来表示会更好。
任务要求:
needed_tags(AND):代理必须拥有所有这些标签。wanted_tags(OR):代理必须至少拥有其中一个标签。
{
"title": "Analyze screenshot and generate code",
"needed_tags": ["image-in", "code"],
"wanted_tags": ["bulk"]
}
{
"title": "Deploy to production",
"phase": "deploy",
"needed_tags": ["prod-access"],
"wanted_tags": ["aws", "gcp"]
}
工作流和阶段
阶段
任务可以有一个 phase 来对正在执行的工作类型进行分类:
{
"title": "Add authentication",
"phase": "implement"
}
内置阶段:explore(探索)、implement(实现)、review(审查)、test(测试)、security(安全)、deploy(部署)、triage(分类)、diagnose(诊断)、design(设计)、plan(计划)、doc(文档)、integrate(集成)、monitor(监控)、optimize(优化)
阶段支持:
- 过渡提示 —— 进入/退出阶段时的自动指导
- 关卡 —— 阶段过渡前必须满足的要求
- 基于角色的路由 —— 在接力工作流中,专家负责特定阶段
命名工作流
预构建的工作流拓扑结构针对不同的协调模式进行了优化:
| 工作流 | 描述 | 适用场景 |
|---|---|---|
solo |
单个代理,完全自主 | 简单任务、原型开发 |
swarm |
并行的通用代理,拉取式 | 高吞吐量、独立任务 |
relay |
顺序的专家代理,交接式 | 复杂任务、领域专业知识 |
hierarchical |
领导/工作者委派 | 大型项目、团队协调 |
push |
推式任务分配拓扑 | 集中式分配、负载均衡 |
kanban |
带有在制品限制的看板式任务管理 | 持续流、可视化跟踪 |
sprint |
限时迭代计划 | Scrum团队、固定节奏 |
在连接时选择工作流:
connect(worker_id="agent-1", workflow="swarm")
每个工作流都提供定制的提示和协调指导。请参阅 WORKFLOW_TOPOLOGIES.md 以获取详细模式。
过渡提示
当状态或阶段更改时,代理会收到自动指导:
# workflows.yaml
states:
working:
prompts:
enter: |
你现在正在处理此任务。
从 {{current_status}} 你可以过渡到:{{valid_exits}}
exit: |
在离开之前:
- [ ] 附加结果
- [ ] 记录成本
提示支持模板变量:{{current_status}}、{{valid_exits}}、{{current_phase}}、{{valid_phases}}
关卡
关卡是状态或阶段过渡前必须满足的要求:
gates:
status:working:
- type: gate/tests
enforcement: warn
description: "测试必须通过"
通过附加证据来满足关卡要求:
attach(task="123", type="gate/tests", content="All tests passing")
执行级别:allow(咨询性)、warn(除非 force=true 否则阻塞)、reject(硬阻塞)
文件协调
代理可以使用带有更改跟踪的咨询标记来协调文件编辑:
工作者A: connect() -> "worker-a"
工作者A: mark_file("worker-a", "src/main.rs", "refactoring")
工作者B: connect() -> "worker-b"
工作者B: mark_updates("worker-b") -> 看到工作者A的标记
工作者A: unmark_file("worker-a", "src/main.rs", "ready for review")
工作者B: mark_updates("worker-b") -> 看到标记移除及原因
工作者B: mark_file("worker-b", "src/main.rs", "adding tests")
架构
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ 代理A │ │ 代理B │ │ 代理C │
│ (Claude) │ │ (GPT-4) │ │ (工作者) │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ stdio │ stdio │ stdio
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ task-graph │ │ task-graph │ │ task-graph │
│ MCP │ │ MCP │ │ MCP │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────────────┼───────────────────┘
▼
┌─────────────────┐
│ SQLite + WAL │
│ .task-graph/ │
│ tasks.db │
└─────────────────┘
- 传输方式:标准输入输出(Stdio) —— 每个工作者生成自己的服务器进程
- 数据库:使用WAL模式的SQLite,支持跨进程并发访问
- 部署方式:单二进制文件,无外部依赖,可离线工作
与其他方案对比
| 任务图 | 线性任务列表 | 自定义数据库 | |
|---|---|---|---|
| 工作流阶段 | ✓ 内置提示 | ✗ 手动跟踪 | 自定义实现 |
| 质量关卡 | ✓ 可配置执行 | ✗ | 自定义实现 |
| 多代理安全 | ✓ 原子声明、文件锁 | ✗ 存在竞态条件 | 可能需要自定义实现 |
| 依赖跟踪 | ✓ 带有循环检测的DAG | ✗ 手动排序 | 自定义实现 |
| MCP原生支持 | ✓ 一流支持 | ✗ 需要包装器 | ✗ 需要包装器 |
| 令牌核算 | ✓ 内置功能 | ✗ | 自定义实现 |
| 所需设置 | 无 | 无 | 数据库服务器 |
文档
| 文档 | 描述 |
|---|---|
| CONFIGURATION.md | 完整的配置参考(config.yaml、工作流、提示、关卡、标签) |
| SCHEMA.md | 数据库模式和状态机文档 |
| DESIGN.md | 架构和设计决策 |
| WORKFLOW_TOPOLOGIES.md | 多代理工作流模式(单人、群体、接力、分层) |
| EXPORT_IMPORT.md | 数据导出和导入功能 |
| PROCESSES.md | 发布流程、变更日志维护 |
| GATES.md | 工作流关卡条件和执行 |
| METRICS.md | 实验指标定义和SQL示例 |
📄 许可证
本项目采用Apache 2.0许可证。
专为需要结构化工作流和可靠协调的AI代理而构建。
替代品












