mirror of
https://github.com/outbackdingo/optimclaw.git
synced 2026-08-25 14:53:34 +00:00
Moves all frontend static assets (app.js, style.css, index.html, i18n/*,
theme-init.js, favicon.ico) from src/channels/web/static/ into a dedicated
ironclaw_frontend crate. The crate also adds:
- Layout configuration types (branding, tab order, chat features, per-widget config)
- Widget manifest types with named slot system (tab, chat_header, sidebar, etc.)
- CSS scoping utility (auto-prefixes selectors with [data-widget="id"])
- Bundle assembly (injects layout config, widgets, and custom CSS into HTML)
- Frontend API endpoints (GET/PUT layout, list widgets, serve widget files)
- Browser-side IronClaw.registerWidget() API with authenticated fetch,
event subscription, theme access, and i18n
Widgets are stored in workspace at frontend/widgets/{id}/ and served via
the API. Layout config is stored at frontend/layout.json. The agent can
create/edit both using existing memory_write/memory_read tools.
Gateway handlers now reference ironclaw_frontend::assets constants instead
of include_str!() with local paths, completing the separation.
Co-Authored-By: Claude Opus 4.6 (1M context) <[email protected]>
586 lines
22 KiB
JavaScript
586 lines
22 KiB
JavaScript
// 中文语言包 for IronClaw
|
||
|
||
I18n.register('zh-CN', {
|
||
// 认证页面
|
||
'auth.title': 'IronClaw',
|
||
'auth.tagline': '安全可靠的 AI 助手',
|
||
'auth.tokenLabel': '网关令牌',
|
||
'auth.tokenPlaceholder': '粘贴你的网关令牌',
|
||
'auth.connect': '连接',
|
||
'auth.errorRequired': '请输入令牌',
|
||
'auth.errorInvalid': '令牌无效',
|
||
// 聊天
|
||
'chat.inputPlaceholder': '输入消息或 / 以使用命令...',
|
||
|
||
// 重启弹窗
|
||
'restart.title': '重启 IronClaw 实例',
|
||
'restart.description': '确定要重启 IronClaw 实例吗?这将优雅地重启进程。',
|
||
'restart.warning': '正在运行的任务可能会中断。重启将在几秒钟内完成。',
|
||
'restart.cancel': '取消',
|
||
'restart.confirm': '确认重启',
|
||
'restart.progressTitle': '正在重启 IronClaw',
|
||
'restart.progressSubtitle': '请等待进程重启...',
|
||
'restart.checkLogs': '重启完成后,请查看日志标签页了解详情。',
|
||
|
||
// 主题
|
||
'theme.tooltipDark': '主题:深色(点击切换浅色)',
|
||
'theme.tooltipLight': '主题:浅色(点击切换跟随系统)',
|
||
'theme.tooltipSystem': '主题:跟随系统(点击切换深色)',
|
||
'theme.announce': '主题:{mode}',
|
||
|
||
// 标签页
|
||
'tab.chat': '聊天',
|
||
'tab.memory': '记忆',
|
||
'tab.jobs': '任务',
|
||
'tab.routines': '定时任务',
|
||
'tab.settings': '设置',
|
||
'tab.extensions': '扩展',
|
||
'tab.skills': '技能',
|
||
'tab.logs': '日志',
|
||
'settings.inference': '推理',
|
||
'settings.agent': '代理',
|
||
'settings.channels': '频道',
|
||
'settings.networking': '网络',
|
||
'settings.mcp': 'MCP',
|
||
'settings.users': '用户管理',
|
||
|
||
// 用户管理标签页
|
||
'users.heading': '用户管理',
|
||
'users.newUser': '+ 新用户',
|
||
'users.displayNamePlaceholder': '显示名称',
|
||
'users.emailPlaceholder': '邮箱(可选)',
|
||
'users.roleMember': '成员',
|
||
'users.roleAdmin': '管理员',
|
||
'users.create': '创建',
|
||
'users.cancel': '取消',
|
||
'users.emptyState': '暂无用户。创建第一个用户以开始使用。',
|
||
'users.adminRequired': '需要管理员权限来管理用户。',
|
||
'users.failedToLoad': '加载用户列表失败',
|
||
'users.suspend': '停用',
|
||
'users.activate': '启用',
|
||
'users.addToken': '+ 令牌',
|
||
'users.failedSuspend': '停用用户失败',
|
||
'users.failedActivate': '启用用户失败',
|
||
'users.makeAdmin': '设为管理员',
|
||
'users.makeMember': '设为成员',
|
||
'users.failedRoleChange': '更改角色失败',
|
||
'users.userCreated': '用户已创建!',
|
||
'users.tokenCreated': '令牌已创建!',
|
||
'users.tokenShareMessage': '分享此登录链接——此链接只会显示一次:',
|
||
'users.rawToken': '原始令牌:',
|
||
'users.copied': '已复制!',
|
||
'users.displayNameRequired': '显示名称为必填项',
|
||
'users.failedCreate': '创建用户失败',
|
||
'users.columns.id': 'ID',
|
||
'users.columns.displayName': '显示名称',
|
||
'users.columns.email': '邮箱',
|
||
'users.columns.role': '角色',
|
||
'users.columns.status': '状态',
|
||
'users.columns.jobs': '任务',
|
||
'users.columns.cost': '费用',
|
||
'users.columns.lastActive': '最近活跃',
|
||
'users.columns.created': '创建时间',
|
||
'users.columns.actions': '操作',
|
||
|
||
// 状态
|
||
'status.connected': '已连接',
|
||
'status.disconnected': '已断开',
|
||
'status.connecting': '连接中...',
|
||
'status.reconnecting': '重新连接中...',
|
||
'status.teeVerified': 'TEE 已验证',
|
||
'status.restart': '重启',
|
||
'status.active': '已激活',
|
||
'status.installed': '已安装',
|
||
'status.awaitingPairing': '等待配对',
|
||
|
||
// 仪表盘
|
||
'dashboard.connections': '连接数',
|
||
'dashboard.uptime': '运行时间',
|
||
'dashboard.costToday': '今日费用',
|
||
'dashboard.spent': '已花费',
|
||
'dashboard.actionsPerHour': '每小时操作',
|
||
'dashboard.sse': 'SSE',
|
||
'dashboard.websocket': 'WebSocket',
|
||
|
||
// 聊天标签页
|
||
'chat.newThread': '新对话',
|
||
'chat.toggleSidebar': '切换侧边栏',
|
||
'chat.assistant': '助手',
|
||
'chat.conversations': '对话列表',
|
||
'chat.send': '发送',
|
||
'chat.attachImages': '附加图片',
|
||
'chat.empty': '选择文件查看内容',
|
||
'chat.loading': '加载中...',
|
||
'chat.loadingOlder': '加载更早的消息...',
|
||
'chat.noFiles': '工作区没有文件',
|
||
'chat.noResults': '没有结果',
|
||
|
||
// 对话侧边栏
|
||
'thread.assistant': '助手',
|
||
'thread.new': '新对话',
|
||
|
||
// 记忆标签页
|
||
'memory.searchPlaceholder': '搜索记忆...',
|
||
'memory.workspace': '工作区',
|
||
'memory.edit': '编辑',
|
||
'memory.save': '保存',
|
||
'memory.cancel': '取消',
|
||
'memory.selectFile': '选择文件查看内容',
|
||
|
||
// 任务标签页
|
||
'jobs.summary': '任务摘要',
|
||
'jobs.id': 'ID',
|
||
'jobs.title': '标题',
|
||
'jobs.source': '来源',
|
||
'jobs.status': '状态',
|
||
'jobs.created': '创建时间',
|
||
'jobs.actions': '操作',
|
||
'jobs.empty': '暂无任务',
|
||
'jobs.statusRunning': '运行中',
|
||
'jobs.statusCompleted': '已完成',
|
||
'jobs.statusFailed': '失败',
|
||
'jobs.statusPending': '等待中',
|
||
'jobs.jobId': '任务 ID',
|
||
'jobs.description': '描述',
|
||
'jobs.stateTransitions': '状态转换',
|
||
'jobs.projectFiles': '项目文件',
|
||
'jobs.noProjectFiles': '没有项目文件',
|
||
'jobs.viewJob': '查看任务',
|
||
'jobs.browse': '浏览',
|
||
|
||
// 定时任务标签页
|
||
'routines.summary': '定时任务摘要',
|
||
'routines.name': '名称',
|
||
'routines.trigger': '触发器',
|
||
'routines.action': '操作',
|
||
'routines.lastRun': '上次运行',
|
||
'routines.nextRun': '下次运行',
|
||
'routines.runs': '运行次数',
|
||
'routines.status': '状态',
|
||
'routines.actions': '操作',
|
||
'routines.runsToday': '今日运行',
|
||
'routines.empty': '暂无定时任务',
|
||
'routines.noConfigured': '暂无配置的定时任务。请让助手创建一个。',
|
||
'routines.triggerFailed': '触发失败: {message}',
|
||
|
||
// 日志标签页
|
||
'logs.serverLevel': '服务端日志级别',
|
||
'logs.clientLevel': '客户端日志级别',
|
||
'logs.pause': '暂停',
|
||
'logs.resume': '继续',
|
||
'logs.clear': '清空',
|
||
'logs.autoScroll': '自动滚动',
|
||
'logs.filter': '筛选日志...',
|
||
'logs.empty': '暂无日志',
|
||
'logs.allLevels': '所有级别',
|
||
'logs.error': '错误',
|
||
'logs.warn': '警告',
|
||
'logs.info': '信息',
|
||
'logs.debug': '调试',
|
||
|
||
// 扩展标签页
|
||
'extensions.installed': '已安装扩展',
|
||
'extensions.available': '可用扩展',
|
||
'extensions.installWasm': '安装扩展',
|
||
'extensions.noInstalled': '没有安装扩展',
|
||
'extensions.noAvailable': '没有其他可用扩展',
|
||
'extensions.loading': '加载中...',
|
||
'extensions.install': '安装',
|
||
'extensions.installing': '安装中...',
|
||
'extensions.installedSuccess': '已安装 {name}',
|
||
'extensions.remove': '移除',
|
||
'extensions.activate': '激活',
|
||
'extensions.reconfigure': '重新配置',
|
||
'extensions.tools': '工具',
|
||
'extensions.noConfigNeeded': '{name} 不需要配置',
|
||
'extensions.configure': '配置 {name}',
|
||
'extensions.optional': ' (可选)',
|
||
'extensions.autoGenerated': '留空则自动生成',
|
||
'extensions.pendingPairing': '等待配对请求',
|
||
'extensions.from': '来自',
|
||
|
||
// MCP 服务器
|
||
'mcp.servers': 'MCP 服务器',
|
||
'mcp.noServers': '没有可用的 MCP 服务器',
|
||
'mcp.addCustom': '添加自定义 MCP 服务器',
|
||
'mcp.add': '添加',
|
||
'mcp.addedSuccess': '已添加 MCP 服务器 {name}',
|
||
|
||
|
||
// 技能标签页
|
||
'skills.installed': '已安装技能',
|
||
'skills.noInstalled': '没有安装技能',
|
||
'skills.searchClawHub': '搜索 ClawHub',
|
||
'skills.searchPlaceholder': '搜索...',
|
||
'skills.installByUrl': '通过 URL 安装技能',
|
||
'skills.namePlaceholder': '技能名称或标识',
|
||
'skills.urlPlaceholder': 'SKILL.md 的 HTTPS URL(可选)',
|
||
'skills.search': '搜索',
|
||
'skills.searching': '搜索中...',
|
||
'skills.noResults': '没有找到 "{query}" 相关技能',
|
||
'skills.searchFailed': '搜索失败: {message}',
|
||
'skills.install': '安装',
|
||
'skills.installing': '安装中...',
|
||
'skills.installedSuccess': '已安装技能 "{name}"',
|
||
'skills.remove': '移除',
|
||
'skills.activatesOn': '激活关键词',
|
||
'skills.registryError': '无法连接 ClawHub 注册表: {message}',
|
||
'skills.by': '作者',
|
||
'skills.updated': '更新于',
|
||
'skills.loading': '加载技能中...',
|
||
'skills.loadFailed': '加载技能失败: {message}',
|
||
'skills.confirmRemove': '确定要移除技能 "{name}" 吗?',
|
||
'skills.removeFailed': '移除失败: {message}',
|
||
'skills.removed': '已移除技能 "{name}"',
|
||
|
||
// 任务摘要
|
||
'jobs.summary.total': '总计',
|
||
'jobs.summary.inProgress': '进行中',
|
||
'jobs.summary.completed': '已完成',
|
||
'jobs.summary.failed': '失败',
|
||
'jobs.summary.stuck': '卡住',
|
||
|
||
// 定时任务摘要
|
||
'routines.summary.total': '总计',
|
||
'routines.summary.enabled': '已启用',
|
||
'routines.summary.disabled': '已禁用',
|
||
'routines.summary.failing': '失败',
|
||
'routines.summary.runsToday': '今日运行',
|
||
|
||
// 按钮
|
||
'btn.close': '关闭',
|
||
'btn.cancel': '取消',
|
||
'btn.save': '保存',
|
||
'btn.edit': '编辑',
|
||
'btn.confirm': '确认',
|
||
'btn.send': '发送',
|
||
'btn.refresh': '刷新',
|
||
'btn.loadMore': '加载更多',
|
||
'btn.copy': '复制',
|
||
'btn.copied': '已复制!',
|
||
'btn.submit': '提交',
|
||
'btn.setup': '设置',
|
||
|
||
// 时间
|
||
'time.lessThan1MinuteAgo': '刚刚',
|
||
'time.lessThan1MinuteFromNow': '1分钟内',
|
||
'time.minutesAgo': '{n}分钟前',
|
||
'time.minutesFromNow': '{n}分钟后',
|
||
'time.hoursAgo': '{n}小时前',
|
||
'time.hoursFromNow': '{n}小时后',
|
||
'time.daysAgo': '{n}天前',
|
||
'time.daysFromNow': '{n}天后',
|
||
|
||
// 工具审批
|
||
'approval.title': '工具需要审批',
|
||
'approval.description': '一个工具请求运行权限。',
|
||
'approval.approve': '批准',
|
||
'approval.deny': '拒绝',
|
||
'approval.always': '始终允许',
|
||
'approval.approved': '已批准',
|
||
'approval.alwaysApproved': '始终批准',
|
||
'approval.denied': '已拒绝',
|
||
'approval.showParams': '显示参数',
|
||
'approval.hideParams': '隐藏参数',
|
||
|
||
// 认证
|
||
'authRequired.title': '{name} 需要认证',
|
||
'authRequired.authenticateWith': '使用 {name} 认证',
|
||
'authRequired.getToken': '获取令牌',
|
||
'authRequired.instructions': '说明',
|
||
|
||
// 沙盒任务
|
||
'sandbox.job': '沙盒任务',
|
||
'sandbox.doneSignal': '完成信号已发送',
|
||
|
||
// 错误消息
|
||
'error.startConversation': '请先开始一个对话',
|
||
'error.restartFailed': '重启失败: {message}',
|
||
'error.tokenRequired': '请输入令牌',
|
||
'error.tokenInvalid': '令牌无效',
|
||
'error.connectionFailed': '连接失败',
|
||
'error.unknown': '未知错误',
|
||
'error.loadFailed': '加载失败: {message}',
|
||
|
||
// 成功消息
|
||
'success.restartInitiated': '已开始重启',
|
||
'success.saved': '保存成功',
|
||
|
||
// 斜杠命令
|
||
'cmd.status.desc': '显示所有任务,或使用 /status <id> 查看特定任务',
|
||
'cmd.list.desc': '列出所有任务',
|
||
'cmd.cancel.desc': '/cancel <job-id> — 取消正在运行的任务',
|
||
'cmd.undo.desc': '撤销上一步',
|
||
'cmd.redo.desc': '重做已撤销的操作',
|
||
'cmd.compact.desc': '压缩上下文窗口',
|
||
'cmd.clear.desc': '清空对话并重新开始',
|
||
'cmd.interrupt.desc': '停止当前操作',
|
||
'cmd.heartbeat.desc': '触发手动心跳检查',
|
||
'cmd.summarize.desc': '总结当前对话',
|
||
'cmd.suggest.desc': '建议下一步操作',
|
||
'cmd.help.desc': '显示帮助',
|
||
'cmd.version.desc': '显示版本信息',
|
||
'cmd.tools.desc': '列出可用工具',
|
||
'cmd.skills.desc': '列出已安装的 AI 技能',
|
||
'cmd.model.desc': '显示或切换 LLM 模型',
|
||
'cmd.threadNew.desc': '创建新对话线程',
|
||
|
||
// 语言切换
|
||
'language.title': '语言',
|
||
'language.en': 'English',
|
||
'language.zhCN': '简体中文',
|
||
'language.switch': '切换语言',
|
||
|
||
// 工具活动
|
||
'tool.thinking': '思考中...',
|
||
'tool.completed': '已完成',
|
||
'tool.failed': '失败',
|
||
'tool.running': '运行中',
|
||
'tool.used': '{count} 个工具已使用',
|
||
'tool.requiresApproval': '工具需要审批',
|
||
|
||
|
||
// TEE
|
||
'tee.loadingReport': '正在加载证明报告...',
|
||
'tee.loadFailed': '无法加载证明报告',
|
||
|
||
// 通用
|
||
'common.loading': '加载中...',
|
||
'common.loadFailed': '加载失败',
|
||
'common.noData': '暂无数据',
|
||
'common.search': '搜索',
|
||
'common.add': '添加',
|
||
'common.remove': '移除',
|
||
'common.install': '安装',
|
||
'common.activate': '激活',
|
||
'common.deactivate': '停用',
|
||
'common.configure': '配置',
|
||
'common.save': '保存',
|
||
'common.cancel': '取消',
|
||
'common.confirm': '确认',
|
||
'common.close': '关闭',
|
||
'common.edit': '编辑',
|
||
'common.delete': '删除',
|
||
'common.refresh': '刷新',
|
||
'common.searchPlaceholder': '搜索...',
|
||
'common.name': '名称',
|
||
'common.description': '描述',
|
||
'common.status': '状态',
|
||
'common.actions': '操作',
|
||
'common.version': '版本',
|
||
'common.owner': '作者',
|
||
'common.tags': '标签',
|
||
|
||
// 扩展
|
||
'ext.active': '已激活',
|
||
'ext.inactive': '未激活',
|
||
'ext.builtin': '内置',
|
||
'ext.remove': '移除',
|
||
'ext.install': '安装',
|
||
'ext.installing': '安装中...',
|
||
'ext.installed': '已安装',
|
||
'ext.setup': '设置',
|
||
'ext.reconfigure': '重新配置',
|
||
'ext.configure': '配置',
|
||
'ext.confirmRemove': '确定要移除扩展 "{name}" 吗?',
|
||
'ext.removeFailed': '移除失败: {message}',
|
||
'ext.removed': '已移除 {name}',
|
||
'ext.installFailed': '安装失败: {message}',
|
||
|
||
// 配置
|
||
'config.title': '配置 {name}',
|
||
'config.telegramOwnerHint': '保存后,IronClaw 会显示一次性验证码。将 `/start CODE` 发送给你的 Telegram 机器人,IronClaw 会自动完成设置。',
|
||
'config.telegramChallengeTitle': 'Telegram 所有者验证',
|
||
'config.telegramOwnerWaiting': '正在等待 Telegram 所有者验证...',
|
||
'config.telegramCommandLabel': '请在 Telegram 中发送:',
|
||
'config.telegramStartOver': '重新开始',
|
||
'config.telegramStartOverHint': 'Telegram 验证未完成。点击“重新开始”以生成新的验证码并重试。',
|
||
'config.optional': '(可选)',
|
||
'config.alreadySet': '(已设置 — 留空以保持不变)',
|
||
'config.alreadyConfigured': '已配置',
|
||
'config.autoGenerate': '如果为空则自动生成',
|
||
'config.save': '保存',
|
||
'config.cancel': '取消',
|
||
|
||
// 设置工具栏
|
||
'settings.export': '导出',
|
||
'settings.import': '导入',
|
||
'settings.searchPlaceholder': '搜索设置...',
|
||
'settings.exportSuccess': '设置已导出',
|
||
'settings.exportFailed': '导出失败: {message}',
|
||
'settings.importSuccess': '设置导入成功',
|
||
'settings.importFailed': '导入失败: {message}',
|
||
'settings.restartRequired': '需要重启才能使更改生效。',
|
||
'settings.restartNow': '立即重启',
|
||
'settings.noMatchingSettings': '没有匹配 "{query}" 的设置',
|
||
'settings.noSettings': '未找到设置',
|
||
'settings.saved': '已保存',
|
||
'settings.on': '开启',
|
||
'settings.off': '关闭',
|
||
'settings.envValue': '环境变量: {value}',
|
||
'settings.envDefault': '使用环境变量默认值',
|
||
'settings.useEnvDefault': '使用环境变量默认值',
|
||
|
||
// 设置分组
|
||
'cfg.group.llm': 'LLM 提供商',
|
||
'cfg.group.embeddings': '嵌入向量',
|
||
'cfg.group.agent': '代理',
|
||
'cfg.group.heartbeat': '心跳',
|
||
'cfg.group.sandbox': '沙箱',
|
||
'cfg.group.routines': '定时任务',
|
||
'cfg.group.safety': '安全',
|
||
'cfg.group.skills': '技能',
|
||
'cfg.group.search': '搜索',
|
||
'cfg.group.tunnel': '隧道',
|
||
'cfg.group.gateway': '网关',
|
||
|
||
// 推理设置
|
||
'cfg.llm_backend.label': '后端',
|
||
'cfg.llm_backend.desc': 'LLM 推理提供商',
|
||
'cfg.selected_model.label': '模型',
|
||
'cfg.selected_model.desc': '所选后端的模型名称或 ID',
|
||
'cfg.ollama_base_url.label': 'Ollama URL',
|
||
'cfg.ollama_base_url.desc': 'Ollama API 基础 URL',
|
||
'cfg.openai_compatible_base_url.label': 'OpenAI 兼容 URL',
|
||
'cfg.openai_compatible_base_url.desc': 'OpenAI 兼容 API 基础 URL',
|
||
'cfg.bedrock_region.label': 'Bedrock 区域',
|
||
'cfg.bedrock_region.desc': 'Bedrock 的 AWS 区域',
|
||
'cfg.bedrock_cross_region.label': '跨区域',
|
||
'cfg.bedrock_cross_region.desc': '启用跨区域推理',
|
||
'cfg.bedrock_profile.label': 'AWS 配置文件',
|
||
'cfg.bedrock_profile.desc': 'Bedrock 认证的 AWS 配置文件',
|
||
'cfg.embeddings_enabled.label': '启用',
|
||
'cfg.embeddings_enabled.desc': '启用向量嵌入以支持记忆搜索',
|
||
'cfg.embeddings_provider.label': '提供商',
|
||
'cfg.embeddings_provider.desc': '嵌入向量 API 提供商',
|
||
'cfg.embeddings_model.label': '模型',
|
||
'cfg.embeddings_model.desc': '嵌入向量模型名称',
|
||
|
||
// 代理设置
|
||
'cfg.agent_name.label': '名称',
|
||
'cfg.agent_name.desc': '代理显示名称',
|
||
'cfg.agent_max_parallel_jobs.label': '最大并行任务数',
|
||
'cfg.agent_max_parallel_jobs.desc': '最大并发后台任务数',
|
||
'cfg.agent_job_timeout.label': '任务超时',
|
||
'cfg.agent_job_timeout.desc': '每个任务的最大持续时间(秒)',
|
||
'cfg.agent_max_tool_iterations.label': '最大工具迭代次数',
|
||
'cfg.agent_max_tool_iterations.desc': '每轮最大工具调用次数',
|
||
'cfg.agent_use_planning.label': '规划',
|
||
'cfg.agent_use_planning.desc': '执行前启用多步规划',
|
||
'cfg.agent_auto_approve.label': '自动批准工具',
|
||
'cfg.agent_auto_approve.desc': '跳过工具调用的手动审批',
|
||
'cfg.agent_timezone.label': '时区',
|
||
'cfg.agent_timezone.desc': '默认时区(IANA)',
|
||
'cfg.agent_session_idle.label': '会话空闲超时',
|
||
'cfg.agent_session_idle.desc': '空闲会话过期前的秒数',
|
||
'cfg.agent_stuck_threshold.label': '卡住阈值',
|
||
'cfg.agent_stuck_threshold.desc': '任务被认为卡住前的秒数',
|
||
'cfg.agent_max_repair.label': '最大修复尝试次数',
|
||
'cfg.agent_max_repair.desc': '卡住任务的自动恢复尝试次数',
|
||
'cfg.agent_max_cost.label': '每日最大费用',
|
||
'cfg.agent_max_cost.desc': '每日 LLM 支出上限(美分,0 = 无限制)',
|
||
'cfg.agent_max_actions.label': '每小时最大操作数',
|
||
'cfg.agent_max_actions.desc': '每小时工具调用速率限制(0 = 无限制)',
|
||
'cfg.agent_allow_local.label': '允许本地工具',
|
||
'cfg.agent_allow_local.desc': '启用本地文件系统工具执行',
|
||
|
||
// 心跳设置
|
||
'cfg.heartbeat_enabled.label': '启用',
|
||
'cfg.heartbeat_enabled.desc': '运行定期后台检查',
|
||
'cfg.heartbeat_interval.label': '间隔',
|
||
'cfg.heartbeat_interval.desc': '心跳间隔秒数(默认:1800)',
|
||
'cfg.heartbeat_notify_channel.label': '通知频道',
|
||
'cfg.heartbeat_notify_channel.desc': '发送心跳发现的频道',
|
||
'cfg.heartbeat_notify_user.label': '通知用户',
|
||
'cfg.heartbeat_notify_user.desc': '要通知的用户 ID',
|
||
'cfg.heartbeat_quiet_start.label': '静默时段开始',
|
||
'cfg.heartbeat_quiet_start.desc': '停止心跳的小时(0-23)',
|
||
'cfg.heartbeat_quiet_end.label': '静默时段结束',
|
||
'cfg.heartbeat_quiet_end.desc': '恢复心跳的小时(0-23)',
|
||
'cfg.heartbeat_timezone.label': '时区',
|
||
'cfg.heartbeat_timezone.desc': '静默时段的时区(IANA)',
|
||
|
||
// 沙箱设置
|
||
'cfg.sandbox_enabled.label': '启用',
|
||
'cfg.sandbox_enabled.desc': '启用 Docker 沙箱以运行后台任务',
|
||
'cfg.sandbox_policy.label': '策略',
|
||
'cfg.sandbox_policy.desc': '沙箱安全策略',
|
||
'cfg.sandbox_timeout.label': '超时',
|
||
'cfg.sandbox_timeout.desc': '最大任务持续时间(秒)',
|
||
'cfg.sandbox_memory.label': '内存限制',
|
||
'cfg.sandbox_memory.desc': '容器内存限制(MB)',
|
||
'cfg.sandbox_image.label': 'Docker 镜像',
|
||
'cfg.sandbox_image.desc': '沙箱任务的容器镜像',
|
||
|
||
// 定时任务设置
|
||
'cfg.routines_max_concurrent.label': '最大并发数',
|
||
'cfg.routines_max_concurrent.desc': '同时运行的最大定时任务数',
|
||
'cfg.routines_cooldown.label': '默认冷却时间',
|
||
'cfg.routines_cooldown.desc': '定时任务触发间的最小秒数',
|
||
|
||
// 安全设置
|
||
'cfg.safety_max_output.label': '最大输出长度',
|
||
'cfg.safety_max_output.desc': '每次响应的最大输出令牌数',
|
||
'cfg.safety_injection_check.label': '注入检查',
|
||
'cfg.safety_injection_check.desc': '启用提示注入检测',
|
||
|
||
// 技能设置
|
||
'cfg.skills_max_active.label': '最大活跃技能数',
|
||
'cfg.skills_max_active.desc': '同时活跃的最大技能数',
|
||
'cfg.skills_max_tokens.label': '最大上下文令牌数',
|
||
'cfg.skills_max_tokens.desc': '技能提示的令牌预算',
|
||
|
||
// 搜索设置
|
||
'cfg.search_fusion.label': '融合策略',
|
||
'cfg.search_fusion.desc': '混合搜索排名方法',
|
||
|
||
// 网络设置
|
||
'cfg.tunnel_provider.label': '提供商',
|
||
'cfg.tunnel_provider.desc': '公网 URL 隧道提供商',
|
||
'cfg.tunnel_public_url.label': '公网 URL',
|
||
'cfg.tunnel_public_url.desc': '静态公网 URL(不使用隧道提供商时)',
|
||
'cfg.gateway_rate_limit.label': '速率限制',
|
||
'cfg.gateway_rate_limit.desc': '每分钟最大聊天消息数',
|
||
'cfg.gateway_max_connections.label': '最大连接数',
|
||
'cfg.gateway_max_connections.desc': '最大同时 SSE/WS 连接数',
|
||
|
||
// 频道子标签
|
||
'channels.builtin': '内置频道',
|
||
'channels.messaging': '消息频道',
|
||
'channels.webGateway': 'Web 网关',
|
||
'channels.webGatewayDesc': '基于浏览器的聊天界面',
|
||
'channels.httpWebhook': 'HTTP Webhook',
|
||
'channels.httpWebhookDesc': '用于外部集成的传入 webhook 端点',
|
||
'channels.cli': 'CLI',
|
||
'channels.cliDesc': '使用 Ratatui 的终端 UI',
|
||
'channels.repl': 'REPL',
|
||
'channels.replDesc': '用于测试的简单读取-求值-打印循环',
|
||
'channels.configureVia': '通过 {env} 配置',
|
||
'channels.runWith': '运行命令: {cmd}',
|
||
|
||
// Welcome Card
|
||
'welcome.heading': '有什么可以帮助您的?',
|
||
'welcome.description': 'IronClaw 是您的安全 AI 助手。选择下方的建议或输入您自己的消息。',
|
||
'welcome.runTool': '运行工具',
|
||
'welcome.checkJobs': '查看任务状态',
|
||
'welcome.searchMemory': '搜索记忆',
|
||
'welcome.manageRoutines': '管理例程',
|
||
'welcome.systemStatus': '系统状态',
|
||
'welcome.writeCode': '编写代码',
|
||
|
||
// Connection
|
||
'connection.disconnected': '已断开连接 — 正在尝试重新连接',
|
||
'connection.reconnecting': '正在重新连接(第 {count} 次尝试)...',
|
||
'connection.reconnected': '已重新连接',
|
||
|
||
// Messages
|
||
'message.you': '你',
|
||
'message.assistant': 'IronClaw',
|
||
'message.system': '系统',
|
||
'message.copy': '复制',
|
||
'message.copied': '已复制!',
|
||
|
||
// Approval
|
||
'approval.pressY': '按 Y 批准,N 拒绝',
|
||
});
|