4.0 KiB
4.0 KiB
MEMORY.md - fquiz 工程长期记忆
项目基线
- 当前已完成
fquiz子智能体骨架创建。 - OpenClaw agent id:
fquiz - Workspace:
/root/.openclaw/workspace/fquiz - Agent dir:
/root/.openclaw/agents/fquiz/agent
约定
- 在未明确项目技术栈、目录结构、部署方式前,避免把其他工程(如
quiz/nquiz)的具体规则直接套用到fquiz。 - 后续若
fquiz绑定真实仓库或明确职责,应在此文件补充长期有效口径。 - API 镜像构建阶段支持通过
PIP_INDEX_URL(Secrets/Variables)和PIP_DEFAULT_TIMEOUT(Variables)调优 pip 拉包稳定性;默认索引为https://pypi.org/simple。 web目录用于 Docker 独立构建时,web/package.json与web/package-lock.json必须保持同步;否则web/Dockerfile中的npm ci会因锁文件不一致直接失败(EUSAGE)。
模型管理口径(2026-04-12)
- 模型业务引用键统一使用
code(llm_models.code),name仅用于展示文案。 - 模型状态机固定为:
DRAFT/ENABLED/DISABLED/DEPRECATED,并遵循受限流转规则,禁止任意跳转。 - 路由规则类型固定为:
GLOBAL/CAPABILITY/BUSINESS/AGENT;其中GLOBAL保留 key 为__global__。 - 模型删除前必须做引用检查(至少检查路由规则引用);
ENABLED状态禁止直接删除。 - 密钥默认只保留 hash + masked + fingerprint,不通过 API 返回明文。
文件管理口径(2026-04-12)
- 文件管理一期采用三层模型:
file_storage_backends(后端定义:VFS/S3)file_storage_mounts(挂载点)file_index_entries(目录索引快照)
- 后台 API 入口统一在
/api/v1/admin/files前缀,权限码为:file.read:浏览挂载点和目录列表file.manage:创建目录、删除路径
- 存储驱动抽象位于
api/app/services/storage_driver.py,VFS/S3 必须通过同一工厂分发,避免业务层直接耦合具体存储 SDK。 - VFS 默认根目录由
FILE_VFS_ROOT控制(默认./data/vfs)。
启动与部署稳定性口径(2026-04-12)
- SQLAlchemy 关联加载选项(
selectinload/joinedload)避免在模块导入期以全局常量初始化,优先在函数内惰性构建,防止导入顺序导致 mapper 提前配置失败。 app.models包初始化需预加载全部模型模块,确保字符串关系(如"AuditLog")在启动阶段可解析。- 部署 compose 中 DB 镜像应通过
POSTGRES_IMAGE可配置,默认使用镜像站的 pgvector 镜像(docker.m.daocloud.io/pgvector/pgvector:pg16)。 - 宿主机 DB 暴露端口统一走
POSTGRES_PORT(默认5433),用于规避与宿主机已有 PostgreSQL(常见5432)冲突;容器内连接仍保持db:5432。 - CORS 来源控制采用“双轨配置”:
API_CORS_ORIGINS(精确列表)+API_CORS_ORIGIN_REGEX(正则,可选);API_CORS_ORIGINS支持*和通配符域名并在后端转换为allow_origin_regex。 - GitHub Actions 使用
appleboy/ssh-action部署时,慢网环境需显式设置command_timeout(建议45m)并为docker compose pull增加重试,避免出现Run Command Timeout直接中断发布。
前端视觉口径(2026-04-12)
- 后台视觉基线采用
Slate + Cyan(浅色)风格,优先使用web/src/app/globals.css中统一样式类:surface-card/surface-card-mutednotice+notice-error/notice-successbtn-primary/btn-secondary/btn-dangercontroltable-modern/table-head/table-body
- 字体基线:
- 标题:
Space Grotesk - 正文:
Manrope - 等宽:
JetBrains Mono
- 标题:
前端联调口径(2026-04-12)
NEXT_PUBLIC_API_BASE_URL若误配为 loopback(127.0.0.1/localhost),前端运行时会在浏览器端自动改写为“当前页面主机 + 同端口(默认 8000)”,避免公网页面触发 PNA(Private Network Access)阻断。- 认证请求与 WebSocket 连接均统一复用该运行时 API 基址解析逻辑。