FIST commander task orchestration rewritten in pure MoonBit, exposed as an MCP server.
Dependencies
该项目为 FIST(Python)的 MoonBit 原生重写 + MCP 化,非原代码搬运。
# 依赖解析 & 编译
moon check
# 运行测试(103 项全部通过)
moon test
# 启动 MCP Server(STDIO 传输)
moon run cmd/main
# 启动 HTTP/SSE 桥接(可选)
FIST_MCP_PORT=3000 python scripts/fist-mbt-http.py{"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"}
}}适用范围提示: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_deep | AO 式递归拆解,拆出整棵多层子任务树并写库;可选开启 Omega 强验证(每轮插入语料创建/审核/成果复验) | task_id, split_n, by, spec, now, omega_strong_verify(可选,默认 false) |
| conflicts_check | claim 冲突检测(认领前检查是否已被他人/本人持有) | task_id, assignee |
| heartbeat | 活动信号上报(超时静默将触发 heal 回滚) | task_id, signal, now |
| heal | no_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_verify | 批量验证 spec JSON:schema + fingerprint 校验,accuracy < 100% 一票否决 | specs(JSON 数组) |
| omega_verify_fix | 失败 spec 根因分类 → 定向修复 → 回归验证(3 轮循环) | specs(JSON 数组), max_rounds(可选) |
| 工具 | 说明 | 关键参数 |
|---|---|---|
| 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 会连同语料账本一并清空。
| 工具 | 说明 | 关键参数 |
|---|---|---|
| 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_critical_path | 返回当前最长依赖链(关键路径) | 无 |
| dag_parallelism | 返回当前可并行执行的任务数(待领取且依赖已满足) | 无 |
| dag_ascii | 返回当前命名空间任务的 ASCII 依赖结构图 | namespace(可选) |
| dag_check | 检查某任务的依赖是否全部完成 | task_id |
| dag_ready | 列出所有依赖满足、可领取的任务 | namespace(可选) |
| dag_sort | 对任务列表按依赖深度拓扑排序 | task_ids(JSON 数组) |
| 工具 | 说明 | 关键参数 |
|---|---|---|
| audit_permission | 查询某角色是否可执行指定操作 | role, action |
| audit_log | 查看追加式审计日志 | filter_actor(可选), filter_task_id(可选) |
| 工具 | 说明 | 关键参数 |
|---|---|---|
| store_open | 打开(或复用)一个命名空间 | namespace, data_dir(可选) |
| store_list | 列出当前已打开的命名空间及任务数 | 无 |
| store_close | 关闭指定命名空间(不删除物理库文件) | namespace |
| URI | 内容 |
|---|---|
| fist://principles | FIST 七条金条原则(JSON) |
| fist://overview | 任务体系概览 |
| 名称 | 用途 |
|---|---|
| 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 # 模块元数据 ┌─ pause ──┐
▼ │
待领取 ──claim──► 已领取 ──plan──► 拆分中 ──execute──► 执行中
│ │ │
│ └──────execute───────────────────────────┘
│ ▼
│ 待验收 ◄── submit ─── 执行中
│ │ │
│ verify reject
│ │ │
│ ▼ ▼
│ 已完成 已打回 ──retry──► 执行中
│ │
│ archive
│ │
│ ▼
│ 已归档 ──delete──► 移除
│
└── resume ◄── 已暂停| 状态 | 说明 | 进入方式 |
|---|---|---|
| Rejected | 已打回(验收不通过,需重做) | reject(待验收 → 已打回) |
| Paused | 已暂停(外部中断/等待依赖) | pause(任意活跃 → 已暂停) |
| 迁移 | 触发 | 约束 |
|---|---|---|
| retry | retry_task | 仅 Rejected → Executing |
| pause | pause_task | 任意活跃状态 → Paused |
| resume | resume_task | Paused → Claimed |
moon test # 93 项测试全部通过// 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":{...}
}}FIST_MCP_PORT=3000 python scripts/fist-mbt-http.py| 端点 | 说明 |
|---|---|
| GET /health | 健康检查,返回 {"status":"ok","tools":41} |
| POST /mcp | JSON-RPC over HTTP,请求体与 STDIO 模式一致 |
Install
Download zipFIST commander task orchestration rewritten in pure MoonBit, exposed as an MCP server.
Dependencies