返回目录
开发工具 插件

Amadeus

whyself/Amadeus

Amadeus: a web workspace for DSH with cloud and web agents, online code editing, PDF/Office/Markdown/LaTeX previews, TeX compilation, file management, and an integrated terminal.

Stars
3
Forks
0
Issues
0
更新
1 天前

PROJECT TOPICS

项目标签

INSTALL REFERENCE

安装参考

未验证
dsh plugin --profile web add github:whyself/Amadeus

该命令指向仓库当前默认分支;尚无绑定当前 commit 的完整验证结果。

PROJECT README

README

Amadeus logo

Amadeus

扩展 DSH 的文档查看、文本编辑与选区对话能力

Version Node.js DSH

Amadeus 产品首页

Amadeus 是一组面向单用户服务器工作台的 DSH 插件。它把项目文件、终端、文档阅读、代码编辑和选区对话放在同一个界面中,使 DSH 可以直接处理 PDF、Office、Markdown、LaTeX 和常见文本文件。

v1.0.0 是后续开发基座。该版本统一了 Amadeus 命名空间、部署结构、插件版本和文档,同时固定兼容 @deepseek-ai/dsh@0.1.6-alpha.1

主要能力

领域 能力
文档阅读 PDF、DOC/DOCX、PPT/PPTX 分页阅读,PDF.js 文字层、页码跳转、缩放、移动端双指缩放与大文件 Range 请求
文本编辑 CodeMirror 6 语法高亮、自动换行、字号缩放、撤销/重做、Ctrl/Cmd+S、未保存状态与关闭确认
保存冲突 文件版本比较、服务器版本/本地版本选择、自动合并非重叠修改、@codemirror/merge 三方差异编辑
Markdown 安全解析、浏览器 KaTeX 数学公式、同标签预览、右侧并排预览与打印导出
LaTeX SwiftLaTeX XeTeX/dvipdfmx WASM 编译、ctexart、中文字体、常用 TikZ、PDF 文字层与下载
选区对话 对话或文件选区加入注释,回答中的蓝色引用支持悬浮查看和原文定位,原选区以浅蓝荧光高亮
文件管理 文件和文件夹上传、ZIP 下载、重名确认、删除确认、目录轮询与服务器变更自动刷新
终端 持久 WebSocket 连接、高延迟输入合并、会话恢复与 Amadeus 默认工作目录
远程访问 浏览器原生 Basic 认证、HTTPS 反向代理、登录后完整 DSH 设置能力
浏览器自动化 Playwright MCP 浏览器操作,模型原生支持网页导航、点击、填表、截图、无障碍 DOM 快照与 JS 执行,启动自检自动拉取资源

工作方式

浏览器
  ├─ DSH 对话与模型能力
  ├─ Amadeus 文件树 / CodeMirror / PDF.js / KaTeX / SwiftLaTeX
  └─ HTTPS + WebSocket
          │
Amadeus Node.js 服务
  ├─ 认证与静态前端
  ├─ 文件、保存、终端和 TeX Live 路由
  └─ ONLYOFFICE Document Builder → PDF 缓存

Office 文件通过 ONLYOFFICE Document Builder 转为 PDF 阅读版本,再由 PDF.js 渲染页面与可选择文字层。原文件不会被修改。Markdown 在浏览器中解析;LaTeX 在浏览器 WASM 中编译,服务器只通过 kpsewhich 提供所需 TeX Live 文件。

环境要求

  • Linux 服务器,推荐 Ubuntu 24.04 x86_64
  • Node.js 24 或更高版本
  • npm
  • PDF/Word/PPT 预览所需的 ONLYOFFICE DocumentServer Community 转换组件
  • LaTeX 预览所需的 XeTeX、中文与 TikZ TeX Live 包
  • 公网部署使用 nginx 或等价反向代理提供 HTTPS

安装

git clone https://github.com/whyself/Amadeus.git
cd Amadeus
npm ci
npm run build
cp amadeus.example.yml amadeus.local.yml
chmod 600 amadeus.local.yml

编辑 amadeus.local.yml

username: your-name
password: 'replace-with-a-long-random-password'
host: 127.0.0.1
port: 3080
workspace: /srv/amadeus-workspace
onlyOfficeMode: native
onlyOfficeBuilder: /opt/amadeus/vendor/onlyoffice/var/www/onlyoffice/documentserver/server/FileConverter/bin/docbuilder
previewWorkers: 1

执行 npm start,访问 http://127.0.0.1:3080。登录后在 DSH 设置中配置模型。登录密码与模型 API 密钥分别管理。

ONLYOFFICE 转换组件

下载 ONLYOFFICE DocumentServer Community v9.4.0 的官方 Ubuntu 包。Amadeus 只解包并调用其中的转换 CLI,不启动 DocumentServer、数据库或编辑服务。

curl -fLO https://github.com/ONLYOFFICE/DocumentServer/releases/download/v9.4.0/onlyoffice-documentserver_amd64.deb
echo '0860e68c4fecf429b4e13602a4a5ec6945e6ec9f0e9af9867ef0171845aa07df  onlyoffice-documentserver_amd64.deb' | sha256sum -c
sudo apt install libxml2 libcurl4t64 libcurl3t64-gnutls fonts-noto-cjk fonts-liberation fonts-dejavu-core fonts-opensymbol fontconfig
sudo mkdir -p /opt/amadeus/vendor/onlyoffice
sudo dpkg-deb -x onlyoffice-documentserver_amd64.deb /opt/amadeus/vendor/onlyoffice
sudo fc-cache -f

独立 Document Builder 的试用版本可能给 PDF 添加 Unregistered version 水印,不应替换上述社区版组件。字体会影响 Word 分页和布局;中文文档至少应安装 CJK 字体。

可选 Docker 转换模式:

onlyOfficeMode: docker
onlyOfficeImage: onlyoffice/documentserver@sha256:3ab6ebc7c605e5a32b7ae3ff19daed4925090245acc8100ce2230bd766c88212
previewWorkers: 1
# onlyOfficeFontsDir: /srv/amadeus/fonts

Docker 模式只按任务启动 docbuilder,禁用容器网络并限制挂载、内存、CPU 和进程数。

LaTeX 支持

sudo apt install texlive-xetex texlive-lang-chinese texlive-pictures texlive-latex-extra

浏览器首次编译时会下载并缓存格式、宏包和字体,因此耗时较长。后续编译复用 IndexedDB 和服务器的 TeX Live 缓存。用户 .tex 文件不会在服务器执行。

Playwright MCP 浏览器自动化

Amadeus 默认启用 Playwright MCP 服务。模型可直接调用 mcp__playwright__browser_* 工具与 Web 页面交互(访问网页、点击、填表、截图、提取无障碍快照等)。

启动时若未检测到 Chromium 内核,Amadeus 会自动拉取所需资源。Linux 云服务器可一键补齐所需系统动态链接库(.so):

npm run setup:browsers

如需关闭或定制内核,可在 amadeus.local.yml 中设置:

playwrightMcp:
  enabled: true       # 设为 false 可完全禁用
  browser: chromium   # 可选 chromium, chrome, msedge, firefox, webkit
  headless: true      # 服务器环境无头运行
  noSandbox: false    # Linux 容器或 root 运行时自动开启

systemd 与 HTTPS

仓库提供 systemd 模板nginx 模板。模板默认使用 /srv/amadeusamadeus 服务用户:

sudo cp deploy/amadeus.service /etc/systemd/system/amadeus.service
sudo systemctl daemon-reload
sudo systemctl enable --now amadeus.service
sudo journalctl -u amadeus.service -f

公网部署应让 Amadeus 监听回环地址,由 nginx 提供 HTTPS。nginx 模板已包含 WebSocket、长连接和大文件上传设置。不要同时暴露另一套未认证的 DSH 服务。

可用 AMADEUS_CONFIG=/absolute/path/config.yml 指定外部配置文件。home 保存 DSH 会话、模型配置和预览缓存;升级前应先备份,不能把整个数据目录当作普通缓存删除。

配置

配置项 默认值 说明
previewWorkers 1 Office 同时转换数,允许 1–4
previewTimeoutMs 120000 单次转换超时,毫秒
previewCacheVersion '1' 转换器或字体变化后递增以失效旧 PDF
maxPreviewBytes 536870912 输入和输出预览上限,512 MiB
maxUploadBytes 1073741824 单文件上传上限,1 GiB
maxTextBytes 5242880 可编辑 UTF-8 文本上限,5 MiB
sessionHours 12 登录 WebSocket 凭据有效期
playwrightMcp.enabled true 是否启用 Playwright MCP 浏览器自动化
playwrightMcp.browser 'chromium' 默认浏览器,可选 chrome, msedge 等

默认数据目录为 <项目>/.amadeus/dsh-home,默认预览缓存位于 <home>/preview-cache。清理缓存时先停止服务,只删除 preview-cache 内容。

权限与边界

  • Amadeus 是单用户工作台。登录用户能够操作项目文件、终端和 DSH 设置,应视为可信服务器用户。
  • 文件 API 限定在当前会话工作区,拒绝目录越界和符号链接逃逸;工作区根目录不能删除。
  • Basic 认证必须由 HTTPS 保护。HTTP 非安全来源中的 UUID 兼容实现不替代传输加密。
  • 扫描 PDF 和图片文字没有可选择文字层;Amadeus 1.0 不包含 OCR 或 Excel 阅读器。
  • Office 转换、字体替换、复杂公式和演示特效可能与原软件存在显示差异。
  • 仓库不附带 ONLYOFFICE 二进制或系统字体;第三方组件遵循各自许可证。

开发基线

npm test
npm run build
npm run pack:plugins

打包结果位于 .release/

  • dsh-amadeus-login-1.0.1.tgz
  • dsh-amadeus-terminal-1.0.1.tgz
  • dsh-amadeus-files-1.0.1.tgz
  • dsh-amadeus-reader-1.0.1.tgz

代码结构:

packages/login      认证和静态服务入口
packages/terminal   浏览器终端传输
packages/files      文件浏览与传输
packages/reader     文档阅读、CodeMirror、Markdown、LaTeX 与注释
scripts             构建、打包和启动
tests               Node 集成与状态测试
ui                  Amadeus 共享样式

真实 ONLYOFFICE 测试:

AMADEUS_TEST_ONLYOFFICE=native AMADEUS_TEST_BUILDER=/path/to/docbuilder node --test tests/onlyoffice.test.mjs

注释提示结构见 docs/codex-selection-format.md。reader 插件附带 SwiftLaTeX v20022022 的 XeTeX/dvipdfmx WebAssembly 资产、许可证和源码地址。

1.0 升级说明

1.0 将所有项目自有命名空间统一为 amadeus。HTTP 路由、插件 ID、配置文件、环境变量、缓存键、数据目录、systemd 单元和 DOM 扩展点均发生变化。升级旧部署时应备份数据,并显式迁移到:

  • 配置:amadeus.local.yml
  • 环境变量:AMADEUS_CONFIG
  • 服务:amadeus.service
  • 应用路由:/amadeus/*
  • 数据目录:.amadeus/dsh-home
  • DSH Profile:amadeus

完整变化见 CHANGELOG.md

CLASSIFICATION EVIDENCE

分类依据

项目类型插件
功能分类开发工具
规则置信度

系统优先读取 GitHub Topics,再与站内分类词典和词根规则比对。当前命中: code-editor、document-preview、markdown、pdfjs、terminal。