# opsai **Repository Path**: hnwlc/opsai ## Basic Information - **Project Name**: opsai - **Description**: 运维助手 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-31 - **Last Updated**: 2026-04-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # opsai Windows/macOS 桌面 TUI 工具,用于运维排障 — 粘贴日志或读取文件,发送给 LLM 分析,查看/保存结果。 ## 功能 - **日志分析**:粘贴日志或输入文本,发送给 LLM 进行智能分析 - **文件浏览**:浏览目录、查看文件、按名称/内容搜索 - **文件分析**:从文件浏览器直接发送文件给 LLM 分析 - **截图 OCR**:`Ctrl+B Ctrl+B` 粘贴剪贴板截图,OCR 识别后发送给 LLM 分析 - **会话持久化**:自动保存到 `~/.opsai/sessions/`,重启后恢复最近会话 - **会话搜索**:按标题或消息内容搜索历史会话 - **主题切换**:Tokyo Night(暗色)/ Catppuccin Latte(亮色) - **流式输出**:AI 回复逐 token 实时显示,无需等待完整响应 - **Markdown 渲染**:LLM 响应以 Markdown 格式展示 - **剪贴板支持**:一键复制 AI 回复内容 - **安全评估**(仅 Windows):一键扫描进程、端口、网络、启动项、用户账户、服务、防火墙、RDP、杀毒、共享等 10 项安全检查,AI 生成评估报告 - **安全沙箱**:目录白名单限制文件访问 ## 快速开始 ### 前置条件 - Go 1.22+ - Claude Code 已配置(`~/.claude/settings.json` 中包含 API 凭据) - 或者在可执行文件同目录放置 `config.json` ### 构建 ```bash # macOS GOOS=darwin GOARCH=arm64 go build -o releases/opsai . # Windows GOOS=windows GOARCH=amd64 go build -o releases/opsai.exe . ``` ### 运行 ```bash ./releases/opsai ``` ## 配置 优先读取可执行文件同目录的 `config.json`,未找到时回退到 `~/.claude/settings.json`。 **config.json 格式:** ```json { "auth_token": "你的 API 密钥", "base_url": "https://open.bigmodel.cn/api/anthropic", "model": "glm-5-turbo", "vision_model": "glm-4v-flash", "vision_url": "https://open.bigmodel.cn/api/paas/v4/chat/completions", "vision_token": "可选,默认使用 auth_token", "theme": "dark" } ``` **可选字段:** `vision_token`(默认同 auth_token)、`vision_model`(默认 glm-4v-flash)、`theme`(dark/light)。 ### 数据存储 ``` ~/.opsai/ ├── roles.json # 角色配置 └── sessions/ # 会话持久化 ├── .json └── ... ``` ## 使用 ### 快捷键 | 按键 | 说明 | |------|------| | `Enter` | 发送消息 | | `Alt+1/2/3/4` | 切换标签页(对话/文件/会话/安全) | | `Ctrl+B Ctrl+B` | 粘贴剪贴板截图进行 OCR 识别 | | `Ctrl+C` | 退出 | ### 对话标签页 粘贴日志或输入问题,按 Enter 发送给 LLM。 ### 文件标签页 | 按键 | 说明 | |------|------| | `↑/↓` 或 `j/k` | 导航 | | `Enter` | 打开文件/进入目录 | | `S` | 发送文件到 LLM | | `Backspace` | 返回上级目录 | | `Esc` | 返回列表 | ### 会话标签页 | 按键 | 说明 | |------|------| | `N` | 新建会话 | | `1-9` | 切换到对应会话 | | `/` | 搜索会话(按标题或消息内容) | | `Esc` | 退出搜索 | ### 命令 在输入框中输入以 `/` 开头的命令: | 命令 | 说明 | |------|------| | `/help` | 显示帮助信息 | | `/clear` | 清除聊天记录 | | `/save N` | 保存倒数第 N 条 AI 回复为 .md 文件(1=最新) | | `/copy N` | 复制倒数第 N 条 AI 回复到剪贴板 | | `/model` | 显示当前模型信息 | | `/rename <名称>` | 重命名当前会话 | | `/delete` | 删除当前会话 | | `/theme [dark\|light]` | 切换主题 | ## 技术栈 - Go 1.22+ - [Bubble Tea](https://github.com/charmbracelet/bubbletea) — TUI 框架 - [Lipgloss](https://github.com/charmbracelet/lipgloss) — 终端样式 - [Glamour](https://github.com/charmbracelet/glamour) — Markdown 渲染 - [Bubbles](https://github.com/charmbracelet/bubbles) — textarea/viewport 组件 ## 项目结构 ``` opsai/ ├── main.go # 入口 ├── go.mod / go.sum ├── internal/ │ ├── config/ # 配置加载、角色管理 │ ├── llm/ # LLM 客户端封装 │ ├── file/ # 文件读取、浏览、搜索、沙箱 │ ├── clipboard/ # 剪贴板(文本 + 图片) │ ├── session/ # 会话管理 + 持久化 │ ├── audit/ # Windows 安全评估(仅 Windows 编译) │ ├── system/ # 系统时间信息 │ └── ui/ # TUI 界面 │ ├── app.go # 根模型,标签路由 │ ├── audit.go # 安全评估面板 │ ├── chat.go # 聊天面板 │ ├── filebrowser.go # 文件浏览器面板 │ ├── tabs.go # 标签栏 │ └── styles.go # 主题系统(Tokyo Night / Catppuccin Latte) └── releases/ # 构建输出 ``` ## License MIT