# 织忆 MemoryWeave — Makefile # Go daemon (zhiyid) + Rust sidecar (zhiyi-consolidate) .PHONY: all build test bench eval deploy clean # ─── 变量 ──────────────────────────────────────────── GO_CMD := go RUST_CMD := cargo GO_DIR := go RUST_DIR := rust BINARY_GO := $(GO_DIR)/cmd/zhiyid/zhiyid BINARY_RUST := $(RUST_DIR)/target/release/zhiyi-consolidate # ─── 构建 ──────────────────────────────────────────── all: build-go build-rust build-go: cd $(GO_DIR) && CGO_ENABLED=1 $(GO_CMD) build -o cmd/zhiyid/zhiyid ./cmd/zhiyid build-rust: cd $(RUST_DIR) && $(RUST_CMD) build --release build: build-go ## 只构建 Go (Rust 需单独 build-rust) # ─── Obsidian 插件 ──────────────────────────────────── OBSIDIAN_PLUGIN := plugins/obsidian OBSIDIAN_DEST := $(HOME)/.obsidian/plugins/zhiyi-memory build-obsidian: cd $(OBSIDIAN_PLUGIN) && node esbuild.config.mjs install-obsidian: build-obsidian cp $(OBSIDIAN_PLUGIN)/main.js $(OBSIDIAN_DEST)/ cp $(OBSIDIAN_PLUGIN)/manifest.json $(OBSIDIAN_DEST)/ cp $(OBSIDIAN_PLUGIN)/styles.css $(OBSIDIAN_DEST)/ # ─── 增强 CLI ───────────────────────────────────────────── build-cli: cd $(GO_DIR) && $(GO_CMD) build -o $(HOME)/.local/bin/zhiyi-cli ./cmd/zhiyi-cli # ─── Web UI ───────────────────────────────────────────── build-web: @echo "Web UI 使用静态 HTML(无需构建)" @echo " - 前端入口: web-ui/index.html" @echo " - 访问地址: http://localhost:7821/" @echo " - API 地址: http://localhost:7821/api/v1/" VERSION := $(shell cat VERSION) REGISTRY ?= localhost:5000 # ─── 版本信息 ────────────────────────────────────────── version: @echo "$(VERSION)" # ─── 一键安装所有 ─────────────────────────────────────── install-all: build-go build-cli install-obsidian @echo "版本: $(VERSION)" @echo "二进制: $(HOME)/.local/bin/zhiyid" @echo "全部安装完成(重启服务: systemctl --user restart zhiyid)" # ─── 镜像构建 & 推送 ───────────────────────────────────── docker-build: docker build -t zhiyid:$(VERSION) -t zhiyid:latest . docker-tag: docker tag zhiyid:$(VERSION) $(REGISTRY)/zhiyid:$(VERSION) docker tag zhiyid:$(VERSION) $(REGISTRY)/zhiyid:latest docker-push: docker-build docker-tag docker push $(REGISTRY)/zhiyid:$(VERSION) docker push $(REGISTRY)/zhiyid:latest # ─── 一键部署(Docker Compose)──────────────────────────── deploy-compose: docker-build docker compose up -d --remove-orphans @echo "部署完成: curl http://localhost:7821/health" /dev/null && echo "✅ zhiyid: OK" || echo "❌ zhiyid: DOWN" @curl -sf http://localhost:8000/v1/embeddings -H "Content-Type: application/json" -d '{"input":["test"]}' > /dev/null 2>&1 && echo "✅ BGE-M3 ONNX: OK" || echo "⚠️ BGE-M3 ONNX: NOT REACHABLE" @redis-cli PING > /dev/null 2>&1 && echo "✅ Redis: OK" || echo "⚠️ Redis: NOT REACHABLE" @curl -sf http://localhost:7821/api/v1/stats -H "X-API-Key: $$API_KEY" | jq '{total_memories,total_episodes}' # ─── 清理 ──────────────────────────────────────────── clean: cd $(GO_DIR) && $(GO_CMD) clean cd $(RUST_DIR) && $(RUST_CMD) clean # ─── 迁移 ──────────────────────────────────────────── migrate: cd $(GO_DIR) && $(GO_CMD) run ../scripts/migrate_faiss_to_lance.go \ --faiss-path ~/projects/zhiyi/memory_faiss.index \ --metadata-path ~/projects/zhiyi/memory_metadata.json \ --target sqlite \ --db-path /var/lib/memoryweave/memoryweave.db migrate-dry-run: cd $(GO_DIR) && $(GO_CMD) run ../scripts/migrate_faiss_to_lance.go \ --faiss-path ~/projects/zhiyi/memory_faiss.index \ --metadata-path ~/projects/zhiyi/memory_metadata.json \ --dry-run # ─── 帮助 ──────────────────────────────────────────── help: @echo "织忆 MemoryWeave — Build & Deploy" @echo "" @echo "Usage:" @echo " make build 构建 Go daemon" @echo " make build-rust 构建 Rust sidecar" @echo " make build-cli 构建 CLI 工具" @echo " make version 显示版本" @echo " make install-all 一键安装全部(构建+CLI+Obsidian插件)" @echo " make docker-build 构建 Docker 镜像" @echo " make docker-push 推送 Docker 镜像" @echo " make deploy-compose 一键 Docker Compose 部署" @echo " make test 运行测试" @echo " make bench 性能基准" @echo " make eval 运行评估" @echo " make ci-eval CI/CD 自动评估 (含退化检测)" @echo " make health 健康检查" @echo " make deploy 部署 Go daemon(systemd 全局)" @echo " make clean 清理"