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秒后”
原因:记忆源太大或搜索速度太慢,无法在超时内完成。
修复:
- 在配置中增加超时:
~/.ralph/config/smart-fork.json{"parallel_timeout_seconds": 60} - 缩小搜索范围:
{"search_recency_days": 14} - 限制结果:
{"max_results_per_source": 5}
“PreToolUse:Task钩子错误”
原因:钩子执行失败(但通常非关键)。
修复:
- 查看日志:
tail -f ~/.ralph/logs/smart-memory-search-*.log - 验证钩子是否可执行:
chmod +x ~/.claude/hooks/smart-memory-search.sh - 手动测试:
echo '{"tool_name":"Read"}' | bash ~/.claude/hooks/smart-memory-search.sh
“空的fork_suggestions”
原因:未找到与关键词匹配的会话。
修复:
- 尝试更广泛的关键词
- 确保存在交接:
ls ~/.ralph/handoffs/ - 验证最近的活动:
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