- Added new features including RDP session support, SSH Agent authentication, cloud sync enhancements, and terminal output improvements. - Changed settings for better draft-state handling and layout consistency. - Fixed issues related to cursor handling in RDP and command injection timeouts in SSH. - Improved performance during large output bursts in the terminal. - Updated documentation with new community engagement badges and detailed export/import functionalities for quick commands.
348 lines
13 KiB
Markdown
348 lines
13 KiB
Markdown
---
|
||
sidebar_position: 3
|
||
---
|
||
|
||
# 终端功能
|
||
|
||
NyaTerm 的终端体验围绕“在同一个工作区里高频处理远程与本地会话”设计。它基于 xterm.js,但实际体验并不只是一块终端画布,还包括搜索、命令历史、建议、AI 辅助、可选增强项、录制和 SSH 辅助能力。
|
||
|
||
## 基础操作
|
||
|
||
### 搜索、复制与右键菜单
|
||
|
||
终端右键菜单可直接执行这些高频操作:
|
||
|
||
- 复制 / 粘贴
|
||
- 粘贴选中的文本
|
||
- 查找文本
|
||
- 在线搜索选中文本
|
||
- 按 provider 翻译选中文本
|
||
- 交给 AI Assistant 解释或分析
|
||
- 清屏 / 全部清除
|
||
- 全选
|
||
|
||
在 **设置 → 交互** 中,你还可以调整:
|
||
|
||
- **选中即复制**
|
||
- **右键粘贴**
|
||
- 单词分隔符
|
||
- 默认字符编码
|
||
|
||
### 回滚缓冲区、字体与缩放
|
||
|
||
- 回滚缓冲区默认保留 **10000 行** 输出
|
||
- 可自定义字体族、字号、普通字重、粗体字重、光标样式与闪烁
|
||
- 可通过菜单或快捷键放大、缩小、重置终端缩放;终端根节点会协调缩放,避免嵌套工作区重复处理
|
||
- **硬件加速**为可选项,默认并未开启;如果你希望对比渲染效果,可在 **设置 → 终端** 中手动切换
|
||
|
||
### 粘贴与输入兼容
|
||
|
||
- 终端可以按设置处理图片路径粘贴,适合把截图或本地图片路径快速带入命令行工具
|
||
- macOS 下如遇输入法组合文本、候选词或特殊按键行为异常,可在 **设置 → 交互** 中开启 IME 兼容选项
|
||
- 在 vim、less、top 等交互式程序中,NyaTerm 会抑制命令建议,避免历史建议覆盖程序自己的输入体验
|
||
|
||
## 命令历史与建议
|
||
|
||
NyaTerm 会为会话工作流提供两类辅助:
|
||
|
||
### 命令历史
|
||
|
||
- 自动记录终端输入过的命令
|
||
- 支持模糊检索
|
||
- 可从右侧的 **命令历史** 面板回看历史输入
|
||
- 搜索栏会保留近期查询,便于重复查找同一类日志或错误
|
||
|
||
### 终端查找
|
||
|
||
`Ctrl / Cmd + Shift + F` 会打开终端查找框。查找框支持:
|
||
|
||
- 上一个 / 下一个结果跳转
|
||
- 当前结果与总结果数提示
|
||
- 无结果、搜索中和正则错误反馈
|
||
- 重复使用近期查询,不必每次重新输入完整关键词
|
||
|
||
### 输入建议
|
||
|
||
输入时会基于历史命令给出建议,适合重复执行运维命令、构建命令或排障脚本。
|
||
|
||
如果你的历史里有很多超长命令、一次性脚本或噪音条目,可以在 **设置 → 交互** 中进一步控制:
|
||
|
||
- 是否启用命令建议
|
||
- 建议参与匹配的**最小历史命令长度**
|
||
- 建议参与匹配的**最大历史命令长度**
|
||
|
||
需要注意:
|
||
|
||
- 这两个长度过滤只影响**历史命令建议**
|
||
- 它们不会影响右侧命令历史面板中的已有记录
|
||
- 它们也不会影响**快捷命令**本身的可用性
|
||
|
||
## AI Assistant
|
||
|
||
NyaTerm 在右侧面板中内置了 **AI Assistant**,并且可以从终端上下文直接唤起。
|
||
|
||
### 常见用法
|
||
|
||
- **生成命令**:告诉它你想完成什么,由它生成命令卡片
|
||
- **解释最近输出**:针对当前会话最近的终端输出做说明,不必手动复制日志片段
|
||
- **解释选中内容**:对选中的日志、报错或片段做解释
|
||
- **分析错误**:把错误上下文交给 AI 生成修复建议
|
||
- **修复选中内容**:从选中报错推导下一步命令
|
||
|
||
### 命令卡片与风险控制
|
||
|
||
AI 返回的命令可以以结构化卡片形式展示,并带有风险等级。你可以根据 **设置 → AI** 中的配置决定:
|
||
|
||
- 哪些风险等级允许直接执行
|
||
- 是否开启风险检查
|
||
- 是否允许把生成命令保存为快捷命令
|
||
- 是否记录 AI 历史
|
||
|
||
### 终端内联输出
|
||
|
||
当 Agent 模式执行命令时,NyaTerm 可以捕获命令执行事件,并把摘要后的输出以内联形式展示在终端工作流附近,方便你连续跟进多步操作的结果。
|
||
|
||
这个行为由 **设置 → AI → Agent Settings** 中的 `Terminal Output Lines` 控制:
|
||
|
||
- `Terminal Output Lines` 表示每次 AI 执行命令后,在终端中额外展示多少行输出
|
||
- 设为 `0` 时,关闭终端内联输出展示
|
||
- 这个设置不会影响真实命令本身的执行,只影响 AI 工作流中的附加可视化反馈
|
||
|
||
### Provider 与模型
|
||
|
||
AI 能力支持:
|
||
|
||
- 内置 provider 配置
|
||
- 自定义 **OpenAI Compatible** provider
|
||
- 按模型启用 / 禁用
|
||
- 默认模型选择
|
||
- 上下文行数限制与超时控制
|
||
|
||
如果你准备在生产环境或受限网络下使用,建议先到 **设置 → AI** 完成 provider、模型和风险门槛配置。
|
||
|
||
更详细的 AI 助手功能说明见 [AI 助手](./ai-assistant)。
|
||
|
||
## 命令风险评估
|
||
|
||
NyaTerm 可以在你手动输入命令时进行实时风险评估。当检测到高风险命令模式(如 `chmod`、`chown`、`rm -rf` 等)时,会弹出风险提示,显示:
|
||
|
||
- 风险等级
|
||
- 命令说明
|
||
- 更安全的替代建议
|
||
|
||
你可以选择继续执行或使用替代命令。此功能需要在 **设置 → AI** 中开启 **命令风险检查**。
|
||
|
||
## 可选终端增强项
|
||
|
||
下面这些能力都需要你按需开启,而不是默认全部打开。
|
||
|
||
### 行号与时间戳 gutter
|
||
|
||
在 **设置 → 终端** 中可分别开启:
|
||
|
||
- **显示行号**
|
||
- **显示时间戳**
|
||
|
||
开启后,终端左侧会出现 gutter,用于辅助阅读长日志、命令输出或回放录制内容。
|
||
|
||
### 动作链接
|
||
|
||
动作链接默认关闭,开启后可识别并点击常见文本模式,包括:
|
||
|
||
- IPv4 地址,例如 `192.168.1.10`
|
||
- `host:port`,例如 `db.internal:5432`
|
||
- 压缩包文件名,例如 `backup.tar.gz`
|
||
|
||
注意:
|
||
|
||
- 需要先在 **设置 → 终端** 中开启 **动作链接**
|
||
- 打开链接时需要使用 **Ctrl / Cmd + 点击**,避免和普通选中操作冲突
|
||
- 三类 matcher 可以分别启用或关闭
|
||
|
||
### 关键词高亮
|
||
|
||
关键词高亮同样默认关闭。启用后,NyaTerm 会先应用内置规则,再叠加你的自定义规则。
|
||
|
||
内置规则覆盖的内容不只限于错误关键字,还包括:
|
||
|
||
- error / warn / success / info / debug 等常见状态词
|
||
- 日期时间
|
||
- 数字、大小、持续时间
|
||
- 地址、URL、UUID、版本号等结构化文本
|
||
- 提示符(`$` / `#`)
|
||
|
||
你也可以自定义规则:
|
||
|
||
- 自定义规则名称
|
||
- 分别设置深色 / 浅色主题颜色
|
||
- 每行填写一个匹配模式
|
||
- 可选择是否跨折行继续匹配
|
||
|
||
#### 导入自定义高亮规则
|
||
|
||
在 **设置 → 终端 → 自定义规则** 中点击 **导入**,可以从 JSON 文件导入自定义高亮规则。
|
||
|
||
导入会和现有规则合并,不会清空已有列表:
|
||
|
||
- 相同 `id` 的规则会被更新
|
||
- 不存在的 `id` 会追加为新规则
|
||
- `id` 为空时会自动生成
|
||
- `name` 为空或没有有效 `patterns` 的规则会被跳过
|
||
|
||
推荐的 JSON 结构如下,也兼容直接使用规则数组作为文件顶层:
|
||
|
||
```json
|
||
{
|
||
"keyword_highlights": [
|
||
{
|
||
"id": "deploy-errors",
|
||
"name": "Deploy Errors",
|
||
"patterns": ["deploy failed", "rollback required", "fatal"],
|
||
"color_dark": "#ff7b72",
|
||
"color_light": "#cf222e",
|
||
"enabled": true
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
### 大输出保护
|
||
|
||
当某个会话输出量过大时,NyaTerm 会临时进入保护模式,优先保证终端可交互性。
|
||
|
||
在这个阶段,应用会暂时抑制部分高开销装饰能力,并提示已经跳过的排队字符数;待输出压力回落后再恢复正常显示。这个机制主要用于日志洪峰或持续刷屏的场景。
|
||
|
||
### 大输出 drain
|
||
|
||
终端输出现在会先经过批量 drain,再交给 xterm.js 渲染。这样在 `tail -f`、编译日志、压测输出等高吞吐场景下,界面会更稳定地保留输入响应、滚动和搜索体验。
|
||
|
||
这不是一个需要手动开启的设置,而是终端输出管线的默认行为。它会和大输出保护、行号 / 时间戳 gutter、命令建议等功能配合工作。
|
||
|
||
## SSH 相关辅助能力
|
||
|
||
### Keep-Alive
|
||
|
||
对 SSH 会话,可以在 **设置 → 终端** 中配置 Keep-Alive 间隔:
|
||
|
||
- 默认值为 **60 秒**
|
||
- 设为 `0` 表示关闭
|
||
- 适合降低长时间空闲连接被远端回收的概率
|
||
|
||
### 远程主机监控面板
|
||
|
||
NyaTerm 为 SSH 会话提供了四类右侧监控面板:**资源监控**、**GPU 监控**、**进程管理**、**Docker 管理**。它们有一些共同点:
|
||
|
||
- 只在当前是 **SSH 会话** 时才有意义,并且只绑定到真正处于活动状态的 SSH 会话
|
||
- 各自由 **设置 → 终端** 中的开关控制是否显示;关闭对应开关会同时隐藏它的活动栏图标
|
||
- 轮询间隔可调,范围为 **3 秒到 120 秒**
|
||
- 面板会在连续轮询失败若干次后停止刷新,避免对不支持的主机反复请求
|
||
|
||
#### 资源监控
|
||
|
||
远程资源监控默认开启。要看到数据,需要同时满足:
|
||
|
||
1. 当前是一个 **SSH 会话**
|
||
2. 在 **设置 → 终端** 中开启 **显示远程资源信息**
|
||
|
||
启用后,右侧 **资源监控** 图标会显示,面板会按设定间隔轮询主机信息;默认轮询间隔为 **3 秒**,可手动调整。
|
||
|
||
面板会显示的内容包括:
|
||
|
||
- 主机名、系统、架构、运行时长
|
||
- Load Average
|
||
- CPU 使用率
|
||
- 内存使用情况
|
||
- 网络吞吐速率
|
||
|
||
#### GPU 监控
|
||
|
||
**GPU 监控** 面板用于查看远端主机上的 NVIDIA GPU 状态,默认关闭,可在 **设置 → 终端** 中开启 **显示 GPU 监控**(默认轮询间隔 3 秒)。
|
||
|
||
面板会显示:
|
||
|
||
- 驱动版本与 CUDA 版本
|
||
- 汇总信息:GPU 数量、最高使用率、显存占用、最高温度
|
||
- 每张 GPU 卡:编号、型号、性能状态(pstate)、使用率与显存占用条,展开后可看 UUID、温度、功耗、风扇转速、空闲显存;使用率超过 **70% / 90%** 时会有不同的颜色提示
|
||
- 可搜索的 GPU 进程列表(按 PID、GPU 编号、用户或进程名过滤),按显存占用排序
|
||
|
||
如果远端没有 NVIDIA GPU 或缺少 `nvidia-smi`,面板会给出对应的空状态提示。
|
||
|
||
#### 进程管理
|
||
|
||
**进程管理** 面板显示远端主机的实时进程列表,默认关闭,可在 **设置 → 终端** 中开启 **显示进程管理**(默认轮询间隔 5 秒)。
|
||
|
||
主要能力:
|
||
|
||
- 进程总数与搜索框(可按 PID、用户、状态、命令、完整命令行过滤)
|
||
- 自适应布局,根据面板宽度增减列;可按进程名、PID、CPU%、内存%、用户排序
|
||
- 展开某个进程可查看 PID/PPID、用户、状态、CPU%、内存%、RSS、运行时长与完整命令行,并支持调整 nice 值(`-20` 到 `19`)后 **应用**(renice)
|
||
- 行操作菜单可复制 PID / 命令,或发送 `TERM` / `HUP` / `STOP` / `CONT` 信号;`KILL` 会先弹出确认对话框并展示对应的 `kill` 命令
|
||
|
||
若远端主机不支持进程查询,面板会给出单独的提示。
|
||
|
||
#### Docker 管理
|
||
|
||
**Docker 管理** 面板用于管理远端主机上的 Docker,默认关闭,可在 **设置 → 终端** 中开启 **显示 Docker 管理**(默认轮询间隔 10 秒)。
|
||
|
||
主要能力:
|
||
|
||
- 概览:运行中 / 已停止容器数、镜像数,标题栏显示 Docker 引擎版本
|
||
- 全局搜索,以及容器、镜像、数据卷、网络、Compose(可用时)等标签页,标签过多时收进 **更多** 下拉
|
||
- **容器**:按状态排序的虚拟化列表,行菜单可查看日志(在终端里运行 `docker logs -f`)、进入容器(打开 shell)、启动 / 停止 / 重启 / 杀死(确认)/ 删除(确认);点击行可打开实时刷新的详情对话框
|
||
- **镜像 / 数据卷 / 网络**:按需加载,每行支持删除(确认)
|
||
- **Compose**:列出项目,展开后按需加载服务,支持项目级 up / restart / down 与服务级 logs / enter / up / stop / restart
|
||
- **更多** 菜单提供 `docker system prune`(危险操作,需确认)
|
||
|
||
日志与进入容器会发送到真实的终端会话中执行;删除、杀死、Compose down、prune 等破坏性操作都会通过确认对话框展示将要执行的具体命令。
|
||
|
||
## 翻译与在线搜索
|
||
|
||
在终端中选中文本后,你可以直接通过右键菜单:
|
||
|
||
- 使用自定义搜索引擎做在线搜索
|
||
- 使用已启用的翻译 provider 打开翻译对话框
|
||
|
||
### 搜索引擎
|
||
|
||
在 **设置 → 搜索** 中,你可以维护自定义搜索引擎列表,为它们设置:
|
||
|
||
- 名称
|
||
- URL 模板(使用 `%s` 占位)
|
||
- 图标
|
||
- 是否显示在搜索菜单中
|
||
|
||
### 翻译 provider
|
||
|
||
翻译 provider 的可见性取决于设置:
|
||
|
||
- **Google**、**Microsoft** 无需额外配置
|
||
- **DeepL / 百度 / 阿里 / 有道** 需要先在 **设置 → 翻译** 中填写凭据
|
||
|
||
## 录制与工作流配合
|
||
|
||
NyaTerm 支持会话录制,适合:
|
||
|
||
- 保留排障步骤
|
||
- 给同事复现问题
|
||
- 截取有时间顺序的终端示例
|
||
|
||
录制文件默认可保存到系统下载目录,也可以在 **设置 → 传输** 中为录制单独指定保存路径,便于把演示素材、排障日志和普通下载文件分开管理。
|
||
|
||
在 **设置 → 传输** 中,还可以进一步配置录制行为:
|
||
|
||
- **自动开始录制**:会话一打开就自动开始录制,避免对那些总是需要留档的会话忘记手动开启
|
||
- **包含时间戳**:在保存的录制文稿中写入时间戳,便于审计或把输出与实际时间对应起来
|
||
|
||
也可以在单个连接的表单中配置录制选项。适合把“生产堡垒机总是录制”“实验设备不录制”这类策略绑定到连接本身,而不是每次打开会话后手动切换。
|
||
|
||
如果你准备录制文档素材,通常可以把这些能力组合起来:
|
||
|
||
- 行号 / 时间戳 gutter
|
||
- 关键词高亮
|
||
- 动作链接
|
||
- 命令历史
|
||
- AI Assistant
|
||
- 资源监控
|
||
|
||
这样更容易拍出“终端在真实工作流中使用”的截图,而不是单独展示某个开关。
|