lemmaly 是一个算法优先的纪律型技能,核心是让模型在写代码前先做算法推理,而不是事后补救。它假设模型本身已掌握 Big-O、哈希表、分治、动态规划、排序、图算法和摊还分析,问题在于不会自发应用。
用途:在编写、编辑或审查涉及循环、集合、查找、搜索、连接、递归、图、查询,或对超过少量元素做计算的代码时使用;也用于审计已知反模式(await-in-loop、循环内 .includes、循环内字符串拼接、SELECT *、N+1 等)以及审查“看起来地道”但可能隐藏 O(n²) 或 N+1 的 AI 生成代码。
主要能力:强制“铁律”——没有声明复杂度、数据结构和算法族,就不写非平凡代码。写代码前必须按顺序给出:time = O(?)、space = O(?),并命名主导输入维度及其现实量级;说明所用数据结构及一句理由;指明算法族(线性扫描、双指针、滑动窗口、二分、排序+扫描、哈希连接、BFS/DFS、拓扑排序、Dijkstra/A*、并查集、DP、贪心、递归+记忆化、前缀和、线段树、monoid 归约之一)。循环内的 I/O、重复计算、重复排序、线性扫描、重复分配、中间集合物化都被默认视为错误,除非写一行理由。禁止编造复杂度或性能数字,无法推导写 <complexity: TBD>,未测量写 <measured: TBD>。
使用方式:按“写前协议”七步执行——问题形态、输入维度、目标复杂度、数据结构、算法族、边界情况、代码。上游仓库提供确定性 CLI 扫描器,覆盖 11 种语言的 59 条规则,按 CRITICAL/HIGH/MEDIUM 分级。扫描器为可选,不应自动从默认分支克隆运行;如用户明确需要,应固定到已审查的发布标签或提交,使用临时目录,并在运行前显示解析出的提交。示例命令:
tmpdir="$(mktemp -d)" git clone --filter=blob:none https://github.com/morsechimwai/lemmaly.git "$tmpdir/lemmaly" git -C "$tmpdir/lemmaly" checkout --detach <reviewed-tag-or-commit> git -C "$tmpdir/lemmaly" rev-parse HEAD node "$tmpdir/lemmaly/cli/lemmaly.js" scan <path> node "$tmpdir/lemmaly/cli/lemmaly.js" rules
适用场景:日常经典算法纪律;当 n ≥ 10⁶、需要概率数据结构、FFT、降维、近似算法或计算几何时升级到 mathguard;当明显写法存在微妙正确性陷阱(循环不变式、终止性、递归基例、边界)时升级到 invariant-guard;当已有代码已上线且复杂度差时使用 complexity-cuts。
限制:不能替代性能剖析,只强制渐近推理而非测量;是推理门禁而非代码生成器,不会自动重写已有代码;规则目录与提示仅支持英文;n < ~10 的平凡集合和一次性设置代码豁免;无法阻止有意为之的暴力解法,只要作者写出一行理由即可;59 条规则由上游 CLI 扫描器执行,而非仅靠本技能文件。