feat: add terminal broadcast, context menu, and shell close
Complete multi-pane broadcast, standard terminal right-click actions, batch host selection with progress, and native ssh_close_shell so closing a pane tears down the remote shell. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
1 parent
494ef6b9d0
commit
9ce71795b8
38 files changed
+1437
-186
No files matched your search
+14
-14
@@ -7,7 +7,7 @@
|
||||
|
||||
OpsXShell 适合吸收 aiops Agent CLI 的执行 Harness,不适合照搬它的 WebSocket、服务器资产库、审计、审批、Kubernetes 专用工具和默认持久化记忆。
|
||||
|
||||
产品目标是:用户在已连接的 SSH 终端中输入自然语言任务,Agent 通过少量、边界清晰的工具获取真实证据,在每次真实执行前展示命令和风险并等待确认,失败后根据输出换方法,最后给出有证据的结论。
|
||||
产品目标是:用户在已连接的 SSH 终端中输入自然语言任务,Agent 通过少量、边界清晰的工具获取真实证据,按用户选择的安全模式决定确认阈值,失败后根据输出换方法,最后给出有证据的结论。无论选择哪种模式,目标主机始终可见,critical 命令始终硬拒绝。
|
||||
|
||||
## 参考来源
|
||||
|
||||
@@ -35,7 +35,7 @@ OpsXShell 适合吸收 aiops Agent CLI 的执行 Harness,不适合照搬它的
|
||||
-> LLM 选择下一条单行命令,或返回 FINAL
|
||||
-> 五级命令风险评估
|
||||
-> critical 破坏性操作硬拒绝
|
||||
-> 显示目标、风险和命令,用户显式确认
|
||||
-> 按本次运行锁定的安全模式决定是否确认
|
||||
-> ssh_execute 使用当前 connectionId
|
||||
-> 返回 stdout + stderr + exit_code
|
||||
-> 输出过长时本地 analyze_output
|
||||
@@ -43,7 +43,7 @@ OpsXShell 适合吸收 aiops Agent CLI 的执行 Harness,不适合照搬它的
|
||||
-> 失败换方法 / 继续验证 / FINAL
|
||||
```
|
||||
|
||||
- 单次任务最多 8 步。aiops 默认 16 轮适合后端异步任务;OpsXShell 每步都显式确认,8 步更符合桌面 GUI 的注意力和成本边界。
|
||||
- 单次任务最多 8 步。aiops 默认 16 轮适合后端异步任务;OpsXShell 是前台桌面工具,8 步更符合注意力、时延和成本边界。
|
||||
- 相同命令最多出现 2 次,第 3 次在执行前停止。
|
||||
- 第 4 轮检查是否已有足够证据,第 8 轮强制优先收敛;连续失败时 Prompt 要求更换排查路径。
|
||||
- 单步输出进入 Agent 前有 12,000 字符上限,任务观察上下文有 48,000 字符上限。
|
||||
@@ -51,15 +51,15 @@ OpsXShell 适合吸收 aiops Agent CLI 的执行 Harness,不适合照搬它的
|
||||
|
||||
### 安全边界
|
||||
|
||||
| 等级 | 示例 | 当前处理 |
|
||||
| -------- | --------------------------------- | ---------------------- |
|
||||
| safe | `df -h`、`journalctl -u nginx` | 显示后确认 |
|
||||
| low | 未知自定义查询命令 | 显示后确认 |
|
||||
| medium | 文件写入、普通权限变更 | 风险提示后确认 |
|
||||
| high | 服务重启、删除、包安装、K8s 变更 | 红色风险确认 |
|
||||
| critical | 格式化磁盘、删除根目录、fork bomb | 硬拒绝,不显示放行按钮 |
|
||||
| 等级 | 示例 | 严格模式 | 均衡模式(默认) | 宽松模式 |
|
||||
| -------- | --------------------------------- | -------- | ---------------- | -------- |
|
||||
| safe | `df -h`、`journalctl -u nginx` | 自动执行 | 自动执行 | 自动执行 |
|
||||
| low | 未知自定义查询命令 | 自动执行 | 自动执行 | 自动执行 |
|
||||
| medium | 文件写入、普通权限变更 | 先确认 | 自动执行 | 自动执行 |
|
||||
| high | 服务重启、删除、包安装、K8s 变更 | 先确认 | 先确认 | 自动执行 |
|
||||
| critical | 格式化磁盘、删除根目录、fork bomb | 硬拒绝 | 硬拒绝 | 硬拒绝 |
|
||||
|
||||
此处不直接引入 aiops 的 `strict / balanced / permissive` 三级模式。原因是 OpsXShell 已对用户承诺“AI 每次真实执行前显式确认”,`permissive` 静默执行会破坏这条简单、可理解的规则。未来如需减少确认,应引入边界更明确的“仅允许 Rust 认定的纯只读命令自动执行”,而不是模糊的宽松模式。
|
||||
安全模式在任务开始时锁定,运行中不能切换;需要确认时,对话框必须显示本次锁定模式、目标、风险和完整单行命令。宽松模式明确标注“仅适合隔离测试环境”,它不会降低 critical 硬红线。
|
||||
|
||||
终端输出被标记为不可信数据,不得将日志中的“忽略规则”等文字当作指令。常见密码、Token、Authorization Header、AWS Key 和私钥块在 Rust 发送 Provider 前脱敏。
|
||||
|
||||
@@ -74,10 +74,10 @@ OpsXShell 适合吸收 aiops Agent CLI 的执行 Harness,不适合照搬它的
|
||||
| OpenAI / Anthropic LLM 适配 | 已吸收 | 保留 OpenAI Chat、Responses、Anthropic Compatible 及自定义 Provider |
|
||||
| `ssh_execute` | 已吸收 | 固定使用当前活跃 `connectionId`,不重新管理一套凭据 |
|
||||
| `analyze_output` | 已适配 | 本地确定性摘要,降低 token 和幻觉 |
|
||||
| ReAct 16 轮 | 适配为 8 步 | GUI 每步确认,优先快速收敛 |
|
||||
| ReAct 16 轮 | 适配为 8 步 | GUI 前台执行,优先快速收敛 |
|
||||
| 失败反馈和循环检测 | 已吸收 | 退出码和真实输出回传,连续失败换路,相同命令限次 |
|
||||
| 五级风险 | 已吸收 | critical 硬拒绝,其他均显式确认 |
|
||||
| 三级安全模式 | 暂不吸收 | 保持单一可理解的“每步确认”规则 |
|
||||
| 五级风险 | 已吸收 | critical 硬拒绝,其他等级按安全模式阈值确认 |
|
||||
| 三级安全模式 | 已适配 | 严格从 medium、均衡从 high 确认;宽松仍不可绕过 critical |
|
||||
| WebSocket 事件流 | 不照搬 | 本地 React/Tauri 没有跨程服务器会话,使用内存状态即可 |
|
||||
| 审计、审批、RBAC | 不引入 | 属于 aiops/堡垒机,不是本地 SSH 客户端职责 |
|
||||
| podexec/K8s 专用工具 | 不引入 | `kubectl/helm` 可沿远程 SSH 工具使用,不引入第二套目标和凭据边界 |
|
||||
|
||||
Reference in new issue
Block a user