diff --git a/src/main/db/sqlite.ts b/src/main/db/sqlite.ts index a631d8c..e90436e 100644 --- a/src/main/db/sqlite.ts +++ b/src/main/db/sqlite.ts @@ -210,6 +210,7 @@ export async function initDatabase(): Promise { id TEXT PRIMARY KEY, name TEXT NOT NULL, description TEXT NOT NULL, + summary TEXT DEFAULT '', trigger_keywords TEXT, tool_chain TEXT NOT NULL, success_count INTEGER DEFAULT 0, @@ -225,6 +226,9 @@ export async function initDatabase(): Promise { // 兼容迁移:为已有 messages 表补充 prompt_eval_count 列(新库已有,旧库需要 ALTER) try { db.run('ALTER TABLE messages ADD COLUMN prompt_eval_count INTEGER'); } catch { /* 列已存在,忽略 */ } + // 兼容迁移:为已有 skills 表补充 summary 列 + try { db.run("ALTER TABLE skills ADD COLUMN summary TEXT DEFAULT ''"); } catch { /* 列已存在,忽略 */ } + // 尝试创建 FTS5 全文搜索(可选,sql.js 默认 WASM 可能不包含 FTS5) try { db.run(` @@ -312,6 +316,7 @@ export interface SkillRow { id: string; name: string; description: string; + summary: string; trigger_keywords: string | null; tool_chain: string; success_count: number; @@ -522,9 +527,9 @@ export function getTracesBySession(sessionId: string): TraceRow[] { // ─── Skills CRUD (v4.2) ─── export function saveSkill(skill: SkillRow): string { - runExec(getDb(), `INSERT OR REPLACE INTO skills (id, name, description, trigger_keywords, tool_chain, success_count, fail_count, avg_duration_ms, created_at, updated_at, last_used_at) - VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, - [skill.id, skill.name, skill.description, skill.trigger_keywords, skill.tool_chain, + runExec(getDb(), `INSERT OR REPLACE INTO skills (id, name, description, summary, trigger_keywords, tool_chain, success_count, fail_count, avg_duration_ms, created_at, updated_at, last_used_at) + VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`, + [skill.id, skill.name, skill.description, skill.summary || '', skill.trigger_keywords, skill.tool_chain, skill.success_count, skill.fail_count, skill.avg_duration_ms, skill.created_at, skill.updated_at, skill.last_used_at] );