/** * OpenViking 分层路由器 v4 * * 设计原则:大道至简 * - 工具按"能力包"分类,路由模型做分类选择题 * - core(read + exec)永远加载,保证 Agent 基础能力 * - Skills 只给名称列表,主模型需要时自己 read SKILL.md * - 路由模型看到 L0 时间线,判断是否需要加载 L1(指定日期)/L2 * - 路由失败自动回退全量 * * 放置位置: src/agents/viking-router.ts */ import type { Api, Model } from "@mariozechner/pi-ai"; import type { ModelRegistry } from "@mariozechner/pi-coding-agent"; import type { PromptMode } from "./system-prompt.ts"; export interface VikingRouteResult { tools: Set; files: Set; promptLayer: PromptMode; skillsMode: "names" | "summaries"; skipped: boolean; /** 是否需要加载 L1 关键决策 */ needsL1: boolean; /** 需要加载哪些日期的 L1 决策(空数组 = 不需要) */ l1Dates: string[]; /** 是否需要加载 L2 完整对话 */ needsL2: boolean; } interface AgentToolLike { name: string; description?: string; } export interface SkillIndexEntry { name: string; description: string; } export declare function vikingRoute(params: { prompt: string; tools: AgentToolLike[]; fileNames: string[]; skills: SkillIndexEntry[]; model: Model; modelRegistry: ModelRegistry; provider: string; /** L0 时间线原始文本,供路由模型判断是否需要 L1/L2 */ timeline?: string; }): Promise; export declare function buildSkillNamesOnlyPrompt(skills: SkillIndexEntry[]): string; export {};