chaimi-keep-mcp 3.5.0-beta.4 → 3.5.0-beta.5
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/CHANGELOG.md +14 -0
- package/README.md +7 -0
- package/SKILL.md +11 -0
- package/package.json +1 -1
- package/references/authentication.md +15 -11
- package/references/troubleshooting.md +14 -3
- package/server.js +25 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## v3.5.0-beta.5 (2026-05-02)
|
|
4
|
+
|
|
5
|
+
- **修复** 重新授权流程 - 修复 Token 过期/取消授权后无法弹出新验证码的问题
|
|
6
|
+
- Bug 1: `getToken()` 函数中添加 `await startAuthFlow()`
|
|
7
|
+
- Bug 2: `callMcpHubWithLogging()` 中检测业务 401 并触发重新授权
|
|
8
|
+
- 新增: `clearCachedToken()` 工具函数
|
|
9
|
+
- **优化** 文档 - 在 SKILL.md, authentication.md, troubleshooting.md 中添加授权流程关键说明
|
|
10
|
+
|
|
11
|
+
## v3.5.0-beta.4 (2026-05-02)
|
|
12
|
+
- **优化** 回复模板 - 调整确认提示对齐方式
|
|
13
|
+
- SKILL.md: `🔴🔴` → `🔴`,添加空格对齐
|
|
14
|
+
- response-templates.md: `🔴🔴` → `🔴`,添加空格对齐
|
|
15
|
+
- "请"字与下方的"¥"符号左对齐,更美观
|
|
16
|
+
|
|
3
17
|
## v3.4.0 (2026-05-01) 🎉 正式版
|
|
4
18
|
|
|
5
19
|
**首个正式生产版本 - 多端记账分类统一**
|
package/README.md
CHANGED
|
@@ -89,6 +89,13 @@ export MCP_PROMPT_URL="你的Prompt服务地址"
|
|
|
89
89
|
|
|
90
90
|
## Changelog
|
|
91
91
|
|
|
92
|
+
### v3.5.0-beta.5 (2026-05-02)
|
|
93
|
+
- **修复** 重新授权流程 - 修复 Token 过期/取消授权后无法弹出新验证码的问题
|
|
94
|
+
- **优化** 文档 - 在 SKILL.md, authentication.md, troubleshooting.md 中添加授权流程关键说明
|
|
95
|
+
|
|
96
|
+
### v3.5.0-beta.4 (2026-05-02)
|
|
97
|
+
- **优化** 回复模板 - 调整确认提示对齐方式
|
|
98
|
+
|
|
92
99
|
### v3.4.0 (2026-05-01) 🎉 正式版
|
|
93
100
|
- **变更** 多端记账分类统一 - 支持商品分类和记账分类分离
|
|
94
101
|
- **修复** mcp-server-local case 重复问题
|
package/SKILL.md
CHANGED
|
@@ -296,6 +296,17 @@ references/
|
|
|
296
296
|
|
|
297
297
|
## 九、错误速查
|
|
298
298
|
|
|
299
|
+
### ⚠️ 授权流程关键说明(必读!)
|
|
300
|
+
|
|
301
|
+
**重要提示:验证码只能在 Agent/MCP 端(终端)生成!小程序里无法生成验证码,只能输入验证码!**
|
|
302
|
+
|
|
303
|
+
| 位置 | 作用 |
|
|
304
|
+
|:-----|:------|
|
|
305
|
+
| Agent/MCP 端(终端) | 生成验证码 |
|
|
306
|
+
| 小程序 | 只负责输入验证码 |
|
|
307
|
+
|
|
308
|
+
---
|
|
309
|
+
|
|
299
310
|
### Top 3 常见错误
|
|
300
311
|
|
|
301
312
|
| 错误 | 现象 | 解决方案 | 参考文档 |
|
package/package.json
CHANGED
|
@@ -25,22 +25,26 @@ updated: "2026-04-30"
|
|
|
25
25
|
```
|
|
26
26
|
用户(小程序端) Agent(MCP端)
|
|
27
27
|
│ │
|
|
28
|
-
│ 1.
|
|
28
|
+
│ 1. 请求记账 │
|
|
29
29
|
│────────────────────────>│
|
|
30
30
|
│ │
|
|
31
|
-
│ 2.
|
|
31
|
+
│ 2. 检测未授权 │
|
|
32
|
+
│ │
|
|
33
|
+
│ 3. Agent 端(终端)生成验证码 │
|
|
32
34
|
│<────────────────────────│
|
|
33
35
|
│ │
|
|
34
|
-
│
|
|
36
|
+
│ 4. 用户在小程序输入验证码 │
|
|
35
37
|
│────────────────────────>│
|
|
36
38
|
│ │
|
|
37
|
-
│
|
|
39
|
+
│ 5. 小程序验证并发放Token │
|
|
38
40
|
│<────────────────────────│
|
|
39
41
|
│ │
|
|
40
|
-
│
|
|
42
|
+
│ 6. Token记账 │
|
|
41
43
|
│────────────────────────>│
|
|
42
44
|
```
|
|
43
45
|
|
|
46
|
+
> ⚠️ **重要提示:验证码只能在 Agent/MCP 端(终端)生成!小程序里无法生成验证码,只能输入验证码!**
|
|
47
|
+
|
|
44
48
|
### 1.2 Token有效期
|
|
45
49
|
|
|
46
50
|
| Token类型 | 有效期 | 说明 |
|
|
@@ -65,7 +69,7 @@ updated: "2026-04-30"
|
|
|
65
69
|
chaimi-keep-mcp
|
|
66
70
|
```
|
|
67
71
|
|
|
68
|
-
2.
|
|
72
|
+
2. **查看验证码(注意:验证码只在 Agent/终端 显示)**
|
|
69
73
|
终端会显示:
|
|
70
74
|
```
|
|
71
75
|
🔐 柴米AI记账授权
|
|
@@ -74,10 +78,10 @@ updated: "2026-04-30"
|
|
|
74
78
|
⏰ 有效期:5分钟
|
|
75
79
|
```
|
|
76
80
|
|
|
77
|
-
3.
|
|
81
|
+
3. **小程序确认(注意:小程序只负责输入验证码,不会生成验证码)**
|
|
78
82
|
- 打开"柴米AI记账"小程序
|
|
79
|
-
- 点击"我的" → "
|
|
80
|
-
-
|
|
83
|
+
- 点击"我的" → "Agent 授权"
|
|
84
|
+
- 输入刚才在 Agent/终端 看到的验证码
|
|
81
85
|
- 点击确认
|
|
82
86
|
|
|
83
87
|
4. **完成授权**
|
|
@@ -99,7 +103,7 @@ mcporter auth 柴米AI记账 --reset
|
|
|
99
103
|
**然后:**
|
|
100
104
|
1. 查看终端显示的验证码
|
|
101
105
|
2. 打开"柴米AI记账"小程序
|
|
102
|
-
3. 进入"我的" → "
|
|
106
|
+
3. 进入"我的" → "Agent 授权"
|
|
103
107
|
4. 输入验证码完成授权
|
|
104
108
|
|
|
105
109
|
### 2.3 原生 MCP 客户端授权失败(Claude/Cursor)
|
|
@@ -127,7 +131,7 @@ mcporter auth 柴米AI记账 --reset
|
|
|
127
131
|
mcporter auth 柴米AI记账
|
|
128
132
|
```
|
|
129
133
|
2. 查看终端显示的验证码
|
|
130
|
-
3. 在小程序"我的"→"
|
|
134
|
+
3. 在小程序"我的"→"Agent 授权"中输入验证码
|
|
131
135
|
4. 返回 Claude/Cursor 重新尝试记账
|
|
132
136
|
|
|
133
137
|
**解决方案(方式2 - 删除 Token 文件):**
|
|
@@ -24,6 +24,17 @@ updated: "2026-04-25"
|
|
|
24
24
|
|
|
25
25
|
## 一、授权问题
|
|
26
26
|
|
|
27
|
+
### ⚠️ 授权流程关键说明(必读!)
|
|
28
|
+
|
|
29
|
+
**重要提示:验证码只能在 Agent/MCP 端(终端)生成!小程序里无法生成验证码,只能输入验证码!**
|
|
30
|
+
|
|
31
|
+
| 位置 | 作用 |
|
|
32
|
+
|:-----|:------|
|
|
33
|
+
| Agent/MCP 端(终端) | 生成验证码 |
|
|
34
|
+
| 小程序 | 只负责输入验证码 |
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
27
38
|
### 1.1 未找到有效授权
|
|
28
39
|
|
|
29
40
|
**现象:**
|
|
@@ -40,7 +51,7 @@ updated: "2026-04-25"
|
|
|
40
51
|
**解决方案:**
|
|
41
52
|
1. 执行 `mcporter auth 柴米AI记账`
|
|
42
53
|
2. 查看终端显示的验证码
|
|
43
|
-
3. 在小程序"我的"→"
|
|
54
|
+
3. 在小程序"我的"→"Agent 授权"中输入验证码
|
|
44
55
|
4. 重新尝试记账
|
|
45
56
|
|
|
46
57
|
### 1.2 授权过期
|
|
@@ -77,7 +88,7 @@ mcporter auth 柴米AI记账 --reset
|
|
|
77
88
|
|
|
78
89
|
**解决方案:**
|
|
79
90
|
1. 重新执行 `mcporter auth 柴米AI记账` 生成新验证码
|
|
80
|
-
2. 在5分钟内在小程序"我的"→"
|
|
91
|
+
2. 在5分钟内在小程序"我的"→"Agent 授权"中输入
|
|
81
92
|
3. 注意区分大小写
|
|
82
93
|
|
|
83
94
|
### 1.4 签名验证失败(版本升级问题)
|
|
@@ -102,7 +113,7 @@ Unsupported state or unable to authenticate data
|
|
|
102
113
|
chaimi-keep-mcp
|
|
103
114
|
```
|
|
104
115
|
2. 查看终端显示的新验证码
|
|
105
|
-
3. 在小程序"我的"→"
|
|
116
|
+
3. 在小程序"我的"→"Agent 授权"中输入新验证码
|
|
106
117
|
4. 重新尝试记账
|
|
107
118
|
|
|
108
119
|
**重要提示:** 此问题仅在安全加固版本升级时出现一次,后续不会再遇到。
|
package/server.js
CHANGED
|
@@ -237,6 +237,11 @@ function setCachedToken(token) {
|
|
|
237
237
|
cachedEncryptedToken = encrypt(token, tokenEncryptionKey);
|
|
238
238
|
}
|
|
239
239
|
|
|
240
|
+
// 清除缓存的 Token
|
|
241
|
+
function clearCachedToken() {
|
|
242
|
+
cachedEncryptedToken = null;
|
|
243
|
+
}
|
|
244
|
+
|
|
240
245
|
// OAuth 管理器实例
|
|
241
246
|
let oauthManager = null;
|
|
242
247
|
|
|
@@ -652,7 +657,8 @@ async function getToken() {
|
|
|
652
657
|
// Token 获取失败,可能需要重新授权
|
|
653
658
|
authState.isAuthorized = false;
|
|
654
659
|
authState.isWaiting = false;
|
|
655
|
-
|
|
660
|
+
await startAuthFlow();
|
|
661
|
+
throw new Error(`NEED_AUTH:${authState.userCode || '等待生成验证码'}`);
|
|
656
662
|
}
|
|
657
663
|
}
|
|
658
664
|
|
|
@@ -757,6 +763,20 @@ async function callMcpHubWithLogging(tool, params, token, traceId, startTime, os
|
|
|
757
763
|
try {
|
|
758
764
|
const result = await callMcpHub(tool, paramsWithMeta, token, traceId, osInfo);
|
|
759
765
|
|
|
766
|
+
// ✅ 检查业务返回的 401 错误
|
|
767
|
+
if (!result.success && result.code === 401) {
|
|
768
|
+
console.error('检测到业务 401,触发重新授权流程');
|
|
769
|
+
|
|
770
|
+
// 清除缓存的 token
|
|
771
|
+
clearCachedToken();
|
|
772
|
+
await oauthManager.clearAuthState();
|
|
773
|
+
|
|
774
|
+
// 启动新授权流程
|
|
775
|
+
await startAuthFlow();
|
|
776
|
+
|
|
777
|
+
throw new Error(`NEED_AUTH:${authState.userCode || '等待生成验证码'}`);
|
|
778
|
+
}
|
|
779
|
+
|
|
760
780
|
// 记录云函数调用成功(已停用:MCP调用日志待迁移到独立云函数)
|
|
761
781
|
// logMcpCall({
|
|
762
782
|
// traceId,
|
|
@@ -1852,6 +1872,10 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1852
1872
|
📱 验证码:**${userCode}**
|
|
1853
1873
|
━━━━━━━━━━━━━━
|
|
1854
1874
|
|
|
1875
|
+
⚠️ 重要说明:
|
|
1876
|
+
• 上面的验证码是我为您生成的!(只有在 Agent/MCP 端才能看到)
|
|
1877
|
+
• 小程序里无法生成验证码,只负责输入验证码!
|
|
1878
|
+
|
|
1855
1879
|
请在"柴米AI记账"小程序中完成授权:
|
|
1856
1880
|
|
|
1857
1881
|
1️⃣ 打开微信小程序"柴米AI记账"
|