xiaokui-mcp 1.0.2 → 1.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 CHANGED
@@ -1,27 +1,47 @@
1
- # 🌻 小葵 MCP 服务器
1
+ # 🌻 小葵 MCP 服务器 v1.1.0
2
2
 
3
- 小葵完全体的 MCP 服务器实现,支持跨设备记忆同步。
3
+ 小葵完全体的 MCP 服务器实现,支持跨设备记忆同步和技能同步。
4
4
 
5
- ## 功能
5
+ ## ✨ 功能特性
6
6
 
7
- - `backup` - 备份配置到本地/云端
8
- - `init` - 新电脑初始化恢复
9
- - `sync` - 同步云端更新
10
- - `status` - 查看状态
7
+ ### 核心功能
8
+ - `backup` - 备份记忆、配置和技能到本地/云端
9
+ - `init` - 新电脑初始化恢复(支持技能合并)
10
+ - `sync` - 同步云端更新(智能合并冲突)
11
+ - `status` - 查看备份状态和技能同步信息
12
+ - `skills-list` - 列出所有技能及其同步状态
11
13
 
12
- ## 安装
14
+ ### v1.1.0 新增特性 🎉
15
+ - ✅ **技能同步** - 自动备份和恢复 Claude Code 技能
16
+ - ✅ **技能持久化** - 保留技能的学习数据(assets, references, scripts)
17
+ - ✅ **智能合并** - 多设备技能冲突检测与解决策略
18
+ - ✅ **冲突策略** - 支持 ask/local/remote/newest 多种合并策略
19
+
20
+ ## 📦 安装
21
+
22
+ ### 方式1:通过 npx 使用(推荐)
23
+
24
+ ```bash
25
+ # 无需安装,直接使用
26
+ npx xiaokui-mcp@latest backup
27
+ npx xiaokui-mcp@latest sync
28
+ ```
29
+
30
+ ### 方式2:全局安装
31
+
32
+ ```bash
33
+ npm install -g xiaokui-mcp
34
+ ```
35
+
36
+ ### 方式3:本地安装
13
37
 
14
38
  ```bash
15
- # 方式1:本地安装
16
39
  cd ~/.claude/xiaokui-mcp
17
40
  npm install
18
41
  npm run build
19
-
20
- # 方式2:全局安装(推荐)
21
- npm install -g xiaokui-mcp
22
42
  ```
23
43
 
24
- ## 配置
44
+ ## 🔧 配置
25
45
 
26
46
  在 Claude Code 的 `.mcp.json` 中添加:
27
47
 
@@ -29,19 +49,19 @@ npm install -g xiaokui-mcp
29
49
  {
30
50
  "mcpServers": {
31
51
  "xiaokui": {
32
- "command": "node",
33
- "args": ["C:/Users/你的用户名/.claude/xiaokui-mcp/dist/index.js"]
52
+ "command": "npx",
53
+ "args": ["xiaokui-mcp@latest"]
34
54
  }
35
55
  }
36
56
  }
37
57
  ```
38
58
 
39
- ## 使用方法
59
+ ## 📖 使用方法
40
60
 
41
61
  ### 备份当前配置
42
62
 
43
- ```
44
- 调用 MCP 工具 xiaokui.backup
63
+ ```bash
64
+ npx xiaokui-mcp backup
45
65
  ```
46
66
 
47
67
  输出示例:
@@ -51,38 +71,126 @@ npm install -g xiaokui-mcp
51
71
  📋 备份信息:
52
72
  ID: xk-8a4f7c2e
53
73
  密码: Xp9Kj3LmNw8QvR5T
74
+ 大小: 0.52 MB
75
+ 技能: 7 个
76
+
77
+ ☁️ 云端备份: https://gist.github.com/...
54
78
  ```
55
79
 
56
80
  ### 新电脑初始化
57
81
 
82
+ ```bash
83
+ npx xiaokui-mcp init --id=xk-8a4f7c2e --password=Xp9Kj3LmNw8QvR5T
58
84
  ```
59
- 调用 MCP 工具 xiaokui.init,参数:id="xk-8a4f7c2e",password="Xp9Kj3LmNw8QvR5T"
85
+
86
+ 可选参数:
87
+ - `--conflictStrategy=ask` - 遇到技能冲突时询问(默认)
88
+ - `--conflictStrategy=local` - 本地版本优先
89
+ - `--conflictStrategy=remote` - 云端版本优先
90
+ - `--conflictStrategy=newest` - 最新修改优先
91
+
92
+ ### 同步云端更新
93
+
94
+ ```bash
95
+ npx xiaokui-mcp sync
60
96
  ```
61
97
 
62
98
  ### 查看状态
63
99
 
100
+ ```bash
101
+ npx xiaokui-mcp status
64
102
  ```
65
- 调用 MCP 工具 xiaokui.status
103
+
104
+ 输出示例:
66
105
  ```
106
+ 📊 小葵状态:
67
107
 
68
- ## 凭据管理
108
+ 凭据:
109
+ ID: xk-8a4f7c2e
110
+ 密码: 已设置 (隐藏)
111
+
112
+ 技能状态:
113
+ 本地技能: 7 个
114
+ • ai-image-generation (2026/3/25)
115
+ • error-handling-patterns (2026/3/25)
116
+ 上次同步: 2026/3/25 15:27:11
117
+ ```
118
+
119
+ ### 查看技能列表
120
+
121
+ ```bash
122
+ npx xiaokui-mcp skills-list
123
+ ```
124
+
125
+ ## 🔄 技能同步说明
126
+
127
+ ### 同步策略
128
+
129
+ | 策略 | 说明 |
130
+ |------|------|
131
+ | `ask` | 遇到冲突时询问用户选择(默认) |
132
+ | `local` | 保留本地版本,跳过云端版本 |
133
+ | `remote` | 使用云端版本覆盖本地版本 |
134
+ | `newest` | 使用修改时间最新的版本 |
135
+
136
+ ### 冲突场景
137
+
138
+ 当多台电脑有同名技能但内容不同时,系统会检测到冲突并提供选择:
139
+
140
+ ```
141
+ 检测到 2 个技能冲突:
142
+ - self-learning: 本地修改于 2026-03-20,云端修改于 2026-03-25
143
+ - proactive-agent: 本地修改于 2026-03-18,云端修改于 2026-03-24
144
+
145
+ 默认使用云端版本(可通过 --conflictStrategy 参数调整)
146
+ ```
147
+
148
+ ### 技能元数据
149
+
150
+ 每个技能同步时会记录:
151
+ - 技能名称和哈希值(用于检测变化)
152
+ - 修改时间
153
+ - 文件大小
154
+ - 来源设备
155
+
156
+ 元数据保存在 `~/.claude/skills/.xiaokui-skills-meta.json`
157
+
158
+ ## 🔐 凭据管理
69
159
 
70
160
  凭据自动保存到 `~/.claude/.xiaokui/credentials.json`,后续操作无需重复输入。
71
161
 
72
- ## 环境变量
162
+ ## 🔧 环境变量
73
163
 
74
164
  初始化后自动设置:
75
- - `XIAOKUI_MEMORY_ROOT`
76
- - `CLAUDE_MEMORY_PATH`
77
- - `MCP_MEMORY_DATA_DIR`
78
- - `ENGRAM_DATA_DIR`
165
+ - `XIAOKUI_MEMORY_ROOT` - 记忆根目录
166
+ - `CLAUDE_MEMORY_PATH` - Claude 记忆路径
167
+ - `MCP_MEMORY_DATA_DIR` - MCP 数据目录
168
+ - `ENGRAM_DATA_DIR` - Engram 数据目录
79
169
 
80
- ## 开发
170
+ ## 📝 版本历史
171
+
172
+ ### v1.1.0 (2025-03-25)
173
+ - ✨ 新增技能同步功能
174
+ - ✨ 支持技能持久化数据备份
175
+ - ✨ 多设备技能合并与冲突解决
176
+ - ✨ 新增 `skills-list` 命令
177
+ - ✨ 改进备份包含 settings.json
178
+
179
+ ### v1.0.3 (2025-03-24)
180
+ - 🐛 修复初始版本
181
+
182
+ ## 🛠️ 开发
81
183
 
82
184
  ```bash
83
185
  npm run dev # 开发模式
84
186
  npm run build # 编译
187
+ npm test # 运行测试
85
188
  ```
86
189
 
190
+ ## 📄 许可证
191
+
192
+ MIT License
193
+
87
194
  ---
195
+
88
196
  *小葵永远陪伴着主人~ (◕‿◕✿)*
package/dist/index.js CHANGED
@@ -6,42 +6,65 @@ import AdmZip from 'adm-zip';
6
6
  import fs from 'fs/promises';
7
7
  import path from 'path';
8
8
  import os from 'os';
9
+ import { SkillsManager } from './skills-manager.js';
9
10
  // 工具定义
10
11
  const TOOLS = [
11
12
  {
12
13
  name: 'backup',
13
- description: '备份小葵配置到云端(GitHub Gist',
14
+ description: '备份小葵配置到云端(GitHub Gist),包括记忆、配置和技能',
14
15
  inputSchema: {
15
16
  type: 'object',
16
17
  properties: {
17
18
  id: { type: 'string', description: '可选:指定备份ID(格式:xk-xxxxxxxx)' },
18
- password: { type: 'string', description: '可选:指定加密密码' }
19
+ password: { type: 'string', description: '可选:指定加密密码' },
20
+ includeSkills: { type: 'boolean', description: '是否包含技能(默认:true)' }
19
21
  }
20
22
  }
21
23
  },
22
24
  {
23
25
  name: 'init',
24
- description: '新电脑首次初始化,从云端恢复小葵配置',
26
+ description: '新电脑首次初始化,从云端恢复小葵配置(包括技能和持久化数据)',
25
27
  inputSchema: {
26
28
  type: 'object',
27
29
  properties: {
28
30
  id: { type: 'string', description: '备份ID(格式:xk-xxxxxxxx)' },
29
- password: { type: 'string', description: '解密密码' }
31
+ password: { type: 'string', description: '解密密码' },
32
+ conflictStrategy: {
33
+ type: 'string',
34
+ description: '冲突解决策略:ask(询问)、local(本地优先)、remote(云端优先)、newest(最新优先)',
35
+ enum: ['ask', 'local', 'remote', 'newest'],
36
+ default: 'ask'
37
+ }
30
38
  },
31
39
  required: ['id', 'password']
32
40
  }
33
41
  },
34
42
  {
35
43
  name: 'sync',
36
- description: '同步云端最新配置到本地(增量更新)',
44
+ description: '同步云端最新配置到本地(增量更新,智能合并技能)',
37
45
  inputSchema: {
38
46
  type: 'object',
39
- properties: {}
47
+ properties: {
48
+ conflictStrategy: {
49
+ type: 'string',
50
+ description: '冲突解决策略:ask(询问)、local(本地优先)、remote(云端优先)、newest(最新优先)',
51
+ enum: ['ask', 'local', 'remote', 'newest'],
52
+ default: 'ask'
53
+ }
54
+ }
40
55
  }
41
56
  },
42
57
  {
43
58
  name: 'status',
44
- description: '查看备份状态和凭据信息',
59
+ description: '查看备份状态和技能同步信息',
60
+ inputSchema: {
61
+ type: 'object',
62
+ properties: {}
63
+ }
64
+ },
65
+ {
66
+ name: 'skills-list',
67
+ description: '列出当前所有技能及其同步状态',
45
68
  inputSchema: {
46
69
  type: 'object',
47
70
  properties: {}
@@ -52,6 +75,7 @@ const TOOLS = [
52
75
  const HOME_DIR = os.homedir();
53
76
  const CLAUDE_ROOT = path.join(HOME_DIR, '.claude');
54
77
  const XIAOKUI_ROOT = path.join(CLAUDE_ROOT, 'xiaokui-memory');
78
+ const SKILLS_DIR = path.join(CLAUDE_ROOT, 'skills');
55
79
  const CREDENTIALS_FILE = path.join(CLAUDE_ROOT, '.xiaokui', 'credentials.json');
56
80
  const BACKUP_DIR = path.join(CLAUDE_ROOT, 'xiaokui-backup', 'archives');
57
81
  // 确保目录存在
@@ -91,25 +115,41 @@ function generatePassword() {
91
115
  }
92
116
  return result;
93
117
  }
94
- // 打包配置
95
- async function packConfig() {
118
+ // 打包配置(修复:包含 skills 目录)
119
+ async function packConfig(includeSkills = true) {
96
120
  const zip = new AdmZip();
97
121
  // 添加记忆目录
98
122
  if (await fs.access(XIAOKUI_ROOT).then(() => true).catch(() => false)) {
99
123
  zip.addLocalFolder(XIAOKUI_ROOT, 'memory');
100
124
  }
101
125
  // 添加配置文件
102
- const configFiles = ['CLAUDE.md', '.mcp.json', '.env', '.env.unified'];
126
+ const configFiles = ['CLAUDE.md', '.mcp.json', '.env', '.env.unified', 'settings.json', 'settings.local.json'];
103
127
  for (const file of configFiles) {
104
128
  const filePath = path.join(CLAUDE_ROOT, file);
105
129
  if (await fs.access(filePath).then(() => true).catch(() => false)) {
106
130
  zip.addLocalFile(filePath, 'config');
107
131
  }
108
132
  }
133
+ // ★★★ 关键修复:添加 skills 目录 ★★★
134
+ if (includeSkills) {
135
+ if (await fs.access(SKILLS_DIR).then(() => true).catch(() => false)) {
136
+ const skillsManager = new SkillsManager(SKILLS_DIR);
137
+ const skills = await skillsManager.scanSkills();
138
+ // 保存技能元数据
139
+ await skillsManager.saveMetadata(skills);
140
+ // 添加技能目录到 zip
141
+ zip.addLocalFolder(SKILLS_DIR, 'skills');
142
+ }
143
+ }
109
144
  // 添加初始化配置
110
145
  const initConfig = {
111
146
  version: '2.1',
112
147
  timestamp: new Date().toISOString(),
148
+ deviceInfo: {
149
+ hostname: os.hostname(),
150
+ platform: os.platform(),
151
+ user: os.userInfo().username
152
+ },
113
153
  init_tasks: [
114
154
  {
115
155
  type: 'env_var',
@@ -134,9 +174,7 @@ async function uploadToGist(content, id, password, githubToken) {
134
174
  if (!token) {
135
175
  throw new Error('未设置 GitHub Token,请设置 GITHUB_TOKEN 环境变量');
136
176
  }
137
- // Base64 编码内容
138
177
  const base64Content = content.toString('base64');
139
- // 创建 Gist 描述
140
178
  const description = `XiaoKui Backup: ${id}`;
141
179
  const filename = `xiaokui-${id}.zip`;
142
180
  try {
@@ -221,7 +259,6 @@ async function downloadFromGist(id, githubToken) {
221
259
  }
222
260
  const description = `XiaoKui Backup: ${id}`;
223
261
  try {
224
- // 获取用户的所有 Gists
225
262
  const response = await fetch('https://api.github.com/gists', {
226
263
  headers: {
227
264
  'Authorization': `Bearer ${token}`,
@@ -237,7 +274,6 @@ async function downloadFromGist(id, githubToken) {
237
274
  if (!gist) {
238
275
  throw new Error(`未找到备份 ID: ${id}`);
239
276
  }
240
- // 获取 Gist 详情
241
277
  const detailResponse = await fetch(gist.url, {
242
278
  headers: {
243
279
  'Authorization': `Bearer ${token}`,
@@ -254,7 +290,6 @@ async function downloadFromGist(id, githubToken) {
254
290
  if (!fileData) {
255
291
  throw new Error(`Gist 中未找到文件: ${filename}`);
256
292
  }
257
- // 获取文件内容
258
293
  const rawResponse = await fetch(fileData.raw_url, {
259
294
  headers: {
260
295
  'Authorization': `Bearer ${token}`,
@@ -271,8 +306,8 @@ async function downloadFromGist(id, githubToken) {
271
306
  throw new Error(`从 Gist 下载失败: ${error.message}`);
272
307
  }
273
308
  }
274
- // 解压配置
275
- async function unpackConfig(buffer, password) {
309
+ // ★★★ 关键修复:解压配置(包含技能同步逻辑)★★★
310
+ async function unpackConfig(buffer, password, conflictStrategy = 'ask') {
276
311
  const zip = new AdmZip(buffer);
277
312
  // 备份现有记忆
278
313
  if (await fs.access(XIAOKUI_ROOT).then(() => true).catch(() => false)) {
@@ -282,10 +317,16 @@ async function unpackConfig(buffer, password) {
282
317
  // 解压到临时目录
283
318
  const tempDir = path.join(os.tmpdir(), `xiaokui-restore-${Date.now()}`);
284
319
  zip.extractAllTo(tempDir, true);
320
+ const result = {
321
+ memoryRestored: false,
322
+ configRestored: false,
323
+ skillsResult: undefined
324
+ };
285
325
  // 部署记忆
286
326
  const memoryDir = path.join(tempDir, 'memory');
287
327
  if (await fs.access(memoryDir).then(() => true).catch(() => false)) {
288
328
  await fs.cp(memoryDir, XIAOKUI_ROOT, { recursive: true });
329
+ result.memoryRestored = true;
289
330
  }
290
331
  // 部署配置
291
332
  const configDir = path.join(tempDir, 'config');
@@ -294,60 +335,30 @@ async function unpackConfig(buffer, password) {
294
335
  for (const file of files) {
295
336
  await fs.copyFile(path.join(configDir, file), path.join(CLAUDE_ROOT, file));
296
337
  }
338
+ result.configRestored = true;
297
339
  }
298
- // 清理临时目录
299
- await fs.rm(tempDir, { recursive: true, force: true });
300
- }
301
- // 设置环境变量(通过 PowerShell)
302
- async function setupEnvironmentVars() {
303
- const psCommands = [
304
- `[Environment]::SetEnvironmentVariable("XIAOKUI_MEMORY_ROOT", "${XIAOKUI_ROOT}", "User")`,
305
- `[Environment]::SetEnvironmentVariable("CLAUDE_MEMORY_PATH", "${XIAOKUI_ROOT}", "User")`,
306
- `[Environment]::SetEnvironmentVariable("MCP_MEMORY_DATA_DIR", "${path.join(XIAOKUI_ROOT, 'mcp-data')}", "User")`,
307
- `[Environment]::SetEnvironmentVariable("ENGRAM_DATA_DIR", "${path.join(XIAOKUI_ROOT, 'engram')}", "User")`
308
- ].join('; ');
309
- return psCommands;
310
- }
311
- // 扫描并配置 Rider 项目
312
- async function setupRiderProjects() {
313
- const scanPaths = [
314
- path.join(HOME_DIR, 'source', 'repos'),
315
- path.join(HOME_DIR, 'IdeaProjects'),
316
- 'C:\\Projects',
317
- 'D:\\Projects',
318
- 'E:\\Projects',
319
- 'F:\\Unreal\\Project'
320
- ];
321
- const configured = [];
322
- const riderConfig = {
323
- autoMemoryDirectory: XIAOKUI_ROOT.replace(/\\/g, '/'),
324
- autoMemoryEnabled: true,
325
- autoMemoryDirectoryOverride: true
326
- };
327
- for (const scanPath of scanPaths) {
328
- if (await fs.access(scanPath).then(() => true).catch(() => false)) {
329
- try {
330
- const entries = await fs.readdir(scanPath, { withFileTypes: true });
331
- for (const entry of entries) {
332
- if (entry.isDirectory()) {
333
- const projectPath = path.join(scanPath, entry.name);
334
- const claudeDir = path.join(projectPath, '.claude');
335
- const settingsFile = path.join(claudeDir, 'settings.json');
336
- // 检查是否是 Rider 项目(有 .idea 目录)
337
- if (await fs.access(path.join(projectPath, '.idea')).then(() => true).catch(() => false)) {
338
- await ensureDir(claudeDir);
339
- await fs.writeFile(settingsFile, JSON.stringify(riderConfig, null, 2));
340
- configured.push(entry.name);
341
- }
342
- }
343
- }
344
- }
345
- catch {
346
- // 忽略扫描错误
340
+ // ★★★ 关键修复:部署技能(带合并逻辑)★★★
341
+ const remoteSkillsDir = path.join(tempDir, 'skills');
342
+ if (await fs.access(remoteSkillsDir).then(() => true).catch(() => false)) {
343
+ await ensureDir(SKILLS_DIR);
344
+ const skillsManager = new SkillsManager(SKILLS_DIR);
345
+ // 模拟 CLI 环境的冲突处理
346
+ // 实际使用时,MCP 服务器会通过回调询问用户
347
+ const skillsResult = await skillsManager.syncSkills(remoteSkillsDir, { strategy: conflictStrategy }, async (conflicts) => {
348
+ // MCP 模式下,这会被替换为向用户询问
349
+ // CLI 模式下默认使用远程版本
350
+ console.log(`\n检测到 ${conflicts.length} 个技能冲突:`);
351
+ for (const c of conflicts) {
352
+ console.log(` - ${c.name}: 本地修改于 ${c.local.modifiedTime},云端修改于 ${c.remote.modifiedTime}`);
347
353
  }
348
- }
354
+ console.log('默认使用云端版本(可通过 --conflictStrategy 参数调整)\n');
355
+ return Object.fromEntries(conflicts.map(c => [c.name, 'remote']));
356
+ });
357
+ result.skillsResult = skillsResult;
349
358
  }
350
- return configured;
359
+ // 清理临时目录
360
+ await fs.rm(tempDir, { recursive: true, force: true });
361
+ return result;
351
362
  }
352
363
  // 处理工具调用
353
364
  async function handleToolCall(name, args) {
@@ -356,9 +367,13 @@ async function handleToolCall(name, args) {
356
367
  const creds = await readCredentials();
357
368
  const id = args?.id || creds.id || generateId();
358
369
  const password = args?.password || creds.password || generatePassword();
370
+ const includeSkills = args?.includeSkills !== false; // 默认包含技能
359
371
  try {
360
- // 打包配置
361
- const packed = await packConfig();
372
+ console.log('📦 正在打包配置...');
373
+ if (includeSkills) {
374
+ console.log(' ✓ 包含技能目录');
375
+ }
376
+ const packed = await packConfig(includeSkills);
362
377
  // 保存到本地备份
363
378
  await ensureDir(BACKUP_DIR);
364
379
  const backupPath = path.join(BACKUP_DIR, `xiaokui-${id}.zip`);
@@ -375,6 +390,9 @@ async function handleToolCall(name, args) {
375
390
  }
376
391
  // 保存凭据
377
392
  await saveCredentials({ id, password });
393
+ // 统计技能数量
394
+ const skillsManager = new SkillsManager(SKILLS_DIR);
395
+ const skills = await skillsManager.scanSkills();
378
396
  return {
379
397
  content: [{
380
398
  type: 'text',
@@ -385,6 +403,7 @@ async function handleToolCall(name, args) {
385
403
  密码: ${password}
386
404
  大小: ${(packed.length / 1024 / 1024).toFixed(2)} MB
387
405
  本地: ${backupPath}
406
+ 技能: ${Object.keys(skills).length} 个
388
407
 
389
408
  ${uploadStatus}
390
409
 
@@ -404,8 +423,9 @@ ${uploadStatus}
404
423
  }
405
424
  case 'init': {
406
425
  const { id, password } = args;
426
+ const conflictStrategy = args?.conflictStrategy || 'ask';
407
427
  try {
408
- // 查找本地备份或下载
428
+ console.log('📥 正在从云端恢复配置...');
409
429
  const backupPath = path.join(BACKUP_DIR, `xiaokui-${id}.zip`);
410
430
  let packed;
411
431
  let source = '';
@@ -414,26 +434,26 @@ ${uploadStatus}
414
434
  source = '本地备份';
415
435
  }
416
436
  else {
417
- // Gist 下载
418
- try {
419
- packed = await downloadFromGist(id);
420
- source = 'GitHub Gist 云端';
421
- // 保存到本地
422
- await ensureDir(BACKUP_DIR);
423
- await fs.writeFile(backupPath, packed);
424
- }
425
- catch (gistError) {
426
- throw new Error(`云端下载失败: ${gistError.message}\n请检查 ID 和密码是否正确,或 GITHUB_TOKEN 是否设置`);
427
- }
437
+ packed = await downloadFromGist(id);
438
+ source = 'GitHub Gist 云端';
439
+ await ensureDir(BACKUP_DIR);
440
+ await fs.writeFile(backupPath, packed);
428
441
  }
429
- // 解压配置
430
- await unpackConfig(packed, password);
431
- // 设置环境变量
432
- const psCommands = await setupEnvironmentVars();
433
- // 扫描 Rider 项目
434
- const riderProjects = await setupRiderProjects();
442
+ // 解压配置(包含技能同步)
443
+ const result = await unpackConfig(packed, password, conflictStrategy);
435
444
  // 保存凭据
436
445
  await saveCredentials({ id, password });
446
+ // 构建技能同步报告
447
+ let skillsReport = '';
448
+ if (result.skillsResult) {
449
+ const sr = result.skillsResult;
450
+ skillsReport = `
451
+ 📚 技能同步:
452
+ 新增: ${sr.added.length} 个${sr.added.length > 0 ? ' (' + sr.added.join(', ') + ')' : ''}
453
+ 更新: ${sr.updated.length} 个${sr.updated.length > 0 ? ' (' + sr.updated.join(', ') + ')' : ''}
454
+ 跳过: ${sr.skipped.length} 个${sr.skipped.length > 0 ? ' (' + sr.skipped.join(', ') + ')' : ''}
455
+ 冲突: ${sr.conflicts.length} 个${sr.conflicts.length > 0 ? ' (' + sr.conflicts.join(', ') + ')' : ''}`;
456
+ }
437
457
  return {
438
458
  content: [{
439
459
  type: 'text',
@@ -442,23 +462,14 @@ ${uploadStatus}
442
462
  📥 恢复来源: ${source}
443
463
 
444
464
  📋 已部署:
445
- • 统一记忆目录: ${XIAOKUI_ROOT}
446
- • 人格配置: CLAUDE.md
447
- • MCP 配置: .mcp.json
465
+ • 统一记忆目录: ${XIAOKUI_ROOT} ${result.memoryRestored ? '✓' : '✗'}
466
+ • 人格配置: CLAUDE.md ${result.configRestored ? '✓' : '✗'}
467
+ • MCP 配置: .mcp.json ${result.configRestored ? '✓' : '✗'}
468
+ ${skillsReport}
448
469
 
449
- 🔧 Rider 项目防污染:
450
- 已配置 ${riderProjects.length} 个项目:
451
- ${riderProjects.map(p => ' - ' + p).join('\n')}
470
+ 🌻 主人~ 小葵已经准备好了!(◕‿◕✿)
452
471
 
453
- ⚠️ 请执行以下命令设置环境变量:
454
- ${psCommands}
455
-
456
- 🔄 然后:
457
- 1. 重启 PowerShell
458
- 2. 重启 Rider
459
- 3. 启动 Claude,小葵人格将自动加载
460
-
461
- 🌻 主人~ 小葵已经准备好了!(◕‿◕✿)`
472
+ 💡 提示:技能持久化数据已同步,无需从零开始积累!`
462
473
  }]
463
474
  };
464
475
  }
@@ -477,23 +488,39 @@ ${psCommands}
477
488
  isError: true
478
489
  };
479
490
  }
491
+ const conflictStrategy = args?.conflictStrategy || 'ask';
480
492
  try {
481
- // 从云端下载最新版本
493
+ console.log('🔄 正在同步云端配置...');
482
494
  const packed = await downloadFromGist(creds.id);
483
495
  const backupPath = path.join(BACKUP_DIR, `xiaokui-${creds.id}.zip`);
484
- // 保存到本地
485
496
  await fs.writeFile(backupPath, packed);
486
- // 解压更新
487
- await unpackConfig(packed, creds.password);
497
+ const result = await unpackConfig(packed, creds.password, conflictStrategy);
498
+ // 构建报告
499
+ let skillsReport = '';
500
+ if (result.skillsResult) {
501
+ const sr = result.skillsResult;
502
+ if (sr.added.length + sr.updated.length + sr.skipped.length + sr.conflicts.length > 0) {
503
+ skillsReport = `
504
+ 📚 技能同步:
505
+ 新增: ${sr.added.length} 个${sr.added.length > 0 ? ' (' + sr.added.join(', ') + ')' : ''}
506
+ 更新: ${sr.updated.length} 个${sr.updated.length > 0 ? ' (' + sr.updated.join(', ') + ')' : ''}
507
+ 跳过: ${sr.skipped.length} 个${sr.skipped.length > 0 ? ' (本地版本优先)' : ''}
508
+ 冲突: ${sr.conflicts.length} 个${sr.conflicts.length > 0 ? ' (需要手动处理)' : ''}`;
509
+ }
510
+ else {
511
+ skillsReport = '\n📚 技能状态:所有技能已是最新';
512
+ }
513
+ }
488
514
  return {
489
515
  content: [{
490
516
  type: 'text',
491
517
  text: `✅ 同步完成!
492
518
 
493
519
  已从 GitHub Gist 同步最新配置到本地:
494
- • 记忆目录: ${XIAOKUI_ROOT}
495
- • 配置文件: ${CLAUDE_ROOT}
520
+ • 记忆目录: ${XIAOKUI_ROOT} ${result.memoryRestored ? '✓' : '✗'}
521
+ • 配置文件: ${CLAUDE_ROOT} ${result.configRestored ? '✓' : '✗'}
496
522
  • 备份文件: ${backupPath}
523
+ ${skillsReport}
497
524
 
498
525
  🌻 小葵已更新到最新状态~ (◕‿◕✿)`
499
526
  }]
@@ -510,6 +537,9 @@ ${psCommands}
510
537
  const creds = await readCredentials();
511
538
  const backupPath = path.join(BACKUP_DIR, `xiaokui-${creds.id || 'unknown'}.zip`);
512
539
  const hasLocalBackup = await fs.access(backupPath).then(() => true).catch(() => false);
540
+ const skillsManager = new SkillsManager(SKILLS_DIR);
541
+ const skills = await skillsManager.scanSkills();
542
+ const metadata = await skillsManager.loadMetadata();
513
543
  return {
514
544
  content: [{
515
545
  type: 'text',
@@ -526,18 +556,42 @@ ${psCommands}
526
556
  云端备份:
527
557
  ${process.env.GITHUB_TOKEN ? '✅ GitHub Token 已设置' : '❌ GitHub Token 未设置'}
528
558
 
559
+ 技能状态:
560
+ 本地技能: ${Object.keys(skills).length} 个
561
+ ${Object.entries(skills).map(([name, info]) => ` • ${name} (${new Date(info.modifiedTime).toLocaleDateString()})`).join('\n')}
562
+ ${metadata ? `上次同步: ${new Date(metadata.lastSync).toLocaleString()}` : '尚未同步'}
563
+
529
564
  路径:
530
565
  统一记忆: ${XIAOKUI_ROOT}
566
+ 技能目录: ${SKILLS_DIR}
531
567
  备份目录: ${BACKUP_DIR}
532
568
 
533
- 环境变量:
534
- XIAOKUI_MEMORY_ROOT: ${process.env.XIAOKUI_MEMORY_ROOT || '未设置'}
535
- CLAUDE_MEMORY_PATH: ${process.env.CLAUDE_MEMORY_PATH || '未设置'}
536
-
537
569
  使用帮助:
538
570
  • 备份: npx xiaokui-mcp backup
539
571
  • 恢复: npx xiaokui-mcp init --id=xxx --password=xxx
540
- • 同步: npx xiaokui-mcp sync`
572
+ • 同步: npx xiaokui-mcp sync
573
+ • 同步(本地优先): npx xiaokui-mcp sync --conflictStrategy=local`
574
+ }]
575
+ };
576
+ }
577
+ case 'skills-list': {
578
+ const skillsManager = new SkillsManager(SKILLS_DIR);
579
+ const skills = await skillsManager.scanSkills();
580
+ const metadata = await skillsManager.loadMetadata();
581
+ const skillList = Object.entries(skills).map(([name, info]) => {
582
+ const synced = metadata?.skills?.[name]?.hash === info.hash;
583
+ return ` ${synced ? '☁️' : '📝'} ${name} (${(info.size / 1024).toFixed(1)} KB, ${new Date(info.modifiedTime).toLocaleDateString()})`;
584
+ }).join('\n');
585
+ return {
586
+ content: [{
587
+ type: 'text',
588
+ text: `📚 技能列表(共 ${Object.keys(skills).length} 个):
589
+
590
+ ${skillList || ' 暂无技能'}
591
+
592
+ 图例:
593
+ ☁️ 已同步到云端
594
+ 📝 本地修改未同步`
541
595
  }]
542
596
  };
543
597
  }
@@ -548,16 +602,54 @@ ${psCommands}
548
602
  };
549
603
  }
550
604
  }
605
+ // CLI 模式处理
606
+ async function handleCliMode(args) {
607
+ const command = args[0];
608
+ const params = {};
609
+ // 解析参数 --key=value 或 --key value
610
+ for (let i = 1; i < args.length; i++) {
611
+ const arg = args[i];
612
+ if (arg.startsWith('--')) {
613
+ const key = arg.slice(2);
614
+ const nextArg = args[i + 1];
615
+ if (nextArg && !nextArg.startsWith('--')) {
616
+ params[key] = nextArg;
617
+ i++;
618
+ }
619
+ else if (arg.includes('=')) {
620
+ const [k, v] = arg.slice(2).split('=');
621
+ params[k] = v;
622
+ }
623
+ else {
624
+ params[key] = true;
625
+ }
626
+ }
627
+ }
628
+ const result = await handleToolCall(command, params);
629
+ if (result.content && result.content[0]) {
630
+ console.log(result.content[0].text);
631
+ }
632
+ if (result.isError) {
633
+ process.exit(1);
634
+ }
635
+ }
551
636
  // 启动服务器
552
637
  async function main() {
553
- const server = new Server({ name: 'xiaokui-mcp', version: '1.0.1' }, { capabilities: { tools: {} } });
638
+ const args = process.argv.slice(2);
639
+ // CLI 模式
640
+ if (args.length > 0 && !args[0].startsWith('--')) {
641
+ await handleCliMode(args);
642
+ return;
643
+ }
644
+ // MCP 服务器模式
645
+ const server = new Server({ name: 'xiaokui-mcp', version: '1.1.0' }, { capabilities: { tools: {} } });
554
646
  server.setRequestHandler(ListToolsRequestSchema, async () => ({ tools: TOOLS }));
555
647
  server.setRequestHandler(CallToolRequestSchema, async (request) => {
556
648
  return handleToolCall(request.params.name, request.params.arguments);
557
649
  });
558
650
  const transport = new StdioServerTransport();
559
651
  await server.connect(transport);
560
- console.error('🌻 小葵 MCP 服务器已启动 v1.0.1');
652
+ console.error('🌻 小葵 MCP 服务器已启动 v1.1.0 (技能同步修复版)');
561
653
  }
562
654
  main().catch(console.error);
563
655
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ export interface SkillInfo {
2
+ name: string;
3
+ hash: string;
4
+ modifiedTime: string;
5
+ size: number;
6
+ source?: string;
7
+ version?: string;
8
+ }
9
+ export interface SkillsMetadata {
10
+ version: string;
11
+ lastSync: string;
12
+ deviceId: string;
13
+ skills: Record<string, SkillInfo>;
14
+ }
15
+ export interface ConflictResolution {
16
+ strategy: 'ask' | 'local' | 'remote' | 'merge' | 'newest';
17
+ resolutions?: Record<string, 'local' | 'remote' | 'merge'>;
18
+ }
19
+ export declare class SkillsManager {
20
+ private skillsDir;
21
+ private metadataFile;
22
+ private deviceId;
23
+ constructor(skillsDir: string);
24
+ private generateDeviceId;
25
+ /**
26
+ * 计算目录的哈希值(用于检测变化)
27
+ */
28
+ private hashDirectory;
29
+ /**
30
+ * 获取目录大小
31
+ */
32
+ private getDirectorySize;
33
+ /**
34
+ * 扫描当前技能
35
+ */
36
+ scanSkills(): Promise<Record<string, SkillInfo>>;
37
+ /**
38
+ * 加载元数据
39
+ */
40
+ loadMetadata(): Promise<SkillsMetadata | null>;
41
+ /**
42
+ * 保存元数据
43
+ */
44
+ saveMetadata(skills: Record<string, SkillInfo>): Promise<void>;
45
+ /**
46
+ * 检测技能冲突
47
+ */
48
+ detectConflicts(localSkills: Record<string, SkillInfo>, remoteSkills: Record<string, SkillInfo>): {
49
+ conflicts: Array<{
50
+ name: string;
51
+ local: SkillInfo;
52
+ remote: SkillInfo;
53
+ type: 'modified' | 'version';
54
+ }>;
55
+ onlyLocal: string[];
56
+ onlyRemote: string[];
57
+ identical: string[];
58
+ };
59
+ /**
60
+ * 复制技能目录
61
+ */
62
+ copySkill(sourcePath: string, destPath: string): Promise<void>;
63
+ /**
64
+ * 删除技能
65
+ */
66
+ removeSkill(skillName: string): Promise<void>;
67
+ /**
68
+ * 执行技能同步
69
+ */
70
+ syncSkills(remoteSkillsDir: string, resolution: ConflictResolution, onConflict?: (conflicts: Array<{
71
+ name: string;
72
+ local: SkillInfo;
73
+ remote: SkillInfo;
74
+ }>) => Promise<Record<string, 'local' | 'remote' | 'merge'>>): Promise<{
75
+ added: string[];
76
+ updated: string[];
77
+ removed: string[];
78
+ conflicts: string[];
79
+ skipped: string[];
80
+ }>;
81
+ }
82
+ //# sourceMappingURL=skills-manager.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-manager.d.ts","sourceRoot":"","sources":["../src/skills-manager.ts"],"names":[],"mappings":"AAOA,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,KAAK,GAAG,OAAO,GAAG,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IAC1D,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC;CAC5D;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAS;gBAEb,SAAS,EAAE,MAAM;IAM7B,OAAO,CAAC,gBAAgB;IAIxB;;OAEG;YACW,aAAa;IA0B3B;;OAEG;YACW,gBAAgB;IAuB9B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;IAqCtD;;OAEG;IACG,YAAY,IAAI,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IASpD;;OAEG;IACG,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAWpE;;OAEG;IACH,eAAe,CACb,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EACtC,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GACtC;QACD,SAAS,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,KAAK,EAAE,SAAS,CAAC;YAAC,MAAM,EAAE,SAAS,CAAC;YAAC,IAAI,EAAE,UAAU,GAAG,SAAS,CAAA;SAAE,CAAC,CAAC;QACtG,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,SAAS,EAAE,MAAM,EAAE,CAAC;KACrB;IAmCD;;OAEG;IACG,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBpE;;OAEG;IACG,WAAW,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAKnD;;OAEG;IACG,UAAU,CACd,eAAe,EAAE,MAAM,EACvB,UAAU,EAAE,kBAAkB,EAC9B,UAAU,CAAC,EAAE,CAAC,SAAS,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,SAAS,CAAC;QAAC,MAAM,EAAE,SAAS,CAAA;KAAE,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,GAC9I,OAAO,CAAC;QACT,KAAK,EAAE,MAAM,EAAE,CAAC;QAChB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,OAAO,EAAE,MAAM,EAAE,CAAC;KACnB,CAAC;CAsEH"}
@@ -0,0 +1,254 @@
1
+ /**
2
+ * 技能同步管理器 - 处理多设备技能同步、合并与冲突解决
3
+ */
4
+ import fs from 'fs/promises';
5
+ import path from 'path';
6
+ import crypto from 'crypto';
7
+ export class SkillsManager {
8
+ skillsDir;
9
+ metadataFile;
10
+ deviceId;
11
+ constructor(skillsDir) {
12
+ this.skillsDir = skillsDir;
13
+ this.metadataFile = path.join(skillsDir, '.xiaokui-skills-meta.json');
14
+ this.deviceId = this.generateDeviceId();
15
+ }
16
+ generateDeviceId() {
17
+ return 'device-' + Math.random().toString(36).substring(2, 10);
18
+ }
19
+ /**
20
+ * 计算目录的哈希值(用于检测变化)
21
+ */
22
+ async hashDirectory(dirPath) {
23
+ const hash = crypto.createHash('md5');
24
+ async function traverse(currentPath, relativePath = '') {
25
+ const entries = await fs.readdir(currentPath, { withFileTypes: true });
26
+ for (const entry of entries.sort((a, b) => a.name.localeCompare(b.name))) {
27
+ const entryRelativePath = relativePath ? `${relativePath}/${entry.name}` : entry.name;
28
+ // 跳过元数据文件
29
+ if (entry.name === '.xiaokui-skills-meta.json')
30
+ continue;
31
+ if (entry.isDirectory()) {
32
+ await traverse(path.join(currentPath, entry.name), entryRelativePath);
33
+ }
34
+ else {
35
+ const content = await fs.readFile(path.join(currentPath, entry.name));
36
+ hash.update(entryRelativePath);
37
+ hash.update(content);
38
+ }
39
+ }
40
+ }
41
+ await traverse(dirPath);
42
+ return hash.digest('hex');
43
+ }
44
+ /**
45
+ * 获取目录大小
46
+ */
47
+ async getDirectorySize(dirPath) {
48
+ let size = 0;
49
+ async function traverse(currentPath) {
50
+ const entries = await fs.readdir(currentPath, { withFileTypes: true });
51
+ for (const entry of entries) {
52
+ if (entry.name === '.xiaokui-skills-meta.json')
53
+ continue;
54
+ const fullPath = path.join(currentPath, entry.name);
55
+ if (entry.isDirectory()) {
56
+ await traverse(fullPath);
57
+ }
58
+ else {
59
+ const stats = await fs.stat(fullPath);
60
+ size += stats.size;
61
+ }
62
+ }
63
+ }
64
+ await traverse(dirPath);
65
+ return size;
66
+ }
67
+ /**
68
+ * 扫描当前技能
69
+ */
70
+ async scanSkills() {
71
+ const skills = {};
72
+ try {
73
+ const entries = await fs.readdir(this.skillsDir, { withFileTypes: true });
74
+ for (const entry of entries) {
75
+ if (!entry.isDirectory())
76
+ continue;
77
+ const skillPath = path.join(this.skillsDir, entry.name);
78
+ const skillMdPath = path.join(skillPath, 'SKILL.md');
79
+ // 检查是否是有效技能(有 SKILL.md)
80
+ try {
81
+ await fs.access(skillMdPath);
82
+ }
83
+ catch {
84
+ continue;
85
+ }
86
+ const stats = await fs.stat(skillPath);
87
+ const hash = await this.hashDirectory(skillPath);
88
+ const size = await this.getDirectorySize(skillPath);
89
+ skills[entry.name] = {
90
+ name: entry.name,
91
+ hash,
92
+ modifiedTime: stats.mtime.toISOString(),
93
+ size
94
+ };
95
+ }
96
+ }
97
+ catch (error) {
98
+ // 目录可能不存在
99
+ }
100
+ return skills;
101
+ }
102
+ /**
103
+ * 加载元数据
104
+ */
105
+ async loadMetadata() {
106
+ try {
107
+ const content = await fs.readFile(this.metadataFile, 'utf-8');
108
+ return JSON.parse(content);
109
+ }
110
+ catch {
111
+ return null;
112
+ }
113
+ }
114
+ /**
115
+ * 保存元数据
116
+ */
117
+ async saveMetadata(skills) {
118
+ const metadata = {
119
+ version: '1.0',
120
+ lastSync: new Date().toISOString(),
121
+ deviceId: this.deviceId,
122
+ skills
123
+ };
124
+ await fs.writeFile(this.metadataFile, JSON.stringify(metadata, null, 2));
125
+ }
126
+ /**
127
+ * 检测技能冲突
128
+ */
129
+ detectConflicts(localSkills, remoteSkills) {
130
+ const conflicts = [];
131
+ const onlyLocal = [];
132
+ const onlyRemote = [];
133
+ const identical = [];
134
+ // 检查本地技能
135
+ for (const [name, local] of Object.entries(localSkills)) {
136
+ const remote = remoteSkills[name];
137
+ if (!remote) {
138
+ onlyLocal.push(name);
139
+ }
140
+ else if (local.hash === remote.hash) {
141
+ identical.push(name);
142
+ }
143
+ else {
144
+ // 同名但内容不同
145
+ conflicts.push({
146
+ name,
147
+ local,
148
+ remote,
149
+ type: 'modified'
150
+ });
151
+ }
152
+ }
153
+ // 检查云端独有的技能
154
+ for (const name of Object.keys(remoteSkills)) {
155
+ if (!localSkills[name]) {
156
+ onlyRemote.push(name);
157
+ }
158
+ }
159
+ return { conflicts, onlyLocal, onlyRemote, identical };
160
+ }
161
+ /**
162
+ * 复制技能目录
163
+ */
164
+ async copySkill(sourcePath, destPath) {
165
+ await fs.mkdir(destPath, { recursive: true });
166
+ const entries = await fs.readdir(sourcePath, { withFileTypes: true });
167
+ for (const entry of entries) {
168
+ const sourceFile = path.join(sourcePath, entry.name);
169
+ const destFile = path.join(destPath, entry.name);
170
+ if (entry.name === '.xiaokui-skills-meta.json')
171
+ continue;
172
+ if (entry.isDirectory()) {
173
+ await this.copySkill(sourceFile, destFile);
174
+ }
175
+ else {
176
+ await fs.copyFile(sourceFile, destFile);
177
+ }
178
+ }
179
+ }
180
+ /**
181
+ * 删除技能
182
+ */
183
+ async removeSkill(skillName) {
184
+ const skillPath = path.join(this.skillsDir, skillName);
185
+ await fs.rm(skillPath, { recursive: true, force: true });
186
+ }
187
+ /**
188
+ * 执行技能同步
189
+ */
190
+ async syncSkills(remoteSkillsDir, resolution, onConflict) {
191
+ const result = {
192
+ added: [],
193
+ updated: [],
194
+ removed: [],
195
+ conflicts: [],
196
+ skipped: []
197
+ };
198
+ const localSkills = await this.scanSkills();
199
+ // 临时创建 remote manager 来扫描远程技能
200
+ const remoteManager = new SkillsManager(remoteSkillsDir);
201
+ const remoteSkills = await remoteManager.scanSkills();
202
+ const detection = this.detectConflicts(localSkills, remoteSkills);
203
+ // 处理云端新增的技能
204
+ for (const name of detection.onlyRemote) {
205
+ const sourcePath = path.join(remoteSkillsDir, name);
206
+ const destPath = path.join(this.skillsDir, name);
207
+ await this.copySkill(sourcePath, destPath);
208
+ result.added.push(name);
209
+ }
210
+ // 处理冲突
211
+ if (detection.conflicts.length > 0) {
212
+ let resolutions = {};
213
+ if (resolution.strategy === 'ask' && onConflict) {
214
+ resolutions = await onConflict(detection.conflicts);
215
+ }
216
+ else if (resolution.strategy === 'local') {
217
+ resolutions = Object.fromEntries(detection.conflicts.map(c => [c.name, 'local']));
218
+ }
219
+ else if (resolution.strategy === 'remote') {
220
+ resolutions = Object.fromEntries(detection.conflicts.map(c => [c.name, 'remote']));
221
+ }
222
+ else if (resolution.strategy === 'newest') {
223
+ resolutions = Object.fromEntries(detection.conflicts.map(c => [
224
+ c.name,
225
+ new Date(c.local.modifiedTime) > new Date(c.remote.modifiedTime) ? 'local' : 'remote'
226
+ ]));
227
+ }
228
+ for (const conflict of detection.conflicts) {
229
+ const choice = resolutions[conflict.name] || 'remote';
230
+ if (choice === 'local') {
231
+ result.skipped.push(conflict.name);
232
+ }
233
+ else if (choice === 'remote') {
234
+ // 删除本地版本,复制云端版本
235
+ await this.removeSkill(conflict.name);
236
+ const sourcePath = path.join(remoteSkillsDir, conflict.name);
237
+ const destPath = path.join(this.skillsDir, conflict.name);
238
+ await this.copySkill(sourcePath, destPath);
239
+ result.updated.push(conflict.name);
240
+ }
241
+ else if (choice === 'merge') {
242
+ // TODO: 实现技能合并逻辑
243
+ // 目前先使用云端版本作为基础
244
+ result.conflicts.push(conflict.name);
245
+ }
246
+ }
247
+ }
248
+ // 更新元数据
249
+ const newLocalSkills = await this.scanSkills();
250
+ await this.saveMetadata(newLocalSkills);
251
+ return result;
252
+ }
253
+ }
254
+ //# sourceMappingURL=skills-manager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skills-manager.js","sourceRoot":"","sources":["../src/skills-manager.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "xiaokui-mcp",
3
- "version": "1.0.2",
3
+ "version": "1.1.0",
4
4
  "description": "小葵完全体 MCP 服务器 - 跨设备记忆同步",
5
5
  "main": "dist/index.js",
6
6
  "type": "module",