{"_id":"@aliyunpolar/polarmem0","name":"@aliyunpolar/polarmem0","dist-tags":{"latest":"0.1.0"},"versions":{"0.1.0":{"name":"@aliyunpolar/polarmem0","version":"0.1.0","description":"polarmem0 access layer: polarmem0 CLI (memory ops), one-shot setup installer for Qoder/QoderWork (hooks + SKILL), per-agent config.","license":"Apache-2.0","type":"module","bin":{"polarmem0":"dist/cli/main.js"},"main":"./dist/cli/main.js","engines":{"node":">=20"},"scripts":{"build":"tsup && node scripts/postbuild.mjs","test":"vitest run","test:watch":"vitest","lint":"biome check src tests scripts","lint:fix":"biome check --write src tests scripts","typecheck":"tsc --noEmit","prepublishOnly":"pnpm run build && pnpm run test"},"publishConfig":{"access":"public"},"keywords":["polarmem0","memory","qoder","qoderwork","hooks"],"devDependencies":{"@biomejs/biome":"^1.9.4","@types/node":"^22.10.0","tsup":"^8.3.5","typescript":"^5.7.2","vitest":"^2.1.8"},"_id":"@aliyunpolar/polarmem0@0.1.0","gitHead":"bc6f55ca10d8542509537c350e6a5e6d7359df3b","_nodeVersion":"22.22.2","_npmVersion":"10.9.7","dist":{"integrity":"sha512-iV8dCo4u7O3O6EGEbp4dSU5HjS1OKJ69ac8En9Vtt0X63HdjFrL8NJOhpicS577W+ihvoV++kuHf3eULfXeEzQ==","shasum":"e18ab8191860c8cc4761fc92d3a39055ca75b228","tarball":"https://registry.npmjs.org/@aliyunpolar/polarmem0/-/polarmem0-0.1.0.tgz","fileCount":11,"unpackedSize":62270,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIEQSpR9mAN/DuKNUH383jp4bwbQShCKbkK0ZF2TscPneAiBfPoJLaKwXbeszdJDDUA1hF1e6LU3wh5zLIeF18Tgm/A=="}]},"_npmUser":{"name":"liuchengshan","email":"liushanxian0719@gmail.com"},"directories":{},"maintainers":[{"name":"liuchengshan","email":"liushanxian0719@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/polarmem0_0.1.0_1785918660438_0.12300241952306812"},"_hasShrinkwrap":false}},"time":{"created":"2026-08-05T08:31:00.242Z","0.1.0":"2026-08-05T08:31:00.592Z","modified":"2026-08-05T08:31:00.869Z"},"maintainers":[{"name":"liuchengshan","email":"liushanxian0719@gmail.com"}],"description":"polarmem0 access layer: polarmem0 CLI (memory ops), one-shot setup installer for Qoder/QoderWork (hooks + SKILL), per-agent config.","keywords":["polarmem0","memory","qoder","qoderwork","hooks"],"license":"Apache-2.0","readme":"# @aliyunpolar/polarmem0\n\npolarmem0 记忆服务的统一接入层：一个 `polarmem0` CLI（记忆操作命令），一条 `setup` 命令完成 Qoder / QoderWork 的一键接入（配置写入、Hooks 注册、SKILL 安装、连通性校验）。\n\n| Agent | Hooks | Skill 安装路径 | 形态 |\n|---|---|---|---|\n| **qoder** | ✅ UserPromptSubmit + Stop + SessionStart | `~/.qoder/skills/polarmem0-memory/` | hooks 驱动（自动捕获/召回） |\n| **qoderwork** | ✅ UserPromptSubmit + Stop + SessionStart | `~/.qoderwork/skills/polarmem0-memory/` | hooks 驱动（自动捕获/召回） |\n\n配置与日志位于 `~/.polarmem0/`（`config.json` 按 agent 分节隔离）。\n\n## 安装与接入\n\n```sh\nnpm install -g @aliyunpolar/polarmem0\n\n# 一键接入（接入命令由交付文档/控制台预填生成，替换 <API_KEY> 与端点）\npolarmem0 setup --agent qoder --api-key <API_KEY> --base-url http://<IP>:<PORT>\npolarmem0 setup --agent qoderwork --api-key <API_KEY> --base-url http://<IP>:<PORT>\n\n# 验证\npolarmem0 status --agent qoder --json\n```\n\n安装成功后**重启 Qoder / QoderWork**（新开会话即可）使 hooks 生效。\n\n- `--base-url` 必传（首次）：polarmem0 为一客户一部署，无统一公网域名可内置。http/https 均支持；base_url 为 http 时 setup 会打印一行非阻断警告（公网环境建议 HTTPS）。\n- `--user-id` 可选，默认 `\"default\"`：API Key 已隔离部署（租户），user_id 仅作部署内的记忆分桶。多人共用同一部署时请为每人指定不同 `--user-id`。\n- 重跑 `polarmem0 setup --agent <a>` 可修复 hooks/skill（api-key/base-url 可省略，沿用存量配置）。\n\n## setup 做了什么\n\n1. 前置检查：Node ≥ 20、agent home 存在（`~/.qoder` 或 `~/.qoder-cn`；qoderwork 同理）\n2. 写配置：`~/.polarmem0/config.json` 的 `agents.<agent>` 分节\n3. 注册 Hooks 到 `~/.qoder{work}/settings.json`（修改前自动写 `settings.json.bak-polarmem0-<TS>` 备份，保留最近 5 份；条目带 `_polarmem0` 标记，卸载时精确剥离，**不触碰你自己添加的 hooks**）：\n\n| 触发 | Hook | 行为 |\n|---|---|---|\n| 用户提交提问 | `UserPromptSubmit` | 调 `POST /v2/memories/search` 召回相关记忆，以 `<recalled-memories>` 块注入上下文 |\n| 回合结束 | `Stop` | 读 transcript 切出当前轮，清洗后 `POST /v1/memories` 异步存储（session_id 作为 run_id） |\n| 会话开始 | `SessionStart` | 可选预热召回（`warmup_recall` 默认关闭） |\n\n4. 安装 SKILL 到 `~/.qoder{work}/skills/polarmem0-memory/`（教 agent 在用户显式说\"记住/查记忆\"时调 CLI）\n5. 连通性校验：`GET /v1/ping`（可达性）+ `GET /v1/db_info`（Key 有效性），配错当场报错\n\n所有 hooks 严格 **fail-open**：任何错误静默退出（exit 0），绝不干扰对话。逃生阀：给 agent 进程设置 `POLARMEM0_SKIP_HOOKS=TRUE` 可使所有 hook 入口立即退出。\n\n## CLI 命令\n\n```sh\npolarmem0 memory add \"<text>\" --agent=qoder [--no-infer]   # 存记忆（--no-infer 原文存储，跳过 LLM 事实抽取）\npolarmem0 memory search \"<query>\" --agent=qoder [--top-k=N] [--threshold=F]\npolarmem0 memory list --agent=qoder [--page=N] [--page-size=N]\npolarmem0 memory get <memory-id> --agent=qoder\npolarmem0 memory update <memory-id> --text=\"<new>\" --agent=qoder\npolarmem0 memory delete <memory-id> --agent=qoder\npolarmem0 memory delete --all --yes --agent=qoder          # 清空当前 user 桶（需 --yes 确认）\npolarmem0 ping --agent=qoder\npolarmem0 status --agent=qoder --json\n```\n\nAgent 选择：`--agent` 参数，否则 `POLARMEM0_AGENT` 环境变量。\n\n## 配置\n\n`~/.polarmem0/config.json`：\n\n```json\n{\n  \"version\": 1,\n  \"agents\": {\n    \"qoder\": {\n      \"api_key\": \"...\",\n      \"base_url\": \"http://<IP>:<PORT>\",\n      \"user_id\": \"default\",\n      \"auto_capture\": true,\n      \"auto_recall\": true,\n      \"warmup_recall\": false,\n      \"top_k\": 5,\n      \"threshold\": 0.4,\n      \"debug\": false\n    }\n  }\n}\n```\n\n| 字段 | 默认 | 含义 |\n|---|---|---|\n| `user_id` | `\"default\"` | 每次捕获/召回的记忆分桶键 |\n| `auto_capture` | `true` | 回合结束自动捕获记忆 |\n| `auto_recall` | `true` | 提问时自动召回记忆 |\n| `warmup_recall` | `false` | 会话开始时按 cwd 预热召回 |\n| `top_k` / `threshold` | `5` / `0.4` | 召回条数与相似度下限 |\n| `debug` | `false` | hook 详细日志（`~/.polarmem0/logs/polarmem0.log`） |\n\n环境变量覆盖（env 优先）：`POLARMEM0_AGENT` / `POLARMEM0_API_KEY` / `POLARMEM0_BASE_URL` / `POLARMEM0_USER_ID`；测试用 `POLARMEM0_HOME` 可重定向全部落盘路径。\n\n## 卸载\n\n> ⚠️ **顺序很重要**：先 `polarmem0 uninstall`，再 `npm uninstall -g`。反过来会留下指向已删除脚本的 hook 条目。\n\n```sh\npolarmem0 uninstall --agent qoder     # 单 agent：剥离 hooks（带备份）+ 删 skill + 删配置分节\npolarmem0 uninstall                   # 所有 agent\npolarmem0 uninstall --purge-config    # 同时删除 ~/.polarmem0/config.json\nnpm uninstall -g @aliyunpolar/polarmem0\n```\n\n## 开发\n\n```sh\npnpm install\npnpm run build        # tsup + 拷贝 skill 资产\npnpm run test         # vitest\npnpm run lint         # biome\npnpm run typecheck    # tsc --noEmit\n```\n\n老 glibc 开发机（如 CentOS 7）上 vitest 依赖的 rollup 原生二进制不可用，`pnpm-workspace.yaml` 已内置 wasm override，无需额外处理。\n\n## License\n\nApache-2.0\n","readmeFilename":"README.md","_rev":"1-b039976af7f62bb82c436a1a9d3972e8"}