关于 agentic-recall
面向 Agentic 任务的长期记忆。它会告诉你何时不知道答案。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
mcp.json · 通用配置
启动命令
npx -y agentic-recall需要配置的环境变量
MEMORY_DIRAbsolute path to the folder holding your markdown memories. Required — the server never searches your disk for it.MEMORY_ROOTOptional. Where the embedding model cache, vector cache and indexes are kept. Defaults beside the code for a clone, ~/.agentic-recall for a package install.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
2收录的工具列表 · 更新于 2 周前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| dry | boolean | 否 | import:准确报告将导入的内容,不执行写入。 |
| run | boolean | 否 | probe_status:立即执行扫描,而不是读取上一个 sidecar。探测不会在搜索路径上运行。 |
| back | integer | 否 | thread:返回锚点之前的对话轮数(默认值为 0)。 |
| name | string | 否 | get/neighbors/demote/promote:记忆名称(不含 .md 的文件名)。 |
| near | string | 否 | search:软时间锚点(ISO)。提高该时段的排名权重,但不会隐藏该时段之外的内容。 |
| path | string | 否 | import:要导入的记忆文件或文件夹的绝对路径。读取 md/txt/rtf/doc/docx/odt/html/pdf/csv/json/zip;可识别 ChatGPT 导出文件(conversations.json 或其 .zip),并按顺序遍历其对话树。 |
| text | string | 否 | verify:用于扫描 commit SHA 的原始文本,而不是指定记忆。 |
| wait | boolean | 否 | index:阻塞至构建完成,而不是返回 jobId。仅适用于可以等待数分钟的调用方——默认采用异步方式,因为通过 MCP 阻塞式索引曾发生超时。 |
| after | string | 否 | search:记忆日期(ISO)的硬性下限。排除早于此日期的内容——仅在确实要排除时使用。 |
| brief | boolean | 否 | get:仅返回文本及其来源(名称、路径、正文和截断内容),不返回约 25 个溯源和新鲜度字段。如果你已决定读取这条记忆,只想获取内容,请使用此选项;例如,收到缺失说明并要求打开 bestWeak[0] 后。search/latest:每行仅返回 name/corpus/score/snippet/provenance 和时间戳——不返回 path、type、description、各路评分、thread position 或 verified commits。ENVELOPE 保持不变:仍会返回 indexStale、staleWarning、recencyVoid、recentUnindexed、uncapturedSessions、captureHealth、configWarning 和 guidance,因为 brief 仅精简行内容,不会删去注意事项。用于宽范围 scope:'all' 扫描,并计划之后用 `get` 打开一两个结果。 |
| force | boolean | 否 | index:忽略增量缓存,并重新嵌入每个文件。 |
| jobId | string | 否 | index_status:由 index 返回的作业 ID。 |
| limit | integer | 否 | search:最大结果数(默认值为 8)。latest:默认值为 5,浏览模式(无查询)下为 10。sessions:对话数量(默认值为 20)。 |
| query | string | 否 | search:自然语言查询。latest:用于筛选的词语——浏览范围内最新文档时请省略。 |
| scope | any | 否 | search/latest:要搜索的语料库——可以是一个名称,也可以是自由组合多个名称的 ARRAY。工作语料库:'curated'(默认)= THIS 项目的记忆文件夹中的手写记忆;'projects' = OTHER 项目的记忆文件夹中的手写记忆(内容类型相同、热层、可写;当其他项目有记忆时,默认通过扩大范围访问);'staging' = 自动摄取的对话轮次;'handoff' = 机构 HANDOFF/PHASE 文档,从记忆文件夹外以只读方式编入索引(用于查询“X 移交时的状态是什么”)。'all' = 仅包含工作语料库,并以独立分区返回——search 的排名分区位于 .groups 中;latest 则按每个语料库分别返回按时间排序的分区,位于 .sections 中,每个分区声明自己的 `orderedBy`,因为 curated 文件没有时间戳,其 mtime 顺序只是记账顺序,并非时间顺序。LIBRARY 类别(导入的参考资料——书籍、手册、政策;每个类别对应 memory-library/ 下的一个目录)仅在明确指定名称('books'、['all','books'])或使用 'everything'(= 工作语料库 + 所有类别)时搜索;按设计,它们不会进入 'all' 或自动路由,因此导入内容不会稀释工作检索结果。未知名称会报错并列出可用项。每个语料库都有自己的索引和统计数据——绝不混合,因为混合会显著降低召回率。省略此项以根据措辞自动选择(结果会显示在 scopeHint 中)。对于 `index` 操作,此项用于选择要重建的索引;默认值为 curated + projects + handoff(staging 由摄取流程驱动,成本较高;指定库类别或使用 'everything' 时才会重建)。 |
| action | enum | 是 | 要执行的读取操作。此工具不会写入你的记忆文件夹——导入、捕获、索引、降级和升级请使用 memory_write。search | latest | sessions | thread | verify | index_status | get | neighbors | probe_status |
| before | string | 否 | search:记忆日期(ISO)的硬性上限。排除晚于此日期的内容。 |
| domain | enum | 否 | 可选,但知道时值得传入:这些记忆涉及的工作类型。计数只能区分代码与非代码——小说、商业计划和日程规划在统计上完全相同——因此,只有此项能将写作、商业、研究或规划建议区分开来。提供时视为可信;未提供时则从语料库推导。code | writing | business | research | planning | prose | mixed |
| expand | any | 否 | 仅对 search 生效:本次调用的查询扩展——'on'(默认:对 `queries` 排名;遇到被拒绝的问题时提示改写后重试)、'shadow'(计算并记录,结果不变)、'off'(完全关闭此功能:不添加内容,也不记录)。覆盖 MEMORY_QUERY_EXPANSION / local-config queryExpansion。 |
| offset | integer | 否 | get:从此字符偏移量处开始返回正文,以继续读取先行切片。 |
| account | any | 否 | search:限制为由某个账户写入的记忆。`mine` 表示此界面自己的 MEMORY_ACCOUNT。传入数组即可跨多个账户读取。没有账户标签的记忆始终会返回,因此在标签机制出现前写入的内容不会消失。 |
| forward | integer | 否 | thread:锚点之后要返回的交流轮数(默认值为 8)。命名为 forward 而非 after,因为 `after` 是 search 的 DATE 筛选条件。 |
| outline | boolean | 否 | get:仅返回标题大纲及其大小和偏移量,不包含正文。在阅读大型记忆内容之前进行导航的最低成本方式。 |
| project | any | 否 | search:限制为来自某个项目文件夹的记忆。`this` 表示服务端的规范项目。没有项目的记忆始终会返回。 |
| queries | array | 否 | 仅用于 search:最多提供 4 个相同问题的替代表述,并在一次调用中与 `query` 一并排名。`results` 仍按原问题返回(每行会新增 matchedVia,列出也能检索到该结果的表述);仅由某个表述检索到的行会通过 queryScore 放在 viaVariants 下,不会出现在答案中;未找到的判定仍针对 `query`。仅在首次搜索结果无法回答问题(或搜索遭到拒绝)时,在第二次尝试中发送这些表述——不要在每次搜索时都发送:测得每次调用耗时约 50–370 ms,并消耗约 1.6K 个 token,且只有首次搜索漏掉结果时才有帮助。expansion 为 'off' 时以及 latest 会忽略这些表述。 |
| replace | boolean | 否 | import(带 category):重新导入同名文件时,新版本会取代旧版本——旧文件会移至 <category>/archive/,并标记 metadata.supersededAt(移出索引,但不会删除),新文件则取而代之。适用于重新发布的政策/法规。不使用此选项时,已有名称的文件一如既往会被跳过。 |
| section | string | 否 | get:仅返回此标题对应的内容块(同级或更高级别的下一个标题之前)。这是读取大型记忆的首选方式——优先于分页。 |
| category | string | 否 | import:指定要归档到哪个 LIBRARY 类别(例如 'books'、'manuals'、'policy'、'legal'——名称不限;如果目录 memory-library/<category>/ 不存在,则会创建)。大文件(文本超过 200KB)或书籍类文件(PDF)必须指定;否则会拒绝导入,而不是悄悄稀释精选语料。类别内容为只读参考资料,单独编入索引,且仅在指定类别或使用 scope:'everything' 时搜索。导入时会恢复结构:PDF 分页会转换为 '## p.N' 锚点,docx/html 标题会转换为真正的 markdown 标题,纯文本中的 CHAPTER 行会提升为标题——因此分段器会按章节拆分文档,引用也会带有页码锚点。 |
| keyFacts | object | 否 | import:可选,为正在导入的文档的每个 SECTION 提供 1–3 条简短的原子事实,并以章节名称为键('<doc>#<section-slug>';单文档导入时也可仅用章节 slug)。这些事实取自章节自身文本,并作为高权重 keys 字段编入索引,使章节能按其主题而不仅是按其中恰好出现的词语找到。它们不会成为内容:正文、片段和返回文本均不变。存储在旁车文件 <file>.keyfacts.json 中。仅当 MEMORY_KEY_FACTS 开启时才读取。 |
| maxChars | integer | 否 | get:限制正文长度(默认值为 20000)。受限响应始终包含 totalChars + truncated,避免将部分内容误认为完整文档。配合 scope:'everything' 使用的 search:提高该精简视图的片段预算(默认值刻意设得较小;此参数用于覆盖默认值)。 |
| sessionId | string | 否 | search/latest/sessions:限定为一个对话(摄取的交流中标记的 transcript session id)。 |
| sinceMinutes | number | 否 | capture:仅记住本会话最近 N 分钟的内容。省略则捕获整个会话。时间窗口按每次交流的 LAST ACTIVITY 计算,而非提问时间,因此仍在进行的长轮次会保留在较短的窗口内。当工作进行时 memory connector 处于 OFF 状态,而你事后意识到这些内容很重要时使用——无论如何,transcript 都保存在磁盘上,因此没有内容丢失。捕获的交流会进入 STAGING 语料的 archive 层级,优先级始终低于手写记忆;重新运行是安全的,因为已捕获的交流会被跳过:如果重新运行时当前轮次已有新增内容,则会报告 exchangesRefreshed,而不是 exchangesCaptured。 |
| includeSummaries | boolean | 否 | latest:默认降低上下文压缩摘要交流的优先级——仍会返回,但排在普通来源之后,因为它们会复述整个对话(几乎能匹配任何查询),同时又带有较新的时间戳,可能涉及旧内容。传入 false 可将其完全排除。 |
详细介绍
维护者还没有提供详细介绍,可以先查看代码仓库中的 README。
评论
支持 Markdown
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。