Move prompts into a layered data library with trigger-based assembly
Why: prompts lived inline in Go (profile const, subagent string, squad role one-liners, tool descriptions) - every copy change shipped code, and task guidance like meeting-minutes quality lived permanently in the base prompt whether or not the task was at hand. Evidence: new prompts package tests (library integrity, default assembly, skill triggering incl. attachment gate and command bypass, priority supersession, override chain drift, command match, frontmatter parse); composite make test green; runtime check on a live server (40 modules across 7 layers, override round-trip, /minutes starts a run instead of hitting the command bus). Impact: 40 builtin modules as embed data (5 base + 1 env + 12 task skills + 10 agent roles + 7 tool descriptions + 3 aux templates + 2 styles); migration v8 adds prompt_modules for user overrides with basedOnVersion drift markers; ctxasm assembles multi-segment system messages with per-module observability; subagent/squad/tool copy now resolve from the library with inline fallbacks; skill commands surface in the / menu and route to runs; default profile SystemPrompt empties onto the library base; pins deps/agent-system-core to the contract commit. Refs: feature/prompt-library task card; design guide in Documents.
This commit is contained in:
@@ -228,6 +228,15 @@ func init() {
|
||||
`CREATE INDEX IF NOT EXISTS idx_audit_op ON command_audit(operation_id)`,
|
||||
}},
|
||||
down: map[string][]string{"sqlite": {`DROP TABLE IF EXISTS command_audit`}, "postgres": {`DROP TABLE IF EXISTS command_audit`}}},
|
||||
migration{version: 8, name: "prompt_modules",
|
||||
// 提示词库用户覆盖(core.PromptModule):内置在 embed 库,本表只存
|
||||
// 用户副本/覆盖行(BasedOnVersion 供上游升级 drift 提示)。
|
||||
up: map[string][]string{"sqlite": {
|
||||
`CREATE TABLE IF NOT EXISTS prompt_modules (id TEXT NOT NULL, owner TEXT NOT NULL, payload TEXT NOT NULL, PRIMARY KEY(id, owner))`,
|
||||
}, "postgres": {
|
||||
`CREATE TABLE IF NOT EXISTS prompt_modules (id TEXT NOT NULL, owner TEXT NOT NULL, payload TEXT NOT NULL, PRIMARY KEY(id, owner))`,
|
||||
}},
|
||||
down: map[string][]string{"sqlite": {`DROP TABLE IF EXISTS prompt_modules`}, "postgres": {`DROP TABLE IF EXISTS prompt_modules`}}},
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user