Adds a new `skills.promptMode` config option to control how skills are injected into the system prompt: - `full` (default): Current behavior - inject all skill metadata - `compact`: Inject only skill names and truncated descriptions (~50% token reduction) - `lazy`: Minimal prompt - skills available via list_skills tool (near zero overhead) With 40+ skills installed, full mode uses ~3,700 tokens per request. Compact mode reduces this by ~50%, lazy mode reduces to near zero. Closes #3395
42 lines
1.1 KiB
TypeScript
42 lines
1.1 KiB
TypeScript
import { describe, expect, it } from "vitest";
|
|
import { buildWorkspaceSkillsPrompt } from "./skills/workspace.js";
|
|
import type { MoltbotConfig } from "../config/config.js";
|
|
|
|
describe("skills promptMode", () => {
|
|
const workspaceDir = "/tmp/test-workspace";
|
|
|
|
it("uses full mode by default", () => {
|
|
const prompt = buildWorkspaceSkillsPrompt(workspaceDir, {
|
|
entries: [],
|
|
});
|
|
// Empty entries should return empty prompt
|
|
expect(prompt).toBe("");
|
|
});
|
|
|
|
it("uses compact mode when configured", () => {
|
|
const config: Partial<MoltbotConfig> = {
|
|
skills: {
|
|
promptMode: "compact",
|
|
},
|
|
};
|
|
const prompt = buildWorkspaceSkillsPrompt(workspaceDir, {
|
|
config: config as MoltbotConfig,
|
|
entries: [],
|
|
});
|
|
expect(prompt).toBe("");
|
|
});
|
|
|
|
it("uses lazy mode when configured", () => {
|
|
const config: Partial<MoltbotConfig> = {
|
|
skills: {
|
|
promptMode: "lazy",
|
|
},
|
|
};
|
|
const prompt = buildWorkspaceSkillsPrompt(workspaceDir, {
|
|
config: config as MoltbotConfig,
|
|
entries: [],
|
|
});
|
|
expect(prompt).toBe("");
|
|
});
|
|
});
|