已实现:
- ✅ Pointer 系统(URI 生成、版本管理、因果追踪)
- ✅ Qdrant 集成(向量搜索、精确查询、过滤)
- ✅ Memos 迁移脚本(API 拉取 → LLM 提取 → Pointer 存储)
- ✅ 测试套件(本地测试 + Qdrant 集成测试)
cd /root/.openclaw/workspace/claw-mesh-dev
node scripts/test-pointer.js输出示例:
=== Testing Pointer System ===
Test 1: Generate pointers
Generated: ptr://finance/rule/revenue@2025-Q1
✓ Pass
Test 2: Parse pointer
Parsed: { domain: 'finance', topic: 'rule', slug: 'revenue', version: '2025-Q1' }
✓ Pass
...
=== All tests passed! ===
# 启动 Qdrant(如果还没运行)
docker run -d -p 6333:6333 qdrant/qdrant
# 运行测试
node scripts/test-pointer.js --qdrant# 设置环境变量
export MEMOS_URL=http://localhost:5230
export MEMOS_TOKEN=your_token_here
export OPENAI_KEY=sk-...
export QDRANT_URL=http://localhost:6333
# 运行迁移
node scripts/memos-migration.js迁移流程:
- 从 Memos API 拉取所有 memo
- 用 GPT-4 提取结构化事实
- 为每个事实生成 pointer URI
- 用 OpenAI 生成 embedding
- 存储到 Qdrant
- 导出到
memory/pointers.json
const { PointerSystem } = require('./memory/pointer');
const ps = new PointerSystem();
// 1. 生成 pointer
const ptr = ps.generatePointer('api', 'auth', 'token', 'v1');
// → ptr://api/auth/token@v1
// 2. 创建 payload
const payload = ps.createPayload({
pointer: ptr,
type: 'rule',
topic: 'auth',
content: 'JWT tokens expire after 24 hours',
keywords: ['jwt', 'token', 'expiry']
});
// 3. 存储
ps.store(ptr, payload);
// 4. 更新版本
const v2 = ps.deprecateAndCreate(ptr, {
type: 'rule',
topic: 'auth',
content: 'JWT tokens expire after 1 hour (security update)',
keywords: ['jwt', 'token', 'expiry', 'security']
});
// → ptr://api/auth/token@v2 (supersedes v1)
// 5. 查询版本链
const chain = ps.getPointerChain(v2.pointer);
// → ['ptr://api/auth/token@v1', 'ptr://api/auth/token@v2']const { QdrantPointerStore } = require('./memory/qdrant-pointer');
const store = new QdrantPointerStore('http://localhost:6333');
// 初始化
await store.initialize();
// 存储(需要 embedding)
const embedding = await generateEmbedding(payload.content);
await store.storePointer(payload, embedding);
// 向量搜索
const queryEmbedding = await generateEmbedding('token expiry rules');
const results = await store.searchPointers(queryEmbedding, 10);
// → [{ pointer, score, summary, payload }]
// 精确查询
const exact = await store.getPointer('ptr://api/auth/token@v2');
// 按主题过滤
const authPointers = await store.getActiveByTopic('auth');
// 获取版本链
const chain = await store.getPointerChain('ptr://api/auth/token@v2');ptr://{domain}/{topic}/{slug}@{version}
finance- 财务规则api- API 规范code- 代码知识personal- 个人偏好project- 项目信息
rule- 规则auth- 认证bug- Bug 记录lesson- 经验教训error- 错误处理
v1,v2,v3- 简单递增2025-Q1,2026-Q2- 时间版本v1.1,v1.2- 小版本更新
ptr://finance/rule/revenue@2025-Q1
ptr://api/auth/clientId@v2
ptr://code/bug/memory-leak@v1
ptr://personal/preference/editor@v3
ptr://project/config/database@2026-03
{
"type": "fact",
"content": "User ID is stored in JWT payload"
}{
"type": "rule",
"content": "All API requests must include Authorization header"
}{
"type": "lesson",
"content": "Always validate input before database queries to prevent SQL injection"
}{
"type": "error",
"content": "Memory leak caused by unclosed database connections",
"metadata": {
"severity": "high",
"fixed_in": "ptr://code/bug/memory-leak@v2"
}
}claw-mesh-dev/
├── memory/
│ ├── pointer.js # Pointer 系统核心
│ ├── qdrant-pointer.js # Qdrant 集成
│ ├── causal.js # 因果修正(已有)
│ ├── ontology.js # 本体论(已有)
│ ├── pointers.json # Pointer 目录(自动生成)
│ └── README.md # 详细文档
├── scripts/
│ ├── memos-migration.js # Memos 迁移脚本
│ └── test-pointer.js # 测试套件
└── QUICKSTART.md # 本文件
- 集成
causal.js实现 7 种错误修正模式 - 添加 context tree 压缩(基于 agentic-context-engine)
- 创建 A2A agent chain:
- planner - 任务分解
- researcher - pointer 搜索
- coder - 代码生成
- validator - 沙盒验证
- updater - pointer 更新
memory/causal-pointer.js- 因果修正集成memory/context-tree.js- 上下文树agents/- A2A agent 定义scripts/test-a2a.js- A2A 测试
- Node.js 18+
- Qdrant (Docker 或本地)
- Memos 实例
- OpenAI API key
# Qdrant
docker run -d -p 6333:6333 -v $(pwd)/qdrant_storage:/qdrant/storage qdrant/qdrant
# Memos(可选)
docker run -d -p 5230:5230 -v $(pwd)/memos_data:/var/opt/memos neosmemo/memos:latest# 检查 Qdrant 是否运行
curl http://localhost:6333/collections
# 如果没有响应,启动 Qdrant
docker run -d -p 6333:6333 qdrant/qdrant# 检查环境变量
echo $MEMOS_TOKEN
echo $OPENAI_KEY
# 测试 Memos API
curl -H "Authorization: Bearer $MEMOS_TOKEN" $MEMOS_URL/api/v1/memos# 确保在正确的目录
cd /root/.openclaw/workspace/claw-mesh-dev
# 检查文件是否存在
ls -la memory/
ls -la scripts/- ✅ Pointer 生成:< 1ms
- ✅ 版本管理:< 1ms
- ✅ 本地搜索:< 10ms(1000 pointers)
- ⏳ Qdrant 搜索:< 50ms(待测试)
- ⏳ Memos 迁移:~2s/memo(待测试)
- 项目:claw-mesh-dev
- 文档:
memory/README.md - 测试:
scripts/test-pointer.js