GoForum🌐 V2EX

分享一个 macOS 风格的 Web 桌面文件管理系统,包含 Go 后端和 React 前端。支持窗口管理、代码编辑、终端模拟、Docker 管理、视频/音乐播放、AI 对话与 Skills 扩展等功能。

wuhen8 · 2026-02-14 16:47 · 0 次点赞 · 1 条回复

全 AI 编写,没写一行代码,go 后端,React 前端,ai 还是比较适合写 React

功能特性

后端

  • RESTful API + WebSocket 实时通信
  • 文件/文件夹 CRUD 操作
  • 分片上传(支持 S3 直传)
  • JWT 认证机制
  • Docker Compose 管理
  • 终端 WebSocket 代理
  • 定时任务管理
  • AI 对话 + Skills 扩展系统
  • 多存储驱动(本地文件系统、S3/MinIO )

前端

  • macOS 风格桌面体验(窗口拖拽、缩放、吸附、最大化/最小化)
  • 16 个模块化应用(文件管理器、代码编辑器、终端、Docker 管理、AI 对话等)
  • Monaco Editor 代码编辑(语法高亮、格式化)
  • xterm.js 终端模拟器
  • ArtPlayer 视频播放器
  • 音乐播放器(播放列表、循环、随机)
  • Markdown 预览( GFM + 代码高亮)
  • Spotlight 搜索( Cmd+K )
  • 右键上下文菜单系统
  • 全局快捷键
  • 主题与偏好设置(壁纸、Dock 大小、编辑器主题等)
  • 应用商店(安装/卸载扩展应用)

Skills 系统

Skills 是 AI 对话功能的扩展机制,允许你为 AI 添加自定义知识(提示词)或可执行工具(脚本)。

Skills 目录位于 {FM_DATA_DIR}/skills/(默认 /opt/file-manager/skills/),启动时自动创建。

Skill 类型

1. 提示词 Skill ( Prompt Skill )

为 AI 注入额外的上下文知识,支持两种格式:

社区格式(推荐) — 子目录 + SKILL.md

skills/
└── my-knowledge/
    └── SKILL.md

SKILL.md 支持 YAML frontmatter:

---
name: my-knowledge
description: 自定义知识描述
---

这里是提示词内容,AI 对话时会自动加载。

根级文件(旧格式) — 直接放置 .md.txt 文件:

skills/
└── my-prompt.md

单个提示词文件最大 20KB ,所有提示词总计最大 200KB 。

2. 脚本工具 Skill ( Script Tool Skill )

让 AI 能够调用自定义脚本执行操作(如读取 Excel 、调用外部 API 等)。脚本在 Docker 沙箱容器中隔离执行。

子目录格式(推荐)meta.json + main.py / main.sh

skills/
└── read_excel/
    ├── meta.json
    └── main.py

meta.json 定义工具的名称、描述和参数:

{
  "name": "read_excel",
  "description": "读取 Excel 文件内容",
  "parameters": {
    "type": "object",
    "properties": {
      "file_path": {
        "type": "string",
        "description": "文件路径"
      }
    },
    "required": ["file_path"]
  }
}

main.py 中通过 ARGS 获取参数:

# ARGS 是一个 dict ,包含 AI 传入的参数
file_path = ARGS["file_path"]
# 你的处理逻辑...
print(result)

main.sh 中通过 $ARGS 环境变量获取 JSON 参数:

echo "$ARGS" | jq -r '.file_path'
# 你的处理逻辑...

根级文件(旧格式).py/.sh + 同名 .json

skills/
├── read_excel.py
└── read_excel.json

沙箱配置

脚本工具 Skill 在 Docker 沙箱容器中执行,需要:

  1. 预先创建并启动一个 Docker 容器(默认名称 fm-sandbox,可通过 FM_SANDBOX_CONTAINER 环境变量修改)
  2. 将 Skills 目录挂载到容器的 /skills/ 路径

示例:

docker run -d --name fm-sandbox \
  -v /opt/file-manager/skills:/skills:ro \
  python:3.11-slim \
  sleep infinity

技术栈

后端

  • Go + Gin Web Framework
  • JWT Authentication ( golang-jwt )
  • WebSocket ( gorilla/websocket )
  • Docker SDK
  • S3/MinIO ( minio-go )
  • SQLite ( modernc.org/sqlite )

前端

  • React 18 + TypeScript
  • Vite 5 (构建工具)
  • Zustand (状态管理)
  • Tailwind CSS 4
  • shadcn/ui ( Radix UI + Tailwind )
  • Monaco Editor (代码编辑)
  • xterm.js (终端)
  • ArtPlayer (视频播放)
  • framer-motion (动画)
  • Axios ( HTTP 请求)
  • lucide-react (图标)

环境变量

变量名 说明 默认值
FM_DATA_DIR 应用数据目录,存放数据库、Skills 、配置等 /opt/file-manager
FM_PORT 服务监听端口 8080
FM_JWT_SECRET JWT 签名密钥。未设置时每次启动随机生成,重启后所有已签发的 Token 失效 随机 32 字节
FM_SANDBOX_CONTAINER AI Skills 脚本执行所用的 Docker 沙箱容器名称 fm-sandbox

示例:

export FM_DATA_DIR=/data/file-manager
export FM_PORT=9090
export FM_JWT_SECRET=your-secret-key
export FM_SANDBOX_CONTAINER=my-sandbox

大家可以在这里体验一下 https://huggingface.co/spaces/wuhenba/webos https://wuhenba-webos.hf.space/ 密码: Admin@123

二进制包也在这里可以下载

1 条回复
Moyyyyyyyyyyye · 2026-02-14 17:17
#1

我更希望自己的产品介绍自己写,ai 写的看的有用的信息密度太低了,个人见解

添加回复
你还需要 登录 后发表回复

登录后可发帖和回复

登录 注册
主题信息
作者: wuhen8
发布: 2026-02-14
点赞: 0
回复: 0