mcp-probe-kit 3.0.24 → 3.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +755 -779
- package/build/index.js +38 -40
- package/build/lib/agents-md-template.js +32 -32
- package/build/lib/skill-bridge.js +12 -12
- package/build/resources/index.d.ts +4 -0
- package/build/resources/index.js +4 -0
- package/build/resources/tool-params-guide.d.ts +571 -0
- package/build/resources/tool-params-guide.js +488 -0
- package/build/resources/ui-ux-data/guidelines/vercel-web-interface.json +1632 -1632
- package/build/resources/ui-ux-data/metadata.json +30 -30
- package/build/resources/ui-ux-data/shadcn/blocks.json +2541 -2541
- package/build/resources/ui-ux-data/shadcn/components.json +997 -997
- package/build/resources/ui-ux-data/themes/presets.json +483 -483
- package/build/schemas/index.d.ts +0 -22
- package/build/schemas/memory-tools.d.ts +0 -22
- package/build/schemas/memory-tools.js +0 -14
- package/build/tools/analyze_project.d.ts +1 -0
- package/build/tools/analyze_project.js +527 -0
- package/build/tools/check_deps.d.ts +13 -0
- package/build/tools/check_deps.js +204 -0
- package/build/tools/code_insight.js +41 -41
- package/build/tools/convert.d.ts +13 -0
- package/build/tools/convert.js +599 -0
- package/build/tools/css_order.d.ts +13 -0
- package/build/tools/css_order.js +81 -0
- package/build/tools/debug.d.ts +13 -0
- package/build/tools/debug.js +131 -0
- package/build/tools/design2code.d.ts +20 -0
- package/build/tools/design2code.js +426 -0
- package/build/tools/detect_shell.d.ts +6 -0
- package/build/tools/detect_shell.js +151 -0
- package/build/tools/explain.d.ts +13 -0
- package/build/tools/explain.js +390 -0
- package/build/tools/fix.d.ts +13 -0
- package/build/tools/fix.js +303 -0
- package/build/tools/fix_bug.js +161 -161
- package/build/tools/gen_mock.d.ts +22 -0
- package/build/tools/gen_mock.js +269 -0
- package/build/tools/gen_skill.d.ts +13 -0
- package/build/tools/gen_skill.js +560 -0
- package/build/tools/genapi.d.ts +13 -0
- package/build/tools/genapi.js +174 -0
- package/build/tools/genchangelog.d.ts +13 -0
- package/build/tools/genchangelog.js +250 -0
- package/build/tools/gencommit.js +60 -60
- package/build/tools/gendoc.d.ts +13 -0
- package/build/tools/gendoc.js +232 -0
- package/build/tools/genpr.d.ts +13 -0
- package/build/tools/genpr.js +194 -0
- package/build/tools/genreadme.d.ts +13 -0
- package/build/tools/genreadme.js +626 -0
- package/build/tools/gensql.d.ts +13 -0
- package/build/tools/gensql.js +320 -0
- package/build/tools/genui.d.ts +13 -0
- package/build/tools/genui.js +803 -0
- package/build/tools/index.d.ts +0 -1
- package/build/tools/index.js +0 -1
- package/build/tools/init_component_catalog.d.ts +22 -0
- package/build/tools/init_component_catalog.js +809 -0
- package/build/tools/init_project_context.js +432 -432
- package/build/tools/init_setting.d.ts +13 -0
- package/build/tools/init_setting.js +47 -0
- package/build/tools/perf.d.ts +13 -0
- package/build/tools/perf.js +409 -0
- package/build/tools/render_ui.d.ts +22 -0
- package/build/tools/render_ui.js +384 -0
- package/build/tools/resolve_conflict.d.ts +13 -0
- package/build/tools/resolve_conflict.js +349 -0
- package/build/tools/security_scan.d.ts +22 -0
- package/build/tools/security_scan.js +323 -0
- package/build/tools/split.d.ts +13 -0
- package/build/tools/split.js +599 -0
- package/build/tools/start_api.d.ts +13 -0
- package/build/tools/start_api.js +193 -0
- package/build/tools/start_bugfix.js +233 -233
- package/build/tools/start_doc.d.ts +13 -0
- package/build/tools/start_doc.js +207 -0
- package/build/tools/start_feature.js +117 -117
- package/build/tools/start_product.js +1 -1
- package/build/tools/start_refactor.d.ts +13 -0
- package/build/tools/start_refactor.js +188 -0
- package/build/tools/start_release.d.ts +13 -0
- package/build/tools/start_release.js +167 -0
- package/build/tools/start_review.d.ts +13 -0
- package/build/tools/start_review.js +175 -0
- package/build/tools/start_ui.js +399 -399
- package/build/tools/ui-ux-tools.js +290 -290
- package/build/utils/__tests__/vercel-guidelines-sync.unit.test.js +12 -12
- package/build/utils/themes-sync.js +8 -8
- package/package.json +81 -83
- package/build/lib/__tests__/memory-orchestration.unit.test.js +0 -88
- package/build/lib/__tests__/memory-payload.unit.test.js +0 -35
- package/build/lib/cursor-history-client.d.ts +0 -54
- package/build/lib/cursor-history-client.js +0 -240
- package/build/tools/__tests__/cursor-history.unit.test.d.ts +0 -1
- package/build/tools/__tests__/cursor-history.unit.test.js +0 -38
- package/build/tools/cursor_read_conversation.d.ts +0 -7
- package/build/tools/cursor_read_conversation.js +0 -36
- package/docs/.mcp-probe/layout.json +0 -11
- package/docs/CNAME +0 -1
- package/docs/assets/font/MaterialSymbolsOutlined.codepoints +0 -4102
- package/docs/assets/font/MaterialSymbolsOutlined.ttf +0 -0
- package/docs/assets/font/noto-sans-sc-400.ttf +0 -0
- package/docs/assets/font/noto-sans-sc-700.ttf +0 -0
- package/docs/assets/font/noto-sans-sc-900.ttf +0 -0
- package/docs/assets/js/i18n.js +0 -375
- package/docs/assets/js/tailwind.js +0 -83
- package/docs/assets/logo-zh.png +0 -0
- package/docs/assets/logo.png +0 -0
- package/docs/data/tools.js +0 -523
- package/docs/i18n/all-tools/en.json +0 -190
- package/docs/i18n/all-tools/ja.json +0 -171
- package/docs/i18n/all-tools/ko.json +0 -171
- package/docs/i18n/all-tools/zh-CN.json +0 -190
- package/docs/i18n/en.json +0 -626
- package/docs/i18n/ja.json +0 -602
- package/docs/i18n/ko.json +0 -602
- package/docs/i18n/zh-CN.json +0 -626
- package/docs/index.html +0 -327
- package/docs/memory-local-setup.md +0 -315
- package/docs/memory-local-setup.zh-CN.md +0 -283
- package/docs/pages/all-tools.html +0 -515
- package/docs/pages/examples.html +0 -717
- package/docs/pages/getting-started.html +0 -964
- package/docs/pages/migration.html +0 -308
- package/docs/specs/user-auth/design.md +0 -82
- package/docs/specs/user-auth/requirements.md +0 -52
- package/docs/specs/user-auth/tasks.md +0 -55
- /package/build/{lib/__tests__/memory-orchestration.unit.test.d.ts → utils/design-docs-generator.d.ts} +0 -0
- /package/build/{lib/__tests__/memory-payload.unit.test.d.ts → utils/design-docs-generator.js} +0 -0
package/docs/index.html
DELETED
|
@@ -1,327 +0,0 @@
|
|
|
1
|
-
<!DOCTYPE html>
|
|
2
|
-
<html lang="zh-CN">
|
|
3
|
-
<head>
|
|
4
|
-
<meta charset="UTF-8">
|
|
5
|
-
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
-
<title>MCP Probe Kit - AI 驱动的完整研发工具集 | 22个工具覆盖开发全流程</title>
|
|
7
|
-
|
|
8
|
-
<!-- SEO Meta Tags -->
|
|
9
|
-
<meta name="description" content="MCP Probe Kit 提供 22 个 AI 驱动的研发工具,覆盖需求分析、代码开发、质量保障、Bug修复、版本发布全流程。支持 Cursor、Cline、Claude Desktop,100% 结构化输出。">
|
|
10
|
-
<meta name="keywords" content="MCP Probe Kit, AI开发工具, 代码生成, 代码审查, Git工具, UI开发, 研发效率, Cursor, Cline, Claude, MCP Server">
|
|
11
|
-
<meta name="author" content="小墨 (Kyle) - ByteZoneX">
|
|
12
|
-
<meta name="robots" content="index, follow">
|
|
13
|
-
<link rel="canonical" href="https://mcp-probe-kit.bytezonex.com/">
|
|
14
|
-
<link rel="icon" type="image/x-icon" href="https://www.bytezonex.com/favicon.ico">
|
|
15
|
-
|
|
16
|
-
<!-- Open Graph / Facebook -->
|
|
17
|
-
<meta property="og:type" content="website">
|
|
18
|
-
<meta property="og:url" content="https://mcp-probe-kit.bytezonex.com/">
|
|
19
|
-
<meta property="og:title" content="MCP Probe Kit - AI 驱动的完整研发工具集">
|
|
20
|
-
<meta property="og:description" content="22 个 AI 工具覆盖开发全流程,从需求到上线一站式解决。支持 Cursor、Cline、Claude Desktop。">
|
|
21
|
-
|
|
22
|
-
<!-- Twitter -->
|
|
23
|
-
<meta property="twitter:card" content="summary_large_image">
|
|
24
|
-
<meta property="twitter:url" content="https://mcp-probe-kit.bytezonex.com/">
|
|
25
|
-
<meta property="twitter:title" content="MCP Probe Kit - AI 驱动的完整研发工具集">
|
|
26
|
-
<meta property="twitter:description" content="22 个 AI 工具覆盖开发全流程,从需求到上线一站式解决。">
|
|
27
|
-
|
|
28
|
-
<script src="assets/js/tailwind.js" data-cfasync="false"></script>
|
|
29
|
-
<script>
|
|
30
|
-
tailwind.config = {
|
|
31
|
-
theme: {
|
|
32
|
-
extend: {
|
|
33
|
-
colors: {
|
|
34
|
-
primary: {
|
|
35
|
-
DEFAULT: '#2563EB',
|
|
36
|
-
hover: '#1D4ED8',
|
|
37
|
-
light: '#3B82F6',
|
|
38
|
-
},
|
|
39
|
-
text: {
|
|
40
|
-
primary: '#0F172A',
|
|
41
|
-
secondary: '#475569',
|
|
42
|
-
tertiary: '#64748B',
|
|
43
|
-
},
|
|
44
|
-
bg: {
|
|
45
|
-
page: '#F8FAFC',
|
|
46
|
-
card: '#FFFFFF',
|
|
47
|
-
hover: '#F1F5F9',
|
|
48
|
-
},
|
|
49
|
-
border: {
|
|
50
|
-
DEFAULT: '#E2E8F0',
|
|
51
|
-
hover: '#CBD5E1',
|
|
52
|
-
},
|
|
53
|
-
},
|
|
54
|
-
boxShadow: {
|
|
55
|
-
sm: '0 1px 2px rgba(0, 0, 0, 0.05)',
|
|
56
|
-
md: '0 4px 6px rgba(0, 0, 0, 0.07)',
|
|
57
|
-
lg: '0 10px 15px rgba(0, 0, 0, 0.1)',
|
|
58
|
-
},
|
|
59
|
-
fontFamily: {
|
|
60
|
-
sans: ['-apple-system', 'BlinkMacSystemFont', '"PingFang SC"', '"Microsoft YaHei"', '"Segoe UI"', 'Roboto', '"Helvetica Neue"', 'Arial', '"Noto Sans CJK SC"', 'sans-serif'],
|
|
61
|
-
mono: ['ui-monospace', '"SF Mono"', '"Cascadia Code"', '"Consolas"', 'Menlo', 'Monaco', '"PingFang SC"', '"Microsoft YaHei"', '"Courier New"', 'monospace']
|
|
62
|
-
},
|
|
63
|
-
}
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
</script>
|
|
67
|
-
<style>
|
|
68
|
-
html { scroll-behavior: smooth; }
|
|
69
|
-
.card-link:hover .link-arrow { transform: translateX(4px); }
|
|
70
|
-
.link-arrow { transition: transform 0.2s; }
|
|
71
|
-
/* 移动端侧边栏 */
|
|
72
|
-
.sidebar-drawer { transition: transform 0.3s ease; }
|
|
73
|
-
@media (max-width: 767px) {
|
|
74
|
-
.sidebar-drawer { transform: translateX(-100%); }
|
|
75
|
-
.sidebar-drawer.open { transform: translateX(0); }
|
|
76
|
-
}
|
|
77
|
-
.backdrop { opacity: 0; pointer-events: none; transition: opacity 0.3s ease; }
|
|
78
|
-
.backdrop.active { opacity: 1; pointer-events: auto; }
|
|
79
|
-
|
|
80
|
-
/* i18n 加载优化:防止内容闪烁 */
|
|
81
|
-
body:not(.i18n-ready) [data-i18n] {
|
|
82
|
-
visibility: hidden;
|
|
83
|
-
}
|
|
84
|
-
body.i18n-ready [data-i18n] {
|
|
85
|
-
visibility: visible;
|
|
86
|
-
}
|
|
87
|
-
</style>
|
|
88
|
-
</head>
|
|
89
|
-
<body class="font-sans bg-bg-page text-text-primary leading-relaxed min-h-screen flex flex-col">
|
|
90
|
-
<!-- A. 顶部导航栏 -->
|
|
91
|
-
<nav class="fixed top-0 left-0 right-0 h-14 bg-white/95 backdrop-blur-md border-b border-border z-50">
|
|
92
|
-
<div class="h-full px-4 flex items-center justify-between max-w-[1200px] mx-auto">
|
|
93
|
-
<a href="./index.html" class="flex items-center gap-2 text-base font-semibold text-text-primary no-underline">
|
|
94
|
-
<span>🚀</span>
|
|
95
|
-
<span class="sm:inline hidden">MCP Probe Kit</span>
|
|
96
|
-
</a>
|
|
97
|
-
<div class="flex items-center gap-3">
|
|
98
|
-
<div class="hidden md:flex items-center gap-4">
|
|
99
|
-
<a href="./pages/all-tools.html" class="text-text-secondary text-sm font-medium hover:text-primary transition-colors" data-i18n="nav.docs">文档</a>
|
|
100
|
-
<a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="text-text-secondary text-sm font-medium hover:text-primary transition-colors flex items-center gap-1">
|
|
101
|
-
<span data-i18n="nav.mainSite">主站</span> ByteZoneX<span class="text-xs">↗</span>
|
|
102
|
-
</a>
|
|
103
|
-
<a href="https://github.com/mybolide/mcp-probe-kit" target="_blank" rel="noopener" class="text-text-secondary text-sm font-medium hover:text-primary transition-colors flex items-center gap-1">GitHub<span class="text-xs">↗</span></a>
|
|
104
|
-
<a href="https://www.npmjs.com/package/mcp-probe-kit" target="_blank" rel="noopener" class="text-text-secondary text-sm font-medium hover:text-primary transition-colors flex items-center gap-1">npm<span class="text-xs">↗</span></a>
|
|
105
|
-
<div id="lang-switcher-container"></div>
|
|
106
|
-
</div>
|
|
107
|
-
<button onclick="toggleSidebar()" class="md:hidden p-2 text-text-secondary hover:text-primary transition-colors">
|
|
108
|
-
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
|
109
|
-
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M4 6h16M4 12h16M4 18h16"/>
|
|
110
|
-
</svg>
|
|
111
|
-
</button>
|
|
112
|
-
</div>
|
|
113
|
-
</div>
|
|
114
|
-
</nav>
|
|
115
|
-
|
|
116
|
-
<!-- 侧边栏遮罩 -->
|
|
117
|
-
<div class="fixed inset-0 bg-black/50 z-40 backdrop opacity-0 pointer-events-none transition-opacity duration-300 md:hidden" onclick="toggleSidebar()" id="backdrop"></div>
|
|
118
|
-
|
|
119
|
-
<!-- 移动端侧边栏 -->
|
|
120
|
-
<aside class="fixed left-0 top-14 bottom-0 w-64 bg-white border-r border-border z-50 sidebar-drawer overflow-y-auto md:hidden" id="sidebar">
|
|
121
|
-
<div class="p-4">
|
|
122
|
-
<div class="mb-4">
|
|
123
|
-
<div class="text-xs font-semibold text-text-tertiary uppercase tracking-wider mb-2 px-2">快速开始</div>
|
|
124
|
-
<a href="./index.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm font-medium bg-blue-50 text-primary no-underline border-l-3 border-primary">
|
|
125
|
-
<span>🏠</span>
|
|
126
|
-
<span>文档首页</span>
|
|
127
|
-
</a>
|
|
128
|
-
<a href="./pages/getting-started.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
|
|
129
|
-
<span>📖</span>
|
|
130
|
-
<span>安装配置</span>
|
|
131
|
-
</a>
|
|
132
|
-
</div>
|
|
133
|
-
|
|
134
|
-
<div class="mb-4">
|
|
135
|
-
<div class="text-xs font-semibold text-text-tertiary uppercase tracking-wider mb-2 px-2">工具文档</div>
|
|
136
|
-
<a href="./pages/all-tools.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
|
|
137
|
-
<span>🛠️</span>
|
|
138
|
-
<span>所有工具</span>
|
|
139
|
-
<span class="ml-auto bg-bg-page text-xs px-2 py-0.5 rounded-full">22</span>
|
|
140
|
-
</a>
|
|
141
|
-
</div>
|
|
142
|
-
|
|
143
|
-
<div class="mb-4">
|
|
144
|
-
<div class="text-xs font-semibold text-text-tertiary uppercase tracking-wider mb-2 px-2">指南</div>
|
|
145
|
-
<a href="./pages/migration.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
|
|
146
|
-
<span>🚀</span>
|
|
147
|
-
<span>迁移指南</span>
|
|
148
|
-
</a>
|
|
149
|
-
<a href="./pages/examples.html" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
|
|
150
|
-
<span>💡</span>
|
|
151
|
-
<span>最佳实践</span>
|
|
152
|
-
</a>
|
|
153
|
-
</div>
|
|
154
|
-
|
|
155
|
-
<div class="pt-4 border-t border-border">
|
|
156
|
-
<a href="https://github.com/mybolide/mcp-probe-kit" target="_blank" rel="noopener" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
|
|
157
|
-
<span>💻</span>
|
|
158
|
-
<span>GitHub</span>
|
|
159
|
-
<span class="ml-auto text-xs">↗</span>
|
|
160
|
-
</a>
|
|
161
|
-
<a href="https://npmjs.com/package/mcp-probe-kit" target="_blank" rel="noopener" class="flex items-center gap-2 px-3 py-2 rounded-md text-sm text-text-secondary hover:bg-bg-page hover:text-primary transition-colors no-underline">
|
|
162
|
-
<span>📦</span>
|
|
163
|
-
<span>npm</span>
|
|
164
|
-
<span class="ml-auto text-xs">↗</span>
|
|
165
|
-
</a>
|
|
166
|
-
</div>
|
|
167
|
-
|
|
168
|
-
<!-- QR Code -->
|
|
169
|
-
<div class="mt-4 pt-4 border-t border-border">
|
|
170
|
-
<div class="text-center">
|
|
171
|
-
<div class="text-xs font-semibold text-text-tertiary mb-2">关注公众号</div>
|
|
172
|
-
<img src="https://oss.bolzjb.com/wx_qrcode.jpg" alt="微信公众号" class="w-[100px] h-[100px] mx-auto rounded-lg border border-border" />
|
|
173
|
-
<div class="text-xs text-text-tertiary mt-2">获取更多技术分享</div>
|
|
174
|
-
</div>
|
|
175
|
-
</div>
|
|
176
|
-
</div>
|
|
177
|
-
</aside>
|
|
178
|
-
|
|
179
|
-
<!-- B. Hero 首屏 -->
|
|
180
|
-
<section class="bg-gradient-to-br from-primary to-primary-hover text-white py-12 px-6 text-center mt-14">
|
|
181
|
-
<div class="max-w-[800px] mx-auto">
|
|
182
|
-
<h1 class="text-3xl sm:text-4xl md:text-5xl font-bold mb-3 tracking-tight" data-i18n="hero.title">🚀 MCP Probe Kit</h1>
|
|
183
|
-
<p class="text-base sm:text-lg opacity-95 mb-2" data-i18n="hero.subtitle">AI 开发增强工具集 · 文档中心</p>
|
|
184
|
-
<div class="inline-block bg-white/20 px-3 py-1 rounded-full text-sm font-semibold mb-6 md:mb-8">v3.0.10</div>
|
|
185
|
-
<div class="flex gap-3 md:gap-4 justify-center flex-wrap">
|
|
186
|
-
<a href="./pages/getting-started.html" class="bg-white text-primary px-5 py-2.5 sm:px-6 sm:py-3 rounded-md text-sm sm:text-base font-semibold hover:-translate-y-0.5 hover:shadow-lg transition-all duration-200 inline-flex items-center gap-1.5 no-underline cursor-pointer border-0" data-i18n="hero.quickStart">快速开始</a>
|
|
187
|
-
<a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="bg-white/15 text-white px-5 py-2.5 sm:px-6 sm:py-3 rounded-md text-sm sm:text-base font-semibold hover:bg-white/25 transition-all duration-200 inline-flex items-center gap-1.5 no-underline border border-white/30" data-i18n="hero.visitMainSite">
|
|
188
|
-
访问主站 ByteZoneX ↗
|
|
189
|
-
</a>
|
|
190
|
-
</div>
|
|
191
|
-
</div>
|
|
192
|
-
</section>
|
|
193
|
-
|
|
194
|
-
<!-- C. 主内容区 -->
|
|
195
|
-
<main class="flex-1 max-w-[1200px] mx-auto px-4 sm:px-6 py-8 md:py-12 w-full">
|
|
196
|
-
<div class="grid grid-cols-1 sm:grid-cols-2 gap-4 sm:gap-6">
|
|
197
|
-
<!-- 1. 快速开始 -->
|
|
198
|
-
<article class="bg-bg-card border border-border rounded-lg p-4 sm:p-6 transition-all duration-300 ease-out shadow-sm hover:-translate-y-1 hover:shadow-lg hover:border-primary">
|
|
199
|
-
<div class="flex items-center justify-between mb-3 pb-3 border-b border-border">
|
|
200
|
-
<h2 class="flex items-center gap-2 text-lg sm:text-xl font-semibold text-text-primary">
|
|
201
|
-
<span>📖</span>
|
|
202
|
-
<span data-i18n="sections.quickStart.title">快速开始</span>
|
|
203
|
-
</h2>
|
|
204
|
-
</div>
|
|
205
|
-
<p class="text-text-secondary text-sm mb-4 leading-relaxed" data-i18n="sections.quickStart.description">5 分钟快速上手 MCP Probe Kit v3.0.10</p>
|
|
206
|
-
<nav class="flex flex-col gap-0">
|
|
207
|
-
<a href="./pages/getting-started.html" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
|
|
208
|
-
<span data-i18n="sections.quickStart.installConfig">安装配置</span>
|
|
209
|
-
<span class="link-arrow text-text-tertiary text-base">→</span>
|
|
210
|
-
</a>
|
|
211
|
-
</nav>
|
|
212
|
-
</article>
|
|
213
|
-
|
|
214
|
-
<!-- 2. 工具文档 -->
|
|
215
|
-
<article class="bg-bg-card border border-border rounded-lg p-4 sm:p-6 transition-all duration-300 ease-out shadow-sm hover:-translate-y-1 hover:shadow-lg hover:border-primary">
|
|
216
|
-
<div class="flex items-center justify-between mb-3 pb-3 border-b border-border">
|
|
217
|
-
<h2 class="flex items-center gap-2 text-lg sm:text-xl font-semibold text-text-primary">
|
|
218
|
-
<span>🛠️</span>
|
|
219
|
-
<span data-i18n="sections.tools.title">工具文档</span>
|
|
220
|
-
</h2>
|
|
221
|
-
</div>
|
|
222
|
-
<p class="text-text-secondary text-sm mb-4 leading-relaxed" data-i18n="sections.tools.description">22 个实用工具的完整参考,含图谱洞察与编排工作流</p>
|
|
223
|
-
<nav class="flex flex-col gap-0">
|
|
224
|
-
<a href="./pages/all-tools.html" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
|
|
225
|
-
<div class="flex items-center gap-2">
|
|
226
|
-
<span data-i18n="sections.tools.allTools">所有工具</span>
|
|
227
|
-
<span class="bg-bg-hover text-text-secondary px-2 py-0.5 rounded-full text-xs font-semibold">22</span>
|
|
228
|
-
</div>
|
|
229
|
-
<span class="link-arrow text-text-tertiary text-base">→</span>
|
|
230
|
-
</a>
|
|
231
|
-
</nav>
|
|
232
|
-
</article>
|
|
233
|
-
|
|
234
|
-
<!-- 3. 指南 -->
|
|
235
|
-
<article class="bg-bg-card border border-border rounded-lg p-4 sm:p-6 transition-all duration-300 ease-out shadow-sm hover:-translate-y-1 hover:shadow-lg hover:border-primary">
|
|
236
|
-
<div class="flex items-center justify-between mb-3 pb-3 border-b border-border">
|
|
237
|
-
<h2 class="flex items-center gap-2 text-lg sm:text-xl font-semibold text-text-primary">
|
|
238
|
-
<span>📚</span>
|
|
239
|
-
<span data-i18n="sections.guides.title">指南</span>
|
|
240
|
-
</h2>
|
|
241
|
-
</div>
|
|
242
|
-
<p class="text-text-secondary text-sm mb-4 leading-relaxed" data-i18n="sections.guides.description">迁移指南和最佳实践</p>
|
|
243
|
-
<nav class="flex flex-col gap-0">
|
|
244
|
-
<a href="./pages/migration.html" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
|
|
245
|
-
<span data-i18n="sections.guides.migration">v2.x → v3.0 迁移指南</span>
|
|
246
|
-
<span class="link-arrow text-text-tertiary text-base">→</span>
|
|
247
|
-
</a>
|
|
248
|
-
<a href="./pages/examples.html" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
|
|
249
|
-
<span data-i18n="sections.guides.bestPractices">最佳实践</span>
|
|
250
|
-
<span class="link-arrow text-text-tertiary text-base">→</span>
|
|
251
|
-
</a>
|
|
252
|
-
</nav>
|
|
253
|
-
</article>
|
|
254
|
-
|
|
255
|
-
<!-- 4. 资源 -->
|
|
256
|
-
<article class="bg-bg-card border border-border rounded-lg p-4 sm:p-6 transition-all duration-300 ease-out shadow-sm hover:-translate-y-1 hover:shadow-lg hover:border-primary">
|
|
257
|
-
<div class="flex items-center justify-between mb-3 pb-3 border-b border-border">
|
|
258
|
-
<h2 class="flex items-center gap-2 text-lg sm:text-xl font-semibold text-text-primary">
|
|
259
|
-
<span>🔗</span>
|
|
260
|
-
<span data-i18n="sections.resources.title">资源</span>
|
|
261
|
-
</h2>
|
|
262
|
-
</div>
|
|
263
|
-
<p class="text-text-secondary text-sm mb-4 leading-relaxed" data-i18n="sections.resources.description">源代码和社区支持</p>
|
|
264
|
-
<nav class="flex flex-col gap-0">
|
|
265
|
-
<a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
|
|
266
|
-
<div class="flex items-center gap-2">
|
|
267
|
-
<span data-i18n="sections.resources.mainSite">ByteZoneX 主站</span>
|
|
268
|
-
<span class="text-xs text-text-tertiary">↗</span>
|
|
269
|
-
</div>
|
|
270
|
-
<span class="link-arrow text-text-tertiary text-base">→</span>
|
|
271
|
-
</a>
|
|
272
|
-
<a href="https://github.com/mybolide/mcp-probe-kit" target="_blank" rel="noopener" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
|
|
273
|
-
<div class="flex items-center gap-2">
|
|
274
|
-
<span data-i18n="sections.resources.githubRepo">GitHub 仓库</span>
|
|
275
|
-
<span class="text-xs text-text-tertiary">↗</span>
|
|
276
|
-
</div>
|
|
277
|
-
<span class="link-arrow text-text-tertiary text-base">→</span>
|
|
278
|
-
</a>
|
|
279
|
-
<a href="https://www.npmjs.com/package/mcp-probe-kit" target="_blank" rel="noopener" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
|
|
280
|
-
<div class="flex items-center gap-2">
|
|
281
|
-
<span data-i18n="sections.resources.npmPackage">npm 包</span>
|
|
282
|
-
<span class="text-xs text-text-tertiary">↗</span>
|
|
283
|
-
</div>
|
|
284
|
-
<span class="link-arrow text-text-tertiary text-base">→</span>
|
|
285
|
-
</a>
|
|
286
|
-
<a href="https://github.com/mybolide/mcp-probe-kit/issues" target="_blank" rel="noopener" class="flex items-center justify-between px-3 py-2.5 -mx-3 text-text-primary text-sm font-medium rounded-md transition-all duration-200 hover:bg-bg-hover hover:text-primary no-underline">
|
|
287
|
-
<div class="flex items-center gap-2">
|
|
288
|
-
<span data-i18n="sections.resources.issues">问题反馈</span>
|
|
289
|
-
<span class="text-xs text-text-tertiary">↗</span>
|
|
290
|
-
</div>
|
|
291
|
-
<span class="link-arrow text-text-tertiary text-base">→</span>
|
|
292
|
-
</a>
|
|
293
|
-
</nav>
|
|
294
|
-
</article>
|
|
295
|
-
</div>
|
|
296
|
-
</main>
|
|
297
|
-
|
|
298
|
-
<!-- D. Footer -->
|
|
299
|
-
<footer class="bg-bg-card border-t border-border px-4 sm:px-6 py-6 mt-auto">
|
|
300
|
-
<div class="max-w-[1200px] mx-auto flex flex-col sm:flex-row justify-between items-center gap-4 text-sm text-text-secondary">
|
|
301
|
-
<div><span data-i18n="footer.madeWith">Made with ❤️ by</span> <a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="text-primary hover:text-primary-hover transition-colors duration-200 no-underline">小墨 (Kyle)</a></div>
|
|
302
|
-
<div>
|
|
303
|
-
© 2024-2026 MCP Probe Kit · <span data-i18n="footer.license">MIT License</span> ·
|
|
304
|
-
<a href="https://www.bytezonex.com/" target="_blank" rel="noopener" class="text-primary hover:text-primary-hover transition-colors duration-200 no-underline"><span data-i18n="footer.mainSite">主站 ByteZoneX</span> ↗</a>
|
|
305
|
-
</div>
|
|
306
|
-
</div>
|
|
307
|
-
</footer>
|
|
308
|
-
|
|
309
|
-
<script>
|
|
310
|
-
// 侧边栏切换
|
|
311
|
-
function toggleSidebar() {
|
|
312
|
-
const sidebar = document.getElementById('sidebar');
|
|
313
|
-
const backdrop = document.getElementById('backdrop');
|
|
314
|
-
const isOpen = sidebar.classList.contains('open');
|
|
315
|
-
if (isOpen) {
|
|
316
|
-
sidebar.classList.remove('open');
|
|
317
|
-
backdrop.classList.remove('active');
|
|
318
|
-
} else {
|
|
319
|
-
sidebar.classList.add('open');
|
|
320
|
-
backdrop.classList.add('active');
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
</script>
|
|
324
|
-
<script src="./assets/js/i18n.js"></script>
|
|
325
|
-
</body>
|
|
326
|
-
</html>
|
|
327
|
-
|
|
@@ -1,315 +0,0 @@
|
|
|
1
|
-
# Local Memory Stack (Qdrant + Nomic Embed)
|
|
2
|
-
|
|
3
|
-
This guide documents a **lightweight local setup** for mcp-probe-kit memory tools (`search_memory`, `memorize_asset`, `read_memory_asset`, `scan_and_extract_patterns`):
|
|
4
|
-
|
|
5
|
-
- **Qdrant** — vector database (port `50008`)
|
|
6
|
-
- **Infinity (nomic-embed)** — embedding API (port `50012`), replaces Ollama for users who want a smaller footprint
|
|
7
|
-
|
|
8
|
-
Both services are typically deployed with Docker Compose under a shared `docker-start` layout. Ports use the `500xx` convention to avoid conflicts.
|
|
9
|
-
|
|
10
|
-
| Service | Host port | Container port | Purpose |
|
|
11
|
-
|---------|-----------|----------------|---------|
|
|
12
|
-
| Qdrant HTTP | `50008` | `6333` | REST API, dashboard |
|
|
13
|
-
| Qdrant gRPC | `50009` | `6334` | gRPC API |
|
|
14
|
-
| Nomic Embed (Infinity) | `50012` | `7997` | OpenAI-compatible embeddings |
|
|
15
|
-
|
|
16
|
-
---
|
|
17
|
-
|
|
18
|
-
## 1. Qdrant
|
|
19
|
-
|
|
20
|
-
### Service info
|
|
21
|
-
|
|
22
|
-
| Item | Value |
|
|
23
|
-
|------|-------|
|
|
24
|
-
| Image | `qdrant/qdrant:latest` |
|
|
25
|
-
| Container name | `qdrant` |
|
|
26
|
-
| HTTP | `http://127.0.0.1:50008` |
|
|
27
|
-
| gRPC | `127.0.0.1:50009` |
|
|
28
|
-
| Data | `./data` → `/qdrant/storage` |
|
|
29
|
-
| Snapshots | `./snapshots` → `/qdrant/snapshots` |
|
|
30
|
-
| Auth | `QDRANT_API_KEY` in `.env` (header `api-key`) |
|
|
31
|
-
|
|
32
|
-
### `docker-compose.yml`
|
|
33
|
-
|
|
34
|
-
```yaml
|
|
35
|
-
services:
|
|
36
|
-
qdrant:
|
|
37
|
-
image: qdrant/qdrant:latest
|
|
38
|
-
container_name: qdrant
|
|
39
|
-
restart: always
|
|
40
|
-
env_file:
|
|
41
|
-
- .env
|
|
42
|
-
ports:
|
|
43
|
-
- "50008:6333"
|
|
44
|
-
- "50009:6334"
|
|
45
|
-
volumes:
|
|
46
|
-
- ./data:/qdrant/storage
|
|
47
|
-
- ./snapshots:/qdrant/snapshots
|
|
48
|
-
environment:
|
|
49
|
-
- QDRANT__SERVICE__HTTP_PORT=6333
|
|
50
|
-
- QDRANT__SERVICE__GRPC_PORT=6334
|
|
51
|
-
- QDRANT__LOG_LEVEL=INFO
|
|
52
|
-
- QDRANT__SERVICE__API_KEY=${QDRANT_API_KEY}
|
|
53
|
-
healthcheck:
|
|
54
|
-
test:
|
|
55
|
-
- "CMD"
|
|
56
|
-
- "bash"
|
|
57
|
-
- "-c"
|
|
58
|
-
- "exec 3<>/dev/tcp/127.0.0.1/6333 && printf 'GET /collections HTTP/1.1\r\nHost: localhost\r\napi-key: ${QDRANT_API_KEY}\r\nConnection: close\r\n\r\n' >&3 && IFS= read -r line <&3 && [[ \"$$line\" == *\"200\"* ]]"
|
|
59
|
-
interval: 30s
|
|
60
|
-
timeout: 10s
|
|
61
|
-
retries: 5
|
|
62
|
-
start_period: 30s
|
|
63
|
-
```
|
|
64
|
-
|
|
65
|
-
### `.env.example`
|
|
66
|
-
|
|
67
|
-
```bash
|
|
68
|
-
# copy: cp .env.example .env
|
|
69
|
-
# generate key: python -c "import secrets; print(secrets.token_urlsafe(32))"
|
|
70
|
-
|
|
71
|
-
QDRANT_API_KEY=change-me-to-a-long-random-string
|
|
72
|
-
QDRANT_URL=http://127.0.0.1:50008
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
### First deploy
|
|
76
|
-
|
|
77
|
-
```powershell
|
|
78
|
-
cd qdrant
|
|
79
|
-
copy .env.example .env
|
|
80
|
-
# Edit .env — set a long random QDRANT_API_KEY
|
|
81
|
-
docker compose up -d
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
### Verify
|
|
85
|
-
|
|
86
|
-
```bash
|
|
87
|
-
# Health / collections (requires api-key when API_KEY is enabled)
|
|
88
|
-
curl http://127.0.0.1:50008/collections \
|
|
89
|
-
-H "api-key: YOUR_QDRANT_API_KEY"
|
|
90
|
-
|
|
91
|
-
# Web UI (enter the same key in the dashboard)
|
|
92
|
-
# http://127.0.0.1:50008/dashboard
|
|
93
|
-
```
|
|
94
|
-
|
|
95
|
-
### Common commands
|
|
96
|
-
|
|
97
|
-
```powershell
|
|
98
|
-
docker compose up -d # start
|
|
99
|
-
docker compose down # stop
|
|
100
|
-
docker compose logs -f qdrant # logs
|
|
101
|
-
docker compose restart qdrant # restart
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Notes
|
|
105
|
-
|
|
106
|
-
- After enabling `QDRANT__SERVICE__API_KEY`, **all** REST/gRPC requests must include header `api-key`.
|
|
107
|
-
- mcp-probe-kit sends this via `MEMORY_QDRANT_API_KEY`.
|
|
108
|
-
- Collection `mcp_probe_memory` is created automatically on first `memorize_asset` write (Cosine distance; vector size inferred from the first embedding).
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## 2. Nomic Embed (Infinity)
|
|
113
|
-
|
|
114
|
-
Lightweight embedding server based on [Infinity](https://github.com/michaelfeil/infinity). Model: `nomic-ai/nomic-embed-text-v1.5` (768 dimensions). No Ollama required.
|
|
115
|
-
|
|
116
|
-
### Service info
|
|
117
|
-
|
|
118
|
-
| Item | Value |
|
|
119
|
-
|------|-------|
|
|
120
|
-
| Image | `michaelf34/infinity:0.0.70` |
|
|
121
|
-
| Container name | `nomic-embed` |
|
|
122
|
-
| Host port | `50012` → container `7997` |
|
|
123
|
-
| Model | `nomic-ai/nomic-embed-text-v1.5` |
|
|
124
|
-
| Vector dim | **768** |
|
|
125
|
-
| Engine | `torch` (CPU if no GPU) |
|
|
126
|
-
| Auth | `INFINITY_API_KEY` → `Authorization: Bearer <key>` |
|
|
127
|
-
| Model cache | Docker volume `hf_cache` → `/app/.cache` |
|
|
128
|
-
|
|
129
|
-
### `docker-compose.yml`
|
|
130
|
-
|
|
131
|
-
```yaml
|
|
132
|
-
services:
|
|
133
|
-
nomic-embed:
|
|
134
|
-
image: michaelf34/infinity:0.0.70
|
|
135
|
-
container_name: nomic-embed
|
|
136
|
-
restart: unless-stopped
|
|
137
|
-
ports:
|
|
138
|
-
- "50012:7997"
|
|
139
|
-
volumes:
|
|
140
|
-
- hf_cache:/app/.cache
|
|
141
|
-
environment:
|
|
142
|
-
INFINITY_API_KEY: ${INFINITY_API_KEY}
|
|
143
|
-
command:
|
|
144
|
-
- v2
|
|
145
|
-
- --model-id
|
|
146
|
-
- nomic-ai/nomic-embed-text-v1.5
|
|
147
|
-
- --revision
|
|
148
|
-
- main
|
|
149
|
-
- --dtype
|
|
150
|
-
- float32
|
|
151
|
-
- --batch-size
|
|
152
|
-
- "8"
|
|
153
|
-
- --engine
|
|
154
|
-
- torch
|
|
155
|
-
- --port
|
|
156
|
-
- "7997"
|
|
157
|
-
- --no-bettertransformer
|
|
158
|
-
healthcheck:
|
|
159
|
-
test:
|
|
160
|
-
- "CMD"
|
|
161
|
-
- "curl"
|
|
162
|
-
- "-f"
|
|
163
|
-
- "http://127.0.0.1:7997/health"
|
|
164
|
-
interval: 30s
|
|
165
|
-
timeout: 10s
|
|
166
|
-
retries: 5
|
|
167
|
-
start_period: 120s
|
|
168
|
-
|
|
169
|
-
volumes:
|
|
170
|
-
hf_cache:
|
|
171
|
-
```
|
|
172
|
-
|
|
173
|
-
### `.env.example`
|
|
174
|
-
|
|
175
|
-
```bash
|
|
176
|
-
INFINITY_API_KEY=change-me-to-a-long-random-string
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
### First deploy
|
|
180
|
-
|
|
181
|
-
```powershell
|
|
182
|
-
cd nomic-embed
|
|
183
|
-
copy .env.example .env
|
|
184
|
-
# Edit .env — set INFINITY_API_KEY (long random string)
|
|
185
|
-
docker compose up -d
|
|
186
|
-
docker logs -f nomic-embed # wait for "ready to batch requests"
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
First start downloads the HuggingFace model (**~2–5 minutes** cold start).
|
|
190
|
-
|
|
191
|
-
### Verify
|
|
192
|
-
|
|
193
|
-
```bash
|
|
194
|
-
curl http://127.0.0.1:50012/health
|
|
195
|
-
|
|
196
|
-
curl http://127.0.0.1:50012/models \
|
|
197
|
-
-H "Authorization: Bearer YOUR_INFINITY_API_KEY"
|
|
198
|
-
|
|
199
|
-
# Important: path is /embeddings — NOT /v1/embeddings
|
|
200
|
-
curl http://127.0.0.1:50012/embeddings \
|
|
201
|
-
-H "Authorization: Bearer YOUR_INFINITY_API_KEY" \
|
|
202
|
-
-H "Content-Type: application/json" \
|
|
203
|
-
-d '{"model":"nomic-ai/nomic-embed-text-v1.5","input":"hello world"}'
|
|
204
|
-
```
|
|
205
|
-
|
|
206
|
-
Response: `data[0].embedding` is a **768**-float array.
|
|
207
|
-
|
|
208
|
-
Swagger: `http://127.0.0.1:50012/docs`
|
|
209
|
-
|
|
210
|
-
### Performance (CPU, indicative)
|
|
211
|
-
|
|
212
|
-
| Scenario | ~Latency |
|
|
213
|
-
|----------|----------|
|
|
214
|
-
| Single short text (warm) | 30–50 ms |
|
|
215
|
-
| First request | ~150 ms |
|
|
216
|
-
| Batch 8 | ~150 ms |
|
|
217
|
-
| Resident memory | ~1 GB |
|
|
218
|
-
|
|
219
|
-
Suitable for MCP memory and occasional writes; not for high-concurrency bulk indexing.
|
|
220
|
-
|
|
221
|
-
---
|
|
222
|
-
|
|
223
|
-
## 3. mcp-probe-kit MCP configuration
|
|
224
|
-
|
|
225
|
-
**Recommended:** Qdrant on `50008` + Infinity on `50012` with `openai-compatible` provider.
|
|
226
|
-
|
|
227
|
-
```json
|
|
228
|
-
{
|
|
229
|
-
"mcpServers": {
|
|
230
|
-
"mcp-probe-kit": {
|
|
231
|
-
"command": "npx",
|
|
232
|
-
"args": ["-y", "mcp-probe-kit@latest"],
|
|
233
|
-
"env": {
|
|
234
|
-
"MEMORY_QDRANT_URL": "http://127.0.0.1:50008",
|
|
235
|
-
"MEMORY_QDRANT_API_KEY": "YOUR_QDRANT_API_KEY",
|
|
236
|
-
"MEMORY_QDRANT_COLLECTION": "mcp_probe_memory",
|
|
237
|
-
"MEMORY_EMBEDDING_PROVIDER": "openai-compatible",
|
|
238
|
-
"MEMORY_EMBEDDING_URL": "http://127.0.0.1:50012/embeddings",
|
|
239
|
-
"MEMORY_EMBEDDING_MODEL": "nomic-ai/nomic-embed-text-v1.5",
|
|
240
|
-
"MEMORY_EMBEDDING_API_KEY": "YOUR_INFINITY_API_KEY",
|
|
241
|
-
"MEMORY_SEARCH_LIMIT": "3",
|
|
242
|
-
"MEMORY_SUMMARY_MAX_CHARS": "280"
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
}
|
|
246
|
-
}
|
|
247
|
-
```
|
|
248
|
-
|
|
249
|
-
Claude Code: put the same keys under `mcpServers.mcp-probe-kit.env` in `.mcp.json`.
|
|
250
|
-
|
|
251
|
-
After changing env, **fully restart** your MCP client (e.g. quit and reopen Cursor).
|
|
252
|
-
|
|
253
|
-
### Environment variable reference
|
|
254
|
-
|
|
255
|
-
| Variable | Required | Description |
|
|
256
|
-
|----------|----------|-------------|
|
|
257
|
-
| `MEMORY_QDRANT_URL` | Yes (read/write) | Qdrant base URL, e.g. `http://127.0.0.1:50008` |
|
|
258
|
-
| `MEMORY_QDRANT_API_KEY` | If Qdrant auth enabled | Sent as `api-key` header |
|
|
259
|
-
| `MEMORY_QDRANT_COLLECTION` | No | Default `mcp_probe_memory` |
|
|
260
|
-
| `MEMORY_EMBEDDING_URL` | Yes (write/search) | e.g. `http://127.0.0.1:50012/embeddings` |
|
|
261
|
-
| `MEMORY_EMBEDDING_MODEL` | Yes (write/search) | `nomic-ai/nomic-embed-text-v1.5` |
|
|
262
|
-
| `MEMORY_EMBEDDING_PROVIDER` | No | Must be `openai-compatible` for Infinity |
|
|
263
|
-
| `MEMORY_EMBEDDING_API_KEY` | Yes for Infinity | Bearer token = `INFINITY_API_KEY` |
|
|
264
|
-
| `MEMORY_SEARCH_LIMIT` | No | Default `3` |
|
|
265
|
-
| `MEMORY_SEARCH_CONTENT_MAX_CHARS` | No | Max `content` chars in `search_memory` text; default `1500`, `0` = summary only |
|
|
266
|
-
| `MEMORY_SUMMARY_MAX_CHARS` | No | Default `280` |
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
## 4. End-to-end smoke test
|
|
271
|
-
|
|
272
|
-
```bash
|
|
273
|
-
# 1) Qdrant
|
|
274
|
-
curl -s http://127.0.0.1:50008/collections -H "api-key: YOUR_QDRANT_API_KEY"
|
|
275
|
-
|
|
276
|
-
# 2) Embedding
|
|
277
|
-
curl -s -X POST http://127.0.0.1:50012/embeddings \
|
|
278
|
-
-H "Authorization: Bearer YOUR_INFINITY_API_KEY" \
|
|
279
|
-
-H "Content-Type: application/json" \
|
|
280
|
-
-d '{"model":"nomic-ai/nomic-embed-text-v1.5","input":"mcp-probe-kit test"}' \
|
|
281
|
-
| jq '.data[0].embedding | length'
|
|
282
|
-
# Expected: 768
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
Then in the IDE, call `memorize_asset` once and `read_memory_asset` / semantic search via orchestration tools.
|
|
286
|
-
|
|
287
|
-
---
|
|
288
|
-
|
|
289
|
-
## 5. Troubleshooting
|
|
290
|
-
|
|
291
|
-
| Symptom | Fix |
|
|
292
|
-
|---------|-----|
|
|
293
|
-
| Qdrant `401` | Set `MEMORY_QDRANT_API_KEY` to match `qdrant/.env` |
|
|
294
|
-
| Embedding `401` | Use `Authorization: Bearer` + correct `INFINITY_API_KEY` |
|
|
295
|
-
| Embedding `404` | URL must be `http://127.0.0.1:50012/embeddings`, not `/v1/embeddings` |
|
|
296
|
-
| `nomic-embed` health stuck on `starting` | First model download; check `docker logs nomic-embed` |
|
|
297
|
-
| Log `No CUDA runtime` | Normal on CPU |
|
|
298
|
-
| Dimension mismatch in Qdrant | Collection was created with another model; delete collection or use a new `MEMORY_QDRANT_COLLECTION` name |
|
|
299
|
-
| Memory write disabled | Ensure all three are set: `MEMORY_QDRANT_URL`, `MEMORY_EMBEDDING_URL`, `MEMORY_EMBEDDING_MODEL` |
|
|
300
|
-
|
|
301
|
-
---
|
|
302
|
-
|
|
303
|
-
## 6. Alternatives
|
|
304
|
-
|
|
305
|
-
| Stack | When to use |
|
|
306
|
-
|-------|-------------|
|
|
307
|
-
| **Qdrant + Infinity (this guide)** | Default for local dev; lighter than Ollama |
|
|
308
|
-
| Qdrant + Ollama | If you already run Ollama for chat models |
|
|
309
|
-
| Qdrant + hosted OpenAI-compatible API | No local embedding container |
|
|
310
|
-
|
|
311
|
-
See also [README — Optional Memory System Setup](../README.md#optional-memory-system-setup).
|
|
312
|
-
|
|
313
|
-
---
|
|
314
|
-
|
|
315
|
-
**中文说明**: 同内容中文版见 [memory-local-setup.zh-CN.md](./memory-local-setup.zh-CN.md).
|