# Magpie PowerContext：独立服务集成实验

本文配套实验使用真实 Magpie、PowerContext Server 和 SQLite，生成模型及上游回答使用确定性本地 HTTP 夹具。它验证自动 Source 捕获、后台提炼、Artifact 来源引用、服务与网关重启后的新会话召回，以及无关 Scope 隔离。不验证真实模型质量、真实客户端界面、服务商 prompt cache 或生产性能。

## 依赖与隔离

- Bun。本次记录使用 1.4.3。
- uv，能够下载并运行 Python 3.12 与 `powercontext[cli,server]==1.3.0`。
- Magpie 可执行文件。本次记录使用 0.1.2700。
- 社区插件仓库的 `packages/powercontext/`。本次对应提交 `1a05a77431c5d6c64a43c3a80a2cc2562048e666` 的 0.2.1，脚本会记录 hook 文件 SHA-256。

脚本创建临时 HOME、独立监听端口和临时数据库，不使用日常 Magpie 配置或个人记忆库。成功后停止本次启动的进程并清理临时目录；失败保留该次目录便于诊断。不要把失败目录中的鉴权信息或完整日志公开。

## 运行

下载 `extraction.mjs`，检出 [magpie-community/plugins](https://github.com/magpie-community/plugins)，设置插件绝对路径后运行：

```sh
export POWERCONTEXT_PLUGIN_DIR="/absolute/path/to/plugins/packages/powercontext"
bun "extraction.mjs" \
  --magpie "/absolute/path/to/magpie" \
  --report "result.json"
```

`--report` 会写入该次新结果。省略 `--magpie` 时直接调用发布插件的 hook，此模式不能声称验证了真实网关。使用 mise 等工具管理依赖时，可设置 `POWERCONTEXT_UV` 为 uv 可执行文件的绝对路径。

若 uv 依赖缓存损坏，指定新的缓存目录，不删除共享缓存：

```sh
export POWERCONTEXT_UV_CACHE="/absolute/path/to/fresh-cache"
```

本实验把 `idleCaptureMs` 调整为 1000 毫秒，把 Memory 调度周期调整为一秒以缩短等待；这不是插件默认配置。普通插件的空闲捕获默认为十分钟，后台调度由独立服务管理。

`--generation-env /absolute/path/to/private-server.env` 可切换服务端生成模型，但默认发布结果使用确定性夹具。真实生成模型可能收费，且结果与模型质量有关；该参数只影响独立服务的生成模型，客户端上游回答仍是夹具。

## 通过条件

1. 初始 Scope 没有 Source 和 Memory。
2. 插件自动存回用户与助手两条消息，移除网关注入参考块。
3. 后台处理生成 Memory，其 Artifact revision 引用该 Source。
4. 重启独立 Magpie 和 PowerContext，记忆仍可读取。
5. 新会话只发送一个问题；模型请求获得含随机代号的参考块，没有携带旧会话提示或回复。
6. 无关 Scope 无法召回该代号。

不会调用记忆 remember 或 flush 接口预置答案、强制提炼。脚本断言失败会非零退出；只有所有检查通过后才写报告。

## 文件

- `extraction.mjs`：可复现实验，基于作者原有的独立服务验收脚本整理。
- `result.json`：文章对应的实际运行记录。随机代号与本次临时服务的标识可以公开，不含真实服务凭据。

PowerContext 1.3.0 是此实验的历史协议固定版本，不等于最新版本推荐。换用其他版本时应重新核对 API 与验收脚本，不能沿用本次通过结论。
