跳到主要内容

Memory

turing-cli memory 是 Agent Memory 的本地运行通道。最低支持版本为 0.3.0。

首次安装​

先准备两样东西:

  1. 个人 API Key —— 在 Turing 门户的 API 密钥管理中创建,密钥原文只展示一次。它是你自己的个人密钥,与项目密钥、root key 相互独立。
  2. turing-agent-memory.json —— 按下面的模板写一份,api_base 指向目标环境的 API。省略 space_id 使用默认个人记忆;填写 ID 使用自己有权访问的指定 Space。

然后运行:

turing-cli memory login
turing-cli memory install --config ~/Downloads/turing-agent-memory.json
turing-cli memory doctor
  • login 通过交互式终端读取并以仅当前用户可读的权限保存 API Key。
  • install 只在本地校验和保存不含秘密的配置,并安装统一 Portable Skill,不调用默认 Space 准备接口。
  • doctor 检查配置、鉴权、Space、Context、Search 和最低版本;省略 space_id 时可能创建默认 Space,但不写入 Event。

使用默认 Personal Space 的最小配置:

{"schema_version":1,"api_base":"https://<api-base>/api/v1"}

首次运行 doctor、recall 或 remember 时,CLI 通过 POST /api/v1/ltm/personal-space:prepare 创建或复用当前 Portal 用户在该环境的默认 Space,并把 ID 保存到本地配置。其他 Agent 使用该 ID 即可读写同一份记忆。默认 Space 删除后不会自动重建,之后的默认准备会返回 personal_space_binding_conflict,恢复方式见下方故障说明。

使用自定义个人 Space 或 client 范围内的 Space,显式填写 space_id:

{"schema_version":1,"api_base":"https://<api-base>/api/v1","space_id":"ltmspace_..."}

显式 ID 会跳过默认准备;创建或选择自定义 Space 不会替换默认绑定。非 Portal client 需要显式 ID。API Key 决定 client、environment 和访问权限;旧配置中的 client、environment 字段仍可读取,但不用于切换身份或环境。未知字段仍会被拒绝。

安装与绑定故障​

错误含义与恢复路径
personal_space_binding_conflict默认准备返回 HTTP 409 / code 1750。携带 trace ID 联系平台负责人检查归属或删除状态;也可创建或选择自己有权访问的另一个 Space,显式配置它的 ID。该选择不会修复或替换原默认绑定。
configuration_write_failed本地配置无法保存。检查 TURING_MEMORY_CONFIG_PATH 是否指向文件,以及目标目录是否可写,再重试安装。

两类错误属于不同步骤:本地 install 失败不能直接归因于后端默认绑定冲突。

本地文件​

默认配置和凭据分别保存为 ~/.turing-cli/memory.json 与 ~/.turing-cli/memory-credentials.json。同一份 Skill 会安装到以下目录:

  • ~/.claude/skills/turing-memory/SKILL.md
  • ~/.codex/skills/turing-memory/SKILL.md
  • ~/.codebuddy/skills/turing-memory/SKILL.md
  • ~/.openclaw/skills/turing-memory/SKILL.md
  • ~/.agents/skills/turing-memory/SKILL.md

可重复使用 --skill-dir <dir> 增加其他兼容目录;它只改变安装位置,不改变能力。

不要把秘密放入命令参数

不要把 API Key 放在 argv、该配置文件、Skill 或 Agent prompt 中。recall 和 remember 只从标准输入读取 JSON。

Recall​

turing-cli memory recall <<'JSON'
{"schema_version":1,"query":"哪些长期决策与当前任务相关?","scope":{"kind":"global"}}
JSON

项目提示不是 ACL 或硬过滤。使用用户已经确定的 label,并在查询中保留该 label:

{
"schema_version": 1,
"query": "在项目 turing-backend 中,有哪些长期约束适用于当前任务?",
"scope": { "kind": "project", "label": "turing-backend" }
}

CLI 会并发执行恰好一次公共 Context 和一次公共 Search。单次 Search 不重试,因此一次 Recall 最多触发一次 query embedding 和一次新 KNN。某一读取分支发生瞬时故障时可返回 degraded;鉴权、权限或绑定错误会明确失败。

Remember​

turing-cli memory remember <<'JSON'
{"schema_version":1,"capsule":"用户希望实施计划简洁,并明确写出兼容边界。","scope":{"kind":"global"}}
JSON

Remember 只提交一个用户确认后的紧凑 capsule。CLI 为操作生成 UUID,并以相同序列化 bytes 和 idempotency key 重试公共 Event 写入;如果最终是否接受无法确定,错误响应会带回 operation_id,不得换新 ID 盲目重放。

机器协议​

  • 标准输入必须是一个严格 JSON 对象;未知字段、尾随 JSON 和不支持的 schema_version 会被拒绝。
  • query、capsule 最多 4096 个 Unicode 字符;项目 label 最多 128 个字符。
  • recall 和 remember 的标准输出始终只有一个 JSON envelope,便于 Skill 安全解析。
  • Recall evidence 最多 4096 UTF-8 bytes;source_record_ids 只包含实际进入 evidence 的记录。
  • 日常 Recall/Remember 不读取 release manifest;schema 不兼容时 fail fast。

成功 envelope 只包含 data,失败 envelope 只包含 error。v1 Recall 输出为:

{"schema_version":1,"status":"ok","data":{"read_status":"used","evidence":"<bounded evidence>","evidence_bytes":123,"source_record_ids":["ltmmem_..."],"truncated":false,"warnings":[]}}

read_status 只能是 used、empty 或 degraded。v1 Remember 输出为:

{"schema_version":1,"status":"ok","data":{"acceptance_status":"accepted","event_id":"memevent_...","operation_id":"<UUIDv4>"}}

accepted 只表示 Event 已被接收;记忆由后台异步派生,完成后才能被 Recall 读到。

Doctor 的 data.overall_status 为 ready 或 degraded;checks 按 configuration、authentication、release_minimum、binding、context、search 排序,每项 status 为 pass、warn 或 fail。

{"schema_version":1,"status":"ok","data":{"overall_status":"ready","cli_version":"0.3.0","supported_schema_versions":[1],"checks":[{"name":"configuration","status":"pass"}]}}

失败时进程返回非零状态;acceptance_unknown 会保留原操作 ID,调用方不得自动生成新 ID 重放:

{"schema_version":1,"status":"error","error":{"code":"acceptance_unknown","message":"Event acceptance is unknown; do not automatically retry or create a new operation","trace_id":"<when available>","operation_id":"<UUIDv4>"}}

Agent 的触发和记忆边界见 Agent Memory。