chaimi-keep-mcp 3.3.3-beta.3 → 3.3.3-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/README.md +3 -0
- package/package.json +1 -1
- package/server.js +30 -4
package/README.md
CHANGED
|
@@ -89,6 +89,9 @@ export MCP_PROMPT_URL="你的Prompt服务地址"
|
|
|
89
89
|
|
|
90
90
|
## Changelog
|
|
91
91
|
|
|
92
|
+
### v3.3.3-beta.4 (2026-04-29)
|
|
93
|
+
- **优化** 收入记账时间解析统一 - save_income 同样使用 time_description,修复 AI 计算时间戳错误
|
|
94
|
+
|
|
92
95
|
### v3.3.3-beta.3 (2026-04-29)
|
|
93
96
|
- **优化** 文本记账时间解析 - 使用 time_description 替代直接计算时间戳,解决 AI 计算时间错误的问题
|
|
94
97
|
|
package/package.json
CHANGED
package/server.js
CHANGED
|
@@ -779,6 +779,10 @@ function recordSkillRead() {
|
|
|
779
779
|
// 工具调用处理
|
|
780
780
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
781
781
|
const { name, arguments: args } = request.params;
|
|
782
|
+
|
|
783
|
+
// 【调试】记录实际接收到的参数
|
|
784
|
+
console.log(`[CallTool] ${name} 接收参数:`, JSON.stringify(args, null, 2));
|
|
785
|
+
|
|
782
786
|
const startTime = Date.now();
|
|
783
787
|
const traceId = generateTraceId();
|
|
784
788
|
const osInfo = getOSInfo();
|
|
@@ -1481,8 +1485,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1481
1485
|
}
|
|
1482
1486
|
|
|
1483
1487
|
case 'save_income': {
|
|
1484
|
-
// P0: 数据完整性检查 -
|
|
1485
|
-
const requiredFields = ['name', 'amount', 'category', '
|
|
1488
|
+
// P0: 数据完整性检查 - 必填字段验证(date 改为 time_description,不强制检查)
|
|
1489
|
+
const requiredFields = ['name', 'amount', 'category', 'rawInput'];
|
|
1486
1490
|
const missingFields = [];
|
|
1487
1491
|
|
|
1488
1492
|
for (const field of requiredFields) {
|
|
@@ -1503,7 +1507,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1503
1507
|
docs: '调用 get_skill() 获取详细使用指南'
|
|
1504
1508
|
}
|
|
1505
1509
|
};
|
|
1506
|
-
userMessage = `❌ 收入记录失败\n\n错误:缺少必填字段:${missingFields.join(', ')}\n\n💡 解决方案:\n1. 请检查是否从用户输入中提取了所有信息\n2. 确保传递以下字段:name(收入来源)、amount(金额)、category(分类)、
|
|
1510
|
+
userMessage = `❌ 收入记录失败\n\n错误:缺少必填字段:${missingFields.join(', ')}\n\n💡 解决方案:\n1. 请检查是否从用户输入中提取了所有信息\n2. 确保传递以下字段:name(收入来源)、amount(金额)、category(分类)、rawInput(原始输入)\n3. 参考 SKILL.md 中的"调用前检查清单"`;
|
|
1507
1511
|
break;
|
|
1508
1512
|
}
|
|
1509
1513
|
|
|
@@ -1518,6 +1522,15 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1518
1522
|
break;
|
|
1519
1523
|
}
|
|
1520
1524
|
|
|
1525
|
+
// 【新增】处理 time_description(收入记账新时间格式)
|
|
1526
|
+
let timeNote = '';
|
|
1527
|
+
if (processedArgs.time_description) {
|
|
1528
|
+
const parsedDate = parseTimeDescription(processedArgs.time_description, Date.now());
|
|
1529
|
+
processedArgs.date = parsedDate;
|
|
1530
|
+
timeNote = getTimeNote(processedArgs.time_description);
|
|
1531
|
+
console.log(`[save_income] 时间描述解析: ${processedArgs.time_description} → ${parsedDate} (${new Date(parsedDate).toLocaleString('zh-CN')})`);
|
|
1532
|
+
}
|
|
1533
|
+
|
|
1521
1534
|
// P1: 日期合理性检查
|
|
1522
1535
|
if (processedArgs.date) {
|
|
1523
1536
|
const validation = validateDate(processedArgs.date, '收入日期');
|
|
@@ -1530,6 +1543,18 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1530
1543
|
userMessage = validation.message;
|
|
1531
1544
|
break;
|
|
1532
1545
|
}
|
|
1546
|
+
|
|
1547
|
+
// 【新增】校验时间是否在合理范围内(±1年)
|
|
1548
|
+
const dateObj = new Date(processedArgs.date);
|
|
1549
|
+
const now = new Date();
|
|
1550
|
+
const oneYearAgo = new Date(now.getFullYear() - 1, 0, 1);
|
|
1551
|
+
const oneYearLater = new Date(now.getFullYear() + 1, 11, 31);
|
|
1552
|
+
|
|
1553
|
+
if (dateObj < oneYearAgo || dateObj > oneYearLater) {
|
|
1554
|
+
console.warn(`[save_income] 时间异常:${processedArgs.date} (${dateObj.toLocaleString('zh-CN')}),使用当前时间`);
|
|
1555
|
+
processedArgs.date = Date.now();
|
|
1556
|
+
timeNote = '⏰ 时间说明:检测到时间异常,已使用当前时间';
|
|
1557
|
+
}
|
|
1533
1558
|
}
|
|
1534
1559
|
|
|
1535
1560
|
const mcpParams = convertParams('save_income', processedArgs);
|
|
@@ -1551,7 +1576,8 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
|
1551
1576
|
金额: displayAmount,
|
|
1552
1577
|
分类: result.data?.categoryName || displayCategory,
|
|
1553
1578
|
日期: result.data?.date ? new Date(result.data.date).toLocaleDateString('zh-CN') : new Date().toLocaleDateString('zh-CN'),
|
|
1554
|
-
正能量祝福语: '入账顺利!💰'
|
|
1579
|
+
正能量祝福语: '入账顺利!💰',
|
|
1580
|
+
timeNote // 【新增】时间说明
|
|
1555
1581
|
};
|
|
1556
1582
|
}
|
|
1557
1583
|
break;
|