Files
Hermes-ui/packages/client/src/i18n/locales/zh.ts
T
2026-05-22 19:11:04 +08:00

1272 lines
49 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
export default {
// 登录
login: {
title: 'Hermes Web UI',
description: '输入访问令牌以继续。令牌在服务端启动日志中查看。',
placeholder: '访问令牌',
submit: '登录',
tokenRequired: '请输入访问令牌',
invalidToken: '令牌无效',
connectionFailed: '无法连接到服务器',
passwordLogin: '密码登录',
tokenLogin: '令牌登录',
usernamePlaceholder: '用户名',
passwordPlaceholder: '密码',
credentialsRequired: '请输入用户名和密码',
invalidCredentials: '用户名或密码错误',
tooManyAttempts: '登录失败次数过多,请稍后重试',
passwordMismatch: '两次密码不一致',
passwordTooShort: '密码长度至少 6 个字符',
setupSuccess: '密码登录配置成功',
passwordChanged: '密码修改成功',
passwordRemoved: '密码登录已移除',
setupPassword: '设置密码登录',
changePassword: '修改密码',
changeUsername: '修改用户名',
removePasswordLogin: '移除',
username: '用户名',
currentPassword: '当前密码',
newPassword: '新密码',
confirmPassword: '确认密码',
newUsername: '新用户名',
usernameChanged: '用户名修改成功',
usernameTooShort: '用户名至少 2 个字符',
setupDescription: '设置用户名和密码以便快速登录。访问令牌仍可继续使用。',
removeConfirm: '确定要移除密码登录吗?移除后需要使用访问令牌登录。',
passwordLoginNotConfigured: '密码登录未配置',
passwordLoginConfigured: '密码登录已启用({username}',
},
// 通用
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: '用量',
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: '暂无更新日志',
},
// 抽屉
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: '助手',
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/.envCOPILOT_GITHUB_TOKEN',
copilotAddSourceGhCli: '来源:gh CLIgh 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: '切换到',
switchConfirm: '切换到配置 "{name}" 将重启网关,是否继续?',
switchSuccess: '已切换到配置 "{name}"',
switchFailed: '切换配置失败,网关可能需要手动重启',
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: '账户',
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.52.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: '克隆房间',
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 以获取最新的看板数据库迁移修复',
},
}