准备工具与源码
需要先取得应用仓库的授权源码。当前官网是独立静态项目,不能用来运行应用后端。下列版本来自本分支的工具链及包配置,应使用锁定依赖,不要直接套用上游 Memos 的开发工具链。
| 工具 | 要求 | 用途 |
|---|---|---|
| Rust | 1.94.0,包含 rustfmt 和 Clippy | 后端与 Rust 协议绑定 |
| Node.js | package.json 要求 24 或以上 | React/Vite 前端 |
| pnpm | 11.0.1 | 按锁文件安装前端依赖 |
| C/C++ 与 CMake | 构建环境可用 | SQLite、音频库等原生依赖 |
| Buf | 修改协议时需要 | 生成 OpenAPI 与 TypeScript |
用两个终端建立开发闭环
使用专门的开发终端,不挂载生产 /etc/secrets。显式指定 SQLite 和空 DSN,避免继承的数据库变量指向真实数据库;清除 Socket 与演示变量,使示例使用指定监听方式。在仓库根目录启动后端,并使用自己的数据目录。第二个终端安装前端依赖并运行 Vite。打开 Vite 实际打印的地址,不要假定前端端口固定。开发代理指向 8081 端口的后端。请使用测试账号和合成笔记。
# Terminal 1: application repository root
unset MEMOS_UNIX_SOCK MEMOS_DEMO
cargo run --locked --bin memos -- \
--addr 127.0.0.1 --port 8081 --driver sqlite --dsn '' --data ./dev-data
# Terminal 2: application repository root
cd web
pnpm install --frozen-lockfile
pnpm dev按职责寻找修改入口
修改行为前先阅读相关测试。业务规则应与 HTTP 传输处理分开,生成协议文件应由规范定义重新生成。
| 领域 | 源码位置 |
|---|---|
| 命令行和进程启动 | crates/amemos/src/main.rs |
| HTTP/REST/Connect 适配 | crates/amemos/src/server/ |
| API 行为 | crates/amemos/src/api/ |
| 持久化和数据库升级 | crates/amemos/src/store/ 与 store/migration/ |
| 协议定义 | proto/api/v1/ 与 proto/store/ |
| React 界面 | web/src/ |
| 行为与数据库测试 | crates/amemos/tests/ |
按下一步目标继续
新工作环境先完成开发环境。需要包含真实网页界面的可执行文件时,阅读构建应用;调试占位页不是发行界面。修改代码时,通过测试选择前端、后端、协议及一次性数据库检查。送审前使用参与开发中的检查表,说明改动、验证证据和未测试部分。
确认开发闭环真正可用
读取本地后端的 /healthz,打开 Vite 界面,创建一条测试笔记,刷新后再编辑。随后为修改区域运行针对性测试。如果后端已启动却显示开发占位页,应使用 Vite 地址或生成发行资源;如果 Vite 无法访问 API,优先检查后端端口和启动日志。
curl --fail http://127.0.0.1:8081/healthz
cargo fmt --all -- --check
# For a full embedded frontend + release binary:
sh scripts/build.sh
./build/memos --version