跳转到内容

LoadedConfig

loadConfig 顶层产物:合并配置 + 按层保留的 permissions + 装配后的 hooks。 契约的原始 permissions / hooks / mcpServers / policy / workspaceTrust 段 (contract-v0.6/v0.3/v0.4/v0.8)、http 段与 sandbox / update 段在合并前 被逐层抽取(段策略表 section-policy.ts),从不进入合并产物——此处以装配产物顶替同名键 (Omit 隔离两形态)。

  • Omit<MergedTansrConfig, | "permissions" | "hooks" | "mcpServers" | "policy" | "workspaceTrust" | "http" | "sandbox" | "update">

$schemaVersion: 1;
Omit.$schemaVersion

optional audit?: {
dir?: string;
enabled?: boolean;
};
optional dir?: string;
optional enabled?: boolean;
Omit.audit

optional budget?: {
maxTotalTokens?: number;
maxUsd?: number;
onExceeded: "block" | "warn";
};
optional maxTotalTokens?: number;
optional maxUsd?: number;
onExceeded: "block" | "warn";
Omit.budget

optional context?: {
activeScheme?: string;
schemes?: Record<string, {
displayName?: string;
origin?: string;
params?: Record<string, unknown>;
parentId?: string;
stage?: "test" | "production" | "experimental";
}>;
};
optional activeScheme?: string;
optional schemes?: Record<string, {
displayName?: string;
origin?: string;
params?: Record<string, unknown>;
parentId?: string;
stage?: "test" | "production" | "experimental";
}>;
Omit.context

optional effort?: "low" | "medium" | "high" | "max";
Omit.effort

fallbacks: Record<string, string[]>;
Omit.fallbacks

hooks: LoadedHooks;

hooks 段分层抽取产物(可直接喂 HookEngineOptions.hooks)


http: LoadedHttpSection;

http 段分层抽取产物(user/managed 被尊重,项目层忽略,远程 org 可下发,见 http-section.ts)


optional locale?: string;
Omit.locale

mcpServers: McpServerEntry[];

mcpServers 段分层抽取产物(可直接喂 attachMcpTools)


memory: LoadedMemorySection;

memory 段分层抽取产物(TMEM/1;user/managed 被尊重,项目层忽略,见 memory-section.ts)


optional model?: {
selected?: string;
};
optional selected?: string;
Omit.model

modelAliases: {
fast?: string;
main?: string;
reasoning?: string;
};
optional fast?: string;
optional main?: string;
optional reasoning?: string;
Omit.modelAliases

optional network?: {
twpIdleTimeoutMs?: number;
};
optional twpIdleTimeoutMs?: number;
Omit.network

optional outputStyle?: string;
Omit.outputStyle

permissions: LoadedPermissions;

policy: LoadedPolicySection;

policy 段分层抽取产物(contract-v0.8;仅 managed 层被尊重,见 managed-sections.ts)


providers: Record<string, {
auth?: {
env: string;
};
baseUrl: string;
capability?: {
background?: boolean;
defaultContextWithoutModifier?: number;
effectiveContext?: number;
hostedTools?: string[];
inputModalities?: {
document?: "supported" | "rejected" | "silently_dropped";
image?: "supported" | "rejected" | "silently_dropped";
};
maxContext?: number;
maxOutput?: number;
modelModifiers?: string[];
promptCaching?: {
maxBreakpoints?: number;
minCacheableTokens?: number;
mode?: "explicit" | "implicit" | "ignored";
ttlSeconds?: number;
};
quirks?: {
claudeModelNameMapping?: boolean;
countTokensEndpoint?: boolean;
maxTokensExcludesReasoning?: boolean;
minTimeoutMs?: number;
modelsEndpoint?: boolean;
stopSequences?: "ignored" | "honored" | "misreported_end_turn";
streamUsageLocation?: "message_start" | "message_delta" | "both";
systemRoleInMessages?: boolean;
unknownModelFallback?: boolean;
};
reasoning?: boolean;
sampling?: {
temperature?: {
clampEpsilon?: number;
max?: number;
maxExclusive?: boolean;
min?: number;
minExclusive?: boolean;
};
temperatureFixed?: number;
temperatureRange?: [number, number];
};
thinking?: {
budgetTokens?: "ignored" | "honored";
cannotDisable?: boolean;
effortParam?: string;
mustEchoBack?: boolean;
signatureShape?: "opaque" | "always_empty" | "absent";
toggleValues?: string[];
};
thinkingOptional?: boolean;
toolChoice?: boolean;
vision?: boolean;
};
models: Record<string, string>;
pricing?: Record<string, {
cachedInputPerMillion?: number;
inputPerMillion: number;
outputPerMillion: number;
peakMultiplier?: number;
tiers?: {
cachedInputPerMillion?: number;
inputPerMillion: number;
outputPerMillion: number;
upToInputTokens?: number;
}[];
}>;
protocol: "anthropic" | "openai" | "openai-responses" | "twp";
}>;
Omit.providers

sandbox: LoadedSandboxSection;

sandbox 段分层抽取产物(user/managed 被尊重,项目层忽略,env 对 managed 只收紧,见 sandbox-section.ts)


optional semanticIndex?: {
branch?: string;
repoId?: string;
timeoutMs?: number;
topK?: number;
url?: string;
};
optional branch?: string;
optional repoId?: string;
optional timeoutMs?: number;
optional topK?: number;
optional url?: string;
Omit.semanticIndex

optional storage?: {
autoCheckpointBeforeCompact?: boolean;
checkpoints?: {
max?: number;
maxAgeDays?: number;
};
checkpointsDir?: string;
segmentation?: {
enabled?: boolean;
maxBytes?: number;
maxRecords?: number;
};
sessionsDir?: string;
};
optional autoCheckpointBeforeCompact?: boolean;
optional checkpoints?: {
max?: number;
maxAgeDays?: number;
};
optional max?: number;
optional maxAgeDays?: number;
optional checkpointsDir?: string;
optional segmentation?: {
enabled?: boolean;
maxBytes?: number;
maxRecords?: number;
};
optional enabled?: boolean;
optional maxBytes?: number;
optional maxRecords?: number;
optional sessionsDir?: string;
Omit.storage

telemetry: {
enabled: boolean;
};
enabled: boolean;
Omit.telemetry

optional ui?: {
theme?: "dark" | "light" | "high-contrast" | "colorblind";
};
optional theme?: "dark" | "light" | "high-contrast" | "colorblind";
Omit.ui

update: LoadedUpdateSection;

update 段分层抽取产物(user/managed 被尊重,项目层忽略,见 update-section.ts)


optional usageReporting?: {
enabled?: boolean;
};
optional enabled?: boolean;
Omit.usageReporting

optional verify?: {
command?: string;
timeoutMs?: number;
};
optional command?: string;
optional timeoutMs?: number;
Omit.verify

optional window?: {
byModel?: Record<string, number>;
};
optional byModel?: Record<string, number>;
Omit.window

workspaceTrust: LoadedWorkspaceTrust;

workspaceTrust 段分层抽取产物(contract-v0.8;仅 managed 层被尊重)