)
ruflo 中的 agentic-jujutsu 技能面向多智能体协作的自学习版本控制封装Jujutsu ReasoningBank【免费下载链接】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本篇基于 ruflo 仓库中的 agentic-jujutsu 技能定义v2.3.2展开系统讲解该技能如何为 AI Agent 提供无锁并发版本控制、基于 ReasoningBank 的自学习轨迹追踪、模式发现与量子抗性完整性校验能力。读完后你可以直接复用其中的JjWrapperAPI、轨迹Trajectory生命周期管理模式、v2.3.1 输入校验规则与多智能体协调的最佳实践在 ruflo 的多 Agent 工作流中落地边工作边学习的仓库协作方案。技能定位在 ruflo 体系中的位置agentic-jujutsu是 ruflo 技能体系下的一个高级技能Advanced skill目标场景明确多个 AI Agent 同时修改代码时需要一个无锁、可学习、具备完整性校验的版本控制层。技能元数据frontmatter声明其版本为 2.3.2定位为Quantum-resistant, self-learning version control for AI agents with ReasoningBank intelligence and multi-agent coordination见 SKILL.md。从源码结构看该技能已被纳入 ruflo 的 Codex 模板高级技能注册表codex 模板入口 中列出了agentic-jujutsu与agent-coordination、agentdb-*系列技能同属Advanced skills分组说明它面向的是 AgentDB 记忆 智能体式版本控制的组合用法。此外仓库中还有一个名字相近但职责不同的插件 ruflo-jujutsu它不是本技能文档描述的 npm 包而是面向 Git 差异分析的插件diff 风险评分、变更分类、reviewer 推荐MCP 工具面定义在 analyze-tools.ts。两者共享 jujutsu/版本控制 主题但本文的讨论范围严格限定于agentic-jujutsu技能文档所描述的 npm 包能力。适用场景技能文档当需要以下能力时使用本技能一节给出了明确的触发条件清单这些判断标准本身就是选型依据多个 AI Agent 同时修改代码无锁版本控制原文档宣称比 Git 快 23 倍从经验中自我改进的 AI面向未来的量子抗性安全保护自动冲突解决原文档宣称 87% 成功率模式识别与智能建议无阻塞的多 Agent 协调。快速上手安装npx agentic-jujutsu基本用法JjWrapper是对外暴露的核心封装类基础操作覆盖状态查询、提交与历史查看轨迹Trajectory接口则开启自学习通道const { JjWrapper } require(agentic-jujutsu); const jj new JjWrapper(); // Basic operations await jj.status(); await jj.newCommit(Add feature); await jj.log(10); // Self-learning trajectory const id jj.startTrajectory(Implement authentication); await jj.branchCreate(feature$auth); await jj.newCommit(Add auth); jj.addToTrajectory(); jj.finalizeTrajectory(0.9, Clean implementation); // Get AI suggestions const suggestion JSON.parse(jj.getSuggestion(Add logout feature)); console.log(Confidence: ${suggestion.confidence});注意两个细节一是分支命名使用$作为词内分隔符feature$auth这是 Jujutsu 风格的命名习惯二是学习建议接口getSuggestion()返回 JSON 字符串调用方需自行JSON.parse这与下文中所有get*学习类接口保持一致。核心能力一基于 ReasoningBank 的自学习轨迹的完整生命周期是开始 → 操作自动追踪→ 记录 → 终结打分// Start learning trajectory const trajectoryId jj.startTrajectory(Deploy to production); // Perform operations (automatically tracked) await jj.execute([git, push, origin, main]); await jj.branchCreate(release$v1.0); await jj.newCommit(Release v1.0); // Record operations to trajectory jj.addToTrajectory(); // Finalize with success score (0.0-1.0) and critique jj.finalizeTrajectory(0.95, Deployment successful, no issues); // Later: Get AI-powered suggestions for similar tasks const suggestion JSON.parse(jj.getSuggestion(Deploy to staging)); console.log(AI Recommendation:, suggestion.reasoning); console.log(Confidence:, (suggestion.confidence * 100).toFixed(1) %); console.log(Expected Success:, (suggestion.expectedSuccessRate * 100).toFixed(1) %);关键点execute()执行外部命令时会被自动追踪进轨迹无需手工记录每条操作finalizeTrajectory(score, critique?)的成功分数区间为 0.0–1.0critique评语用于向后续建议提供失败根因上下文getSuggestion(task)返回的DecisionSuggestion结构包含reasoning、confidence、expectedSuccessRate、recommendedOperations、estimatedDurationMs等字段字段清单可由文档各处示例代码交叉印证。v2.3.1 起引入的校验约束详见后文校验规则一节任务描述非空且上限 10KB、成功分数必须在 0.0–1.0 内、终结前至少要有操作、上下文不能为空。核心能力二模式发现Pattern Discovery系统会自动识别成功操作序列并沉淀为可复用模式模式数据包含名称、成功率、观察次数、操作序列与置信度// Get discovered patterns const patterns JSON.parse(jj.getPatterns()); patterns.forEach(pattern { console.log(Pattern: ${pattern.name}); console.log( Success rate: ${(pattern.successRate * 100).toFixed(1)}%); console.log( Used ${pattern.observationCount} times); console.log( Operations: ${pattern.operationSequence.join( → )}); console.log( Confidence: ${(pattern.confidence * 100).toFixed(1)}%); });从文档的故障排查一节可以推断出模式发现的触发门槛需要多条成功率高于 70% 的轨迹至少 3–5 条成功轨迹后才会产出模式这与模式 被验证过的成功操作序列的定位一致。核心能力三学习统计Learning StatisticsgetLearningStats()返回一组可观测的学习指标用于判断智能体是否在持续变好const stats JSON.parse(jj.getLearningStats()); console.log(Learning Progress:); console.log( Total trajectories: ${stats.totalTrajectories}); console.log( Patterns discovered: ${stats.totalPatterns}); console.log( Average success: ${(stats.avgSuccessRate * 100).toFixed(1)}%); console.log( Improvement rate: ${(stats.improvementRate * 100).toFixed(1)}%); console.log( Prediction accuracy: ${(stats.predictionAccuracy * 100).toFixed(1)}%);其中improvementRate改进率与predictionAccuracy预测准确率是衡量自学习是否生效的两个核心指标技能文档的持续学习闭环用例正是围绕它们展开。核心能力四多 Agent 协调多个 Agent 各自持有独立的JjWrapper实例即可并发工作而无锁冲突学习数据在 Agent 之间共享——后来的 Agent 可以直接消费先前 Agent 沉淀的轨迹// Agent 1: Developer const dev new JjWrapper(); dev.startTrajectory(Implement feature); await dev.newCommit(Add feature X); dev.addToTrajectory(); dev.finalizeTrajectory(0.85); // Agent 2: Reviewer (learns from Agent 1) const reviewer new JjWrapper(); const suggestion JSON.parse(reviewer.getSuggestion(Review feature X)); if (suggestion.confidence 0.7) { console.log(High confidence approach:, suggestion.reasoning); } // Agent 3: Tester (benefits from both) const tester new JjWrapper(); const similar JSON.parse(tester.queryTrajectories(test feature, 5)); console.log(Found ${similar.length} similar test approaches);这里体现了技能的核心设计JjWrapper实例是轻量的工作单元而学习库是共享的——开发者 Agent 写入的轨迹评审 Agent 通过getSuggestion()消费测试 Agent 通过queryTrajectories(task, limit)检索相似历史经验。文档在最佳实践中明确建议用Promise.all并发执行而不是串行加锁等待。核心能力五量子抗性安全v2.3.0v2.3.0 起引入的完整性校验模块提供 SHA3-512NIST FIPS 202指纹与 HQC-128 加密const { generateQuantumFingerprint, verifyQuantumFingerprint } require(agentic-jujutsu); // Generate SHA3-512 fingerprint (NIST FIPS 202) const data Buffer.from(commit-data); const fingerprint generateQuantumFingerprint(data); console.log(Fingerprint:, fingerprint.toString(hex)); // Verify integrity (1ms) const isValid verifyQuantumFingerprint(data, fingerprint); console.log(Valid:, isValid); // HQC-128 encryption for trajectories const crypto require(crypto); const key crypto.randomBytes(32).toString(base64); jj.enableEncryption(key);使用要点指纹生成为 64 字节 BufferSHA3-512 输出长度原文档宣称验证耗时 1ms适合对提交数据做高频完整性校验加密作用于轨迹存储trajectory即保护自学习数据不被篡改enableEncryption(key, pubKey?)可选传入公钥配套disableEncryption()/isEncryptionEnabled()管理状态版本历史标注该能力由qudag/napi-core提供见文档 Version History v2.3.0 条目即通过 napi 原生绑定实现。核心能力六AgentDB 操作追踪所有操作包括系统自动产生的快照都会被记录形成可统计、可回放的操作日志// Operations are tracked automatically await jj.status(); await jj.newCommit(Fix bug); await jj.rebase(main); // Get operation statistics const stats JSON.parse(jj.getStats()); console.log(Total operations: ${stats.total_operations}); console.log(Success rate: ${(stats.success_rate * 100).toFixed(1)}%); console.log(Avg duration: ${stats.avg_duration_ms.toFixed(2)}ms); // Query recent operations const ops jj.getOperations(10); ops.forEach(op { console.log(${op.operationType}: ${op.command}); console.log( Duration: ${op.durationMs}ms, Success: ${op.success}); }); // Get user operations (excludes snapshots) const userOps jj.getUserOperations(20);值得注意getOperations()与getUserOperations()的区分后者排除快照类操作只返回用户显式触发的操作——在分析 Agent 行为模式时应使用后者避免系统内部操作稀释统计口径。JjOperation记录包含operationType、command、durationMs、success四个可观测字段。API 参考完整继承自技能文档核心方法方法说明返回new JjWrapper()创建封装实例JjWrapperstatus()获取仓库状态PromiseJjResultnewCommit(msg)创建新提交PromiseJjResultlog(limit)查看提交历史PromiseJjCommit[]diff(from, to)查看差异PromiseJjDiffbranchCreate(name, rev?)创建分支PromiseJjResultrebase(source, dest)变基提交PromiseJjResultReasoningBank 方法方法说明返回startTrajectory(task)开始学习轨迹string轨迹 IDaddToTrajectory()追加最近操作voidfinalizeTrajectory(score, critique?)完成轨迹score: 0.0–1.0voidgetSuggestion(task)获取 AI 建议JSON: DecisionSuggestiongetLearningStats()获取学习指标JSON: LearningStatsgetPatterns()获取已发现模式JSON: Pattern[]queryTrajectories(task, limit)检索相似轨迹JSON: Trajectory[]resetLearning()清空学习数据voidAgentDB 方法方法说明返回getStats()获取操作统计JSON: StatsgetOperations(limit)获取近期操作JjOperation[]getUserOperations(limit)仅获取用户操作JjOperation[]clearLog()清空操作日志void量子安全方法v2.3.0方法说明返回generateQuantumFingerprint(data)生成 SHA3-512 指纹Buffer64 字节verifyQuantumFingerprint(data, fp)验证指纹booleanenableEncryption(key, pubKey?)启用 HQC-128 加密voiddisableEncryption()禁用加密voidisEncryptionEnabled()检查加密状态boolean性能特征原文档口径供选型参考技能文档给出的 Git 对比数据如下。需要说明这是原文档的口径仓库内未见对应的基准测试产物实际数值以官方发布物为准此处仅作量级参考指标GitAgentic Jujutsu并发提交15 ops/s350 ops/s23x上下文切换500–1000ms50–100ms10x冲突自动解决30–40%87%2.5x锁等待50 min/day0 min量子指纹N/A1ms实战用例用例一自适应工作流优化先问学习库要建议再按建议执行并回写结果形成建议 → 执行 → 打分闭环async function adaptiveDeployment(jj, environment) { // Get AI suggestion based on past deployments const suggestion JSON.parse(jj.getSuggestion(Deploy to ${environment})); console.log(Deploying with ${(suggestion.confidence * 100).toFixed(0)}% confidence); console.log(Expected duration: ${suggestion.estimatedDurationMs}ms); // Start tracking jj.startTrajectory(Deploy to ${environment}); // Execute recommended operations for (const op of suggestion.recommendedOperations) { console.log(Executing: ${op}); await executeOperation(op); } jj.addToTrajectory(); // Record outcome const success await verifyDeployment(); jj.finalizeTrajectory( success ? 0.95 : 0.5, success ? Deployment successful : Issues detected ); }用例二错误模式检测防重蹈覆辙的合并合并前先检索历史相似轨迹中的失败案例与评语低置信度时输出推荐步骤执行失败也回写低分轨迹async function smartMerge(jj, branch) { // Query similar merge attempts const similar JSON.parse(jj.queryTrajectories(merge ${branch}, 10)); // Analyze past failures const failures similar.filter(t t.successScore 0.5); if (failures.length 0) { console.log(Similar merges failed in the past:); failures.forEach(f { if (f.critique) { console.log( - ${f.critique}); } }); } // Get AI recommendation const suggestion JSON.parse(jj.getSuggestion(merge ${branch})); if (suggestion.confidence 0.7) { console.log(Low confidence. Recommended steps:); suggestion.recommendedOperations.forEach(op console.log( - ${op})); } // Execute merge with tracking jj.startTrajectory(Merge ${branch}); try { await jj.execute([merge, branch]); jj.addToTrajectory(); jj.finalizeTrajectory(0.9, Merge successful); } catch (err) { jj.addToTrajectory(); jj.finalizeTrajectory(0.3, Merge failed: ${err.message}); throw err; } }用例三持续学习闭环SelfImprovingAgent将建议 → 执行 → 学习封装为 Agent 类每次任务后检查改进率class SelfImprovingAgent { constructor() { this.jj new JjWrapper(); } async performTask(taskDescription) { // Get AI suggestion const suggestion JSON.parse(this.jj.getSuggestion(taskDescription)); // Start trajectory this.jj.startTrajectory(taskDescription); // Execute with recommended approach const startTime Date.now(); let success false; try { for (const op of suggestion.recommendedOperations) { await this.execute(op); } success true; } catch (err) { console.error(Task failed:, err.message); } const duration Date.now() - startTime; // Record learning this.jj.addToTrajectory(); this.jj.finalizeTrajectory( success ? 0.9 : 0.4, success ? Completed in ${duration}ms using ${suggestion.recommendedOperations.length} operations : Failed after ${duration}ms ); // Check improvement const stats JSON.parse(this.jj.getLearningStats()); console.log(Improvement rate: ${(stats.improvementRate * 100).toFixed(1)}%); return success; } async execute(operation) { // Execute operation logic } } // Usage: agent improves over time const agent new SelfImprovingAgent(); for (let i 1; i 10; i) { console.log(\n--- Attempt ${i} ---); await agent.performTask(Deploy application); }多 Agent 蜂群场景下Promise.all让每个 Agent 独立持有JjWrapper并发执行任务各自完成建议 → 执行 → 打分的完整轨迹原文档 Examples 一节给出agentSwarm(taskList)完整实现与用例三同一范式此处从略。最佳实践完整继承自技能文档1. 轨迹管理// ✅ Good: Meaningful task descriptions jj.startTrajectory(Implement user authentication with JWT); // ❌ Bad: Vague descriptions jj.startTrajectory(fix stuff); // ✅ Good: Honest success scores jj.finalizeTrajectory(0.7, Works but needs refactoring); // ❌ Bad: Always 1.0 jj.finalizeTrajectory(1.0, Perfect!); // Prevents learning任务描述要具体决定后续getSuggestion/queryTrajectories的语义匹配质量成功分数要诚实——恒定打满分会让模式发现失去区分度。2. 模式识别让模式从真实记录中自然涌现而不是绕过记录直接执行// ✅ Good: Let patterns emerge naturally for (let i 0; i 10; i) { jj.startTrajectory(Deploy feature); await deploy(); jj.addToTrajectory(); jj.finalizeTrajectory(wasSuccessful ? 0.9 : 0.5); } // ❌ Bad: Not recording outcomes await deploy(); // No learning3. 多 Agent 协调// ✅ Good: Concurrent operations const agents [agent1, agent2, agent3]; await Promise.all(agents.map(async (agent) { const jj new JjWrapper(); // Each agent works independently await jj.newCommit(Changes by ${agent}); })); // ❌ Bad: Sequential with locks for (const agent of agents) { await agent.waitForLock(); // Not needed! await agent.commit(); }4. 错误处理失败必须带上下文地记录下来静默吞掉异常等于放弃学习机会// ✅ Good: Record failures with details try { await jj.execute([complex-operation]); jj.finalizeTrajectory(0.9); } catch (err) { jj.finalizeTrajectory(0.3, Failed: ${err.message}. Root cause: ...); } // ❌ Bad: Silent failures try { await jj.execute([operation]); } catch (err) { // No learning from failure }校验规则v2.3.1v2.3.1 版本对 ReasoningBank 的输入做了严格校验调用方需要感知以下边界任务描述Task Description不能为空或仅空白字符最大长度 10,000 字节自动 trim。成功分数Success Score必须是有限数值非 NaN / Infinity必须在 0.0–1.0 闭区间内。操作Operations终结轨迹前至少要有 1 条操作。上下文Context不能为空键不能为空或仅空白键最长 1,000 字节值最长 10,000 字节。故障排查建议置信度偏低getSuggestion的confidence 0.5通常意味着学习数据不足应先用getLearningStats()查看totalTrajectories并按文档建议先积累 5–10 条轨迹const suggestion JSON.parse(jj.getSuggestion(new task)); if (suggestion.confidence 0.5) { // Not enough data - check learning stats const stats JSON.parse(jj.getLearningStats()); console.log(Need more data. Current trajectories: ${stats.totalTrajectories}); // Recommend: Record 5-10 trajectories first }校验错误空任务或越界分数会抛出含 Validation error 的异常分数需夹取到合法区间try { jj.startTrajectory(); // Empty task } catch (err) { if (err.message.includes(Validation error)) { console.log(Invalid input:, err.message); // Use non-empty, meaningful task description } } try { jj.finalizeTrajectory(1.5); // Score 1.0 } catch (err) { // Use score between 0.0 and 1.0 jj.finalizeTrajectory(Math.max(0, Math.min(1, score))); }没有发现模式getPatterns()返回空数组时检查是否有足够多成功率 70% 的轨迹文档建议至少 3–5 条成功轨迹const patterns JSON.parse(jj.getPatterns()); if (patterns.length 0) { // Need more trajectories with 70% success // Record at least 3-5 successful trajectories }版本历史与在仓库中的引用线索技能文档给出的版本脉络v2.3.2— 文档更新当前版本v2.3.1— ReasoningBank 校验修复上文全部校验规则的来源v2.3.0— 引入量子抗性安全基于qudag/napi-corev2.1.0— 引入 ReasoningBank 自学习v2.0.0— 零依赖安装内嵌 jj 二进制。在 ruflo 仓库中该技能可作为补充对照的还有两处技能注册出现在 Codex 模板 的高级技能列表中同名主题的 ruflo-jujutsu 插件 则演示了仓库内差异分析 AgentDB 命名空间的落地方式其 ADR 契约见 0001-jujutsu-contract.md验证命令为bash plugins/ruflo-jujutsu/scripts/smoke.sh。需要再次强调该插件是 ruflo 自研的 Git diff 分析能力与本文主角 npm 包agentic-jujutsu属不同交付物引用它只是为了帮助读者在仓库中快速定位相关生态位。适用前提小结本文所述 API、参数与校验规则均以技能文档 v2.3.2 为准性能数字为原文档口径而非仓库内实测结果量子指纹与 HQC 加密能力要求 v2.3.0校验规则要求 v2.3.1。【免费下载链接】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),仅供参考