feat: v4.2 智能进化 — 技能自动生成 + 用户画像 + 人格模板
新增功能: 1. 技能自动生成系统 (Skill Loop) - 新增 skills 表:id/name/description/trigger_keywords/tool_chain/success_count/fail_count - skill-manager.ts: 从成功工具调用链自动提取可复用技能 - 关键词匹配 + 成功率加权的技能检索 - 匹配到的技能自动注入 system prompt(含工具链步骤和成功率) - Agent Loop 结束后自动提取,开始前自动匹配注入 - DB/IPC/Preload 全链路支持 2. 用户画像模型 - 自动从对话中推断技术栈(14 种技术关键词检测) - 画像存储在 settings.user_profile - 自动注入 system prompt(技术栈/角色/风格) - 随使用不断积累完善 3. 人格模板切换(6 种预设) - 🤖 通用助手(默认,温度跟随设置) - 💻 编程助手(温度 0.3,注重代码质量) - ✍️ 写作助手(温度 0.8,注重文采流畅) - 📊 数据分析(温度 0.2,注重精确逻辑) - 🌐 翻译助手(温度 0.4,注重信达雅) - 🔍 代码审查(温度 0.3,注重安全性能) - 设置面板 3×2 网格按钮,点击切换 + 自动调整温度 修改文件:9 个已有 + 1 个新建(skill-manager.ts)
This commit is contained in:
@@ -14,6 +14,7 @@ import {
|
||||
saveSetting, getSetting,
|
||||
saveToolCall, getToolCallsBySession,
|
||||
saveTrace, getTracesBySession,
|
||||
saveSkill, getAllSkills, deleteSkill, clearAllSkills, searchSkills, incrementSkillUsage,
|
||||
exportAllSessions, importSessions
|
||||
} from './db/sqlite.js';
|
||||
import type { ExportData } from './db/sqlite.js';
|
||||
@@ -371,4 +372,30 @@ export async function setupIPC(): Promise<void> {
|
||||
try { return importSessions(data); }
|
||||
catch (err) { sendLog('error', '导入失败', (err as Error).message); return { imported: 0, skipped: 0 }; }
|
||||
});
|
||||
|
||||
// ── Skills (v4.2) ──
|
||||
ipcMain.handle('db:saveSkill', (_, skill) => {
|
||||
try { return { success: true, id: saveSkill(skill) }; }
|
||||
catch (err) { return { success: false, error: (err as Error).message }; }
|
||||
});
|
||||
ipcMain.handle('db:getAllSkills', () => {
|
||||
try { return getAllSkills(); }
|
||||
catch { return []; }
|
||||
});
|
||||
ipcMain.handle('db:deleteSkill', (_, id) => {
|
||||
try { deleteSkill(id); return { success: true }; }
|
||||
catch (err) { return { success: false, error: (err as Error).message }; }
|
||||
});
|
||||
ipcMain.handle('db:clearAllSkills', () => {
|
||||
try { clearAllSkills(); return { success: true }; }
|
||||
catch (err) { return { success: false, error: (err as Error).message }; }
|
||||
});
|
||||
ipcMain.handle('db:searchSkills', (_, query: string, limit?: number) => {
|
||||
try { return searchSkills(query, limit ?? 5); }
|
||||
catch { return []; }
|
||||
});
|
||||
ipcMain.handle('db:incrementSkillUsage', (_, id: string, success: boolean, durationMs: number) => {
|
||||
try { incrementSkillUsage(id, success, durationMs); return { success: true }; }
|
||||
catch (err) { return { success: false, error: (err as Error).message }; }
|
||||
});
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user