Skip to content

LowenSSH:多端 AI SSH Agent + 开源化 - #3

Merged
Lowen-0621 merged 7 commits into
mainfrom
feature/rebrand-lowenssh-and-markdown-render
Jun 28, 2026
Merged

LowenSSH:多端 AI SSH Agent + 开源化#3
Lowen-0621 merged 7 commits into
mainfrom
feature/rebrand-lowenssh-and-markdown-render

Conversation

@Lowen-0621

Copy link
Copy Markdown
Owner

概述

将项目从单一 Web 形态重构为多端 AI SSH 运维 Agent,并完成开源发布准备。本分支汇总了改名、多端客户端、Markdown 渲染等一系列工作,最后一批为开源工程化。

主要内容

多端架构

  • 桌面端(Flutter / macOS · Windows):完整移植 Agent loop、门禁三态、上下文管理、SSH/SFTP,三栏可停靠布局,内置全套逻辑直连大模型
  • CLI(Node + Ink TUI):终端形态,独立实现,类 Claude Code 交互
  • 桌面端与 CLI 互不依赖,也不依赖 Java 后端

功能

  • AI 对话持久化、多主机会话隔离、多连接池保活
  • 真实 SFTP 文件管理、主机监控(CPU/内存/磁盘/负载/网络)
  • 端口转发、密钥库、命令片段、审计日志、安全策略面板
  • 设置中心(多模型供应商 / Terminal 设置)+ 中英双语 i18n
  • 交互式 shell(xterm + SSH PTY)、Markdown 渲染、流式实时输出

开源化(最后一批)

  • 删除 frontend/ web 端,Dockerfile 改为纯后端 API 镜像
  • 新增 LICENSE(MIT)、Maven Wrapper、GitHub Actions CI
  • README 重写(三种形态架构说明,去掉面试定位),新增 CLI README
  • 简历素材文档 → docs/ARCHITECTURE.md,移除内部 PLAN 文档

测试

  • 后端 35 个单元测试本地全部通过(门禁三态、复合命令拆段、上下文截断/压缩、消息服务等)
  • 桌面端构建并启动验证通过(macOS)
  • CI 三个 job(后端 / Flutter / CLI)随本 PR 首次触发

🤖 Generated with Claude Code

Lowen-0621 and others added 7 commits June 26, 2026 15:59
- 新建轻量i18n(core/i18n.dart 字典 + settings_provider 的 l10nProvider),中/英切换
- core/settings_store.dart 通用设置落盘(语言),独立 settings.json
- config.dart LLM 升级为多供应商:LlmProvider模型 + 5家预设(GLM/DeepSeek/千问/GPT/Claude)
  - AppConfig 用 providers列表 + activeProviderId,保留 llm 派生getter零改调用方
  - 向后兼容:旧单llm字段自动迁移成glm供应商;providers与预设合并保证完整
- 新建 ui/settings_center.dart:左栏索引+右栏内容大窗口(仿Termius),含AI模型页/通用页
- config_provider: updateProvider/setActiveProvider 替代 updateLlm
- ai_pane 顶部加模型切换条(下拉切换已配置key的供应商)
- top_bar 齿轮改打开设置中心;删除旧 showLlmSettingsDialog;app_shell 标题去掉写死型号

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- settings_store 扩展终端设置:字号/选中即复制/右键粘贴/光标样式/光标闪烁
- settings_provider 加 updateTerminal
- settings_center 新增 Terminal 页(开关+分段选择+字号步进),i18n 覆盖
- terminal_pane 接真:setAutoCopy 可控、onSecondaryTapDown 按开关、cursorType/blink/fontSize 跟随设置
- 只做 xterm 4.0.0 真实支持项,无装饰假开关
- import xterm hide CursorStyle 避免与 settings_store 命名冲突

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- i18n.dart 字典补齐全部UI文案key(顶栏/左栏/智能体/各对话框/右栏/状态栏/终端)
- L10n.t 支持 {占位符} 参数替换
- 全UI文件硬编码中文抽成 l.t('key'):top_bar/left_bar/status_bar/ai_pane/dialogs/
  keys_dialog/forward_dialog/right_bar/security_dialog/audit_dialog/snippets_dialog/
  sftp_view/terminal_pane/settings_center
- 拿不到ref的辅助方法统一加 L10n 参数(_connSeg/_inputBox/_ReasoningTile/_logToolbar等)
- 通用页语言切换即时生效(settingsProvider 重建全应用)
- 有意保留:core层发给LLM的prompt/上下文/规则说明(不随UI语言变)、
  app_shell docking标题(架构限制)、sftp演示标签

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
窗口被拖到极窄时多处 Row 触发 RenderFlex overflow(英文模式文案更长更明显)。
在 MainFlutterWindow 设 minSize 下限根治,用户无法拖到触发溢出的尺寸。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
buffer 未布局完成时 getText 会越界抛异常,包一层防御忽略本次复制。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
- 删除 frontend/ web 端(Vue),桌面端与 CLI 为平行独立实现,不再需要 web
- Dockerfile 改为纯后端 API 镜像(去掉前端构建阶段)
- 新增 LICENSE(MIT)、Maven Wrapper(mvnw)、GitHub Actions CI
- README 重写:三种形态架构说明,去掉面试定位,统一版本号
- 新增 clients/cli/README,改写 clients/app/README
- PROJECT_HIGHLIGHTS(简历素材) → docs/ARCHITECTURE,移除内部 PLAN 文档
- DESIGN.md 去掉 web 技术绑定

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
only-script 配置缺 jar 导致 CI 报 ClassNotFoundException:
MavenWrapperMain。改为标准模式:properties 加 wrapperUrl,
仓库带上 maven-wrapper.jar。本地 ./mvnw --version 验证通过。

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@Lowen-0621
Lowen-0621 merged commit 18018ea into main Jun 28, 2026
3 checks passed
@Lowen-0621
Lowen-0621 deleted the feature/rebrand-lowenssh-and-markdown-render branch June 28, 2026 01:45
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant