Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .changeset/quiet-compaction-model.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"kilo-code": minor
---

Choose a separate model for conversation compaction in Context settings.
21 changes: 21 additions & 0 deletions packages/kilo-vscode/tests/unit/config-utils.test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -392,6 +392,27 @@ describe("ConfigState", () => {
})
})

it("sets and clears the compaction model without changing other settings", () => {
const s = new ConfigState()
const cfg: Config = {
model: "kilo/openai/gpt-4.1",
agent: { compaction: { prompt: "Keep task details" }, code: { model: "kilo/openai/gpt-4.1" } },
}
const model = "kilo/anthropic/claude-haiku-4-5"
s.handleConfigLoaded(cfg)
s.updateConfig({ agent: { compaction: { model } } })

expect(s.config).toEqual({
...cfg,
agent: { ...cfg.agent, compaction: { prompt: "Keep task details", model } },
})
s.updateConfig({ agent: { compaction: { model: null } } })

expect(s.config).toEqual(cfg)
expect(s.draft.agent?.compaction?.model).toBeNull()
expect(configUnsetPaths(s.draft)).toEqual([["agent", "compaction", "model"]])
})

describe("agent permission patches", () => {
it("merges nested per-agent permission patches into existing rules", () => {
const s = new ConfigState()
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,8 @@ import { IconButton } from "@kilocode/kilo-ui/icon-button"
import { useConfig } from "../../context/config"
import { useLanguage } from "../../context/language"
import { useMemory } from "../../context/memory"
import { parseModelString } from "../../../../src/shared/provider-model"
import { ModelSelectorBase } from "../shared/ModelSelector"
import SettingsRow from "./SettingsRow"

const ContextTab: Component = () => {
Expand Down Expand Up @@ -139,6 +141,24 @@ const ContextTab: Component = () => {
{language.t("settings.context.autoCompaction.title")}
</Switch>
</SettingsRow>
<SettingsRow
title={language.t("settings.context.compactionModel.title")}
description={language.t("settings.context.compactionModel.description")}
>
<ModelSelectorBase
value={parseModelString(config().agent?.compaction?.model ?? undefined)}
onSelect={(providerID, modelID) =>
updateConfig({
agent: { compaction: { model: providerID && modelID ? `${providerID}/${modelID}` : null } },
})
}
placement="bottom-start"
allowClear
clearLabel={language.t("settings.context.compactionModel.useChatModel")}
label={language.t("settings.context.compactionModel.title")}
description={language.t("settings.context.compactionModel.description")}
/>
</SettingsRow>
<SettingsRow
title={language.t("settings.context.compactionLimit.title")}
description={language.t("settings.context.compactionLimit.description")}
Expand Down
4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/ar.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/br.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/bs.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/da.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/de.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1086,6 +1086,10 @@ export const dict = {
"settings.context.autoCompaction.title": "Automatische Komprimierung",
"settings.context.autoCompaction.description": "Kontext automatisch komprimieren, bevor er das Limit erreicht",
"settings.context.compaction.title": "Komprimierung",
"settings.context.compactionModel.title": "Komprimierungsmodell",
"settings.context.compactionModel.description":
"Modell für die automatische und manuelle Komprimierung. Leer lassen, um das Chatmodell zu verwenden. Kosten, Geschwindigkeit und Zusammenfassungsqualität hängen vom Modell ab.",
"settings.context.compactionModel.useChatModel": "Chatmodell verwenden",
"settings.context.compactionLimit.title": "Limit für automatische Komprimierung",
"settings.context.compactionLimit.description":
"Komprimieren, wenn der Kontext diesen Prozentsatz des Modellfensters erreicht. Leer lassen, um nur den Sicherheitspuffer zu verwenden.",
Expand Down
4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/en.ts
Original file line number Diff line number Diff line change
Expand Up @@ -1038,6 +1038,10 @@ export const dict = {
"settings.context.autoCompaction.title": "Auto Compaction",
"settings.context.autoCompaction.description": "Automatically compact context before it reaches the limit",
"settings.context.compaction.title": "Compaction",
"settings.context.compactionModel.title": "Compaction model",
"settings.context.compactionModel.description":
"Model used for automatic and manual compaction. Leave unset to use the chat model. Cost, speed, and summary quality depend on the model.",
"settings.context.compactionModel.useChatModel": "Use chat model",
"settings.context.compactionLimit.title": "Auto Compaction Limit",
"settings.context.compactionLimit.description":
"Compact when context reaches this percentage of the model window. Leave blank to use the safety buffer only.",
Expand Down
4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/es.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/fa.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/fr.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/it.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/ja.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/ko.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/nl.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/no.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/pl.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/ru.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 4 additions & 0 deletions packages/kilo-vscode/webview-ui/src/i18n/th.ts

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Loading
Loading