let trace = @frontierlab.insertion_sort_trace([3, 1, 2])
let result = @frontierlab.diagnose_trace(
trace,
contract=@frontierlab.sorted_int_sequence_contract(object_id="values"),
expected=trace,
)
assert_true(result.passed())
let lcs = @frontierlab.lcs_dp_trace("ABCBDAB", "BDCABA")
let tree = @frontierlab.red_black_tree_trace([
@frontierlab.Insert(30),
@frontierlab.Insert(10),
@frontierlab.Insert(20),
@frontierlab.Find(20),
])
FrontierLab
FrontierLab 是一个 MoonBit 算法轨迹库。它把算法执行过程记录为带稳定实体 ID 的语义事件和场景快照,并提供检查、对比、调试、JSON 编解码和精修后的离线 HTML 可视化能力。
在线打开 AI Trace Clinic · Mooncakes · Trace Schema v1
安装
在 MoonBit 项目中添加依赖:
然后在需要使用 FrontierLab 的包中导入
shop1111/frontierlab。最小示例
下面的例子生成一条插入排序轨迹,再检查最终序列是否有序:
这里的“轨迹规则”(代码类型为
TraceContract)是一个检查器:它检查轨迹中的 步骤或最终结果是否违反预先定义的要求,并返回具体的失败步骤和原因。sorted_int_sequence_contract检查最终整数序列是否有序;sequence_transition_contract检查事件描述的变化是否与场景快照一致。自定义算法通常按以下顺序接入:
TraceBuilder记录Compare、Swap、Visit、Union、Relax等有意义的事件和对应场景。finish得到AlgorithmTrace。可直接运行的完整代码见 API 示例 和集成说明。
内置算法 Adapter
Adapter 把算法输入和执行步骤转换成统一的
AlgorithmTrace,因此这些轨迹可以 直接交给 JSON、HTML、分析、断点、diff 和诊断 API:insertion_sort_trace、insertion_sort_items_traceSequenceCompare、Swapunion_find_traceSetsCompare、Union、Updatefibonacci_dp_trace、coin_change_dp_traceSequenceUpdate、依赖高亮zero_one_knapsack_dp_trace、lcs_dp_traceGridUpdate、Visitred_black_tree_traceGraphsearch_trace_to_algorithm_traceGridVisit、RelaxFibonacci 和零钱兑换保留各自简单的算法级入口,但内部共享一维 DP 场景表达。 红黑树支持
Insert和Find操作;节点标签中的[R]、[B]在不修改 Trace Schema v1 的前提下持久表示颜色。CLI
从源码运行统一诊断命令:
这组示例输入故意包含错误,所以命令返回退出码
2,并报告第一次差异在 step 10。CLI 的退出码含义为:0:输入有效,并且轨迹通过检查且与参考轨迹一致;2:输入有效,但轨迹违反规则或与参考轨迹不同;1:参数、文件、JSON 或 Schema 无效。GitHub Release 同时提供 Windows 可执行文件和 SHA256。也可以在本地构建:
生成算法可视化
最直接的用法是让 CLI 生成一个完全离线的 HTML 文件,然后双击打开。页面默认 使用中文,可切换 English,并会显示比较对象、交换方向、旧值到新值、DP 依赖、 网格坐标、图节点移动、Adapter 注释和伪代码行。
如果已经有 Schema v1 JSON 轨迹,则使用:
render_trace_svg与render_trace_svg_frames在 v0.9 仅保留为旧代码兼容入口, 已经标记弃用,并计划在 v1.0 删除。新项目应选择交互 HTML;需要交换或长期存档 轨迹数据时选择 Schema v1 JSON。离线浏览器工具
AI Trace Clinic 是一个单文件离线页面,可导入、回放和比较轨迹,不依赖服务器、 CDN 或外部脚本:
生成后直接用浏览器打开
_build/playground.html。页面自带一个错误示例,用于 展示规则失败、第一次差异、状态变化和聚焦切片。核心 API
TraceBuilder::new、record、finishdiagnose_trace、TraceDiagnosis::passeddiff、breakpoint_hits、slice、first_divergenceencode_json、AlgorithmTrace::decode_json、validaterender_trace_html、render_trace_playground完整公开接口由
moon info生成在 pkg.generated.mbti 中。独立 consumer 示例
consumer/frontierlab_consumer_demo是一个单独的 MoonBit 项目。它通过 Mooncakes 安装shop1111/frontierlab,不引用当前仓库中的源码,因此可以模拟 一个真正的外部使用者。这个项目有两个作用:验证发布包确实能被其他项目安装和调用,以及提供一个完整 的集成示例。普通用户不需要运行它;安装依赖并调用上面的公开 API 即可。
发布后可用以下命令核验:
consumer 不会被打入 FrontierLab 的 Mooncakes 源码包,它运行时生成的
evidence/目录也不会提交到 Git。开发与验证
更多资料:
License
MIT