2026-03-07-146-atlas-progress.md

Coco 收件箱

Atlas Task #146 进度报告 — 多租户Phase1:路径硬编码清理

日期: 2026-03-07 执行人: Atlas🐻 任务状态: in_progress(主体工作已完成,待Coco确认可标记completed)


执行摘要

按Sage架构文档(multi-tenant-arch-v1.md)附录B扫描清单,完成了6个文件的7处路径硬编码清理。所有修改文件均通过Python AST静态语法验证。


修改清单

1. config_paths.py — 新增4个路径常量(Phase 1 基础)

路径: 09-虚拟办公区系统/config_paths.py

新增内容(在 TENANT_DATA_DIR 定义之后):

LIGHTRAG_STORE_DIR = CHAT_DATA_DIR / "lightrag_store"
LIGHTRAG_GRAPHML = LIGHTRAG_STORE_DIR / "graph_chunk_entity_relation.graphml"
LIGHTRAG_PYTHON = Path(os.environ.get(
    "LIGHTRAG_PYTHON",
    str(Path.home() / ".local" / "venvs" / "lightrag-venv" / "bin" / "python")
))
AUDIT_LOG_DIR = BASE_DIR / "03-Coco首席助理" / "审计日志"

设计说明: - LIGHTRAG_STORE_DIR 基于 CHAT_DATA_DIR_APP_DIR / "chat_data"),子体容器内 bind mount 自动隔离 - LIGHTRAG_PYTHON 支持通过环境变量 LIGHTRAG_PYTHON 覆盖,子体容器内 venv 路径不同 - AUDIT_LOG_DIR 基于 BASE_DIR,子体容器内通过 AIOS_WORKSPACE_DIR 环境变量指向租户专属目录


2. data_firewall.py — 审计日志路径解耦

路径: 09-虚拟办公区系统/data_firewall.py

代码
Before PROJECT_ROOT = Path(__file__).parent.parent.parent.parent
AUDIT_LOG_DIR = PROJECT_ROOT / "日记" / "数字员工团队" / "03-Coco首席助理" / "审计日志"
After from config_paths import AUDIT_LOG_DIR

3. memory_router.py — 3处路径解耦(LIGHTRAG_VENV / LIGHTRAG_SCRIPT / GRAPHML_PATH)

路径: 09-虚拟办公区系统/memory_router.py

3a. 路径配置块(行32-37)

Before:

SCRIPT_DIR = Path(__file__).resolve().parent
...
LIGHTRAG_VENV = Path.home() / ".local" / "venvs" / "lightrag-venv" / "bin" / "python"
LIGHTRAG_SCRIPT = SCRIPT_DIR / "lightrag_memory.py"

After:

from config_paths import APP_DIR, BASE_DIR, LIGHTRAG_PYTHON, LIGHTRAG_GRAPHML
SCRIPT_DIR = Path(__file__).resolve().parent
...
LIGHTRAG_VENV = LIGHTRAG_PYTHON
LIGHTRAG_SCRIPT = APP_DIR / "lightrag_memory.py"

3b. GRAPHML_PATH(行69)

Before: GRAPHML_PATH = SCRIPT_DIR / "chat_data" / "lightrag_store" / "graph_chunk_entity_relation.graphml"

After: GRAPHML_PATH = LIGHTRAG_GRAPHML


4. rebuild_graphml.py — STORE_DIR路径解耦

路径: 09-虚拟办公区系统/rebuild_graphml.py

Before:

STORE_DIR = os.path.join(os.path.dirname(__file__), "chat_data", "lightrag_store")

After:

from config_paths import LIGHTRAG_STORE_DIR
STORE_DIR = str(LIGHTRAG_STORE_DIR)

5. lightrag_memory.py — WORKING_DIR和PYTHON_BIN解耦

路径: 09-虚拟办公区系统/lightrag_memory.py

Before:

from config_paths import BASE_DIR
WORKING_DIR = str(Path(__file__).parent / "chat_data" / "lightrag_store")
PYTHON_BIN = str(Path.home() / ".local" / "venvs" / "lightrag-venv" / "bin" / "python3")

After:

from config_paths import BASE_DIR, LIGHTRAG_STORE_DIR, LIGHTRAG_PYTHON
WORKING_DIR = str(LIGHTRAG_STORE_DIR)
PYTHON_BIN = str(LIGHTRAG_PYTHON)

6. system_health_checker.py — 2处GRAPHML路径解耦

路径: 09-虚拟办公区系统/system_health_checker.py

6a. CRITICAL_FILES字典(行88)

Before: "graphml": SYS_DIR / "chat_data" / "lightrag_store" / "graph_chunk_entity_relation.graphml"

After: "graphml": LIGHTRAG_GRAPHML

6b. GRAPHML_PATH常量(行120)

Before: GRAPHML_PATH = SYS_DIR / "chat_data" / "lightrag_store" / "graph_chunk_entity_relation.graphml"

After: GRAPHML_PATH = LIGHTRAG_GRAPHML

新增import:from config_paths import LIGHTRAG_GRAPHML


验证结果

config_paths.py: OK
data_firewall.py: OK
memory_router.py: OK
rebuild_graphml.py: OK
lightrag_memory.py: OK
system_health_checker.py: OK

所有6个文件通过 python3 -c "import ast; ast.parse(open(f).read())" 静态语法验证。


未修改范围说明

按任务规范,以下类型的 Path(__file__).parent 保持不变,不在本次清理范围:

  1. 系统级固定路径(templates/、static/、workflows/等)— 这些是应用内部结构,不需要租户隔离
  2. 工具脚本(watchdog.py、auto_executor.py等)— 仅在母体运行,不部署到子体
  3. 测试文件(test_*.py)— 仅在母体开发环境使用
  4. _deprecated/备份目录 — 不再维护的历史代码
  5. app.py中的路径— 按任务说明,app.py路由是单独任务范围

本次清理覆盖了Sage架构文档附录B扫描清单中全部7处(6个文件,其中memory_router.py含3处)。


向后兼容性

所有修改均保持向后兼容: - 母体模式下,LIGHTRAG_STORE_DIR = _APP_DIR / "chat_data" / "lightrag_store",与原有硬编码路径完全相同 - LIGHTRAG_PYTHON 母体默认值 = 原有 Path.home() / ".local/venvs/lightrag-venv/bin/python",与原有路径完全相同 - 仅当子体容器设置了 AIOS_WORKSPACE_DIR / LIGHTRAG_PYTHON 环境变量时,路径才会改变


Atlas🐻 | 2026-03-07