fix: skills 表增加 summary 列,修复渐进式技能加载数据丢失
Skill 接口包含 summary 字段且 extractSkillsFromToolRecords() 会生成摘要, 但 SQLite schema 和 saveSkill() 遗漏了该列,导致保存时 summary 丢失。 - CREATE TABLE 增加 summary TEXT DEFAULT '' - 兼容迁移:ALTER TABLE 补充 summary 列 - saveSkill() INSERT 语句增加 summary 参数 - SkillRow 接口增加 summary 字段
This commit is contained in:
@@ -210,6 +210,7 @@ export async function initDatabase(): Promise<SQL.Database> {
|
|||||||
id TEXT PRIMARY KEY,
|
id TEXT PRIMARY KEY,
|
||||||
name TEXT NOT NULL,
|
name TEXT NOT NULL,
|
||||||
description TEXT NOT NULL,
|
description TEXT NOT NULL,
|
||||||
|
summary TEXT DEFAULT '',
|
||||||
trigger_keywords TEXT,
|
trigger_keywords TEXT,
|
||||||
tool_chain TEXT NOT NULL,
|
tool_chain TEXT NOT NULL,
|
||||||
success_count INTEGER DEFAULT 0,
|
success_count INTEGER DEFAULT 0,
|
||||||
@@ -225,6 +226,9 @@ export async function initDatabase(): Promise<SQL.Database> {
|
|||||||
// 兼容迁移:为已有 messages 表补充 prompt_eval_count 列(新库已有,旧库需要 ALTER)
|
// 兼容迁移:为已有 messages 表补充 prompt_eval_count 列(新库已有,旧库需要 ALTER)
|
||||||
try { db.run('ALTER TABLE messages ADD COLUMN prompt_eval_count INTEGER'); } catch { /* 列已存在,忽略 */ }
|
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)
|
// 尝试创建 FTS5 全文搜索(可选,sql.js 默认 WASM 可能不包含 FTS5)
|
||||||
try {
|
try {
|
||||||
db.run(`
|
db.run(`
|
||||||
@@ -312,6 +316,7 @@ export interface SkillRow {
|
|||||||
id: string;
|
id: string;
|
||||||
name: string;
|
name: string;
|
||||||
description: string;
|
description: string;
|
||||||
|
summary: string;
|
||||||
trigger_keywords: string | null;
|
trigger_keywords: string | null;
|
||||||
tool_chain: string;
|
tool_chain: string;
|
||||||
success_count: number;
|
success_count: number;
|
||||||
@@ -522,9 +527,9 @@ export function getTracesBySession(sessionId: string): TraceRow[] {
|
|||||||
// ─── Skills CRUD (v4.2) ───
|
// ─── Skills CRUD (v4.2) ───
|
||||||
|
|
||||||
export function saveSkill(skill: SkillRow): string {
|
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)
|
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 (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)`,
|
||||||
[skill.id, skill.name, skill.description, skill.trigger_keywords, skill.tool_chain,
|
[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.success_count, skill.fail_count, skill.avg_duration_ms,
|
||||||
skill.created_at, skill.updated_at, skill.last_used_at]
|
skill.created_at, skill.updated_at, skill.last_used_at]
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user