@hongmaple0820/scale-engine 0.21.1 → 0.23.0
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.en.md +39 -13
- package/README.md +61 -31
- package/dist/api/cli.js +291 -4
- package/dist/api/cli.js.map +1 -1
- package/dist/api/doctor.d.ts +1 -0
- package/dist/api/doctor.js +83 -0
- package/dist/api/doctor.js.map +1 -1
- package/dist/artifact/types.d.ts +1 -1
- package/dist/artifact/types.js.map +1 -1
- package/dist/cli/phaseCommands.js +25 -6
- package/dist/cli/phaseCommands.js.map +1 -1
- package/dist/cli/runCommand.d.ts +39 -0
- package/dist/cli/runCommand.js +113 -0
- package/dist/cli/runCommand.js.map +1 -0
- package/dist/config/profiles.d.ts +52 -0
- package/dist/config/profiles.js +162 -0
- package/dist/config/profiles.js.map +1 -0
- package/dist/context/ContextBudget.d.ts +25 -1
- package/dist/context/ContextBudget.js +72 -7
- package/dist/context/ContextBudget.js.map +1 -1
- package/dist/context/ProjectAnatomy.d.ts +18 -0
- package/dist/context/ProjectAnatomy.js +287 -0
- package/dist/context/ProjectAnatomy.js.map +1 -0
- package/dist/dashboard/DashboardServer.d.ts +3 -0
- package/dist/dashboard/DashboardServer.js +114 -0
- package/dist/dashboard/DashboardServer.js.map +1 -1
- package/dist/hooks/BugPatternDetector.d.ts +36 -0
- package/dist/hooks/BugPatternDetector.js +207 -0
- package/dist/hooks/BugPatternDetector.js.map +1 -0
- package/dist/hooks/HookGeneratorEnhanced.js +301 -5
- package/dist/hooks/HookGeneratorEnhanced.js.map +1 -1
- package/dist/hooks/WorkflowHooksManager.js +24 -0
- package/dist/hooks/WorkflowHooksManager.js.map +1 -1
- package/dist/index.d.ts +4 -0
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/knowledge/CerebrumManager.d.ts +25 -0
- package/dist/knowledge/CerebrumManager.js +127 -0
- package/dist/knowledge/CerebrumManager.js.map +1 -0
- package/dist/knowledge/SQLiteKnowledgeBase.d.ts +1 -0
- package/dist/knowledge/SQLiteKnowledgeBase.js +31 -3
- package/dist/knowledge/SQLiteKnowledgeBase.js.map +1 -1
- package/dist/knowledge/TfidfIndex.d.ts +50 -0
- package/dist/knowledge/TfidfIndex.js +177 -0
- package/dist/knowledge/TfidfIndex.js.map +1 -0
- package/dist/skills/SkillDiscovery.js +1 -1
- package/dist/skills/SkillDiscovery.js.map +1 -1
- package/dist/tools/CommandOutputCompressor.d.ts +28 -0
- package/dist/tools/CommandOutputCompressor.js +242 -0
- package/dist/tools/CommandOutputCompressor.js.map +1 -0
- package/dist/tools/CommandRunLedger.d.ts +77 -0
- package/dist/tools/CommandRunLedger.js +111 -0
- package/dist/tools/CommandRunLedger.js.map +1 -0
- package/dist/tools/index.d.ts +2 -0
- package/dist/tools/index.js +2 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/workflow/EngineeringStandards.js +91 -2
- package/dist/workflow/EngineeringStandards.js.map +1 -1
- package/dist/workflow/GovernanceTemplatePacks.js +2 -2
- package/dist/workflow/GovernanceTemplates.js +90 -89
- package/dist/workflow/GovernanceTemplates.js.map +1 -1
- package/dist/workflow/TaskLevelDetector.d.ts +41 -0
- package/dist/workflow/TaskLevelDetector.js +219 -0
- package/dist/workflow/TaskLevelDetector.js.map +1 -0
- package/dist/workflow/WorkflowOrchestrator.d.ts +59 -0
- package/dist/workflow/WorkflowOrchestrator.js +326 -0
- package/dist/workflow/WorkflowOrchestrator.js.map +1 -0
- package/dist/workflow/WorkspaceLifecycle.d.ts +19 -1
- package/dist/workflow/WorkspaceLifecycle.js +119 -3
- package/dist/workflow/WorkspaceLifecycle.js.map +1 -1
- package/dist/workflow/WorkspaceTopology.d.ts +6 -0
- package/dist/workflow/WorkspaceTopology.js +17 -6
- package/dist/workflow/WorkspaceTopology.js.map +1 -1
- package/dist/workflow/gates/GateSystem.d.ts +23 -6
- package/dist/workflow/gates/GateSystem.js +114 -25
- package/dist/workflow/gates/GateSystem.js.map +1 -1
- package/dist/workflow/gates/MetaGovernanceGates.d.ts +70 -0
- package/dist/workflow/gates/MetaGovernanceGates.js +617 -0
- package/dist/workflow/gates/MetaGovernanceGates.js.map +1 -0
- package/dist/workflow/types.d.ts +6 -1
- package/docs/GITLAB_FLOW.md +125 -0
- package/docs/README.md +3 -0
- package/docs/start/README.md +29 -3
- package/docs/start/artifact-lifecycle.md +326 -0
- package/docs/start/workflow-upgrade.md +150 -0
- package/image/wechat-public.jpg +0 -0
- package/image/wxPay.jpg +0 -0
- package/image/zfb.jpg +0 -0
- package/package.json +10 -8
|
@@ -42,6 +42,30 @@ const WORKFLOW_PRESETS = [
|
|
|
42
42
|
description: 'Stop reminder — shows remaining SCALE phases and next command',
|
|
43
43
|
templates: ['tmpl-next-step-reminder'],
|
|
44
44
|
enabled: true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: 'doc-standards',
|
|
48
|
+
description: 'Document standards check (G8) — validates markdown files on write',
|
|
49
|
+
templates: ['tmpl-doc-standards-check'],
|
|
50
|
+
enabled: true
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
name: 'anatomy',
|
|
54
|
+
description: 'Project file map — shows file descriptions before reads, auto-updates on writes',
|
|
55
|
+
templates: ['tmpl-anatomy-pre-read', 'tmpl-anatomy-post-write', 'tmpl-anatomy-session-start'],
|
|
56
|
+
enabled: true
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'cerebrum',
|
|
60
|
+
description: 'Learning memory — Do-Not-Repeat rules checked before writes, preferences loaded at session start',
|
|
61
|
+
templates: ['tmpl-cerebrum-pre-write', 'tmpl-cerebrum-session-start'],
|
|
62
|
+
enabled: true
|
|
63
|
+
},
|
|
64
|
+
{
|
|
65
|
+
name: 'bug-capture',
|
|
66
|
+
description: 'Auto-detect bug fix patterns from edits, recall past bugs before editing same file',
|
|
67
|
+
templates: ['tmpl-bug-capture', 'tmpl-bug-recall'],
|
|
68
|
+
enabled: true
|
|
45
69
|
}
|
|
46
70
|
];
|
|
47
71
|
export class WorkflowHooksManager {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WorkflowHooksManager.js","sourceRoot":"","sources":["../../src/hooks/WorkflowHooksManager.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WorkflowHooksManager.js","sourceRoot":"","sources":["../../src/hooks/WorkflowHooksManager.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAA;AAClE,OAAO,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAA;AAShD,MAAM,gBAAgB,GAAyB;IAC7C;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,wDAAwD;QACrE,SAAS,EAAE,CAAC,wBAAwB,EAAE,yBAAyB,CAAC;QAChE,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,6DAA6D;QAC1E,SAAS,EAAE,CAAC,6BAA6B,EAAE,wBAAwB,CAAC;QACpE,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,+CAA+C;QAC5D,SAAS,EAAE,CAAC,qBAAqB,EAAE,uBAAuB,CAAC;QAC3D,OAAO,EAAE,KAAK;KACf;IACD;QACE,IAAI,EAAE,iBAAiB;QACvB,WAAW,EAAE,8CAA8C;QAC3D,SAAS,EAAE,CAAC,uBAAuB,CAAC;QACpC,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,kBAAkB;QACxB,WAAW,EAAE,uEAAuE;QACpF,SAAS,EAAE,CAAC,6BAA6B,CAAC;QAC1C,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,sEAAsE;QACnF,SAAS,EAAE,CAAC,oBAAoB,CAAC;QACjC,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,oBAAoB;QAC1B,WAAW,EAAE,+DAA+D;QAC5E,SAAS,EAAE,CAAC,yBAAyB,CAAC;QACtC,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,mEAAmE;QAChF,SAAS,EAAE,CAAC,0BAA0B,CAAC;QACvC,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,iFAAiF;QAC9F,SAAS,EAAE,CAAC,uBAAuB,EAAE,yBAAyB,EAAE,4BAA4B,CAAC;QAC7F,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,UAAU;QAChB,WAAW,EAAE,kGAAkG;QAC/G,SAAS,EAAE,CAAC,yBAAyB,EAAE,6BAA6B,CAAC;QACrE,OAAO,EAAE,IAAI;KACd;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,oFAAoF;QACjG,SAAS,EAAE,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;QAClD,OAAO,EAAE,IAAI;KACd;CACF,CAAA;AAED,MAAM,OAAO,oBAAoB;IAI/B,YAAY,QAAmB;QAC7B,IAAI,CAAC,SAAS,GAAG,IAAI,qBAAqB,CAAC,QAAQ,CAAC,CAAA;QACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC5C,CAAC;IAED,YAAY,CACV,UAAkB,EAClB,QAAgB,EAChB,YAAoB;QAEpB,MAAM,OAAO,GAAG,UAAU,KAAK,KAAK;YAClC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;YACzC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;QAEpE,MAAM,KAAK,GAAmB,EAAE,CAAA;QAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,KAAK,MAAM,UAAU,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;gBAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,UAAU,CAAC,CAAA;gBAC7E,IAAI,CAAC,QAAQ;oBAAE,SAAQ;gBACvB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,oBAAoB,CAAC,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAA;gBACxE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;gBACxC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAClB,CAAC;QACH,CAAC;QACD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,WAAW;QACT,OAAO,gBAAgB,CAAA;IACzB,CAAC;IAED,YAAY,CAAC,IAAY,EAAE,OAAgB;QACzC,MAAM,MAAM,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAA;QAC1D,IAAI,MAAM;YAAE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAA;IACtC,CAAC;IAED,eAAe;QACb,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAChC,MAAM,EAAE,CAAC,CAAC,IAAI;YACd,KAAK,EAAE,CAAC,CAAC,SAAS,CAAC,MAAM;YACzB,MAAM,EAAE,CAAC,CAAC,OAAO;SAClB,CAAC,CAAC,CAAA;IACL,CAAC;IAED,0BAA0B,CACxB,QAAgB,EAChB,YAAoB;QAEpB,MAAM,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAA;QAC9D,OAAO,EAAE,QAAQ,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAA;IAC1C,CAAC;IAED,YAAY,KAA4B,OAAO,IAAI,CAAC,SAAS,CAAA,CAAC,CAAC;IAC/D,WAAW,KAAmB,OAAO,IAAI,CAAC,QAAQ,CAAA,CAAC,CAAC;CACrD;AAED,MAAM,UAAU,8BAA8B;IAC5C,OAAO;QACL,KAAK,EAAE;YACL,UAAU,EAAE;gBACV;oBACE,OAAO,EAAE,OAAO;oBAChB,KAAK,EAAE;wBACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,sCAAsC,EAAE,OAAO,EAAE,IAAI,EAAE;wBACnF,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,2CAA2C,EAAE,OAAO,EAAE,IAAI,EAAE;qBACzF;iBACF;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,sCAAsC,EAAE,OAAO,EAAE,IAAI,EAAE;qBACpF;iBACF;gBACD;oBACE,OAAO,EAAE,MAAM;oBACf,KAAK,EAAE;wBACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,wCAAwC,EAAE,OAAO,EAAE,IAAI,EAAE;qBACtF;iBACF;aACF;YACD,WAAW,EAAE;gBACX;oBACE,OAAO,EAAE,YAAY;oBACrB,KAAK,EAAE;wBACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,sCAAsC,EAAE,OAAO,EAAE,IAAI,EAAE;wBACnF,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,kCAAkC,EAAE,OAAO,EAAE,IAAI,EAAE;qBAChF;iBACF;aACF;YACD,IAAI,EAAE;gBACJ;oBACE,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE;wBACL,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,qCAAqC,EAAE,OAAO,EAAE,KAAK,EAAE;wBACnF,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,2CAA2C,EAAE,OAAO,EAAE,IAAI,EAAE;qBACzF;iBACF;aACF;SACF;KACF,CAAA;AACH,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -11,6 +11,8 @@ export { logger } from './core/logger.js';
|
|
|
11
11
|
export { TaskEngine } from './tasks/TaskEngine.js';
|
|
12
12
|
export { KnowledgeBase } from './knowledge/KnowledgeBase.js';
|
|
13
13
|
export { SQLiteKnowledgeBase } from './knowledge/SQLiteKnowledgeBase.js';
|
|
14
|
+
export { CerebrumManager } from './knowledge/CerebrumManager.js';
|
|
15
|
+
export type { CerebrumEntry, CerebrumHit } from './knowledge/CerebrumManager.js';
|
|
14
16
|
export type { IKnowledgeBase } from './knowledge/KnowledgeBase.js';
|
|
15
17
|
export { UbiquitousLanguageManager, createUbiquitousLanguageManager } from './knowledge/UbiquitousLanguageManager.js';
|
|
16
18
|
export type { IUbiquitousLanguageManager } from './knowledge/UbiquitousLanguageManager.js';
|
|
@@ -45,6 +47,8 @@ export { DangerousCommandDetector, SecretLeakDetector, RoleGateDetector, ScopeCr
|
|
|
45
47
|
export { DetectorStatisticsTracker, DetectorRegistry, AISlopDetector, HallucinationDetector, DuplicateEditDetector, EnhancedGatewayContext, ALL_ENHANCED_DETECTORS, } from './guardrails/DetectorEnhanced.js';
|
|
46
48
|
export type { IDetectorStatisticsTracker, DetectorTriggerRecord, DetectorStatistics, DetectorConfig, IDetectorRegistry, IEnhancedGateway, } from './guardrails/DetectorEnhanced.js';
|
|
47
49
|
export { ContextBuilder } from './context/ContextBuilder.js';
|
|
50
|
+
export { ProjectAnatomy } from './context/ProjectAnatomy.js';
|
|
51
|
+
export type { AnatomyEntry } from './context/ProjectAnatomy.js';
|
|
48
52
|
export { wireEffects } from './orchestration/EffectsWiring.js';
|
|
49
53
|
export * from './tools/index.js';
|
|
50
54
|
export * from './workflow/WorkflowGuidance.js';
|
package/dist/index.js
CHANGED
|
@@ -17,6 +17,7 @@ export { TaskEngine } from './tasks/TaskEngine.js';
|
|
|
17
17
|
// Knowledge Base
|
|
18
18
|
export { KnowledgeBase } from './knowledge/KnowledgeBase.js';
|
|
19
19
|
export { SQLiteKnowledgeBase } from './knowledge/SQLiteKnowledgeBase.js';
|
|
20
|
+
export { CerebrumManager } from './knowledge/CerebrumManager.js';
|
|
20
21
|
// Ubiquitous Language (mattpocock/skills style)
|
|
21
22
|
export { UbiquitousLanguageManager, createUbiquitousLanguageManager } from './knowledge/UbiquitousLanguageManager.js';
|
|
22
23
|
// Evolution
|
|
@@ -46,6 +47,7 @@ export { DangerousCommandDetector, SecretLeakDetector, RoleGateDetector, ScopeCr
|
|
|
46
47
|
export { DetectorStatisticsTracker, DetectorRegistry, AISlopDetector, HallucinationDetector, DuplicateEditDetector, EnhancedGatewayContext, ALL_ENHANCED_DETECTORS, } from './guardrails/DetectorEnhanced.js';
|
|
47
48
|
// Context
|
|
48
49
|
export { ContextBuilder } from './context/ContextBuilder.js';
|
|
50
|
+
export { ProjectAnatomy } from './context/ProjectAnatomy.js';
|
|
49
51
|
// Orchestration
|
|
50
52
|
export { wireEffects } from './orchestration/EffectsWiring.js';
|
|
51
53
|
// Tool Orchestration Governance
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,mCAAmC;AACnC,oEAAoE;AAEpE,aAAa;AACb,cAAc,qBAAqB,CAAA;AAEnC,MAAM;AACN,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAA;AAEhD,4BAA4B;AAC5B,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAA;AAGxD,iBAAiB;AACjB,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAA;AAG3D,sBAAsB;AACtB,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAE7C,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAA;AACvE,OAAO,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAEzC,cAAc;AACd,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAA;AAElD,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,oCAAoC,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SQLiteKnowledgeBase } from './SQLiteKnowledgeBase.js';
|
|
2
|
+
export interface CerebrumEntry {
|
|
3
|
+
id: string;
|
|
4
|
+
type: 'preference' | 'do_not_repeat';
|
|
5
|
+
pattern: string;
|
|
6
|
+
description: string;
|
|
7
|
+
createdAt: number;
|
|
8
|
+
hitCount: number;
|
|
9
|
+
}
|
|
10
|
+
export interface CerebrumHit {
|
|
11
|
+
entry: CerebrumEntry;
|
|
12
|
+
matchedWords: string[];
|
|
13
|
+
}
|
|
14
|
+
export declare class CerebrumManager {
|
|
15
|
+
private kb;
|
|
16
|
+
private entries;
|
|
17
|
+
constructor(kb: SQLiteKnowledgeBase);
|
|
18
|
+
addDoNotRepeat(pattern: string, description: string): Promise<CerebrumEntry>;
|
|
19
|
+
addPreference(description: string, tags?: string[]): Promise<CerebrumEntry>;
|
|
20
|
+
check(content: string): CerebrumHit[];
|
|
21
|
+
loadAll(): Promise<CerebrumEntry[]>;
|
|
22
|
+
toMarkdown(): string;
|
|
23
|
+
getEntries(): CerebrumEntry[];
|
|
24
|
+
private fromKbEntry;
|
|
25
|
+
}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// SCALE Engine 鈥?Cerebrum Manager
|
|
2
|
+
// Manages Do-Not-Repeat rules and user preferences via the Knowledge Base.
|
|
3
|
+
// Inspired by OpenWolf's cerebrum system.
|
|
4
|
+
export class CerebrumManager {
|
|
5
|
+
constructor(kb) {
|
|
6
|
+
this.kb = kb;
|
|
7
|
+
this.entries = [];
|
|
8
|
+
}
|
|
9
|
+
async addDoNotRepeat(pattern, description) {
|
|
10
|
+
const kbEntry = await this.kb.add({
|
|
11
|
+
type: 'do_not_repeat',
|
|
12
|
+
title: pattern,
|
|
13
|
+
tags: ['cerebrum', 'do_not_repeat'],
|
|
14
|
+
contentRef: description,
|
|
15
|
+
verified: true,
|
|
16
|
+
verifiedBy: 'cerebrum',
|
|
17
|
+
verifiedAt: Date.now(),
|
|
18
|
+
});
|
|
19
|
+
const entry = {
|
|
20
|
+
id: kbEntry.id,
|
|
21
|
+
type: 'do_not_repeat',
|
|
22
|
+
pattern,
|
|
23
|
+
description,
|
|
24
|
+
createdAt: kbEntry.createdAt,
|
|
25
|
+
hitCount: 0,
|
|
26
|
+
};
|
|
27
|
+
this.entries.push(entry);
|
|
28
|
+
return entry;
|
|
29
|
+
}
|
|
30
|
+
async addPreference(description, tags = []) {
|
|
31
|
+
const kbEntry = await this.kb.add({
|
|
32
|
+
type: 'preference',
|
|
33
|
+
title: description,
|
|
34
|
+
tags: ['cerebrum', 'preference', ...tags],
|
|
35
|
+
contentRef: description,
|
|
36
|
+
verified: true,
|
|
37
|
+
verifiedBy: 'cerebrum',
|
|
38
|
+
verifiedAt: Date.now(),
|
|
39
|
+
});
|
|
40
|
+
const entry = {
|
|
41
|
+
id: kbEntry.id,
|
|
42
|
+
type: 'preference',
|
|
43
|
+
pattern: description,
|
|
44
|
+
description,
|
|
45
|
+
createdAt: kbEntry.createdAt,
|
|
46
|
+
hitCount: 0,
|
|
47
|
+
};
|
|
48
|
+
this.entries.push(entry);
|
|
49
|
+
return entry;
|
|
50
|
+
}
|
|
51
|
+
check(content) {
|
|
52
|
+
const hits = [];
|
|
53
|
+
const contentTokens = tokenize(content);
|
|
54
|
+
for (const entry of this.entries) {
|
|
55
|
+
if (entry.type !== 'do_not_repeat')
|
|
56
|
+
continue;
|
|
57
|
+
const patternTokens = tokenize(entry.pattern);
|
|
58
|
+
const overlap = contentTokens.filter(w => patternTokens.includes(w));
|
|
59
|
+
if (overlap.length > 0 && overlap.length >= Math.ceil(patternTokens.length * 0.4)) {
|
|
60
|
+
entry.hitCount++;
|
|
61
|
+
hits.push({ entry, matchedWords: overlap });
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return hits;
|
|
65
|
+
}
|
|
66
|
+
async loadAll() {
|
|
67
|
+
const doNotRepeat = await this.kb.recall({ type: 'do_not_repeat', limit: 200 });
|
|
68
|
+
const preferences = await this.kb.recall({ type: 'preference', limit: 200 });
|
|
69
|
+
this.entries = [
|
|
70
|
+
...doNotRepeat.map(e => this.fromKbEntry(e, 'do_not_repeat')),
|
|
71
|
+
...preferences.map(e => this.fromKbEntry(e, 'preference')),
|
|
72
|
+
];
|
|
73
|
+
return this.entries;
|
|
74
|
+
}
|
|
75
|
+
toMarkdown() {
|
|
76
|
+
const lines = [
|
|
77
|
+
'# cerebrum.md',
|
|
78
|
+
'',
|
|
79
|
+
`> Auto-maintained by SCALE Engine. Last updated: ${new Date().toISOString()}`,
|
|
80
|
+
'',
|
|
81
|
+
];
|
|
82
|
+
const dnr = this.entries.filter(e => e.type === 'do_not_repeat');
|
|
83
|
+
const prefs = this.entries.filter(e => e.type === 'preference');
|
|
84
|
+
if (dnr.length > 0) {
|
|
85
|
+
lines.push('## Do Not Repeat');
|
|
86
|
+
lines.push('');
|
|
87
|
+
for (const e of dnr) {
|
|
88
|
+
lines.push(`- **${e.pattern}** - ${e.description} (hits: ${e.hitCount})`);
|
|
89
|
+
}
|
|
90
|
+
lines.push('');
|
|
91
|
+
}
|
|
92
|
+
if (prefs.length > 0) {
|
|
93
|
+
lines.push('## Preferences');
|
|
94
|
+
lines.push('');
|
|
95
|
+
for (const e of prefs) {
|
|
96
|
+
lines.push(`- ${e.description}`);
|
|
97
|
+
}
|
|
98
|
+
lines.push('');
|
|
99
|
+
}
|
|
100
|
+
if (dnr.length === 0 && prefs.length === 0) {
|
|
101
|
+
lines.push('_No entries yet._');
|
|
102
|
+
lines.push('');
|
|
103
|
+
}
|
|
104
|
+
return lines.join('\n');
|
|
105
|
+
}
|
|
106
|
+
getEntries() {
|
|
107
|
+
return this.entries;
|
|
108
|
+
}
|
|
109
|
+
fromKbEntry(kb, type) {
|
|
110
|
+
return {
|
|
111
|
+
id: kb.id,
|
|
112
|
+
type,
|
|
113
|
+
pattern: kb.title,
|
|
114
|
+
description: kb.contentRef || kb.title,
|
|
115
|
+
createdAt: kb.createdAt,
|
|
116
|
+
hitCount: kb.accessCount,
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function tokenize(text) {
|
|
121
|
+
return text
|
|
122
|
+
.toLowerCase()
|
|
123
|
+
.replace(/[^\p{L}\p{N}_]+/gu, ' ')
|
|
124
|
+
.split(/\s+/)
|
|
125
|
+
.filter(w => w.length > 2);
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=CerebrumManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"CerebrumManager.js","sourceRoot":"","sources":["../../src/knowledge/CerebrumManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
// Persistent version of KnowledgeBase using better-sqlite3
|
|
3
3
|
// Design ref: docs/03-CORE-MODULES.md §3.4
|
|
4
4
|
import Database from 'better-sqlite3';
|
|
5
|
+
import { TfidfIndex } from './TfidfIndex.js';
|
|
5
6
|
import { logger } from '../core/logger.js';
|
|
6
7
|
import { mkdirSync } from 'node:fs';
|
|
7
8
|
import { dirname } from 'node:path';
|
|
@@ -32,6 +33,7 @@ export class SQLiteKnowledgeBase {
|
|
|
32
33
|
constructor(eventBus, opts = {}) {
|
|
33
34
|
this.eventBus = eventBus;
|
|
34
35
|
this.seq = 0;
|
|
36
|
+
this.tfidfIndex = null;
|
|
35
37
|
const dbPath = opts.dbPath ?? '.scale/knowledge.db';
|
|
36
38
|
mkdirSync(dirname(dbPath), { recursive: true });
|
|
37
39
|
this.db = new Database(dbPath);
|
|
@@ -61,6 +63,11 @@ export class SQLiteKnowledgeBase {
|
|
|
61
63
|
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)
|
|
62
64
|
`).run(entry.id, entry.type, entry.title, JSON.stringify(entry.tags), entry.contentRef, entry.embeddingId ?? null, entry.relevance, entry.accessCount, entry.lastAccessed ?? null, entry.verified ? 1 : 0, entry.verifiedBy ?? null, entry.verifiedAt ?? null, entry.createdAt, entry.sourceArtifact ?? null);
|
|
63
65
|
this.eventBus.emit('lesson.proposed', { lessonId: entry.id }, { artifactId: input.sourceArtifact });
|
|
66
|
+
// Update TF-IDF index
|
|
67
|
+
if (this.tfidfIndex) {
|
|
68
|
+
const text = [entry.title, JSON.stringify(entry.tags), entry.contentRef].filter(Boolean).join(' ');
|
|
69
|
+
this.tfidfIndex.upsert(entry.id, text);
|
|
70
|
+
}
|
|
64
71
|
return entry;
|
|
65
72
|
}
|
|
66
73
|
async recall(query) {
|
|
@@ -91,9 +98,30 @@ export class SQLiteKnowledgeBase {
|
|
|
91
98
|
return rows.map((r) => this.fromRow(r));
|
|
92
99
|
}
|
|
93
100
|
async recallByVector(text, topK) {
|
|
94
|
-
//
|
|
95
|
-
|
|
96
|
-
|
|
101
|
+
// Build TF-IDF index if not already built
|
|
102
|
+
if (!this.tfidfIndex) {
|
|
103
|
+
this.tfidfIndex = new TfidfIndex();
|
|
104
|
+
const rows = this.db.prepare('SELECT id, title, tags, content_ref FROM knowledge_entries').all();
|
|
105
|
+
this.tfidfIndex.buildFromRows(rows);
|
|
106
|
+
logger.debug({ docCount: rows.length }, 'TF-IDF index built');
|
|
107
|
+
}
|
|
108
|
+
const results = this.tfidfIndex.search(text, topK);
|
|
109
|
+
if (results.length === 0) {
|
|
110
|
+
logger.debug({ text, topK }, 'recallByVector: no matches found');
|
|
111
|
+
return this.recall({ verifiedOnly: true, limit: topK });
|
|
112
|
+
}
|
|
113
|
+
const entries = [];
|
|
114
|
+
for (const { id, score } of results) {
|
|
115
|
+
const row = this.db.prepare('SELECT * FROM knowledge_entries WHERE id = ?').get(id);
|
|
116
|
+
if (row) {
|
|
117
|
+
const entry = this.fromRow(row);
|
|
118
|
+
// Boost relevance by similarity score
|
|
119
|
+
entry.relevance = Math.min(1, entry.relevance * (1 + score));
|
|
120
|
+
entries.push(entry);
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
logger.debug({ text, topK, matches: entries.length }, 'recallByVector (TF-IDF)');
|
|
124
|
+
return entries;
|
|
97
125
|
}
|
|
98
126
|
async markHelpful(id, sessionId) {
|
|
99
127
|
const row = this.db.prepare('SELECT * FROM knowledge_entries WHERE id = ?').get(id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SQLiteKnowledgeBase.js","sourceRoot":"","sources":["../../src/knowledge/SQLiteKnowledgeBase.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,2DAA2D;AAC3D,2CAA2C;AAE3C,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAIrC,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBjB,CAAA;AAmBD,MAAM,OAAO,mBAAmB;
|
|
1
|
+
{"version":3,"file":"SQLiteKnowledgeBase.js","sourceRoot":"","sources":["../../src/knowledge/SQLiteKnowledgeBase.ts"],"names":[],"mappings":"AAAA,uCAAuC;AACvC,2DAA2D;AAC3D,2CAA2C;AAE3C,OAAO,QAAQ,MAAM,gBAAgB,CAAA;AAIrC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAA;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAA;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAEnC,MAAM,SAAS,GAAG;;;;;;;;;;;;;;;;;;;;;;CAsBjB,CAAA;AAmBD,MAAM,OAAO,mBAAmB;IAK9B,YACU,QAAmB,EAC3B,OAA4B,EAAE;QADtB,aAAQ,GAAR,QAAQ,CAAW;QAJrB,QAAG,GAAG,CAAC,CAAA;QACP,eAAU,GAAsB,IAAI,CAAA;QAM1C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,qBAAqB,CAAA;QACnD,SAAS,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;QAE/C,IAAI,CAAC,EAAE,GAAG,IAAI,QAAQ,CAAC,MAAM,CAAC,CAAA;QAC9B,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAA;QACpC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAA;QACrC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAEvB,0BAA0B;QAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,mEAAmE,CACpE,CAAC,GAAG,EAAgC,CAAA;QACrC,IAAI,MAAM,EAAE,CAAC;YACX,MAAM,KAAK,GAAG,MAAM,CAAC,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAClC,IAAI,CAAC,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;QACvD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,GAAG,CACP,KAA6E;QAE7E,MAAM,KAAK,GAAmB;YAC5B,GAAG,KAAK;YACR,EAAE,EAAE,IAAI,CAAC,UAAU,EAAE;YACrB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,WAAW,EAAE,CAAC;YACd,SAAS,EAAE,GAAG;SACf,CAAA;QAED,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC;;;;;;KAMf,CAAC,CAAC,GAAG,CACJ,KAAK,CAAC,EAAE,EACR,KAAK,CAAC,IAAI,EACV,KAAK,CAAC,KAAK,EACX,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAC1B,KAAK,CAAC,UAAU,EAChB,KAAK,CAAC,WAAW,IAAI,IAAI,EACzB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,WAAW,EACjB,KAAK,CAAC,YAAY,IAAI,IAAI,EAC1B,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,EACtB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,UAAU,IAAI,IAAI,EACxB,KAAK,CAAC,SAAS,EACf,KAAK,CAAC,cAAc,IAAI,IAAI,CAC7B,CAAA;QAED,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE,KAAK,CAAC,cAAc,EAAE,CAAC,CAAA;QAEnG,sBAAsB;QACtB,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAClG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAA;QACxC,CAAC;QAED,OAAO,KAAK,CAAA;IACd,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAqB;QAChC,MAAM,UAAU,GAAa,CAAC,KAAK,CAAC,CAAA;QACpC,MAAM,MAAM,GAAc,EAAE,CAAA;QAE5B,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;YACnE,UAAU,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAC9D,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,CAAA;QACvB,CAAC;QAED,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxC,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;gBAC7B,UAAU,CAAC,IAAI,CAAC,aAAa,CAAC,CAAA;gBAC9B,MAAM,CAAC,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,CAAA;YAC3B,CAAC;QACH,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,KAAK,SAAS,EAAE,CAAC;YACrC,UAAU,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAA;YACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAA;QACjC,CAAC;QAED,IAAI,KAAK,CAAC,YAAY,EAAE,CAAC;YACvB,UAAU,CAAC,IAAI,CAAC,cAAc,CAAC,CAAA;QACjC,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,IAAI,EAAE,CAAA;QAC/B,MAAM,GAAG,GAAG,yCAAyC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,kCAAkC,CAAA;QAC/G,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QAElB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM,CAAY,CAAA;QAC3D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAA;IACzC,CAAC;IAED,KAAK,CAAC,cAAc,CAAC,IAAY,EAAE,IAAY;QAC7C,0CAA0C;QAC1C,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YACrB,IAAI,CAAC,UAAU,GAAG,IAAI,UAAU,EAAE,CAAA;YAClC,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,EAAa,CAAA;YAC3G,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,CAAC,CAAA;YACnC,MAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,MAAM,EAAE,EAAE,oBAAoB,CAAC,CAAA;QAC/D,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAClD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,EAAE,kCAAkC,CAAC,CAAA;YAChE,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,YAAY,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;QACzD,CAAC;QAED,MAAM,OAAO,GAAqB,EAAE,CAAA;QACpC,KAAK,MAAM,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,OAAO,EAAE,CAAC;YACpC,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAsB,CAAA;YACxG,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;gBAC/B,sCAAsC;gBACtC,KAAK,CAAC,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAA;gBAC5D,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;YACrB,CAAC;QACH,CAAC;QAED,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,EAAE,EAAE,yBAAyB,CAAC,CAAA;QAChF,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,SAAiB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAsB,CAAA;QACxG,IAAI,CAAC,GAAG;YAAE,OAAM;QAEhB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC,CAAA;QACtD,MAAM,QAAQ,GAAG,GAAG,CAAC,YAAY,GAAG,CAAC,CAAA;QACrC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QAEtB,IAAI,CAAC,EAAE,CAAC,OAAO,CACb,8FAA8F,CAC/F,CAAC,GAAG,CAAC,YAAY,EAAE,QAAQ,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;QAEtC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,EAAU,EAAE,SAAiB;QAC7C,MAAM,GAAG,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,8CAA8C,CAAC,CAAC,GAAG,CAAC,EAAE,CAAsB,CAAA;QACxG,IAAI,CAAC,GAAG;YAAE,OAAM;QAEhB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,CAAA;QACxD,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,CAAC,CAAA;QAChG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,gBAAgB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAA;IACvE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,EAAU,EAAE,UAAkB;QACzC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,MAAM,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAC5B,0FAA0F,CAC3F,CAAC,GAAG,CAAC,UAAU,EAAE,GAAG,EAAE,EAAE,CAAC,CAAA;QAE1B,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;YACvB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,UAAU,EAAE,CAAC,CAAA;QACrE,CAAC;IACH,CAAC;IAED,KAAK,CAAC,KAAK;QACT,MAAM,GAAG,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAA;QAC/B,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAA;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,4DAA4D,CAAC,CAAC,GAAG,EAI5F,CAAA;QAEF,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,yDAAyD,CAAC,CAAA;QACvF,MAAM,SAAS,GAAG,IAAI,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACzC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,IAAI,GAAG,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,GAAG,GAAG,GAAG,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC,EAAE,CAAA;gBACrE,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,GAAG,EAAE,CAAC,CAAA;gBACpC,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,GAAG,CAAC,SAAS,GAAG,IAAI,GAAG,OAAO,GAAG,IAAI,CAAC,CAAA;gBAC1E,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,GAAG,CAAC,EAAE,CAAC,CAAA;YAChC,CAAC;QACH,CAAC,CAAC,CAAA;QACF,SAAS,EAAE,CAAA;IACb,CAAC;IAED,gCAAgC;IAChC,KAAK;QACH,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAA;IACjB,CAAC;IAED,gBAAgB;IAChB,KAAK;QACH,MAAM,UAAU,GAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,6CAA6C,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAA;QAC5G,MAAM,aAAa,GAAI,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,gEAAgE,CAAC,CAAC,GAAG,EAAoB,CAAC,CAAC,CAAA;QAClI,MAAM,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,iEAAiE,CAAC,CAAC,GAAG,EAAmC,CAAA;QACtI,MAAM,MAAM,GAA2B,EAAE,CAAA;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI;YAAE,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1C,OAAO,EAAE,UAAU,EAAE,aAAa,EAAE,MAAM,EAAE,CAAA;IAC9C,CAAC;IAEO,UAAU;QAChB,IAAI,CAAC,GAAG,GAAG,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,KAAK,CAAA;QACjC,OAAO,MAAM,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAA;IACnE,CAAC;IAEO,OAAO,CAAC,GAAU;QACxB,OAAO;YACL,EAAE,EAAE,GAAG,CAAC,EAAE;YACV,IAAI,EAAE,GAAG,CAAC,IAA8B;YACxC,KAAK,EAAE,GAAG,CAAC,KAAK;YAChB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAa;YACtC,UAAU,EAAE,GAAG,CAAC,WAAW;YAC3B,WAAW,EAAE,GAAG,CAAC,YAAY,IAAI,SAAS;YAC1C,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,WAAW,EAAE,GAAG,CAAC,YAAY;YAC7B,YAAY,EAAE,GAAG,CAAC,aAAa,IAAI,SAAS;YAC5C,QAAQ,EAAE,GAAG,CAAC,QAAQ,KAAK,CAAC;YAC5B,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACxC,UAAU,EAAE,GAAG,CAAC,WAAW,IAAI,SAAS;YACxC,SAAS,EAAE,GAAG,CAAC,UAAU;YACzB,cAAc,EAAE,GAAG,CAAC,eAAe,IAAI,SAAS;SACjD,CAAA;IACH,CAAC;CACF"}
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export interface TfidfSearchResult {
|
|
2
|
+
id: string;
|
|
3
|
+
score: number;
|
|
4
|
+
}
|
|
5
|
+
export declare class TfidfIndex {
|
|
6
|
+
private docTerms;
|
|
7
|
+
private docFreq;
|
|
8
|
+
private docCount;
|
|
9
|
+
/**
|
|
10
|
+
* 添加/更新文档到索引
|
|
11
|
+
*/
|
|
12
|
+
upsert(id: string, text: string): void;
|
|
13
|
+
/**
|
|
14
|
+
* 从索引中移除文档
|
|
15
|
+
*/
|
|
16
|
+
remove(id: string): void;
|
|
17
|
+
/**
|
|
18
|
+
* 搜索最相似的 topK 个文档
|
|
19
|
+
*/
|
|
20
|
+
search(query: string, topK: number): TfidfSearchResult[];
|
|
21
|
+
/**
|
|
22
|
+
* 从行数据批量构建索引
|
|
23
|
+
*/
|
|
24
|
+
buildFromRows(rows: Array<{
|
|
25
|
+
id: string;
|
|
26
|
+
title: string;
|
|
27
|
+
tags: string;
|
|
28
|
+
content_ref: string;
|
|
29
|
+
}>): void;
|
|
30
|
+
/**
|
|
31
|
+
* 清空索引
|
|
32
|
+
*/
|
|
33
|
+
clear(): void;
|
|
34
|
+
/**
|
|
35
|
+
* 获取索引大小
|
|
36
|
+
*/
|
|
37
|
+
get size(): number;
|
|
38
|
+
/**
|
|
39
|
+
* 分词:小写 + 按非字母数字分割 + 过滤停用词和短词
|
|
40
|
+
*/
|
|
41
|
+
private tokenize;
|
|
42
|
+
/**
|
|
43
|
+
* 计算 TF-IDF 向量
|
|
44
|
+
*/
|
|
45
|
+
private tfidfVector;
|
|
46
|
+
/**
|
|
47
|
+
* 计算余弦相似度
|
|
48
|
+
*/
|
|
49
|
+
private cosineSimilarity;
|
|
50
|
+
}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
// SCALE Engine — TF-IDF Index
|
|
2
|
+
// 本地向量搜索,零外部依赖,基于 TF-IDF + 余弦相似度
|
|
3
|
+
export class TfidfIndex {
|
|
4
|
+
constructor() {
|
|
5
|
+
this.docTerms = new Map();
|
|
6
|
+
this.docFreq = new Map(); // term → 出现在多少文档中
|
|
7
|
+
this.docCount = 0;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* 添加/更新文档到索引
|
|
11
|
+
*/
|
|
12
|
+
upsert(id, text) {
|
|
13
|
+
// 如果已存在,先移除旧的
|
|
14
|
+
if (this.docTerms.has(id)) {
|
|
15
|
+
this.remove(id);
|
|
16
|
+
}
|
|
17
|
+
const terms = this.tokenize(text);
|
|
18
|
+
this.docTerms.set(id, terms);
|
|
19
|
+
this.docCount++;
|
|
20
|
+
// 更新文档频率
|
|
21
|
+
const uniqueTerms = new Set(terms);
|
|
22
|
+
for (const term of uniqueTerms) {
|
|
23
|
+
this.docFreq.set(term, (this.docFreq.get(term) ?? 0) + 1);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* 从索引中移除文档
|
|
28
|
+
*/
|
|
29
|
+
remove(id) {
|
|
30
|
+
const terms = this.docTerms.get(id);
|
|
31
|
+
if (!terms)
|
|
32
|
+
return;
|
|
33
|
+
const uniqueTerms = new Set(terms);
|
|
34
|
+
for (const term of uniqueTerms) {
|
|
35
|
+
const count = this.docFreq.get(term) ?? 0;
|
|
36
|
+
if (count <= 1) {
|
|
37
|
+
this.docFreq.delete(term);
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.docFreq.set(term, count - 1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
this.docTerms.delete(id);
|
|
44
|
+
this.docCount--;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* 搜索最相似的 topK 个文档
|
|
48
|
+
*/
|
|
49
|
+
search(query, topK) {
|
|
50
|
+
if (this.docCount === 0)
|
|
51
|
+
return [];
|
|
52
|
+
const queryTerms = this.tokenize(query);
|
|
53
|
+
if (queryTerms.length === 0)
|
|
54
|
+
return [];
|
|
55
|
+
const queryVec = this.tfidfVector(queryTerms);
|
|
56
|
+
if (queryVec.size === 0)
|
|
57
|
+
return [];
|
|
58
|
+
const results = [];
|
|
59
|
+
for (const [id, docTerms] of this.docTerms) {
|
|
60
|
+
const docVec = this.tfidfVector(docTerms);
|
|
61
|
+
const score = this.cosineSimilarity(queryVec, docVec);
|
|
62
|
+
if (score > 0) {
|
|
63
|
+
results.push({ id, score });
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// 按分数降序排序
|
|
67
|
+
results.sort((a, b) => b.score - a.score);
|
|
68
|
+
return results.slice(0, topK);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* 从行数据批量构建索引
|
|
72
|
+
*/
|
|
73
|
+
buildFromRows(rows) {
|
|
74
|
+
this.clear();
|
|
75
|
+
for (const row of rows) {
|
|
76
|
+
// 组合 title + tags + content_ref 作为搜索文本
|
|
77
|
+
const text = [row.title, row.tags, row.content_ref].filter(Boolean).join(' ');
|
|
78
|
+
this.upsert(row.id, text);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* 清空索引
|
|
83
|
+
*/
|
|
84
|
+
clear() {
|
|
85
|
+
this.docTerms.clear();
|
|
86
|
+
this.docFreq.clear();
|
|
87
|
+
this.docCount = 0;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* 获取索引大小
|
|
91
|
+
*/
|
|
92
|
+
get size() {
|
|
93
|
+
return this.docCount;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* 分词:小写 + 按非字母数字分割 + 过滤停用词和短词
|
|
97
|
+
*/
|
|
98
|
+
tokenize(text) {
|
|
99
|
+
const stopWords = new Set([
|
|
100
|
+
'the', 'a', 'an', 'is', 'are', 'was', 'were', 'be', 'been', 'being',
|
|
101
|
+
'have', 'has', 'had', 'do', 'does', 'did', 'will', 'would', 'could',
|
|
102
|
+
'should', 'may', 'might', 'shall', 'can', 'need', 'dare', 'ought',
|
|
103
|
+
'and', 'or', 'but', 'if', 'then', 'else', 'when', 'at', 'from',
|
|
104
|
+
'by', 'for', 'with', 'about', 'against', 'between', 'through',
|
|
105
|
+
'during', 'before', 'after', 'above', 'below', 'to', 'from',
|
|
106
|
+
'up', 'down', 'in', 'out', 'on', 'off', 'over', 'under',
|
|
107
|
+
'again', 'further', 'then', 'once', 'here', 'there', 'when',
|
|
108
|
+
'where', 'why', 'how', 'all', 'both', 'each', 'few', 'more',
|
|
109
|
+
'most', 'other', 'some', 'such', 'no', 'nor', 'not', 'only',
|
|
110
|
+
'own', 'same', 'so', 'than', 'too', 'very', 's', 't', 'just',
|
|
111
|
+
'don', 'now',
|
|
112
|
+
// 中文停用词
|
|
113
|
+
'的', '了', '在', '是', '我', '有', '和', '就', '不', '人', '都',
|
|
114
|
+
'一', '一个', '上', '也', '很', '到', '说', '要', '去', '你',
|
|
115
|
+
'会', '着', '没有', '看', '好', '自己', '这',
|
|
116
|
+
]);
|
|
117
|
+
const rawTokens = text
|
|
118
|
+
.toLowerCase()
|
|
119
|
+
.split(/[^a-z0-9一-鿿]+/)
|
|
120
|
+
.filter(token => token && !stopWords.has(token));
|
|
121
|
+
const tokens = [];
|
|
122
|
+
for (const token of rawTokens) {
|
|
123
|
+
if (/[一-鿿]/.test(token)) {
|
|
124
|
+
// CJK: emit each character as a token (words aren't space-separated)
|
|
125
|
+
for (const ch of token) {
|
|
126
|
+
if (/[一-鿿]/.test(ch))
|
|
127
|
+
tokens.push(ch);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
else if (token.length >= 2) {
|
|
131
|
+
tokens.push(token);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return tokens;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* 计算 TF-IDF 向量
|
|
138
|
+
*/
|
|
139
|
+
tfidfVector(terms) {
|
|
140
|
+
const tfidf = new Map();
|
|
141
|
+
const uniqueTerms = new Set(terms);
|
|
142
|
+
// 计算词频 (TF)
|
|
143
|
+
const tf = new Map();
|
|
144
|
+
for (const term of terms) {
|
|
145
|
+
tf.set(term, (tf.get(term) ?? 0) + 1);
|
|
146
|
+
}
|
|
147
|
+
for (const term of uniqueTerms) {
|
|
148
|
+
const termFreq = (tf.get(term) ?? 0) / terms.length;
|
|
149
|
+
const docFreq = this.docFreq.get(term) ?? 0;
|
|
150
|
+
const idf = docFreq > 0 ? Math.log(this.docCount / docFreq) : 0;
|
|
151
|
+
const weight = termFreq * idf;
|
|
152
|
+
if (weight > 0)
|
|
153
|
+
tfidf.set(term, weight);
|
|
154
|
+
}
|
|
155
|
+
return tfidf;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* 计算余弦相似度
|
|
159
|
+
*/
|
|
160
|
+
cosineSimilarity(a, b) {
|
|
161
|
+
if (a.size === 0 || b.size === 0)
|
|
162
|
+
return 0;
|
|
163
|
+
// 点积
|
|
164
|
+
let dot = 0;
|
|
165
|
+
for (const [term, weight] of a) {
|
|
166
|
+
if (b.has(term))
|
|
167
|
+
dot += weight * b.get(term);
|
|
168
|
+
}
|
|
169
|
+
// 模
|
|
170
|
+
const magA = Math.sqrt(Array.from(a.values()).reduce((s, w) => s + w * w, 0));
|
|
171
|
+
const magB = Math.sqrt(Array.from(b.values()).reduce((s, w) => s + w * w, 0));
|
|
172
|
+
if (magA === 0 || magB === 0)
|
|
173
|
+
return 0;
|
|
174
|
+
return dot / (magA * magB);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
//# sourceMappingURL=TfidfIndex.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"TfidfIndex.js","sourceRoot":"","sources":["../../src/knowledge/TfidfIndex.ts"],"names":[],"mappings":"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"}
|
|
@@ -94,7 +94,7 @@ export class SkillDiscovery {
|
|
|
94
94
|
async discover(context) {
|
|
95
95
|
// 独立模式下无法执行发现功能
|
|
96
96
|
if (!this.registry) {
|
|
97
|
-
|
|
97
|
+
logger.warn('SkillDiscovery: registry not initialized, discover disabled');
|
|
98
98
|
return [];
|
|
99
99
|
}
|
|
100
100
|
const results = [];
|