mcpField
E
eve-agent-memory

eve-agent-memory

github.com/incept5Agent 工作流0307 次安装17 周前更新
代码仓库

关于 eve-agent-memory

eve-agent-memory 是一项 Eve Horizon 技能,介绍如何利用不同时间尺度的存储构建 Agent 记忆,帮助团队选择跨任务和项目保留、检索及共享上下文的方式。

主要功能

  1. 01按记忆需求选择存储方式
  2. 02支持临时文件和带 TTL 的 KV 状态
  3. 03通过附件和线程保存任务结果
  4. 04存储版本化组织知识
  5. 05跨记忆及相关来源搜索

适用场景

  1. 01在父子任务间传递发现
  2. 02让共享知识跨项目保留
  3. 03用带过期时间的 KV 跟踪工作流状态
  4. 04将有价值的讨论整理为可搜索记忆

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/incept5/eve-skillpacks --skill eve-agent-memory

安装后在 Claude Code 中输入/eve-agent-memory确认已加载。

附带文件references/storage-primitives.md

详细介绍

Eve Agent Memory

Eve Horizon 上的 Agent 没有内置的“记忆”原语,但平台提供了涵盖各种时间尺度的存储系统。本技能将介绍如何将它们组合起来,为能够学习、记忆和分享的 Agent 构建连贯的记忆。

记忆问题

每个 Agent 开始时都是全新的。如果没有经过深思熟虑的记忆设计,Agent 会:

  • 在每项任务中重复发现相同的事实。
  • 在任务结束时丢失上下文。
  • 无法与同级 Agent 分享学到的知识。
  • 累积没有过期时间的陈旧信息。

要解决这个问题,请将要记住的内容映射到存储位置,并针对不同的时间尺度使用合适的原语。

按时间尺度划分的存储原语

短期(单项任务内)

工作区文件——任务执行期间可用的 git 仓库检出内容。

# Workspace is at $EVE_REPO_PATH
# Write working state to .eve/ (gitignored by convention)
echo '{"findings": [...]}' > .eve/agent-scratch.json

# Workspace modes control sharing:
#   job       — fresh checkout per job (default)
#   session   — shared across jobs in a session
#   isolated  — no git state, pure scratch
eve job create --workspace-mode session --workspace-key "auth-sprint"

用途:临时笔记、中间结果、协作收件箱文件。其设计本身就是临时的——除非提交到 git 或保存到其他位置,否则工作区状态不会在任务结束后保留。

协作收件箱——.eve/coordination-inbox.md 会在任务开始时根据协作线程中的消息自动生成。读取它即可了解同级 Agent 的状态,无需调用 API。

Agent KV Store——支持设置可选 TTL 的轻量级运行状态。用途:功能标记、计数器、Agent 状态机、去重键。按命名空间分区。

# Set a KV value with TTL
eve kv set --org $ORG_ID --agent $AGENT_SLUG --key "pr-123-status" --value '{"phase":"review"}' --namespace workflow --ttl 86400

# Get a KV value
eve kv get --org $ORG_ID --agent $AGENT_SLUG --key "pr-123-status" --namespace workflow

# List keys in a namespace
eve kv list --org $ORG_ID --agent $AGENT_SLUG --namespace workflow

# Batch get multiple keys
eve kv mget --org $ORG_ID --agent $AGENT_SLUG --keys "pr-123-status,pr-456-status" --namespace workflow

# Delete a key
eve kv delete --org $ORG_ID --agent $AGENT_SLUG --key "pr-123-status" --namespace workflow
中期(项目内的多个任务之间)

任务附件——附加到任意任务的命名键值对。任务完成后仍会保留。

# Store findings
eve job attach $EVE_JOB_ID --name findings.json --content '{"patterns": [...]}'
eve job attach $EVE_JOB_ID --name summary.md --file ./analysis-summary.md

# Retrieve from any job (including parent/child)
eve job attachment $PARENT_JOB_ID findings.json --out ./prior-findings.json
eve job attachments $JOB_ID  # list all

用途:任务输出、决策记录、分析结果。附件与特定任务关联,因此可通过任务 ID 检索。适合在父任务和子任务之间传递结构化数据。

线程——跨会话保持连续性的消息序列。

# Project threads maintain chat context
eve thread messages $THREAD_ID --since 1h

# Coordination threads connect parent/child agents
eve thread post $COORD_THREAD_ID --body '{"kind":"update","body":"Found 3 auth issues"}'
eve thread follow $COORD_THREAD_ID  # poll for sibling updates

用途:Agent 间通信、持续上下文、协作。线程摘要可提供压缩后的历史记录。团队分派任务时会自动创建协作线程(coord:job:{parent_job_id})。

线程提炼——将线程对话转换为记忆文档或组织文档。用途:将有价值的讨论成果保存为可搜索的知识。

eve thread distill $THREAD_ID --org $ORG_ID --agent reviewer --category learnings --key "auth-discussion-findings"

资源引用——指向组织文档的带版本指针,会挂载到任务工作区中。

eve job create \
  --description "Review the approved plan" \
  --resource-refs='[{"uri":"org_docs:/pm/features/FEAT-123.md@v3","label":"Plan","mount_path":"pm/plan.md"}]'

用途:将特定版本的文档固定为任务输入。引用的文档会在指定的挂载路径中加载到工作区。事件会跟踪加载成功或失败的情况。

长期(跨项目、持久)

组织文档存储 — 组织范围内的版本化文档。

# Store knowledge
eve docs write --org $ORG_ID --path /agents/learnings/auth-patterns.md --file ./auth-patterns.md

# Retrieve
eve docs read --org $ORG_ID --path /agents/learnings/auth-patterns.md
eve docs list --org $ORG_ID --prefix /agents/learnings/

# Search
eve docs search --org $ORG_ID --query "authentication retry"

适用于:精选知识、决策记录、习得的模式。支持版本控制(每次更新都会创建一个新版本)。会在事件主干上发出 system.doc.created/updated/deleted 事件。最适合经过审阅、完善并共享的知识。

Agent 记忆命名空间 — 按 Agent 范围的路径约定,以组织文档的形式存储精选知识。类别:learnings、decisions、runbooks、context、conventions。支持置信度分数、标签、审阅日期和过期时间。适用于:积累的专业知识、决策记录、操作手册。

# Store a memory entry
eve memory set --org $ORG_ID --agent reviewer --category learnings --key "auth-retry-patterns" \
  --content "Always use exponential backoff..." --confidence 0.9 --tags "auth,reliability" --review-in 30d

# Get a memory entry
eve memory get --org $ORG_ID --agent reviewer --key "auth-retry-patterns" --category learnings

# List entries
eve memory list --org $ORG_ID --agent reviewer --category learnings --limit 20

# Delete an entry
eve memory delete --org $ORG_ID --agent reviewer --category learnings --key "auth-retry-patterns"

# Search across memory (all agents or specific)
eve memory search --org $ORG_ID --query "auth retry patterns" --agent reviewer --limit 10

命名空间约定:/agents/{slug}/memory/{category}/{key}.md 或 /agents/shared/memory/...

组织文件系统 — 每个组织共享的文件存储,会挂载到 Agent 工作区中的 .org/,并同步到本地计算机。

# Agents access .org/ directly in their workspace (all execution paths)
ls .org/                                    # browse org files
cat .org/shared/runbook.md                  # read shared knowledge
echo "new finding" >> .org/agents/reviewer/notes.md  # write agent-scoped files

# Developers sync to local machines
eve fs sync init --org $ORG_ID --local ~/Eve/acme --mode two-way
eve fs sync status --org $ORG_ID
eve fs sync logs --org $ORG_ID --follow

适用于:大型知识库、设计素材、文档目录树。无论执行路径是 agent-runtime 还是 worker,Agent 都能在工作区中看到 .org/。默认以 Markdown 为主。由事件驱动的通知(file.created/updated/deleted)。最适合以文件树形式存在,且适合 Agent 和人类共同编辑的知识。

技能和技能包 — 封装为可复用形式的提炼模式。

适用于:将反复出现的工作流和来之不易的知识编写为可复用的指令。当 Agent 发现值得保留的模式时,将其提炼为一项技能(参见 eve-skill-distillation)。技能是保真度最高的长期记忆形式——它们不仅存储信息,还会教会你如何使用这些信息。

托管数据库 — 环境范围内的 Postgres 实例,Agent 可通过 SQL 访问。

eve db sql --env $ENV --sql "SELECT key, value FROM agent_memory WHERE agent_id = 'reviewer' AND expires_at > NOW()"
eve db sql --env $ENV --sql "INSERT INTO agent_memory (agent_id, key, value) VALUES ('reviewer', 'last_review', '...')" --write

适用于:结构化查询、关系数据,以及任何适合使用 SQL 的场景。需要通过迁移设置架构。使用 eve db rls init --with-groups 创建访问受控的 Agent 记忆表。

共享(Agent 之间的协作)

组织线程 — 组织范围内的消息序列,用于跨项目协作。

eve thread list --org $ORG_ID
eve thread post $ORG_THREAD_ID --body '{"kind":"directive","body":"All agents: use new auth pattern"}'

事件主干 — 用于响应式工作流的发布/订阅事件总线。

eve event emit --type=agent.memory.updated --source=app --payload '{"agent":"reviewer","key":"patterns"}'
eve event list --type agent.memory.*

适用于:广播知识更新,以及在记忆发生变化时触发响应式工作流。

统一搜索 — 通过一次查询搜索记忆、文档、线程、附件和事件。适用于:开始工作前查找相关的已有知识。

eve search --org $ORG_ID --query "auth retry patterns" --sources memory,docs,threads --limit 10 --agent reviewer

记忆模式

模式 1:任务范围内的临时存储

最简单的模式。在执行期间将工作状态写入工作区文件。任务结束后不会保留任何内容。

Job starts → read inputs → write .eve/scratch.json → process → complete

适用场景:不需要记忆的单任务。

模式 2:父子知识传递

通过附件和线程,在编排器与工作进程之间传递知识。

Parent creates children with resource-refs →
Children execute, attach findings →
Parent resumes, reads child attachments →
Parent synthesizes into final output
# Child stores its findings
eve job attach $EVE_JOB_ID --name findings.json --content "$FINDINGS"

# Parent reads child findings on resume
for child_id in $CHILD_IDS; do
  eve job attachment $child_id findings.json --out ./child-${child_id}.json
done

适用场景:经过编排的工作,其中子任务发现的信息是父任务所需的。

模式 3:组织知识库

构建可持久保存、可搜索的知识,使其跨项目和时间保留。

Agent discovers pattern →
Check if existing doc covers it (eve docs search) →
  If yes: update with new information (eve docs write)
  If no: create new document (eve docs write) →
Emit event for other agents (eve event emit)

由 Agent 维护的文档命名空间约定:

/agents/{agent-slug}/learnings/     — patterns and discoveries
/agents/{agent-slug}/decisions/     — decision records with rationale
/agents/{agent-slug}/runbooks/      — operational procedures
/agents/shared/                     — cross-agent shared knowledge

适用场景:随时间不断积累,且应供组织中的任何 Agent 使用的知识。

模式 4:记忆增强型任务启动

组合使用基础组件,在每项任务开始时为 Agent 提供相关上下文。

Job starts →
Read coordination inbox (.eve/coordination-inbox.md) →
Query org docs for relevant prior knowledge (eve docs search) →
Check parent/sibling attachments for recent findings →
Proceed with enriched context
# Startup sequence
cat .eve/coordination-inbox.md 2>/dev/null  # sibling context
ls .org/ 2>/dev/null                         # org filesystem (shared files)
eve docs search --org $ORG_ID --query "$JOB_DESCRIPTION_KEYWORDS"  # prior knowledge
eve job attachments $PARENT_JOB_ID  # parent context

适用场景:任何能从记住此前发生的事情中获益的 Agent。

模式 5:先搜索,再写入

创建新文档前先搜索已有知识。

eve search --org $ORG_ID --query "auth retry patterns" --sources memory,docs →
  If relevant result exists: read and update it
  If no result: create new memory doc

适用场景:任何会创建知识文档的 Agent。可避免重复。

模式 6:KV 状态机

使用 KV 存储跟踪多步骤 Agent 工作流。

eve kv set --org $ORG_ID --agent reviewer --namespace workflow --key "pr-123" --value '{"phase":"review","started":"..."}' --ttl 86400

适用场景:跟踪多阶段任务中的逐步进度,状态需要在短暂中断后保留,但无需永久保存。

模式 7:从线程到知识的流程

将有价值的线程对话提炼为可搜索的记忆。

eve thread distill $THREAD_ID --org $ORG_ID --agent reviewer --category learnings --key "auth-discussion-findings"

适用场景:线程产生了值得在对话结束后继续保留的知识。

选择合适的基础组件

问题答案 → 基础组件
只需要在当前任务期间使用?Workspace files
需要带 TTL 的轻量状态?Agent KV Store
需要向父级/子级传递数据?Job attachments
需要滚动保留对话上下文?Threads
需要将对话提炼为知识?Thread distillation → Agent Memory
需要经过整理和分类的 Agent 知识?Agent Memory Namespaces
需要有版本控制且可搜索的文档?Org Document Store
需要在组织内的多个 Agent 之间共享文件?Org Filesystem(.org/ 挂载)
需要与本地编辑同步的文件树?Org Filesystem(CLI sync)
需要应用范围内的二进制/对象存储?Object Store(manifest)
需要结构化查询(SQL)?Managed database
需要封装可复用的工作流?Skills
需要响应式通知?Event spine
需要跨所有内容进行搜索?Unified Search

访问控制

存储基础组件遵循 Eve 的访问模型:

  • Secrets:按作用域解析(项目 → 用户 → 组织 → 系统)。切勿在 secrets 中存储记忆。
  • Org docs:需要组织成员身份。需要精细控制时,请使用访问组。
  • Database:使用带有组感知策略的 RLS,实现多 Agent 隔离。
  • Threads:限定在项目或组织范围内。任务令牌可授予对协调线程的访问权限。
  • Filesystem:组织级权限,可通过访问组设置可选的路径 ACL。
# Check agent's effective access
eve access can --resource orgdocs:/agents/shared/ --action read
eve access memberships --org $ORG_ID

反模式

  • 将所有内容都存储在工作区文件中 — 任务结束后文件就会消失。值得保留的内容请使用附件或组织文档。
  • 将冗长的线程消息当作记忆 — 线程用于交流,而非存储。发布摘要,将详细内容存入文档。
  • 没有过期策略 — 没有生命周期管理的记忆会变成噪声。为文档标注日期并定期清理。
  • 在多个基础组件中重复知识 — 每条知识只选一个真实来源。其他地方引用它,不要复制。
  • 写入前不搜索 — 创建新文档前,务必先检查知识是否已存在。更新优于新建。

当前缺口和变通方案

目前有些记忆模式需要手动组装:

  • 任务启动时不会自动沿用上下文 — 需要手动构建启动序列(见模式 4)。平台不会在启动任务时自动加载已有知识。
  • 不会自动将线程提炼为知识 — 可以手动运行 eve thread distill,但目前还没有基于 cron 或触发器的自动化。
  • 没有文档生命周期自动化 — 使用 --review-in 和 --expires-in 标志设置审查日期和过期时间。使用 eve docs stale 查找逾期文档。目前还无法自动清理。

评论

支持 Markdown