mcpField
C
capture

capture

github.com/davepoonAgent 工作流3.7k60 次安装1 天前更新
代码仓库

关于 capture

供 Agent 使用的记忆捕获技能,通过 origin MCP 服务记录持久信息,并指导分类和实体锚定。

主要功能

  1. 01将记忆分为六种类型
  2. 02提取主要命名实体
  3. 03根据上下文推断主题和空间
  4. 04处理修订冲突信号

适用场景

  1. 01保存持久的用户偏好
  2. 02记录带理由的项目决策
  3. 03保存技术经验或更正

MCP 相关

通过 origin MCP 服务的 capture 工具保存完整自足的记忆,并提供实体和空间处理指引。

安装

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

$npx skills add https://github.com/davepoon/buildwithclaude --skill capture

安装后在 Claude Code 中输入/capture确认已加载。

详细介绍

/capture

在当下捕获一条记忆。主动动词:Agent 捕捉灵光一现的时刻,就像拍下一张照片。

如何调用

使用用户提供的内容作为一条完整、自成一体的陈述,调用 origin MCP 服务的 capture 工具。从当前工作目录或对话中附加 topic——不要让用户输入。

capture(content="<args, written as a full sentence with WHY>",
        memory_type="<picked from the 6 types>",
        entity="<primary entity name, if any>",
        space=<inferred>)
memory_type — 由 Agent 从 6 种类型中选择

配置了本地模型或 API 密钥时,守护进程会进行分类。在本地记忆模式下不会,因此 Agent 需要根据内容自行选择类型。请使用以下映射:

类型用途
identity关于用户的持久信息(角色、公司、语言偏好)
preference“我更喜欢 X,因为 Y”——一种习惯、纠正或风格选择
decision“选择 A 而非 B,因为 C”——带有理由的具体选择
lesson找到根本原因、发现变通方法、获得技术见解
gotcha容易出问题的地方、出乎意料的行为、需要留意的事项
fact关于人物、项目、工具的持久信息——尽可能关联到 entity

如果符合两种类型,请选择最能体现这条记忆为何重要的类型。决策也意味着偏好,但 decision 更具体。

entity — 提取锚点

选择内容中最重要的一个命名对象:人物、项目、工具或地点。使用其确切名称。例如:“Alice 更喜欢 TDD,因为……”→ entity="Alice"。如果内容没有命名锚点,则省略 entity。

topic / space 推断
  • 当前工作目录位于某个仓库内 → 使用仓库名称(例如 ~/Repos/origin/... → "origin")。
  • 当前工作目录不在任何仓库内 → 使用对话中最近的话题,或省略。
  • 范围已知时始终传入 space;如果不确定,可稍后运行 list_spaces(post-PR-C),或省略。
多个实体或关系

MCP capture 工具只接受一个主要 entity。如需处理其他实体或关系,请使用专用的 MCP 工具。如果内容提到了多个实体,请先捕获这条记忆,然后针对每个额外实体:

create_entity(name="<entity>", entity_type="<person|project|tool|place>")

对于两个实体之间的关系:

create_relation(from_entity="<a>", to_entity="<b>", relation_type="<verb>")

如果守护进程带有 LLM,则跳过这些调用——其摄取后的增强流程会负责提取。

要捕获的内容

  • 决策:“选择方案 A,因为 B”
  • 偏好:“更喜欢 TDD,因为它能及早发现回归问题”
  • 纠正:“其实是 C,不是 D”
  • 身份 / 项目事实:“从事 Origin 的工作;Origin 是面向 AI 工具的本地记忆守护进程”

不要捕获的内容

  • 系统提示词、启动日志、心跳
  • 临时任务状态(“目前正在……”)
  • 工具输出、命令结果、架构转储
  • 单字确认
  • 用户可以轻易重新推导出的信息(文件路径、近期 Git 历史)

原子化想法

一次捕获 = 一个想法。“更喜欢 TDD”和“使用 pytest”是两次捕获,而不是一次。

何时使用

  • 用户明确说“记住这个”“保存那个”“捕获这个”。
  • 用户主动表达持久偏好 / 决策 / 纠正(无需询问——这是最低要求,而非触发条件)。

何时不要使用

  • 会话结束时批量存储 → 使用 /handoff(多条目批次)。
  • 取回记忆 → 使用 /recall。

捕获后的矛盾信号

capture 返回后,检查 response.triggered_revisions 和 response.auto_superseded。

auto_superseded(无需操作)

如果 auto_superseded 不为空,守护进程已解决矛盾。请将其作为信息提示:

Note: auto-superseded mem_X. Origin replaced a prior protected memory because
trust=high and similarity > 0.9. No action needed.

无需调用接受 / 忽略操作。修订已自动应用。

triggered_revisions(需要人工审核)

如果 triggered_revisions 非空(且 auto_superseded 为空),向用户呈现内联区块:

Stored mem_new.

This capture topic-matches a protected memory now flagged for revision:
  - mem_target_abc

Action: accept (replace original content) | dismiss (drop the revision) | leave (decide later)

内联动词映射:

  • accept:accept_revision(target_source_id="mem_target_abc")
  • dismiss:dismiss_revision(target_source_id="mem_target_abc")
  • leave:不调用;会在下次 /brief 中再次显示

从技术上说,两个字段在单次响应中都可以非空(存在多个受保护的匹配项),但实际上每次捕获只会触发其中一个:当 trust=full 且 similarity > 0.9 时,会触发 auto_superseded;否则会触发 triggered_revisions。

如果两个字段都为空,则此次捕获已成功存储,没有冲突。

评论

支持 Markdown