{
  "title": "配置",
  "description": "管理网关、Agent 默认值、工具和集成",
  "noConfig": "未加载配置",
  "noConfigDescription": "无法加载配置文件，网关可能不可达。",
  "retry": "重试",
  "warning": "此处的更改将全局影响所有 Agent 和频道，配置错误可能导致网关故障。",
  "save": "保存",
  "saving": "保存中...",
  "saved": "已保存",
  "failedToSave": "保存配置失败",
  "saveConfig": "保存配置",
  "usingGlobalDefaults": "使用全局默认值",

  "tabs.server": "服务器",
  "tabs.behavior": "行为",
  "tabs.aiDefaults": "AI 默认值",
  "tabs.quota": "配额",
  "tabs.tools": "工具",
  "tabs.integrations": "集成",

  "server.title": "网关服务器",
  "server.description": "网络绑定、认证令牌和访问控制",

  "gateway.host": "主机",
  "gateway.hostTip": "网关监听的网络接口。使用 0.0.0.0 监听所有接口。",
  "gateway.port": "端口",
  "gateway.portTip": "网关 WebSocket 和 HTTP 服务器绑定的 TCP 端口。",
  "gateway.token": "认证令牌",
  "gateway.tokenTip": "所有客户端连接所需的 Bearer 令牌。留空则禁用认证。",
  "gateway.tokenManaged": "令牌通过环境变量管理，无法在此处编辑。",
  "gateway.ownerIds": "所有者 ID",
  "gateway.ownerIdsTip": "被授予管理员级别访问权限的用户 ID，按 Enter 分隔多个 ID。",
  "gateway.ownerIdsPlaceholder": "输入所有者 ID...",
  "gateway.allowedOrigins": "允许的来源",
  "gateway.allowedOriginsTip": "HTTP API 的 CORS 允许来源。使用 * 允许所有来源。",
  "gateway.allowedOriginsPlaceholder": "https://yourdomain.com",
  "gateway.toolStatus": "工具状态消息",
  "gateway.blockReply": "阻塞回复",
  "gateway.maxMessageChars": "最大消息字符数",
  "gateway.maxMessageCharsTip": "每条入站消息允许的最大字符数，超出限制的消息将被拒绝。",
  "gateway.rateLimitRpm": "速率限制（RPM）",
  "gateway.rateLimitRpmTip": "每用户每分钟最大请求数。设为 0 禁用速率限制。",
  "gateway.inboundDebounceMs": "入站防抖（毫秒）",
  "gateway.inboundDebounceMsTip": "处理新消息前的延迟毫秒数，用于合并快速连续消息。设为 -1 禁用。",
  "gateway.injectionAction": "注入检测动作",

  "agents.title": "Agent 默认值",
  "agents.description": "默认 LLM 提供商、模型和运行时设置，适用于所有 Agent（除非被覆盖）",
  "agents.providerTip": "当 Agent 未指定提供商时使用的默认 LLM 提供商。",
  "agents.modelTip": "当 Agent 未指定模型时使用的默认模型。",
  "agents.maxTokens": "最大 Token 数",
  "agents.maxTokensTip": "模型在单次响应中可生成的最大 Token 数。",
  "agents.temperature": "温度",
  "agents.temperatureTip": "采样温度（0-2），较低的值产生更确定性的输出。",
  "agents.maxToolIterations": "最大工具迭代次数",
  "agents.maxToolIterationsTip": "每个 Agent 请求的最大工具调用迭代次数。",
  "agents.contextWindow": "上下文窗口",
  "agents.contextWindowTip": "模型上下文窗口的总 Token 预算。",
  "agents.workspace": "工作区路径",
  "agents.workspaceTip": "Agent 文件操作的根目录，运行时自动创建每用户子目录。",
  "agents.restrictToWorkspace": "限制在工作区内",
  "agents.restrictToWorkspaceTip": "阻止 Agent 读写工作区路径以外的文件。",
  "agents.intentClassify": "意图分类",
  "agents.saveError": "保存 Agent 默认值失败",

  "agents.subagents.title": "子 Agent",
  "agents.subagents.desc": "子 Agent 生成限制",
  "agents.subagents.maxConcurrent": "最大并发数",
  "agents.subagents.maxConcurrentTip": "可同时运行的最大子 Agent 数量。",
  "agents.subagents.maxSpawnDepth": "最大生成深度",
  "agents.subagents.maxSpawnDepthTip": "子 Agent 链的最大嵌套深度。",
  "agents.subagents.maxChildrenPerAgent": "每 Agent 最大子数",
  "agents.subagents.maxChildrenPerAgentTip": "单个 Agent 可生成的最大子 Agent 数量。",
  "agents.subagents.archiveAfterMin": "归档时间（分钟）",
  "agents.subagents.archiveAfterMinTip": "子 Agent 会话在空闲多少分钟后被归档。",
  "agents.subagents.modelOverride": "模型覆盖",
  "agents.subagents.modelOverrideTip": "强制所有子 Agent 使用特定模型。留空则从父 Agent 继承。",
  "agents.subagents.modelOverridePlaceholder": "（从 Agent 继承）",

  "agents.memory.title": "记忆",
  "agents.memory.desc": "语义记忆搜索和嵌入",
  "agents.memory.enabled": "已启用",
  "agents.memory.embeddingProvider": "嵌入提供商",
  "agents.memory.embeddingModel": "嵌入模型",
  "agents.memory.embeddingProviderTip": "用于生成记忆存储文本嵌入的提供商。",
  "agents.memory.embeddingModelTip": "嵌入模型名称。留空则使用提供商默认值。",
  "agents.memory.maxResults": "最大结果数",
  "agents.memory.maxResultsTip": "每次召回查询返回的最大记忆条目数。",
  "agents.memory.minScore": "最低分数",
  "agents.memory.minScoreTip": "记忆条目被纳入结果的最低相似度分数（0-1）。",

  "agents.compaction.title": "上下文压缩",
  "agents.compaction.desc": "上下文窗口压缩设置",
  "agents.compaction.reserveTokensFloor": "保留 Token 下限",
  "agents.compaction.reserveTokensFloorTip": "压缩前为新响应保留的最小 Token 缓冲区。",
  "agents.compaction.maxHistoryShare": "最大历史占比（0-1）",
  "agents.compaction.maxHistoryShareTip": "对话历史可占用的上下文窗口比例。",

  "agents.pruning.title": "上下文裁剪",
  "agents.pruning.desc": "裁剪旧工具结果以释放上下文空间",
  "agents.pruning.mode": "模式",
  "agents.pruning.keepLastAssistants": "保留最后的助手轮次",
  "agents.pruning.keepLastAssistantsTip": "裁剪期间始终保留的最近助手轮次数量。",

  "agents.sandbox.title": "沙箱",
  "agents.sandbox.desc": "用于代码执行的 Docker 沙箱",
  "agents.sandbox.mode": "模式",
  "agents.sandbox.image": "Docker 镜像",
  "agents.sandbox.imageTip": "沙箱容器使用的 Docker 镜像。",
  "agents.sandbox.memoryMb": "内存（MB）",
  "agents.sandbox.memoryMbTip": "沙箱容器的内存限制（兆字节）。",
  "agents.sandbox.cpus": "CPU",
  "agents.sandbox.cpusTip": "沙箱容器的 CPU 配额（例如 1.0 = 一个完整核心）。",
  "agents.sandbox.timeoutSec": "超时（秒）",
  "agents.sandbox.timeoutSecTip": "沙箱被终止前的最大执行时间（秒）。",
  "agents.sandbox.networkEnabled": "启用网络",

  "behavior.uxTitle": "界面行为",
  "behavior.uxDescription": "影响网关与用户交互方式的高影响开关",
  "behavior.toolStatusHint": "在 Agent 运行期间向用户显示实时工具执行状态消息。",
  "behavior.toolStatusInfo": "当 Agent 读取文件、运行命令和调用 API 时，用户将看到实时更新。",
  "behavior.blockReplyHint": "在发送中间状态更新之前等待 Agent 完成。",
  "behavior.blockReplyInfo": "仅发送最终响应，中间工具状态消息被抑制。",
  "behavior.intentClassifyHint": "在路由之前对用户意图进行分类，以减少不必要的 Agent 调用。",
  "behavior.intentClassifyInfo": "仅当分类器检测到可执行意图时才调用 Agent。",
  "behavior.pendingCompactionTitle": "待处理消息压缩",
  "behavior.pendingCompactionDescription": "当缓冲区超过阈值时，自动使用 LLM 总结旧群组消息",
  "behavior.pendingCompactionThreshold": "阈值",
  "behavior.pendingCompactionThresholdTip": "当群组累积超过此数量的待处理消息时触发压缩。设为 0 使用默认值（50）。",
  "behavior.pendingCompactionKeepRecent": "保留最近",
  "behavior.pendingCompactionKeepRecentTip": "压缩后保留的最近原始消息数量。较旧的消息将替换为 LLM 摘要。默认为 15。",
  "behavior.pendingCompactionMaxTokens": "最大 Token 数",
  "behavior.pendingCompactionMaxTokensTip": "LLM 摘要的最大输出 token 数。默认 4096。",
  "behavior.pendingCompactionProvider": "提供商",
  "behavior.pendingCompactionProviderTip": "用于摘要的 LLM 提供商。留空将使用频道 Agent 的提供商。",
  "behavior.pendingCompactionProviderPlaceholder": "使用 Agent 的提供商",
  "behavior.pendingCompactionModel": "模型",
  "behavior.pendingCompactionModelTip": "用于摘要的模型。留空将使用频道 Agent 的模型。",
  "behavior.pendingCompactionModelPlaceholder": "使用 Agent 的模型",
  "behavior.pendingCompactionInfo": "当群聊超过阈值时，LLM 自动将旧消息总结为一条精简条目，保留最近的消息作为上下文。",
  "behavior.rateLimitTitle": "速率限制",
  "behavior.rateLimitDescription": "入站消息大小限制和每用户请求限流",
  "behavior.sessionsTitle": "会话范围",
  "behavior.sessionsDescription": "控制跨用户和频道的对话上下文分区方式",
  "behavior.securityTitle": "输入安全",
  "behavior.securityDescription": "提示词注入检测和凭证擦除，以保护网关",
  "behavior.injectionActionHint": "当入站消息中检测到提示词注入尝试时的处理动作。",
  "behavior.injectionBlockInfo": "所有被标记为注入尝试的消息将被阻止，并通知用户。",
  "behavior.injectionOffInfo": "注入检测已禁用，恶意提示词将不会被过滤。",
  "behavior.scrubCredentialsHint": "在返回给 Agent 之前，自动从工具输出中删除 API 密钥、令牌和密码。",
  "behavior.scrubCredentialsInfo": "工具响应中的凭证模式在 Agent 看到之前被屏蔽。",
  "behavior.scrubCredentialsOffInfo": "凭证擦除已禁用，工具输出中的密钥可能暴露给 Agent。",

  "sessions.scope": "会话范围",
  "sessions.scopeTip": "确定会话分区方式。「按发送者」为每个用户提供单独的会话；「全局」在所有用户之间共享一个会话。",
  "sessions.dmScope": "私信范围",
  "sessions.dmScopeTip": "私信会话的键控方式。推荐默认使用「按频道对等方」。",

  "quota.title": "使用配额",
  "quota.description": "每用户消息配额限制，可选按提供商、频道和群组覆盖",
  "quota.enabled": "启用配额",
  "quota.enabledTip": "启用后，用户受以下定义的消息数量限制。",
  "quota.defaultLimits": "默认限制",
  "quota.defaultLimitsTip": "适用于未被特定覆盖的所有用户的回退配额。",
  "quota.hour": "每小时",
  "quota.hourTip": "每小时允许的最大消息数。",
  "quota.day": "每天",
  "quota.dayTip": "每天允许的最大消息数。",
  "quota.week": "每周",
  "quota.weekTip": "每周允许的最大消息数。",
  "quota.keyLabel": "键",
  "quota.addOverride": "添加覆盖",
  "quota.allOptionsAdded": "所有选项已添加",
  "quota.providerOverrides": "按提供商覆盖",
  "quota.providerOverridesTip": "每个 LLM 提供商的自定义配额限制，在用户通过特定提供商交互时覆盖默认值。",
  "quota.channelOverrides": "按频道覆盖",
  "quota.channelOverridesTip": "每种频道类型的自定义配额限制（例如 telegram、discord）。",
  "quota.groupOverrides": "按群组覆盖",
  "quota.groupOverridesTip": "特定群聊的自定义配额限制。",
  "quota.selectProvider": "选择提供商",
  "quota.selectChannel": "选择频道",
  "quota.selectGroup": "选择群组",

  "tools.title": "工具配置文件",
  "tools.description": "所有 Agent 的默认工具可用性和每小时调用速率限制",
  "tools.profile": "配置文件",
  "tools.profileTip": "预定义工具集。\"最小\"仅公开安全的只读工具；\"完整\"启用所有工具。",
  "tools.profilePlaceholder": "选择配置文件...",
  "tools.rateLimitPerHour": "速率限制（每小时）",
  "tools.rateLimitPerHourTip": "每个 Agent 每小时允许的最大工具调用次数。设为 0 禁用。",
  "tools.allow": "允许",
  "tools.allowTip": "显式允许所选配置文件中未包含的其他工具。",
  "tools.allowPlaceholder": "选择要允许的工具...",
  "tools.deny": "拒绝",
  "tools.denyTip": "显式阻止工具，即使其包含在所选配置文件中。",
  "tools.denyPlaceholder": "选择要拒绝的工具...",
  "tools.alsoAllow": "同时允许",
  "tools.alsoAllowTip": "在配置文件基础上允许的附加工具，在使用限制性配置文件时很有用。",
  "tools.alsoAllowPlaceholder": "选择附加工具...",
  "tools.execApproval": "命令执行",
  "tools.execSecurity": "安全模式",
  "tools.execSecurityTip": "控制 Agent 被允许运行哪些 Shell 命令。\"允许列表\"限制为已批准的模式。",
  "tools.execAskMode": "询问模式",
  "tools.execAskModeTip": "在执行命令之前何时提示用户审批。",
  "tools.execAllowlistLabel": "允许的命令（每行一个模式）",
  "tools.webSearch": "网页搜索",
  "tools.webFetch": "网页抓取和浏览器自动化",
  "tools.maxResults": "最大结果数",
  "tools.webFetchPolicy": "网页抓取策略",
  "tools.webFetchPolicyTip": "控制 Agent 可以抓取哪些 URL。\"允许列表\"仅限已批准的域名。",
  "tools.allowedDomains": "允许的域名",
  "tools.blockedDomains": "屏蔽的域名",
  "tools.blockedDomainsTip": "无论策略如何都始终屏蔽的域名，每行一条，支持通配符（*.example.com）。",
  "tools.browser": "浏览器自动化",
  "tools.browserEnabled": "已启用",
  "tools.browserHeadless": "无界面模式",
  "tools.scrubCredentials": "擦除凭证",

  "tts.title": "文字转语音",
  "tts.configured": "已配置",
  "tts.disabled": "已禁用",
  "tts.providerInfo": "提供商：{{provider}} — 自动：{{auto}}",
  "tts.noProvider": "未配置 TTS 提供商。",
  "tts.manageLink": "管理 TTS 设置",

  "cron.title": "定时任务调度器",
  "cron.description": "失败定时任务的重试行为",
  "cron.maxRetries": "最大重试次数",
  "cron.maxRetriesTip": "失败 Cron 任务的最大重试尝试次数。",
  "cron.baseDelay": "基础延迟",
  "cron.baseDelayTip": "重试之间的初始退避延迟（例如 2s、500ms）。",
  "cron.maxDelay": "最大延迟",
  "cron.maxDelayTip": "重试之间的最大退避延迟（例如 30s、5m）。",
  "cron.defaultTimezone": "默认时区",
  "cron.defaultTimezoneTip": "未为单个任务设置时区时，cron 表达式使用的 IANA 时区（例如 Asia/Shanghai）。留空则使用服务器系统时区。",
  "cron.defaultTimezonePlaceholder": "系统时区",

  "telemetry.title": "遥测（OpenTelemetry）",
  "telemetry.description": "将追踪和指标导出到兼容 OpenTelemetry 的后端",
  "telemetry.enabled": "已启用",
  "telemetry.enabledTip": "启用 OpenTelemetry 追踪导出，需要 'otel' 构建标签。",
  "telemetry.endpoint": "端点",
  "telemetry.endpointTip": "OTLP 导出器端点（host:port），gRPC 默认端口为 4317，HTTP 为 4318。",
  "telemetry.protocol": "协议",
  "telemetry.protocolTip": "OTLP 导出器的传输协议。",
  "telemetry.serviceName": "服务名称",
  "telemetry.serviceNameTip": "追踪中报告的服务名称，用于在可观测性后端中筛选。",
  "telemetry.insecure": "不安全连接",
  "telemetry.insecureTip": "禁用 OTLP 连接的 TLS，仅在本地/开发环境中使用。",
  "telemetry.headers": "导出请求头",
  "telemetry.headersTip": "随每个 OTLP 导出请求发送的附加 HTTP 请求头（例如托管后端的 API 密钥）。",
  "telemetry.headerKeyPlaceholder": "请求头名称",
  "telemetry.headerValuePlaceholder": "请求头值",
  "telemetry.addHeader": "添加请求头",

  "bindings.title": "Agent 绑定",
  "bindings.description": "将特定频道、对等方或账户路由到指定的 Agent",
  "bindings.add": "添加绑定",
  "bindings.noBindings": "未配置绑定，所有消息将路由到默认 Agent。",
  "bindings.agentId": "Agent ID",
  "bindings.channel": "频道",
  "bindings.peerKind": "对等方类型",
  "bindings.peerId": "对等方 ID",

  "providers.title": "提供商 API 密钥",
  "providers.description": "覆盖已配置 LLM 提供商的 API 密钥和基础 URL",
  "providers.noProviders": "配置文件中未找到任何提供商。",
  "providers.apiKey": "API 密钥",
  "providers.apiBaseUrl": "基础 URL",
  "providers.apiBaseUrlPlaceholder": "https://api.example.com/v1",
  "providers.managedVia": "通过 {{envKey}} 环境变量管理。",

  "channels.title": "频道设置",
  "channels.description": "配置内置频道集成（令牌、策略、流式传输）",
  "channels.noChannels": "配置文件中未找到任何频道。",
  "channels.enabled": "已启用",
  "channels.token": "令牌 / 密钥",
  "channels.managedVia": "通过 {{envKey}} 环境变量管理。",
  "channels.dmPolicy": "私信策略",
  "channels.groupPolicy": "群组策略",
  "channels.allowFrom": "允许来自",
  "channels.allowFromPlaceholder": "user_id_1, user_id_2, ...",
  "channels.dmStreaming": "私信流式传输",
  "channels.dmStreamingHint": "私聊中逐步更新消息",
  "channels.groupStreaming": "群组流式传输",
  "channels.groupStreamingHint": "群聊中逐步更新消息",
  "channels.streaming": "流式传输",
  "channels.draftTransport": "草稿预览",
  "channels.draftTransportHint": "私聊中静默流式预览（每次编辑无通知）",
  "channels.reasoningStream": "显示推理",
  "channels.reasoningStreamHint": "将AI思考过程显示为单独的消息",
  "channels.reactionLevel": "反应级别",
  "channels.connectionMode": "连接模式",
  "channels.reactionOff": "关闭",
  "channels.reactionMinimal": "最小",
  "channels.reactionFull": "完整",
  "channels.connectionWebsocket": "WebSocket",
  "channels.connectionWebhook": "Webhook",

  "bindings.any": "任意",

  "toast": {
    "saved": "配置已保存",
    "saveFailed": "保存配置失败"
  }
}
