From b5f710d4a1caae1ac0ae1dcc102c4df4a0d6c6a9 Mon Sep 17 00:00:00 2001 From: "opencode-agent[bot]" Date: Wed, 11 Feb 2026 15:20:29 +0000 Subject: [PATCH 1/2] chore: generate --- packages/app/src/i18n/ar.ts | 47 ++++++++++++--------- packages/app/src/i18n/br.ts | 67 ++++++++++++++++++------------ packages/app/src/i18n/de.ts | 81 ++++++++++++++++++++++++------------- packages/app/src/i18n/pl.ts | 48 ++++++++++++++-------- packages/app/src/i18n/zh.ts | 18 +++++---- 5 files changed, 164 insertions(+), 97 deletions(-) diff --git a/packages/app/src/i18n/ar.ts b/packages/app/src/i18n/ar.ts index 24473bedaa84..e3792a3c3cc3 100644 --- a/packages/app/src/i18n/ar.ts +++ b/packages/app/src/i18n/ar.ts @@ -110,25 +110,30 @@ export const dict = { "provider.connect.status.inProgress": "جارٍ التفويض...", "provider.connect.status.waiting": "في انتظار التفويض...", "provider.connect.status.failed": "فشل التفويض: {{error}}", - "provider.connect.apiKey.description": "أدخل مفتاح واجهة برمجة تطبيقات {{provider}} الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", + "provider.connect.apiKey.description": + "أدخل مفتاح واجهة برمجة تطبيقات {{provider}} الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", "provider.connect.apiKey.label": "مفتاح واجهة برمجة تطبيقات {{provider}}", "provider.connect.apiKey.placeholder": "مفتاح API", "provider.connect.apiKey.required": "مفتاح API مطلوب", - "provider.connect.opencodeZen.line1": "يمنحك OpenCode Zen الوصول إلى مجموعة مختارة من النماذج الموثوقة والمحسنة لوكلاء البرمجة.", - "provider.connect.opencodeZen.line2": "باستخدام مفتاح API واحد، ستحصل على إمكانية الوصول إلى نماذج مثل Claude و GPT و Gemini و GLM والمزيد.", + "provider.connect.opencodeZen.line1": + "يمنحك OpenCode Zen الوصول إلى مجموعة مختارة من النماذج الموثوقة والمحسنة لوكلاء البرمجة.", + "provider.connect.opencodeZen.line2": + "باستخدام مفتاح API واحد، ستحصل على إمكانية الوصول إلى نماذج مثل Claude و GPT و Gemini و GLM والمزيد.", "provider.connect.opencodeZen.visit.prefix": "قم بزيارة ", "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " للحصول على مفتاح API الخاص بك.", "provider.connect.oauth.code.visit.prefix": "قم بزيارة ", "provider.connect.oauth.code.visit.link": "هذا الرابط", - "provider.connect.oauth.code.visit.suffix": " للحصول على رمز التفويض الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", + "provider.connect.oauth.code.visit.suffix": + " للحصول على رمز التفويض الخاص بك لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", "provider.connect.oauth.code.label": "رمز تفويض {{method}}", "provider.connect.oauth.code.placeholder": "رمز التفويض", "provider.connect.oauth.code.required": "رمز التفويض مطلوب", "provider.connect.oauth.code.invalid": "رمز التفويض غير صالح", "provider.connect.oauth.auto.visit.prefix": "قم بزيارة ", "provider.connect.oauth.auto.visit.link": "هذا الرابط", - "provider.connect.oauth.auto.visit.suffix": " وأدخل الرمز أدناه لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", + "provider.connect.oauth.auto.visit.suffix": + " وأدخل الرمز أدناه لتوصيل حسابك واستخدام نماذج {{provider}} في OpenCode.", "provider.connect.oauth.auto.confirmationCode": "رمز التأكيد", "provider.connect.toast.connected.title": "تم توصيل {{provider}}", "provider.connect.toast.connected.description": "نماذج {{provider}} متاحة الآن للاستخدام.", @@ -200,7 +205,7 @@ export const dict = { "common.default": "افتراضي", "common.attachment": "مرفق", "prompt.placeholder.shell": "أدخل أمر shell...", - "prompt.placeholder.normal": "اسأل أي شيء... \"{{example}}\"", + "prompt.placeholder.normal": 'اسأل أي شيء... "{{example}}"', "prompt.placeholder.summarizeComments": "لخّص التعليقات…", "prompt.placeholder.summarizeComment": "لخّص التعليق…", "prompt.mode.shell": "Shell", @@ -278,7 +283,8 @@ export const dict = { "dialog.server.add.checking": "جارٍ التحقق...", "dialog.server.add.button": "إضافة خادم", "dialog.server.default.title": "الخادم الافتراضي", - "dialog.server.default.description": "الاتصال بهذا الخادم عند بدء تشغيل التطبيق بدلاً من بدء خادم محلي. يتطلب إعادة التشغيل.", + "dialog.server.default.description": + "الاتصال بهذا الخادم عند بدء تشغيل التطبيق بدلاً من بدء خادم محلي. يتطلب إعادة التشغيل.", "dialog.server.default.none": "لم يتم تحديد خادم", "dialog.server.default.set": "تعيين الخادم الحالي كافتراضي", "dialog.server.default.clear": "مسح", @@ -301,7 +307,7 @@ export const dict = { "dialog.project.edit.worktree.startup.description": "يتم تشغيله بعد إنشاء مساحة عمل جديدة (شجرة عمل).", "dialog.project.edit.worktree.startup.placeholder": "مثال: bun install", "context.breakdown.title": "تفصيل السياق", - "context.breakdown.note": "تفصيل تقريبي لرموز الإدخال. يشمل \"أخرى\" تعريفات الأدوات والنفقات العامة.", + "context.breakdown.note": 'تفصيل تقريبي لرموز الإدخال. يشمل "أخرى" تعريفات الأدوات والنفقات العامة.', "context.breakdown.system": "النظام", "context.breakdown.user": "المستخدم", "context.breakdown.assistant": "المساعد", @@ -388,7 +394,8 @@ export const dict = { "error.page.report.prefix": "يرجى الإبلاغ عن هذا الخطأ لفريق OpenCode", "error.page.report.discord": "على Discord", "error.page.version": "الإصدار: {{version}}", - "error.dev.rootNotFound": "لم يتم العثور على العنصر الجذري. هل نسيت إضافته إلى index.html؟ أو ربما تمت كتابة سمة id بشكل خاطئ؟", + "error.dev.rootNotFound": + "لم يتم العثور على العنصر الجذري. هل نسيت إضافته إلى index.html؟ أو ربما تمت كتابة سمة id بشكل خاطئ؟", "error.globalSync.connectFailed": "تعذر الاتصال بالخادم. هل هناك خادم يعمل في `{{url}}`؟", "directory.error.invalidUrl": "دليل غير صالح في عنوان URL.", "error.chain.unknown": "خطأ غير معروف", @@ -400,12 +407,13 @@ export const dict = { "error.chain.didYouMean": "هل كنت تعني: {{suggestions}}", "error.chain.modelNotFound": "النموذج غير موجود: {{provider}}/{{model}}", "error.chain.checkConfig": "تحقق من أسماء الموفر/النموذج في التكوين (opencode.json)", - "error.chain.mcpFailed": "فشل خادم MCP \"{{name}}\". لاحظ أن OpenCode لا يدعم مصادقة MCP بعد.", + "error.chain.mcpFailed": 'فشل خادم MCP "{{name}}". لاحظ أن OpenCode لا يدعم مصادقة MCP بعد.', "error.chain.providerAuthFailed": "فشلت مصادقة الموفر ({{provider}}): {{message}}", - "error.chain.providerInitFailed": "فشل تهيئة الموفر \"{{provider}}\". تحقق من بيانات الاعتماد والتكوين.", + "error.chain.providerInitFailed": 'فشل تهيئة الموفر "{{provider}}". تحقق من بيانات الاعتماد والتكوين.', "error.chain.configJsonInvalid": "ملف التكوين في {{path}} ليس JSON(C) صالحًا", "error.chain.configJsonInvalidWithMessage": "ملف التكوين في {{path}} ليس JSON(C) صالحًا: {{message}}", - "error.chain.configDirectoryTypo": "الدليل \"{{dir}}\" في {{path}} غير صالح. أعد تسمية الدليل إلى \"{{suggestion}}\" أو قم بإزالته. هذا خطأ مطبعي شائع.", + "error.chain.configDirectoryTypo": + 'الدليل "{{dir}}" في {{path}} غير صالح. أعد تسمية الدليل إلى "{{suggestion}}" أو قم بإزالته. هذا خطأ مطبعي شائع.', "error.chain.configFrontmatterError": "فشل تحليل frontmatter في {{path}}:\n{{message}}", "error.chain.configInvalid": "ملف التكوين في {{path}} غير صالح", "error.chain.configInvalidWithMessage": "ملف التكوين في {{path}} غير صالح: {{message}}", @@ -524,9 +532,10 @@ export const dict = { "settings.general.row.font.description": "تخصيص الخط الأحادي المستخدم في كتل التعليمات البرمجية", "settings.general.row.wayland.title": "استخدام Wayland الأصلي", "settings.general.row.wayland.description": "تعطيل التراجع إلى X11 على Wayland. يتطلب إعادة التشغيل.", - "settings.general.row.wayland.tooltip": "على Linux مع شاشات بمعدلات تحديث مختلطة، يمكن أن يكون Wayland الأصلي أكثر استقرارًا.", + "settings.general.row.wayland.tooltip": + "على Linux مع شاشات بمعدلات تحديث مختلطة، يمكن أن يكون Wayland الأصلي أكثر استقرارًا.", "settings.general.row.releaseNotes.title": "ملاحظات الإصدار", - "settings.general.row.releaseNotes.description": "عرض نوافذ \"ما الجديد\" المنبثقة بعد التحديثات", + "settings.general.row.releaseNotes.description": 'عرض نوافذ "ما الجديد" المنبثقة بعد التحديثات', "settings.updates.row.startup.title": "التحقق من التحديثات عند بدء التشغيل", "settings.updates.row.startup.description": "التحقق تلقائيًا من التحديثات عند تشغيل OpenCode", "settings.updates.row.check.title": "التحقق من التحديثات", @@ -647,7 +656,8 @@ export const dict = { "settings.permissions.tool.read.title": "قراءة", "settings.permissions.tool.read.description": "قراءة ملف (يطابق مسار الملف)", "settings.permissions.tool.edit.title": "تحرير", - "settings.permissions.tool.edit.description": "تعديل الملفات، بما في ذلك التحرير والكتابة والتصحيحات والتحرير المتعدد", + "settings.permissions.tool.edit.description": + "تعديل الملفات، بما في ذلك التحرير والكتابة والتصحيحات والتحرير المتعدد", "settings.permissions.tool.glob.title": "Glob", "settings.permissions.tool.glob.description": "مطابقة الملفات باستخدام أنماط glob", "settings.permissions.tool.grep.title": "Grep", @@ -678,7 +688,7 @@ export const dict = { "settings.permissions.tool.doom_loop.description": "اكتشاف استدعاءات الأدوات المتكررة بمدخلات متطابقة", "session.delete.failed.title": "فشل حذف الجلسة", "session.delete.title": "حذف الجلسة", - "session.delete.confirm": "حذف الجلسة \"{{name}}\"؟", + "session.delete.confirm": 'حذف الجلسة "{{name}}"؟', "session.delete.button": "حذف الجلسة", "workspace.new": "مساحة عمل جديدة", "workspace.type.local": "محلي", @@ -696,14 +706,13 @@ export const dict = { "workspace.status.clean": "لم يتم اكتشاف تغييرات غير مدمجة.", "workspace.status.dirty": "تم اكتشاف تغييرات غير مدمجة في مساحة العمل هذه.", "workspace.delete.title": "حذف مساحة العمل", - "workspace.delete.confirm": "حذف مساحة العمل \"{{name}}\"؟", + "workspace.delete.confirm": 'حذف مساحة العمل "{{name}}"؟', "workspace.delete.button": "حذف مساحة العمل", "workspace.reset.title": "إعادة تعيين مساحة العمل", - "workspace.reset.confirm": "إعادة تعيين مساحة العمل \"{{name}}\"؟", + "workspace.reset.confirm": 'إعادة تعيين مساحة العمل "{{name}}"؟', "workspace.reset.button": "إعادة تعيين مساحة العمل", "workspace.reset.archived.none": "لن تتم أرشفة أي جلسات نشطة.", "workspace.reset.archived.one": "ستتم أرشفة جلسة واحدة.", "workspace.reset.archived.many": "ستتم أرشفة {{count}} جلسات.", "workspace.reset.note": "سيؤدي هذا إلى إعادة تعيين مساحة العمل لتتطابق مع الفرع الافتراضي.", } - diff --git a/packages/app/src/i18n/br.ts b/packages/app/src/i18n/br.ts index 84aeb934705e..07d6ce467aeb 100644 --- a/packages/app/src/i18n/br.ts +++ b/packages/app/src/i18n/br.ts @@ -110,25 +110,30 @@ export const dict = { "provider.connect.status.inProgress": "Autorização em andamento...", "provider.connect.status.waiting": "Aguardando autorização...", "provider.connect.status.failed": "Autorização falhou: {{error}}", - "provider.connect.apiKey.description": "Digite sua chave de API do {{provider}} para conectar sua conta e usar modelos do {{provider}} no OpenCode.", + "provider.connect.apiKey.description": + "Digite sua chave de API do {{provider}} para conectar sua conta e usar modelos do {{provider}} no OpenCode.", "provider.connect.apiKey.label": "Chave de API do {{provider}}", "provider.connect.apiKey.placeholder": "Chave de API", "provider.connect.apiKey.required": "A chave de API é obrigatória", - "provider.connect.opencodeZen.line1": "OpenCode Zen oferece acesso a um conjunto selecionado de modelos confiáveis otimizados para agentes de código.", - "provider.connect.opencodeZen.line2": "Com uma única chave de API você terá acesso a modelos como Claude, GPT, Gemini, GLM e mais.", + "provider.connect.opencodeZen.line1": + "OpenCode Zen oferece acesso a um conjunto selecionado de modelos confiáveis otimizados para agentes de código.", + "provider.connect.opencodeZen.line2": + "Com uma única chave de API você terá acesso a modelos como Claude, GPT, Gemini, GLM e mais.", "provider.connect.opencodeZen.visit.prefix": "Visite ", "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": " para obter sua chave de API.", "provider.connect.oauth.code.visit.prefix": "Visite ", "provider.connect.oauth.code.visit.link": "este link", - "provider.connect.oauth.code.visit.suffix": " para obter seu código de autorização e conectar sua conta para usar modelos do {{provider}} no OpenCode.", + "provider.connect.oauth.code.visit.suffix": + " para obter seu código de autorização e conectar sua conta para usar modelos do {{provider}} no OpenCode.", "provider.connect.oauth.code.label": "Código de autorização {{method}}", "provider.connect.oauth.code.placeholder": "Código de autorização", "provider.connect.oauth.code.required": "O código de autorização é obrigatório", "provider.connect.oauth.code.invalid": "Código de autorização inválido", "provider.connect.oauth.auto.visit.prefix": "Visite ", "provider.connect.oauth.auto.visit.link": "este link", - "provider.connect.oauth.auto.visit.suffix": " e digite o código abaixo para conectar sua conta e usar modelos do {{provider}} no OpenCode.", + "provider.connect.oauth.auto.visit.suffix": + " e digite o código abaixo para conectar sua conta e usar modelos do {{provider}} no OpenCode.", "provider.connect.oauth.auto.confirmationCode": "Código de confirmação", "provider.connect.toast.connected.title": "{{provider}} conectado", "provider.connect.toast.connected.description": "Modelos do {{provider}} agora estão disponíveis para uso.", @@ -200,7 +205,7 @@ export const dict = { "common.default": "Padrão", "common.attachment": "anexo", "prompt.placeholder.shell": "Digite comando do shell...", - "prompt.placeholder.normal": "Pergunte qualquer coisa... \"{{example}}\"", + "prompt.placeholder.normal": 'Pergunte qualquer coisa... "{{example}}"', "prompt.placeholder.summarizeComments": "Resumir comentários…", "prompt.placeholder.summarizeComment": "Resumir comentário…", "prompt.mode.shell": "Shell", @@ -278,7 +283,8 @@ export const dict = { "dialog.server.add.checking": "Verificando...", "dialog.server.add.button": "Adicionar", "dialog.server.default.title": "Servidor padrão", - "dialog.server.default.description": "Conectar a este servidor na inicialização do aplicativo ao invés de iniciar um servidor local. Requer reinicialização.", + "dialog.server.default.description": + "Conectar a este servidor na inicialização do aplicativo ao invés de iniciar um servidor local. Requer reinicialização.", "dialog.server.default.none": "Nenhum servidor selecionado", "dialog.server.default.set": "Definir servidor atual como padrão", "dialog.server.default.clear": "Limpar", @@ -301,7 +307,8 @@ export const dict = { "dialog.project.edit.worktree.startup.description": "Executa após criar um novo espaço de trabalho (worktree).", "dialog.project.edit.worktree.startup.placeholder": "ex: bun install", "context.breakdown.title": "Detalhamento do Contexto", - "context.breakdown.note": "Detalhamento aproximado dos tokens de entrada. \"Outros\" inclui definições de ferramentas e overhead.", + "context.breakdown.note": + 'Detalhamento aproximado dos tokens de entrada. "Outros" inclui definições de ferramentas e overhead.', "context.breakdown.system": "Sistema", "context.breakdown.user": "Usuário", "context.breakdown.assistant": "Assistente", @@ -388,7 +395,8 @@ export const dict = { "error.page.report.prefix": "Por favor, reporte este erro para a equipe do OpenCode", "error.page.report.discord": "no Discord", "error.page.version": "Versão: {{version}}", - "error.dev.rootNotFound": "Elemento raiz não encontrado. Você esqueceu de adicioná-lo ao seu index.html? Ou talvez o atributo id foi escrito incorretamente?", + "error.dev.rootNotFound": + "Elemento raiz não encontrado. Você esqueceu de adicioná-lo ao seu index.html? Ou talvez o atributo id foi escrito incorretamente?", "error.globalSync.connectFailed": "Não foi possível conectar ao servidor. Há um servidor executando em `{{url}}`?", "directory.error.invalidUrl": "Diretório inválido na URL.", "error.chain.unknown": "Erro desconhecido", @@ -400,12 +408,15 @@ export const dict = { "error.chain.didYouMean": "Você quis dizer: {{suggestions}}", "error.chain.modelNotFound": "Modelo não encontrado: {{provider}}/{{model}}", "error.chain.checkConfig": "Verifique os nomes de provedor/modelo na sua configuração (opencode.json)", - "error.chain.mcpFailed": "Servidor MCP \"{{name}}\" falhou. Nota: OpenCode ainda não suporta autenticação MCP.", + "error.chain.mcpFailed": 'Servidor MCP "{{name}}" falhou. Nota: OpenCode ainda não suporta autenticação MCP.', "error.chain.providerAuthFailed": "Autenticação do provedor falhou ({{provider}}): {{message}}", - "error.chain.providerInitFailed": "Falha ao inicializar provedor \"{{provider}}\". Verifique credenciais e configuração.", + "error.chain.providerInitFailed": + 'Falha ao inicializar provedor "{{provider}}". Verifique credenciais e configuração.', "error.chain.configJsonInvalid": "Arquivo de configuração em {{path}} não é um JSON(C) válido", - "error.chain.configJsonInvalidWithMessage": "Arquivo de configuração em {{path}} não é um JSON(C) válido: {{message}}", - "error.chain.configDirectoryTypo": "Diretório \"{{dir}}\" em {{path}} não é válido. Renomeie o diretório para \"{{suggestion}}\" ou remova-o. Este é um erro de digitação comum.", + "error.chain.configJsonInvalidWithMessage": + "Arquivo de configuração em {{path}} não é um JSON(C) válido: {{message}}", + "error.chain.configDirectoryTypo": + 'Diretório "{{dir}}" em {{path}} não é válido. Renomeie o diretório para "{{suggestion}}" ou remova-o. Este é um erro de digitação comum.', "error.chain.configFrontmatterError": "Falha ao analisar frontmatter em {{path}}:\n{{message}}", "error.chain.configInvalid": "Arquivo de configuração em {{path}} é inválido", "error.chain.configInvalidWithMessage": "Arquivo de configuração em {{path}} é inválido: {{message}}", @@ -458,8 +469,10 @@ export const dict = { "status.popover.tab.plugins": "Plugins", "status.popover.action.manageServers": "Gerenciar servidores", "session.share.popover.title": "Publicar na web", - "session.share.popover.description.shared": "Esta sessão é pública na web. Está acessível para qualquer pessoa com o link.", - "session.share.popover.description.unshared": "Compartilhar sessão publicamente na web. Estará acessível para qualquer pessoa com o link.", + "session.share.popover.description.shared": + "Esta sessão é pública na web. Está acessível para qualquer pessoa com o link.", + "session.share.popover.description.unshared": + "Compartilhar sessão publicamente na web. Estará acessível para qualquer pessoa com o link.", "session.share.action.share": "Compartilhar", "session.share.action.publish": "Publicar", "session.share.action.publishing": "Publicando...", @@ -476,7 +489,8 @@ export const dict = { "terminal.title.numbered": "Terminal {{number}}", "terminal.close": "Fechar terminal", "terminal.connectionLost.title": "Conexão Perdida", - "terminal.connectionLost.description": "A conexão do terminal foi interrompida. Isso pode acontecer quando o servidor reinicia.", + "terminal.connectionLost.description": + "A conexão do terminal foi interrompida. Isso pode acontecer quando o servidor reinicia.", "common.closeTab": "Fechar aba", "common.dismiss": "Descartar", "common.requestFailed": "Requisição falhou", @@ -524,9 +538,10 @@ export const dict = { "settings.general.row.font.description": "Personalize a fonte monoespaçada usada em blocos de código", "settings.general.row.wayland.title": "Usar Wayland nativo", "settings.general.row.wayland.description": "Desabilitar fallback X11 no Wayland. Requer reinicialização.", - "settings.general.row.wayland.tooltip": "No Linux com monitores de taxas de atualização mistas, Wayland nativo pode ser mais estável.", + "settings.general.row.wayland.tooltip": + "No Linux com monitores de taxas de atualização mistas, Wayland nativo pode ser mais estável.", "settings.general.row.releaseNotes.title": "Notas da versão", - "settings.general.row.releaseNotes.description": "Mostrar pop-ups de \"Novidades\" após atualizações", + "settings.general.row.releaseNotes.description": 'Mostrar pop-ups de "Novidades" após atualizações', "settings.updates.row.startup.title": "Verificar atualizações ao iniciar", "settings.updates.row.startup.description": "Verificar atualizações automaticamente quando o OpenCode iniciar", "settings.updates.row.check.title": "Verificar atualizações", @@ -593,9 +608,11 @@ export const dict = { "sound.option.yup05": "Sim 05", "sound.option.yup06": "Sim 06", "settings.general.notifications.agent.title": "Agente", - "settings.general.notifications.agent.description": "Mostrar notificação do sistema quando o agente estiver completo ou precisar de atenção", + "settings.general.notifications.agent.description": + "Mostrar notificação do sistema quando o agente estiver completo ou precisar de atenção", "settings.general.notifications.permissions.title": "Permissões", - "settings.general.notifications.permissions.description": "Mostrar notificação do sistema quando uma permissão for necessária", + "settings.general.notifications.permissions.description": + "Mostrar notificação do sistema quando uma permissão for necessária", "settings.general.notifications.errors.title": "Erros", "settings.general.notifications.errors.description": "Mostrar notificação do sistema quando ocorrer um erro", "settings.general.sounds.agent.title": "Agente", @@ -647,7 +664,8 @@ export const dict = { "settings.permissions.tool.read.title": "Ler", "settings.permissions.tool.read.description": "Ler um arquivo (corresponde ao caminho do arquivo)", "settings.permissions.tool.edit.title": "Editar", - "settings.permissions.tool.edit.description": "Modificar arquivos, incluindo edições, escritas, patches e multi-edições", + "settings.permissions.tool.edit.description": + "Modificar arquivos, incluindo edições, escritas, patches e multi-edições", "settings.permissions.tool.glob.title": "Glob", "settings.permissions.tool.glob.description": "Corresponder arquivos usando padrões glob", "settings.permissions.tool.grep.title": "Grep", @@ -678,7 +696,7 @@ export const dict = { "settings.permissions.tool.doom_loop.description": "Detectar chamadas de ferramentas repetidas com entrada idêntica", "session.delete.failed.title": "Falha ao excluir sessão", "session.delete.title": "Excluir sessão", - "session.delete.confirm": "Excluir sessão \"{{name}}\"?", + "session.delete.confirm": 'Excluir sessão "{{name}}"?', "session.delete.button": "Excluir sessão", "workspace.new": "Novo espaço de trabalho", "workspace.type.local": "local", @@ -696,14 +714,13 @@ export const dict = { "workspace.status.clean": "Nenhuma alteração não mesclada detectada.", "workspace.status.dirty": "Alterações não mescladas detectadas neste espaço de trabalho.", "workspace.delete.title": "Excluir espaço de trabalho", - "workspace.delete.confirm": "Excluir espaço de trabalho \"{{name}}\"?", + "workspace.delete.confirm": 'Excluir espaço de trabalho "{{name}}"?', "workspace.delete.button": "Excluir espaço de trabalho", "workspace.reset.title": "Redefinir espaço de trabalho", - "workspace.reset.confirm": "Redefinir espaço de trabalho \"{{name}}\"?", + "workspace.reset.confirm": 'Redefinir espaço de trabalho "{{name}}"?', "workspace.reset.button": "Redefinir espaço de trabalho", "workspace.reset.archived.none": "Nenhuma sessão ativa será arquivada.", "workspace.reset.archived.one": "1 sessão será arquivada.", "workspace.reset.archived.many": "{{count}} sessões serão arquivadas.", "workspace.reset.note": "Isso redefinirá o espaço de trabalho para corresponder ao branch padrão.", } - diff --git a/packages/app/src/i18n/de.ts b/packages/app/src/i18n/de.ts index d2f6bd860fec..99a950631074 100644 --- a/packages/app/src/i18n/de.ts +++ b/packages/app/src/i18n/de.ts @@ -114,25 +114,30 @@ export const dict = { "provider.connect.status.inProgress": "Autorisierung läuft...", "provider.connect.status.waiting": "Warten auf Autorisierung...", "provider.connect.status.failed": "Autorisierung fehlgeschlagen: {{error}}", - "provider.connect.apiKey.description": "Geben Sie Ihren {{provider}} API-Schlüssel ein, um Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", + "provider.connect.apiKey.description": + "Geben Sie Ihren {{provider}} API-Schlüssel ein, um Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", "provider.connect.apiKey.label": "{{provider}} API-Schlüssel", "provider.connect.apiKey.placeholder": "API-Schlüssel", "provider.connect.apiKey.required": "API-Schlüssel ist erforderlich", - "provider.connect.opencodeZen.line1": "OpenCode Zen bietet Ihnen Zugriff auf eine kuratierte Auswahl zuverlässiger, optimierter Modelle für Coding-Agenten.", - "provider.connect.opencodeZen.line2": "Mit einem einzigen API-Schlüssel erhalten Sie Zugriff auf Modelle wie Claude, GPT, Gemini, GLM und mehr.", + "provider.connect.opencodeZen.line1": + "OpenCode Zen bietet Ihnen Zugriff auf eine kuratierte Auswahl zuverlässiger, optimierter Modelle für Coding-Agenten.", + "provider.connect.opencodeZen.line2": + "Mit einem einzigen API-Schlüssel erhalten Sie Zugriff auf Modelle wie Claude, GPT, Gemini, GLM und mehr.", "provider.connect.opencodeZen.visit.prefix": "Besuchen Sie ", "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": ", um Ihren API-Schlüssel zu erhalten.", "provider.connect.oauth.code.visit.prefix": "Besuchen Sie ", "provider.connect.oauth.code.visit.link": "diesen Link", - "provider.connect.oauth.code.visit.suffix": ", um Ihren Autorisierungscode zu erhalten, Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", + "provider.connect.oauth.code.visit.suffix": + ", um Ihren Autorisierungscode zu erhalten, Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", "provider.connect.oauth.code.label": "{{method}} Autorisierungscode", "provider.connect.oauth.code.placeholder": "Autorisierungscode", "provider.connect.oauth.code.required": "Autorisierungscode ist erforderlich", "provider.connect.oauth.code.invalid": "Ungültiger Autorisierungscode", "provider.connect.oauth.auto.visit.prefix": "Besuchen Sie ", "provider.connect.oauth.auto.visit.link": "diesen Link", - "provider.connect.oauth.auto.visit.suffix": " und geben Sie den untenstehenden Code ein, um Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", + "provider.connect.oauth.auto.visit.suffix": + " und geben Sie den untenstehenden Code ein, um Ihr Konto zu verbinden und {{provider}} Modelle in OpenCode zu nutzen.", "provider.connect.oauth.auto.confirmationCode": "Bestätigungscode", "provider.connect.toast.connected.title": "{{provider}} verbunden", "provider.connect.toast.connected.description": "{{provider}} Modelle sind jetzt verfügbar.", @@ -149,7 +154,8 @@ export const dict = { "provider.custom.field.baseURL.placeholder": "https://api.myprovider.com/v1", "provider.custom.field.apiKey.label": "API-Schlüssel", "provider.custom.field.apiKey.placeholder": "API-Schlüssel", - "provider.custom.field.apiKey.description": "Optional. Leer lassen, wenn Sie die Authentifizierung über Header verwalten.", + "provider.custom.field.apiKey.description": + "Optional. Leer lassen, wenn Sie die Authentifizierung über Header verwalten.", "provider.custom.models.label": "Modelle", "provider.custom.models.id.label": "ID", "provider.custom.models.id.placeholder": "model-id", @@ -204,7 +210,7 @@ export const dict = { "common.default": "Standard", "common.attachment": "Anhang", "prompt.placeholder.shell": "Shell-Befehl eingeben...", - "prompt.placeholder.normal": "Fragen Sie alles... \"{{example}}\"", + "prompt.placeholder.normal": 'Fragen Sie alles... "{{example}}"', "prompt.placeholder.summarizeComments": "Kommentare zusammenfassen…", "prompt.placeholder.summarizeComment": "Kommentar zusammenfassen…", "prompt.mode.shell": "Shell", @@ -252,7 +258,8 @@ export const dict = { "prompt.toast.pasteUnsupported.title": "Nicht unterstütztes Einfügen", "prompt.toast.pasteUnsupported.description": "Hier können nur Bilder oder PDFs eingefügt werden.", "prompt.toast.modelAgentRequired.title": "Wählen Sie einen Agenten und ein Modell", - "prompt.toast.modelAgentRequired.description": "Wählen Sie einen Agenten und ein Modell, bevor Sie eine Eingabe senden.", + "prompt.toast.modelAgentRequired.description": + "Wählen Sie einen Agenten und ein Modell, bevor Sie eine Eingabe senden.", "prompt.toast.worktreeCreateFailed.title": "Worktree konnte nicht erstellt werden", "prompt.toast.sessionCreateFailed.title": "Sitzung konnte nicht erstellt werden", "prompt.toast.shellSendFailed.title": "Shell-Befehl konnte nicht gesendet werden", @@ -282,7 +289,8 @@ export const dict = { "dialog.server.add.checking": "Prüfen...", "dialog.server.add.button": "Server hinzufügen", "dialog.server.default.title": "Standardserver", - "dialog.server.default.description": "Beim App-Start mit diesem Server verbinden, anstatt einen lokalen Server zu starten. Erfordert Neustart.", + "dialog.server.default.description": + "Beim App-Start mit diesem Server verbinden, anstatt einen lokalen Server zu starten. Erfordert Neustart.", "dialog.server.default.none": "Kein Server ausgewählt", "dialog.server.default.set": "Aktuellen Server als Standard setzen", "dialog.server.default.clear": "Löschen", @@ -302,10 +310,12 @@ export const dict = { "dialog.project.edit.color": "Farbe", "dialog.project.edit.color.select": "{{color}}-Farbe auswählen", "dialog.project.edit.worktree.startup": "Startup-Skript für Arbeitsbereich", - "dialog.project.edit.worktree.startup.description": "Wird nach dem Erstellen eines neuen Arbeitsbereichs (Worktree) ausgeführt.", + "dialog.project.edit.worktree.startup.description": + "Wird nach dem Erstellen eines neuen Arbeitsbereichs (Worktree) ausgeführt.", "dialog.project.edit.worktree.startup.placeholder": "z. B. bun install", "context.breakdown.title": "Kontext-Aufschlüsselung", - "context.breakdown.note": "Ungefähre Aufschlüsselung der Eingabe-Token. \"Andere\" beinhaltet Werkzeugdefinitionen und Overhead.", + "context.breakdown.note": + 'Ungefähre Aufschlüsselung der Eingabe-Token. "Andere" beinhaltet Werkzeugdefinitionen und Overhead.', "context.breakdown.system": "System", "context.breakdown.user": "Benutzer", "context.breakdown.assistant": "Assistent", @@ -392,7 +402,8 @@ export const dict = { "error.page.report.prefix": "Bitte melden Sie diesen Fehler dem OpenCode-Team", "error.page.report.discord": "auf Discord", "error.page.version": "Version: {{version}}", - "error.dev.rootNotFound": "Wurzelelement nicht gefunden. Haben Sie vergessen, es in Ihre index.html aufzunehmen? Oder wurde das id-Attribut falsch geschrieben?", + "error.dev.rootNotFound": + "Wurzelelement nicht gefunden. Haben Sie vergessen, es in Ihre index.html aufzunehmen? Oder wurde das id-Attribut falsch geschrieben?", "error.globalSync.connectFailed": "Verbindung zum Server fehlgeschlagen. Läuft ein Server unter `{{url}}`?", "directory.error.invalidUrl": "Ungültiges Verzeichnis in der URL.", "error.chain.unknown": "Unbekannter Fehler", @@ -404,12 +415,16 @@ export const dict = { "error.chain.didYouMean": "Meinten Sie: {{suggestions}}", "error.chain.modelNotFound": "Modell nicht gefunden: {{provider}}/{{model}}", "error.chain.checkConfig": "Überprüfen Sie Ihre Konfiguration (opencode.json) auf Anbieter-/Modellnamen", - "error.chain.mcpFailed": "MCP-Server \"{{name}}\" fehlgeschlagen. Hinweis: OpenCode unterstützt noch keine MCP-Authentifizierung.", + "error.chain.mcpFailed": + 'MCP-Server "{{name}}" fehlgeschlagen. Hinweis: OpenCode unterstützt noch keine MCP-Authentifizierung.', "error.chain.providerAuthFailed": "Anbieter-Authentifizierung fehlgeschlagen ({{provider}}): {{message}}", - "error.chain.providerInitFailed": "Anbieter \"{{provider}}\" konnte nicht initialisiert werden. Überprüfen Sie Anmeldeinformationen und Konfiguration.", + "error.chain.providerInitFailed": + 'Anbieter "{{provider}}" konnte nicht initialisiert werden. Überprüfen Sie Anmeldeinformationen und Konfiguration.', "error.chain.configJsonInvalid": "Konfigurationsdatei unter {{path}} ist kein gültiges JSON(C)", - "error.chain.configJsonInvalidWithMessage": "Konfigurationsdatei unter {{path}} ist kein gültiges JSON(C): {{message}}", - "error.chain.configDirectoryTypo": "Verzeichnis \"{{dir}}\" in {{path}} ist ungültig. Benennen Sie das Verzeichnis in \"{{suggestion}}\" um oder entfernen Sie es. Dies ist ein häufiger Tippfehler.", + "error.chain.configJsonInvalidWithMessage": + "Konfigurationsdatei unter {{path}} ist kein gültiges JSON(C): {{message}}", + "error.chain.configDirectoryTypo": + 'Verzeichnis "{{dir}}" in {{path}} ist ungültig. Benennen Sie das Verzeichnis in "{{suggestion}}" um oder entfernen Sie es. Dies ist ein häufiger Tippfehler.', "error.chain.configFrontmatterError": "Frontmatter in {{path}} konnte nicht geparst werden:\n{{message}}", "error.chain.configInvalid": "Konfigurationsdatei unter {{path}} ist ungültig", "error.chain.configInvalidWithMessage": "Konfigurationsdatei unter {{path}} ist ungültig: {{message}}", @@ -462,8 +477,10 @@ export const dict = { "status.popover.tab.plugins": "Plugins", "status.popover.action.manageServers": "Server verwalten", "session.share.popover.title": "Im Web veröffentlichen", - "session.share.popover.description.shared": "Diese Sitzung ist öffentlich im Web. Sie ist für jeden mit dem Link zugänglich.", - "session.share.popover.description.unshared": "Sitzung öffentlich im Web teilen. Sie wird für jeden mit dem Link zugänglich sein.", + "session.share.popover.description.shared": + "Diese Sitzung ist öffentlich im Web. Sie ist für jeden mit dem Link zugänglich.", + "session.share.popover.description.unshared": + "Sitzung öffentlich im Web teilen. Sie wird für jeden mit dem Link zugänglich sein.", "session.share.action.share": "Teilen", "session.share.action.publish": "Veröffentlichen", "session.share.action.publishing": "Veröffentliche...", @@ -480,7 +497,8 @@ export const dict = { "terminal.title.numbered": "Terminal {{number}}", "terminal.close": "Terminal schließen", "terminal.connectionLost.title": "Verbindung verloren", - "terminal.connectionLost.description": "Die Terminalverbindung wurde unterbrochen. Das kann passieren, wenn der Server neu startet.", + "terminal.connectionLost.description": + "Die Terminalverbindung wurde unterbrochen. Das kann passieren, wenn der Server neu startet.", "common.closeTab": "Tab schließen", "common.dismiss": "Verwerfen", "common.requestFailed": "Anfrage fehlgeschlagen", @@ -502,7 +520,8 @@ export const dict = { "sidebar.workspaces.disable": "Arbeitsbereiche deaktivieren", "sidebar.gettingStarted.title": "Erste Schritte", "sidebar.gettingStarted.line1": "OpenCode enthält kostenlose Modelle, damit Sie sofort loslegen können.", - "sidebar.gettingStarted.line2": "Verbinden Sie einen beliebigen Anbieter, um Modelle wie Claude, GPT, Gemini usw. zu nutzen.", + "sidebar.gettingStarted.line2": + "Verbinden Sie einen beliebigen Anbieter, um Modelle wie Claude, GPT, Gemini usw. zu nutzen.", "sidebar.project.recentSessions": "Letzte Sitzungen", "sidebar.project.viewAllSessions": "Alle Sitzungen anzeigen", "app.name.desktop": "OpenCode Desktop", @@ -528,9 +547,10 @@ export const dict = { "settings.general.row.font.description": "Die in Codeblöcken verwendete Monospace-Schriftart anpassen", "settings.general.row.wayland.title": "Natives Wayland verwenden", "settings.general.row.wayland.description": "X11-Fallback unter Wayland deaktivieren. Erfordert Neustart.", - "settings.general.row.wayland.tooltip": "Unter Linux mit Monitoren unterschiedlicher Bildwiederholraten kann natives Wayland stabiler sein.", + "settings.general.row.wayland.tooltip": + "Unter Linux mit Monitoren unterschiedlicher Bildwiederholraten kann natives Wayland stabiler sein.", "settings.general.row.releaseNotes.title": "Versionshinweise", - "settings.general.row.releaseNotes.description": "\"Neuigkeiten\"-Pop-ups nach Updates anzeigen", + "settings.general.row.releaseNotes.description": '"Neuigkeiten"-Pop-ups nach Updates anzeigen', "settings.updates.row.startup.title": "Beim Start nach Updates suchen", "settings.updates.row.startup.description": "Beim Start von OpenCode automatisch nach Updates suchen", "settings.updates.row.check.title": "Nach Updates suchen", @@ -597,9 +617,11 @@ export const dict = { "sound.option.yup05": "Ja 05", "sound.option.yup06": "Ja 06", "settings.general.notifications.agent.title": "Agent", - "settings.general.notifications.agent.description": "Systembenachrichtigung anzeigen, wenn der Agent fertig ist oder Aufmerksamkeit benötigt", + "settings.general.notifications.agent.description": + "Systembenachrichtigung anzeigen, wenn der Agent fertig ist oder Aufmerksamkeit benötigt", "settings.general.notifications.permissions.title": "Berechtigungen", - "settings.general.notifications.permissions.description": "Systembenachrichtigung anzeigen, wenn eine Berechtigung erforderlich ist", + "settings.general.notifications.permissions.description": + "Systembenachrichtigung anzeigen, wenn eine Berechtigung erforderlich ist", "settings.general.notifications.errors.title": "Fehler", "settings.general.notifications.errors.description": "Systembenachrichtigung anzeigen, wenn ein Fehler auftritt", "settings.general.sounds.agent.title": "Agent", @@ -651,7 +673,8 @@ export const dict = { "settings.permissions.tool.read.title": "Lesen", "settings.permissions.tool.read.description": "Lesen einer Datei (stimmt mit dem Dateipfad überein)", "settings.permissions.tool.edit.title": "Bearbeiten", - "settings.permissions.tool.edit.description": "Dateien ändern, einschließlich Bearbeitungen, Schreibvorgängen, Patches und Mehrfachbearbeitungen", + "settings.permissions.tool.edit.description": + "Dateien ändern, einschließlich Bearbeitungen, Schreibvorgängen, Patches und Mehrfachbearbeitungen", "settings.permissions.tool.glob.title": "Glob", "settings.permissions.tool.glob.description": "Dateien mithilfe von Glob-Mustern abgleichen", "settings.permissions.tool.grep.title": "Grep", @@ -682,7 +705,7 @@ export const dict = { "settings.permissions.tool.doom_loop.description": "Wiederholte Tool-Aufrufe mit identischer Eingabe erkennen", "session.delete.failed.title": "Sitzung konnte nicht gelöscht werden", "session.delete.title": "Sitzung löschen", - "session.delete.confirm": "Sitzung \"{{name}}\" löschen?", + "session.delete.confirm": 'Sitzung "{{name}}" löschen?', "session.delete.button": "Sitzung löschen", "workspace.new": "Neuer Arbeitsbereich", "workspace.type.local": "lokal", @@ -700,13 +723,13 @@ export const dict = { "workspace.status.clean": "Keine nicht zusammengeführten Änderungen erkannt.", "workspace.status.dirty": "Nicht zusammengeführte Änderungen in diesem Arbeitsbereich erkannt.", "workspace.delete.title": "Arbeitsbereich löschen", - "workspace.delete.confirm": "Arbeitsbereich \"{{name}}\" löschen?", + "workspace.delete.confirm": 'Arbeitsbereich "{{name}}" löschen?', "workspace.delete.button": "Arbeitsbereich löschen", "workspace.reset.title": "Arbeitsbereich zurücksetzen", - "workspace.reset.confirm": "Arbeitsbereich \"{{name}}\" zurücksetzen?", + "workspace.reset.confirm": 'Arbeitsbereich "{{name}}" zurücksetzen?', "workspace.reset.button": "Arbeitsbereich zurücksetzen", "workspace.reset.archived.none": "Keine aktiven Sitzungen werden archiviert.", "workspace.reset.archived.one": "1 Sitzung wird archiviert.", "workspace.reset.archived.many": "{{count}} Sitzungen werden archiviert.", - "workspace.reset.note": "Dadurch wird der Arbeitsbereich auf den Standard-Branch zurückgesetzt." + "workspace.reset.note": "Dadurch wird der Arbeitsbereich auf den Standard-Branch zurückgesetzt.", } satisfies Partial> diff --git a/packages/app/src/i18n/pl.ts b/packages/app/src/i18n/pl.ts index c429f48a6b9a..983c9c14ac1b 100644 --- a/packages/app/src/i18n/pl.ts +++ b/packages/app/src/i18n/pl.ts @@ -110,25 +110,30 @@ export const dict = { "provider.connect.status.inProgress": "Autoryzacja w toku...", "provider.connect.status.waiting": "Oczekiwanie na autoryzację...", "provider.connect.status.failed": "Autoryzacja nie powiodła się: {{error}}", - "provider.connect.apiKey.description": "Wprowadź swój klucz API {{provider}}, aby połączyć konto i używać modeli {{provider}} w OpenCode.", + "provider.connect.apiKey.description": + "Wprowadź swój klucz API {{provider}}, aby połączyć konto i używać modeli {{provider}} w OpenCode.", "provider.connect.apiKey.label": "Klucz API {{provider}}", "provider.connect.apiKey.placeholder": "Klucz API", "provider.connect.apiKey.required": "Klucz API jest wymagany", - "provider.connect.opencodeZen.line1": "OpenCode Zen daje dostęp do wybranego zestawu niezawodnych, zoptymalizowanych modeli dla agentów kodujących.", - "provider.connect.opencodeZen.line2": "Z jednym kluczem API uzyskasz dostęp do modeli takich jak Claude, GPT, Gemini, GLM i więcej.", + "provider.connect.opencodeZen.line1": + "OpenCode Zen daje dostęp do wybranego zestawu niezawodnych, zoptymalizowanych modeli dla agentów kodujących.", + "provider.connect.opencodeZen.line2": + "Z jednym kluczem API uzyskasz dostęp do modeli takich jak Claude, GPT, Gemini, GLM i więcej.", "provider.connect.opencodeZen.visit.prefix": "Odwiedź ", "provider.connect.opencodeZen.visit.link": "opencode.ai/zen", "provider.connect.opencodeZen.visit.suffix": ", aby odebrać swój klucz API.", "provider.connect.oauth.code.visit.prefix": "Odwiedź ", "provider.connect.oauth.code.visit.link": "ten link", - "provider.connect.oauth.code.visit.suffix": ", aby odebrać kod autoryzacyjny, połączyć konto i używać modeli {{provider}} w OpenCode.", + "provider.connect.oauth.code.visit.suffix": + ", aby odebrać kod autoryzacyjny, połączyć konto i używać modeli {{provider}} w OpenCode.", "provider.connect.oauth.code.label": "Kod autoryzacyjny {{method}}", "provider.connect.oauth.code.placeholder": "Kod autoryzacyjny", "provider.connect.oauth.code.required": "Kod autoryzacyjny jest wymagany", "provider.connect.oauth.code.invalid": "Nieprawidłowy kod autoryzacyjny", "provider.connect.oauth.auto.visit.prefix": "Odwiedź ", "provider.connect.oauth.auto.visit.link": "ten link", - "provider.connect.oauth.auto.visit.suffix": " i wprowadź poniższy kod, aby połączyć konto i używać modeli {{provider}} w OpenCode.", + "provider.connect.oauth.auto.visit.suffix": + " i wprowadź poniższy kod, aby połączyć konto i używać modeli {{provider}} w OpenCode.", "provider.connect.oauth.auto.confirmationCode": "Kod potwierdzający", "provider.connect.toast.connected.title": "Połączono {{provider}}", "provider.connect.toast.connected.description": "Modele {{provider}} są teraz dostępne do użycia.", @@ -145,7 +150,8 @@ export const dict = { "provider.custom.field.baseURL.placeholder": "https://api.mojdostawca.com/v1", "provider.custom.field.apiKey.label": "Klucz API", "provider.custom.field.apiKey.placeholder": "Klucz API", - "provider.custom.field.apiKey.description": "Opcjonalne. Pozostaw puste, jeśli zarządzasz autoryzacją przez nagłówki.", + "provider.custom.field.apiKey.description": + "Opcjonalne. Pozostaw puste, jeśli zarządzasz autoryzacją przez nagłówki.", "provider.custom.models.label": "Modele", "provider.custom.models.id.label": "ID", "provider.custom.models.id.placeholder": "model-id", @@ -278,7 +284,8 @@ export const dict = { "dialog.server.add.checking": "Sprawdzanie...", "dialog.server.add.button": "Dodaj serwer", "dialog.server.default.title": "Domyślny serwer", - "dialog.server.default.description": "Połącz z tym serwerem przy uruchomieniu aplikacji zamiast uruchamiać lokalny serwer. Wymaga restartu.", + "dialog.server.default.description": + "Połącz z tym serwerem przy uruchomieniu aplikacji zamiast uruchamiać lokalny serwer. Wymaga restartu.", "dialog.server.default.none": "Nie wybrano serwera", "dialog.server.default.set": "Ustaw bieżący serwer jako domyślny", "dialog.server.default.clear": "Wyczyść", @@ -388,7 +395,8 @@ export const dict = { "error.page.report.prefix": "Proszę zgłosić ten błąd do zespołu OpenCode", "error.page.report.discord": "na Discordzie", "error.page.version": "Wersja: {{version}}", - "error.dev.rootNotFound": "Nie znaleziono elementu głównego. Czy zapomniałeś dodać go do swojego index.html? A może atrybut id został błędnie wpisany?", + "error.dev.rootNotFound": + "Nie znaleziono elementu głównego. Czy zapomniałeś dodać go do swojego index.html? A może atrybut id został błędnie wpisany?", "error.globalSync.connectFailed": "Nie można połączyć się z serwerem. Czy serwer działa pod adresem `{{url}}`?", "directory.error.invalidUrl": "Nieprawidłowy katalog w URL.", "error.chain.unknown": "Nieznany błąd", @@ -402,10 +410,12 @@ export const dict = { "error.chain.checkConfig": "Sprawdź swoją konfigurację (opencode.json) nazwy dostawców/modeli", "error.chain.mcpFailed": 'MCP server "{{name}}" failed. Note, OpenCode does not support MCP authentication yet.', "error.chain.providerAuthFailed": "Uwierzytelnianie dostawcy nie powiodło się ({{provider}}): {{message}}", - "error.chain.providerInitFailed": 'Nie udało się zainicjować dostawcy "{{provider}}". Sprawdź poświadczenia i konfigurację.', + "error.chain.providerInitFailed": + 'Nie udało się zainicjować dostawcy "{{provider}}". Sprawdź poświadczenia i konfigurację.', "error.chain.configJsonInvalid": "Plik konfiguracyjny w {{path}} nie jest poprawnym JSON(C)", "error.chain.configJsonInvalidWithMessage": "Plik konfiguracyjny w {{path}} nie jest poprawnym JSON(C): {{message}}", - "error.chain.configDirectoryTypo": 'Katalog "{{dir}}" w {{path}} jest nieprawidłowy. Zmień nazwę katalogu na "{{suggestion}}" lub usuń go. To częsta literówka.', + "error.chain.configDirectoryTypo": + 'Katalog "{{dir}}" w {{path}} jest nieprawidłowy. Zmień nazwę katalogu na "{{suggestion}}" lub usuń go. To częsta literówka.', "error.chain.configFrontmatterError": "Nie udało się przetworzyć frontmatter w {{path}}:\n{{message}}", "error.chain.configInvalid": "Plik konfiguracyjny w {{path}} jest nieprawidłowy", "error.chain.configInvalidWithMessage": "Plik konfiguracyjny w {{path}} jest nieprawidłowy: {{message}}", @@ -458,8 +468,10 @@ export const dict = { "status.popover.tab.plugins": "Wtyczki", "status.popover.action.manageServers": "Zarządzaj serwerami", "session.share.popover.title": "Opublikuj w sieci", - "session.share.popover.description.shared": "Ta sesja jest publiczna w sieci. Jest dostępna dla każdego, kto posiada link.", - "session.share.popover.description.unshared": "Udostępnij sesję publicznie w sieci. Będzie dostępna dla każdego, kto posiada link.", + "session.share.popover.description.shared": + "Ta sesja jest publiczna w sieci. Jest dostępna dla każdego, kto posiada link.", + "session.share.popover.description.unshared": + "Udostępnij sesję publicznie w sieci. Będzie dostępna dla każdego, kto posiada link.", "session.share.action.share": "Udostępnij", "session.share.action.publish": "Opublikuj", "session.share.action.publishing": "Publikowanie...", @@ -476,7 +488,8 @@ export const dict = { "terminal.title.numbered": "Terminal {{number}}", "terminal.close": "Zamknij terminal", "terminal.connectionLost.title": "Utracono połączenie", - "terminal.connectionLost.description": "Połączenie z terminalem zostało przerwane. Może się to zdarzyć przy restarcie serwera.", + "terminal.connectionLost.description": + "Połączenie z terminalem zostało przerwane. Może się to zdarzyć przy restarcie serwera.", "common.closeTab": "Zamknij kartę", "common.dismiss": "Odrzuć", "common.requestFailed": "Żądanie nie powiodło się", @@ -524,7 +537,8 @@ export const dict = { "settings.general.row.font.description": "Dostosuj czcionkę mono używaną w blokach kodu", "settings.general.row.wayland.title": "Użyj natywnego Wayland", "settings.general.row.wayland.description": "Wyłącz fallback X11 na Wayland. Wymaga restartu.", - "settings.general.row.wayland.tooltip": "Na Linuxie z monitorami o różnym odświeżaniu, natywny Wayland może być bardziej stabilny.", + "settings.general.row.wayland.tooltip": + "Na Linuxie z monitorami o różnym odświeżaniu, natywny Wayland może być bardziej stabilny.", "settings.general.row.releaseNotes.title": "Informacje o wydaniu", "settings.general.row.releaseNotes.description": 'Pokazuj wyskakujące okna "Co nowego" po aktualizacjach', "settings.updates.row.startup.title": "Sprawdzaj aktualizacje przy uruchomieniu", @@ -593,9 +607,11 @@ export const dict = { "sound.option.yup05": "Yup 05", "sound.option.yup06": "Yup 06", "settings.general.notifications.agent.title": "Agent", - "settings.general.notifications.agent.description": "Pokaż powiadomienie systemowe, gdy agent zakończy pracę lub wymaga uwagi", + "settings.general.notifications.agent.description": + "Pokaż powiadomienie systemowe, gdy agent zakończy pracę lub wymaga uwagi", "settings.general.notifications.permissions.title": "Uprawnienia", - "settings.general.notifications.permissions.description": "Pokaż powiadomienie systemowe, gdy wymagane jest uprawnienie", + "settings.general.notifications.permissions.description": + "Pokaż powiadomienie systemowe, gdy wymagane jest uprawnienie", "settings.general.notifications.errors.title": "Błędy", "settings.general.notifications.errors.description": "Pokaż powiadomienie systemowe, gdy wystąpi błąd", "settings.general.sounds.agent.title": "Agent", diff --git a/packages/app/src/i18n/zh.ts b/packages/app/src/i18n/zh.ts index b991bd13f10a..1b40013b60de 100644 --- a/packages/app/src/i18n/zh.ts +++ b/packages/app/src/i18n/zh.ts @@ -147,7 +147,8 @@ export const dict = { "provider.connect.status.inProgress": "正在授权...", "provider.connect.status.waiting": "等待授权...", "provider.connect.status.failed": "授权失败:{{error}}", - "provider.connect.apiKey.description": "输入你的 {{provider}} API 密钥以连接帐户,并在 OpenCode 中使用 {{provider}} 模型。", + "provider.connect.apiKey.description": + "输入你的 {{provider}} API 密钥以连接帐户,并在 OpenCode 中使用 {{provider}} 模型。", "provider.connect.apiKey.label": "{{provider}} API 密钥", "provider.connect.apiKey.placeholder": "API 密钥", "provider.connect.apiKey.required": "API 密钥为必填项", @@ -242,7 +243,7 @@ export const dict = { "common.attachment": "附件", "prompt.placeholder.shell": "输入 shell 命令...", - "prompt.placeholder.normal": "随便问点什么... \"{{example}}\"", + "prompt.placeholder.normal": '随便问点什么... "{{example}}"', "prompt.placeholder.summarizeComments": "总结评论…", "prompt.placeholder.summarizeComment": "总结该评论…", "prompt.mode.shell": "Shell", @@ -456,12 +457,13 @@ export const dict = { "error.chain.didYouMean": "你是不是想输入:{{suggestions}}", "error.chain.modelNotFound": "未找到模型:{{provider}}/{{model}}", "error.chain.checkConfig": "请检查你的配置 (opencode.json) 中的 provider/model 名称", - "error.chain.mcpFailed": "MCP 服务器 \"{{name}}\" 启动失败。注意: OpenCode 暂不支持 MCP 认证。", + "error.chain.mcpFailed": 'MCP 服务器 "{{name}}" 启动失败。注意: OpenCode 暂不支持 MCP 认证。', "error.chain.providerAuthFailed": "提供商认证失败({{provider}}):{{message}}", - "error.chain.providerInitFailed": "无法初始化提供商 \"{{provider}}\"。请检查凭据和配置。", + "error.chain.providerInitFailed": '无法初始化提供商 "{{provider}}"。请检查凭据和配置。', "error.chain.configJsonInvalid": "配置文件 {{path}} 不是有效的 JSON(C)", "error.chain.configJsonInvalidWithMessage": "配置文件 {{path}} 不是有效的 JSON(C):{{message}}", - "error.chain.configDirectoryTypo": "{{path}} 中的目录 \"{{dir}}\" 无效。请将目录重命名为 \"{{suggestion}}\" 或移除它。这是一个常见拼写错误。", + "error.chain.configDirectoryTypo": + '{{path}} 中的目录 "{{dir}}" 无效。请将目录重命名为 "{{suggestion}}" 或移除它。这是一个常见拼写错误。', "error.chain.configFrontmatterError": "无法解析 {{path}} 中的 frontmatter:\n{{message}}", "error.chain.configInvalid": "配置文件 {{path}} 无效", "error.chain.configInvalidWithMessage": "配置文件 {{path}} 无效:{{message}}", @@ -761,7 +763,7 @@ export const dict = { "session.delete.failed.title": "删除会话失败", "session.delete.title": "删除会话", - "session.delete.confirm": "删除会话 \"{{name}}\"?", + "session.delete.confirm": '删除会话 "{{name}}"?', "session.delete.button": "删除会话", "workspace.new": "新建工作区", @@ -780,10 +782,10 @@ export const dict = { "workspace.status.clean": "未检测到未合并的更改。", "workspace.status.dirty": "检测到未合并的更改。", "workspace.delete.title": "删除工作区", - "workspace.delete.confirm": "删除工作区 \"{{name}}\"?", + "workspace.delete.confirm": '删除工作区 "{{name}}"?', "workspace.delete.button": "删除工作区", "workspace.reset.title": "重置工作区", - "workspace.reset.confirm": "重置工作区 \"{{name}}\"?", + "workspace.reset.confirm": '重置工作区 "{{name}}"?', "workspace.reset.button": "重置工作区", "workspace.reset.archived.none": "不会归档任何活跃会话。", "workspace.reset.archived.one": "将归档 1 个会话。", From 8823b4856ad1db4364e3fd77891e1042edd8677e Mon Sep 17 00:00:00 2001 From: niushuai1991 Date: Sat, 14 Feb 2026 00:25:12 +0800 Subject: [PATCH 2/2] fix: standardize zh-CN docs character set and terminology --- .../src/content/docs/zh-cn/mcp-servers.mdx | 10 +-- .../web/src/content/docs/zh-cn/models.mdx | 40 +++++----- packages/web/src/content/docs/zh-cn/modes.mdx | 32 ++++---- .../web/src/content/docs/zh-cn/network.mdx | 6 +- .../src/content/docs/zh-cn/permissions.mdx | 20 ++--- .../web/src/content/docs/zh-cn/plugins.mdx | 18 ++--- .../web/src/content/docs/zh-cn/providers.mdx | 36 ++++----- packages/web/src/content/docs/zh-cn/rules.mdx | 12 +-- packages/web/src/content/docs/zh-cn/sdk.mdx | 18 ++--- .../web/src/content/docs/zh-cn/server.mdx | 80 +++++++++---------- packages/web/src/content/docs/zh-cn/share.mdx | 48 +++++------ .../web/src/content/docs/zh-cn/skills.mdx | 38 ++++----- .../web/src/content/docs/zh-cn/themes.mdx | 26 +++--- packages/web/src/content/docs/zh-cn/tools.mdx | 74 ++++++++--------- .../content/docs/zh-cn/troubleshooting.mdx | 46 +++++------ packages/web/src/content/docs/zh-cn/tui.mdx | 58 +++++++------- packages/web/src/content/docs/zh-cn/web.mdx | 24 +++--- packages/web/src/content/docs/zh-cn/zen.mdx | 65 ++++++++------- 18 files changed, 325 insertions(+), 326 deletions(-) diff --git a/packages/web/src/content/docs/zh-cn/mcp-servers.mdx b/packages/web/src/content/docs/zh-cn/mcp-servers.mdx index eb001563874b..6a5fe2075dbc 100644 --- a/packages/web/src/content/docs/zh-cn/mcp-servers.mdx +++ b/packages/web/src/content/docs/zh-cn/mcp-servers.mdx @@ -169,7 +169,7 @@ opencode自动处理远程MCP服务器的OAuth身份验证。当服务器需要 1. 检测 401 响应并启动 OAuth 流程 2. 如果服务器支持,请使用**动态客户端注册 (RFC 7591)** -3. 安全地存儲Tokens以供将來的请求 +3. 安全地存储Tokens以供将来的请求 --- @@ -189,7 +189,7 @@ opencode自动处理远程MCP服务器的OAuth身份验证。当服务器需要 } ``` -如果服務器需要身份验证,opencode 将在您第一次嘗試使用它時提示您进行身份验证。如果沒有,您可以使用 `timeout`[手动觸發流量](#authenticating)。 +如果服务器需要身份验证,opencode 将在您第一次尝试使用它时提示您进行身份验证。如果没有,您可以使用 `timeout`[手动触发流量](#authenticating)。 --- @@ -218,7 +218,7 @@ opencode自动处理远程MCP服务器的OAuth身份验证。当服务器需要 ### 身份验证 -您可以手动觸發身份验证或管理憑據。 +您可以手动触发身份验证或管理凭据。 使用特定MCP服务器进行身份验证: @@ -232,7 +232,7 @@ opencode mcp auth my-oauth-server opencode mcp list ``` -删除存儲的憑據: +删除存储的凭据: ```bash opencode mcp logout my-oauth-server @@ -297,7 +297,7 @@ opencode mcp debug my-oauth-server ### 全局 -这意味著您可以全局启用或禁用它們。 +这意味著您可以全局启用或禁用它们。 ```json title="opencode.json" {14} { diff --git a/packages/web/src/content/docs/zh-cn/models.mdx b/packages/web/src/content/docs/zh-cn/models.mdx index 1a9b5b4c07a6..84d542efddd4 100644 --- a/packages/web/src/content/docs/zh-cn/models.mdx +++ b/packages/web/src/content/docs/zh-cn/models.mdx @@ -17,7 +17,7 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de ## 选择模型 -配置完提供商後,您可以通过輸入以下內容來选择您想要的模型: +配置完提供商后,您可以通过输入以下内容来选择您想要的模型: ```bash frame="none" /models @@ -27,29 +27,29 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de ## 推荐模型 -那裡有很多模型,每週都会有新模型問世。 +那里有很多模型,每周都会有新模型问世。 :::tip -考慮使用我们推薦的模型之一。 +考虑使用我们推荐的模型之一。 ::: -然而,既擅長生成代碼又擅長工具调用的只有少數。 +然而,既擅长生成代码又擅长工具调用的只有少数。 以下是与 opencode 配合良好的几个模型,排名不分前面。(这不是好看的列表,也不一定是最新的): - GPT 5.2 -- GPT 5.1 法典 -- 近距離工作4.5 -- 克勞德十四行詩 4.5 -- 极小极M2.1 -- 雙子座 3 专業版 +- GPT 5.1 Codex +- Claude Opus 4.5 +- Claude Sonnet 4.5 +- Minimax M2.1 +- Gemini 3 Pro --- ## 设置默认值 -要将其中之一设置为默認模型,您可以在您的 -打開代碼配置。 +要将其中之一设置为默认模型,您可以在您的 +打开代码配置。 ```json title="opencode.json" {3} { @@ -143,14 +143,14 @@ opencode 使用 [AI SDK](https://ai-sdk.dev/) 和 [Models.dev](https://models.de opencode 附带了许多重大的默认变体: -**人擇**: +**Anthropic**: - `high` - 高思维预算(默认) - `max` - 最大预算规划 **OpenAI**: -因模型而異,但大致如下: +因模型而异,但大致如下: - `none` - 没有推理 - `minimal` - 最少的推理工作 @@ -159,18 +159,18 @@ opencode 附带了许多重大的默认变体: - `high` - 高推理能力 - `xhigh` - 极高的推理能力 -**谷歌**: +**Google**: -- `low` - 降低工作量/Tokens預算 -- `high` - 更高的努力/Tokens預算 +- `low` - 降低工作量/Tokens预算 +- `high` - 更高的努力/Tokens预算 :::tip -该列表并不全面。許多其他提供商也有内置的默認值。 +该列表并不全面。许多其他提供商也有内置的默认值。 ::: ### 自定义变体 -您可以覆盖現有變體或添加您自己的變體: +您可以覆盖现有变体或添加您自己的变体: ```jsonc title="opencode.jsonc" {7-18} { @@ -195,7 +195,7 @@ opencode 附带了许多重大的默认变体: } ``` -### 循环变体 +### 切换变体 使用按键绑定`variant_cycle`在变体之间快速切换。 [了解更多](/docs/keybinds)。 @@ -220,4 +220,4 @@ opencode 附带了许多重大的默认变体: 3. 最后使用的模型。 -4. 第一个模型使用内部优先級。 +4. 第一个模型使用内部优先级。 diff --git a/packages/web/src/content/docs/zh-cn/modes.mdx b/packages/web/src/content/docs/zh-cn/modes.mdx index f4c2c78fdd8e..79c437884f5c 100644 --- a/packages/web/src/content/docs/zh-cn/modes.mdx +++ b/packages/web/src/content/docs/zh-cn/modes.mdx @@ -1,6 +1,6 @@ --- title: 模式 -description: 不同的模式適用于不同的用例。 +description: 不同的模式适用于不同的用例。 --- :::caution @@ -13,7 +13,7 @@ opencode 中的模式允许自定义不同的示例行为、工具和提示。 它具有两种内置模式:**构建**和**计划**。您可以定制 这些或通过 opencode 配置配置您自己的。 -您可以在会话期間在模式之間切換或在配置文件中配置它們。 +您可以在会话期间在模式之间切换或在配置文件中配置它们。 --- @@ -25,13 +25,13 @@ opencode 有两种内置模式。 ### 构建 -構建是启用所有工具的**默認**模式。这是開發工作的標準模式,您需要完全访问文件操作和系統命令。 +构建是启用所有工具的**默认**模式。这是开发工作的标准模式,您需要完全访问文件操作和系统命令。 --- ### 计划 -专为規劃和分析而設計的受限模式。在計劃模式下,默認情况下禁用以下工具: +专为规划和分析而设计的受限模式。在计划模式下,默认情况下禁用以下工具: - `write` - 无法创建新文件 - `edit` - 无法修改现有文件,位于 `.opencode/plans/*.md` 的用于详细说明计划本身的文件另外 @@ -52,7 +52,7 @@ opencode 有两种内置模式。 ## 配置 -您可以自定義内置模式或通过配置创建自己的模式。可以通过两种方式配置模式: +您可以自定义内置模式或通过配置创建自己的模式。可以通过两种方式配置模式: ### JSON 配置 @@ -112,7 +112,7 @@ Provide constructive feedback without making direct changes. Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模式)。 -讓我们詳細看看这些配置選項。 +让我们详细看看这些配置选项。 --- @@ -191,7 +191,7 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模 } ``` -该路徑是相对于配置文件所在位置的。所以这適用于 +该路径是相对于配置文件所在位置的。所以这适用于 全局opencode配置和项目特定配置。 --- @@ -217,13 +217,13 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模 } ``` -如果未指定任何工具,则默認启用所有工具。 +如果未指定任何工具,则默认启用所有工具。 --- #### 可用工具 -这裡是所有可以通过模式配置控制的工具。 +这里是所有可以通过模式配置控制的工具。 | 工具 | 描述 | | ----------- | ---------------- | @@ -243,7 +243,7 @@ Markdown 文件名成为模式名称(例如,`review.md` 创建`review` 模 ## 自定义模式 -您可以通过将自定義模式添加到配置來创建自己的自定義模式。以下是使用这两种方法的示例: +您可以通过将自定义模式添加到配置来创建自己的自定义模式。以下是使用这两种方法的示例: ### 使用 JSON 配置 @@ -320,12 +320,12 @@ Priorities: ### 使用案例 -以下是不同模式的一些常見用例。 +以下是不同模式的一些常见用例。 -- **构建模式**:启用所有工具的完整開發工作 -- **计划模式**:分析和計劃,無需更改 -- **审阅模式**:使用只讀访问权限和文档工具進行代碼审阅 +- **构建模式**:启用所有工具的完整开发工作 +- **计划模式**:分析和计划,无需更改 +- **审阅模式**:使用只读访问权限和文档工具进行代码审阅 - **调试模式**:专注于启用bash和读取工具的调查 -- **文档模式**:使用文件操作但不使用系統命令的文档編寫 +- **文档模式**:使用文件操作但不使用系统命令的文档编写 -您可能还会發現不同的模型適用于不同的用例。 +您可能还会发现不同的模型适用于不同的用例。 diff --git a/packages/web/src/content/docs/zh-cn/network.mdx b/packages/web/src/content/docs/zh-cn/network.mdx index f64d099c6536..2ba6b2f481eb 100644 --- a/packages/web/src/content/docs/zh-cn/network.mdx +++ b/packages/web/src/content/docs/zh-cn/network.mdx @@ -1,6 +1,6 @@ --- title: 网络 -description: 配置代理和自定義證書。 +description: 配置代理和自定义证书。 --- opencode支持企业网络环境的标准代理环境变量和自定义证书。 @@ -9,7 +9,7 @@ opencode支持企业网络环境的标准代理环境变量和自定义证书。 ## 代理 -opencode 尊重标准代理环境变量。 +opencode 遵循标准代理环境变量。 ```bash # HTTPS proxy (recommended) @@ -39,7 +39,7 @@ export HTTPS_PROXY=http://username:password@proxy.example.com:8080 ``` :::caution -避免对密碼進行硬編碼。使用環境變量或安全憑證存儲。 +避免对密码进行硬编码。使用环境变量或安全凭证存储。 ::: 对于需要高级身份验证(例如 NTLM 或 Kerberos)的代理,请考虑使用支持您的身份验证方法的 LLM 网关。 diff --git a/packages/web/src/content/docs/zh-cn/permissions.mdx b/packages/web/src/content/docs/zh-cn/permissions.mdx index 47f7ef95dfed..87bcb62ed0dd 100644 --- a/packages/web/src/content/docs/zh-cn/permissions.mdx +++ b/packages/web/src/content/docs/zh-cn/permissions.mdx @@ -1,6 +1,6 @@ --- title: 权限 -description: 控制哪些操作需要批准才能運行。 +description: 控制哪些操作需要批准才能运行。 --- opencode 使用`permission` 配置来决定给定的操作是否应自动运行、提示您或被阻止。 @@ -47,7 +47,7 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行 ## 粒度规则(对象语法) -对于大多數权限,您可以使用对像根據工具輸入应用不同的操作。 +对于大多数权限,您可以使用对象根据工具输入应用不同的操作。 ```json title="opencode.json" { @@ -68,11 +68,11 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行 } ``` -规则通过模式匹配進行評估,**最后匹配的规则獲勝**。常見的模式是将包羅万象的 `"*"` 规则放在前面,然後再放置更具體的规则。 +规则通过模式匹配进行评估,**最后匹配的规则获胜**。常见的模式是将包罗万象的 `"*"` 规则放在前面,然后再放置更具体的规则。 ### 通配符 -权限模式使用簡單的通配符匹配: +权限模式使用简单的通配符匹配: - `*` 匹配零个或多个任意字符 - `?` 恰好匹配一个字符 @@ -80,7 +80,7 @@ opencode 使用`permission` 配置来决定给定的操作是否应自动运行 ### 主目录扩展 -您可以在模式目录中使用 `~` 或 `$HOME` 来引用您的主目录。这对于 [`external_directory`](#external-directories) 规则特别有用。 +您可以在模式目录中使用 `~` 或 `$HOME` 来引用您的主目录。这对于 [`外部目录`](#external_directory) 规则特别有用。 - `~/projects/*` -> `/Users/username/projects/*` - `$HOME/projects/*` -> `/Users/username/projects/*` @@ -133,14 +133,14 @@ opencode权限由工具名称和一些安全防护措施决定: - `edit` — 所有文件修改(头部`edit`、`write`、`patch`、`multiedit`) - `glob` — 文件通配符(匹配通配符模式) - `grep` — 内容搜索(匹配正则表达式模式) -- `list` — 上市目录中的文件(与目录路径匹配) +- `list` — 列出目录中的文件(与目录路径匹配) - `bash` — 运行 shell 命令(匹配 `git status --porcelain` 等解析命令) - `task` — 启动子代理(与子代理类型匹配) - `skill` — 加载技能(与技能名称匹配) - `lsp` — 运行 LSP 查询(当前非粒度) -- `todoread`、`todowrite` — 讀取/更新待辦事項列表 +- `todoread`、`todowrite` — 读取/更新待办事项列表 - `webfetch` — 获取 URL(与 URL 匹配) -- `websearch`、`codesearch` — 網頁/代碼搜索(与查询匹配) +- `websearch`、`codesearch` — 网页/代码搜索(与查询匹配) - `external_directory` — 当工具访问项目工作目录外部的路径时触发 - `doom_loop` — 当相同的工具调用相同的输入重复 3 次时触发 @@ -148,7 +148,7 @@ opencode权限由工具名称和一些安全防护措施决定: ## 默认值 -如果您未指定任何内容,opencode分散许可的默认值开始: +如果您未指定任何内容,opencode将从宽松的默认值开始: - 大部分权限默认为`"allow"`。 - `doom_loop`和`external_directory`默认为`"ask"`。 @@ -171,7 +171,7 @@ opencode权限由工具名称和一些安全防护措施决定: ## “询问”的作用是什么 -当 opencode 提示批准时,UI 会提供清晰的结果: +当 opencode 提示批准时,UI 会提供三种结果: - `once` — 仅批准此请求 - `always` — 批准与建议模式匹配的未来请求(对于当前 opencode 会话的其余部分) diff --git a/packages/web/src/content/docs/zh-cn/plugins.mdx b/packages/web/src/content/docs/zh-cn/plugins.mdx index 3a4a80753c2b..69810e67c781 100644 --- a/packages/web/src/content/docs/zh-cn/plugins.mdx +++ b/packages/web/src/content/docs/zh-cn/plugins.mdx @@ -11,7 +11,7 @@ description: 编写您自己的插件来扩展 opencode。 ## 使用插件 -有两种加載插件的方法。 +有两种加载插件的方法。 --- @@ -22,7 +22,7 @@ description: 编写您自己的插件来扩展 opencode。 - `.opencode/plugins/` - 项目级插件 - `~/.config/opencode/plugins/` - 全局插件 -这些目录中的文件会在启动時自动加載。 +这些目录中的文件会在启动时自动加载。 --- @@ -53,7 +53,7 @@ description: 编写您自己的插件来扩展 opencode。 ### 加载顺序 -插件從所有源加載,所有掛鉤按顺序運行。加載顺序为: +插件从所有源加载,所有挂钩按顺序运行。加载顺序为: 1. 全局配置 (`~/.config/opencode/opencode.json`) 2. 项目配置(`opencode.json`) @@ -67,7 +67,7 @@ description: 编写您自己的插件来扩展 opencode。 ## 创建一个插件 插件是一个 **JavaScript/TypeScript 模块多个**,它导出一个或插件 -功能。每个函數接收一个上下文对象并返回一个鉤子对象。 +功能。每个函数接收一个上下文对象并返回一个钩子对象。 --- @@ -113,7 +113,7 @@ export const MyPlugin = async ({ project, client, $, directory, worktree }) => { } ``` -插件函數接收: +插件函数接收: - `project`:当前项目信息。 - `directory`:当前工作目录。 @@ -141,7 +141,7 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree ### 事件 -插件可以訂閱事件,如下面的示例部分所示。以下是可用的不同事件的列表。 +插件可以订阅事件,如下面的示例部分所示。以下是可用的不同事件的列表。 #### 命令事件 @@ -217,7 +217,7 @@ export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree ### 发送通知 -当某些事件發生時發送通知: +当某些事件发生时发送通知: ```js title=".opencode/plugins/notification.js" export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => { @@ -306,7 +306,7 @@ export const CustomToolsPlugin: Plugin = async (ctx) => { - `args`:Zod 模式的工具参数 - `execute`:调用工具时运行的函数 -您的自定義工具将可与内置工具一起用于opencode。 +您的自定义工具将可与内置工具一起用于opencode。 --- @@ -333,7 +333,7 @@ export const MyPlugin = async ({ client }) => { ### 压缩钩子 -自定義壓縮会话時包含的上下文: +自定义压缩会话时包含的上下文: ```ts title=".opencode/plugins/compaction.ts" import type { Plugin } from "@opencode-ai/plugin" diff --git a/packages/web/src/content/docs/zh-cn/providers.mdx b/packages/web/src/content/docs/zh-cn/providers.mdx index b9b35d6195fa..5b064e4ac0ed 100644 --- a/packages/web/src/content/docs/zh-cn/providers.mdx +++ b/packages/web/src/content/docs/zh-cn/providers.mdx @@ -85,7 +85,7 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 ## 目录 -讓我们詳細瞭解一些提供商。如果您想将提供商添加到 +让我们详细了解一些提供商。如果您想将提供商添加到 列表,请随时开启PR。 :::note @@ -156,7 +156,7 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 export AWS_REGION=us-east-1 ``` - #### 配置文件(推薦) + #### 配置文件(推荐) For project-specific or persistent configuration, use `opencode.json`: @@ -174,13 +174,13 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 } ``` - **可用選項:** + **可用选项:** - `region` - AWS 区域(例如 `us-east-1`、`eu-west-1`) - `profile` - 来自 `~/.aws/credentials` 的 AWS 命名配置档案 - `endpoint` - VPC 节点节点的自定义节点 URL(通用 `baseURL` 选项的别名) :::提示 - 配置文件選項优先于环境变量。 + 配置文件选项优先于环境变量。 ::: #### 高阶:VPC 端点 @@ -206,13 +206,13 @@ OpenCode Zen 是opencode团队提供的模型列表,这些模型已被 `endpoint` 选项是通用 `baseURL` 选项的别名,使用 AWS 术语特定。如果同时指定了 `endpoint` 和 `baseURL`,则 `endpoint` 优先。 ::: - #### 認證方式 + #### 认证方式 - **`AWS_ACCESS_KEY_ID` / `AWS_SECRET_ACCESS_KEY`**:创建IAM用户并在AWS控制台中生成访问金币。 - **`AWS_PROFILE`**:使用 `~/.aws/credentials` 中的命名配置文件。首先配置 `aws configure --profile my-profile` 或 `aws sso login` - **`AWS_BEARER_TOKEN_BEDROCK`**:从 Amazon Bedrock 控制台生成长期 API 密钥 - **`AWS_WEB_IDENTITY_TOKEN_FILE` / `AWS_ROLE_ARN`**:适用于 EKS IRSA(服务账户的 IAM 角色)或具有 OIDC 联合的其他 Kubernetes 环境。使用服务账户注释时,这些环境变量由 Kubernetes 自动注入。 - #### 認證优先顺序 + #### 认证优先顺序 Amazon Bedrock 使用以下身份验证优先顺序: 1. **不记名Tokens** - `AWS_BEARER_TOKEN_BEDROCK`环境变化数据或来自`/connect`Tokens的Tokens @@ -663,7 +663,7 @@ GitLab Duo 通过 GitLab 的人工代理提供具有本机工具呼叫功能的 2. 单击**添加新Tokens** 3. Name: `OpenCode`, Scopes: `api` 4. 复制Tokens(以 `glpat-` 发起人) - 5. 在终端中輸入 + 5. 在终端中输入 3. 执行 `/models` 命令查看可用模型。 @@ -834,7 +834,7 @@ Google Vertex AI 与 opencode 结合使用: 2. 设置所需的环境变量: - `GOOGLE_CLOUD_PROJECT`:您的Google云专案ID - `VERTEX_LOCATION`(可选):Vertex AI的区域(默认为`global`) - - 身份验证(选择一項): + - 身份验证(选择一项): - `GOOGLE_APPLICATION_CREDENTIALS`:服务帐户 JSON 密钥文件的路径 - 使用 gcloud CLI 进行身份验证:`gcloud auth application-default login` @@ -903,7 +903,7 @@ The `global` region improves availability and reduces errors at no extra cost. U /connect ``` -3. 輸入您的擁抱臉標記。 +3. 输入您的 Hugging Face API 密钥。 ```txt ┌ API key @@ -949,7 +949,7 @@ The `global` region improves availability and reduces errors at no extra cost. U For more providers and advanced features like caching and rate limiting, check the [Helicone documentation](https://docs.helicone.ai). -#### 可選配置 +#### 可选配置 如果您发现Helicone的某些功能或模型未通过opencode自动配置,您始终可以自行配置。 @@ -979,7 +979,7 @@ Here's [Helicone's Model Directory](https://helicone.ai/models), you'll need thi } ``` -#### 自定義標頭 +#### 自定义标头 Helicone 支持快速获取、用户跟踪和会话管理等功能的自定义标头。使用 `options.headers` 将它们添加到您提供的方案配置中: @@ -1002,7 +1002,7 @@ Helicone 支持快速获取、用户跟踪和会话管理等功能的自定义 } ``` -##### 会话跟蹤 +##### 会话跟踪 Helicone's [Sessions](https://docs.helicone.ai/features/sessions) feature lets you group related LLM requests together. Use the [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) plugin to automatically log each opencode conversation as a session in Helicone. @@ -1022,7 +1022,7 @@ npm install -g opencode-helicone-session ##### 常见螺旋接头 -| 標題 | 描述 | +| 标题 | 描述 | | -------------------------- | ----------------------------------------------------- | | `Helicone-Cache-Enabled` | Enable response caching (`true`/`false`) | | `Helicone-User-Id` | 点击用户跟踪指标 | @@ -1635,9 +1635,9 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G } ``` -一些有用的路由選項: +一些有用的路由选项: -| 選項 | 描述 | +| 选项 | 描述 | | ------------------- | ---------------------- | | `order` | 提供商尝试顺序 | | `only` | 限制特定提供商 | @@ -1816,7 +1816,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G } ``` - 以下是配置選項: + 以下是配置选项: - **npm**:要使用AI的SDK包,`@ai-sdk/openai-compatible`用于OpenAI兼容的事业 - **名称**:UI中的显示名称。 - **模型**:可用模型。 @@ -1824,7 +1824,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G - **options.apiKey**:如果不使用身份验证,可以选择设置API 密钥。 - **options.headers**:可选择设置自定义标头。 - 有關高階選項的更多資訊,请參見下面的示例。 + 有关高阶选项的更多资讯,请参见下面的示例。 5. 执行 `/models` 命令,您提供的自定义程序和模型将出现在选择列表中。 @@ -1875,7 +1875,7 @@ Vercel AI Gateway 可以让您跨统一端点访问来自 OpenAI、Anthropic、G ## 故障排除 -如果您在配置提供商時遇到問題,请检查以下內容: +如果您在配置提供商时遇到问题,请检查以下内容: 1. **Check the auth setup**: Run `opencode auth list` to see if the credentials 提供商的配置已添加到您的配置中。 diff --git a/packages/web/src/content/docs/zh-cn/rules.mdx b/packages/web/src/content/docs/zh-cn/rules.mdx index c9135c2994dd..0ad73b33ff1f 100644 --- a/packages/web/src/content/docs/zh-cn/rules.mdx +++ b/packages/web/src/content/docs/zh-cn/rules.mdx @@ -1,6 +1,6 @@ --- title: 规则 -description: 设置opencode的自定義指令。 +description: 设置opencode的自定义指令。 --- 您可以通过 `AGENTS.md` 文件创建 opencode 的自定义指令。这和 Cursor 的规则类似。它包含将包含在 LLM 上下文中的说明,方便您的特定项目自定义其行为。 @@ -48,7 +48,7 @@ This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for - Import shared modules using workspace names: `@my-app/core/example` ``` -我们在此處添加特定于項目的說明,这将在您的團隊中共享。 +我们在此处添加特定于项目的说明,这将在您的团队中共享。 --- @@ -66,7 +66,7 @@ opencode 还支持从多个位置读取 `AGENTS.md` 文件。这有不同的目 由于此未提交给 Git 或与您的团队共享,因此我们建议使用它来指定 LLM 应遵循的任何个人规则。 -### 克勞德代碼兼容性 +### 克劳德代码兼容性 Error 500 (Server Error)!!1500.That’s an error.There was an error. Please try again later.That’s all we know. @@ -118,7 +118,7 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills } ``` -遠程指令的获取有 5 秒的超時時間。 +远程指令的获取有 5 秒的超时时间。 所有说明文件均与您的`AGENTS.md`文件合并。 @@ -168,9 +168,9 @@ For testing strategies and coverage requirements: @test/testing-guidelines.md Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md. ``` -这種方法允许您: +这种方法允许您: -- 创建模塊化、可重用的规则文件 +- 创建模块化、可重用的规则文件 - 通过符号链接或git子模块在项目之间共享规则 - 保持 AGENTS.md 简洁,同时参考详细指南 - 确保opencode仅在特定任务需要时加载文件 diff --git a/packages/web/src/content/docs/zh-cn/sdk.mdx b/packages/web/src/content/docs/zh-cn/sdk.mdx index 0a8f63fa1753..4b6929b627f1 100644 --- a/packages/web/src/content/docs/zh-cn/sdk.mdx +++ b/packages/web/src/content/docs/zh-cn/sdk.mdx @@ -33,7 +33,7 @@ import { createOpencode } from "@opencode-ai/sdk" const { client } = await createOpencode() ``` -这会同時启动服务器和客戶端 +这会同时启动服务器和客户端 #### 选项 @@ -99,7 +99,7 @@ SDK 包括所有 API 型以外的 TypeScript 定义。直接汇入其中: import type { Session, Message, Part } from "@opencode-ai/sdk" ``` -所有型別均根據服务器的 OpenAPI 規範生成,并可在 型別文件 中找到。 +所有型别均根据服务器的 OpenAPI 规范生成,并可在 型别文件 中找到。 --- @@ -192,7 +192,7 @@ const currentProject = await client.project.current() | 方法 | 描述 | 回应 | | ------------ | ------------ | ---------------------------------------- | -| `path.get()` | 获取当前路徑 | 路徑 | +| `path.get()` | 获取当前路径 | 路径 | --- @@ -209,7 +209,7 @@ const pathInfo = await client.path.get() | 方法 | 描述 | 回应 | | -------------------- | -------------------- | --------------------------------------------------------------------------------------------------- | -| `config.get()` | 获取配置資訊 | 配置 | +| `config.get()` | 获取配置资讯 | 配置 | | `config.providers()` | 列出提供商和默认模型 | `{ providers: `提供商[]`, default: { [key: string]: string } }` | --- @@ -226,14 +226,14 @@ const { providers, default: defaults } = await client.config.providers() ### 会话 -| 方法 | 描述 | 筆記 | +| 方法 | 描述 | 备注 | | ---------------------------------------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------------------------------------------- | | `session.list()` | 列出会话 | 返回 Session[] | | `session.get({ path })` | 获取会话 | 返回 会话 | | `session.children({ path })` | 列出子会话 | 返回 Session[] | | `session.create({ body })` | 建立会话 | 返回 会话 | | `session.delete({ path })` | 离开会话 | 返回`boolean` | -| `session.update({ path, body })` | 更新会话屬性 | 返回 会话 | +| `session.update({ path, body })` | 更新会话属性 | 返回 会话 | | `session.init({ path, body })` | Analyze app and create `AGENTS.md` | Returns `boolean` | | `session.abort({ path })` | 中止正在执行的会话 | 返回`boolean` | | `session.share({ path })` | 分享会 | 返回 会话 | @@ -241,7 +241,7 @@ const { providers, default: defaults } = await client.config.providers() | `session.summarize({ path, body })` | 会议总结 | 返回`boolean` | | `session.messages({ path })` | 列出会话中的消息 | 返回 `{ info: `消息`, parts: `部分[]`}[]` | | `session.message({ path })` | 获取消息详情 | 返回 `{ info: `消息`, parts: `部分[]`}` | -| `session.prompt({ path, body })` | 发送提示資訊 | `body.noReply: true` 返回 UserMessage(仅限上下文)。默认返回 AssistantMessage 以及 AI 響应 | +| `session.prompt({ path, body })` | 发送提示资讯 | `body.noReply: true` 返回 UserMessage(仅限上下文)。默认返回 AssistantMessage 以及 AI 响应 | | `session.command({ path, body })` | 向会话发送命令 | 返回 `{ info: `AssistantMessage`, parts: `部分[]`}` | | `session.shell({ path, body })` | 执行 shell 命令 | 返回 AssistantMessage | | `session.revert({ path, body })` | 回复消息 | 返回 会话 | @@ -287,9 +287,9 @@ await client.session.prompt({ | ------------------------- | -------------------- | ----------------------------------------------------------------------------------- | | `find.text({ query })` | 搜索档案中文字 | 具有 `path`、`lines`、`line_number`、`absolute_offset`、`submatches` 的匹配对象数组 | | `find.files({ query })` | 按名称查询档案和目录 | `string[]`(路径) | -| `find.symbols({ query })` | 查询工作区符號 | 符號[] | +| `find.symbols({ query })` | 查询工作区符号 | 符号[] | | `file.read({ query })` | 读取档案 | `{ type: "raw" \| "patch", content: string }` | -| `file.status({ query? })` | 获取跟蹤文件的狀態 | 文件[] | +| `file.status({ query? })` | 获取跟踪文件的状态 | 文件[] | `find.files` 支持一些可选的查询栏位: diff --git a/packages/web/src/content/docs/zh-cn/server.mdx b/packages/web/src/content/docs/zh-cn/server.mdx index 27604021a004..fafff87d7c3a 100644 --- a/packages/web/src/content/docs/zh-cn/server.mdx +++ b/packages/web/src/content/docs/zh-cn/server.mdx @@ -44,7 +44,7 @@ OPENCODE_SERVER_PASSWORD=your-password opencode serve --- -### 它是如何運作的 +### 它是如何运作的 When you run `opencode` it starts a TUI and a server. Where the TUI is the 与服务器器对话的客户端。服务器器公开 OpenAPI 3.1 规范 @@ -61,7 +61,7 @@ opencode TUI running, `opencode serve` will start a new server. --- -#### 连接到現有服务器 +#### 连接到现有服务器 当您启动 TUI 时,它会随机分配端口和主机名。您可以重新设置 `--hostname` 和 `--port` [flags](/docs/cli)。使用它连线到其服务器然后器。 @@ -69,7 +69,7 @@ opencode TUI running, `opencode serve` will start a new server. --- -## 規格 +## 规格 服务器发布了OpenAPI 3.1规范,可以在以下位置查看: @@ -89,7 +89,7 @@ opencode服务器公开以下API。 ### 全局 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | ---------------- | ------------------------ | ------------------------------------ | | `GET` | `/global/health` | 获取服务器运行状况和版本 | `{ healthy: true, version: string }` | | `GET` | `/global/event` | 获取全域性事件(SSE 流) | 事件流 | @@ -98,7 +98,7 @@ opencode服务器公开以下API。 ### 项目 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | ------------------ | ------------ | ------------------------------------------ | | `GET` | `/project` | 列出所有专案 | 专案[] | | `GET` | `/project/current` | 获取当前专案 | 专案 | @@ -107,16 +107,16 @@ opencode服务器公开以下API。 ### 路径和VCS -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | ------- | ----------------------- | ------------------------------------------- | -| `GET` | `/path` | 获取当前路徑 | 路徑 | -| `GET` | `/vcs` | 获取当前专案的 VCS 資訊 | VcsInfo | +| `GET` | `/path` | 获取当前路径 | 路径 | +| `GET` | `/vcs` | 获取当前专案的 VCS 资讯 | VcsInfo | --- -### 例項 +### 例项 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ------ | ------------------- | -------------- | --------- | | `POST` | `/instance/dispose` | 执行当前实例项 | `boolean` | @@ -124,9 +124,9 @@ opencode服务器公开以下API。 ### 配置 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ------- | ------------------- | -------------------- | -------------------------------------------------------------------------------------- | -| `GET` | `/config` | 获取配置資訊 | 配置 | +| `GET` | `/config` | 获取配置资讯 | 配置 | | `PATCH` | `/config` | 更新配置 | 配置 | | `GET` | `/config/providers` | 列出提供商和默认模型 | `{ providers: `提供商[]`, default: { [key: string]: string } }` | @@ -134,33 +134,33 @@ opencode服务器公开以下API。 ### 提供商 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ------ | -------------------------------- | ----------------------- | --------------------------------------------------------------------------------- | | `GET` | `/provider` | 列出所有提供商 | `{ all: `提供商[]`, default: {...}, connected: string[] }` | | `GET` | `/provider/auth` | 获取提供商身份验证方法 | `{ [providerID: string]: `ProviderAuthMethod[]` }` | -| `POST` | `/provider/{id}/oauth/authorize` | 使用 OAuth 授權提供商 | ProviderAuthAuthorization | +| `POST` | `/provider/{id}/oauth/authorize` | 使用 OAuth 授权提供商 | ProviderAuthAuthorization | | `POST` | `/provider/{id}/oauth/callback` | 处理提供商的 OAuth 回调 | `boolean` | --- ### 会话 -| 方法 | 路徑 | 描述 | 筆記 | +| 方法 | 路径 | 描述 | 笔记 | | -------- | ---------------------------------------- | ---------------------------------- | -------------------------------------------------------------------------------- | | `GET` | `/session` | 列出所有会话 | 返回 Session[] | | `POST` | `/session` | 建立新会话 | 正文: `{ parentID?, title? }`,返回 Session | -| `GET` | `/session/status` | 获取所有会话的会话狀態 | 返回 `{ [sessionID: string]: `SessionStatus` }` | +| `GET` | `/session/status` | 获取所有会话的会话状态 | 返回 `{ [sessionID: string]: `SessionStatus` }` | | `GET` | `/session/:id` | 获取会话详细信息 | 返回会话 | | `DELETE` | `/session/:id` | 删除会话及所有资料 | 返回`boolean` | -| `PATCH` | `/session/:id` | 更新会话屬性 | 正文: `{ title? }`,返回 Session | +| `PATCH` | `/session/:id` | 更新会话属性 | 正文: `{ title? }`,返回 Session | | `GET` | `/session/:id/children` | 获取会话的子会话 | 返回 Session[] | -| `GET` | `/session/:id/todo` | 获取会话的待辦事項列表 | 返回 Todo[] | +| `GET` | `/session/:id/todo` | 获取会话的待办事项列表 | 返回 Todo[] | | `POST` | `/session/:id/init` | Analyze app and create `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returns `boolean` | -| `POST` | `/session/:id/fork` | 在消息中分叉現有会话 | 正文: `{ messageID? }`,返回 Session | +| `POST` | `/session/:id/fork` | 在消息中分叉现有会话 | 正文: `{ messageID? }`,返回 Session | | `POST` | `/session/:id/abort` | 中止正在执行的会话 | 返回`boolean` | | `POST` | `/session/:id/share` | 分享会话 | 返回会话 | | `DELETE` | `/session/:id/share` | 取消共享会话 | 返回会话 | -| `GET` | `/session/:id/diff` | 获取本次会话的差異 | 查询:`messageID?`,返回 FileDiff[] | +| `GET` | `/session/:id/diff` | 获取本次会话的差异 | 查询:`messageID?`,返回 FileDiff[] | | `POST` | `/session/:id/summarize` | 会议总结 | 正文:`{ providerID, modelID }`,返回 `boolean` | | `POST` | `/session/:id/revert` | 回复讯息 | 正文:`{ messageID, partID? }`,返回 `boolean` | | `POST` | `/session/:id/unrevert` | 恢复所有已恢复的消息 | 返回`boolean` | @@ -170,20 +170,20 @@ opencode服务器公开以下API。 ### 留言 -| 方法 | 路徑 | 描述 | 筆記 | +| 方法 | 路径 | 描述 | 笔记 | | ------ | --------------------------------- | -------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------- | | `GET` | `/session/:id/message` | 列出会话中的消息 | 查询: `limit?`,返回 `{ info: `消息`, parts: `Part[]`}[]` | | `POST` | `/session/:id/message` | 发送消息并等待回复 | 正文: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`,返回 `{ info: `消息`, parts: `部分[]`}` | | `GET` | `/session/:id/message/:messageID` | 获取消息详情 | 返回 `{ info: `消息`, parts: `部分[]`}` | | `POST` | `/session/:id/prompt_async` | 非同步传送消息(休眠等待) | 主体:与 `/session/:id/message` 相同,返回 `204 No Content` | -| `POST` | `/session/:id/command` | 执行斜槓命令 | 正文: `{ messageID?, agent?, model?, command, arguments }`,返回 `{ info: `消息`, parts: `部分[]`}` | +| `POST` | `/session/:id/command` | 执行斜杠命令 | 正文: `{ messageID?, agent?, model?, command, arguments }`,返回 `{ info: `消息`, parts: `部分[]`}` | | `POST` | `/session/:id/shell` | 执行 shell 命令 | 正文: `{ agent, model?, command }`,返回 `{ info: `消息`, parts: `部分[]`}` | --- ### 命令 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | ---------- | ------------ | ------------------------------------------ | | `GET` | `/command` | 列出所有命令 | 命令[] | @@ -191,14 +191,14 @@ opencode服务器公开以下API。 ### 文件 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | ------------------------ | -------------------- | ----------------------------------------------------------------------------------- | | `GET` | `/find?pattern=` | 搜索文件中的文字 | 具有 `path`、`lines`、`line_number`、`absolute_offset`、`submatches` 的匹配对像数组 | -| `GET` | `/find/file?query=` | 按名称查询文件和目录 | `string[]`(路徑) | -| `GET` | `/find/symbol?query=` | 查询工作区符號 | 符號[] | +| `GET` | `/find/file?query=` | 按名称查询文件和目录 | `string[]`(路径) | +| `GET` | `/find/symbol?query=` | 查询工作区符号 | 符号[] | | `GET` | `/file?path=` | 列出文件和目录 | FileNode[] | -| `GET` | `/file/content?path=

` | 讀取文件 | 文件內容 | -| `GET` | `/file/status` | 获取跟蹤文件的狀態 | 文件[] | +| `GET` | `/file/content?path=

` | 读取文件 | 文件内容 | +| `GET` | `/file/status` | 获取跟踪文件的状态 | 文件[] | #### `/find/file` 查询参数 @@ -210,9 +210,9 @@ opencode服务器公开以下API。 --- -### 工具(實驗) +### 工具(实验) -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | ------------------------------------------- | ---------------------------- | -------------------------------------------- | | `GET` | `/experimental/tool/ids` | 列出所有工具 ID | 工具ID | | `GET` | `/experimental/tool?provider=

&model=` | 列出具有模型 JSON 模式的工具 | 工具列表 | @@ -221,18 +221,18 @@ opencode服务器公开以下API。 ### LSP、格式化程式和 MCP -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ------ | ------------ | ------------------- | ------------------------------------------------------ | -| `GET` | `/lsp` | 获取 LSP 服务器狀態 | LSPStatus[] | -| `GET` | `/formatter` | 获取格式化程式狀態 | FormatterStatus[] | -| `GET` | `/mcp` | 获取 MCP 服务器狀態 | `{ [name: string]: `MCP狀態` }` | +| `GET` | `/lsp` | 获取 LSP 服务器状态 | LSPStatus[] | +| `GET` | `/formatter` | 获取格式化程式状态 | FormatterStatus[] | +| `GET` | `/mcp` | 获取 MCP 服务器状态 | `{ [name: string]: `MCP状态` }` | | `POST` | `/mcp` | 动态添加 MCP 服务器 | 主体:`{ name, config }`,返回 MCP 状态对象 | --- ### 代理商 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | -------- | ------------------ | ------------------------------------------ | | `GET` | `/agent` | 列出所有可用的代理 | 代理[] | @@ -240,7 +240,7 @@ opencode服务器公开以下API。 ### 日志 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ------ | ------------------------------------------- | ------ | -------------------- | | `POST` | 身体:`{ service, level, message, extra? }` | `/log` | 写入日志。 `boolean` | @@ -248,7 +248,7 @@ opencode服务器公开以下API。 ### TUI -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ------ | ----------------------- | ----------------------------------------- | ------------ | | `POST` | `/tui/append-prompt` | 将文字附加到提示 | `boolean` | | `POST` | `/tui/open-help` | 开启帮助对话方块 | `boolean` | @@ -266,7 +266,7 @@ opencode服务器公开以下API。 ### 授权 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | ----------- | ------------------------------------------ | --------- | | `PUT` | `/auth/:id` | 设置身份验证凭据。正文必须与提供商架构匹配 | `boolean` | @@ -274,7 +274,7 @@ opencode服务器公开以下API。 ### 活动 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | -------- | ------------------------------------------------------------------- | ------------------ | | `GET` | `/event` | 服务器发送事件流。第一个事件是 `server.connected`,之后是总线事件。 | 服务器发送事件流。 | @@ -282,6 +282,6 @@ opencode服务器公开以下API。 ### 文档 -| 方法 | 路徑 | 描述 | 回应 | +| 方法 | 路径 | 描述 | 回应 | | ----- | ------ | --------------- | ------------------------- | | `GET` | `/doc` | 开启API 3.1规范 | 具有OpenAPI规范的HTML页面 | diff --git a/packages/web/src/content/docs/zh-cn/share.mdx b/packages/web/src/content/docs/zh-cn/share.mdx index e73eac373d18..484e49f87033 100644 --- a/packages/web/src/content/docs/zh-cn/share.mdx +++ b/packages/web/src/content/docs/zh-cn/share.mdx @@ -6,24 +6,24 @@ description: 分享您的 opencode 对话。 opencode 的共享功能允许您建立指向 opencode 对话的公共链接,以便您可以与蓝牙进行战斗或从其他人那里获得帮助。 :::note -任何知道链接的人都可以公開访问共享对话。 +任何知道链接的人都可以公开访问共享对话。 ::: --- -## 它是如何運作的 +## 它是如何运作的 当您分享对话时,opencode: 1. 为您的会话建立唯一的公共 URL -2. 将您的对话歷史記錄同步到我们的服务器 +2. 将您的对话历史记录同步到我们的服务器 3. 通过可共享链接访问对话 — `opncd.ai/s/` --- ## 分享 -opencode 支持清晰控制对话共享方式的共享模式: +opencode 支持三种控制对话共享方式的共享模式: --- @@ -35,7 +35,7 @@ opencode 支持清晰控制对话共享方式的共享模式: /share ``` -这将生成一个唯一的 URL,将其复制到您的剪贴簿中。 +这将生成一个唯一的 URL,将其复制到您的剪贴板中。 要在[配置文件](/docs/config) 中显式设置手动模式: @@ -50,7 +50,7 @@ opencode 支持清晰控制对话共享方式的共享模式: ### 自动分享 -您可以通过将 [config file](/docs/config) 中的 `share` 选项设置为 `"auto"` 来为所有新对话启用自动共享: +您可以通过将 [配置文件](/docs/config) 中的 `share` 选项设置为 `"auto"` 来为所有新对话启用自动共享: ```json title="opencode.json" { @@ -59,13 +59,13 @@ opencode 支持清晰控制对话共享方式的共享模式: } ``` -启用自动共享後,每个新对话都会自动共享并生成链接。 +启用自动共享后,每个新对话都会自动共享并生成链接。 --- ### 已禁用 -您可以通过将 [config file](/docs/config) 中的 `share` 选项设置为 `"disabled"` 来完全禁用共享: +您可以通过将 [配置文件](/docs/config) 中的 `share` 选项设置为 `"disabled"` 来完全禁用共享: ```json title="opencode.json" { @@ -74,13 +74,13 @@ opencode 支持清晰控制对话共享方式的共享模式: } ``` -To enforce this across your team for a given project, add it to the `opencode.json` in your project and check into Git. +为了在您的团队中针对特定项目强制执行此操作,请将其添加到您项目的 `opencode.json` 文件中,并将其提交到Git。 --- ## 取消共享 -要停止共享对话并将其從公共访问中删除: +要停止共享对话并将其从公共访问中删除: ``` /unshare @@ -90,39 +90,39 @@ To enforce this across your team for a given project, add it to the `opencode.js --- -## 隱私 +## 隐私 -分享对话時需要記住一些事項。 +分享对话时需要记住一些事项。 --- ### 数据保留 -共享对话仍然可以访问,直到您明確取消共享。这 +共享对话仍然可以访问,直到您明确取消共享。这 包括: -- 完整的对话歷史記錄 +- 完整的对话历史记录 - 所有消息和回复 - 会话元数据 --- -### 建議 +### 建议 -- 仅共享不包含敏感資訊的对话。 -- 分享之前查看对话內容。 -- 協作完成後取消共享对话。 -- 避免与专有程式碼或機密数据共享对话。 -- 对于敏感专案,完全禁用共享。 +- 仅共享不包含敏感资讯的对话。 +- 分享之前查看对话内容。 +- 协作完成后取消共享对话。 +- 避免共享包括专有代码或机密数据的对话。 +- 对于敏感项目,完全禁用共享。 --- -## 对于企業 +## 对于企业 -对于企業部署,共享功能可以是: +对于企业部署,共享功能可以是: -- **出于安全合規性完全禁用** +- **出于安全合规性完全禁用** - **仅限** 仅通过 SSO 进行身份验证的用户 -- **在您自己的基礎設施上自行託管** +- **在您自己的基础设施上自行托管** [了解更多关于在您的组织中使用opencode的](/docs/enterprise)。 diff --git a/packages/web/src/content/docs/zh-cn/skills.mdx b/packages/web/src/content/docs/zh-cn/skills.mdx index f5c588d1ed2c..f708a6812a68 100644 --- a/packages/web/src/content/docs/zh-cn/skills.mdx +++ b/packages/web/src/content/docs/zh-cn/skills.mdx @@ -1,10 +1,10 @@ --- -title: 《代理技巧》 -description: “贯穿 SKILL.md 定义可重用行为” +title: 代理技能 +description: “通过 SKILL.md 定义可复用的行为” --- -代理让 opencode 技能从您的存储库或主目录中找到可重用的指令。 -技能贯穿本机 `skill` 工具输入导入 - 代理可以查看可用技能并可以在需要时加载完整内容。 +代理技能使 OpenCode 能够从您的仓库或主目录中发现可重用的指令。 +技能通过原生 `skill` 工具输入导入 - 代理可以查看可用技能并可以在需要时加载完整内容。 --- @@ -34,7 +34,7 @@ Global definitions are also loaded from `~/.config/opencode/skills/*/SKILL.md`, ## 编写 Frontmatter 每个 `SKILL.md` 必须以 YAML frontmatter 。 -仅識別这些欄位: +仅识别这些栏位: - `name`(必填) - `description`(必填) @@ -50,13 +50,13 @@ Global definitions are also loaded from `~/.config/opencode/skills/*/SKILL.md`, `name` 必须: -- 長度为 1–64 个字元 -- 为小寫字母數字并带有單个連字元分隔符 -- 不以 `-` 開始或結束 -- 不包含連續的 `--` +- 长度为 1–64 个字元 +- 为小写字母数字并带有单个连字元分隔符 +- 不以 `-` 开始或结束 +- 不包含连续的 `--` - 匹配包含 `SKILL.md` 的目录名 -等效的正規表示式: +等效的正规表示式: ```text ^[a-z0-9]+(-[a-z0-9]+)*$ @@ -67,7 +67,7 @@ Global definitions are also loaded from `~/.config/opencode/skills/*/SKILL.md`, ## 遵循长度规则 `description` 必须是 1-1024 个字元。 -保持足夠具體,以便代理能夠正确选择。 +保持足够具体,以便代理能够正确选择。 --- @@ -114,7 +114,7 @@ opencode 列出了 `skill` 工具描述中的可用技能。 ``` -代理通过呼叫工具來載入技能: +代理通过呼叫工具来载入技能: ``` skill({ name: "git-release" }) @@ -139,7 +139,7 @@ Control which skills agents can access using pattern-based permissions in `openc } ``` -| 許可 | 行为 | +| 许可 | 行为 | | ------- | -------------------------- | | `allow` | 技能立即加载 | | `deny` | 对特工隐藏技能,访问被拒绝 | @@ -153,7 +153,7 @@ Control which skills agents can access using pattern-based permissions in `openc 为特定代理授予与全域性默认权限不同的权限。 -**对于自定義代理**(在代理前言中): +**对于自定义代理**(在代理前言中): ```yaml --- @@ -185,7 +185,7 @@ permission: 完全禁用不应该使用技能的特工: -**对于定製代理**: +**对于定制代理**: ```yaml --- @@ -194,7 +194,7 @@ tools: --- ``` -**对于內建代理**: +**对于内建代理**: ```json { @@ -208,15 +208,15 @@ tools: } ``` -禁用後,`` 部分将被完全省略。 +禁用后,`` 部分将被完全省略。 --- ## 解决加载问题 -如果某項技能沒有显示: +如果某项技能没有显示: 1. 验证 `SKILL.md` 拼写为全部大写 2. 检查 frontmatter 是否包括 `name` 和 `description` -3. 確保技能名称在所有位置都是唯一的 +3. 确保技能名称在所有位置都是唯一的 4. 查询权限——具有`deny`的代理隐藏技能 diff --git a/packages/web/src/content/docs/zh-cn/themes.mdx b/packages/web/src/content/docs/zh-cn/themes.mdx index 2f28f15d55b2..a885fed19baa 100644 --- a/packages/web/src/content/docs/zh-cn/themes.mdx +++ b/packages/web/src/content/docs/zh-cn/themes.mdx @@ -1,6 +1,6 @@ --- title: 主题 -description: 选择內建主题或定義您自己的主题。 +description: 选择内建主题或定义您自己的主题。 --- 使用 opencode,您可以从多个内建主题中进行选择,使用适合您的终端主题的主题,或定义您自己的自定义主题。 @@ -11,13 +11,13 @@ By default, opencode uses our own `opencode` theme. ## 终端要求 -为了使主题能夠正确显示完整的调色板,您的终端必須支持**真彩色**(24 位顏色)。大多數现代终端默认支持此功能,但您可能需要启用它: +为了使主题能够正确显示完整的调色板,您的终端必须支持**真彩色**(24 位颜色)。大多数现代终端默认支持此功能,但您可能需要启用它: - **检查支持**:执行 `echo $COLORTERM` - 它应该输出 `truecolor` 或 `24bit` - **启用真彩色**:在shell配置文件中设置环境变量`COLORTERM=truecolor` - **您的终端兼容性**:确保终端模拟器支持24位颜色(大多数现代终端,​​​​如iTerm2、Alacritty、Kitty、Windows终端和最新版本的GNOME终端都支持) -如果沒有真彩色支持,主题的顏色精度可能会降低或回落到最接近的 256 色近似值。 +如果没有真彩色支持,主题的颜色精度可能会降低或回落到最接近的 256 色近似值。 --- @@ -39,7 +39,7 @@ opencode 带有几个内建主题。 | `matrix` | 骇客风格黑底绿主题 | | `one-dark` | Based on the [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark theme | -此外,我们还在不斷添加新主题。 +此外,我们还在不断添加新主题。 --- @@ -47,15 +47,15 @@ opencode 带有几个内建主题。 `system` 主题旨在自动适应您的最终方案。与使用固定颜色的传统主题不同,_system_ 主题: -- **生成灰度**:根據终端的背景顏色建立自定義灰度,確保最佳对比度。 +- **生成灰度**:根据终端的背景颜色建立自定义灰度,确保最佳对比度。 - **使用 ANSI 颜色**:使用标准 ANSI 颜色 (0-15) 进行语法突出显示和 UI 元素,尊重 Windows 的调色盘。 - **保留默认设置**:使用 `none` 作为文字和背景颜色以保持本机的外观。 -系統主题適合以下用户: +系统主题适合以下用户: - 希望 opencode 与终端的外观相匹配 -- 使用自定義终端配色方案 -- 希望所有终端应用程序具有一致的外觀 +- 使用自定义终端配色方案 +- 希望所有终端应用程序具有一致的外观 --- @@ -80,14 +80,14 @@ opencode 支持灵活的基于 JSON 的主题系统,允许用户轻松创建 ### 优先级 -主题按以下顺序從多个目录載入,其中后面的目录覆盖前面的目录: +主题按以下顺序从多个目录载入,其中后面的目录覆盖前面的目录: -1. **內建主题** - 这些主题嵌入在二進製文件中 +1. **内建主题** - 这些主题嵌入在二进制文件中 2. **User config directory** - Defined in `~/.config/opencode/themes/*.json` or `$XDG_CONFIG_HOME/opencode/themes/*.json` 3. **Project root directory** - Defined in the `/.opencode/themes/*.json` 4. **Current working directory** - Defined in `./.opencode/themes/*.json` -如果多个目录包含同名主题,则将使用优先顺序較高的目录中的主题。 +如果多个目录包含同名主题,则将使用优先顺序较高的目录中的主题。 --- @@ -102,7 +102,7 @@ mkdir -p ~/.config/opencode/themes vim ~/.config/opencode/themes/my-theme.json ``` -以及針对特定专案的主题。 +以及针对特定项目的主题。 ```bash no-frame mkdir -p .opencode/themes @@ -140,7 +140,7 @@ vim .opencode/themes/my-theme.json ### 例子 -以下是自定義主题的示例: +以下是自定义主题的示例: ```json title="my-theme.json" { diff --git a/packages/web/src/content/docs/zh-cn/tools.mdx b/packages/web/src/content/docs/zh-cn/tools.mdx index 1be9d669012c..c64f6e2c7ef9 100644 --- a/packages/web/src/content/docs/zh-cn/tools.mdx +++ b/packages/web/src/content/docs/zh-cn/tools.mdx @@ -39,15 +39,15 @@ Tools allow the LLM to perform actions in your codebase. opencode comes with a s --- -## 內建 +## 内建 以下是 opencode 中可用的所有内置工具。 --- -### 巴什 +### bash -在专案环境中执行shell命令。 +在项目环境中执行shell命令。 ```json title="opencode.json" {4} { @@ -62,9 +62,9 @@ This tool allows the LLM to run terminal commands like `npm install`, `git statu --- -### 編輯 +### edit -使用精確的字符串替換修改現有文件。 +使用精确的字符串替换修改现有文件。 ```json title="opencode.json" {4} { @@ -79,9 +79,9 @@ This tool allows the LLM to run terminal commands like `npm install`, `git statu --- -### 寫 +### write -建立新文件或覆盖現有文件。 +建立新文件或覆盖现有文件。 ```json title="opencode.json" {4} { @@ -100,9 +100,9 @@ This tool allows the LLM to run terminal commands like `npm install`, `git statu --- -### 讀 +### read -從程式碼庫中讀取文件內容。 +从代码库中读取文件内容。 ```json title="opencode.json" {4} { @@ -113,13 +113,13 @@ This tool allows the LLM to run terminal commands like `npm install`, `git statu } ``` -该工具讀取文件并返回其內容。它支持讀取大文件的特定行范围。 +该工具读取文件并返回其内容。它支持读取大文件的特定行范围。 --- ### grep -使用正規表示式搜索文件內容。 +使用正规表示式搜索文件内容。 ```json title="opencode.json" {4} { @@ -130,11 +130,11 @@ This tool allows the LLM to run terminal commands like `npm install`, `git statu } ``` -在您的程式碼庫中快速進行內容搜索。支持完整的正規表示式語法和文件模式过濾。 +在您的程式码库中快速进行内容搜索。支持完整的正规表示式语法和文件模式过滤。 --- -### 全域性 +### glob 通过模式匹配查询文件。 @@ -147,13 +147,13 @@ This tool allows the LLM to run terminal commands like `npm install`, `git statu } ``` -使用 `**/*.js` 或 `src/**/*.ts` 等全域性模式搜索档案。返回按时间排序的匹配档案路径修改。 +使用 `**/*.js` 或 `src/**/*.ts` 等全域性模式搜索文件。返回按时间排序的匹配文件路径修改。 --- -### 列表 +### list -列出給定路徑中的文件和目录。 +列出给定路径中的文件和目录。 ```json title="opencode.json" {4} { @@ -164,7 +164,7 @@ This tool allows the LLM to run terminal commands like `npm install`, `git statu } ``` -该工具列出目录內容。它接受全域性模式來过濾結果。 +该工具列出目录内容。它接受全域性模式来过滤结果。 --- @@ -191,9 +191,9 @@ To configure which LSP servers are available for your project, see [LSP Servers] --- -### 修補 +### patch -对文件应用補丁。 +对文件应用补丁。 ```json title="opencode.json" {4} { @@ -204,7 +204,7 @@ To configure which LSP servers are available for your project, see [LSP Servers] } ``` -该工具将補丁文件应用到您的程式碼庫。对于应用來自各種來源的差異和補丁很有帮助。 +该工具将补丁文件应用到您的程式码库。对于应用来自各种来源的差异和补丁很有帮助。 :::note `patch`工具由`edit`许可权控制,该许可权主题所有文件修改(`edit`、`write`、`patch`、`multiedit`)。 @@ -212,7 +212,7 @@ To configure which LSP servers are available for your project, see [LSP Servers] --- -### 技能 +### skill 加载[skill](/docs/skills)(`SKILL.md` 档案)并在对话中返回其内容。 @@ -227,9 +227,9 @@ To configure which LSP servers are available for your project, see [LSP Servers] --- -### 待辦寫入 +### todowrite -在編碼会话期間管理待辦事項列表。 +在编码会话期间管理待办事项列表。 ```json title="opencode.json" {4} { @@ -248,9 +248,9 @@ To configure which LSP servers are available for your project, see [LSP Servers] --- -### 託多雷德 +### todoread -閱讀現有的待辦事項列表。 +阅读现有的待办事项列表。 ```json title="opencode.json" {4} { @@ -269,9 +269,9 @@ To configure which LSP servers are available for your project, see [LSP Servers] --- -### 網頁抓取 +### webfetch -获取網頁內容。 +获取网页内容。 ```json title="opencode.json" {4} { @@ -286,9 +286,9 @@ To configure which LSP servers are available for your project, see [LSP Servers] --- -### 網路搜索 +### websearch -在網路上搜索資訊。 +在网络上搜索资料。 :::note 仅当使用 opencode 提供或 `OPENCODE_ENABLE_EXA` 程序环境变量设置为任何真值(例如 `true` 或 `1`)时,此工具才可用。 @@ -320,9 +320,9 @@ OPENCODE_ENABLE_EXA=1 opencode --- -### 問題 +### question -在执行过程中詢問用户問題。 +在执行过程中询问用户问题。 ```json title="opencode.json" {4} { @@ -336,15 +336,15 @@ OPENCODE_ENABLE_EXA=1 opencode 该工具允许 LLM 在任务期间询问用户问题。它适用于: - 收集用户偏好或要求 -- 澄清不明確的指令 -- 就實施选择做出決策 +- 澄清不明确的指令 +- 就实施选择做出决策 - 提供选择方向 -每个問題都包含標題、問題文字和選項列表。用户可以從提供的選項中進行选择或輸入自定義答案。当存在多个問題時,用户可以在提交所有答案之前在这些問題之间导航。 +每个问题都包含标题、问题文字和选项列表。用户可以从提供的选项中进行选择或输入自定义答案。当存在多个问题时,用户可以在提交所有答案之前在这些问题之间导航。 --- -## 定製工具 +## 定制工具 自定义工具可以让您定义LLM可以调用自己的函式。这些是在您的配置文件中定义的并且可以执行任何代码。 @@ -360,7 +360,7 @@ MCP(模型上下文协议)服务器允许您集成外部工具和服务。 --- -## 内部結構 +## 内部结构 Internally, tools like `grep`, `glob`, and `list` use [ripgrep](https://github.com/BurntSushi/ripgrep) under the hood. By default, ripgrep respects `.gitignore` patterns, which means files and directories listed in your `.gitignore` will be excluded from searches and listings. @@ -368,7 +368,7 @@ Internally, tools like `grep`, `glob`, and `list` use [ripgrep](https://github.c ### 忽略模式 -要包含通常会被忽略的文件,请在专案根目录中建立 `.ignore` 文件。该文件可以明确允许某些路径。 +要包含通常会被忽略的文件,请在项目根目录中建立 `.ignore` 文件。该文件可以明确允许某些路径。 ```text title=".ignore" !node_modules/ diff --git a/packages/web/src/content/docs/zh-cn/troubleshooting.mdx b/packages/web/src/content/docs/zh-cn/troubleshooting.mdx index b658f6938e12..5aa2764d9e07 100644 --- a/packages/web/src/content/docs/zh-cn/troubleshooting.mdx +++ b/packages/web/src/content/docs/zh-cn/troubleshooting.mdx @@ -1,15 +1,15 @@ --- title: 故障排除 -description: 常見問題以及如何解決它們。 +description: 常见问题以及如何解决它们。 --- -要排除 opencode 的问题,请首先检查其存储在磁碟上的日志和本地数据。 +要排除 opencode 的问题,请首先检查其存储在磁盘上的日志和本地数据。 --- ## 日志 -日誌文件寫入: +日志文件写入: - **macOS/Linux**: `~/.local/share/opencode/log/` - **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.local\share\opencode\log` @@ -51,7 +51,7 @@ opencode Desktop runs a local opencode server (the `opencode-cli` sidecar) in th ### 禁用插件 -如果桌面应用程序在启动時崩潰、掛起或行为異常,请首先禁用插件。 +如果桌面应用程序在启动时崩溃、挂起或行为异常,请首先禁用插件。 #### 检查全域性配置 @@ -61,7 +61,7 @@ opencode Desktop runs a local opencode server (the `opencode-cli` sidecar) in th - **macOS/Linux** (older installs): `~/.local/share/opencode/opencode.jsonc` - **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.config\opencode\opencode.jsonc` -如果您配置了插件,请通过删除密钥或将其设置为空数组來暂时禁用它們: +如果您配置了插件,请通过删除密钥或将其设置为空数组来暂时禁用它们: ```jsonc { @@ -77,10 +77,10 @@ opencode 还可以从磁碟加载本地外挂。暂时将它们移开(或重 - **全域性插件** - **macOS/Linux**: `~/.config/opencode/plugins/` - **Windows**: Press `WIN+R` and paste `%USERPROFILE%\.config\opencode\plugins` -- **专案插件**(仅当您使用每个专案配置時) +- **项目插件**(仅当您使用每个项目配置时) - `/.opencode/plugins/` -如果应用程序再次開始工作,请一次重新启用一个插件,以找出導致問題的插件。 +如果应用程序再次开始工作,请一次重新启用一个插件,以找出导致问题的插件。 --- @@ -99,7 +99,7 @@ opencode 还可以从磁碟加载本地外挂。暂时将它们移开(或重 --- -### 修復服务器连接問題 +### 修复服务器连接问题 opencode Desktop 可以启动自己的本地服务器(默认配置)或连线到您的服务器 URL。 @@ -147,11 +147,11 @@ If you're experiencing slow performance, file access issues, or terminal problem opencode 桌面仅在以下情况下显示系统通知: - 在您的作业系统中设置为 opencode 启用了通知,并且 -- 应用程序視窗未聚焦。 +- 应用程序视窗未聚焦。 --- -### 重置桌面应用程序儲存(最后的手段) +### 重置桌面应用程序储存(最后的手段) 如果应用程序无法并且启动您无法从 UI 内部清除设置,请重置桌面应用程序的存储状态。 @@ -179,9 +179,9 @@ opencode 桌面仅在以下情况下显示系统通知: [**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues) - 在建立新問題之前,请搜索現有問題以查看您的問題是否已被報告。 + 在建立新问题之前,请搜索现有问题以查看您的问题是否已被报告。 -2. **加入我们的不和諧** +2. **加入我们的不和谐** 获得实时帮助和社群讨论,请加入我们的Discord服务器: @@ -191,19 +191,19 @@ opencode 桌面仅在以下情况下显示系统通知: ## 常见问题 -以下是一些常見問題以及解決方法。 +以下是一些常见问题以及解决方法。 --- ### opencode 无法启动 -1. 检查日誌中是否有错误消息 +1. 检查日志中是否有错误消息 2. 尝试使用 `--print-logs` 执行以查看终端中的输出 3. Ensure you have the latest version with `opencode upgrade` --- -### 身份验证問題 +### 身份验证问题 1. 尝试使用 TUI 中的 `/connect` 命令重新进行身份验证 2. 检查您的API 密钥是否有效 @@ -214,12 +214,12 @@ opencode 桌面仅在以下情况下显示系统通知: ### 模型不可用 1. 检查您是否已通过提供商的身份验证 -2. 驗證配置中的模型名称是否正确 -3. 某些模型可能需要特定的访问权限或訂閱 +2. 验证配置中的模型名称是否正确 +3. 某些模型可能需要特定的访问权限或订阅 如果您遇到 `ProviderModelNotFoundError` 您很可能是错误的 -在某處引用模型。 -模型应该像这樣引用:`/` +在某处引用模型。 +模型应该像这样引用:`/` 示例: @@ -235,10 +235,10 @@ To figure out what models you have access to, run `opencode models` 如果遇到 ProviderInitError,您的配置可能无效或损坏。 -要解決这个問題: +要解决这个问题: 1. 首先,按照[提供商指南](/docs/providers) 验证您的事业是否已正确设置 -2. 如果問題仍然存在,请嘗試清除儲存的配置: +2. 如果问题仍然存在,请尝试清除储存的配置: ```bash rm -rf ~/.local/share/opencode @@ -254,7 +254,7 @@ To figure out what models you have access to, run `opencode models` 如果您遇到 API 呼叫错误,这可能是由于过去提供包造成的。 opencode 根据需要动态安装提供包(OpenAI、Anthropic、Google 等)将其缓存放在本地。 -要解決provider 包問題: +要解决provider 包问题: 1. 清除provider 包缓存: @@ -288,7 +288,7 @@ apt install -y xsel apt install -y wl-clipboard ``` -**对于無頭環境:** +**对于无头环境:** ```bash apt install -y xvfb diff --git a/packages/web/src/content/docs/zh-cn/tui.mdx b/packages/web/src/content/docs/zh-cn/tui.mdx index e1beb9abff75..abc5d0c1e9df 100644 --- a/packages/web/src/content/docs/zh-cn/tui.mdx +++ b/packages/web/src/content/docs/zh-cn/tui.mdx @@ -29,17 +29,17 @@ Give me a quick summary of the codebase. ## 文件引用 -您可以使用 `@` 在消息中引用文件。这会在当前工作目录中進行模糊文件搜索。 +您可以使用 `@` 在消息中引用文件。这会在当前工作目录中进行模糊文件搜索。 :::tip -您还可以使用 `@` 來引用消息中的文件。 +您还可以使用 `@` 来引用消息中的文件。 ::: ```text "@packages/functions/src/api/index.ts" How is auth handled in @packages/functions/src/api/index.ts? ``` -文件的內容会自动添加到对话中。 +文件的内容会自动添加到对话中。 --- @@ -51,7 +51,7 @@ How is auth handled in @packages/functions/src/api/index.ts? !ls -la ``` -命令的輸出将作为工具結果添加到对话中。 +命令的输出将作为工具结果添加到对话中。 --- @@ -65,11 +65,11 @@ How is auth handled in @packages/functions/src/api/index.ts? 大多数命令还是以使用 `ctrl+x` 作为主键的键系结,其中 `ctrl+x` 是默认主键。 [了解更多](/docs/keybinds)。 -以下是所有可用的斜槓命令: +以下是所有可用的斜杠命令: --- -### 连接 +### connect 将提供商添加到 opencode。你可以从可用提供商中选择,并添加它们的 API 密钥。 @@ -79,7 +79,7 @@ How is auth handled in @packages/functions/src/api/index.ts? --- -### 紧凑 +### compact 压缩当前会话。_别名_: `/summarize` @@ -91,9 +91,9 @@ How is auth handled in @packages/functions/src/api/index.ts? --- -### 細節 +### details -切換工具执行详细信息。 +切换工具执行详细信息。 ```bash frame="none" /details @@ -103,7 +103,7 @@ How is auth handled in @packages/functions/src/api/index.ts? --- -### 編輯 +### editor 开启外部编辑器来编写消息。使用`EDITOR`环境变量中设定的编辑器。 [了解更多](#editor-setup)。 @@ -115,7 +115,7 @@ How is auth handled in @packages/functions/src/api/index.ts? --- -### 退出 +### exit 退出opencode。 _别名_:`/quit`、`/q` @@ -127,7 +127,7 @@ How is auth handled in @packages/functions/src/api/index.ts? --- -### 导出 +### export 将当前对话汇出到 Markdown 并在默认编辑器中开启。使用 `EDITOR` 环境变数中设定的编辑器。 [了解更多](#editor-setup)。 @@ -139,9 +139,9 @@ How is auth handled in @packages/functions/src/api/index.ts? --- -### 幫助 +### help -显示幫助对话方塊。 +显示帮助对话方块。 ```bash frame="none" /help @@ -151,7 +151,7 @@ How is auth handled in @packages/functions/src/api/index.ts? --- -### 初始化 +### init Create or update `AGENTS.md` file. [Learn more](/docs/rules). @@ -163,7 +163,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 模型 +### models 列出可用模型。 @@ -175,7 +175,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 新的 +### new 开始新的会话。 _别名_: `/clear` @@ -187,7 +187,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 重做 +### redo 删除之前重做消除的讯息。仅在使用`/undo`后可用。 @@ -206,7 +206,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 会话 +### sessions 上市会话并在会话之间切换。 _别名_:`/resume`、`/continue` @@ -218,7 +218,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 分享 +### share 共享当前会话。 [了解更多](/docs/share)。 @@ -230,7 +230,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 主题 +### themes 列出可用的主题。 @@ -242,9 +242,9 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 思維 +### thinking -切换对话中 thinking/reasoning 块的可视性。启用后,您可以看到支持增强套件思维的模型的推理过程。 +切换对话中 thinking/reasoning 块的可视性。启用后,您可以看到支持扩展思考的模型的推理过程。 :::note 该命令仅控制是否**显示** - 不启用或取消模型的推理功能。要切换实际推理功能,请使用 `ctrl+t` 回圈切换模型变体。 @@ -256,9 +256,9 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 撤消 +### undo -撤消对话中的最后一条消息。删除最近的用户消息、所有后续響应以及任何文件更改。 +撤消对话中的最后一条消息。删除最近的用户消息、所有后续响应以及任何文件更改。 :::tip 所做的任何文件更改也将被恢复。 @@ -275,7 +275,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). --- -### 取消共享 +### unshare 取消共享当前会话。 [了解更多](/docs/share#un-sharing)。 @@ -334,7 +334,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). -流行的编辑器選項包括: +流行的编辑器选项包括: - `code` - Visual Studio Code - `cursor` - 游标 @@ -369,7 +369,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). } ``` -### 選項 +### 选项 - `scroll_acceleration` - 启用 macOS 式滚动加速以实现平滑、自然的滚动。启用后,滚动速度会随着快速滚动滚动而增加,并在较慢的移动时保持精确。 **此设定优先于 `scroll_speed` 并在启用时覆盖它。 ** - `scroll_speed` - 控制使用滚动控制器时 TUI 滚动的速度(简单:`1`)。默认为 `3`。 **注意:如果 `scroll_acceleration.enabled` 设置为 `true`,则忽略此设置。 ** @@ -384,7 +384,7 @@ Create or update `AGENTS.md` file. [Learn more](/docs/rules). #### 用户名称显示 -切換您的用户名称是否出現在聊天消息中。通过以下方式访问: +切换您的用户名称是否出现在聊天消息中。通过以下方式访问: - 命令面板:搜索“用户名称”或“隐藏用户名称” - 该设置会自动保留,放在 TUI 会话中被记住 diff --git a/packages/web/src/content/docs/zh-cn/web.mdx b/packages/web/src/content/docs/zh-cn/web.mdx index efb55aaab5f2..e13540d1fd36 100644 --- a/packages/web/src/content/docs/zh-cn/web.mdx +++ b/packages/web/src/content/docs/zh-cn/web.mdx @@ -1,5 +1,5 @@ --- -title: 網路 +title: Web description: 在浏览器中使用opencode。 --- @@ -7,7 +7,7 @@ opencode 可以在浏览器中作为 Web 应用程序执行,消耗终端可以 ![opencode Web - New Session](../../../assets/web/web-homepage-new-session.png) -## 入門 +## 入门 绕过执行以下命令启动 Web 简介: @@ -29,7 +29,7 @@ For the best experience, run `opencode web` from [WSL](/docs/windows-wsl) rather ## 配置 -您可以使用命令列标志或在[config file](/docs/config).conf 中配置Web服务器。 +您可以使用命令行标志或在[config file](/docs/config).conf 中配置Web服务器。 ### 端口 @@ -39,9 +39,9 @@ For the best experience, run `opencode web` from [WSL](/docs/windows-wsl) rather opencode web --port 4096 ``` -### 主機名 +### 主机名 -情况默认下,服务器系结到`127.0.0.1`(仅限本地主机)。要使opencode在您的网路上可访问: +默认情况下,服务器绑定到`127.0.0.1`(仅限本地主机)。要使opencode在您的网路上可访问: ```bash opencode web --hostname 0.0.0.0 @@ -78,9 +78,9 @@ opencode web --mdns --mdns-domain myproject.local opencode web --cors https://example.com ``` -### 驗證 +### 验证 -要保护访问,请使用 `OPENCODE_SERVER_PASSWORD` 环境变数设置密码: +要保护访问,请使用 `OPENCODE_SERVER_PASSWORD` 环境变量设置密码: ```bash OPENCODE_SERVER_PASSWORD=secret opencode web @@ -90,19 +90,19 @@ The username defaults to `opencode` but can be changed with `OPENCODE_SERVER_USE --- -## 使用网络界面 +## 使用web界面 -启动后,网路界面将提供对您的 opencode 会话的访问。 +启动后,web界面将提供对您的 opencode 会话的访问。 ### 会话 -從主頁查看和管理您的会话。您可以查看活动会话并開始新会话。 +从主页查看和管理您的会话。您可以查看活动会话并开始新会话。 ![opencode Web - Active Session](../../../assets/web/web-homepage-active-session.png) -### 服务器狀態 +### 服务器状态 -单击“查看服务器”可查看连接的服务器及其狀態。 +单击“查看服务器”可查看连接的服务器及其状态。 ![opencode Web - See Servers](../../../assets/web/web-homepage-see-servers.png) diff --git a/packages/web/src/content/docs/zh-cn/zen.mdx b/packages/web/src/content/docs/zh-cn/zen.mdx index 1a2e77aabc6a..7c00b5cdf48a 100644 --- a/packages/web/src/content/docs/zh-cn/zen.mdx +++ b/packages/web/src/content/docs/zh-cn/zen.mdx @@ -1,5 +1,5 @@ --- -title: 禪 +title: Zen description: 由 opencode 提供的精选模型列表。 --- @@ -7,10 +7,10 @@ import config from "../../../../config.mjs" export const console = config.console export const email = `mailto:${config.email}` -Error 500 (Server Error)!!1500.That’s an error.There was an error. Please try again later.That’s all we know. +OpenCode Zen 是由 OpenCode 团队提供的一组经过测试和验证的模型列表。 :::note -OpenCode Zen 目前处于一个测试阶段。 +OpenCode Zen 目前处于测试阶段。 ::: Zen 的工作方式与 opencode 中的任何其他提供商相同。您登录 OpenCode Zen 并获得 @@ -21,31 +21,31 @@ opencode。 ## 背景 -市面上有很多模型,但其中只有少數幾个 -这些模型可以很好地用作編碼代理。此外,大多數提供商都 -配置非常不同;所以你会得到截然不同的效能和質量。 +市面上有很多模型,但其中只有少数几个 +这些模型可以很好地用作编码代理。此外,大多数提供商都 +配置非常不同;所以你会得到截然不同的效率和质量。 :::tip 我们测试了一组与 opencode 配合良好的模型并提供商。 ::: -因此,如果您使用 OpenRouter 之类的东西使用模型,您永远无法 -確定您是否獲得了您想要的模型的最佳版本。 +因此,如果您通过 OpenRouter 之类的东西使用模型,您永远无法 +确定您是否获得了您想要的模型的最佳版本。 -为瞭解決这个問題,我们做了幾件事: +为了解决这个问题,我们做了几件事: -1. 我们測試了一組選定的模型,并与他們的團隊討論瞭如何 - 最好执行它們。 -2. 然後我们与一些提供商合作以確保这些服務得到服務 +1. 我们测试了一组选定的模型,并与他们的团队讨论了如何 + 最好执行它们。 +2. 然后我们与一些提供商合作以确保这些服务得到服务 正确。 3. 最后,我们对 model/provider 的组合进行了基准测试,总结了 - 并附上一份我们覺得不錯的推薦清單。 + 并附上一份我们觉得不错的推荐清单。 -OpenCode Zen 是一个AI闸道器,可以让您访问这些模型。 +OpenCode Zen 是一个AI网关,让您可以访问这些模型。 --- -## 它是如何運作的 +## 它是如何运作的 OpenCode Zen 的工作方式与 opencode 中的任何其他功能相同。 @@ -54,7 +54,7 @@ OpenCode Zen 的工作方式与 opencode 中的任何其他功能相同。 2. 您在 TUI 中执行 `/connect` 命令,选择 OpenCode Zen,然后贴上 API 密钥。 3. 在 TUI 中执行 `/models` 以查看我们推荐的模型列表。 -您需要按请求付費,并且您可以将積分添加到您的账户中。 +您需要按请求付费,并且您可以将积分添加到您的账户中。 --- @@ -62,7 +62,7 @@ OpenCode Zen 的工作方式与 opencode 中的任何其他功能相同。 您还可以通过以下 API 端点访问我们的模型。 -| 模型 | 模型ID | 端点 | 人工智慧SDK包 | +| 模型 | 模型ID | 端点 | AI SDK 套件 | | ------------------ | ------------------ | -------------------------------------------------- | --------------------------- | | GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | | GPT 5.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` | @@ -102,7 +102,7 @@ use `opencode/gpt-5.2-codex` in your config. ### 模型 -您可以從以下位置获取可用模型及其元数据的完整列表: +您可以从以下位置获取可用模型及其元数据的完整列表: ``` https://opencode.ai/zen/v1/models @@ -114,9 +114,9 @@ https://opencode.ai/zen/v1/models 我们支持即用即付模式。以下是**每 100 万Tokens的价格**。 -| 模型 | 輸入 | 輸出 | 缓存讀取 | 缓存寫入 | +| 模型 | 输入 | 输出 | 缓存读取 | 缓存写入 | | ---------------------------------- | ---------- | ---------- | ---------- | ---------- | -| 大泡菜 | 免費 | 免費 | 免費 | - | +| 大泡菜 | 免费 | 免费 | 免费 | - | | MiniMax M2.1 免费 | 免费 | 免费 | 免费 | - | | 迷你最大M2.1 | 0.30 美元 | 1.20 美元 | 0.10 美元 | - | | GLM 4.7 免费 | 免费 | 免费 | 免费 | - | @@ -153,32 +153,32 @@ https://opencode.ai/zen/v1/models 您可能会在您的使用历史记录中注意到*Claude Haiku 3.5*。这是一个[低成本模型](/docs/config/#models),用于生成会话标题。 :::note -信用卡费用按成本轉嫁(4.4% + 每筆交易 0.30 美元);除此之外我们不收取任何费用。 +信用卡费用按成本转嫁(4.4% + 每笔交易 0.30 美元);除此之外我们不收取任何费用。 ::: -免費模型: +免费模型: - GLM 4.7 免费版本在 opencode 上限时提供。团队正在利用这段时间收集反馈并改进模型。 - Kimi K2.5 在 opencode 限时免费发布。团队正在利用这段时间收集反馈并改进模型。 - MiniMax M2.1 在 opencode 限时免费供应。团队正在利用这段时间收集反馈并改进模型。 - Big Pickle 是一个隐形模型,在 opencode 上限时免费。团队正在利用这个临时收集反馈并改进模型。 -如果您有任何疑問,请聯絡我们。 +如果您有任何疑问,请联络我们。 --- -### 自动重新載入 +### 自动重新载入 如果您的余额低于 5 美元,Zen 将自动充值 20 美元。 -您可以更改自动充值金額。您还可以完全禁用自动重新載入。 +您可以更改自动充值金额。您还可以完全禁用自动重新载入。 --- ### 每月限额 您还可以为整个工作区和每个工作区设置每月使用限制 -你的團隊成员。 +你的团队成员。 例如,假设您将每月使用中断设置为 20 美元,Zen 将不会使用 一个月超过 20 美元。但如果你启用了自动重新加载,Zen 可能会结束 @@ -188,7 +188,7 @@ https://opencode.ai/zen/v1/models ## 隐私 -我们所有的模型都在美国託管。我们的提供商遵循零保留政策,不会将您的数据用于模型训练,但以下情况除外: +我们所有的模型都在美国托管。我们的提供商遵循零保留政策,不会将您的数据用于模型训练,但以下情况除外: - Big Pickle:在免费期间,收集可用于改进模型的数据。 - GLM 4.7 免费:在免费期间,收集可用于改进模型的数据。 @@ -201,21 +201,20 @@ https://opencode.ai/zen/v1/models ## 对于团队 -Zen 对团队也很有效。您可以参与第三方、角色、策划 -您的團隊使用的模型等等。 +Zen 也非常适合团队使用。您可以邀请您可以邀请队友,分配角色,管理团队使用的模型等。 :::note -作为測試版的一部分,工作空間目前对團隊免費。 +作为测试版的一部分,工作空间目前对团队免费。 ::: -作为測試版的一部分,管理工作空間目前对團隊免費。我们将会 -很快就会分享更多有關定價的細節。 +作为测试版的一部分,管理工作空间目前对团队免费。我们将会 +很快就会分享更多有关定价的细节。 --- ### 角色 -您可以邀请團隊成员到您的工作区并分配角色: +您可以邀请团队成员到您的工作区并分配角色: - **管理员**:管理模型、成员、API 密钥和设备 - **成员**:仅管理自己的API 金?