mirror of
https://github.com/Termix-SSH/Termix.git
synced 2026-10-31 15:45:23 +00:00
* feat(ai): add host coding agent sessions with configured providers * Wait for agent initialization and shutdown before resuming sessions * Keep Pi transcripts outside its configuration migration directory * Cover Pi session directory separation * Update core permission catalog expectations for remote agents * Install remote agent runtimes from verified official sources * Wait for the identity panel credentials request in its test * Add scoped SSH forwarding setup for remote agents * Verify forwarding setup through a fresh SSH connection * Bound the SSH forwarding verification timeout * Return the forwarding verification callback result * fix(ai): support agent send and interrupt keyboard shortcuts * feat(ai): add agent queues attachments worktrees and session recovery * fix(ai): handle deleted workspace paths and duplicate status events * fix(ai): accept file references in root workspaces * fix(ai): refresh paused queues after agent errors * fix(ai): store agent sessions in plugin tables and lock down OpenCode Agent sessions lived in a single ctx.kv value holding up to 2000 events, which passed the 256 KB kv limit within minutes of a normal run. Every save after that failed, so history, nativeId, queue and archive changes were lost and every event wrote a kv audit row. Sessions, events and queued prompts now have their own tables. A running agent appends events in batches at most once a second with a lazy save; session and queue changes save immediately. Prompts, drafts and stored event text are capped in UTF-8 bytes to fit MySQL TEXT. kv:own is no longer requested. The OpenCode server now requires a per-session password, so other local accounts on the host cannot drive the agent through its loopback port. * test(upgrade): include agent session tables in the reviewed upgrade SQL
199 lines
9.2 KiB
JSON
199 lines
9.2 KiB
JSON
{
|
||
"permissions": {
|
||
"use": {
|
||
"title": "使用助手",
|
||
"description": "打开助手并向其提问。"
|
||
},
|
||
"manage_providers": {
|
||
"title": "管理服务提供商",
|
||
"description": "添加、编辑和移除 AI 服务提供商及其 API 密钥。"
|
||
},
|
||
"apply_proposals": {
|
||
"title": "应用建议",
|
||
"description": "允许助手执行其建议的更改。"
|
||
},
|
||
"services.use": {
|
||
"title": "在其他功能中使用 AI",
|
||
"description": "其他功能可以代表你调用助手。"
|
||
},
|
||
"secrets.share": {
|
||
"title": "共享 API 密钥",
|
||
"description": "其他功能可以使用已保存的 AI API 密钥,但无法查看其内容。"
|
||
}
|
||
},
|
||
"settings": {
|
||
"assistantUnavailable": "此服务器已关闭 AI 助手。",
|
||
"providersNeedOptIn": "请先在上方启用 AI 助手,再添加服务提供商。",
|
||
"admin": {
|
||
"globallyEnabled": {
|
||
"label": "AI 助手",
|
||
"description": "允许用户开启 AI 助手。关闭此功能后,助手将被隐藏,所有用户均无法使用。"
|
||
},
|
||
"privateEndpoints": {
|
||
"label": "允许的私有 AI 主机",
|
||
"description": "允许用户将服务提供商指向的内网主机,例如自托管的 Ollama。每行填写一台主机。"
|
||
}
|
||
},
|
||
"host": {
|
||
"enableAiAssistant": {
|
||
"label": "启用 AI 助手",
|
||
"description": "允许 AI 助手在此主机的终端中提供帮助。默认关闭,且你的账户也必须启用 AI。"
|
||
}
|
||
}
|
||
},
|
||
"ai": {
|
||
"title": "助手",
|
||
"send": "发送",
|
||
"stop": "停止",
|
||
"save": "保存",
|
||
"cancel": "取消",
|
||
"running": "运行中",
|
||
"approve": "批准",
|
||
"reject": "拒绝",
|
||
"inputPlaceholder": "询问服务器相关问题,或描述你想进行的更改",
|
||
"selectProvider": "选择服务提供商",
|
||
"providerSettings": "服务提供商设置",
|
||
"addProvider": "添加服务提供商",
|
||
"editProvider": "编辑提供商",
|
||
"removeProvider": "移除服务提供商",
|
||
"providerType": "提供商",
|
||
"providerLabel": "名称",
|
||
"providerLabelPlaceholder": "例如:本地 Ollama",
|
||
"baseUrl": "服务器地址",
|
||
"apiKey": "API 密钥",
|
||
"defaultModel": "默认模型",
|
||
"defaultModelPlaceholder": "例如 llama3.1 或 claude-opus-5",
|
||
"labelRequired": "给此提供商起个名字",
|
||
"providerSaveFailed": "无法保存服务提供商",
|
||
"providerUpdated": "服务提供商已更新",
|
||
"providerDeleteFailed": "无法移除服务提供商",
|
||
"privateEndpointHint": "使用内网地址前,需要管理员先允许该主机。",
|
||
"providerOllama": "Ollama",
|
||
"providerAnthropic": "Anthropic",
|
||
"providerOpenai": "OpenAI",
|
||
"providerGemini": "Google Gemini",
|
||
"providerOpenaiCompatible": "兼容 OpenAI",
|
||
"toolArguments": "输入",
|
||
"toolResult": "结果",
|
||
"statusApplied": "已应用",
|
||
"statusRejected": "已拒绝",
|
||
"proposalApplied": "更改已应用",
|
||
"proposalApplyFailed": "无法应用更改",
|
||
"proposalRejectFailed": "无法拒绝更改",
|
||
"enableTitle": "启用 AI 助手",
|
||
"enableDescription": "允许助手读取你的配置并提出更改建议,由你批准后执行。",
|
||
"readOnlyCommands": "允许只读诊断命令",
|
||
"readOnlyCommandsDescription": "助手可以执行 df、uptime 等少量安全命令,无需每次询问。任何会修改服务器的操作都会先提交建议。",
|
||
"modelDetectFailed": "无法联系到提供商,所以这里提供的是通用列表。您可以输入任何模型名称。",
|
||
"modelCustom": "请输入模型名称",
|
||
"modelRefresh": "刷新列表",
|
||
"modelPlaceholder": "选择或输入模型",
|
||
"attachHint": "输入 @ 引用主机、代码片段或自动化。更改会先提交给你批准。",
|
||
"runCommandTitle": "执行命令",
|
||
"assistant": "AI 助手",
|
||
"terminalPanelEmpty": "向助手询问此主机的相关问题。任何会改变状态的操作都需要先获得你的批准。",
|
||
"terminalPanelPlaceholder": "询问此主机的相关问题……",
|
||
"noProvidersConfigured": "尚未配置 AI 服务提供商,请在 AI 助手标签页中添加。",
|
||
"runsInOpenTerminal": "在你已打开的终端会话中执行。",
|
||
"runInTerminal": "运行",
|
||
"terminalContextPrefill": "以下是我的终端输出:\n\n{{output}}\n\n",
|
||
"secrets": {
|
||
"shareApiKey": "允许其他功能使用你的 AI 服务提供商 API 密钥发起请求。密钥不会被复制,你可以随时撤销授权。"
|
||
}
|
||
},
|
||
"nav": {
|
||
"ai": "AI"
|
||
},
|
||
"onboarding": {
|
||
"aiTitle": "AI 助手",
|
||
"aiIntro": "Termix 提供可选的 AI 助手,你可以稍后在设置中更改。",
|
||
"aiSkipTitle": "禁用",
|
||
"aiSkipDesc": "Termix 正常工作,AI 助手将保持隐藏状态。",
|
||
"aiEnableTitle": "启用",
|
||
"aiEnableDesc": "启用 AI 助手,它将分析您的配置并提供优化建议。需自行配置服务商,例如本地运行的 Ollama。",
|
||
"aiNote": "在您配置服务商并主动发送消息之前,绝不会向外发送任何数据。"
|
||
},
|
||
"hosts": {
|
||
"docsLink": "查看文档"
|
||
},
|
||
"agents": {
|
||
"title": "AI Agent",
|
||
"permissionTitle": "运行远程 AI Agent",
|
||
"permissionDescription": "使用已配置的 AI Provider 在 SSH 主机上启动 Agent。Agent 可使用 SSH 账号权限执行命令和修改文件。",
|
||
"new": "新建会话",
|
||
"description": "在此主机的目录中运行 Agent,使用 Termix 配置的模型服务。",
|
||
"runtime": "Agent",
|
||
"provider": "Termix Provider",
|
||
"chooseProvider": "选择兼容的 Provider",
|
||
"model": "模型",
|
||
"directory": "工作目录",
|
||
"executable": "可执行文件(可选绝对路径)",
|
||
"requirements": "主机需要 Node.js 22.19+ 及所选 Agent,并允许 SSH 回环地址远程转发。不覆盖已有 Agent 配置。",
|
||
"responsesRequired": "Codex 需要 Responses API;仅支持 Chat Completions 的接口无法用于 Codex。",
|
||
"piPermissions": "Pi 工具使用当前 SSH 账号权限执行。请只在允许 Agent 修改的目录中启动。",
|
||
"start": "启动 Agent",
|
||
"resume": "恢复会话",
|
||
"stop": "停止会话",
|
||
"interrupt": "中断任务",
|
||
"send": "发送",
|
||
"prompt": "让 Agent 在此目录中完成任务…",
|
||
"noSessions": "此主机还没有 Agent 会话。",
|
||
"approval": "Agent 需要你的决定",
|
||
"answer": "填写答复(结构化问题使用 JSON)",
|
||
"allow": "允许一次",
|
||
"deny": "拒绝",
|
||
"tool": "工具执行",
|
||
"streamFailed": "Agent 消息连接断开,请重新打开会话连接。",
|
||
"status": {
|
||
"starting": "正在启动",
|
||
"ready": "就绪",
|
||
"running": "执行中",
|
||
"stopped": "已停止",
|
||
"error": "出错"
|
||
},
|
||
"installRuntime": "安装所选 Agent 和 Node.js",
|
||
"installSource": "仅从官方来源安装:nodejs.org(SHA-256 校验)、registry.npmjs.org(锁定依赖与完整性校验)。安装到当前 SSH 用户的 ~/.local/share/termix-agent-runtime;需要 curl、tar 和 Linux/macOS x64 或 arm64。不修改 SSH 转发策略。",
|
||
"installSucceeded": "安装及版本校验成功。现在可以启动 Agent;SSH 还需允许回环地址远程转发。",
|
||
"installFailed": "安装失败,请查看日志后重试。",
|
||
"installLog": "安装日志",
|
||
"enableForwarding": "一键启用 Agent 转发",
|
||
"forwardingScope": "需要 Linux、systemd/OpenSSH,以及 root 或免密 sudo。自动备份、校验并重载 SSH,仅为当前 SSH 账号与实际连接来源开放回环远程转发,保留已有本地转发权限。失败自动回滚。",
|
||
"forwardingSucceeded": "SSH 回环远程转发已就绪。请启动或恢复 Agent,建立新的 SSH 连接。",
|
||
"forwardingFailed": "SSH 转发配置失败,请查看日志;未通过校验的配置不会保留。",
|
||
"search": "搜索会话",
|
||
"showArchived": "显示已归档",
|
||
"sessionName": "会话名称",
|
||
"rename": "重命名",
|
||
"archive": "归档并停止",
|
||
"restore": "恢复归档",
|
||
"queue": "待发消息",
|
||
"enqueue": "加入队列",
|
||
"continueQueue": "继续队列",
|
||
"pauseQueue": "暂停队列",
|
||
"editQueued": "编辑待发消息",
|
||
"save": "保存",
|
||
"remove": "移除",
|
||
"upload": "上传附件",
|
||
"remoteFile": "工作目录内的文件路径",
|
||
"attach": "引用文件",
|
||
"attachments": "复用会话附件",
|
||
"pasteImage": "可在输入框粘贴图片。每条最多 4 个附件,每个不超过 1 MiB。",
|
||
"attachmentLimit": "每条最多 4 个附件,每个不超过 1 MiB",
|
||
"review": "Git 改动与 worktree",
|
||
"gitStatus": "刷新 Git 状态",
|
||
"diffFile": "要审阅的文件路径",
|
||
"diff": "查看 diff",
|
||
"branch": "新分支名称",
|
||
"createWorktree": "创建 worktree",
|
||
"useWorktree": "在此 worktree 新建会话",
|
||
"worktreeHint": "从 HEAD 创建新分支。未提交改动保留在当前目录,不会自动删除已有 worktree。",
|
||
"clean": "没有改动",
|
||
"reconnecting": "正在重连并补齐消息…",
|
||
"unavailable": "无法访问会话,请检查权限或重新登录。",
|
||
"shortcuts": "Enter 发送或排队 · Shift+Enter 换行 · Esc 中断并暂停队列"
|
||
},
|
||
"plugin": {
|
||
"name": "AI 助手"
|
||
}
|
||
}
|