
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
该项目自动化并提供管理界面,用于生成传统的 Variance 发布文件。编辑可上传文本版本、生成 Medite 比对结果、管理摹本,并使用源自 _lignes 文件的分页标记组装发布资产包。具体功能包括:
_lignes 文件、摹本和比对清单项目分为以下组件:
http://localhost:8080),可通过单个端口访问 Laravel(/admin)、传统 Variance(/)和 Medite 端点详细文档:
descr/architecture.md、descr/workflow.md、descr/facsimiles.md、descr/queues_jobs.md、descr/api_endpoints.md、descr/deployment_notes.md。最近更新:
descr/updates_2026-02-04.md。
bashgit clone https://github.com/unil-lettres/variance-input.git cd variance-input docker compose up -d --build
这将启动:
laravel(管理 Web 应用,通过代理访问 http://localhost:8080/admin)medite(Flask API,运行于 http://localhost:5000)laravel-queue(用于分页和摹本任务的队列 worker)laravel/example.env 到 laravel/.env,根据需要调整数据库/队列设置/admin/health 暴露运行中的提交 SHA,在创建/重建 laravel 和 laravel-queue 容器前设置 APP_GIT_SHA=$(git rev-parse HEAD)/admin),设置 ADMIN_BASE_PATH=admin 使生成的 URL 包含前缀MEDITE_STATUS_URL 控制"Medite 任务"菜单链接,默认值 /medite/(通过 variance-proxy 代理),确保本地和 staging 主机无需硬编码 localhost 即可使用laravel-queue 服务运行 laravel/scripts/run-queue-workers.sh,为 facsimiles 和 page-markers 队列生成多个 worker(QUEUE_WORKERS,默认 5 个)bashdocker compose exec laravel php artisan migrate docker compose exec laravel php artisan db:seed # 可选:加载测试数据
storage/app/public/uploads/versions/ 下生成 TEI 容器_lignes) – 上传 _lignes 文本文件,队列将在 storage/app/private/pagination/{version}.json 生成描述所有分页标记的辅助文件storage/app/public/uploads/{author}/{work}/comparisons/{id}_lignes 标记合并到 Medite XHTML 文件中| 用途 | 命令 |
|---|---|
| 查看 Laravel 队列日志 | docker compose logs -f laravel-queue |
| 手动运行队列 worker | docker compose exec laravel php artisan queue:work --queue=page-markers --stop-when-empty |
| Artisan 交互 shell | docker compose exec laravel php artisan tinker |
| Laravel 依赖安装 | docker compose exec laravel composer install |
| NPM 构建(如需) | docker compose exec laravel npm run build |
├── docker-compose.yml ├── descr/ # 开发者文档 ├── laravel/ # 管理应用(PHP/Laravel) │ ├── app/ │ ├── routes/ │ └── ... ├── medite/ # Flask + Celery Medite 运行器 │ └── app/variance/... ├── variance/ # 传统 PHP 前端(开发环境下只读) └── variance_data/ # 运行时上传文件和生成输出
.txt 文件(≤ 8 MB,text/plain)original_encoding(UTF‑8 / Windows‑1252 / ISO‑8859‑1)VersionController::store 将原始 TXT 写入 storage/app/public/uploads/versions/{base}.txt,标准化文本(UTF‑8 LF,空白折叠),保留内嵌 <pb> 标签,插入 <lb/>,并将 TEI 保存到 storage/app/public/uploads/versions/{base}.xmlstorage/app/public/uploads/versions 读取 TEI,若不存在则回退到 public/uploads/versions 或 variance/uploads/versions(传统/导入数据)versions 记录_lignes 文件storage/app/private/lignes/{version_id}.txtApplyLignesJob 解析 _lignes 条目,与 TEI 文本匹配,并在 storage/app/private/pagination/{version_id}.json 存储分页辅助 JSON,包含 { char_index, page, image_code, phrase, context }storage/app/tmp/pager/{version_id}.json,供 UI 显示辅助文件就绪状态_lignes 上传限制为 4 MB<pb> 标签,可使用 POST /api/versions/{version}/pagination/from-pb 直接构建辅助文件img_*)并生成缩略图storage/app/public/uploads/{author}/{work}/{version}/images_{role}_{author--work--comparison}.json,并立即反映在比对表格("JSON"状态)中MediteController::runMedite 调用 Flask 服务执行 Celery 任务/app/uploads/{author}/{work}/comparisons/{comparison_id},Laravel 将其镜像到 storage/app/public/uploads/{author}/{work}/comparisons/{id}ComparisonController::applyPageMarkers 确保两个版本都有辅助文件,标记比对为排队状态,并调度 InjectComparisonPaginationJobstorage/app/private/pagination/{version}.json,在记录的偏移位置将 <span class="page-marker"> 标签注入 source.xhtml / target.xhtml,并保存更新后的文件storage/app/tmp/pager/comparisons/{comparison_id}.json;UI 轮询此端点显示每个角色(源/目标)的状态(排队→运行中→完成)POST /api/comparisons/{comparison}/pagination/from-xhtml 可从 source.xhtml / target.xhtml 中已有的 <pb> 标签重建辅助文件storage/app/public/uploads/{author}/{work}/{comparison_folder},并镜像到 variance/uploads/{author}/{work}/{comparison_folder} 供传统站点使用后台任务
ApplyLignesJob、InjectComparisonPaginationJob)在 page-markers 队列运行;摹本处理使用 facsimiles 队列laravel-queue 容器运行 laravel/scripts/run-queue-workers.sh,为 facsimiles,page-markers 生成多个 queue:work 进程docker compose exec laravel php artisan queue:work --queue=page-markers --stop-when-empty健康状态(顶部横幅点)
可配置健康阈值:
HEALTHCHECK_DISK_WARN_GB(默认 10)HEALTHCHECK_DISK_CRIT_GB(默认 5)HEALTHCHECK_MEDITE_WARN_MS(默认 2500)HEALTHCHECK_FAILED_JOBS_WARN(默认 1)HEALTHCHECK_FAILED_JOBS_CRIT(默认 10)制品速查表
| 制品 | 位置 |
|---|---|
| 上传的 TXT 文件 | storage/app/public/uploads/versions/{folder}.txt |
| TEI 版本文件 | storage/app/public/uploads/versions/{folder}.xml |
_lignes 原始文件 | storage/app/private/lignes/{version_id}.txt |
| 分页辅助文件 | storage/app/private/pagination/{version_id}.json |
| 摹本清单 JSON | storage/app/public/uploads/{author}/{work}/{version}/images_{role}_{author--work--comparison}.json |
| 版本进度文件 | storage/app/tmp/pager/{version_id}.json |
| 比对进度文件 | storage/app/tmp/pager/comparisons/{comparison_id}.json |
| Medite 输出(XHTML/TEI) | storage/app/public/uploads/{author}/{work}/comparisons/{id} |
| 已发布比对(可选) | storage/app/public/uploads/{author}/{work}/{comparison_folder} + 镜像到 variance/uploads/... |
| 摹本图像(草稿) | storage/app/public/uploads/{author}/{work}/{version}/ |
| 导出的传统 zip 包 | 通过 /comparisons/{id}/export 按需下载 |
| 作品封面图像 | public/uploads_images/{hash}.{ext} + 镜像到 variance/uploads_images/ |
| 作品 PDF 文件 | public/uploads/pdf/{work_id}.pdf + 镜像到 variance/uploads/pdf/ |
深入了解可查看:
laravel/app/Services/PageMarkerService.phplaravel/app/Jobs/ApplyLignesJob.phplaravel/app/Jobs/InjectComparisonPaginationJob.phpmedite/app/flask_app.pyVariance 与 Medite 集成由SIER(教学与研究基础设施服务) 开发,隶属于洛桑大学文学院(<[***]>)。许可目前正在内部审核中;本仓库为私有,现阶段不授予任何再分发权利。
祝您比对愉快! :)
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


来自真实用户的反馈,见证轩辕镜像的优质服务