跳到主要内容

目录与数据布局

仓库目录结构

memex-server/
├── src/memex/
│ ├── api/ # HTTP 接入层(routes / sse / auth / scheduler)
│ ├── web/ # Web GUI(Jinja2 模板)
│ ├── core/ # Core 编排层(service / task_manager / wiki_execution …)
│ ├── agent/ # Agent 执行层
│ ├── harness_genes/
│ ├── harness_skills/
│ ├── cli.py # CLI 主入口
│ └── mcp_server.py # MCP 主入口
├── tests/
├── docs/ # 原始技术文档
├── docker-compose.yml # 生产(Traefik + TLS)
├── docker-compose.local.yml # 本地开发
├── docker-compose.rollout.yml # Web/Worker 独立 generation 发布覆盖
├── scripts/deploy.sh # 生产滚动发布入口
├── Dockerfile
└── pyproject.toml

Wiki 数据根目录

MEMEX_WIKIS_DIR 为根:

MEMEX_WIKIS_DIR/
├── .uploads/ # 上传文件暂存
├── logs/server/ # 服务日志
└── <owner>/
└── <slug>/
├── EGG.md # egg 阶段蓝图
├── BIRTH.md # boot 阶段种子层
├── GROW.md # grow 阶段进展记录
├── corpus/ # 原始语料
├── docs/wiki/ # 生成的 wiki 页面
│ ├── pages.json
│ └── backlinks.json
└── local/
├── memory/
│ ├── boot_summary.md
│ └── grow_baseline.md
└── state/
├── lifecycle/ # EGG/BRH/GRW step checkpoint
├── grow_state.json
├── *.pid # 进程 PID 文件
└── serve.wanted # 预览服务期望状态标记

关键业务流:上传到 Job 创建

POST /api/v1/upload  (或 upload-url / MCP / CLI)

├─ 文件落地 .uploads/
├─ core.service.submit_book()
│ ├─ 生成/校验 slug
│ ├─ 内容指纹去重检查 → 命中则克隆已有成果(秒级返回)
│ ├─ 未命中 → scaffold_wiki() 初始化 wiki 目录
│ └─ TaskManager.create_job() → status=queued
└─ 返回 {job_id, wiki_slug, target_dir}

关键业务流:Job 调度与执行

memex-background 启动
├─ generation heartbeat / active admission 检查
├─ scheduler_loop()(仅 active Worker 快速派发)
│ ├─ 扫描 waiting 队列
│ ├─ 检查:当前全局上限 / 单用户配额 / step 模型路由 quota
│ └─ launch_job_runner()
│ └─ 独立子进程:python -m memex.api.job_runner
│ └─ /life <STEP_ID> --auto → checkpoint → 新 session
└─ reconciler_loop()(低频对账)
└─ orphan / timeout / config drift / 完成性恢复

生产中的 memex-background 运行在独立的 memex-worker-<release> project。新 generation 激活后,旧 generation 停止领取新任务,但已有 runner 会继续到持久 checkpoint 边界;这使 Web 的路由切换和 Worker 长任务收口成为两个互不阻塞的发布生命周期。

运行时关键文件

文件作用
local/state/*.pid进程 PID,用于进程存活检测
local/state/serve.wanted预览服务期望状态,patrol 循环据此自愈
local/memory/boot_summary.mdboot 阶段验收依据
local/memory/grow_baseline.mdgrow 阶段基线
local/state/grow_state.jsongrow 进度状态,支持中断恢复
lifecycle step checkpointEGG/BRH/GRW 的 durable done/skipped/loop_active 状态
logs/butler/actions.jsonlbutler 行为结构化日志