Files
Termix/plugins/ai/locales/translated/zh_CN.json
T
ZacharyZcR bf817d8bd1 feat(ai): add remote coding agent sessions for SSH hosts (#1545)
* 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
2026-10-03 16:01:47 -05:00

199 lines
9.2 KiB
JSON
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.
{
"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 助手"
}
}