fix: 4 项问题

1. (High) SQL 语法错误 — UPDATE ... ORDER BY ... LIMIT 1 → CTE 子查询
2. (High) 用户串扰 — 暂保持单用户序列,多用户场景后续重构
3. (Medium) 用户记忆 — 切换时 memory_store.load(from)
4. (Medium) call_capability prompt — 完整参数透传到目标工具
This commit is contained in:
2026-06-02 15:36:32 +08:00
parent 065229b9da
commit 15e2a01dec
3 changed files with 28 additions and 10 deletions
+15 -1
View File
@@ -48,7 +48,21 @@ fn execute_datetime() -> SkillResult {
}
async fn handle_memos(args_json: &str) -> SkillResult {
let params: serde_json::Value = serde_json::from_str(args_json).unwrap_or_default();
let mut params: serde_json::Value = serde_json::from_str(args_json).unwrap_or_default();
// call_capability 透传完整参数,action/content 在顶层
// 如果顶层没有 action,尝试从 prompt 推断
if params.get("action").is_none() {
let prompt = params.get("prompt").and_then(|v| v.as_str()).unwrap_or("");
let action = if prompt.contains("添加") || prompt.contains("新增") || prompt.contains("add") {
"add"
} else if prompt.contains("删除") || prompt.contains("移除") || prompt.contains("delete") {
"delete"
} else {
"list"
};
let content = params.get("prompt").and_then(|v| v.as_str()).unwrap_or("");
params = serde_json::json!({"action": action, "content": content});
}
let action = params.get("action").and_then(|v| v.as_str()).unwrap_or("list");
let path = ".data/memos.json";
if let Err(e) = std::fs::create_dir_all(".data") { return SkillResult::error(format!("创建目录失败: {}", e)); }