chaimi-keep-mcp 3.5.0-beta.3 → 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 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
@@ -243,7 +243,7 @@ references/
243
243
  ```markdown
244
244
  ✅ 「你的小可爱」已帮您记账成功
245
245
  ═══════════════
246
- 🔴🔴 请确认以下信息是否正确
246
+ 🔴 请确认以下信息是否正确
247
247
 
248
248
  💰 金额:¥35.00
249
249
  📊 类型:支出
@@ -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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "chaimi-keep-mcp",
3
- "version": "3.5.0-beta.3",
3
+ "version": "3.5.0-beta.5",
4
4
  "description": "柴米AI记账 MCP Server - 支持 Claude、Cursor、OpenClaw、WorkBuddy 等 AI 工具直接记账",
5
5
  "main": "server.js",
6
6
  "bin": {
@@ -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
- 3. 小程序确认
36
+ 4. 用户在小程序输入验证码
35
37
  │────────────────────────>│
36
38
  │ │
37
- 4. 发放Token
39
+ 5. 小程序验证并发放Token
38
40
  │<────────────────────────│
39
41
  │ │
40
- 5. Token记账 │
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
- - 点击"我的" → "AI 助手绑定"
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. 进入"我的" → "AI 助手绑定"
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. 在小程序"我的"→"AI 助手绑定"中输入验证码
134
+ 3. 在小程序"我的"→"Agent 授权"中输入验证码
131
135
  4. 返回 Claude/Cursor 重新尝试记账
132
136
 
133
137
  **解决方案(方式2 - 删除 Token 文件):**
@@ -123,7 +123,7 @@ updated: "2026-04-25"
123
123
  ```markdown
124
124
  ✅ 「{agentName}」已帮您记账成功
125
125
  ═══════════════
126
- 🔴🔴 请确认以下信息是否正确
126
+ 🔴 请确认以下信息是否正确
127
127
 
128
128
  💰 金额:¥{金额}
129
129
  📊 类型:{类型}
@@ -148,7 +148,7 @@ updated: "2026-04-25"
148
148
  ```markdown
149
149
  ✅ 「你的小可爱」已帮您记账成功
150
150
  ═══════════════
151
- 🔴🔴 请确认以下信息是否正确
151
+ 🔴 请确认以下信息是否正确
152
152
 
153
153
  💰 金额:¥35.00
154
154
  📊 类型:支出
@@ -236,6 +236,7 @@ updated: "2026-04-25"
236
236
  ```markdown
237
237
  ✅ 「{agentName}」已帮您记录收入
238
238
  ═══════════════
239
+ 🔴 请确认以下信息是否正确
239
240
  💰 金额:¥{金额}
240
241
  ═══════════════
241
242
 
@@ -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. 在小程序"我的"→"AI 助手绑定"中输入验证码
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分钟内在小程序"我的"→"AI 助手绑定"中输入
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. 在小程序"我的"→"AI 助手绑定"中输入新验证码
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
- throw new Error(`NEED_AUTH:授权已过期,请重新授权`);
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记账"