新闻详情

新闻详情

首页 / 资讯中心 / 详情

AI Engineer Coach规则引擎源码剖析:Markdown+DSL如何驱动45条反模式检测

发布时间:2026/9/25 2:19:17来源:尧图网络
AI Engineer Coach规则引擎源码剖析:Markdown+DSL如何驱动45条反模式检测
AI Engineer Coach规则引擎源码剖析MarkdownDSL如何驱动45条反模式检测【免费下载链接】AI-Engineering-Coachbetter agentic engineering项目地址: https://gitcode.com/gh_mirrors/ai/AI-Engineering-CoachAI Engineer CoachAI工程师教练是一款分析 AI 编码助手使用习惯的开源工具其核心是一个规则引擎用 45 个 Markdown 规则文件 一套自研检测 DSL检测提示词偷懒、会话冗长、跳过代码审查等反模式所有数据均不离开本地。这篇文章带你从源码层面看懂这套「Markdown DSL」检测原理的完整设计。整体架构45条规则从哪来45 条内置规则并不是写死在代码里的函数而是存放在规则目录下的 Markdown 文件内置规则目录src/core/rules/ —— 每个.md文件对应一条反模式规则如 mega-sessions.md、weekend-overwork.md、speed-accept.md规则加载器rule-loader.ts —— 负责从三层位置读取规则文件规则引擎核心rule-engine.ts —— 负责解析、合并优先级、求值与预览rules/*.md45条规则 │ rule-loader 读取注册 ▼ rule-engine三层合并 → DetectionRule 对象 │ rule-parser 解析 frontmatter 正文模板 ▼ rule-pipeline提取 detect 检测逻辑块 → Pipeline │ dsl/ 词法分析 → 语法分析 → 解释执行 ▼ 检测结果触发/未触发 描述模板填充三层规则优先级rule-loader.ts 定义了规则加载的三个层级getAllRules() 按优先级合并层级位置说明1. 内置层扩展内置的dist/rules/出厂自带的 45 条规则2. 个人层~/.ai-engineer-coach/rules/用户级跨工作区生效3. 项目层workspace/.ai-engineer-coach/rules/团队级优先级最高同 ID 的规则会按「项目 个人 内置」覆盖而你在界面里临时调整阈值产生的内存级覆盖又凌驾于一切之上。这意味着你不需要改一行 TypeScript只需写一个 Markdown 文件就能新增或修改检测规则——这正是这套架构最巧妙的一点。解剖一条规则一个文件 一份完整检测器以最经典的 mega-sessions.md检测超长会话为例一个规则文件由三部分组成1️⃣ YAML Frontmatter元数据--- id: mega-sessions name: Mega Sessions group: session-hygiene severity: high scope: sessions thresholds: maxMessages: 50 ---id是唯一标识group决定它归入哪个实践组提示词质量、会话卫生、代码审查、工具掌握、上下文管理共 5 组severity是严重级别thresholds是可调阈值——比如超过 50 条消息就判定为「巨型会话」。2️⃣ 正文模板面向用户的文案# When Triggered、# How to Improve、# Examples三个章节使用{{count}}、{{pct}}、{{extra.maxMessages}}这类模板变量。检测触发后evaluateRule() 会把真实统计值填进模板生成类似「3 个会话超过 50 条消息长会话会损害上下文质量」的提示。3️⃣ 检测逻辑块DSL 核心detect scan: sessions match: requestCount thresholds.maxMessages aggregate: count check: count 0 examples: {{workspaceName}}: {{requestCount}} messages这五行声明式指令就是整条规则「怎么检测」的全部定义。 [![AI Engineer Coach 按项目维度展示反模式规则在多个工作区中的触发对比](https://raw.gitcode.com/gh_mirrors/ai/AI-Engineering-Coach/raw/74eb09ca71078804611142da12402016441fc1bb/assets/screen-patterns-projects.png?utm_sourcegitcode_repo_files)](https://link.gitcode.com/i/e64cd66afabebb3ba82f40e63961b861) ## DSL 编译管线从一行表达式到可执行判定 detect 块由 [rule-pipeline.ts](https://link.gitcode.com/i/39f20bd020e7841a1841e6760c39a65b) 编译为「发射器 触发器」两个函数。管线支持六种指令 | 指令 | 作用 | 类比 SQL | | --- | --- | --- | | scan | 扫描 requests请求或 sessions会话 | FROM 子句 | | match | 行级过滤表达式 | WHERE 子句 | | aggregate | 聚合为 count 或 ratio占比 | GROUP BY | | check | 对聚合结果做触发判定 | HAVING 子句 | | examples | 示例文案模板 | — | | severity | 动态严重级别 | — | 而 match 和 check 里写的表达式则由自研的 **指标表达式 DSL** 编译执行。这套 DSL 在 [src/core/dsl/](https://link.gitcode.com/i/fb8ed7c7b99ef1b142e07845c6dc292f) 目录下是一个教科书式的小型语言实现 - **词法分析**[lexer.ts](https://link.gitcode.com/i/536930847c773a34a997b872af5b5a1b) 把 messageLength thresholds.minChars AND messageLength 0 这样的字符串切分为 、、AND、数字、引号字符串、正则等 Token - **语法分析**[parser.ts](https://link.gitcode.com/i/29a2de12ed8793f23b60d3c7fa21a2bc) 把 Token 序列组装成 AST抽象语法树解析深度上限 64 层 - **解释执行**[interpreter.ts](https://link.gitcode.com/i/35156a2703b8af84183d814356387dfe) 遍历 AST 求值内置了 contains、matches(s, /re/)、dayOfWeek(ts)、sum(arr, field) 等 40 个函数甚至还有 hasProfanity(s)检测脏话、adjacentPairCount检测秒批 AI 代码对这类专为行为分析定制的领域函数 - **安全执行**[safe-regex.ts](https://link.gitcode.com/i/04cbd512fa2c5c25534c1b0996d2667b) 实现了「安全正则」编译防止恶意规则文件用病态正则触发 ReDoS 卡死 更稳妥的是[interpreter.ts](https://link.gitcode.com/i/35156a2703b8af84183d814356387dfe#L99-L117) 给每次求值设置了 500 万步执行预算和 500 层递归上限——一条写坏的规则只会「降级为不匹配」绝不会拖垮整个分析流程。DSL 的公共 API 和校验函数集中在 [dsl/index.ts](https://link.gitcode.com/i/ead868491a1e264d549d4bc0e26c3e2c)。 ## 实战走查「秒批 AI 代码」是怎么被抓住的 [speed-accept.md](https://link.gitcode.com/i/acd7f9fe3ad6dba03fe4a30a77865b62)检测「AI 输出 20 行以上代码后 15 秒内就发送下一条消息根本没审查」的检测逻辑 text detect scan: sessions match: requestCount 2 aggregate: count pairs: adjacentPairCount(allSessions, thresholds.minAiLoc, thresholds.maxGapMs) check: pairs.count thresholds.minOccurrences examples: {{workspaceName}}: speed-accept detected执行过程非常直观 1. **scan**以会话为扫描单位 2. **pairs**调用 DSL 的领域函数逐对检查「AI 代码行数 ≥ 20 且相邻消息间隔 ≤ 15 秒」的次数 3. **check**命中次数 ≥ 5 时触发规则阈值都在 frontmatter 里界面可改 4. **模板填充**触发后向用户展示每个工作区的命中明细 [![AI Engineer Coach 消耗面板展示按请求级别统计的高级模型消耗与浪费场景](https://raw.gitcode.com/gh_mirrors/ai/AI-Engineering-Coach/raw/74eb09ca71078804611142da12402016441fc1bb/assets/screen-consumption.png?utm_sourcegitcode_repo_files)](https://link.gitcode.com/i/e64cd66afabebb3ba82f40e63961b861) ## 这套设计的精华在哪 - **规则即文档**每条规则既是可执行代码也是写给用户的说明书Description / When Triggered / How to Improve新人读一个 Markdown 就懂一条检测 - **零代码扩展**新增反模式 新增一个 .md 文件支持 extends: 继承现有规则再改阈值甚至支持在规则文件里写 # Tests 测试夹具做自校验见 [rule-pipeline.ts](https://link.gitcode.com/i/39f20bd020e7841a1841e6760c39a65b#L13-L16) - **可预览可实验**[rule-engine.ts](https://link.gitcode.com/i/835ec344199db2bc661b8ff654a63d77#L269-L302) 提供了 getRulePreviewStats()规则编辑器页面[page-rule-editor.ts](https://link.gitcode.com/i/00e6cc53e52afe494f696f3a723e684a)能实时展示「这条规则在当前数据上会命中多少条」调参像做实验 - **安全兜底**词法/语法/解释三层各自抛错被捕获配合安全正则与执行步数预算用户自定义规则永远不会把插件拖崩 想动手体验克隆仓库后按 [docs/content/getting-started/installation.md](https://link.gitcode.com/i/96bf881ca05f5cf0bf91fbcd900385e6) 安装在反模式页面就能看到 45 条规则在你自己的会话日志上跑起来规则写法细节可参考项目贡献指南 [CONTRIBUTING.md](https://link.gitcode.com/i/37b70f30382f8539dab98fac5e91178c)。【免费下载链接】AI-Engineering-Coachbetter agentic engineering项目地址: https://gitcode.com/gh_mirrors/ai/AI-Engineering-Coach创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

QKeyMapper按键序列进阶:用»序列+Repeat循环+OnlyOnce打造一键连招宏 2026/9/25 2:59:40

QKeyMapper按键序列进阶:用»序列+Repeat循环+OnlyOnce打造一键连招宏

QKeyMapper按键序列进阶:用序列Repeat循环OnlyOnce打造一键连招宏 【免费下载链接】QKeyMapper [按键映射工具] QKeyMapper,Qt开发Win10&Win11可用,不修改注册表、不需重新启动系统,可立即生效和停止。支持游戏手柄映射到键鼠…

阅读更多 →
SolidWorks 2024曲面建模实战:从草图到可开模外壳全流程 2026/9/25 2:59:34

SolidWorks 2024曲面建模实战:从草图到可开模外壳全流程

做 SolidWorks 2024 曲面设计这段时间,我把不少原来想当然的操作都推倒重来了一遍。很多朋友一听到曲面建模就下意识觉得是进阶内容,不是自己该碰的东西,实际上只要你有拉伸、旋转、圆角这些基础,曲面这条路完全走得了&#xff0c…

阅读更多 →
WinMerge 过滤器(Filters)完全指南:用 .flt 文件控制文件与目录差异比较范围 2026/9/25 2:59:34

WinMerge 过滤器(Filters)完全指南:用 .flt 文件控制文件与目录差异比较范围

桌面应用开发工具 【免费下载链接】winmerge WinMerge is an Open Source differencing and merging tool for Windows. WinMerge can compare both folders and files, presenting differences in a visual text format that is easy to understand and handle. 项目地址&…

阅读更多 →
用MCP搭建AI驱动的吉卜力风格影视分镜脚本自动化生产系统:TaoToken统一Key接入与config.toml配置实战 2026/9/25 2:59:33

用MCP搭建AI驱动的吉卜力风格影视分镜脚本自动化生产系统:TaoToken统一Key接入与config.toml配置实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
IronClaw Reborn 配置契约解析:类型化 Settings 仓库、五层配置模型与文件投影机制 2026/9/25 2:59:33

IronClaw Reborn 配置契约解析:类型化 Settings 仓库、五层配置模型与文件投影机制

人工智能AI 应用交互助手AI Agent 【免费下载链接】ironclaw IronClaw is an Agent OS focused on privacy, security and extensibility 项目地址: https://gitcode.com/gh_mirrors/iro/ironclaw 点击查看 免费下载 本篇基于 IronClaw 仓库中的 Reborn 合同冻结草…

阅读更多 →
jc ntpq 解析器:把 `ntpq -p` 的 NTP 时钟源状态表转成结构化 JSON 数据 2026/9/25 2:59:27

jc ntpq 解析器:把 `ntpq -p` 的 NTP 时钟源状态表转成结构化 JSON 数据

开发工具 【免费下载链接】jc CLI tool and python library that converts the output of popular command-line tools, file-types, and common strings to JSON, YAML, or Dictionaries. This allows piping of output to tools like jq and simplifying automation scripts.…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉