mirror of
https://github.com/openclaw/openclaw.git
synced 2026-04-19 11:18:37 +00:00
refactor(agents): share model alias line builder
This commit is contained in:
@@ -11,6 +11,7 @@ import type { EmbeddedContextFile } from "../pi-embedded-helpers.js";
|
|||||||
import { runExec } from "../../process/exec.js";
|
import { runExec } from "../../process/exec.js";
|
||||||
import { buildTtsSystemPromptHint } from "../../tts/tts.js";
|
import { buildTtsSystemPromptHint } from "../../tts/tts.js";
|
||||||
import { escapeRegExp, isRecord } from "../../utils.js";
|
import { escapeRegExp, isRecord } from "../../utils.js";
|
||||||
|
import { buildModelAliasLines } from "../model-alias-lines.js";
|
||||||
import { resolveDefaultModelForAgent } from "../model-selection.js";
|
import { resolveDefaultModelForAgent } from "../model-selection.js";
|
||||||
import { detectRuntimeShell } from "../shell-utils.js";
|
import { detectRuntimeShell } from "../shell-utils.js";
|
||||||
import { buildSystemPromptParams } from "../system-prompt-params.js";
|
import { buildSystemPromptParams } from "../system-prompt-params.js";
|
||||||
@@ -251,25 +252,6 @@ export type CliOutput = {
|
|||||||
usage?: CliUsage;
|
usage?: CliUsage;
|
||||||
};
|
};
|
||||||
|
|
||||||
function buildModelAliasLines(cfg?: OpenClawConfig) {
|
|
||||||
const models = cfg?.agents?.defaults?.models ?? {};
|
|
||||||
const entries: Array<{ alias: string; model: string }> = [];
|
|
||||||
for (const [keyRaw, entryRaw] of Object.entries(models)) {
|
|
||||||
const model = String(keyRaw ?? "").trim();
|
|
||||||
if (!model) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const alias = String((entryRaw as { alias?: string } | undefined)?.alias ?? "").trim();
|
|
||||||
if (!alias) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
entries.push({ alias, model });
|
|
||||||
}
|
|
||||||
return entries
|
|
||||||
.toSorted((a, b) => a.alias.localeCompare(b.alias))
|
|
||||||
.map((entry) => `- ${entry.alias}: ${entry.model}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function buildSystemPrompt(params: {
|
export function buildSystemPrompt(params: {
|
||||||
workspaceDir: string;
|
workspaceDir: string;
|
||||||
config?: OpenClawConfig;
|
config?: OpenClawConfig;
|
||||||
|
|||||||
20
src/agents/model-alias-lines.ts
Normal file
20
src/agents/model-alias-lines.ts
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
import type { OpenClawConfig } from "../config/config.js";
|
||||||
|
|
||||||
|
export function buildModelAliasLines(cfg?: OpenClawConfig) {
|
||||||
|
const models = cfg?.agents?.defaults?.models ?? {};
|
||||||
|
const entries: Array<{ alias: string; model: string }> = [];
|
||||||
|
for (const [keyRaw, entryRaw] of Object.entries(models)) {
|
||||||
|
const model = String(keyRaw ?? "").trim();
|
||||||
|
if (!model) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
const alias = String((entryRaw as { alias?: string } | undefined)?.alias ?? "").trim();
|
||||||
|
if (!alias) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
entries.push({ alias, model });
|
||||||
|
}
|
||||||
|
return entries
|
||||||
|
.toSorted((a, b) => a.alias.localeCompare(b.alias))
|
||||||
|
.map((entry) => `- ${entry.alias}: ${entry.model}`);
|
||||||
|
}
|
||||||
@@ -3,6 +3,7 @@ import type { OpenClawConfig } from "../../config/config.js";
|
|||||||
import type { ModelDefinitionConfig } from "../../config/types.js";
|
import type { ModelDefinitionConfig } from "../../config/types.js";
|
||||||
import { resolveOpenClawAgentDir } from "../agent-paths.js";
|
import { resolveOpenClawAgentDir } from "../agent-paths.js";
|
||||||
import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js";
|
import { DEFAULT_CONTEXT_TOKENS } from "../defaults.js";
|
||||||
|
import { buildModelAliasLines } from "../model-alias-lines.js";
|
||||||
import { normalizeModelCompat } from "../model-compat.js";
|
import { normalizeModelCompat } from "../model-compat.js";
|
||||||
import { resolveForwardCompatModel } from "../model-forward-compat.js";
|
import { resolveForwardCompatModel } from "../model-forward-compat.js";
|
||||||
import { normalizeProviderId } from "../model-selection.js";
|
import { normalizeProviderId } from "../model-selection.js";
|
||||||
@@ -20,6 +21,8 @@ type InlineProviderConfig = {
|
|||||||
models?: ModelDefinitionConfig[];
|
models?: ModelDefinitionConfig[];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
export { buildModelAliasLines };
|
||||||
|
|
||||||
export function buildInlineProviderModels(
|
export function buildInlineProviderModels(
|
||||||
providers: Record<string, InlineProviderConfig>,
|
providers: Record<string, InlineProviderConfig>,
|
||||||
): InlineModelEntry[] {
|
): InlineModelEntry[] {
|
||||||
@@ -37,25 +40,6 @@ export function buildInlineProviderModels(
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export function buildModelAliasLines(cfg?: OpenClawConfig) {
|
|
||||||
const models = cfg?.agents?.defaults?.models ?? {};
|
|
||||||
const entries: Array<{ alias: string; model: string }> = [];
|
|
||||||
for (const [keyRaw, entryRaw] of Object.entries(models)) {
|
|
||||||
const model = String(keyRaw ?? "").trim();
|
|
||||||
if (!model) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
const alias = String((entryRaw as { alias?: string } | undefined)?.alias ?? "").trim();
|
|
||||||
if (!alias) {
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
entries.push({ alias, model });
|
|
||||||
}
|
|
||||||
return entries
|
|
||||||
.toSorted((a, b) => a.alias.localeCompare(b.alias))
|
|
||||||
.map((entry) => `- ${entry.alias}: ${entry.model}`);
|
|
||||||
}
|
|
||||||
|
|
||||||
export function resolveModel(
|
export function resolveModel(
|
||||||
provider: string,
|
provider: string,
|
||||||
modelId: string,
|
modelId: string,
|
||||||
|
|||||||
Reference in New Issue
Block a user