flail 检测器
Session-log flail analysis——机械双击规则. ADLC 阶段 C6/P4主管。 。 。 .
监视一个用于 flail 签名的构建会话日志 。 触发:发布判决
flail,打印一个推荐块,然后2号出口,这样CI就可以打开了。 满
有决定力,没有LLM呼叫.
使用量
flail-detector <log-file> [--scope <glob>...] [--max-repeat <n>] [--max-bytes <n>] [--spent-tokens <n>] [--budget <n>] [--record] [--ticket <id>] [--json]
参数
| 参数 | 说明 |
|---|---|
<log-file> | 会话日志文件分析路径( 需要) |
旗帜
| 旗帜 | 默认 | 说明 |
|---|---|---|
--scope <glob> | (无) | 已声明的镜光图案( 可重复) 。 当给出时,在工具日志行中找到的文件路径会被标记为: 侵犯范围。 。 。 . |
--max-repeat <n> | 2 | 触发 重复错误 当一个正态错误签名出现qqn次时发出信号. |
--max-bytes <n> | (无限制) | 触发 大小 当日志文件超过n字节时发出信号. |
--spent-tokens <n> | (无) | 计算出该票的支出(例如: adlc spend --ticket <id> --json) (中文(简体) ). 必须用 --budget。 。 。 . |
--budget <n> | (无) | 罚单已经宣布为象征性预算(ticket.budget,或 model-router' 所排放的平板电脑' budget) (中文(简体) ). 触发 预算 信号 --spent-tokens 超过它。 必须用 --spent-tokens - 要么单独是使用错误. |
--record | 关 | 在一清二楚的判决中 flail-check 条目为 .adlc/manifest.jsonl (ADLC P4证据——见 @adlc/runner) (中文(简体) ). 从不写 flail 判决,从不 could-not-analyze 结果(问题622). |
--ticket <id> | (无) | 进入录制清单的票 可选记录为: null 在省略时,与 rails-guard --record。 。 。 . |
--json | 关 | 用于管弦乐手的机器可读JSON输出. |
--help | —— 说 | 打印帮助并退出 0. |
退出代码
| 代码 | 含义 |
|---|---|
0 | 门口通过——没有检测到闪光信号(清洁) |
1 | 操作错误——文件未找到,参数差,或 could-not-analyze:该日志没有任何分析(没有非空行). 从来没有过关——任何记录,即使有 --record。 。 。 . |
2 | 门失败——触发了一个或多个发光信号 |
信号
1. 重复错误
匹配线条 /error|exception|failed|cannot|ENOENT/i 已正常化
(小写; 条形数字、 二进制字符串、 引用字符串、 绝对路径),
然后按单个签名计算。 正在发生的任何签名 --max-repeat
时间触发这个信号.
正常化 确保 Error: cannot find module "lodash" at line 42
财务报告和审定财务报表 Error: cannot find module "express" at line 99 崩溃到相同的
签名 – 错误类型是最重要的,而不是不同的操作.
2. 范围侵犯
只有活动时 --scope 给出。 从普通路径取出的文件
工具日志模式 :
Writing <path>Editing <path>Created <path>"file_path":"<path>"(JSON工具-日志格式)
带有路径的动词( :Writing, (中文(简体) ), Editing, (中文(简体) ), Created)必须打开行,在缩进和日志前缀后可选择:时间戳(12:03:01 Writing <path>页:1[INFO] Editing <path>),或大写级别名称(WARN Created <path>) (中文(简体) ). 动词在其它任何地方都是流传而无路可走,所以工具结果如: File created successfully at: <path> 未读取为写入 successfully。 。 。 .
任何不匹配至少一条路径 --scope glob是一种违反.
3. 编辑-编辑
在QQ 3 写入/编辑日志行中出现相同的文件路径( 不管 哪个动词——写、编辑或创建)。 表示代理是循环 重回同一文件.
4. 规模
何时 --max-bytes 如果日志文件字节数超过
阈值.
5. 预算
当两者 --spent-tokens 财务报告和审定财务报表 --budget ,如果测量到
支出超过票面上宣布的上限——ADLC.md C6's "token system past"
门票预算"触发。 两个数字都来自日志本身:
flail-detector 不测量符号,它只比较两个数字
电话供应。 与 adlc spend 测量边和
model-router已发射 budget (或机票自己申报) budget
字段)。 只给两个旗帜中的一个是使用错误
(exit 1) 而不是沉默的无声.
输入处理
如果日志中一半以上的非空行解析为 JSON 对象,则
文件被视为 贾森勒: 键的字符串值 content, (中文(简体) ), text,以及
message 递归取出并输入信号探测器。 全体
其他文件作为 纯文本,一次一行。 (笑声).
产出
可读( 默认) :
flail-detector: FLAIL
bytes: 361
signals:
repeated-error (1 signature(s)):
[2x] error: cannot resolve module at line in
scope-violation (1 path(s) outside scope):
/etc/hosts
edit-churn (1 file(s) edited >= 3 times):
[3x] src/index.ts
recommendation:
Kill the session. Append these dead-ends to the ticket: error: cannot resolve module at line in
机器可读取(--json:
{
"verdict": "flail",
"signals": [...],
"bytes": 361,
"recommendation": "Kill the session. Append these dead-ends to the ticket: ..."
}
当日志无所分析时——它是空的或只有空白的——
判决是 could-not-analyze 且退出代码为 1,而非 0 :
{
"verdict": "could-not-analyze",
"reasons": ["log has no non-empty lines (empty or whitespace-only file)"],
"bytes": 0,
"signals": []
}
在文本模式下,结果印数相同 flail-detector: could not analyze — <reasons>
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}请说 这是业务成果,从来不是通行证:主管指向一个日志
从未写过的路径不能有绿色P4门 --record 写入否
flail-check 条目(问题622).
范围故意不属于本决定的范围:
完全没有写作 主管,比如 @adlc/fleet 传票 --scope
在每次咨询中——所以对有行但无可提取文件路径的日志进行分析
通常情况下(重复的 -- -- 过火、大小和预算信号仍在起火;范围信号)
根本没什么可标注的). 解决了从真实日志中提取路径不足的问题
第623期的论文.
实例
# Analyze a plain-text session log
flail-detector session.log
# Enforce scope (write/edit must stay inside src/ or test/)
flail-detector session.log --scope 'src/**' --scope 'test/**'
# Raise the error-repeat threshold to 3
flail-detector session.log --max-repeat 3
# Flag oversized logs (e.g. > 1 MB context)
flail-detector session.log --max-bytes 1048576
# Flag token spend past the ticket's declared budget
flail-detector session.log --spent-tokens 85000 --budget 50000
# JSON for orchestrators
flail-detector session.log --json
# Record P4 evidence on a clean pass (adlc run p4 requires this)
flail-detector session.log --scope 'src/**' --record --ticket T42
ADLC 阶段
C6/P4主管. 机械地编码出两击再生规则. 设计原理见ADLC.md §C6.
打算在每次施工后由P4主管援引。 打开 flail
(第2出):杀死会话,将死端的签名附入罚单,并
再生新鲜。 第二起触发:升级为P2——罚单错了,不是
探员.
与兄弟姐妹工具的关系
- 护栏(C5): 执行 git diffs 上被冻结的栏杆; 显示器 监视实时会话记录 用于行为漂移 .
- 协商一致(C7): fallail 后引用的扇出固定策略 已确认; flail-deactor 是触发它的上游门.
- 死前(C2)- 上游风险分析 风险在运行时间实现.
核心差距
无。 此工具只使用 parseArgs, (中文(简体) ), opError, (中文(简体) ), printJson, (中文(简体) ), sha256, (中文(简体) ), pass, (中文(简体) ),
gateFail,以及 globMatch 从 @adlc/core没有LLM,没有git. --record 这是
一个分类账写这个工具,通过 @adlc/gate-manifest是因为
appendManifestEntry,镜像 rails-guard是因为 --record (问题106)-
没有它, adlc run p4是因为 flail-check 永远无法满足要求
以任何有记录的流量表示.