export default { // 登录 login: { title: 'Hermes Web UI', description: '输入用户名和密码以继续。', placeholder: '访问令牌', submit: '登录', tokenRequired: '请输入访问令牌', invalidToken: '令牌无效', connectionFailed: '无法连接到服务器', passwordLogin: '密码登录', tokenLogin: '令牌登录', usernamePlaceholder: '用户名', passwordPlaceholder: '密码', defaultCredentialsHint: '默认登录名:admin,默认密码:123456', credentialsRequired: '请输入用户名和密码', invalidCredentials: '用户名或密码错误', tooManyAttempts: '登录失败次数过多,请稍后重试', sessionExpired: '登录已过期,请重新登录', accessDenied: '你没有权限访问该资源', passwordMismatch: '两次密码不一致', passwordTooShort: '密码长度至少 6 个字符', setupSuccess: '密码登录配置成功', passwordChanged: '密码修改成功', passwordRemoved: '密码登录已移除', setupPassword: '设置密码登录', changePassword: '修改密码', changeUsername: '修改用户名', removePasswordLogin: '移除', username: '用户名', currentPassword: '当前密码', newPassword: '新密码', confirmPassword: '确认密码', newUsername: '新用户名', usernameChanged: '用户名修改成功', usernameTooShort: '用户名至少 2 个字符', setupDescription: '管理用于登录的用户名和密码。', removeConfirm: '用户账号必须保留密码登录。', passwordLoginNotConfigured: '密码登录未配置', passwordLoginConfigured: '当前账户:{username}', defaultCredentialTitle: '请修改默认账户和密码', defaultCredentialMessage: '当前登录账户仍在使用默认用户名或默认密码。为了避免未授权访问,请尽快进入当前账户修改用户名和密码。', defaultCredentialAction: '去修改', defaultCredentialLater: '稍后提醒', }, users: { title: '账户管理', description: '创建用户、分配角色,并控制普通管理员可访问的配置。', create: '创建用户', edit: '编辑用户', username: '用户名', role: '角色', statusLabel: '状态', profiles: '可访问配置', profilesPlaceholder: '选择可访问的配置', allProfiles: '全部配置', noProfiles: '未关联配置', lastLogin: '最后登录', newPasswordOptional: '新密码(留空不修改)', loadFailed: '用户列表加载失败', deleteConfirm: '确认删除该用户?', enable: '启用', disable: '禁用', roles: { superAdmin: '超级管理员', admin: '普通管理员', }, status: { active: '启用', disabled: '禁用', }, }, // 通用 common: { loading: '加载中...', cancel: '取消', delete: '删除', retry: '重试', edit: '编辑', save: '保存', saved: '已保存', saveFailed: '保存失败', deleteFailed: '删除失败', ok: '确定', copied: '已复制', copy: '复制', update: '更新', create: '创建', noData: '暂无数据', expired: '已过期', fetch: '获取', add: '添加', enable: '启用', disable: '禁用', configured: '已配置', notConfigured: '未配置', confirm: '确定', expand: '展开', collapse: '收起', start: '启动', stop: '停止', }, // 侧边栏 sidebar: { chat: '对话', search: '搜索', apiRelay: '中转站', history: '历史', jobs: '任务', kanban: '看板', models: '模型', profiles: '用户', plugins: '插件', skills: '技能', memory: '记忆', logs: '日志', usage: '用量', performance: '性能监控', skillsUsage: '技能用量', channels: '频道', gateways: '网关', terminal: '终端', groupChat: '群聊', files: '文件', groupConversation: '对话', groupConversationShort: '对话', groupPlatform: '平台', groupAgent: '代理', groupAgentShort: '代理', groupSystem: '系统', groupSystemShort: '系统', groupMonitoring: '监控', groupMonitoringShort: '监控', groupTools: '工具', settings: '设置', connected: '已连接', disconnected: '未连接', collapse: '收起菜单', expand: '展开菜单', updateTip: '在终端运行 "hermes-web-ui update" 即可更新', updateVersion: '升级版本 v{version}', reloadClientVersion: '刷新到 v{version}', updating: '正在更新...', updateSuccess: '更新成功,请稍后刷新页面,如长时间未启动,请手动启动', updateFailed: '更新失败', logout: '退出登录', nodeVersionWarning: '检测到 Node.js v{version},请升级到23以上版本。', changelog: '更新日志', noChangelog: '暂无更新日志', }, performance: { title: '性能监控', subtitle: '查看系统资源、Bridge Broker、Workers 和活跃会话', refresh: '刷新', autoRefreshOn: '自动刷新', autoRefreshOff: '手动刷新', loadFailed: '性能数据加载失败', systemCpu: '系统 CPU', systemMemory: '系统内存', activeSessions: '活跃会话', runningSessions: '运行中 {count}', workers: 'Workers', totalWorkerMemory: 'Worker 总内存', processes: '进程', uptime: '运行', running: '运行中', stopped: '已停止', workerMemory: 'Worker 内存', lastUpdated: '更新时间', profile: 'Profile', memory: '内存', sessions: '会话', runningActiveSessions: '运行中 / 活跃', lastUsed: '最后使用', status: '状态', noWorkers: '暂无 Worker', sessionsByProfile: '按 Profile 统计会话', noActiveSessions: '暂无活跃会话', }, // 抽屉 drawer: { terminal: '终端', files: '工作区', }, // 对话 chat: { contextRemaining: '剩余', contextClickToEdit: '点击编辑上下文长度', contextEditTitle: '编辑上下文长度', contextEditDesc: '设置当前模型的上下文长度限制(token 数量)', contextEditPlaceholder: '请输入上下文长度', contextEditHint: '常见值:200k (Claude), 128k (GPT-4), 32k (GPT-3.5)', contextEditSave: '保存', contextEditCancel: '取消', contextEditInvalid: '请输入有效的上下文长度', contextEditSuccess: '上下文长度已更新', contextEditFailed: '更新失败', emptyState: '开始与 Hermes Agent 对话', cliEmptyState: '开始 CLI 对话', outlineTitle: '会话大纲', outlineEmpty: '暂无会话内容', outlineUserQuestion: '用户问题', inputPlaceholder: '输入消息... (Enter 发送,Shift+Enter 换行)', slashCommandArgs: { message: '<消息>', title: '<标题>', text: '<文本>', }, slashCommands: { usage: '计算当前会话用量', status: '查看会话状态和队列', abort: '停止当前 Bridge 运行', queue: '把消息加入当前运行后的队列', clear: '清空当前显示内容', clearHistory: '删除当前会话已入库的消息历史', title: '重命名当前会话', compress: '空闲时触发上下文压缩', steer: '向当前 Bridge 运行发送引导文本', destroy: '释放当前会话的 Bridge Agent', }, attachFiles: '添加附件', autoPlaySpeech: '自动播放语音', showToolCalls: '显示工具调用', hideToolCalls: '隐藏工具调用', messageQueue: '消息队列', removeQueuedMessage: '移除队列消息', stop: '停止', start: '启动', stopGateway: '停止网关', send: '发送', contextUsed: '上下文已用:', sessions: '会话', webUiSessions: '会话', allProfiles: '全部配置', profileMissingModelsTip: '该会话所属配置「{profile}」没有可用的 provider 或模型', sessionScopeHint: '这里只显示当前会话;CLI、Telegram、Discord、Cron 等通道会话在历史中只读查看。', openHistory: '打开历史', hermesHistory: 'Hermes 历史', historyScopeHint: '这里按来源只读查看当前 profile 的 Hermes 历史会话。', noSessions: '暂无会话', searchTitle: '搜索会话', searchSubtitle: '按标题或消息内容搜索', searchScope: '搜索范围:仅 Web UI 本地会话库;不包含只读 Hermes 历史会话。', searchHint: 'Cmd/Ctrl+K', searchPlaceholder: '搜索会话...', searchEmpty: '最近会话', searchRecent: '最近会话', searchNoResults: '没有匹配的会话', searchNoSnippet: '没有可显示的摘要', searchEnterHint: 'Enter 打开 · Esc 关闭', searchFailed: '搜索会话失败', newChat: '新建对话', approvalKicker: '终端授权', approvalTitle: '运行前请确认命令', approvalAllowOnce: '仅本次允许', approvalAllowSession: '本会话允许', approvalAlways: '始终允许', approvalDeny: '拒绝', newCliChat: '新建 CLI', deleteSession: '确定删除此会话?', sessionDeleted: '会话已删除', toggleBatchMode: '批量选择', selectAll: '全选', confirmBatchDelete: '确定删除选中的 {count} 个会话?', batchDeleteSuccess: '已删除 {count} 个会话', batchDeletePartial: '{failed} 个会话删除失败', batchDeleteFailed: '批量删除失败', rename: '重命名', pin: '置顶', unpin: '取消置顶', pinned: '已置顶', chatMode: '聊天', liveMode: '实时', liveSessions: '实时会话', recentBadge: '最近', linkedSessions: '关联 {count} 个会话', noVisibleMessages: '没有人类可见消息。', monitorRoleUser: '用户', monitorRoleAssistant: '助手', copySessionLink: '复制会话链接', copySessionId: '复制会话 ID', export: '导出', exportFull: '全量导出 (JSON)', exportCompressed: '压缩导出 (TXT)', exportCompressing: '正在压缩上下文,请稍候...', exportSuccess: '会话已导出', exportFailed: '导出失败', renamed: '已重命名', renameFailed: '重命名失败', renameSession: '重命名会话', sessionNotFound: '会话未找到', enterNewTitle: '输入新标题', workspace: '工作区', setWorkspace: '设置工作区', setWorkspaceTitle: '设置会话工作区', workspacePlaceholder: '输入项目路径,例如 /home/user/project', workspaceSet: '工作区已设置', workspaceSetFailed: '设置工作区失败', setModel: '设置模型', setModelTitle: '设置会话模型', modelSet: '模型已设置', modelSetFailed: '设置模型失败', other: '其他', runFailed: '运行失败', error: '错误', tool: '工具', arguments: '参数', result: '结果', truncated: '... (已截断)', executionDuration: '执行时长', thinkingLabel: '思考过程', thinkingInProgress: '思考中…', thinkingShow: '展开思考过程', thinkingHide: '收起思考过程', thinkingDuration: '已观察 {duration}', thinkingChars: '{count} 字', copyBubble: '复制消息', copiedBubble: '已复制', copyFailed: '复制失败', playSpeech: '播放语音', pauseSpeech: '暂停', resumeSpeech: '继续', stopSpeech: '停止', speechNotSupported: '此浏览器不支持语音播放', }, // 看板 kanban: { title: '看板', createTask: '新建任务', noTasks: '暂无任务', allStatuses: '全部状态', allAssignees: '全部负责人', board: { create: '新建看板', archive: '归档看板', slugPlaceholder: '看板标识,例如 project-a', namePlaceholder: '显示名称(可选)', slugRequired: '看板标识不能为空', created: '看板已创建', archived: '看板已归档', archiveConfirm: '确定归档当前看板?', }, columns: { triage: '待分拣', todo: '待办', ready: '就绪', running: '进行中', blocked: '阻塞', done: '已完成', archived: '已归档', }, form: { title: '标题', titlePlaceholder: '任务标题', titleRequired: '标题不能为空', body: '描述', bodyPlaceholder: '任务描述(可选)', assignee: '负责人', selectAssignee: '选择负责人...', priority: '优先级', selectPriority: '选择优先级...', }, card: { assigneeTooltip: '负责人', priority: { low: '低', medium: '中', high: '高', }, timeAgo: { justNow: '刚刚', minutes: '{count}分钟前', hours: '{count}小时前', days: '{count}天前', }, }, detail: { status: '状态', assignee: '负责人', priority: '优先级', tenant: '租户', createdAt: '创建时间', startedAt: '开始时间', completedAt: '完成时间', comments: '评论', events: '事件', runs: '运行记录', result: '完成结果', sessions: '关联会话', sessionMessages: '会话记录', noSessions: '未找到关联会话。', artifacts: '产出文件', sources: '数据来源', highlights: '关键信息', }, action: { title: '操作', complete: '完成', completeSummary: '完成摘要(可选)', block: '阻塞', blockReason: '阻塞原因', unblock: '解除阻塞', assign: '分配', assignTo: '分配给...', }, message: { taskCreated: '任务已创建', taskCompleted: '任务已完成', taskBlocked: '任务已阻塞', taskUnblocked: '任务已解除阻塞', taskAssigned: '任务已分配', loadFailed: '加载任务失败', }, stats: { total: '总计', tasks: '任务数', }, }, // 定时任务 jobs: { title: '定时任务', createJob: '创建任务', editJob: '编辑任务', noJobs: '暂无定时任务,创建一个开始吧。', name: '名称', namePlaceholder: '任务名称', schedule: '调度表达式 (Cron)', schedulePlaceholder: '例如 0 9 * * *', quickPresets: '快速预设', selectPreset: '选择预设...', presetEveryMinute: '每分钟', presetEvery5Min: '每 5 分钟', presetEveryHour: '每小时', presetEveryDay: '每天 00:00', presetEveryDay9: '每天 09:00', presetEveryMonday: '每周一 09:00', presetEveryMonth: '每月 1 日 09:00', prompt: '提示词', promptPlaceholder: '要执行的内容', deliverTarget: '投递目标', origin: '来源', local: '本地', repeatCount: '重复次数(可选)', modelPlaceholder: 'Default model', repeatPlaceholder: '留空表示无限重复', jobCreated: '任务已创建', jobUpdated: '任务已更新', nameRequired: '名称为必填项', scheduleRequired: '调度表达式为必填项', loadFailed: '加载任务失败', jobPaused: '任务已暂停', jobResumed: '任务已恢复', jobTriggered: '任务已触发', modelUpdated: 'Model updated', jobDeleted: '任务已删除', status: { running: '运行中', paused: '已暂停', disabled: '已禁用', scheduled: '已调度', }, info: { model: 'Model', schedule: 'Schedule', lastRun: '上次运行', nextRun: '下次运行', deliver: '投递', repeat: '重复', }, action: { pause: '暂停', pauseJob: '暂停任务', resume: '恢复', resumeJob: '恢复任务', runNow: '立即运行', triggerImmediately: '立即触发', }, runHistory: { title: '运行历史', runs: '次运行', noRuns: '暂无运行历史。', }, }, // 技能 skills: { title: '技能', searchPlaceholder: '搜索技能...', noMatch: '没有匹配的技能', noSkills: '暂无技能', backTo: '返回', attachedFiles: '附件文件', loadFailed: '加载技能失败', fileLoadFailed: '加载文件失败', modified: '用户已修改', archived: '已归档', pinned: '已置顶', pin: '置顶技能', unpin: '取消置顶', pinFailed: '更改置顶状态失败', toggleFailed: '切换技能状态失败', source: { builtin: '内置', hub: 'Hub 安装', local: '本地安装', }, }, // 插件 plugins: { title: '插件', refresh: '刷新', notice: '只读展示可发现的 Hermes 插件 manifest。发现元数据读取不会加载插件代码。v1 管理动作仍保留在 CLI,新 Hermes 会话生效。', loadFailed: '加载插件失败', commandCopied: '命令已复制', searchPlaceholder: '搜索 key、名称、描述、路径...', source: '来源', kind: '类型', statusTitle: '状态', configStatus: '配置:{status}', notAvailable: '无', copyCommand: '复制命令', managedElsewhere: '由其他位置管理', noMatch: '没有匹配当前筛选条件的插件', enabled: '已启用', disabled: '已禁用', summary: { total: '总数', active: '已启用 / 自动', inactive: '未启用', disabled: '已禁用', providerManaged: 'Provider 管理', }, status: { enabled: '已启用', 'auto-active': '自动启用', inactive: '未启用', disabled: '已禁用', 'provider-managed': 'Provider 管理', }, statusLabel: { enabled: '配置启用', 'auto-active': '自动启用', inactive: '未启用', disabled: '已禁用', 'provider-managed': 'Provider 管理', }, configStatuses: { enabled: '已启用', disabled: '已禁用', 'not-enabled': '未启用', auto: '自动', 'provider-managed': 'Provider 管理', }, table: { plugin: '插件', status: '状态', source: '来源', kind: '类型', capabilities: '能力', path: '路径 / 入口', cli: 'CLI', }, capabilities: { tools: '{count} 个工具', hooks: '{count} 个 hook', env: '{count} 个环境变量', }, metadata: { agentRoot: 'Agent 根目录', python: 'Python', scanCwd: '扫描 cwd', projectPlugins: '项目插件', }, }, // 记忆 memory: { title: '记忆', refresh: '刷新', loadFailed: '加载记忆失败', myNotes: '我的笔记', noNotes: '暂无笔记。', notesPlaceholder: '输入笔记内容...', userProfile: '用户画像', noProfile: '暂无画像。', profilePlaceholder: '输入用户画像...', soul: '灵魂', noSoul: '暂无灵魂配置。', soulPlaceholder: '输入灵魂配置...', }, // 模型 models: { title: '模型', searchPlaceholder: '搜索模型...', addProvider: '添加 Provider', providerType: 'Provider 类型', preset: '预设', custom: '自定义', selectProvider: '选择 Provider', chooseProvider: '选择一个 provider...', getApiKey: '获取 API Key', name: '名称', autoGeneratedName: '根据 Base URL 自动生成', baseUrl: 'Base URL', region: '区域', regionIntl: '国际版', regionCn: '中国大陆', baseUrlPlaceholder: '例如 https://api.example.com/v1', apiKey: 'API Key', apiKeyPlaceholder: 'sk-...', defaultModel: '默认模型', selectOrInput: '选择或输入模型名称...', selectModel: '选择模型...', providerAdded: 'Provider 已添加', providerDeleted: 'Provider 已删除', deleteProvider: '删除 Provider', deleteConfirm: '确定删除 "{name}" 吗?', codexLoginTitle: 'OpenAI Codex 登录', codexWaiting: '在授权页面输入以下代码完成登录:', codexCopyCode: '代码已复制', codexOpenLink: '打开授权页面', codexApproved: '登录成功', codexExpired: '授权已过期,请重试。', nousLoginTitle: 'Nous Portal 登录', nousWaiting: '在授权页面输入此代码完成登录:', nousCopyCode: '代码已复制', nousOpenLink: '打开授权页面', nousApproved: '登录成功', nousDenied: '授权被拒绝,请重试。', nousExpired: '授权已过期,请重试。', copilotLoginTitle: 'GitHub Copilot 登录', copilotWaiting: '请前往 GitHub 输入下方设备代码完成授权。授权完成后窗口会自动关闭。', copilotCopyCode: '代码已复制', copilotOpenLink: '打开 GitHub 授权页', copilotApproved: '登录成功!', copilotDenied: '授权被拒绝。', copilotExpired: '授权链接已过期,请重试。', copilotAddDetectedTitle: '检测到 GitHub Copilot', copilotAddDetected: '已在本机检测到 GitHub Copilot OAuth 凭证,点击「添加」即可在 Hermes 中启用 Copilot。', copilotAddSourceEnv: '来源:~/.hermes/.env(COPILOT_GITHUB_TOKEN)', copilotAddSourceGhCli: '来源:gh CLI(gh auth token)', copilotAddSourceAppsJson: '来源:VS Code Copilot 插件(apps.json)', copilotDeleteHintEnv: '此操作会清除 ~/.hermes/.env 中的 COPILOT_GITHUB_TOKEN,不影响其他工具。', copilotDeleteHintGhCli: 'Copilot 将从 Hermes 列表移除。不会影响 gh CLI —— `gh auth status` 仍显示已登录。', copilotDeleteHintAppsJson: 'Copilot 将从 Hermes 列表移除。不会影响 VS Code Copilot 插件的登录。', xaiLoginTitle: 'xAI Grok OAuth 登录', xaiWaiting: '请在打开的 xAI 页面完成授权。授权完成后窗口会自动关闭。', xaiOpenLink: '打开 xAI 授权页', xaiCopyLink: '复制授权链接', xaiApproved: '登录成功!', xaiExpired: '授权链接已过期,请重试。', customBadge: '自定义', previewBadge: '预览', disabledBadge: '不可用', disabledTooltip: "此模型当前账号不可用", customModelPlaceholder: '未列出的模型 ID', customModelHint: '仅用于 provider 支持但未返回的模型;不是重命名。按回车加载。', removeCustomModel: '移除这个未列出的模型', noProviders: '暂无 Provider,添加一个开始吧。', models: '模型列表', count: '个模型', more: '个更多', aliasEdit: '重命名', aliasTitle: '模型显示名', aliasTitleFor: '{model} 的显示名', aliasPlaceholder: '留空则使用原始模型 ID', aliasHint: '仅修改 Web UI 显示名,发送给 Hermes 的仍是原始模型 ID。', aliasCanonical: '原始 ID:{model}', aliasUseOriginal: '恢复原始 ID', aliasManage: '显示名', aliasManageFor: '{provider} 的显示名', aliasSaveFailed: '保存显示名失败', manageVisibleModels: '管理可见模型', manageVisibleModelsFor: '管理 {name} 可见模型', visibilityHint: '仅影响 Web UI 的模型选择器和模型页展示,不会改写 Hermes CLI 的 provider/model 配置。实际调用仍使用原始模型 ID。', visibilitySelectOne: '至少保留一个可见模型', visibilitySaved: '可见模型已保存', visibilitySaveFailed: '保存可见模型失败', showAllModels: '显示全部模型', clearVisibleModels: '取消全选', currentDefault: '当前默认', defaultShort: '默认', builtIn: '内置', customType: '自定义', provider: 'Provider', contextLength: '上下文长度', contextLengthPlaceholder: '例如 200000(可选)', local: '本地 ({host})', selectProviderRequired: '请选择 Provider', baseUrlRequired: 'Base URL 为必填项', apiKeyRequired: 'API Key 为必填项', modelRequired: '默认模型为必填项', enterBaseUrl: '请先输入 Base URL', unexpectedFormat: '响应格式异常', foundModels: '找到 {count} 个模型', fetchFailed: '获取模型失败', }, // 配置 profiles: { title: '配置', create: '创建配置', import: '导入', export: '导出', rename: '重命名', delete: '删除', switchTo: '切换 Hermes Profile', switchConfirm: '将执行 `hermes profile use {name}` 并切换 Hermes CLI 的 active profile,是否继续?', switchSuccess: 'Hermes active profile 已切换为 "{name}"', switchFailed: '切换 Hermes Profile 失败,网关可能需要手动重启', createSuccess: '配置 "{name}" 已创建', createFailed: '创建配置失败', renameSuccess: '配置已重命名', renameFailed: '重命名配置失败', deleteConfirm: '确定删除配置 "{name}" 吗?', deleteSuccess: '配置已删除', deleteFailed: '删除配置失败', exportSuccess: '配置已导出', exportFailed: '导出配置失败', importSuccess: '配置已导入', importFailed: '导入配置失败', importSelectFile: '选择归档文件', importInvalidFile: '请选择有效的归档文件 (.tar.gz, .tgz, .gz, .zip)', name: '配置名称', namePlaceholder: '仅限小写字母、数字、连字符', nameValidation: '配置名称只能包含小写字母、数字、下划线和连字符', newName: '新名称', newNamePlaceholder: '小写字母、数字、连字符', cloneFromCurrent: '从当前配置克隆', cloneCleanupNotice: '克隆时会自动跳过独占型平台凭据(Weixin / Telegram / Slack 等),避免与源配置冲突', cloneStrippedCredentials: '已清理 {count} 项独占凭据:{list}', cloneDisabledPlatforms: '已禁用 {count} 个平台:{list}', cloneStrippedConfigCredentials: '已清理 config.yaml 中 {count} 项内嵌凭据:{list}', archivePath: '归档路径', archivePathPlaceholder: '归档文件的服务器路径', importName: '配置名称(可选)', importNamePlaceholder: '留空则使用归档名称', active: '活跃', model: '模型', gateway: '网关', alias: '别名', provider: 'Provider', path: '路径', skills: '技能', hasEnv: '有 .env', hasSoulMd: '有 soul.md', noProfiles: '暂无配置,创建一个开始吧。', avatar: { title: '自定义头像', customize: '头像', upload: '上传图片', random: '随机生成', reset: '恢复默认', hint: '支持 PNG、JPEG、WebP,最大 1MB', invalidType: '请选择 PNG、JPEG 或 WebP 图片', tooLarge: '头像图片不能超过 1MB', saveSuccess: '头像已保存', saveFailed: '保存头像失败', resetSuccess: '已恢复默认头像', resetFailed: '恢复默认头像失败', }, runtime: { activeProfile: '当前:{name}', bridgeWorker: '桥接状态', gateway: '网关', active: '活跃', activeTag: '当前', idle: '空闲', running: '运行中', stopped: '已停止', restartGateway: '重启网关', restartProfile: '重启配置', switchProfile: '切换前端配置', gatewayRestarted: '网关已重启:{name}', gatewayRestartFailed: '重启网关失败', profileRestarted: '配置已重启:{name}', profileRestartFailed: '重启配置失败', }, }, // 日志 logs: { title: '日志', all: '全部', searchPlaceholder: '搜索...', refresh: '刷新', noEntries: '暂无日志', }, // 设置 settings: { title: '设置', saved: '已保存', saveFailed: '保存失败', tabs: { display: '显示', account: '当前账户', users: '账户管理', agent: '代理', memory: '记忆', compression: '上下文压缩', session: '会话', privacy: '隐私', apiServer: 'API 服务器', models: '模型', voice: '语音', }, models: { apiKey: 'API Key', apiKeyPlaceholder: '输入 API Key', save: '保存', saved: '已保存', saveFailed: '保存失败', noProviders: '暂无已配置的模型', }, display: { streaming: '流式响应', streamingHint: '实时显示 AI 回复', compact: '紧凑模式', compactHint: '减少消息间距', showReasoning: '显示推理过程', showReasoningHint: '展示模型思考过程', showCost: '显示费用', showCostHint: '在回复中显示 token 使用量', inlineDiffs: '内联差异', inlineDiffsHint: '代码变更以内联方式显示', bellOnComplete: '完成提示音', bellOnCompleteHint: 'AI 回复完成时播放提示音', busyInputMode: '忙碌输入模式', busyInputModeHint: 'AI 处理中仍可输入', theme: '主题', themeHint: '选择浅色、暗色或跟随系统', themeLight: '浅色', themeDark: '暗色', themeSystem: '跟随系统', }, agent: { maxTurns: '最大轮次', maxTurnsHint: '单次对话最大交互轮数', gatewayTimeout: '网关超时', gatewayTimeoutHint: '单次请求超时时间(秒)', restartDrainTimeout: '重启排空超时', restartDrainTimeoutHint: '重启前排空请求的超时时间(秒)', toolEnforcement: '工具执行策略', toolEnforcementHint: '控制工具调用的执行模式', auto: '自动', always: '始终', never: '从不', }, memory: { enabled: '启用记忆', enabledHint: '允许 AI 记住对话上下文', userProfile: '用户画像', userProfileHint: '允许 AI 记住用户偏好信息', charLimit: '记忆字符上限', charLimitHint: 'MEMORY.md 最大字符数', userCharLimit: '用户画像字符上限', userCharLimitHint: 'USER.md 最大字符数', }, compression: { enabled: '启用压缩', enabledHint: '长对话接近模型上下文上限前自动压缩历史', threshold: '压缩阈值', thresholdHint: '预计 token 超过上下文比例时开始压缩', targetRatio: '目标比例', targetRatioHint: '压缩后历史保留到上下文的目标比例', protectLastN: '保护最近消息', protectLastNHint: '最近多少条消息不参与压缩', protectFirstN: '保护开头消息', protectFirstNHint: '最早多少条消息不参与压缩', }, session: { mode: '重置模式', modeHint: '会话重置的触发条件', modeBoth: '空闲 + 定时', modeIdle: '仅空闲', modeDaily: '仅定时', modeNone: '永不(仅手动)', idleMinutes: '空闲超时', idleMinutesHint: '无操作后自动重置的等待时间(分钟)', atHour: '定时重置时间', humanOnly: '仅显示人类会话', humanOnlyHint: '默认隐藏子代理和会话监看噪音', liveMonitorHumanOnly: '实时监看:仅显示人类会话', liveMonitorHumanOnlyHint: '在实时监看中默认隐藏子代理和会话监看噪音', atHourHint: '每天在指定小时重置会话', requireAuth: '会话授权', requireAuthHint: '修改会话操作是否授权', }, privacy: { redactPii: '脱敏 PII', redactPiiHint: '自动检测并隐藏敏感信息(密码、密钥等)', }, apiServer: { enable: '启用', enableHint: '启用 API 服务器', host: '主机', hostHint: '监听地址', port: '端口', portHint: '监听端口', key: '密钥', keyHint: 'API 访问密钥', cors: 'CORS 来源', corsHint: '允许的跨域来源', }, lockedIps: { title: '锁定 IP 管理', count: '{count} 个 IP 被锁定', empty: '暂无锁定 IP', unlock: '解锁', unlockAll: '全部解锁', unlockAllConfirm: '确认解锁所有锁定的 IP?', unlocked: 'IP 已解锁', allUnlocked: '已解锁 {count} 个 IP', }, voice: { ttsProvider: 'TTS 提供者', ttsProviderHint: '选择消息朗读使用的语音引擎', providerWebSpeech: 'WebSpeech API(浏览器内置)', providerOpenai: 'OpenAI TTS', providerCustom: '自定义端点(兼容 OpenAI)', providerEdge: 'Edge TTS(免费,无需 API Key)', // WebSpeech webspeechVoice: '音色', webspeechVoiceHint: '从浏览器或系统提供的语音中选择', webspeechVoicePlaceholder: '自动(默认语音)', // OpenAI openaiKey: 'API 密钥', openaiKeyHint: '具有 TTS 权限的 OpenAI API Key', openaiUrl: 'API 基础地址', openaiUrlHint: '例如 https://api.openai.com/v1/audio/speech', openaiModel: '模型', openaiModelHint: 'tts-1(快速)/ tts-1-hd(高音质)', openaiVoice: '音色', openaiVoiceHint: '用于语音合成的音色', // 自定义端点 customHint: '支持任何 OpenAI 兼容的 TTS 服务——可用于 GPT-SoVITS、CosyVoice 等自部署服务。', customUrl: 'API 地址', customUrlHint: 'TTS 服务的完整基础地址', customUrlPlaceholder: '本地适配器中配置的地址 如:http://127.0.0.1:9880', customApiKey: 'API 密钥(可选)', customApiKeyHint: '部分自部署服务需要身份验证', customApiKeyPlaceholder: '不需要则留空', // Edge TTS edgeHint: '由 Microsoft Edge TTS 驱动(node-edge-tts)。', edgeUrl: '适配器地址', edgeUrlHint: 'Edge TTS 适配器地址,例如 http://127.0.0.1:9882', edgeUrlPlaceholder: 'http://127.0.0.1:9882', edgeVoice: '音色', edgeVoiceHint: '选择用于语音合成的音色', edgeRate: '语速', edgeRateHint: '调整语音速度(0.5~2.0 倍)', edgePitch: '音调', edgePitchHint: '调整语音音调(-20~+20 Hz)', // 试听 testTitle: '试听测试', testText: '测试文本', testTextPlaceholder: '输入测试文本...', testTextDefault: '你好,这是一个语音测试。', testButton: '试听', testButtonPlaying: '播放中...', testFailed: '测试失败:{error}', // MiMo TTS providerMimo: 'MiMo TTS', mimoHint: '小米 MiMo TTS,支持预置音色、音色设计、音色复刻三种模式', mimoApiKey: 'API Key', mimoApiKeyHint: '在 platform.xiaomimimo.com 获取', mimoApiKeyPlaceholder: 'MiMo API Key', mimoBaseUrl: 'Base URL', mimoBaseUrlHint: 'MiMo API 端点地址', mimoModel: '模型', mimoModelHint: '选择语音合成模型', mimoModelPreset: '预置音色', mimoModelVoiceDesign: '音色设计', mimoModelVoiceClone: '音色复刻', mimoVoice: '音色', mimoVoiceHint: '选择预置音色', mimoVoiceDesignPrompt: '音色描述', mimoVoiceDesignPromptHint: '描述你想要的音色特征', mimoVoiceDesignPromptPlaceholder: '例如:温柔的年轻女声,语速稍慢,带着磁性', mimoCloneAudio: '上传音频', mimoCloneAudioHint: '上传音频样本用于音色复刻,支持 mp3/wav,最大 10MB', mimoCloneAudioUpload: '选择文件', mimoCloneAudioClear: '清除音频', mimoStylePrompt: '风格指令', mimoStylePromptHint: '可选,用自然语言描述语音风格', mimoStylePromptPlaceholder: '例如:用轻快上扬的语调,语速稍快', }, }, // 平台频道设置 platform: { requireMention: "需要 {'@'}提及", requireMentionGroup: "群组中需要 {'@'}机器人 才会响应", requireMentionChannel: "频道中需要 {'@'}机器人 才会响应", requireMentionRoom: "房间中需要 {'@'}机器人 才会响应", reactions: '表情回应', reactionsHint: '对消息添加表情回应', freeResponseChats: '自由响应聊天', freeResponseChatsHint: "不需要 {'@'}提及即响应的聊天 ID(逗号分隔)", freeResponseChannels: '自由响应频道', freeResponseChannelsHint: "不需要 {'@'}提及即响应的频道 ID(逗号分隔)", freeResponseRooms: '自由响应房间', freeResponseRoomsHint: "不需要 {'@'}提及即响应的房间 ID(逗号分隔)", mentionPatterns: '自定义提及模式', mentionPatternsHint: '额外的触发模式列表', autoThread: '自动创建线程', autoThreadHint: "{'@'}提及 后自动创建回复线程", autoThreadHintRoom: '在房间中自动创建回复线程', dmMentionThreads: 'DM 提及线程', dmMentionThreadsHint: '在私聊中也使用线程回复提及', allowBots: '允许机器人消息', allowBotsHint: '响应其他机器人发送的消息', allowedChannels: '允许的频道', allowedChannelsHint: '白名单频道 ID(逗号分隔)', ignoredChannels: '忽略的频道', ignoredChannelsHint: '不响应的频道 ID(逗号分隔)', noThreadChannels: '无线程频道', noThreadChannelsHint: '不创建线程的频道 ID(逗号分隔)', exclusiveTokenWarning: '此平台使用独占 token 锁。每个 profile 必须使用不同的身份 token,否则会与其他 profile 冲突导致 gateway 启动失败。', botToken: 'Bot Token', botTokenHint: '开发者门户获取的 Bot Token', accessToken: 'Access Token', accessTokenHint: 'Matrix Access Token', homeserver: 'Homeserver URL', homeserverHint: 'Matrix 服务器地址', appId: 'App ID', appIdHint: '飞书 App ID', appSecret: 'App Secret', appSecretHint: '飞书 App Secret', clientId: 'Client ID', clientIdHint: '钉钉 Client ID', clientSecret: 'Client Secret', clientSecretHint: '钉钉 Client Secret', allowedUsers: '允许用户', allowedUsersHint: '用户 ID 或 OpenID 白名单,多个用英文逗号分隔', allowAllUsers: '允许所有用户', allowAllUsersHint: '允许任意用户发起消息;关闭后使用白名单', botId: 'Bot ID', botIdHint: '企业微信 Bot ID', wecomSecretHint: '企业微信 Bot Secret', waEnabled: '启用 WhatsApp', waEnabledHint: '通过二维码配对启用 WhatsApp', weixinToken: '微信 Token', weixinTokenHint: '通过 weixin CLI 扫码登录获取 (hermes weixin)', accountId: 'Account ID', accountIdHint: '微信 Account ID', qrLogin: '扫码登录', qrRelogin: '重新登录', qrFetching: '正在获取二维码...', qrScanHint: '使用微信扫描二维码登录', qrScanedHint: '已扫描,请在手机上确认...', // QQ qqAppId: 'App ID', qqAppIdHint: 'QQ 开放平台机器人 App ID', qqAppSecret: 'App Secret', qqAppSecretHint: 'QQ 开放平台机器人 App Secret', qqMarkdown: 'Markdown 支持', qqMarkdownHint: '启用 Markdown 格式消息(部分客户端可能不支持)', qqSandbox: '沙箱模式', qqSandboxHint: '启用沙箱环境(测试用)', qqQrScanHint: '使用 QQ 扫描上方二维码,或在手机上打开链接完成绑定', }, // 网关 gateways: { title: '网关', running: '运行中', stopped: '已停止', started: '已启动', startFailed: '启动失败', stopFailed: '停止失败', }, // 语言 language: { label: '语言', zh: '中文', en: 'English', }, // 终端 terminal: { sessions: '会话', newTab: '新建终端', closeSession: '关闭此会话?', sessionExited: '已退出', processExited: '进程已退出,代码 {code}', noSessions: '暂无终端会话', connectionFailed: '终端服务连接失败', connectionClosed: '终端连接已关闭', connectionError: '终端连接错误', }, // 群聊 groupChat: { title: '群聊', createRoom: '创建房间', joinByCode: '通过邀请码加入', roomName: '房间名称', roomNamePlaceholder: '输入房间名称', inviteCode: '邀请码', autoGenerate: '自动生成', noRooms: '暂无房间', selectOrCreate: '选择或创建一个房间开始聊天', agents: '智能体', addAgent: '添加智能体', selectProfile: '选择一个配置', agentAdded: '智能体已添加', agentAlreadyInRoom: '该智能体已在房间中', agentAddFailedCount: '{count} 个智能体未添加:{details}', noAgents: '当前房间暂无智能体', members: '成员', roomCreated: '房间已创建', roomDeleted: '房间已删除', roomCloned: '房间已克隆', cloneRoom: '克隆房间', copyRoomLink: '复制房间链接', deleteRoomConfirm: '确定删除这个房间吗?', clearContext: '清理上下文', clearContextConfirm: '确定清理当前房间上下文吗?消息和压缩快照会被删除,智能体和成员会保留。', contextCleared: '上下文已清理', you: '你', joined: '已加入房间', joinFailed: '加入房间失败', inputPlaceholder: '输入消息... (Enter 发送)', enterCode: '输入邀请码', yourName: '你的名称', yourNamePlaceholder: '输入你的群聊昵称', yourDescription: '自我描述(选填)', yourDescriptionPlaceholder: '介绍一下你自己...', agentName: 'Agent 名称', agentNamePlaceholder: '自定义名称(留空则使用 profile 名称)', agentDesc: 'Agent 描述', agentDescPlaceholder: '描述这个 agent 的作用...', agentReplying: '正在回复...', agentCompressing: '正在压缩上下文...', compressionSettings: '压缩设置', triggerTokens: '触发压缩 Token 数', triggerTokensDesc: '消息 token 数超过此值时触发上下文压缩', maxHistoryTokens: '最大历史 Token 数', maxHistoryTokensDesc: '压缩后发送给 LLM 的最大 token 数', tailMessageCount: '保留最近消息数', tailMessageCountDesc: '压缩后保留最近的原始消息条数', compressionConfig: '压缩配置', compressionSaved: '压缩配置已保存', compressNow: '立即压缩', compressingInProgress: '正在压缩中,请稍后', }, // 用量统计 usage: { title: '用量统计', refresh: '刷新', totalTokens: '总 Token 数', inputTokens: '输入', outputTokens: '输出', totalSessions: '总会话数', avgPerDay: '日均 ~{n}', estimatedCost: '预估费用', cacheHitRate: '缓存命中率', modelBreakdown: '模型分布', dailyTrend: '每日用量', date: '日期', tokens: 'Token', cache: '缓存', cacheRead: '缓存读取', cacheWrite: '缓存写入', sessions: '会话', cost: '费用', noData: '暂无用量数据', }, skillsUsage: { title: '技能用量', subtitle: '跟踪 Hermes 会话中的技能加载和编辑', refresh: '刷新', periodSelector: '技能用量周期', periodLabel: '{days}天', summary: '概览', totalActions: '操作', loads: '加载', edits: '编辑', distinctSkills: '技能数', topSkills: '热门', dailyTrend: '趋势', periodSummary: '最近 {days} 天', skill: '技能', share: '占比', lastUsed: '最近', noData: '暂无技能用量数据', loadFailed: '技能用量加载失败', otherSkills: '其他技能', }, // 文件管理 files: { title: '文件', fileTree: '文件树', tree: '目录树', list: '文件列表', breadcrumbRoot: '根目录', newFile: '新建文件', newFolder: '新建文件夹', upload: '上传', refresh: '刷新', open: '打开', edit: '编辑', preview: '预览', download: '下载', copyPath: '复制路径', rename: '重命名', delete: '删除', name: '名称', size: '大小', modified: '修改时间', actions: '操作', emptyDir: '空目录', loading: '加载中...', confirmDelete: '确定要删除「{name}」吗?', confirmDeleteDir: '确定要删除目录「{name}」及其所有内容吗?', deleteFailed: '删除失败', deleted: '已删除', renameTo: '重命名为', newFileName: '文件名', newFolderName: '文件夹名', created: '已创建', createFailed: '创建失败', renamed: '已重命名', renameFailed: '重命名失败', uploadSuccess: '已上传 {count} 个文件', uploadFailed: '上传失败', saveFailed: '保存失败', saved: '已保存', unsavedChanges: '有未保存的更改,是否丢弃?', pathCopied: '路径已复制', fileTooLarge: '文件过大(最大 10MB)', permissionDenied: '无法修改受保护的文件', notFound: '文件或目录不存在', backendError: '文件操作失败', dragDropHint: '拖拽文件到此处上传', closeEditor: '关闭编辑器', closePreview: '关闭', saveFile: '保存', }, // 下载 download: { downloading: '正在下载...', downloadFailed: '下载失败', fileNotFound: '文件不存在或已被删除', fileTooLarge: '文件过大(超过限制)', backendError: '文件读取失败,远程环境可能不可用', backendTimeout: '文件读取超时', unsupportedBackend: '当前 terminal backend 暂不支持文件下载', invalidPath: '无效的文件路径', contentDisplay: '内容展示', download: '下载', downloadFile: '下载文件', }, // 更新日志 changelog: { new_0_5_22_1: '修复 Hermes 会话列表接口错误读取 Web UI 本地会话库的问题', new_0_5_23_1: '新增仅 Bridge 会话可用的聊天斜杠命令,并支持本地化命令提示', new_0_5_23_2: '持久化命令历史用于会话回显,同时避免污染模型上下文、用量统计和压缩', new_0_5_23_3: '隔离 gateway profile 环境变量,防止凭据在不同 profile 之间串用', new_0_5_23_4: 'gateway 分配端口时保留 Web UI 端口,避免启动端口冲突', new_0_5_23_5: '修复自更新重启逻辑,避免将 restart helper 的成功退出误报为失败', new_0_5_24_1: '对齐 Bridge 聊天与 API Server 的多模态输入、系统提示词和工作区上下文处理', new_0_5_25_1: '新增群聊房间重置和克隆操作', new_0_5_25_2: '支持配置 Web UI 状态目录,方便自定义部署目录结构', new_0_5_25_3: '语音设置新增 MiMo TTS 提供商', new_0_5_25_4: '自定义 Provider 模型列表改由后端代理请求,避免浏览器跨域失败', new_0_5_25_5: '修复 Bridge 会话的工具授权流程', new_0_5_25_6: '移除 Bridge 强制注入的 CLI 平台提示,保留用户自定义媒体和文件输出规则', new_0_5_25_7: '用户消息历史支持正确展示 base64 图片内容', new_0_5_25_8: '新增 Playwright 浏览器测试、聊天流式契约覆盖、Provider 模型测试和覆盖率基线', new_0_5_26_1: '聊天历史和 Markdown 渲染支持 Windows 与本地媒体路径', new_0_5_26_2: '过滤空 Assistant 历史消息,并在新运行开始时清理旧的压缩状态', new_0_5_26_3: '配置与 Profile 写入新增文件锁,降低并发写入导致配置损坏的风险', new_0_5_26_4: '新增 QQBot 与钉钉频道设置', new_0_5_26_5: 'CLI 端口检测改为跨平台实现,并优化移动端终端抽屉尺寸', new_0_5_26_6: '隔离 Bridge Profile 环境,并修复不同 Python 环境下的 Hermes 插件发现', new_0_5_26_7: 'Gateway 停止状态新增 Web UI 诊断说明,并保持日志加载状态稳定', new_0_5_26_8: '修复会话重置模式选项、自定义 Provider Base URL 处理和动态投递目标', new_0_5_26_9: '聊天输入栏新增本地保存的工具调用记录显示开关', new_0_5_26_10: '支持未找到源码目录时使用包安装的 Hermes Agent', new_0_5_26_11: '新增 xAI Grok OAuth 登录,支持 SuperGrok 订阅用户授权,并更新 Grok 模型预设', new_0_5_26_12: '扩展浏览器、聊天流式、Provider、Gateway、配置、插件和 Bridge 测试覆盖', new_0_5_27_1: '新增 Bridge 会话级模型设置,每个会话可以独立保存 provider 和 model', new_0_5_27_2: '在 Bridge 会话列表中右键会话,选择“设置模型”即可为当前会话切换模型', new_0_5_27_3: '运行时会自动校验会话模型是否可用;不可用时回退到当前默认模型并更新会话', new_0_5_27_4: '上下文压缩默认跟随当前 Profile 的默认选中模型', new_0_5_30_1: 'Bridge 聊天改为保留结构化历史,修复工具调用历史转文本后导致模型偶发不返回、工具不执行的问题', new_0_5_30_2: '群聊 @ 多 Agent 路由更可靠,发送给每个 Agent 时会移除自己的 @,并改善刷新后的用户昵称绑定', new_0_5_30_3: '模型页、聊天模型下拉和会话模型选择改为按当前 Profile 展示,默认模型标记更准确', new_0_5_30_4: '精简 Gateway 管理:移除独立网关页面,按各 Profile 的平台配置检查并拉起需要运行的 gateway,并改用轻量 gateway runner 管理启动和重启', new_0_5_30_5: '增强 Docker、Termux 和 Windows 的 Gateway 启动流程,处理运行锁、端口冲突、后台执行和重启场景', new_0_5_30_6: '优化 Windows 兼容性:路径识别、文件下载、任务/更新子进程不再弹出额外终端窗口', new_0_5_30_7: '修复配置写入和 Provider 预设:加强 .env 校验,FUN-Codex 改走 Responses API,并更新 Z.AI/GLM 模型列表', new_0_5_30_8: '前端体验细节优化:折叠侧边栏布局、分组短标题、侧边栏分隔线和对话大纲样式更稳定', new_0_5_30_9: '上下文压缩现在跟随 Profile 压缩配置,并在旧快照失效时复用旧摘要和安全尾部,避免重新压缩完整历史', new_0_5_31_1: "增强 Bridge Broker 重启稳定性,修复群聊最终流式渲染,并新增群聊 {'@'}all 路由", new_0_5_31_2: '文件管理支持复制绝对路径,并修复移动端会话抽屉层级遮挡问题', new_0_5_31_3: 'Profile 选择器新增头像展示、自定义头像、运行状态弹窗,以及网关/Profile 重启操作', new_0_5_31_4: 'Profile 头像会同步用于单聊、群聊和折叠侧边栏,头像元数据保存到 Web UI 目录并兼容 Windows 路径', new_0_5_31_5: '改进 Docker、Termux、Windows 的 gateway 检测和重启逻辑,优先使用 gateway_state/gateway.pid 判断 managed gateway 是否存活', new_0_5_31_6: '新增 APIKEY.FUN 生图媒体接口和内置 apikey-image-gen skill,支持文生图、图生图和图片编辑,并从 active Profile 的 fun-codex 配置读取凭据', new_0_5_33_1: '单聊和群聊的运行失败、Socket 错误会作为红色 Agent 消息保留在消息列表中,不再一闪而过', new_0_5_33_2: '会话搜索支持按当前选中的 Profile 限定范围,未选择 Profile 时仍可搜索全部 Profile', new_0_5_33_3: 'Skills 页面新增中英文推荐清单,未选中 Skill 时展示推荐内容,并支持再次点击已选 Skill 取消选中', new_0_5_33_4: '清理未使用的 changelog 国际化内容,减少前端 i18n 体积', new_0_5_33_5: '修复 Windows 中文系统下 agent bridge 解析 netstat 输出编码失败导致启动异常的问题', new_0_5_33_6: '更新 Nous Portal 预设模型列表,对齐公开 catalog 和 Portal 推荐模型', new_0_5_33_7: 'Profile 列表和运行状态改为从目录读取 Profile 名称、从 config 读取默认模型,避免 CLI 表格列宽导致 name/model/gateway 解析错位', new_0_5_34_1: '存储会话和群聊消息时会规范化多模态工具结果,避免 base64 图片污染回放内容', new_0_5_34_2: '自定义 Hermes 模型改为由后端配置持久化,并新增添加/移除模型接口', new_0_5_34_3: '修复 Bridge 运行结束后的最终上下文用量和工具状态更新', new_0_5_34_4: '优化看板过滤、负责人展示、卡片操作和任务详情处理', new_0_5_34_5: '修复压缩用量统计:缓存固定 prompt/tool 上下文,并展示完整上下文 token 总量', new_0_5_34_6: '群聊 Agent 缓存各自固定上下文,仅在真正开始压缩时显示压缩进度', new_0_5_34_7: 'Web UI 内置 Skills 会同步注入到所有 Profile,并在日志中标明目标 Profile', new_0_5_34_8: '如果 Windows 下看板功能异常,请升级 Hermes 以获取最新的看板数据库迁移修复', new_0_5_35_1: 'Bridge 会话支持不同 session 并发运行,同一 session 仍保持串行,避免消息顺序错乱', new_0_5_35_2: '新增“性能监控”页面,可查看系统 CPU/内存、Web UI、Bridge Broker、Workers 和活跃会话状态', new_0_5_35_3: '新增 Worker 级资源统计,展示每个 worker 的 CPU、内存、Profile、会话数和运行状态', new_0_5_35_4: '优化 Bridge worker 生命周期清理,Broker 关闭或父进程退出时会回收 worker,减少残留 Python 进程', new_0_5_35_5: '监控接口增强跨平台兼容,支持 macOS、Windows、Linux、Docker 和 Termux 的资源采集降级', new_0_5_35_6: '性能监控不再因为 Agent 初始化中的 worker 请求而阻塞,降低 Windows 上 request timed out 的概率', new_0_5_35_7: '聊天 Markdown 新增文本内容内联预览,下载图标会直接下载文件,避免被预览弹窗拦截', new_0_5_35_8: '优化内容展示抽屉:移动端全宽并提供关闭入口,桌面端加宽到 800px,文本与 Markdown 背景保持一致', new_0_6_0_1: '分账户、分 Profile 管理现在统一覆盖会话、模型、用量、看板、任务、上传、媒体以及相关 Hermes API', new_0_6_0_2: '内置媒体 Skills 仅在媒体接口使用生成的服务端 token,并按请求的 Profile 读取 fun-codex/xAI 凭据', new_0_6_0_3: '单聊和群聊都会向运行提示词注入当前 Hermes Profile,方便 Skills 请求时带上 X-Hermes-Profile', new_0_6_0_4: 'delegate_task 的 subagent 进度会实时展示到聊天界面,包含开始、工具调用、进度和完成状态', new_0_6_0_5: '停止或中断运行时会清理临时事件,避免旧的 abort 状态带入下一次聊天', new_0_6_0_6: '同步更新文档和官网文案,覆盖账户管理、默认凭据、分账户分 Profile 管理、上传下载和内置媒体 Skills', new_0_6_0_7: '新增 CLI 维护命令,用于清理登录 IP 锁和重置默认 admin / 123456 登录账户', new_0_6_0_8: '0.6.0 是 Web UI 从单用户走向多用户的分界版本;如果多用户模式遇到问题,请提交 issue,必要时可回退到 0.5.35 单用户版本', }, }