vicTop-cw/fist-mbt/src/engine does not have a README file

    FistEngine

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

    FistEngine::all_subtasks_completed

    fn FistEngine::all_subtasks_completed(self : FistEngine, parent :
    Task
    ) -> Bool

    是否为「非叶节点且所有直接子任务都已完成」

    FistEngine::archive

    fn FistEngine::archive(self : FistEngine, task_id~ : String, by~ : String, now~ : String) -> Result[
    Task
    , String]

    人类确认归档:Completed -> Archived(仅限人类指挥官)

    FistEngine::children_of

    fn FistEngine::children_of(self : FistEngine, task_id : String) -> Array[
    Task
    ]

    列出某任务的所有直接子任务

    FistEngine::claim

    fn FistEngine::claim(self : FistEngine, task_id~ : String, assignee~ : String, now~ : String) -> Result[
    Task
    , String]

    认领任务(executor 认领,待领取 -> 已领取 -> 执行中) 领取前检查依赖是否满足

    FistEngine::cold_publish

    fn FistEngine::cold_publish(self : FistEngine, ns~ : String, description~ : String, created_by~ : String, project_dir~ : String, now~ : String) -> Result[String, String]

    冷启动发布(无上一轮根任务时创建首个任务)。 仅用于 cron-auto 等自动化命名空间,语义等同「人类指挥官发布首轮」 但审计日志标记为 watchdog 自动发布。

    安全边界:
    • 仅允许作用于非 default 命名空间;
    • 该命名空间必须为空(已有任务时拒绝,避免重复发布)。

    FistEngine::cost_stats

    fn FistEngine::cost_stats(self : FistEngine) -> Json

    成本聚合统计:委托给 store 后端(SQLite 从 executions 表聚合,内存返回零值)。

    FistEngine::critical_path

    fn FistEngine::critical_path(self : FistEngine) -> Array[String]

    关键路径:全图中按 depends_on 建图后的最长依赖链(任务 id 序列)。 多条等长链取先遇到的一条;空仓库返回空数组。

    FistEngine::dag_ascii

    fn FistEngine::dag_ascii(self : FistEngine, ns~ : String) -> String

    ASCII 树/缩进图:展示某命名空间下的任务依赖结构。 层级由 parent_id(子任务归组)与 depends_on(依赖深度)共同决定, 同层任务按 id 字典序稳定输出;跨命名空间的父/依赖不计入缩进。 每行格式:<缩进> [<状态>](有依赖时追加 " (依赖: a,b)"),行尾换行。

    FistEngine::delete_task

    fn FistEngine::delete_task(self : FistEngine, task_id : String) -> Result[Unit, String]

    删除任务(仅限已归档,ARCHIVING 清理)

    FistEngine::deps_satisfied

    fn FistEngine::deps_satisfied(self : FistEngine, task_id : String) -> Bool

    检查某任务的直接依赖是否全部完成

    FistEngine::execute

    fn FistEngine::execute(self : FistEngine, task_id~ : String, deliverable~ : String, now~ : String) -> Result[
    Task
    , String]

    记录执行交付物

    FistEngine::execute_with_meta

    fn FistEngine::execute_with_meta(self : FistEngine, task_id~ : String, deliverable~ : String, now~ : String, executor? : String, model? : String, tokens_in? : Int, tokens_out? : Int, cost? : Double, duration_ms? : Int, rate_limited? : Bool, failure_reason? : String) -> Result[
    Task
    , String]

    记录执行交付物 + 执行元数据(executor/model/tokens/cost/duration)。 元数据写入 executions 表(供成本统计使用);task 本身状态照常流转。

    FistEngine::gate_check_record

    fn FistEngine::gate_check_record(self : FistEngine, task_id : String, check_json : String, status : String, now : String) -> Result[Json, String]

    记录一次外部命令检查结果(status = "passed" 当且仅当 exit_code==0)。 记录 id = check:<task_id>:r(round = 该任务已有 check 记录数 + 1)。

    FistEngine::gate_verify_gate

    fn FistEngine::gate_verify_gate(self : FistEngine, task_id : String) -> Result[Unit, String]

    验收前闸门:[gate:required] 任务须存在最新且通过且新鲜的 check 记录。 未标记任务直接放行(默认关闭即现状)。

    FistEngine::get_task

    fn FistEngine::get_task(self : FistEngine, task_id : String) ->
    Task
    ?

    查询单个任务

    FistEngine::list_all

    列出全部任务

    FistEngine::list_by_status

    按状态过滤列出

    FistEngine::list_in_ns

    fn FistEngine::list_in_ns(self : FistEngine, ns : String) -> Array[
    Task
    ]

    按命名空间列出任务(ns 为空串时回退默认命名空间)。 供 watchdog 等运维编排按 ns 扫描使用。

    FistEngine::omega_count

    fn FistEngine::omega_count(self : FistEngine, task_id : String, spec_type : String, status : String) -> Int

    统计某类型记录中处于指定状态的条数。

    FistEngine::omega_count_type

    fn FistEngine::omega_count_type(self : FistEngine, task_id : String, spec_type : String) -> Int

    统计某类型的全部记录条数。

    FistEngine::omega_execute_gate

    fn FistEngine::omega_execute_gate(self : FistEngine, task_id : String) -> Result[Unit, String]

    执行前门禁:强验证任务必须先有「已通过」语料;默认关闭的任务直接放行。

    FistEngine::omega_latest

    fn FistEngine::omega_latest(self : FistEngine, task_id : String, spec_type : String) ->
    SpecRecord
    ?

    取最新一条指定类型记录。

    FistEngine::omega_records

    fn FistEngine::omega_records(self : FistEngine, task_id : String) -> Array[
    SpecRecord
    ]

    列出某任务的全部语料 / 复验 / 升级记录。

    FistEngine::omega_result_verify

    fn FistEngine::omega_result_verify(self : FistEngine, task_id~ : String, reviewer~ : String, verdict~ : String, reason? : String, now~ : String, max_rounds? : Int) -> Result[Json, String]

    成果复验(角色:验证者 verifier,或人类指挥官)。 verdict = pass 达标;其余视为打回重做(超限升级人工)。

    FistEngine::omega_spec_create

    fn FistEngine::omega_spec_create(self : FistEngine, task_id~ : String, author~ : String, content~ : String, now~ : String, max_rounds? : Int) -> Result[Json, String]

    语料创建(角色:语料创建者 spec_author,或人类指挥官)。 落库 specs 表:id = spec:<task_id>:r,status = pending。

    FistEngine::omega_spec_review

    fn FistEngine::omega_spec_review(self : FistEngine, task_id~ : String, reviewer~ : String, verdict~ : String, reason? : String, now~ : String, max_rounds? : Int) -> Result[Json, String]

    语料审核(角色:验证者 verifier,或人类指挥官)。 verdict = approve 通过;其余视为打回(打回累计超限则升级人工)。

    FistEngine::omega_status

    fn FistEngine::omega_status(self : FistEngine, task_id : String) -> Result[Json, String]

    查询某任务的强验证状态(开关、语料轮次、打回次数、复验状态、是否已升级)。

    FistEngine::omega_verify_gate

    fn FistEngine::omega_verify_gate(self : FistEngine, task_id : String) -> Result[Unit, String]

    验收前门禁:强验证任务必须先有「已通过」的成果复验记录。

    FistEngine::open_sqlite

    fn FistEngine::open_sqlite(db_path : String) -> FistEngine?

    以指定 SQLite 数据库打开持久化引擎(内建数据库入口;失败返回 None 供调用方回退)。

    FistEngine::parallelism

    fn FistEngine::parallelism(self : FistEngine) -> Int

    当前可并行执行的任务数:状态为待领取且依赖已满足的任务数。

    FistEngine::pause_task

    fn FistEngine::pause_task(self : FistEngine, task_id~ : String, now~ : String) -> Result[
    Task
    , String]

    暂停任务:任意活跃状态 -> 已暂停

    FistEngine::plan

    fn FistEngine::plan(self : FistEngine, task_id~ : String, split_n? : Int, by~ : String, now~ : String) -> Result[Array[String], String]

    对指定任务生成子任务树(一层)。非原子任务才可拆分。 返回生成的子任务 id 列表。

    FistEngine::plan_deep

    fn FistEngine::plan_deep(self : FistEngine, task_id~ : String, split_n? : Int, by~ : String, spec? : Json?, now~ : String, omega_strong_verify? : Bool) -> Result[Json, String]

    AO 式递归拆解入口:对指定任务拆出整棵子任务树并写库。

    入参: task_id 要拆解的根/拳节任务 id(非原子任务才可拆); split_n 每层默认拆分数(无 spec.laws 时生效,默认 3); by 执行拆解的拳长身份(仅记录); spec 可选 omega spec JSON(laws 作切割依据,fingerprint 作验收基准); now 时间戳。

    返回:{ "root", "by", "created", "tree" },tree 为多层子树结构; 任一子节点非叶时将继续递归(depth 递减,is_leaf=depth<=1 停止)。

    FistEngine::publish

    fn FistEngine::publish(self : FistEngine, project_dir~ : String, description~ : String, created_by~ : String, now~ : String, ns? : String) -> Result[String, String]

    发布根任务(仅限人类指挥官)

    FistEngine::publish_next_round

    fn FistEngine::publish_next_round(self : FistEngine, ns~ : String, description~ : String, created_by~ : String, prev_task_id~ : String, now~ : String) -> Result[String, String]

    自动续轮(仅供定时任务看门狗 watchdog_tick 调用,见 ops_watchdog.mbt)。

    语义:把已完成的上一轮根任务标记为已续轮并归档,同时发布下一轮根任务。 安全边界(watchdog 计划文档第 0 节):
    • 仅允许作用于非 default 命名空间,避免干扰人工指挥流程;
    • 上一轮必须是「已完成」的根任务。

    返回新根任务 id(T0r2、T0r3 ...)。

    FistEngine::publish_with_deps

    fn FistEngine::publish_with_deps(self : FistEngine, project_dir~ : String, description~ : String, depends_on? : Array[String], created_by? : String, now? : String, ns? : String) -> Result[String, String]

    创建任务时指定依赖(depends_on 为依赖的任务 id 列表)

    FistEngine::ready_tasks

    fn FistEngine::ready_tasks(self : FistEngine, ns_filter? : String) -> Array[
    Task
    ]

    获取当前命名空间内所有 Pending 且依赖满足、可领取的任务

    FistEngine::reject_task

    fn FistEngine::reject_task(self : FistEngine, task_id~ : String, reason? : String, by~ : String, now~ : String) -> Result[
    Task
    , String]

    验收拒绝(reject):待验收 -> 已打回

    FistEngine::reopen_task

    fn FistEngine::reopen_task(self : FistEngine, task_id : String, now : String) -> Result[
    Task
    , String]

    回滚/重派:任意非归档任务 -> 已领取(M4 heal watchdog 用)。返回回滚后的任务。

    FistEngine::resume_task

    fn FistEngine::resume_task(self : FistEngine, task_id~ : String, now~ : String) -> Result[
    Task
    , String]

    恢复任务:已暂停 -> 已领取

    FistEngine::retry_task

    fn FistEngine::retry_task(self : FistEngine, task_id~ : String, now~ : String) -> Result[
    Task
    , String]

    打回后重试(retry):已打回 -> 执行中

    FistEngine::store_delete_heartbeat

    fn FistEngine::store_delete_heartbeat(self : FistEngine, task_id~ : String) -> Result[Unit, String]

    删除心跳记录(委托给 store 后端)。

    FistEngine::store_list_heartbeats

    fn FistEngine::store_list_heartbeats(self : FistEngine) -> Array[(String, String, String, String)]

    列出全部心跳记录(供启动时加载)。

    FistEngine::store_write_heartbeat

    fn FistEngine::store_write_heartbeat(self : FistEngine, agent_id~ : String, task_id~ : String, last_seen~ : String, status~ : String) -> Result[Unit, String]

    写入心跳记录(委托给 store 后端)。

    FistEngine::submit

    fn FistEngine::submit(self : FistEngine, task_id~ : String, now~ : String) -> Result[
    Task
    , String]

    FistEngine::topo_sort

    fn FistEngine::topo_sort(self : FistEngine, task_ids : Array[String]) -> Array[String]

    拓扑排序(简化版):按依赖深度排序,深度小的先执行

    FistEngine::verify

    fn FistEngine::verify(self : FistEngine, task_id~ : String, verifier~ : String, now~ : String) -> Result[
    Task
    , String]

    验收(verifier):Reviewing -> Completed;若因此父任务全部子任务完成,则父任务自动待验收。

    COMPLEXITY_L1

    let COMPLEXITY_L1 : String

    复杂度分级枚举(文本常量)

    COMPLEXITY_L2

    let COMPLEXITY_L2 : String

    COMPLEXITY_L3

    let COMPLEXITY_L3 : String

    COMPLEXITY_L4

    let COMPLEXITY_L4 : String

    COST_TIER_FREE

    let COST_TIER_FREE : String

    成本档枚举

    COST_TIER_HOLD

    let COST_TIER_HOLD : String

    COST_TIER_PREMIUM

    let COST_TIER_PREMIUM : String

    advance_mark_prefix

    fn advance_mark_prefix() -> String

    自动续轮标记前缀:已完成但尚未续轮的根任务,其 deliverable 不带该前缀。

    budget_check

    fn budget_check(limit : Double, current : Double) -> Json

    预算检查结果 返回 JSON:{ limit, current, exceeded, remaining, action }

    budget_check_json

    fn budget_check_json(args : Json) -> Json

    从 JSON 参数计算 budget_check(供 MCP 工具调用)。 输入 JSON:{ "limit": Number, "current": Number }

    gate_enabled

    fn gate_enabled(t :
    Task
    ) -> Bool

    任务是否开启外部判据闸门。

    gate_mark

    fn gate_mark() -> String

    外部判据标记:出现在任务 description 中即表示该任务验收必须过闸门。

    omega_author_prefix

    fn omega_author_prefix() -> String

    语料 author 前缀(纯文本行,避免为嵌入 author 而引入 JSON 转义)。

    omega_clean_slice

    fn omega_clean_slice(s : String) -> String

    去掉切片文本中已存在的强验证标记(避免递归下钻时标记逐层累积)。

    omega_enabled

    fn omega_enabled(t :
    Task
    ) -> Bool

    任务是否处于强验证模式(未打标记 = 关闭 = 既有行为)。

    omega_escalation_id

    fn omega_escalation_id(task_id : String, stage : String, round : Int) -> String

    升级记录 id:escalation:<task_id>::r

    omega_mark

    fn omega_mark() -> String

    强验证标记:出现在任务 description 中即表示该任务处于强验证模式。

    omega_max_rounds_default

    fn omega_max_rounds_default() -> Int

    默认最大打回轮次。

    omega_norm_max_rounds

    fn omega_norm_max_rounds(v : Int) -> Int

    归一化轮次上限:非正数取默认,超过 10 硬截断(防死循环的最终边界)。

    omega_result_id

    fn omega_result_id(task_id : String, round : Int) -> String

    成果复验记录 id:result:<task_id>:r

    omega_spec_id

    fn omega_spec_id(task_id : String, round : Int) -> String

    语料记录 id:spec:<task_id>:r

    plan_route

    fn plan_route(description : String, n_files? : Int) -> Json

    组合 schedule + route:输入 description + n_files,输出完整调度+路由方案。 返回 JSON:{ schedule: {...}, route: {...} }

    root_task_id

    fn root_task_id() -> String

    根任务 id

    route

    fn route(complexity : String, cost_tier : String) -> Json

    路由结果 返回 JSON:{ executor, cost_tier, hold, priority, reason }

    schedule_json

    fn schedule_json(args : Json) -> Json

    从 JSON 参数中计算 schedule(供 MCP 工具调用)。 输入 JSON:{ "description": String, "n_files"? : Int }

    schedule_task

    fn schedule_task(desc : String, n_files? : Int) -> Json

    核心调度函数:根据描述长度、文件数、风险词计算分级与参数。

    输入: desc 任务描述文本 n_files 涉及文件数(可选,默认 1) 返回 JSON: { complexity, n_split, depth, parallel, cost_tier, hold, reason }