# ai-memory 跨 Agent 交接：保存未完成工作，让下一位接手且只领取一次

## 执行范围

已运行 ai-memory 3.1.1 原生MCP：首次claimed、重复none_pending、其他项目拒绝；未启动AI模型会话。

## 输入与目标

虚构仓库任务：已完成解析、尚缺两个失败测试的handoff

交付：原生交接记录、唯一领取者与接续任务结果

## 运行

在 reference 目录执行；先按文件 requirements.txt / package.json 或原生工具文档安装依赖。浏览器练习需 `npx playwright install chromium`；也可设置 `PLAYWRIGHT_EXECUTABLE_PATH` 为自己的 Chrome 路径。

```sh
AI_MEMORY_BIN="<ai-memory binary>" python handoff.py
```

## 目录

- fixtures：作者原创输入，不包含用户真实资料。
- starter：读者待完成任务。
- reference：作者完成参考。
- results：作者实际运行所得或明确标注的待运行输入/预期合同。

## 七步

1. **写清交接状态**

输入区分已完成CSV解析、未完成引号换行和禁止改共享入口。只写“继续上一个任务”无法帮助下一位核验。

2. **指定双重作用域**

每个调用同时发送workspace和project。先建立原创lesson/orchard作用域，不借用真实团队记忆。

3. **创建类型化交接**

调用memory_handoff_begin，保存实际返回handoff_id。summary与next_steps分别说明状态和下一步动作。

4. **准确领取一次**

memory_handoff_accept携带同一作用域与handoff_id。实际首次返回claimed，接手人先读next_steps再工作。

5. **检查重复领取**

原样再调用一次。真实返回none_pending，不能把HTTP200误判成又领到了一份交接。

6. **验证错域拒绝**

从other项目尝试领取同一个ID。原生JSON-RPC返回项目不存在，调用方需检查error与isError，而不只看HTTP状态。

7. **封存交接记录**

保存begin/accept/again/wrong-scope四路响应和原始任务。本文验证原生协议，不宣称另一个Agent已自动完成后续代码。

## 来源

- https://raw.githubusercontent.com/akitaonrails/ai-memory/main/docs/programmatic-memory.md


## 原生工具与边界补充

安装官方ai-memory CLI（作者实测3.1.1），设置AI_MEMORY_BIN；脚本只在reference/runtime建立本题loopback临时服务并在finally退出。运行目录、SQLite和Git内部文件不会随包分发。
