feat: small-model utility calls on existing OpenCode providers (#2049)
Adds a server-side "small model" capability: direct, cheap LLM calls that reuse the user's existing OpenCode provider logins — the mechanism OpenCode uses internally for titles and summaries but does not expose through the SDK or plugins. Zero new dependencies; plain fetch with per-provider wire formats, credentials never leave the server. Core (packages/web/server/lib/small-model): - Resolution mirrors OpenCode's session scoping: explicit settings override → small_model from the OpenCode config → family scan within the session's provider → the session's own model. The global provider scan only serves callers without a session context, and background callers forbid it entirely (restrictToPreferredProvider), so conversation content never reaches a provider the user didn't pick — explicit choices excepted. - Per-provider auth replicating OpenCode's plugin loaders: GitHub Copilot (device token as bearer, no exchange), ChatGPT plan via the codex Responses API (single-flight OAuth refresh written back to auth.json), Anthropic messages, Google generateContent, generic OpenAI-compatible. - OpenCode's free models (opencode/big-pickle, *-free) are never called directly; unauthenticated providers are skipped by design. - Prompt clamping to the model's catalog context limit; thinking disabled where a wire switch exists (Z.AI/GLM, MiniMax-M3, Gemini Flash); robust content parsing with a clear error when a thinking model spends its whol budget on reasoning. - Settings → Sessions gains a Small Model group: use-default checkbox plus an override picker limited to authenticated providers, persisted with web/desktop/VS Code sanitization parity. Consumers: - Session assist: a server-side watcher on the global SSE hub generates a short recap and one suggested follow-up after a session idles quietly fo a minute, stored on session metadata (openchamber.assist). Freshness is keyed to the last assistant message id, so new activity invalidates the payload everywhere with no extra writes. The chat shows the recap under the last message after five quiet minutes and the suggestion as a dismissible chip above the composer (tap fills the input, never sends). Gated by a new Chat setting (default on) that is a hard generation switch. Language is anchored to the conversation itself, with a script-mismatch guard against model/backend language hallucination. - TTS: a third input mode, summarized — long replies are condensed to spoken prose before playback on any TTS engine. - Git: commit-message and PR generation moved off the active chat session onto the small model fed with real diffs and the commit list (bodies included), with a session-transport fallback for free-model-only setups. - Notes: Add to notes distills long selections into 1-3 dense sentences preserving exact identifiers, with verbatim fallback on failure. Fixes along the way: - The global event watcher now starts unconditionally; it was gated behind the desktop-notify env, leaving the server-side event hub dead in packaged apps. - OpenCode re-emits message.updated for old user messages after idle; the watcher no longer mistakes those for new activity. - Session metadata merges from a fresh read right before the PATCH, so writes made during the generation window (suggestion dismissals, review links) are preserved; the assist runtime stops during graceful shutdown.
This commit is contained in:
committed by
GitHub
parent
e5b03493da
commit
28f0736d69
@@ -1397,6 +1397,11 @@ export const settingsDict = {
|
||||
'settings.openchamber.defaults.field.defaultAgent': 'Default Agent',
|
||||
'settings.openchamber.defaults.field.showDeletionDialogAria': 'Show deletion dialog',
|
||||
'settings.openchamber.defaults.field.showDeletionDialog': 'Show Deletion Dialog',
|
||||
'settings.openchamber.defaults.smallModel.title': 'Small Model',
|
||||
'settings.openchamber.defaults.smallModel.description': 'A cheap model for quick utility tasks like short recaps and summaries.',
|
||||
'settings.openchamber.defaults.smallModel.useDefault': 'Use default small model',
|
||||
'settings.openchamber.defaults.smallModel.useDefaultAria': 'Use default small model',
|
||||
'settings.openchamber.defaults.smallModel.overrideModel': 'Override model',
|
||||
'settings.openchamber.defaults.field.openFilesPreviewAria': 'Open files in preview mode',
|
||||
'settings.openchamber.defaults.field.openFilesPreview': 'Open files in preview mode',
|
||||
'settings.openchamber.defaults.option.default': 'Default',
|
||||
@@ -1601,6 +1606,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.field.ttsInputMode': 'TTS Input Mode',
|
||||
'settings.voice.page.field.ttsInputModeSanitized': 'Sanitized',
|
||||
'settings.voice.page.field.ttsInputModeRaw': 'Raw Markdown',
|
||||
'settings.voice.page.field.ttsInputModeSummarized': 'summarized',
|
||||
'settings.openchamber.visual.section.colorMode': 'Color Mode',
|
||||
'settings.openchamber.visual.section.mobileLayout': 'Mobile Layout',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': 'Old',
|
||||
@@ -1684,6 +1690,8 @@ export const settingsDict = {
|
||||
'settings.openchamber.visual.field.userMessageRenderingAria': 'User message rendering: {option}',
|
||||
'settings.openchamber.visual.field.mermaidRenderingAria': 'Mermaid rendering: {option}',
|
||||
'settings.openchamber.visual.field.diffLayoutAria': 'Diff layout: {option}',
|
||||
'settings.openchamber.visual.field.sessionAssist': 'Generate Session Recap & Suggestion',
|
||||
'settings.openchamber.visual.field.sessionAssistAria': 'Generate a recap and a suggested reply after the agent finishes',
|
||||
'settings.openchamber.visual.field.showReasoningTracesAria': 'Show reasoning traces',
|
||||
'settings.openchamber.visual.field.showReasoningTraces': 'Show Reasoning Traces',
|
||||
'settings.openchamber.visual.field.collapsibleThinkingBlocksAria': 'Enable collapsible reasoning blocks',
|
||||
|
||||
@@ -1387,6 +1387,10 @@ export const dict = {
|
||||
'header.actions.toggleChangesPanelAria': 'Toggle changes panel',
|
||||
'header.actions.planWithShortcut': 'Plan ({shortcut})',
|
||||
'header.actions.terminalPanelWithShortcut': 'Terminal panel ({shortcut})',
|
||||
'chat.recap.aria': 'Session recap',
|
||||
'chat.recap.label': 'Recap:',
|
||||
'chat.suggestion.applyAria': 'Use suggested message',
|
||||
'chat.suggestion.dismissAria': 'Dismiss suggestion',
|
||||
'header.actions.toggleTerminalPanelAria': 'Toggle terminal panel',
|
||||
'terminalView.stream.processExitedMessage': '\r\n[Process exited{exitCodeSegment}{signalSegment}]\r\n',
|
||||
'terminalView.stream.processExitedWithCode': ' with code {exitCode}',
|
||||
|
||||
@@ -1363,6 +1363,11 @@ export const settingsDict = {
|
||||
"settings.openchamber.defaults.field.thinkingPlaceholder": "Pensando",
|
||||
"settings.openchamber.defaults.field.defaultAgent": "Agente por defecto",
|
||||
"settings.openchamber.defaults.field.showDeletionDialogAria": "Mostrar diálogo de eliminación",
|
||||
"settings.openchamber.defaults.smallModel.title": "Modelo pequeño",
|
||||
"settings.openchamber.defaults.smallModel.description": "Un modelo económico para tareas utilitarias rápidas, como recapitulaciones y resúmenes breves.",
|
||||
"settings.openchamber.defaults.smallModel.useDefault": "Usar el modelo pequeño predeterminado",
|
||||
"settings.openchamber.defaults.smallModel.useDefaultAria": "Usar el modelo pequeño predeterminado",
|
||||
"settings.openchamber.defaults.smallModel.overrideModel": "Modelo de anulación",
|
||||
"settings.openchamber.defaults.field.showDeletionDialog": "Mostrar diálogo de eliminación",
|
||||
"settings.openchamber.defaults.field.openFilesPreviewAria": "Abrir archivos en modo vista previa",
|
||||
"settings.openchamber.defaults.field.openFilesPreview": "Abrir archivos en modo vista previa",
|
||||
@@ -1568,6 +1573,7 @@ export const settingsDict = {
|
||||
"settings.voice.page.field.ttsInputMode": "Modo de entrada TTS",
|
||||
"settings.voice.page.field.ttsInputModeSanitized": "Texto limpio",
|
||||
"settings.voice.page.field.ttsInputModeRaw": "Markdown sin procesar",
|
||||
"settings.voice.page.field.ttsInputModeSummarized": "resumido",
|
||||
"settings.openchamber.visual.section.colorMode": "Modo de color",
|
||||
"settings.openchamber.visual.section.mobileLayout": "Diseño móvil",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Anterior",
|
||||
@@ -1651,6 +1657,8 @@ export const settingsDict = {
|
||||
"settings.openchamber.visual.field.userMessageRenderingAria": "Renderizado de mensajes del usuario: {option}",
|
||||
"settings.openchamber.visual.field.mermaidRenderingAria": "Renderizado de Mermaid: {option}",
|
||||
"settings.openchamber.visual.field.diffLayoutAria": "Diseño de comparación: {option}",
|
||||
"settings.openchamber.visual.field.sessionAssist": "Generar resumen y sugerencia de sesión",
|
||||
"settings.openchamber.visual.field.sessionAssistAria": "Generar un resumen y una respuesta sugerida cuando el agente termina",
|
||||
"settings.openchamber.visual.field.showReasoningTracesAria": "Mostrar rastros de razonamiento",
|
||||
"settings.openchamber.visual.field.showReasoningTraces": "Mostrar trazas de razonamiento",
|
||||
"settings.openchamber.visual.field.collapsibleThinkingBlocksAria": "Habilitar bloques de razonamiento colapsables",
|
||||
|
||||
@@ -1365,6 +1365,10 @@ export const dict: Record<I18nKey, string> = {
|
||||
"header.actions.toggleChangesPanelAria": "Alternar panel de cambios",
|
||||
"header.actions.planWithShortcut": "Plan ({shortcut})",
|
||||
"header.actions.terminalPanelWithShortcut": "Panel de terminal ({shortcut})",
|
||||
"chat.recap.aria": "Resumen de la sesión",
|
||||
"chat.recap.label": "Resumen:",
|
||||
"chat.suggestion.applyAria": "Usar mensaje sugerido",
|
||||
"chat.suggestion.dismissAria": "Descartar sugerencia",
|
||||
"header.actions.toggleTerminalPanelAria": "Mostrar u ocultar panel de terminal",
|
||||
"terminalView.stream.processExitedMessage": "\r\n[Proceso terminado{exitCodeSegment}{signalSegment}]\r\n",
|
||||
"terminalView.stream.processExitedWithCode": " con código {exitCode}",
|
||||
|
||||
@@ -1346,6 +1346,11 @@ export const settingsDict = {
|
||||
'settings.openchamber.defaults.field.thinkingPlaceholder': 'Pensée',
|
||||
'settings.openchamber.defaults.field.defaultAgent': 'Agent par défaut',
|
||||
'settings.openchamber.defaults.field.showDeletionDialogAria': 'Afficher la boîte de dialogue de suppression',
|
||||
'settings.openchamber.defaults.smallModel.title': 'Petit modèle',
|
||||
'settings.openchamber.defaults.smallModel.description': 'Un modèle économique pour les tâches utilitaires rapides, comme les récapitulatifs et résumés courts.',
|
||||
'settings.openchamber.defaults.smallModel.useDefault': 'Utiliser le petit modèle par défaut',
|
||||
'settings.openchamber.defaults.smallModel.useDefaultAria': 'Utiliser le petit modèle par défaut',
|
||||
'settings.openchamber.defaults.smallModel.overrideModel': 'Modèle de remplacement',
|
||||
'settings.openchamber.defaults.field.showDeletionDialog': 'Afficher la boîte de dialogue de suppression',
|
||||
'settings.openchamber.defaults.field.openFilesPreviewAria': 'Ouvrir les fichiers en mode aperçu',
|
||||
'settings.openchamber.defaults.field.openFilesPreview': 'Ouvrir les fichiers en mode aperçu',
|
||||
@@ -1619,6 +1624,8 @@ export const settingsDict = {
|
||||
'settings.openchamber.visual.field.userMessageRenderingAria': 'Rendu du message utilisateur : {option}',
|
||||
'settings.openchamber.visual.field.mermaidRenderingAria': 'Rendu Mermaid : {option}',
|
||||
'settings.openchamber.visual.field.diffLayoutAria': 'Disposition des différences : {option}',
|
||||
'settings.openchamber.visual.field.sessionAssist': 'Générer le récapitulatif et la suggestion de session',
|
||||
'settings.openchamber.visual.field.sessionAssistAria': "Générer un récapitulatif et une réponse suggérée quand l'agent termine",
|
||||
'settings.openchamber.visual.field.showReasoningTracesAria': 'Afficher les traces de raisonnement',
|
||||
'settings.openchamber.visual.field.showReasoningTraces': 'Afficher les traces de raisonnement',
|
||||
'settings.openchamber.visual.field.collapsibleThinkingBlocksAria': 'Activer les blocs de raisonnement pliables',
|
||||
@@ -1785,6 +1792,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.field.ttsInputMode': 'Mode d’entrée TTS',
|
||||
'settings.voice.page.field.ttsInputModeSanitized': 'Nettoyé',
|
||||
'settings.voice.page.field.ttsInputModeRaw': 'Markdown brut',
|
||||
'settings.voice.page.field.ttsInputModeSummarized': 'résumé',
|
||||
'settings.openchamber.visual.section.mobileLayout': 'Mise en page mobile',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': 'Ancienne',
|
||||
'settings.openchamber.visual.option.mobileLayout.new': 'Nouvelle',
|
||||
|
||||
@@ -1214,6 +1214,10 @@ export const dict = {
|
||||
"header.actions.toggleChangesPanelAria": "Basculer le panneau des changements",
|
||||
'header.actions.planWithShortcut': 'Forfait ({shortcut})',
|
||||
'header.actions.terminalPanelWithShortcut': 'Panneau à bornes ({shortcut})',
|
||||
'chat.recap.aria': 'Récapitulatif de la session',
|
||||
'chat.recap.label': 'Récap :',
|
||||
'chat.suggestion.applyAria': 'Utiliser le message suggéré',
|
||||
'chat.suggestion.dismissAria': 'Ignorer la suggestion',
|
||||
'header.actions.toggleTerminalPanelAria': 'Basculer le panneau à bornes',
|
||||
'terminalView.stream.processExitedMessage': '[Processus terminé{exitCodeSegment}{signalSegment}]',
|
||||
'terminalView.stream.processExitedWithCode': 'avec le code {exitCode}',
|
||||
|
||||
@@ -1396,6 +1396,11 @@ export const settingsDict = {
|
||||
'settings.openchamber.defaults.field.thinkingPlaceholder': '思考',
|
||||
'settings.openchamber.defaults.field.defaultAgent': 'デフォルト Agent',
|
||||
'settings.openchamber.defaults.field.showDeletionDialogAria': '削除ダイアログを表示',
|
||||
'settings.openchamber.defaults.smallModel.title': '小型モデル',
|
||||
'settings.openchamber.defaults.smallModel.description': '短い要約やまとめなどの軽いユーティリティタスク用の低コストモデルです。',
|
||||
'settings.openchamber.defaults.smallModel.useDefault': 'デフォルトの小型モデルを使用',
|
||||
'settings.openchamber.defaults.smallModel.useDefaultAria': 'デフォルトの小型モデルを使用',
|
||||
'settings.openchamber.defaults.smallModel.overrideModel': '上書きモデル',
|
||||
'settings.openchamber.defaults.field.showDeletionDialog': '削除ダイアログを表示',
|
||||
'settings.openchamber.defaults.field.openFilesPreviewAria': 'ファイルをプレビューモードで開く',
|
||||
'settings.openchamber.defaults.field.openFilesPreview': 'ファイルをプレビューモードで開く',
|
||||
@@ -1601,6 +1606,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.field.ttsInputMode': 'TTS 入力モード',
|
||||
'settings.voice.page.field.ttsInputModeSanitized': 'サニタイズ',
|
||||
'settings.voice.page.field.ttsInputModeRaw': '生 Markdown',
|
||||
'settings.voice.page.field.ttsInputModeSummarized': '要約',
|
||||
'settings.openchamber.visual.section.colorMode': 'カラーモード',
|
||||
'settings.openchamber.visual.section.mobileLayout': 'モバイルレイアウト',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '旧',
|
||||
@@ -1684,6 +1690,8 @@ export const settingsDict = {
|
||||
'settings.openchamber.visual.field.userMessageRenderingAria': 'ユーザーメッセージ表示: {option}',
|
||||
'settings.openchamber.visual.field.mermaidRenderingAria': 'Mermaid 表示: {option}',
|
||||
'settings.openchamber.visual.field.diffLayoutAria': 'Diff レイアウト: {option}',
|
||||
'settings.openchamber.visual.field.sessionAssist': 'セッションの要約と提案を生成',
|
||||
'settings.openchamber.visual.field.sessionAssistAria': 'エージェントの完了後に要約と返信の提案を生成します',
|
||||
'settings.openchamber.visual.field.showReasoningTracesAria': '推論トレースを表示',
|
||||
'settings.openchamber.visual.field.showReasoningTraces': '推論トレースを表示',
|
||||
'settings.openchamber.visual.field.collapsibleThinkingBlocksAria': '折りたたみ可能な推論ブロックを有効化',
|
||||
|
||||
@@ -1383,6 +1383,10 @@ export const dict: Record<I18nKey, string> = {
|
||||
'header.actions.toggleChangesPanelAria': '変更パネルの切り替え',
|
||||
'header.actions.planWithShortcut': '計画({shortcut})',
|
||||
'header.actions.terminalPanelWithShortcut': 'ターミナルパネル({shortcut})',
|
||||
'chat.recap.aria': 'セッションの要約',
|
||||
'chat.recap.label': '要約:',
|
||||
'chat.suggestion.applyAria': '提案されたメッセージを使用',
|
||||
'chat.suggestion.dismissAria': '提案を閉じる',
|
||||
'header.actions.toggleTerminalPanelAria': 'ターミナルパネルの切り替え',
|
||||
'terminalView.stream.processExitedMessage': '\r\n[プロセスが終了しました{exitCodeSegment}{signalSegment}]\r\n',
|
||||
'terminalView.stream.processExitedWithCode': ' コード {exitCode}',
|
||||
|
||||
@@ -1363,6 +1363,11 @@ export const settingsDict = {
|
||||
'settings.openchamber.defaults.field.thinkingPlaceholder': 'Thinking',
|
||||
'settings.openchamber.defaults.field.defaultAgent': '기본 에이전트',
|
||||
'settings.openchamber.defaults.field.showDeletionDialogAria': '삭제 확인 대화상자 표시',
|
||||
'settings.openchamber.defaults.smallModel.title': '소형 모델',
|
||||
'settings.openchamber.defaults.smallModel.description': '짧은 요약 등 가벼운 유틸리티 작업을 위한 저렴한 모델입니다.',
|
||||
'settings.openchamber.defaults.smallModel.useDefault': '기본 소형 모델 사용',
|
||||
'settings.openchamber.defaults.smallModel.useDefaultAria': '기본 소형 모델 사용',
|
||||
'settings.openchamber.defaults.smallModel.overrideModel': '재정의 모델',
|
||||
'settings.openchamber.defaults.field.showDeletionDialog': '삭제 확인 대화상자 표시',
|
||||
'settings.openchamber.defaults.field.openFilesPreviewAria': '파일을 미리보기 모드로 열기',
|
||||
'settings.openchamber.defaults.field.openFilesPreview': '파일을 미리보기 모드로 열기',
|
||||
@@ -1568,6 +1573,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.field.ttsInputMode': 'TTS 입력 모드',
|
||||
'settings.voice.page.field.ttsInputModeSanitized': '정제된 텍스트',
|
||||
'settings.voice.page.field.ttsInputModeRaw': '원본 Markdown',
|
||||
'settings.voice.page.field.ttsInputModeSummarized': '요약',
|
||||
'settings.openchamber.visual.section.colorMode': '색상 모드',
|
||||
'settings.openchamber.visual.section.mobileLayout': '모바일 레이아웃',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '이전',
|
||||
@@ -1651,6 +1657,8 @@ export const settingsDict = {
|
||||
'settings.openchamber.visual.field.userMessageRenderingAria': '사용자 메시지 렌더링: {option}',
|
||||
'settings.openchamber.visual.field.mermaidRenderingAria': 'Mermaid 렌더링: {option}',
|
||||
'settings.openchamber.visual.field.diffLayoutAria': 'Diff 레이아웃: {option}',
|
||||
'settings.openchamber.visual.field.sessionAssist': '세션 요약 및 제안 생성',
|
||||
'settings.openchamber.visual.field.sessionAssistAria': '에이전트가 완료되면 요약과 제안 답장을 생성합니다',
|
||||
'settings.openchamber.visual.field.showReasoningTracesAria': 'Reasoning trace 표시',
|
||||
'settings.openchamber.visual.field.showReasoningTraces': 'Reasoning Trace 표시',
|
||||
'settings.openchamber.visual.field.collapsibleThinkingBlocksAria': '접을 수 있는 추론 블록 활성화',
|
||||
|
||||
@@ -1389,6 +1389,10 @@ export const dict: Record<I18nKey, string> = {
|
||||
"header.actions.toggleChangesPanelAria": "변경 패널 전환",
|
||||
'header.actions.planWithShortcut': '플랜 ({shortcut})',
|
||||
'header.actions.terminalPanelWithShortcut': '터미널 패널 ({shortcut})',
|
||||
'chat.recap.aria': '세션 요약',
|
||||
'chat.recap.label': '요약:',
|
||||
'chat.suggestion.applyAria': '제안된 메시지 사용',
|
||||
'chat.suggestion.dismissAria': '제안 닫기',
|
||||
'header.actions.toggleTerminalPanelAria': '토글 터미널 패널',
|
||||
'terminalView.stream.processExitedMessage': '\r\n[Process exited{exitCodeSegment}{signalSegment}]\r\n',
|
||||
'terminalView.stream.processExitedWithCode': ', 종료 코드 {exitCode}',
|
||||
|
||||
@@ -678,6 +678,11 @@ export const settingsDict = {
|
||||
'settings.openchamber.defaults.field.openFilesPreviewAria': 'Otwieraj pliki w trybie podglądu',
|
||||
'settings.openchamber.defaults.field.showDeletionDialog': 'Pokaż dialog usuwania',
|
||||
'settings.openchamber.defaults.field.showDeletionDialogAria': 'Pokaż dialog usuwania',
|
||||
'settings.openchamber.defaults.smallModel.title': 'Mały model',
|
||||
'settings.openchamber.defaults.smallModel.description': 'Tani model do szybkich zadań pomocniczych, takich jak krótkie podsumowania.',
|
||||
'settings.openchamber.defaults.smallModel.useDefault': 'Używaj domyślnego małego modelu',
|
||||
'settings.openchamber.defaults.smallModel.useDefaultAria': 'Używaj domyślnego małego modelu',
|
||||
'settings.openchamber.defaults.smallModel.overrideModel': 'Model zastępczy',
|
||||
'settings.openchamber.defaults.field.thinkingPlaceholder': 'Myślenie',
|
||||
'settings.openchamber.defaults.option.default': 'Domyślne',
|
||||
'settings.openchamber.defaults.option.defaultLowercase': 'domyślne',
|
||||
@@ -969,6 +974,8 @@ export const settingsDict = {
|
||||
'settings.openchamber.visual.field.showDotfilesAria': 'Pokaż pliki ukryte',
|
||||
'settings.openchamber.visual.field.showExpandedBashToolsAria': 'Pokaż rozwinięte narzędzia bash',
|
||||
'settings.openchamber.visual.field.showExpandedEditToolsAria': 'Pokaż rozwinięte narzędzia edycji',
|
||||
'settings.openchamber.visual.field.sessionAssist': 'Generuj podsumowanie i sugestię sesji',
|
||||
'settings.openchamber.visual.field.sessionAssistAria': 'Generuj podsumowanie i sugerowaną odpowiedź po zakończeniu pracy agenta',
|
||||
'settings.openchamber.visual.field.showReasoningTraces': 'Pokaż ślady rozumowania',
|
||||
'settings.openchamber.visual.field.showReasoningTracesAria': 'Pokaż ślady rozumowania',
|
||||
'settings.openchamber.visual.field.collapsibleThinkingBlocks': 'Włącz zwijalne bloki rozumowania',
|
||||
@@ -1819,6 +1826,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.field.ttsInputMode': 'Tryb wejścia TTS',
|
||||
'settings.voice.page.field.ttsInputModeSanitized': 'Oczyszczony tekst',
|
||||
'settings.voice.page.field.ttsInputModeRaw': 'Surowy Markdown',
|
||||
'settings.voice.page.field.ttsInputModeSummarized': 'streszczony',
|
||||
'settings.window.description': 'Okno ustawień OpenChamber.',
|
||||
'settings.openchamber.visual.section.followUpBehavior': 'Follow-up behavior',
|
||||
'settings.openchamber.visual.section.followUpBehaviorAria': 'Follow-up behavior',
|
||||
|
||||
@@ -2061,6 +2061,10 @@ export const dict: Record<I18nKey, string> = {
|
||||
'header.actions.planWithShortcut': 'Plan ({shortcut})',
|
||||
'header.actions.rightSidebarWithShortcut': 'Prawy panel boczny ({shortcut})',
|
||||
'header.actions.terminalPanelWithShortcut': 'Panel terminala ({shortcut})',
|
||||
'chat.recap.aria': 'Podsumowanie sesji',
|
||||
'chat.recap.label': 'Podsumowanie:',
|
||||
'chat.suggestion.applyAria': 'Użyj sugerowanej wiadomości',
|
||||
'chat.suggestion.dismissAria': 'Odrzuć sugestię',
|
||||
'header.actions.toggleRightSidebarAria': 'Przełącz prawy panel boczny',
|
||||
'header.actions.toggleTerminalPanelAria': 'Przełącz panel terminala',
|
||||
'header.changes.availableAria': 'Dostępne zmiany',
|
||||
|
||||
@@ -1363,6 +1363,11 @@ export const settingsDict = {
|
||||
"settings.openchamber.defaults.field.thinkingPlaceholder": "Pensando",
|
||||
"settings.openchamber.defaults.field.defaultAgent": "Agente por padrão",
|
||||
"settings.openchamber.defaults.field.showDeletionDialogAria": "Mostrar diálogo de eliminación",
|
||||
"settings.openchamber.defaults.smallModel.title": "Modelo pequeno",
|
||||
"settings.openchamber.defaults.smallModel.description": "Um modelo barato para tarefas utilitárias rápidas, como recapitulações e resumos curtos.",
|
||||
"settings.openchamber.defaults.smallModel.useDefault": "Usar o modelo pequeno padrão",
|
||||
"settings.openchamber.defaults.smallModel.useDefaultAria": "Usar o modelo pequeno padrão",
|
||||
"settings.openchamber.defaults.smallModel.overrideModel": "Modelo de substituição",
|
||||
"settings.openchamber.defaults.field.showDeletionDialog": "Mostrar diálogo de eliminación",
|
||||
"settings.openchamber.defaults.field.openFilesPreviewAria": "Abrir arquivos em modo prévia",
|
||||
"settings.openchamber.defaults.field.openFilesPreview": "Abrir arquivos em modo prévia",
|
||||
@@ -1568,6 +1573,7 @@ export const settingsDict = {
|
||||
"settings.voice.page.field.ttsInputMode": "Modo de entrada TTS",
|
||||
"settings.voice.page.field.ttsInputModeSanitized": "Texto limpo",
|
||||
"settings.voice.page.field.ttsInputModeRaw": "Markdown bruto",
|
||||
"settings.voice.page.field.ttsInputModeSummarized": "resumido",
|
||||
"settings.openchamber.visual.section.colorMode": "Modo de cor",
|
||||
"settings.openchamber.visual.section.mobileLayout": "Layout móvel",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Anterior",
|
||||
@@ -1651,6 +1657,8 @@ export const settingsDict = {
|
||||
"settings.openchamber.visual.field.userMessageRenderingAria": "Renderizado de mensagens do usuário: {option}",
|
||||
"settings.openchamber.visual.field.mermaidRenderingAria": "Renderizado de Mermaid: {option}",
|
||||
"settings.openchamber.visual.field.diffLayoutAria": "Layout de comparação: {option}",
|
||||
"settings.openchamber.visual.field.sessionAssist": "Gerar resumo e sugestão da sessão",
|
||||
"settings.openchamber.visual.field.sessionAssistAria": "Gerar um resumo e uma resposta sugerida quando o agente termina",
|
||||
"settings.openchamber.visual.field.showReasoningTracesAria": "Mostrar rastros de raciocínio",
|
||||
"settings.openchamber.visual.field.showReasoningTraces": "Mostrar rastros de raciocínio",
|
||||
"settings.openchamber.visual.field.collapsibleThinkingBlocksAria": "Habilitar blocos de raciocínio recolhíveis",
|
||||
|
||||
@@ -1365,6 +1365,10 @@ export const dict: Record<I18nKey, string> = {
|
||||
"header.actions.toggleChangesPanelAria": "Alternar painel de alterações",
|
||||
"header.actions.planWithShortcut": "Plano ({shortcut})",
|
||||
"header.actions.terminalPanelWithShortcut": "Painel de terminal ({shortcut})",
|
||||
"chat.recap.aria": "Resumo da sessão",
|
||||
"chat.recap.label": "Resumo:",
|
||||
"chat.suggestion.applyAria": "Usar mensagem sugerida",
|
||||
"chat.suggestion.dismissAria": "Dispensar sugestão",
|
||||
"header.actions.toggleTerminalPanelAria": "Mostrar ou ocultar painel de terminal",
|
||||
"terminalView.stream.processExitedMessage": "\r\n[Processo encerrado{exitCodeSegment}{signalSegment}]\r\n",
|
||||
"terminalView.stream.processExitedWithCode": " com código {exitCode}",
|
||||
|
||||
@@ -1363,6 +1363,11 @@ export const settingsDict = {
|
||||
"settings.openchamber.defaults.field.thinkingPlaceholder": "Мислення",
|
||||
"settings.openchamber.defaults.field.defaultAgent": "Агент за замовчуванням",
|
||||
"settings.openchamber.defaults.field.showDeletionDialogAria": "Показати діалогове вікно видалення",
|
||||
"settings.openchamber.defaults.smallModel.title": "Мала модель",
|
||||
"settings.openchamber.defaults.smallModel.description": "Дешева модель для швидких службових задач — коротких підсумків і резюме.",
|
||||
"settings.openchamber.defaults.smallModel.useDefault": "Використовувати типову малу модель",
|
||||
"settings.openchamber.defaults.smallModel.useDefaultAria": "Використовувати типову малу модель",
|
||||
"settings.openchamber.defaults.smallModel.overrideModel": "Модель заміни",
|
||||
"settings.openchamber.defaults.field.showDeletionDialog": "Показати діалогове вікно видалення",
|
||||
"settings.openchamber.defaults.field.openFilesPreviewAria": "Відкривати файли в режимі попереднього перегляду",
|
||||
"settings.openchamber.defaults.field.openFilesPreview": "Відкривати файли в режимі попереднього перегляду",
|
||||
@@ -1568,6 +1573,7 @@ export const settingsDict = {
|
||||
"settings.voice.page.field.ttsInputMode": "Режим вводу TTS",
|
||||
"settings.voice.page.field.ttsInputModeSanitized": "Очищений текст",
|
||||
"settings.voice.page.field.ttsInputModeRaw": "Сирий Markdown",
|
||||
"settings.voice.page.field.ttsInputModeSummarized": "скорочений",
|
||||
"settings.openchamber.visual.section.colorMode": "Режим теми",
|
||||
"settings.openchamber.visual.section.mobileLayout": "Мобільний макет",
|
||||
"settings.openchamber.visual.option.mobileLayout.default": "Попередній",
|
||||
@@ -1651,6 +1657,8 @@ export const settingsDict = {
|
||||
"settings.openchamber.visual.field.userMessageRenderingAria": "Відображення повідомлень користувача: {option}",
|
||||
"settings.openchamber.visual.field.mermaidRenderingAria": "Візуалізація Mermaid: {option}",
|
||||
"settings.openchamber.visual.field.diffLayoutAria": "Компонування diff: {option}",
|
||||
"settings.openchamber.visual.field.sessionAssist": "Генерувати підсумок і пропозицію для сесії",
|
||||
"settings.openchamber.visual.field.sessionAssistAria": "Генерувати підсумок і запропоновану відповідь після завершення роботи агента",
|
||||
"settings.openchamber.visual.field.showReasoningTracesAria": "Показати сліди міркувань",
|
||||
"settings.openchamber.visual.field.showReasoningTraces": "Показати сліди міркувань",
|
||||
"settings.openchamber.visual.field.collapsibleThinkingBlocksAria": "Увімкнути згортальні блоки міркувань",
|
||||
|
||||
@@ -1365,6 +1365,10 @@ export const dict: Record<I18nKey, string> = {
|
||||
"header.actions.toggleChangesPanelAria": "Перемкнути панель змін",
|
||||
"header.actions.planWithShortcut": "План ({shortcut})",
|
||||
"header.actions.terminalPanelWithShortcut": "Термінальна панель ({shortcut})",
|
||||
"chat.recap.aria": "Підсумок сесії",
|
||||
"chat.recap.label": "Підсумок:",
|
||||
"chat.suggestion.applyAria": "Використати запропоноване повідомлення",
|
||||
"chat.suggestion.dismissAria": "Прибрати пропозицію",
|
||||
"header.actions.toggleTerminalPanelAria": "Перемкнути панель терміналу",
|
||||
"terminalView.stream.processExitedMessage": "\r\n[Process exited{exitCodeSegment}{signalSegment}]\r\n",
|
||||
"terminalView.stream.processExitedWithCode": " з кодом {exitCode}",
|
||||
|
||||
@@ -1363,6 +1363,11 @@ export const settingsDict = {
|
||||
'settings.openchamber.defaults.field.thinkingPlaceholder': '思考模式',
|
||||
'settings.openchamber.defaults.field.defaultAgent': '默认智能体',
|
||||
'settings.openchamber.defaults.field.showDeletionDialogAria': '显示删除对话框',
|
||||
'settings.openchamber.defaults.smallModel.title': '小模型',
|
||||
'settings.openchamber.defaults.smallModel.description': '用于快速实用任务(如简短回顾和摘要)的廉价模型。',
|
||||
'settings.openchamber.defaults.smallModel.useDefault': '使用默认小模型',
|
||||
'settings.openchamber.defaults.smallModel.useDefaultAria': '使用默认小模型',
|
||||
'settings.openchamber.defaults.smallModel.overrideModel': '覆盖模型',
|
||||
'settings.openchamber.defaults.field.showDeletionDialog': '显示删除对话框',
|
||||
'settings.openchamber.defaults.field.openFilesPreviewAria': '以预览模式打开文件',
|
||||
'settings.openchamber.defaults.field.openFilesPreview': '以预览模式打开文件',
|
||||
@@ -1568,6 +1573,7 @@ export const settingsDict = {
|
||||
'settings.voice.page.field.ttsInputMode': 'TTS 输入模式',
|
||||
'settings.voice.page.field.ttsInputModeSanitized': '清理后文本',
|
||||
'settings.voice.page.field.ttsInputModeRaw': '原始 Markdown',
|
||||
'settings.voice.page.field.ttsInputModeSummarized': '摘要',
|
||||
'settings.openchamber.visual.section.colorMode': '颜色模式',
|
||||
'settings.openchamber.visual.section.mobileLayout': '移动端布局',
|
||||
'settings.openchamber.visual.option.mobileLayout.default': '旧版',
|
||||
@@ -1651,6 +1657,8 @@ export const settingsDict = {
|
||||
'settings.openchamber.visual.field.userMessageRenderingAria': '用户消息渲染:{option}',
|
||||
'settings.openchamber.visual.field.mermaidRenderingAria': 'Mermaid 渲染:{option}',
|
||||
'settings.openchamber.visual.field.diffLayoutAria': '差异布局:{option}',
|
||||
'settings.openchamber.visual.field.sessionAssist': '生成会话回顾与建议',
|
||||
'settings.openchamber.visual.field.sessionAssistAria': '代理完成后生成回顾和建议回复',
|
||||
'settings.openchamber.visual.field.showReasoningTracesAria': '显示推理轨迹',
|
||||
'settings.openchamber.visual.field.showReasoningTraces': '显示推理轨迹',
|
||||
'settings.openchamber.visual.field.collapsibleThinkingBlocksAria': '启用可折叠推理块',
|
||||
|
||||
@@ -1353,6 +1353,10 @@ export const dict: Record<I18nKey, string> = {
|
||||
"header.actions.toggleChangesPanelAria": "切换更改面板",
|
||||
'header.actions.planWithShortcut': '计划({shortcut})',
|
||||
'header.actions.terminalPanelWithShortcut': '终端面板({shortcut})',
|
||||
'chat.recap.aria': '会话回顾',
|
||||
'chat.recap.label': '回顾:',
|
||||
'chat.suggestion.applyAria': '使用建议的消息',
|
||||
'chat.suggestion.dismissAria': '关闭建议',
|
||||
'header.actions.toggleTerminalPanelAria': '切换终端面板',
|
||||
'terminalView.stream.processExitedMessage': '\r\n[进程已退出{exitCodeSegment}{signalSegment}]\r\n',
|
||||
'terminalView.stream.processExitedWithCode': ',退出码 {exitCode}',
|
||||
|
||||
@@ -1279,6 +1279,11 @@
|
||||
'settings.openchamber.defaults.field.thinkingPlaceholder': '思考模式',
|
||||
'settings.openchamber.defaults.field.defaultAgent': '預設 Agent',
|
||||
'settings.openchamber.defaults.field.showDeletionDialogAria': '顯示刪除對話方塊',
|
||||
'settings.openchamber.defaults.smallModel.title': '小模型',
|
||||
'settings.openchamber.defaults.smallModel.description': '用於快速實用任務(如簡短回顧與摘要)的廉價模型。',
|
||||
'settings.openchamber.defaults.smallModel.useDefault': '使用預設小模型',
|
||||
'settings.openchamber.defaults.smallModel.useDefaultAria': '使用預設小模型',
|
||||
'settings.openchamber.defaults.smallModel.overrideModel': '覆寫模型',
|
||||
'settings.openchamber.defaults.field.showDeletionDialog': '顯示刪除對話方塊',
|
||||
'settings.openchamber.defaults.field.openFilesPreviewAria': '以預覽模式開啟檔案',
|
||||
'settings.openchamber.defaults.field.openFilesPreview': '以預覽模式開啟檔案',
|
||||
@@ -1484,6 +1489,7 @@
|
||||
'settings.voice.page.field.ttsInputMode': 'TTS 輸入模式',
|
||||
'settings.voice.page.field.ttsInputModeSanitized': '清理後文字',
|
||||
'settings.voice.page.field.ttsInputModeRaw': '原始 Markdown',
|
||||
'settings.voice.page.field.ttsInputModeSummarized': '摘要',
|
||||
'settings.openchamber.visual.section.colorMode': '顏色模式',
|
||||
'settings.openchamber.visual.section.localization': '在地化',
|
||||
'settings.openchamber.visual.section.spacingAndLayout': '間距與佈局',
|
||||
@@ -1567,6 +1573,8 @@
|
||||
'settings.openchamber.visual.field.userMessageRenderingAria': '使用者訊息渲染:{option}',
|
||||
'settings.openchamber.visual.field.mermaidRenderingAria': 'Mermaid 渲染:{option}',
|
||||
'settings.openchamber.visual.field.diffLayoutAria': '差異佈局:{option}',
|
||||
'settings.openchamber.visual.field.sessionAssist': '產生工作階段回顧與建議',
|
||||
'settings.openchamber.visual.field.sessionAssistAria': '代理完成後產生回顧與建議回覆',
|
||||
'settings.openchamber.visual.field.showReasoningTracesAria': '顯示推理軌跡',
|
||||
'settings.openchamber.visual.field.showReasoningTraces': '顯示推理軌跡',
|
||||
'settings.openchamber.visual.field.collapsibleThinkingBlocksAria': '啟用可摺疊推理區塊',
|
||||
|
||||
@@ -1357,6 +1357,10 @@ export const dict: Record<I18nKey, string> = {
|
||||
"header.actions.toggleChangesPanelAria": "切換變更面板",
|
||||
'header.actions.planWithShortcut': '計畫({shortcut})',
|
||||
'header.actions.terminalPanelWithShortcut': '終端機面板({shortcut})',
|
||||
'chat.recap.aria': '工作階段回顧',
|
||||
'chat.recap.label': '回顧:',
|
||||
'chat.suggestion.applyAria': '使用建議的訊息',
|
||||
'chat.suggestion.dismissAria': '關閉建議',
|
||||
'header.actions.toggleTerminalPanelAria': '切換終端機面板',
|
||||
'terminalView.stream.processExitedMessage': '\r\n[處理程序已結束{exitCodeSegment}{signalSegment}]\r\n',
|
||||
'terminalView.stream.processExitedWithCode': ',結束代碼 {exitCode}',
|
||||
|
||||
Reference in New Issue
Block a user