openclaw/src/agents/skills.prompt-mode.test.ts
cryptosquanch c9b192f12b feat(skills): add promptMode config for compact/lazy skill injection
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
2026-01-28 18:05:28 +03:00

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("");
});
});