aps-agent/docs/architecture/desktop.md

3.0 KiB
Raw Blame History

桌面端与 Web 双形态

对标 Codex:桌面安装后用户主目录出现 ~/.aps;同一套 UI 也可纯 Web 部署。

目录约定(对标 Codex ~/.codex)

桌面端安装到电脑后,固定写到用户主目录(不是安装目录):

系统 路径
Windows %USERPROFILE%\.aps → 如 C:\Users\andy_\.aps
macOS / Linux ~/.aps
~/.aps/                      # 本机应用数据(会话 / DB / Skill…)
├─ sessions/
│  └─ workspace.json         # 项目元数据 + 话题会话 + 消息
├─ skills/
├─ data/                     # world.json / master.db / knowledge…
├─ cache/  tmp/  logs/  packs/
└─ config.json

<用户自选工程目录>/          # 新建项目时指定;排产业务文件放这里
├─ 订单 / 物料 / 工艺 Excel…
└─ …
  • 话题会话:存在 ~/.aps/sessions/,可不绑定项目(独立话题)。
  • 工程项目:可选;创建时指定 workDir,业务数据文件由用户放在该目录。
变量 含义
APS_MODE desktop | web(默认 web)
APS_HOME 显式主目录(覆盖默认)
APS_SKILLS_PATH 单文件 skills.json(测试兼容)
APS_WORLD_PATH / APS_DB_PATH / … 单项覆盖

GET /api/system/paths、GET /api/skills 的 skillsDir / mode 可查看当前解析结果。

开发命令

在仓库根、apps/web 或 apps/desktop 均可执行(脚本会自动定位仓库根):

# 建议先在仓库根装依赖
cd ../..   # 若当前在 apps/desktop
npm run bootstrap

npm run dev:web             # FastAPI + Vite(浏览器)
npm run dev:desktop         # FastAPI + Vite + Electron(数据 → ~/.aps)

# 也可拆开(仅仓库根):
npm run dev:server
npm run dev:ui

打包

npm run build:web           # 产出 apps/web/dist —— 静态资源,部署到 Nginx/CDN,API 另部服务端
npm run build:desktop       # 先 build:web,再 electron-builder 打 Windows 安装包(apps/desktop/release)
  • Web 部署:只部署 apps/web/dist + 后端进程(uvicorn / 容器);APS_MODE=web。
  • 桌面分发:安装包内嵌壳;首次运行创建 ~/.aps,Skill 写入 ~/.aps/skills/<id>/。

原生 / 顶栏菜单

Windows 桌面端使用无边框窗口(frame: false)+ 自绘顶栏:

  1. 中文菜单 文件 / 编辑 / 视图 / 窗口 / 帮助 贴窗口最顶
  2. 顶栏空白区可拖动窗口;双击空白可最大化/还原
  3. 右侧自绘 最小化 / 还原·退出全屏 / 关闭(不依赖系统 overlay,避免点不动)

右侧面板拖拽上限随窗口宽度计算:只保证对话区 ≥280px。

Skill 与旧「设置页卡片」的区别

旧实现是服务端 server/data/skills.json 的登记表。 现实现对标 Codex:Skill 是用户目录下的文件夹资产;管理台展示并维护 manifest.json,桌面/Web 共用同一套 API。