ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

ruflo-jujutsu 插件深度解析:基于 6 个 MCP 工具的 Git 差异分析、风险评分与评审人推荐

ruflo-jujutsu 插件深度解析:基于 6 个 MCP 工具的 Git 差异分析、风险评分与评审人推荐 ruflo-jujutsu 插件深度解析基于 6 个 MCP 工具的 Git 差异分析、风险评分与评审人推荐【免费下载链接】ruflo The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/rufloruflo-jujutsu 是 Ruflo 生态中面向 Git 工作流的插件核心价值在于把git diff输出升级为结构化的风险评分、变更分类与评审人推荐结果。本文以该插件的 README 为主体结合其 ADR 契约、冒烟测试脚本以及analyze-tools.ts/diff-classifier.ts的真实实现讲解插件的安装方式、6 个analyze_*MCP 工具的完整参数、风险评分与分类算法细节、/jujutsu命令实战、与 ruflo-adr/adr check的集成链路以及smoke 即契约的验证方式。读完本文你将能独立评估一次变更的风险等级、判断变更类型、得到评审人建议并理解这套能力在 Ruflo 插件体系中的契约约束。一、插件定位与核心特性ruflo-jujutsuv0.2.1被定义为 Advanced git workflows with diff analysis, risk scoring, and reviewer recommendations。它并不自己解析 diff 文本而是把能力封装为 6 个analyze_*MCP 工具供命令、技能与 Agent 调用。这些工具的底层实现位于 v3/claude-flow/cli/src/mcp-tools/analyze-tools.ts工具定义分别在 L24、L100、L143、L185、L234、L291真正的算法引擎则在 v3/claude-flow/cli/src/ruvector/diff-classifier.ts。插件对外暴露的完整能力面Surface为6 个 MCP 工具analyze_diff、analyze_diff-risk、analyze_diff-classify、analyze_diff-reviewers、analyze_file-risk、analyze_diff-stats1 个命令/jujutsu对当前 diff 做风险评分2 个技能diff-analyzediff 风险/评审人/分类分析、git-workflow分支管理与 PR 生命周期1 个 Agentgit-specialistGit 工作流专家。四大核心特性如下表特性说明Diff analysis综合性变更分析输出整体风险等级与结构化结果Change classification自动将变更归类为 feature / bugfix / refactor / docs / test / config / style 等Reviewer recommendations基于代码所有权路径语义与风险等级推荐评审人File-level risk逐文件风险拆解支持针对高风险文件做定向 review二、安装插件通过 Ruflo 的插件市场安装命令如下/plugin marketplace add ruvnet/ruflo /plugin install ruflo-jujutsuruflo装好后插件在仓库中的目录结构为 plugins/ruflo-jujutsu其中agents/git-specialist.md、commands/jujutsu.md、skills/diff-analyze/SKILL.md、skills/git-workflow/SKILL.md以及scripts/smoke.sh共同构成插件的全部契约要素。插件的元信息声明在plugins/ruflo-jujutsu/.claude-plugin/plugin.json版本号0.2.1关键词包含mcp、change-classification、reviewer-recommendation与冒烟脚本校验的条目一一对应。三、6 个 analyze_* MCP 工具完整参数与输出插件的工具面由 analyze-tools.ts 统一导出analyzeTools数组按顺序装载 6 个工具。下表是各工具的用途与输入参数工具用途关键参数analyze_diff全量 diff 分析风险 分类 评审人 统计ref(默认HEAD)、includeFileRisks、includeReviewers、useRuVectoranalyze_diff-risk对暂存/未暂存 diff 输出风险分数ref(默认HEAD)analyze_diff-classify将变更归类为 feature/bugfix/refactor/perf/security/docs 等ref(默认HEAD)analyze_diff-reviewers基于代码所有权推荐评审人ref(默认HEAD)、limit(默认 5)analyze_file-risk单文件风险拆解path(必填)、additions、deletions、status(added/modified/deleted/renamed默认 modified)analyze_diff-stats行数增删、触及文件数、变更状态统计ref(默认HEAD)各工具的共同点在于ref支持HEAD~1、main..feature、commit hash 等 Git 引用形式并且统一经过validateGitRef校验非法引用会直接返回{ error: true, message, ref }而不执行分析。以analyze_diff为例其 handler 在 analyze-tools.ts 中会把ref校验通过后的结果组装为{ ref, timestamp, files, risk, classification, summary }并按开关追加fileRisks与recommendedReviewers。几个值得注意的实现细节analyze_diff的includeFileRisks/includeReviewers/useRuVector三个布尔参数在 handler 中均以! false判断即不传时按 true 处理默认返回文件级风险与评审人建议useRuVector为 true 时会尝试加载ruvector/diff引擎加载失败则优雅回退到原生实现见 diff-classifier.ts。analyze_diff-stats返回的byStatus会区分 added / modified / deleted / renamed并单独统计binaryFiles见 analyze-tools.ts。analyze_file-risk是唯一不依赖git引用的工具它接收显式的path 增删行数 状态即可独立打分适合对已解析出的单个文件做定向评估见 analyze-tools.ts。四、风险评分机制源码剖析风险评分是插件的核心能力实现在 diff-classifier.ts 的assessFileRiskL545-L600与assessOverallRiskL605-L625中。4.1 单文件风险分assessFileRisk单文件分数由三组因子累加上限 1001. 变更体量基于additions deletions变更超过 300 行30理由 Large change size (300 lines)变更超过 100 行15理由 Medium change size (100 lines)。2. 路径语义基于小写路径正则匹配分数可叠加security|auth|crypto|password40安全敏感文件payment|billing|transaction35支付相关database|migration|schema25数据库相关config|env|settings20配置文件core|main|index15核心模块。3. 状态与类型文件被删除status deleted10二进制文件5。等级映射score ≥ 60 →critical≥ 40 →high≥ 20 →medium否则low。最终返回{ file, risk, score, reasons }reasons数组完整记录了所有触发原因便于在评审意见中给出可解释的依据。4.2 整体风险分assessOverallRisk整体评估把各文件的分数与等级汇总先统计 low/medium/high/critical 四个档位的文件数量再计算weightedScore 平均分 critical 数×15 high 数×10即对高危与严重文件加权。判定逻辑为weightedScore ≥ 60或存在 critical 文件 →criticalweightedScore ≥ 40或 high 文件超过 1 个 →highweightedScore ≥ 20或 medium 文件超过 2 个 →medium否则low。返回结构包含{ overall, score, breakdown }其中breakdown是四档位文件数量的明细。4.3 性能与缓存analyzeDiffdiff-classifier.ts对同一ref的结果做 3 秒 TTL 的缓存ANALYSIS_CACHE_TTL_MS 3000避免重复分析同时使用异步getGitDiffNumstatAsync避免阻塞事件循环且当文件数超过 20 时用Promise.all并行计算文件级风险。可见整套评分在设计上兼顾了大 diff 场景的吞吐。五、变更分类Change Classification原理analyze_diff-classify内部调用classifyDiffdiff-classifier.ts其分类依据是CLASSIFICATION_PATTERNSL67-L75定义的模式表分类匹配模式节选feature^feat、add.*feature、implement、new.*functionalitybugfix^fix、bug、patch、resolve.*issue、hotfixrefactor^refactor、restructure、reorganize、cleanup、renamedocs^docs?、documentation、readme、comment、\.md$test^test、spec、\.test\.[jt]sx?$、\.spec\.[jt]sx?$、__tests__config^config、\.config\.、package\.json、tsconfig、\.envstyle^style、format、lint、prettier、eslint模式同时作用于文件路径与变更内容。当路径与内容都无法命中时determinePrimaryClassification还会做启发式推断diff-classifier.ts内容中出现function|class|interface|type且新增行数 10 →feature内容命中fix|bug|issue|error|exception→bugfix若开启detectRefactoring默认 true且增删行数比例落在0.7 ~ 1.4之间、新增行数 5 →refactorisRefactoringL205-L210。每个文件的分类还附带secondary次分类最多 3 个、confidence置信度0.5 起步并随模式命中与变更量累加封顶 1.0、impactLevel基于IMPACT_KEYWORDS权重与变更量的影响等级low/medium/high/critical、suggestedReviewers、testingStrategy与riskFactors。这意味着analyze_diff-classify的返回值并不只是一个标签而是一整套可操作的评审上下文。分类结果有基于路径 hunk 摘要的缓存classificationCache同类重复分析不会重复计算。六、评审人推荐逻辑analyze_diff-reviewers与analyze_diff内嵌的评审人推荐均来自suggestReviewersdiff-classifier.ts。推荐由三层规则叠加路径语义映射代码所有权security|auth|crypto→security-teamdatabase|migration→dbaapi|endpoint|route→api-ownertest|spec→qa-engineerconfig|deploy|ci→devopsui|component|style→frontend-leadmodel|service|repository→backend-lead。风险兜底只要存在 high 或 critical 级别的文件强制追加tech-lead与senior-developer。默认兜底以上均未命中时至少推荐developer。最终结果去重后截取前 5 个Array.from(reviewers).slice(0, 5)。与之配套DiffClassifier.suggestReviewersL244-L252还会按主分类类型追加对应评审人如 feature → tech-lead/product-ownerbugfix → qa-engineer/developer并按影响等级追加security-reviewer。这套组合让评审人推荐既有改哪里找谁的所有权语义又有风险高要拉上谁的兜底保障。七、/jujutsu 命令实战命令定义见 commands/jujutsu.md前端口述即/jujutsu其内部执行流程是一个清晰的 MCP 编排链路运行git diff捕获当前变更调用analyze_diff做全量综合分析调用analyze_diff-risk获取风险分数调用analyze_diff-classify判定变更类型调用analyze_diff-reviewers基于代码所有权推荐评审人汇总呈现风险等级、变更类型、受影响文件、评审人建议。命令最终展示的评审报告四要素正好对应上述 6 个工具的输出切片。实际 MCP 调用名带有插件前缀例如mcp__plugin_ruflo-core_ruflo__analyze_diff见 git-specialist.md 与技能文件的allowed-tools这与 Ruflo 插件 MCP 工具的命名隔离约定一致。八、技能与 Agentdiff-analyze 与 git-workflow8.1 diff-analyze 技能skills/diff-analyze/SKILL.md 定义了完整的 diff 分析工作流适用时机为提交 PR 前、review 大型或跨模块变更时、合并前评估风险并挑选评审人。其argument-hint为[--branch BRANCH] [--pr PR#]allowed-tools覆盖全部 6 个analyze_*工具外加 Bash。分析步骤为全量分析 → 风险评分 → 变更分类 → 评审人推荐 → diff 统计 → 文件级风险拆解。技能文档还明确定义了风险因子清单可作为评审时的经验基准高频变更high churn历史的文件安全敏感路径auth、crypto、permissions大 diff500 行跨模块变更数据库迁移文件。8.2 git-workflow 技能skills/git-workflow/SKILL.md 面向多分支管理、冲突解决与 PR 生命周期argument-hint为branch|pr|merge|rebase [options]。它额外组合了github_pr_manage、github_repo_analyze、github_metrics三个 GitHub 工具典型流程为仓库健康分析 → 合并前 diff 风险检查 → PR 生命周期管理 → 合并频率/评审时间指标查看。文档内置了 feature 分支与 release 分支两个常用工作流示例例如 release 分支在 cherry-pick 修复后对所有 diff 做风险分析风险分数可接受再合并。8.3 git-specialist Agentagents/git-specialist.md 以sonnet为默认模型职责覆盖 diff 分析、风险评分、评审人推荐、PR 管理、指标跟踪并声明标记高风险变更并总是给出可操作的 review 建议。该 Agent 还演示了与 Ruflo 记忆/神经学习系统的联动npx claude-flow/clilatest memory store --namespace git-patterns --key merge-STRATEGY --value CONTEXT_AND_OUTCOME npx claude-flow/clilatest memory search --query merge conflict resolution --namespace git-patterns npx claude-flow/clilatest hooks post-task --task-id TASK_ID --success true --train-neural true其中git-patterns正是本插件认领的 AgentDB 命名空间见下节。九、ADR 合规集成/adr check 的数据底座ruflo-jujutsu 的 diff 分析是 ruflo-adr 插件/adr check命令的底层数据底座。当对某个 diff 发起 ADR 合规检查时调用链如下/adr check调用analyze_diff获取结构化 diff调用analyze_diff-classify判定变更类型在adr-patterns命名空间中交叉引用与被触碰文件相关的 ADR标记违规项代码引用了已废弃/被取代的 ADR或代码与已接受的 ADR 相矛盾。交叉引用关系见 ruflo-adr ADR-0001。若未安装本插件/adr check会退化为普通的git diff解析——可用但不再具备风险评分与评审人推荐能力。这一集成在插件的 ADR-0001 中已作为契约要素明确记录。十、命名空间协调git-patterns本插件认领 AgentDB 的git-patterns命名空间kebab-case命名规范遵循 ruflo-agentdb ADR-0001 的 Namespace convention 一节。契约明确要求保留命名空间pattern、claude-memories、default不得被遮蔽。认领git-patterns意味着 diff 分析模式、合并策略等记忆统一写入该空间与ruflo-agentdb命名空间规范的所有者形成清晰的职责边界。十一、兼容性约定与验证契约11.1 CLI 版本钉定插件 README 的 Compatibility 节明确CLI 钉定到claude-flow/cliv3.6 的 majorminorv3.6.x。这是插件与宿主 CLI 的接口契约冒烟脚本第 5 项会专门校验 README 中是否存在该钉定声明。11.2 smoke.sh冒烟即契约插件的验证契约是bash plugins/ruflo-jujutsu/scripts/smoke.sh期望输出10 passed, 0 failed。脚本位于 plugins/ruflo-jujutsu/scripts/smoke.sh10 项结构化检查如下#检查项1plugin.json声明 0.2.1 且包含mcp、change-classification、reviewer-recommendation关键词26 个analyze_*MCP 工具全部在*.md文档中被引用3diff-analyze、git-workflow两个技能存在且 frontmatter 包含name:/description:/allowed-tools:4git-specialistAgent 与jujutsu命令均存在5README 钉定claude-flow/cliv3.66README 引用 ruflo-agentdb 的命名空间规范7README 记录了 ADR-compliance 集成含ruflo-adr与/adr check交叉引用8README 声明认领git-patterns命名空间9docs/adrs/0001-jujutsu-contract.md存在且status: Accepted10技能中不存在allowed-tools: *通配授权我们可在仓库中直接复现验证结果bash plugins/ruflo-jujutsu/scripts/smoke.sh # → 10 passed, 0 failed11.3 ADR-0001 契约要点plugins/ruflo-jujutsu/docs/adrs/0001-jujutsu-contract.mdstatus: Accepted2026-05-04 提出、05-09 更新记录了本插件的完整契约6 个工具在analyze-tools.ts中的行号定位、Surface1 Agent 2 Skills 1 Command、v3.6 钉定、git-patterns命名空间认领、ADR-compliance 集成、smoke 即契约以及版本从 0.1.0 升至 0.2.0、关键词追加mcp/change-classification/reviewer-recommendation的决策。其 Consequences 章节明确指出加入契约节奏后ADR 合规集成获得文档化保障Implementation status 章节确认 v0.2.0 已上架 marketplace.json命名空间按jujutsu-diffs认领执行。十二、插件间协作总结ruflo-jujutsu 在 Ruflo 插件体系中扮演Git 语义层角色上游对接ruflo-adr提供/adr check所需的结构化 diff 底座横向对齐ruflo-agentdb遵守其命名空间约定并认领git-patterns同时以 6 个analyze_*MCP 工具为统一出口供/jujutsu命令、diff-analyze/git-workflow技能与git-specialistAgent 复用。从 analyze-tools.ts 到 diff-classifier.ts 的实现链可以看出风险评分、变更分类与评审人推荐均是确定性规则引擎而非模型黑盒——每次分析都附带reasons、confidence与breakdown等可解释字段这正是它适合作为合规检查底座的深层原因。若需进一步了解契约细节可继续阅读 ADR-0001若想从零搭建类似插件smoke.sh 的 10 项检查即是现成的质量门禁模板。【免费下载链接】ruflo The original agent meta-harness. Deploy intelligent multi-player swarms, coordinate autonomous workflows, and build conversational AI systems. Features adaptive memory, self-learning intelligence, RAG integration, and native Claude Code / Codex / Hermes and many more Integrated项目地址: https://gitcode.com/GitHub_Trending/cl/ruflo创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表