智能分叉 smart-fork

智能分叉是一个基于记忆驱动的会话分叉工具,通过并行搜索多个记忆源,帮助用户从相关的历史会话中找到并分叉,提高开发效率和上下文重用。关键词:智能分叉、记忆搜索、会话重用、上下文加载。

DevOps 0 次安装 0 次浏览 更新于 3/4/2026

VERSION: 2.88.0

name: smart-fork description: 智能分叉 - 通过在claude-mem、memvid、交接和账本之间的并行记忆搜索,找到并从相关的历史会话中分叉 author: 多代理拉尔夫 version: 2.47.2 model: sonnet context: fork allowed-tools:

  • Bash
  • Read
  • Write
  • Task
  • mcp__plugin_claude-mem_* hooks: PostToolUse:
    • event: “Task” script: “~/.claude/hooks/smart-memory-search.sh”

/smart-fork - 智能记忆驱动的会话分叉

基于@PerceptualPeak的智能分叉概念:

v2.88关键变更(模型不可知)

  • 模型不可知:使用~/.claude/settings.json或CLI/env vars中配置的模型
  • 无需标志:与配置的默认模型一起工作
  • 灵活:与GLM-5、Claude、Minimax或任何配置的模型一起工作
  • 设置驱动:通过ANTHROPIC_DEFAULT_*_MODEL环境变量选择模型

“为什么不利用你从数百/数千其他Claude代码会话中获得的知识呢?不要让那些宝贵的上下文白白浪费!!”

快速开始

# 查找要分叉的相关会话
/smart-fork "实现OAuth认证"

# 显示当前任务的分叉建议
/smart-fork --suggest

# 为特定会话生成分叉命令
/smart-fork --fork <session_id>

# 显示记忆统计信息
/smart-fork --stats

工作原理

1. 并行记忆搜索

当您调用/smart-fork时,我们并行搜索所有记忆源:

┌──────────────────────────────────────────────────────────────┐
│                    并行记忆搜索                     │
├──────────────────────────────────────────────────────────────┤
│                                                              │
│   ┌────────────┐ ┌────────────┐ ┌────────────┐ ┌──────────┐ │
│   │ claude-mem │ │  memvid    │ │  handoffs  │ │  ledgers │ │
│   │    MCP     │ │  search    │ │   scan     │ │   scan   │ │
│   └─────┬──────┘ └─────┬──────┘ └─────┬──────┘ └────┬─────┘ │
│         │ 并行     │ 并行     │ 并行    │        │
│         └──────────────┴──────────────┴─────────────┘        │
│                            ↓                                  │
│                    聚合器(前5名)                        │
│                            ↓                                  │
│              .claude/memory-context.json                     │
└──────────────────────────────────────────────────────────────┘

2. 相关性评分

结果按以下因素评分:

  • 关键词匹配:会话中出现多少搜索词
  • 时效性:更近期的会话得分更高
  • 结果:成功完成的会话得分更高
  • 相似性:与当前任务的语义相似度

3. 分叉建议

前5个最相关的会话建议如下:

  • 会话ID
  • 时间戳
  • 简短摘要
  • 分叉命令

命令

/smart-fork "任务描述"

根据任务描述搜索相关会话。

示例:

/smart-fork "实现JWT认证和刷新令牌"

输出:

SMART FORK RESULTS v2.47
========================

搜索:"实现JWT认证和刷新令牌"

TOP 5 RELEVANT SESSIONS:
------------------------
1. [HIGH] 会话:abc123-def456 (2026-01-15)
   摘要:实现了OAuth2和JWT,类似的认证模式
   分叉:claude --continue abc123-def456

2. [HIGH] 会话:xyz789-uvw012 (2026-01-10)
   摘要:在Node.js中实现令牌刷新
   分叉:claude --continue xyz789-uvw012

3. [MEDIUM] 会话:pqr345-stu678 (2026-01-05)
   摘要:认证中间件设置
   分叉:claude --continue pqr345-stu678

搜索的记忆源:claude-mem (5), memvid (3), handoffs (8), ledgers (2)
总结果:18

/smart-fork --suggest

根据当前项目上下文显示分叉建议。

/smart-fork --fork <session_id>

为特定会话生成分叉命令。

/smart-fork --stats

显示所有来源的记忆统计信息。

与Orchestrator集成

智能分叉系统在步骤0b与编排器集成:

步骤0:评估
├── 0a: 3-Dimension Classification (v2.46)
└── 0b: SMART MEMORY SEARCH (v2.47) ◄── 新
        │
        ├── 在claude-mem中搜索相关观察
        ├── 在memvid中搜索语义匹配
        ├── 在交接中搜索最近的上下文
        └── 在账本中搜索会话连续性
        │
        ▼
    .claude/memory-context.json
    │
    ├── past_successes: 曾经有效的实现模式
    ├── past_errors: 需要避免的错误
    ├── recommended_patterns: 最佳实践
    └── fork_suggestions: 建议从中分叉的前5个会话

记忆源

来源 内容 速度 保留期
claude-mem MCP 语义观察 快速 永久
memvid 向量编码上下文 Sub-5ms 永久
交接 会话上下文快照 快速 30天
账本 连续性数据 快速 永久

好处

1. 避免重复错误

过去的错误被呈现出来,以防止同样的问题。

2. 重用成功模式

以前有效的实现模式被推荐。

3. 更快的上下文加载

从相关会话中分叉,而不是重新解释一切。

4. 跨项目学习

其他项目中的模式指导当前实现。

配置

智能分叉通过~/.ralph/config/smart-fork.json进行配置:

{
    "version": "2.47",
    "cache_duration_seconds": 1800,
    "max_results_per_source": 10,
    "top_k_suggestions": 5,
    "search_recency_days": 30,
    "parallel_timeout_seconds": 30
}

CLI命令

# 通过ralph CLI
ralph fork-suggest "任务描述"
ralph memory-search "查询"
ralph memory-stats

# 通过技能
/smart-fork "任务描述"

技术说明

  • 默认并行:所有记忆搜索并发运行
  • 30分钟缓存:结果被缓存以避免重复搜索
  • 优雅降级:缺少记忆源时会被跳过
  • JSON输出:结果存储在.claude/memory-context.json

文件

路径 目的
~/.claude/hooks/smart-memory-search.sh 并行搜索的PreToolUse钩子
.claude/memory-context.json 聚合记忆结果
~/.ralph/config/smart-fork.json 配置
~/.ralph/logs/smart-memory-search-*.log 搜索日志

故障排除(v2.52.0)

“没有可用的记忆源”

原因:4个记忆源(claude-mem、memvid、交接、账本)均未初始化。

修复

# 初始化交接
ralph handoff create

# 初始化账本
ralph ledger save

# 初始化memvid(可选)
ralph memvid init

# 验证claude-mem MCP是否运行
claude --server-list | grep claude-mem

“搜索超时30秒后”

原因:记忆源太大或搜索速度太慢,无法在超时内完成。

修复

  1. 在配置中增加超时:~/.ralph/config/smart-fork.json
    {"parallel_timeout_seconds": 60}
    
  2. 缩小搜索范围:{"search_recency_days": 14}
  3. 限制结果:{"max_results_per_source": 5}

“PreToolUse:Task钩子错误”

原因:钩子执行失败(但通常非关键)。

修复

  1. 查看日志:tail -f ~/.ralph/logs/smart-memory-search-*.log
  2. 验证钩子是否可执行:chmod +x ~/.claude/hooks/smart-memory-search.sh
  3. 手动测试:echo '{"tool_name":"Read"}' | bash ~/.claude/hooks/smart-memory-search.sh

“空的fork_suggestions”

原因:未找到与关键词匹配的会话。

修复

  1. 尝试更广泛的关键词
  2. 确保存在交接:ls ~/.ralph/handoffs/
  3. 验证最近的活动:ls -la ~/.ralph/ledgers/

“缓存未失效”

原因:缓存文件在30分钟窗口内仍然有效。

修复

# 通过删除缓存强制进行新的搜索
rm .claude/memory-context.json

性能调整(v2.52.0)

配置选项

编辑~/.ralph/config/smart-fork.json

设置 默认 影响
cache_duration_seconds 1800 较低=更新鲜的结果,更多搜索
parallel_timeout_seconds 30 较高=更完整的结果,更慢的启动
max_results_per_source 10 较高=更多上下文,更慢的聚合
search_recency_days 30 较高=更深的历史,更慢的搜索
top_k_suggestions 5 较高=更多选项,更多令牌

最优配置

快速启动(最小延迟)

{
    "cache_duration_seconds": 3600,
    "parallel_timeout_seconds": 10,
    "max_results_per_source": 3,
    "search_recency_days": 7
}

全面搜索(最大上下文)

{
    "cache_duration_seconds": 900,
    "parallel_timeout_seconds": 60,
    "max_results_per_source": 20,
    "search_recency_days": 90
}

平衡(推荐)

{
    "cache_duration_seconds": 1800,
    "parallel_timeout_seconds": 30,
    "max_results_per_source": 10,
    "search_recency_days": 30
}

性能基准

配置 搜索时间 结果质量
快速 ~2s 好(仅限近期)
平衡 ~5s 非常好
全面 ~15s 优秀

监控性能

# 检查上次搜索持续时间
tail -1 ~/.ralph/logs/smart-memory-search-*.log | grep "completed in"

# 监控记忆源健康
ralph memory-stats

# 配置个别源
time claude-mem search "test query" --limit 5

安全说明(v2.52.0)

智能记忆搜索钩子包括以下安全强化措施:

漏洞 修复 详情
SECURITY-001 命令注入 在grep -E使用前对关键词进行转义
SECURITY-002 路径遍历 在读取前通过realpath验证符号链接
SECURITY-003 竞态条件 使用限制性权限创建原子临时文件

所有安全测试通过:pytest tests/test_v2_47_security.py -v