fist-mbt

    FIST commander task orchestration rewritten in pure MoonBit, exposed as an MCP server.

    MCP
    task-orchestration
    multi-agent
    FIST
    Download zip
    Author
    Version
    0.2.3
    License
    Apache-2.0
    Last updated
    2 hours ago
    Downloads
    19

    #AIGC: Label: "1" ContentProducer: 001191440300708461136T1XGW3 ProduceID: 9f2a11add43fbf12a546606fb2b962ab_a9040e79b1b011f18f26525400287e28 ReservedCode1: gqaLfUShhHiQRS1EzJF7Uro7Y1DmWppGM5ptSJMt1Sa/oiiB0agGywKVnF6CVW+FibYYdcMTiKVLgPeIRq6q66IWRCiIpXfQv5PS5MhO8uHoxxiOooFGGDD7q62tfOot4vM7KttnAfTheQyUgyjntzjTzjRJGagyhS9hRcfILiP25jWSud82zEO918g= ContentPropagator: 001191440300708461136T1XGW3 PropagateID: 9f2a11add43fbf12a546606fb2b962ab_a9040e79b1b011f18f26525400287e28 ReservedCode2: gqaLfUShhHiQRS1EzJF7Uro7Y1DmWppGM5ptSJMt1Sa/oiiB0agGywKVnF6CVW+FibYYdcMTiKVLgPeIRq6q66IWRCiIpXfQv5PS5MhO8uHoxxiOooFGGDD7q62tfOot4vM7KttnAfTheQyUgyjntzjTzjRJGagyhS9hRcfILiP25jWSud82zEO918g=

    #FIST-Mbt

    Made with MoonBit License Tests

    FIST 指挥官任务分配体系(原 Python 实现)用 纯 MoonBit 原生重写 并包装为 MCP Server 的参赛作品(2026 MoonBit 九月黑客松)。

    指挥官(人类 / 主力模型)通过标准 MCP 协议调用 FIST-Mbt 暴露的 41 个工具,完成任务的 发布 → 认领 → 拆分 → 执行 → 提交 → 验收 → 归档 完整闭环,全程贯彻 FIST 七条金条原则。

    该项目为 FIST(Python)的 MoonBit 原生重写 + MCP 化,非原代码搬运。


    #快速开始

    依赖:MoonBit 工具链(≥ 0.1.20260827,需支持 errdeferasync)。

    # 依赖解析 & 编译 moon check # 运行测试(103 项全部通过) moon test # 启动 MCP Server(STDIO 传输) moon run cmd/main # 启动 HTTP/SSE 桥接(可选) FIST_MCP_PORT=3000 python scripts/fist-mbt-http.py

    任意 MCP 客户端(Claude Desktop / AtomCode / 自研 JSON-RPC 客户端)以 STDIO 方式拉起该可执行文件即可交互。

    #最小调用示例(JSON-RPC over STDIO)

    {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{ "name":"publish", "arguments":{"project_dir":"E:/proj/demo","description":"示例根任务","created_by":"human_steward","now":"2026-09-05T10:00:00Z"}, "_meta":{"io.modelcontextprotocol/protocolVersion":"2026-07-28"} }}


    #MCP 暴露面

    #Tools(41 个)

    适用范围提示watchdog_tick(定时任务看门狗编排)推荐仅用于定时任务 / 无人值守自动化场景,不用于人工指挥官任务分配流程(自动 heal / 自动续轮在人工流程中有害)。

    配套元提示词模板:templates/cron_pipeline_meta_prompt.md统一版:单一提示词 + 单一定时任务,一次唤醒内四分支自决策——①有活跃任务且心跳新鲜则退出;②心跳超时只交给 watchdog_tick 的 heal 分支;③无活跃任务且最新提示词未消费则接一个新根任务;④无活跃任务且提示词已消费则生成下一份 yyyyMMdd.HH.mm.ss.md。含按目标项目替换的参数清单、作用域隔离要求与无人值守边界说明)。

    #生命周期八件套(九态状态机)

    工具说明关键参数
    publish发布根任务(仅 human_steward/human)project_dir, description, created_by, namespace, now
    claim认领任务(待领取 → 已领取)task_id, assignee, now
    plan对已认领任务拆分为子任务task_id, split_n, by, now
    execute记录执行交付物(→ 执行中)task_id, deliverable, now
    submit提交验收(→ 待验收)task_id, now
    verify验收通过(→ 已完成,父任务自动上卷)task_id, verifier, now
    reject验收拒绝(→ 已打回)task_id, reason, by, now
    retry打回后重试(→ 执行中)task_id, now
    pause暂停任务(任意活跃 → 已暂停)task_id, now
    resume恢复任务(已暂停 → 已领取)task_id, now
    archive归档(→ 已归档,仅人类指挥官)task_id, by, now
    delete删除任务(仅限已归档)task_id

    #查询

    工具说明关键参数
    list列出全部任务,可按状态过滤status(可选)
    get查询单个任务详情task_id

    #深拆与运维

    工具说明关键参数
    task_plan_deepAO 式递归拆解,拆出整棵多层子任务树并写库;可选开启 Omega 强验证(每轮插入语料创建/审核/成果复验)task_id, split_n, by, spec, now, omega_strong_verify(可选,默认 false)
    conflicts_checkclaim 冲突检测(认领前检查是否已被他人/本人持有)task_id, assignee
    heartbeat活动信号上报(超时静默将触发 heal 回滚)task_id, signal, now
    healno_signal 看护:心跳超时静默的任务回滚为已领取待重派(内存版,人工流程)now, timeout_sec
    watchdog_tick定时任务看门狗编排单入口(推荐仅用于定时任务):读 SQLite 心跳判定超时回滚;上一轮根任务完成且提供 next_description 或 meta_prompt_path 时自动起下一轮now, timeout_sec, namespace, next_description, next_created_by, meta_prompt_path
    task_cleanup归档清理:删除超保留期的已归档任务now, retention_days

    #Omega 验证闭环(M6 金条八)

    工具说明关键参数
    omega_verify批量验证 spec JSON:schema + fingerprint 校验,accuracy < 100% 一票否决specs(JSON 数组)
    omega_verify_fix失败 spec 根因分类 → 定向修复 → 回归验证(3 轮循环)specs(JSON 数组), max_rounds(可选)

    #Omega 强验证(可选开关,默认关闭)

    task_plan_deep 的可选参数 omega_strong_verify(默认 false)控制本功能:不传 / 传 false 时行为与既有完全一致(不产生任何语料记录);传 true 时,递归拆解写出的每个子任务都会带上 omega:required 标记,进入「语料驱动」的强验证流程:

    1. 语料创建:语料创建者 spec_author 调用 omega_spec_create 为本轮任务创建语料,真正持久化写入 specs 表(status = pending)。
    2. 语料审核:验证者 verifier 调用 omega_spec_review 审核并质疑语料——approve 放行,其余值视为打回,由语料创建者重做。
    3. 执行门禁:语料通过前 executeomega_execute_gate 拒绝;通过后由执行者执行具体任务。
    4. 成果复验:执行者完成后,验证者调用 omega_result_verify 复验成果与对应语料是否达标,不达标继续打回重做(verify 前受 omega_verify_gate 约束)。
    5. 上限与升级:打回累计达到 max_rounds(默认 3,最大 10)时写入 escalation 记录、返回 escalated=true 并暂停任务转人工裁决,禁止死循环。

    工具说明关键参数
    omega_spec_create语料创建者为已开启强验证的任务创建本轮语料并持久化task_id, author(默认 spec_author), content, max_rounds(可选), now
    omega_spec_review验证者审核语料:approve 放行,其它值打回task_id, reviewer(默认 verifier), verdict, reason(可选), max_rounds(可选), now
    omega_result_verify验证者复验执行成果与对应语料是否达标task_id, reviewer(默认 verifier), verdict, reason(可选), max_rounds(可选), now
    omega_status查询强验证进度(开关状态 / 语料与复验轮次 / 打回数 / 升级标志 / 账本)task_id

    角色约束:spec_author 仅可创建语料、verifier 仅可审核与复验,且验证者不得审核自己创建的语料;human_steward 可执行全部环节。 持久化:语料 / 复验 / 升级记录均落 specs 表,跨进程与跨引擎实例可读;Store::clear 会连同语料账本一并清空。

    #智能调度与成本(M6 增强)

    工具说明关键参数
    schedule调度预览:根据任务描述自适应计算分级/拆分/成本档/执行器(不落库)description, n_files(可选)
    cost_stats执行成本聚合统计(total_records/total_cost/total_tokens/by_executor)
    cost_budget_check预算超限告警(exceeded/remaining/action)limit, current

    #执行与交付

    工具说明关键参数
    execute记录执行交付物(→ 执行中),向后兼容旧接口,支持 executor/model/tokens/cost 元数据task_id, deliverable, executor?, model?, tokens_in?, tokens_out?, cost?, duration_ms?, rate_limited?, failure_reason?, now

    #DAG 扩展(依赖图)

    工具说明关键参数
    dag_critical_path返回当前最长依赖链(关键路径)
    dag_parallelism返回当前可并行执行的任务数(待领取且依赖已满足)
    dag_ascii返回当前命名空间任务的 ASCII 依赖结构图namespace(可选)
    dag_check检查某任务的依赖是否全部完成task_id
    dag_ready列出所有依赖满足、可领取的任务namespace(可选)
    dag_sort对任务列表按依赖深度拓扑排序task_ids(JSON 数组)

    #审计与权限(M5 治理)

    工具说明关键参数
    audit_permission查询某角色是否可执行指定操作role, action
    audit_log查看追加式审计日志filter_actor(可选), filter_task_id(可选)

    #多租户命名空间(M5 多库隔离)

    工具说明关键参数
    store_open打开(或复用)一个命名空间namespace, data_dir(可选)
    store_list列出当前已打开的命名空间及任务数
    store_close关闭指定命名空间(不删除物理库文件)namespace

    #Resources(2)

    URI内容
    fist://principlesFIST 七条金条原则(JSON)
    fist://overview任务体系概览

    #Prompts(2)

    名称用途
    fist:check_in执行者开工打卡自查模板
    fist:verify验收人验收要点模板


    #架构

    FIST-Mbt/ ├── .mcp.json # MCP server 注册(moon run cmd/main) ├── AGENTS.md # FIST 指挥官模式行为指令 ├── README.md # 本文档 ├── USAGE.md # 实操调用手册 ├── cmd/ │ ├── main/ # STDIO MCP server 入口(moon run cmd/main) │ └── cli/ # CLI 入口(moon run cmd/cli/main) ├── scripts/ │ └── fist-mbt-http.py # HTTP/SSE 桥接(FIST_MCP_PORT=3000) ├── src/ │ ├── core/ # 领域核心实体 │ │ ├── core_task.mbt # 任务实体 + 九态状态机 + DAG depends_on │ │ ├── core_role.mbt # 角色权限矩阵(human_steward/leader/agent) │ │ └── core_principle.mbt # 七条金条原则常量 │ ├── store/ # 持久化 │ │ ├── store.mbt # Store 抽象 + StoreBackend 工厂 │ │ ├── store_sqlite.mbt # SQLite 实现(内建 DB) │ │ ├── store_specs.mbt # specs 表:Omega 语料/复验/升级持久化 │ │ └── multi_store.mbt # 多库命名空间管理器(内部可变性) │ ├── engine/ # FistEngine:业务逻辑闭环 + DAG 扩展 │ │ ├── engine.mbt # publish/plan/claim/execute/submit/verify/archive + reject/retry/pause/resume │ │ ├── engine_dag_ext.mbt # critical_path/parallelism/dag_ascii │ │ ├── decompose.mbt # 任务拆解计算 │ │ ├── omega_strong.mbt # Omega 强验证:语料创建/审核/成果复验 + 门禁 + 打回升级 │ │ └── *_test.mbt # 引擎测试 │ ├── ops/ # 运维与治理 │ │ ├── audit.mbt # 追加式审计日志 + Role 权限矩阵 │ │ ├── ops_conflicts.mbt # 冲突检测 │ │ ├── ops_heartbeat.mbt # 心跳上报 │ │ ├── ops_heal.mbt # 超时回滚 │ │ ├── ops_cleanup.mbt # 归档清理 │ │ ├── ops_watchdog.mbt # 看门狗编排 watchdog_tick(跨进程 heal + 自动续轮) │ │ └── ops_ts.mbt # 时间戳工具 │ ├── omega/ # 可解释性子包:spec/gate/check │ └── server/ # MCP server 装配 │ ├── server.mbt # 41 个工具注册 + run_server │ ├── stdio_js.mbt # JS 后端 STDIO 传输 │ └── stdio_native.mbt # 原生后端 STDIO 传输 └── moon.mod # 模块元数据

    设计要点

    • 纯 MoonBit 实现,无 Rust / C 包装;MCP 协议层使用 colmugx/mcp(Apache-2.0,协议 2026-07-28)。
    • 领域核心(core*/store/engine)与协议层(server)分离,核心为纯逻辑、易单测。
    • K 值递归衰减:根任务 depth=3,每拆一层减 1,depth≤1 为原子任务不再拆分。
    • plan 需任务处于已领取态(先 claimplan),保证拆分动作归属到具体负责人。
    • 多租户:MultiStore 按 ns 路由到独立 SQLite 文件 {data_dir}/{ns}.db,惰性打开。
    • 审计:AuditLog 进程内追加式日志,不落库;角色权限矩阵遵循"唯一指挥官/人类主权"原则。


    #状态机(九态)

    ┌─ pause ──┐ ▼ │ 待领取 ──claim──► 已领取 ──plan──► 拆分中 ──execute──► 执行中 │ │ │ │ └──────execute───────────────────────────┘ │ ▼ │ 待验收 ◄── submit ─── 执行中 │ │ │ │ verify reject │ │ │ │ ▼ ▼ │ 已完成 已打回 ──retry──► 执行中 │ │ │ archive │ │ │ ▼ │ 已归档 ──delete──► 移除 │ └── resume ◄── 已暂停

    新增状态(M5 扩展)

    状态说明进入方式
    Rejected已打回(验收不通过,需重做)reject(待验收 → 已打回)
    Paused已暂停(外部中断/等待依赖)pause(任意活跃 → 已暂停)

    新增迁移

    迁移触发约束
    retryretry_task仅 Rejected → Executing
    pausepause_task任意活跃状态 → Paused
    resumeresume_taskPaused → Claimed

    非法迁移由状态机拒绝并返回错误,例如未认领直接 plan / execute 会报「非法迁移」。


    #测试

    moon test # 93 项测试全部通过

    覆盖:根任务发布、发布权限(仅人类指挥官)、claim/plan/execute/submit/verify/archive/delete 全闭环、 reject/retry/pause/resume 新增迁移、非法迁移拦截(未认领 plan / execute、未归档 delete)、 按状态过滤查询、DAG 依赖检查、审计权限矩阵、多租户命名空间、WAL 并发写入、心跳持久化、 看门狗跨进程 heal(读 SQLite 判定超时)、watchdog_tick 编排(waiting/idle/blocked/restarted/advanced)、 元提示词文档路径续轮(单文件 / 目录取最新、失败不续轮不 panic)。


    #多租户(命名空间)使用

    // 1. 打开命名空间 "project-alpha" {"jsonrpc":"2.0","id":1,"method":"tools/call","params":{ "name":"store_open", "arguments":{"namespace":"project-alpha","data_dir":"."}, "_meta":{...} }} // 2. 发布任务到该 namespace {"jsonrpc":"2.0","id":2,"method":"tools/call","params":{ "name":"publish", "arguments":{"project_dir":"...","description":"...","namespace":"project-alpha","created_by":"human_steward","now":"2026-09-05T10:00:00Z"}, "_meta":{...} }} // 3. 查看已打开的命名空间 {"jsonrpc":"2.0","id":3,"method":"tools/call","params":{ "name":"store_list", "arguments":{}, "_meta":{...} }} // 4. 关闭命名空间(不删除物理库文件) {"jsonrpc":"2.0","id":4,"method":"tools/call","params":{ "name":"store_close", "arguments":{"namespace":"project-alpha"}, "_meta":{...} }}

    每个命名空间对应独立的 SQLite 文件 {data_dir}/{namespace}.db,实现数据隔离。


    #HTTP/SSE 桥接(可选)

    FIST_MCP_PORT=3000 python scripts/fist-mbt-http.py

    暴露两个端点:

    端点说明
    GET /health健康检查,返回 {"status":"ok","tools":41}
    POST /mcpJSON-RPC over HTTP,请求体与 STDIO 模式一致


    #移植与合规声明

    • 来源:FIST(Python),Apache-2.0 许可证。
    • 许可证:Apache-2.0。
    • 本期范围:用 MoonBit 原生重写核心领域逻辑与状态机,并封装为 MCP Server; 未搬运 Python 原代码,未包含原项目未开源的业务数据。
    • 原 Python 项目中的 scheduler / executor / webpanel 等模块不在本期范围内(见 CHANGELOG 演进说明)。


    #License

    Apache-2.0 (内容由AI生成,仅供参考)

    FistEngine

    核心引擎:持有 store,暴露指挥-执行-验收完整闭环。 store 为后端路由(内存 / SQLite),业务逻辑不感知具体实现。

    SqliteStore

    SQLite 后端:持有打开的 Database(Option 以承载 open 失败场景)。

    Task

    FIST-Mbt 对外门面:向包使用者导出主要公共类型与 server 入口。 实现源码分类位于 src/ 下各子包。

    TaskStatus

    任务七态状态机

    run_server

    async fn run_server() -> Unit

    Source Files