Files
wehub-resource-sync 555e282cc4
pi-agent-plugin checks / lint (push) Has been cancelled
pi-agent-plugin checks / test (20) (push) Has been cancelled
pi-agent-plugin checks / test (22) (push) Has been cancelled
pi-agent-plugin checks / build (push) Has been cancelled
TypeScript SDK CI / check_changes (push) Has been cancelled
TypeScript SDK CI / changelog_check (push) Has been cancelled
ci / changelog_check (push) Has been cancelled
ci / check_changes (push) Has been cancelled
ci / build_mem0 (3.10) (push) Has been cancelled
ci / build_mem0 (3.11) (push) Has been cancelled
ci / build_mem0 (3.12) (push) Has been cancelled
CLI Node CI / lint (push) Has been cancelled
CLI Node CI / test (20) (push) Has been cancelled
CLI Node CI / test (22) (push) Has been cancelled
CLI Node CI / build (push) Has been cancelled
CLI Python CI / lint (push) Has been cancelled
CLI Python CI / test (3.10) (push) Has been cancelled
CLI Python CI / test (3.11) (push) Has been cancelled
CLI Python CI / test (3.12) (push) Has been cancelled
CLI Python CI / build (push) Has been cancelled
openclaw checks / lint (push) Has been cancelled
openclaw checks / test (20) (push) Has been cancelled
openclaw checks / test (22) (push) Has been cancelled
openclaw checks / build (push) Has been cancelled
opencode-plugin checks / build (push) Has been cancelled
TypeScript SDK CI / build_ts_sdk (20) (push) Has been cancelled
TypeScript SDK CI / build_ts_sdk (22) (push) Has been cancelled
TypeScript SDK CI / integration_ts_sdk (20) (push) Has been cancelled
TypeScript SDK CI / integration_ts_sdk (22) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:03:45 +08:00

176 lines
7.3 KiB
Makefile

# ============================================================================
# Agentic Memory Skills — OpenClaw Plugin Installer
# ============================================================================
#
# Usage:
# make install # Interactive — prompts for API key
# make install MEM0_API_KEY=m0-xxx # Non-interactive
# make uninstall # Revert to stock plugin
# make restart # Rebuild + restart gateway
# make status # Check everything is working
# make logs # Tail gateway logs filtered to mem0
# make clean # Full teardown
#
# ============================================================================
SHELL := /bin/bash
.PHONY: install uninstall restart status logs clean build check-deps configure help
# Defaults
MEM0_API_KEY ?=
MEM0_USER_ID ?= $(shell whoami)
OPENCLAW_CONFIG := $(HOME)/.openclaw/openclaw.json
PLUGIN_DIR := $(shell pwd)
help: ## Show this help
@echo ""
@echo " Agentic Memory Skills — OpenClaw Plugin"
@echo " ========================================"
@echo ""
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " \033[36m%-15s\033[0m %s\n", $$1, $$2}'
@echo ""
# ============================================================================
# Dependency checks
# ============================================================================
check-deps:
@echo "Checking dependencies..."
@command -v node >/dev/null 2>&1 || { echo "Error: Node.js is required. Install from https://nodejs.org"; exit 1; }
@NODE_MAJOR=$$(node -v | sed 's/v//' | cut -d. -f1); \
if [ "$$NODE_MAJOR" -lt 18 ]; then echo "Error: Node.js >= 18 required (found $$(node -v))"; exit 1; fi
@command -v npm >/dev/null 2>&1 || { echo "Error: npm is required"; exit 1; }
@if ! command -v openclaw >/dev/null 2>&1; then \
echo "OpenClaw not found. Installing..."; \
npm install -g openclaw || { echo "Error: Failed to install OpenClaw. Try: sudo npm install -g openclaw"; exit 1; }; \
echo "OpenClaw installed: $$(openclaw --version)"; \
else \
echo "OpenClaw: $$(openclaw --version 2>/dev/null || echo 'installed')"; \
fi
@echo "Node.js: $$(node -v)"
@echo "All dependencies OK."
# ============================================================================
# Build
# ============================================================================
build: ## Build the plugin from source
@echo "Installing npm dependencies..."
@npm install --silent 2>/dev/null
@echo "Building plugin..."
@npm run build --silent 2>/dev/null
@echo "Build OK: $$(ls -lh dist/index.js | awk '{print $$5}') ESM bundle"
# ============================================================================
# Install
# ============================================================================
install: check-deps build ## Full install — build, link, configure, restart
@# Remove existing plugin (suppress errors if not installed)
@echo "Removing existing openclaw-mem0 plugin (if any)..."
@echo "y" | openclaw plugins uninstall openclaw-mem0 >/dev/null 2>&1 || true
@# Link local build
@echo "Linking local plugin build..."
@openclaw plugins install "$(PLUGIN_DIR)" --link 2>&1 | grep -v "plugins.allow"
@# Configure AFTER link (link may overwrite config)
@$(MAKE) --no-print-directory configure
@# Restart gateway
@echo "Restarting gateway..."
@kill -9 $$(lsof -ti:18789) 2>/dev/null || true
@sleep 2
@openclaw gateway >/dev/null 2>&1 &
@sleep 4
@echo ""
@echo "============================================"
@echo " Installation complete!"
@echo "============================================"
@echo ""
@echo " Plugin: openclaw-mem0 (skills mode)"
@echo " User: $(MEM0_USER_ID)"
@echo " Web UI: http://127.0.0.1:18789"
@echo ""
@echo " Verify with: make status"
@echo " View logs: make logs"
@echo ""
# ============================================================================
# Configure — patch openclaw.json with required settings
# ============================================================================
configure:
@if [ -z "$(MEM0_API_KEY)" ]; then \
echo ""; \
echo " Enter your Mem0 API key (from https://app.mem0.ai/dashboard/api-keys):"; \
echo -n " > "; \
read -r key; \
if [ -z "$$key" ]; then echo "Error: API key is required."; exit 1; fi; \
MEM0_API_KEY="$$key" MEM0_USER_ID="$(MEM0_USER_ID)" python3 scripts/configure.py; \
else \
MEM0_API_KEY="$(MEM0_API_KEY)" MEM0_USER_ID="$(MEM0_USER_ID)" python3 scripts/configure.py; \
fi
# ============================================================================
# Status & Logs
# ============================================================================
status: ## Check plugin health and skills registration
@echo "Plugin health:"
@openclaw plugins doctor 2>&1 | grep -v "plugins.allow"
@echo ""
@echo "Skills:"
@openclaw skills list 2>&1 | grep -E "memory|Status|---" | head -10
@echo ""
@echo "Last gateway registration:"
@tail -50 /tmp/openclaw/openclaw-$$(date +%Y-%m-%d).log 2>/dev/null | grep "openclaw-mem0: registered" | tail -1 | grep -o '"1":"[^"]*"' || echo " No gateway log found. Is the gateway running?"
logs: ## Tail gateway logs (mem0 activity only)
@tail -f /tmp/openclaw/openclaw-$$(date +%Y-%m-%d).log 2>/dev/null | grep --line-buffered -o '"1":"[^"]*"' | grep --line-buffered -i "mem0\|skills-mode\|stored\|inject\|recall"
# ============================================================================
# Restart
# ============================================================================
restart: build ## Rebuild plugin and restart gateway
@echo "Restarting gateway..."
@kill -9 $$(lsof -ti:18789) 2>/dev/null || true
@sleep 2
@openclaw gateway >/dev/null 2>&1 &
@sleep 4
@echo "Gateway restarted. Verify: make status"
# ============================================================================
# Uninstall — revert to stock plugin
# ============================================================================
uninstall: ## Revert to stock openclaw-mem0 from npm
@echo "Uninstalling local plugin..."
@echo "y" | openclaw plugins uninstall openclaw-mem0 >/dev/null 2>&1 || true
@echo "Installing stock plugin from npm..."
@openclaw plugins install @mem0/openclaw-mem0 2>&1 | grep -v "plugins.allow"
@# Restore config backup if it exists
@if [ -f "$(OPENCLAW_CONFIG).pre-skills-backup" ]; then \
cp "$(OPENCLAW_CONFIG).pre-skills-backup" "$(OPENCLAW_CONFIG)"; \
echo "Restored config from backup."; \
else \
echo "Note: No config backup found. You may need to manually revert openclaw.json changes."; \
fi
@echo "Restarting gateway..."
@kill -9 $$(lsof -ti:18789) 2>/dev/null || true
@sleep 2
@openclaw gateway >/dev/null 2>&1 &
@sleep 4
@echo "Reverted to stock openclaw-mem0."
# ============================================================================
# Clean
# ============================================================================
clean: ## Full teardown — stop gateway, remove plugin, clean build
@echo "Stopping gateway..."
@kill -9 $$(lsof -ti:18789) 2>/dev/null || true
@echo "Removing plugin..."
@echo "y" | openclaw plugins uninstall openclaw-mem0 >/dev/null 2>&1 || true
@echo "Cleaning build artifacts..."
@rm -rf dist/ node_modules/
@echo "Clean complete."