MemPlumb 客户使用说明书
本说明书同时服务于客户和 AI 助手。客户可以按界面步骤完成操作;AI 助手应把本说明书当作执行契约,根据用户目标选择最短的安全路径,并用界面路径、 步骤、结果表和下一步完整回答。
适用版本是 v0.13.2 Preview。默认路径是 Windows x64 便携版、本机 SQLite
和中文 MemoryOps Console。生产共享部署、PostgreSQL、SDK、质量评审和发布门禁
在后续章节单独说明。
客户最快路径:直接开始五分钟首次体验。先下载并核对 Release,再由启动器自动打开带授权链接的 Console;完成首次闭环后再按需查看 AI 契约、SDK、质量和发布章节。
AI 必读执行契约
AI 助手读取本说明书后必须遵守以下规则:
- 先识别用户目标:首次体验、写入记忆、检查上下文、调查故障、质量评审、 发布验证、应用接入、备份,或导出/删除数据。
- 普通客户默认走 Console;只有研发、运维或自动化场景才优先给 CLI/API。
- 每次指导都必须提供:界面路径、需要填写的内容、预期结果、成功判据和失败分支。
- 不得索要、展示或让用户发送 Bearer Key、API Key、启动器状态文件、私钥、 数据库连接串、完整用户记忆或身份证明。
- 不得把文件哈希描述成发布者身份签名。
v0.13.2Windows 包是未签名 Preview;SHA-256 只能验证文件完整性。 - 不得根据截图或猜测宣称质量门禁通过。只能使用 Runtime 返回的
passed、fresh、stale、blocked、expired等实际状态。 - 不得把 SQLite 的便携检索描述成生产 ANN。生产 HNSW 需要 PostgreSQL、
pgvector、合格覆盖率和真实语义基准。 - 支持答复默认隐藏 Actor ID、Memory ID、Case ID、原始文本和评审证据; 只有用户明确需要且有权限时才显示最少必要内容。
- AI 无法直接看到用户当前界面时,不得声称已经点击或执行;应使用 “请打开”“请确认”“预期看到”等措辞。
- 除非缺少的信息会改变安全边界,否则不反复追问。默认从本机 Preview 的五分钟流程开始。
AI 对客户的标准回答结构:
当前目标
界面路径
可视化流程
操作步骤
结果判定
异常处理
下一步可视化流程必须同时给出文本箭头或表格,不能只依赖颜色或一张图片。
先选正确路径
flowchart LR
A["你现在要做什么?"] --> B{"目标"}
B -->|第一次体验| C["Windows Preview<br/>五分钟跑通"]
B -->|让 Agent 使用记忆| D["SDK / HTTP API<br/>写入 -> 上下文"]
B -->|调查记忆错误| E["管线 -> 质量<br/>证据与裁决"]
B -->|验证新策略| F["Memory Case -> Replay<br/>比较与门禁"]
B -->|准备生产发布| G["Cohort Plan -> 新鲜度<br/>Release Artifact"]
B -->|处理个人数据| H["导出 -> 备份边界<br/>彻底删除"]
| 你的目标 | 从哪里开始 | 完成标志 |
|---|---|---|
| 看产品是否能运行 | 双击 memplumb.exe | 总览显示 Runtime 和存储就绪 |
| 写入一条记忆 | 总览 -> 写入事件 | 事件完成,并产生 create、update、noop 或 reject 决定 |
| 查看 Agent 会收到什么 | 记忆 -> 上下文检查器 | 产生一个持久化 Context Run |
| 分析错误 | 管线 -> 事件/上下文详情 | 能看到写入阶段、候选、选择和排除证据 |
| 建立质量案例 | 质量 -> 写入裁决/评审 | 认证裁决被保存为受治理 Memory Case |
| 验证候选策略 | 评估 -> Replay Lab/Runs | Run 完成并显示真实门禁结果 |
| 检查能否发布 | 评估 -> Cohort Plans | 计划完成且新鲜度为 fresh |
| 接入业务 Agent | TypeScript/Python SDK 或 HTTP API | 写入和 Context 请求使用同一 Actor ID |
| 导出或删除用户数据 | CLI 的 export / purge | 得到导出文件或删除收据 |
五分钟首次体验
1. 下载并验证
从 MemPlumb v0.13.2 Release 下载 Windows x64 ZIP, 解压后在 PowerShell 中运行:
Get-FileHash .\memplumb.exe -Algorithm SHA256
Get-Content .\SHA256SUMSGet-FileHash 的值必须同时等于 SHA256SUMS 和 manifest.json 中记录的
SHA-256。任一处不一致都不要运行。
当前 EXE 未做 Authenticode 发布者签名。普通 Windows 电脑首次运行时可能出现 “Windows 已保护你的电脑”:
- 确认文件来自上面的正式 Release。
- 先完成 SHA-256 核对。
- 点击“更多信息”。
- 点击“仍要运行”。
如果电脑由企业策略、Smart App Control、WDAC 或 AppLocker 直接阻止,不要关闭 整机安全策略来绕过;应由 IT 批准,或改用受管部署方式。
2. 启动
双击 memplumb.exe,或在 PowerShell 中运行:
.\memplumb.exe它会启动或复用一个隐藏的本机 Runtime,并自动打开带一次性授权链接的中文/英文
Console。默认从 127.0.0.1:6066 开始寻找空闲端口;6066 被其他程序占用时会
尝试后续端口,不会结束不属于 MemPlumb 的进程。浏览器没有自动打开时,请使用
启动器显示的完整 URL。该 URL 会标记为单次使用并显示失效时间,默认 60 秒内
有效;过期后重新运行 EXE 获取新链接。不要手工拼接裸的 /console 地址,也不要
把带授权片段的 URL 发给其他人。
本地模式不需要安装 Node.js,也不需要启动 Docker。
3. 确认总览
打开“总览”,确认:
| 检查项 | 正常结果 | 异常时怎么做 |
|---|---|---|
| 连接 | 已连接 | 重新双击 EXE,让启动器生成新的单次连接入口 |
| Runtime 状态 | 就绪 | 运行 .\memplumb.exe doctor --json |
| 存储 | ready | 检查磁盘权限和日志 |
| 工作区 | default 或指定名称 | 确认没有连错测试/生产工作区 |
| 版本 | 0.13.2 | 重新核对下载版本和哈希 |

上图使用隔离的示例数据库和示例 Actor。你的计数、Build ID、时间和事件 ID 会不同。
4. 写入测试事件
界面路径:总览 -> 写入事件
空工作区会默认选择“结构化事实”,让第一次 Memory 写入结果更明确。填写:
| 字段 | 示例 | 说明 |
|---|---|---|
| Actor ID | demo_customer | 业务中的用户/主体编号;同一用户必须始终使用同一 ID |
| 事件类型 | conversation.message | 首次体验保留默认值 |
| 类型 | profile | Fact 的业务分类 |
| 键 | current_location | 同一 Actor 下稳定的记忆键 |
| 值 | 杭州 | 只使用测试数据,不要先录入真实个人数据 |
| 置信度 | 0.95 | 范围 0 到 1 |
| 敏感度 | 普通 | 凭据应标为 凭据,默认策略会拒绝 |
| 生效/过期 | 留空 | 仅在事实有明确有效期时填写 |
| 来源 | console | 高级字段,首次体验保持默认 |
| 来源可信度 | 1 | 高级字段,范围 0 到 1 |
自然语言模式适合检查已配置的提取器。若事件成功但没有产生决定或记忆,Console 会明确提示并提供“改用结构化事实”入口;这不是写入成功的充分证据。
提交后 Console 会自动打开 Event Trace,并显示“写入结果”:
- Event 是否已记录
- 接受的 Memory 数量
- 拒绝的候选数量
- 未改变的候选数量
- 是否没有创建或更新 Memory
结果摘要只保留计数、Actor ID 和 Event ID,不保存候选值。可以从摘要直接检查同一
Actor 的 Context、查看该 Actor 的 Memory;没有候选时还可以直接切换到结构化事实。
随后也可以从 管线 -> 事件 再次打开该记录。正常情况下状态变为“已完成”,详情会显示:
事件 -> 提取候选 -> 记忆策略 -> create/update/noop/reject -> 当前记忆写入决定的含义:
| 决定 | 含义 |
|---|---|
create | 新建当前记忆 |
update | 更新同一 (workspace, actor, kind, key) 的当前版本 |
noop | 已有状态无需改变 |
reject | 候选不满足策略或安全要求 |
“没有新记忆”不等于程序失败。先在事件详情查看提取结果和决定原因。
5. 检查记忆与上下文
界面路径:记忆 -> 记忆列表
输入刚才的 Actor ID,确认记忆的类型、键、值、置信度和更新时间。

然后打开:记忆 -> 上下文检查器
填写:
| 字段 | 建议值 |
|---|---|
| Actor ID | demo_customer |
| 查询 | 客户现在住在哪里? |
| Token 预算 | 1200 |
| 候选上限 | 12 |
候选上限最大为 50。点击“构建上下文运行”。这不是临时搜索,而是一个持久化
Context Run。
成功结果应包含:
context_id- 使用的 Context Policy
- 被选择和被排除的记忆
- 每条候选的分数和原因
- Token 预算与估算
- 检索后端、降级状态和 Replay State 可用性
如果没有选中 Memory,Console 会区分“没有候选”“候选未通过资格”和“符合资格但 受查询或预算影响未选中”,并提供查看 Actor Memory、写入结构化 Fact 和查看检索 证据的入口。若 Context 已创建但证据详情暂时加载失败,Context ID 和已有结果仍会 保留,可点击“重试获取证据”。
零选择 Context 仍是有效、可审计的 Context Run,但还没有完成首次 Memory 使用闭环。
确认“选中的记忆”大于 0,且组装后的 Context 包含刚写入的测试事实后,首次体验才
算成功。
首次体验到这里已经成功。你已经完成:
flowchart LR A["测试事件"] --> B["提取候选"] B --> C["记忆策略决定"] C --> D["当前记忆"] D --> E["上下文候选"] E --> F["预算内 Context"]
Console 五个工作区
| 工作区 | 主要用户 | 用来完成什么 |
|---|---|---|
| 总览 | 所有人 | 查看连接、身份、权限、Runtime、工作区计数和最近事件 |
| 记忆 | AI 应用工程师 | 搜索当前记忆,创建并检查 Context Run |
| 管线 | 平台/可靠性工程师 | 查看 Event 和 Context Run 的持久化证据与失败阶段 |
| 评估 | 评测/发布工程师 | 管理 Memory Case、Replay Run、Cohort Plan 和新鲜度 |
| 质量 | 评审者/审计者 | 处理队列、争议、写入裁决、审计和评审策略 |



移动端保留相同五个工作区和顺序,详情会使用完整视口:

日常工作流一:让 Agent 正确使用记忆
sequenceDiagram participant App as 业务应用 participant MP as MemPlumb participant Agent as AI Agent App->>MP: 写入 Event/Facts MP-->>App: Event + Decisions + Memory revisions App->>MP: Context(actor_id, query, budget) MP-->>App: Context + selected/excluded evidence App->>Agent: 任务 + 受预算约束的 Context Agent-->>App: 业务结果 App->>MP: Feedback/Outcome(可选)
操作原则:
- Actor ID 必须稳定。不要为同一用户每次随机生成新 ID。
- 优先提交结构化 Facts;自由文本提取的结果必须经过管线检查。
- 回答前按同一 Actor ID 请求 Context,并提供真实任务 Query。
- 只把返回的
context交给 Agent,不要自行拼接数据库中的全部记忆。 - 保留
context_id,用于反馈、Outcome、解释和质量复盘。 - 重试同一次写入时复用同一个 Idempotency Key;新的业务事件使用新 Key。
TypeScript/JavaScript 最小接入
以下 SDK 示例面向你自行启动或部署的 Runtime。6060 是开发命令 npm run dev
的默认端口;便携 EXE 会从 6066 起动态选择端口,并通过一次性浏览器授权连接,
不要把该浏览器凭据当作业务应用 API Key。生产环境应通过 MEMPLUMB_BASE_URL 和
受管 Secret 注入实际地址与密钥。
安装官方 Preview SDK:
npm install https://github.com/funnaz/memplumb-releases/releases/download/v0.13.2/memplumb-sdk-0.13.2.tgzimport { MemPlumbClient } from "@memplumb/sdk";
const memory = new MemPlumbClient({
baseUrl: process.env.MEMPLUMB_BASE_URL || "http://127.0.0.1:6060",
apiKey: process.env.MEMPLUMB_API_KEY,
});
const event = await memory.ingest(
{
actor_id: "user_123",
facts: [
{
kind: "preference",
key: "answer_style",
value: "concise",
confidence: 0.95,
},
],
},
{ idempotencyKey: "conversation-42-message-7" },
);
const context = await memory.context({
actor_id: "user_123",
query: "How should I answer?",
budget_tokens: 1200,
});
console.log(context.data.context);API Key 只能放入环境变量或受管 Secret,不得提交到仓库、浏览器代码或客户截图。
Python 最小接入
pip install https://github.com/funnaz/memplumb-releases/releases/download/v0.13.2/memplumb-0.13.2-py3-none-any.whlimport os
from memplumb import MemPlumbClient
with MemPlumbClient(
base_url=os.environ.get("MEMPLUMB_BASE_URL", "http://127.0.0.1:6060"),
api_key=os.environ["MEMPLUMB_API_KEY"],
) as memory:
memory.ingest(
{
"actor_id": "user_123",
"facts": [
{
"kind": "preference",
"key": "answer_style",
"value": "concise",
"confidence": 0.95,
}
],
},
idempotency_key="conversation-42-message-7",
)
context = memory.context(
actor_id="user_123",
query="How should I answer?",
budget_tokens=1200,
)
print(context["data"]["context"])生产服务应复用一个 SDK Client,而不是每个请求重新创建连接。
更完整的 OpenAI Agents/LangGraph 挂载点、Outcome 记录、首个 Memory Case
路径和安全边界见Agent 框架接入方案。该方案只定义
生命周期接入,不把 MemPlumb 当作 Agent 编排器;适配器失败时仍必须显示真实的
Context/Outcome 状态。注意:agentTurn(...) / agent_turn(...) 和
demo-agent 属于当前 source-only v0.14 迭代线,公开 v0.13.2 SDK/EXE
尚未包含它们;v0.13.2 请按文中的独立 ingest、context、recordOutcome
步骤执行。
如果业务暂时不需要把节点拆进自己的工作流,可直接使用 TypeScript
agentTurn(...) 或 Python agent_turn(...) helper。它按
ingest -> context -> agent -> outcome 执行,使用稳定 turnId/turn_id
派生两套独立幂等键;Context 失败会抛出带阶段信息的 AgentTurnError,不会
把空 Context 当作成功,也不会调用 Agent 回调。
生产环境应使用两个身份:业务 Agent Client 只持有 memory:read /
memory:write,受管 evaluator Client 持有 evaluation:write,并通过
outcomeRecorder / outcome_recorder 注入 helper。源码中的 demo-agent
只在本轮写入的 Memory 被本轮 Context 选中时报告演示成功;其 Outcome 永远是
unverified、demo_only,不能作为生产质量证据。
日常工作流二:调查一次记忆错误
从用户投诉或异常回答开始,按下面顺序调查:
业务请求/Context ID
-> 管线:Context Run
-> 候选、选择、排除、分数和预算
-> 上游 Event 与 Write Decision
-> 当前/历史 Memory revision
-> 质量裁决
-> Memory Case| 看到的问题 | 优先检查 |
|---|---|
| 应该记住却没记住 | Event 提取候选、Write Decision、策略拒绝原因 |
| 记住了错误内容 | 来源、置信度、当前版本、create/update 决定 |
| 有记忆但回答没用到 | Actor ID、Context Query、候选池、排除原因、Token 预算 |
| 用到了过期内容 | valid_from、expires_at、当前状态和版本 |
| 新策略表现变差 | 保存为 Memory Case,运行 baseline/candidate Replay |
| 无法解释某次回答 | 确认业务系统保存了 context_id 和相关请求 ID |
支持人员不应要求客户导出整个数据库。优先提供经过脱敏的:
- MemPlumb 版本和 Build ID
doctor --json结果- 发生时间和时区
- 工作区名称
- 脱敏后的 Event/Context ID
- 实际状态或稳定错误码
- 复现步骤
禁止发送 %USERPROFILE%\.memplumb\run\ 下的文件;其中包含可恢复的本地凭据。
日常工作流三:把故障变成质量证据
Retrieval 质量
- 在管线中打开目标 Context Run。
- 在质量工作区创建或完成受管 Retrieval 评审。
- 对候选的精确 Memory revision 标注正例、hard negative 或 ignore。
- 形成已认证的 canonical adjudication。
- 在 Context 详情点击“保存为 Memory Case”。
- 在
评估 -> Replay Lab选择同质 Case,比较候选 Context Policy。
写入质量
- 在 Event 详情定位 Write Decision。
- 使用 evaluator-bound 的
evaluation:write身份进入质量 -> 写入裁决。 - 填写期望动作:
create、update、noop或reject。 - 保存已认证裁决。
- 有
evaluation_execute权限时点击“保存为质量案例”。 - 在 Replay Lab 的“写入质量”模式比较 baseline 和 candidate Memory Policy。
评审者身份来自受管凭据,不能由浏览器请求体伪造。旧裁决不会被覆盖;修改会追加新版本。
日常工作流四:验证策略并准备发布
小规模研发验证
在 评估 -> Replay Lab 中选择不超过 200 个同质 Case:
- 选择 Retrieval、Write Counterfactual 或 Write Quality 模式。
- 编辑匹配类型的候选 Policy。
- 设置对应阈值。
- 创建持久化 Replay Run。
- 在 Runs 中查看覆盖率、指标、回归、逐 Case 分类和门禁。
不同范围不能混用指标:
| 范围 | 可以证明什么 | 不能证明什么 |
|---|---|---|
| Retrieval Replay | 捕获状态上的候选生成、评分、筛选和预算变化 | 历史物理 HNSW 遍历、提取和写入策略 |
| Write Counterfactual | 候选写入策略是否增加/降低风险 | 没有生产 Oracle 时的准确率 |
| Write Quality | 对已认证生产 Oracle 的写入动作质量 | 提取、最终状态归并和历史事务调度 |
完整生产写入质量
生产推荐路径:
flowchart LR A["认证 Write Adjudication"] --> B["memory-case-v6"] B --> C["Cohort Plan<br/>服务端选择完整人口"] C --> D["持久化分片 Replay"] D --> E["汇总门禁"] E --> F["新鲜度复查"] F --> G["Release Artifact v12"] G --> H["Canary / Rollback"]
Console 路径:
- 打开
评估 -> Cohort Plans。 - 输入 rubric 版本、候选 Memory Policy、阈值和分片大小。
- 创建计划。调用者不能手填 Case ID 或截止时间。
- 点击“继续执行”,直到所有分片完成。
- 查看总结果和“发布证据新鲜度”。
- 发布前点击“刷新新鲜度”。
- 把 Plan ID 交给受管 CLI/CI 创建 Release Artifact。
新鲜度状态:
| 状态 | 含义 | 是否可继续发布 |
|---|---|---|
fresh | 当前合格 Case 人口未变化,证据仍在年龄限制内 | 仅表示此门禁通过 |
stale | Case 人口有新增、移除或语义变化 | 否;创建新计划 |
blocked | 无法可靠构造当前合格人口 | 否;先解决冲突/证据问题 |
expired | 证据超过允许年龄 | 否;重新建立并执行计划 |
默认最大证据年龄为 7 天,即 604800 秒。fresh 不能替代其他质量、安全和部署门禁。
发布流水线示例:
.\memplumb.exe cohort-plan-check `
--plan rcp_... `
--maximum-age-seconds 604800 `
--json
.\memplumb.exe release-create `
--policy policies\candidate-memory.json `
--write-quality-cohort-plan-id rcp_... `
--write-quality-maximum-evidence-age-seconds 604800 `
--output release.jsonConsole 不会伪造发布通过,也不在浏览器里生成私钥或签名。
身份与权限
Console 以 GET /v1/session 返回的最终能力为准,不根据角色名称自行猜权限。
| 能力 | 允许的工作 |
|---|---|
memory_write | 写入 Event/Memory |
quality_work | 领取并提交评审工作 |
quality_resolve | 解决争议 |
quality_audit | 查看受保护审计证据 |
evaluation_read | 查看 Case、Run 和 Plan 摘要 |
evaluation_write | 以 evaluator-bound 身份追加裁决 |
evaluation_execute | 创建 Case、Run 和 Plan |
evaluation_export | 查看/导出受保护的完整 Case 内容 |
operations_overview | 查看精确工作区聚合 |
按钮不可见或禁用时,先确认当前身份能力,不要让用户反复刷新或共享管理员密钥。 本地单机身份适合试用;生产应按评审、解决、审计、评估和发布职责分离凭据。
数据、隐私和安全
默认 Windows 本地路径:
| 内容 | 路径 | 处理要求 |
|---|---|---|
| SQLite 数据库 | %USERPROFILE%\.memplumb\memplumb.db | 包含业务数据,纳入备份和访问控制 |
| 启动器状态 | %USERPROFILE%\.memplumb\run\ | 敏感,绝不上传或作为诊断附件 |
| Runtime 日志 | %USERPROFILE%\.memplumb\logs\ | 有界轮转;分享前仍需检查和脱敏 |
默认 SQLite 和本机 Console 不会自动把数据发送到 MemPlumb 云端。只有管理员明确配置 外部模型、Embedding Provider、Webhook、遥测出口、远程 PostgreSQL 或其他集成后, 相关字段才可能离开本机。
备份
.\memplumb.exe backup-create --output workspace.snapshot.json
.\memplumb.exe backup-verify --file workspace.snapshot.json --json重要环境必须实际做恢复演练。备份可能包含个人数据和质量证据,应加密存储并设置保留期。
Actor 导出和彻底删除
.\memplumb.exe export `
--actor user_123 `
--output user_123-export.json
.\memplumb.exe purge `
--actor user_123 `
--force `
--output deletion-receipt.jsonpurge 只删除当前 Store 中与 Actor 相连且需要清除的数据。外部备份、以前导出的文件、
对象存储和第三方系统必须由各自的保留策略同步删除。
启停和更新
停止本地 Runtime:
.\memplumb.exe console-stop停止服务不会删除数据库。不要在任务管理器里按端口猜测并结束进程;启动器会验证实例身份、 进程、工作区、数据库和凭据后,只停止它拥有的 Runtime。
更新版本前:
- 创建并验证备份。
- 停止当前 Runtime。
- 阅读目标版本 Release Notes。
- 下载新包并重新核对 SHA-256。
- 保留旧 EXE 作为短期可恢复副本,但不要混用两个版本同时写同一数据库。
- 启动新版本并运行
doctor --json和schema-status --json。 - 完成一次测试 Event 和 Context Run 后再恢复真实流量。
常见问题
| 现象 | 原因判断 | 处理 |
|---|---|---|
| Windows 提示未知发布者 | 当前 Preview 未做 Authenticode 签名 | 只从官方 Release 下载,先核对 SHA-256,再使用“更多信息 -> 仍要运行” |
| 企业电脑没有“仍要运行” | IT 策略或 Smart App Control 禁止绕过 | 联系 IT 或使用受管部署;不要关闭整机安全控制 |
| 双击后浏览器没打开 | 默认浏览器启动失败或 Runtime 仍在启动 | 再运行一次 EXE;随后检查 doctor --json 和日志 |
6066 已占用 | 端口被其他程序使用 | 启动器会自动尝试后续端口,无需结束其他程序 |
| Console 显示未连接 | 单次 bootstrap 已过期或会话被清除 | 重新通过 EXE 启动 Console,不要分享或手工复制别人的凭据 |
| Event 完成但没有 Memory | 提取无候选,或策略给出 noop/reject | 打开 Event 详情查看提取和决定;研发接入优先提交结构化 Facts |
| Context 为空 | Actor ID 不一致、记忆失效、策略排除或预算限制 | 检查 Actor、Memory 状态、候选/排除证据和 Context Policy |
| 没有质量/评估按钮 | 当前身份缺少最终能力 | 由管理员签发职责匹配的受管凭据 |
| Replay 失败 | Case、Policy、阈值或执行错误 | 查看 Run 的稳定错误、覆盖率和逐 Case 结果,不要只看总分 |
Plan 是 stale | 当前合格 Case 人口已经变化 | 建立覆盖当前人口的新 Plan |
Plan 是 expired | 证据年龄超过限制 | 重新建立并执行 Plan |
| SQLite 语义索引不可用 | SQLite 没有生产 ANN 后端 | 本地使用 portable postings;生产 ANN 配置 PostgreSQL + pgvector |
| 杀毒软件判定恶意 | 不能仅按 SmartScreen 信誉警告处理 | 停止运行,核对来源/哈希并提交样本分析;不要盲目加入白名单 |
AI 给客户返回结果的模板
AI 在指导或解释 MemPlumb 时,应使用下面的完整格式:
### 当前目标
用一句话说明用户要完成的结果。
### 界面路径
`总览 -> 写入事件 -> 管线 -> 事件详情`
### 可视化流程
输入 -> MemPlumb 处理 -> 可验证结果 -> 下一步
### 操作步骤
1. 明确按钮、字段和值。
2. 说明提交后在哪里查看结果。
3. 给出成功判据。
### 结果判定
| 检查项 | 实际状态 | 含义 |
| ------- | ------------------ | ------------ |
| Runtime | 用户看到的真实状态 | 是否可以继续 |
### 异常处理
仅列与当前状态匹配的分支,不让用户关闭安全控制或发送秘密。
### 下一步
只给一个最合理的后续动作。AI 解释结果时必须区分:
- 观察到的事实:Runtime 返回的状态、ID、计数、Policy 和错误码。
- 推断:根据证据提出的可能原因,必须标为“可能”。
- 建议操作:用户尚未执行的下一步,不能描述为已完成。
完成检查表
本地试用完成:
- 从官方 Release 下载并核对 SHA-256。
- Console 显示已连接,Runtime 和存储就绪。
- 测试 Event 完成。
- 能在管线中解释 Write Decision。
- 能按同一 Actor ID 找到当前 Memory。
- 能创建 Context Run 并看到选择/排除证据。
- 知道如何安全停止 Runtime。
生产接入前完成:
- 测试、预生产和生产使用不同工作区/数据库/凭据。
- API Key 只存于 Secret 管理系统。
- 明确所有外部模型、Embedding、Webhook 和遥测数据出口。
- PostgreSQL 备份、恢复和迁移流程经过演练。
- 评审、解决、审计和发布职责已分离。
- 真实 Memory Case 和 Replay 门禁已建立。
- 发布证据新鲜度由 CI 再次检查。
- Windows 面向大众或企业分发前解决可信签名/受管分发问题。