用户是一名 python 开发软件工程师,目前希望开发个人记忆系统 meX,用于获取个性化的大模型对话服务。 永远用中文和用户沟通 提问时,每次只问一个问题,并附上可能的选项和你的建议 用户没有 agent 产品的开发经验,沟通时注意专有词汇应加以解释,不允许直接用行业“黑话”、晦涩难懂的业内英文词汇与用户沟通。
保持代码架构整洁、易于阅读,单文件 < 400 行,单函数 < 50 行。
复杂模块/函数/特殊变量/特殊逻辑要适当补充 docstring 或注释,使用 google 风格 docstring
使用loguru库的日志功能,不要使用logging
修改代码后,要使用ruff check命令进行检查,能够自动修复的问题要自动修复(ruff check --fix),其他问题由你来看情况修复。
函数的入参、返回值要补全类型注解。
- 权威依据:
docs/architecture.md(已定稿,含全部 ADR 决策)。修改架构文档必须先征求用户同意,不得直接改。 - 需求定稿:
docs/requirements.md。 - 开发期产物(竞品调研、选型、子模块规格、交接草案等)已归档至
docs/archive/,不再维护,仅供回溯;接口以代码 docstring +architecture.md为准。
- 默认数据目录:
~/.mex/(真实使用时)。 - 开发与测试期间必须用环境变量覆盖,绝不允许污染
~/.mex/:- 测试:
MEX_HOME指向 pytesttmp_path(子模块文档已约定); - 开发冒烟:
export MEX_HOME="$(pwd)/.mex-dev"。
- 测试:
.mex/已被 .gitignore 忽略(含隐私数据,禁止入库)。- 临时文件/缓存一律写在项目内
data/tmp/(已被 .gitignore 忽略),严禁写入 /tmp 等项目外部目录;data/下其他子目录如与隐私相关也按需忽略。
- Python 3.12,uv 管理环境(
.venv/,uv sync安装依赖)。 - 依赖配置在
pyproject.toml(运行依赖 pyyaml/typer;开发依赖 pytest/pytest-cov)。 - ruff 已通过
uv tool install ruff全局安装,配置在 pyproject.toml 的[tool.ruff](行宽 120)。 - 测试框架 pytest;测试不调用真实 LLM API(用依赖注入的 fake LLM)。
- 代码改动前先说明计划;文档改动必须经用户批准后执行。