Skip to main content
Glama

Memory Garden 是一个个人记忆助手。连接 Obsidian 笔记库,或导入自己选择的聊天记录,围绕一个主题找回原话、比较前后表达,并修正助手对你的理解。

合成示例:沿时间线阅读记录,并在右侧核对原文

回看原话

比较前后

修正理解

找回当时写下的表达,打开来源核对语境。

把同一主题的记录沿时间展开,保留变化的线索与反例。

认可、补充或撤回解释,让自己的判断保持可修正。

自然对话需要连接生成模型;离线示例支持查找、规则对照和关系图浏览。连接云端模型时,相关片段可能发送至你配置的服务。

我们的愿景

我们写下日记、保存对话、记录一闪而过的念头。时间久了,记录越来越多,当时为什么这样想、后来又怎样改变,却不一定容易看清。

Memory Garden 希望让这些散落的记录重新产生联系。当你想回看自己时,有一个熟悉这些记录、愿意认真倾听的助手,陪你找回当时的原话,看见想法如何延续、动摇,又慢慢形成新的方向。它对你的理解,也随着交流和你的修正逐渐积累。你始终可以告诉它:“那时我是这样想的,现在已经不同了。”

我们希望,未来每个人都能拥有这样的个人助手,成为陪伴自己成长的记忆伙伴。这座属于个人的花园,可以容纳矛盾、犹豫和暂时没有答案的问题。你可以随时回来,重新认识某一段经历,也为未来的自己留下一些线索。

而人与人的相遇,会让各自的花园产生连接。一次共同经历、一段对话、一个合作项目,都会在不同人的生活中留下印记。同一件事,有着不同的视角;一段关系,也有双方共同走过的时间。

在每个人自主选择分享的前提下,我们希望个人助手能够帮助人们连接这些记忆,找回共同的经历、理解彼此的语境,让交流与合作在时间中延续。一座座个人的记忆花园,由此逐渐生长为人与人之间的记忆网络,保留各自的视角,也承载共同的故事。

Memory Garden 从今天的个人记录与认知回溯出发,探索通向这一未来的可能:让每个人拥有自己的记忆伙伴,让人与人之间的联系拥有可以延续的记忆。

属于你的,慢慢生长的记忆花园。

Related MCP server: Obsidian Palace MCP

开始使用

需要 Python 3.12 和 uv

git clone https://github.com/drephantom/memory-garden.git
cd memory-garden
uv sync --frozen

先体验示例

Windows 双击 start-demo.bat,浏览器打开 http://127.0.0.1:8876。 示例使用合成笔记,无需提供自己的笔记或 API Key。其他系统可按示例体验指南启动。

离线模式支持查找、规则对照和浏览关系图。要展开自然对话,需要连接生成模型。

使用自己的笔记

Copy-Item .env.example .env

.env 中设置 MG_VAULT_PATH 为 Obsidian 笔记库的完整路径,然后启动:

uv run memory-garden serve

打开 http://127.0.0.1:8766。Windows 也可以双击 start-memory-garden.bat。 进入后,点击 连接笔记库,可以连接另一个本机文件夹或切换已连接的库。 详细操作见连接本地笔记库

连接对话模型

打开 设置 → 对话模型,选择连接模型,填写服务地址、模型名称与 API Key。 保存后重启当前使用的服务入口。

模型连接后,问题、相关对话上下文和检索选出的记录片段可能发送到你配置的服务。 每个新连接的笔记库默认使用本地模式,不会继承其他库的模型权限。

认知回溯:看见想法走过的路

“我以前是怎么想的?”“现在有什么不同?”“这种不同可能从什么时候开始?”长期记录让这些问题有了可以回看的线索。Memory Garden 把同一主题在不同时间的表达放在一起,帮助你核对变化、保留反例,并辨认仍然无法回答的部分。

你可以指定一个主题,例如“我对自主判断的看法有变化吗?”,也可以问“有哪些值得回看的变化?”,让 Agent 在已有记录中寻找候选。这里的“发现”发生在你发起探索时;候选表示值得核对,不表示系统已经认定你发生了改变。

一次回溯会看到什么

下面是一个虚构示例,用于说明阅读方式

回看的材料

可能读到的原话

较早的表达

“只有别人认可我的选择,我才相信自己没有走错。”

较近的表达

“我更愿意先形成自己的判断,再听取别人的意见。”

需要一并考虑的反例

“重要选择前,我仍会先问朋友,借他们的视角检查盲点。”

这些材料可以引出一个待核对的解释:外部意见在你的决策中,可能从“获得认可”变成了“帮助检查”。 但询问朋友本身并不说明你放弃了自主判断,较近的一条记录也未必代表你现在的看法。实际回溯会附上可打开的来源;你可以补充语境、修正解释,或暂时不作判断。

认知回溯如何实现

模型负责理解问题、选择工具和提出解释;程序负责限制证据范围、核对引用,并保存用户主动确认的判断。一次有明确主题的回溯通常沿着以下过程展开,工具顺序由 Agent 根据已有观察选择:

环节

机制与作用

确定这一轮的问题

区分普通交流、原文查找、主题回溯和开放探索,结合对话识别话题的延续或切换。普通交流直接回应,无需进入回溯流程。

找出可比较的记录

检索相关片段并建立主题时间线,寻找前后表达的候选配对。已有立场快照时优先使用快照,否则按主题、时间和措辞差异生成候选;排序信号不是“发生变化的概率”。

核对前后原话

变化端点必须来自本人的两条独立记录,有可核对的引文与先后时间。措辞不同只提供线索,还需要结合上下文判断是否在讨论同一件事。

进一步检验解释

当问题涉及变化原因且已有候选时,检索两端之间的经历,并分别检索支持与挑战假设的材料。反例检索使用扩展查询和词面信号排序,返回的仍是待核对材料;时间相邻不等于因果。

核验后呈现

模型提交结构化结论;程序检查来源是否在本轮观察过、引文是否逐字匹配,以及前后端点和证据角色是否合法。结果区分原话、解释与未知项;证据不足可以保留问题,核验失败会尝试有界修复或明确报告未完成。

交还给用户确认

你可以认可、补充、否认或暂时搁置。主动保存的判断成为可修正、可撤回的长期记忆,供后续同主题回溯参考;助手生成的解释不会自动变成你的永久标签。

回溯的目标是形成有来源、可讨论的理解。 记录可能不完整,候选检索可能遗漏,模型也可能误解语境;引用校验能够核对证据出处,不能证明解释本身正确。关于“现在的我是否仍这样想”,你的补充始终是必要的上下文。

可以做什么

  • 围绕记录对话:连接生成模型后,可以自然交流,也可以查找过去的原话、比较前后表达;引用可打开核对。

  • 浏览时间线:把同一主题的记录按时间放在一起,区分写下记录的日期与其中描述的事件时间。

  • 探索关系图:在局部图和全局图之间切换,缩放、拖动、搜索记录,并查看明确链接对应的原文。

  • 管理自己的记忆:确认、补充或撤回对回溯结果的判断。普通聊天不会自动成为永久的个人标签。

  • 连接多个笔记库:输入本机文件夹路径即可连接;每个库分别保存对话、记忆与模型设置。

  • 导入聊天片段:预览文件或粘贴微信片段,确认哪些发言属于自己,再决定是否加入检索。也支持连接已运行的 QQ 导出服务。

  • 继续之前的对话:历史页支持搜索与分页。离开页面不会取消已提交的回答请求。

在花园里回看

通过示例笔记,体验时间线、关系图与原文对照。

关系图 · 从一条记录走进它的联系

在全局图中缩放、拖动和选择记录,并排阅读两条原文。连线来自笔记中明确写出的链接。

合成示例:306 条记录、748 条明确链接的全局图与原文对照

时间线使用 9 篇示例笔记,全局图使用 306 篇合成笔记。选中一个节点,即可突出它的直接联系,并在旁边核对原文。

想亲自试试,可以在“连接笔记库”中输入本机 examples/showcase-vault 文件夹的完整路径。也可以生成全局图示例,再连接生成的文件夹:

python examples/generate_graph_showcase.py .local/graph-showcase-vault

Agent 如何工作

Memory Garden 使用一个带只读工具的 Agent:先理解这一轮想聊什么,再决定是否查阅记录。回溯时,模型可以根据工具返回的证据继续查找,把原话、可能的解释和仍未确认的问题分开呈现。

flowchart TD
    UI[Web / CLI / MCP] --> PLAN

    subgraph HARNESS[单 Agent Harness]
        PLAN[模型规划本轮意图] -->|普通交流| CHAT[结合对话直接回答]
        PLAN -->|查找 / 回溯 / 探索| LOOP[模型选择下一步]
        LOOP -->|调用工具| TOOLS[8 个只读认知工具]
        TOOLS -->|原文与证据索引| LOOP
        LOOP -->|形成回答| CHECK[引用与证据边界校验]
        CHECK -->|需要修复且预算允许| LOOP
        CHECK -->|通过| ANSWER[带来源的回答与待确认问题]
        CHECK -->|无法完成| FAIL[明确说明未完成原因]
    end

    subgraph DATA[本地记录与检索]
        STORE[Obsidian / 已确认聊天<br/>SQLite 原文修订与片段索引]
        SEARCH[BM25 + 向量 → RRF<br/>可选重排]
        STORE --> SEARCH
    end
    TOOLS -->|搜索| SEARCH
    TOOLS -->|读取原文 / 时间线等| STORE

    subgraph MEMORY[两层记忆]
        CONTEXT[原始对话 → 提取式工作上下文]
        LONG[用户确认的长期记忆<br/>可修正 / 可撤回]
    end
    CONTEXT --> PLAN
    LONG --> LOOP
  • 有边界的工具循环:步数、调用次数、超时与重复调用共同限制执行;引用不合规时最多进行一次修复,并共用剩余预算。模型失败会明确报告,离线规则模式独立提供。

  • 可核对的检索:通过 RRF 融合关键词与向量候选;默认向量使用本地哈希表示,可另行配置语义 Embedding 与重排服务。云端检索服务需单独启用,引用返回原始片段供用户核对。

  • 压缩上下文,保留原话:长对话从原始消息中提取工作上下文,不反复压缩旧摘要;整个模型请求受字符预算约束。长期记忆只采用用户确认的判断,支持修正与撤回,按笔记库隔离。

  • 共享工具接口:搜索、原文读取、主题时间线、变化候选、变化探索、区间事件、假设正反证据和用户判断,共 8 个只读工具;MCP 复用同一套工具实现。探索工具是否开放由本轮意图决定。

实现入口:Agent 循环 · 工具 · 混合检索 · 工作上下文 · 记忆管理。使用说明见对话与记忆

从一个问题开始

例如:

  • “找找我以前关于写作的记录。”

  • “自主判断这个主题,我的想法以前到现在有没有变化?”

  • “这条记录里的说法,现在已经不太贴近我了。”

也可以点击“找一条回看线索”,或在关系图里选一篇记录开始浏览。 对话、时间线、关系图与记忆分别展示同一主题的不同侧面。

数据由你掌握

  • 原始 Obsidian 笔记只读,应用不会改写原文。

  • 索引、对话和导入副本保存在本机;这些文件需要像原始笔记一样妥善保管。

  • 导入前先预览时间和发言人,明确选择本人身份与检索范围。

  • 停止检索会保留导入副本和已有回答,不等同于彻底删除。

  • 云端生成、Embedding 和 Rerank 分别配置;本地导入不代表后续云端模型调用也在本地。

  • 助手的解释可以不同意,也可以暂时不判断。引用存在不代表解释一定正确。

使用指南

当前限制

  • 目前面向单人、本机使用,暂不支持在线协作或跨设备同步。

  • 笔记更新后,需要在设置中手动更新索引。

  • 全局图最多展示 500 个节点和 3,000 条边;超出时显示省略量,可继续搜索。连线来自明确的笔记链接。

  • 微信支持已有文件与主动粘贴,不直接读取或解密微信客户端。

  • QQ 服务连接依赖外部程序及其版本,不能代替完整聊天备份。

  • 图片、语音与视频暂不自动识别或转写。

许可

MIT License

Available Tools

9 tools
ask_gardenB

运行完整认知回溯 Agent(本地确定性路径),返回带引用的结构化结论。

ParametersJSON Schema
NameRequiredDescriptionDefault
questionYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral disclosure burden. It does add useful traits: the operation is local, deterministic, and returns cited structured conclusions. However, it does not disclose whether the agent performs any writes, what sources it consults, or any limitations, which leaves gaps for a complex agent tool.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler words. Every clause adds meaning: the operation, its mode, and its return format are all present.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema exists, return values are covered by structured data. However, the description is thin for a complex 'full cognitive retrospective Agent' with several similar siblings, and lacks any context about what the agent does with the question or how it relates to the other tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for documenting the 'question' parameter, but it does not. It provides no guidance on question format, scope, language, or what makes a well-formed input for this agent.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('run') and resource ('full cognitive retrospective Agent'), and clarifies that it returns structured conclusions with citations. It does not explicitly differentiate from siblings, but the agent-based framing is distinct from the search/read/discovery tools listed.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance is given about when to use this tool versus the sibling tools such as discover_cognitive_shifts, search_sources, or get_topic_timeline. The phrase 'local deterministic path' hints at a specific mode of operation but not at selection criteria.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

discover_cognitive_shiftsC

全库发现可能被忽视的变化候选;较近记录只是 recent 候选,需用户确认。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description must carry behavioral disclosure. It does reveal that the output is a set of candidates, not final decisions, and that user confirmation is expected ('需用户确认'). However, it does not clarify whether the operation is read-only, what the 'recent' candidate notion means behaviorally, or how the tool treats records beyond the database-wide scan.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is short and front-loads the core purpose, which is good. However, the second clause, '较近记录只是 recent 候选,需用户确认', is awkward and ambiguous, mixing languages and leaving the exact meaning of 'recent 候选' unclear. It is concise in length but not in clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a tool with one optional parameter and no annotations, the description is too thin. It covers the general purpose but fails to explain the meaning of 'cognitive shifts', how 'recent candidates' relate to the full-result set, when to use it over find_change_candidates, or what the 'limit' parameter controls. The output schema exists, so return-value structure does not need elaboration, but the behavioral and usage gaps remain significant.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters1/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions the only parameter, 'limit'. The tool name and phrase '全库' imply a scan, but there is no explanation that limit caps the number of returned candidates or how the default of 5 behaves. The description adds no meaning beyond the bare schema.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action ('discover') against a specific resource ('entire database') with a clear object ('potentially overlooked change candidates'). It gives some scoping ('全库', the whole database), which helps differentiate from sibling tools, though it never explicitly compares itself to find_change_candidates or clarifies the relationship between 'cognitive shifts' and 'change candidates'.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '需用户确认' hints that results require user confirmation, but the description gives no explicit guidance on when to choose this tool over siblings like find_change_candidates or get_topic_timeline. There are no stated exclusions, prerequisites, or alternative conditions, so an agent is left to infer usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_change_candidatesA

围绕明确主题提出变化候选端点对(最早端点 × 最近端点);措辞差异不等于变化。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
topicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries the full burden of behavioral disclosure. It does disclose a key interpretation rule ('wording differences do not equal change') and implies the output is a set of endpoint pairs, which gives meaningful insight into the algorithm's behavior. It does not mention whether the tool is read-only, whether it requires special permissions, or any other operational constraints, leaving some gaps.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, dense sentence with no filler: the core purpose is front-loaded, and the caveat about wording differences follows naturally. Every clause adds value, and the structure is easy to parse quickly.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple (2 params, no nested objects) and an output schema exists, so the description need not detail return formats. However, the description does not explain the 'endpoint pair' concept, clarify the 'limit' behavior, nor situate the tool among its eight siblings, leaving an agent to guess when to choose this over alternatives.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate for both parameters. It adds meaning to 'topic' by specifying it should be a clear/definite theme, but 'limit' is completely unaddressed and its semantics (max number of candidates, rank ordering) must be inferred from the schema's default value. A more thorough description would explain both parameters explicitly.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool's action ('提出变化候选端点对' — propose change candidate endpoint pairs) and its unique resource/format ('最早端点 × 最近端点'), which distinguishes it from siblings like find_interval_events or get_topic_timeline. It also adds a precise boundary condition ('措辞差异不等于变化'), reinforcing what counts as a change, making the purpose unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The phrase '围绕明确主题' (around a clear topic) implies that this tool is appropriate when the user has a well-specified theme, giving some usage context. However, it does not explicitly name alternatives or state when not to use this tool compared to the listed siblings, leaving the routing decision partially to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

find_interval_eventsB

在两个日期端点构成的区间内搜索经历/决定/事件候选。时间相邻不等于因果。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
date_toYes
date_fromYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden for behavioral disclosure. It adds a useful interpretive warning that temporal adjacency does not mean causation, and the word 'candidates' hints at non-definitive output. However, it does not disclose ordering, filtering behavior, or any side effects, which is acceptable given the output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is two sentences with no fluff. The core purpose is front-loaded, and the causality warning earns its place as a meaningful interpretive note. It is appropriately sized for its scope.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description gives only the core search action and an interpretive caveat. It does not clarify what query or limit do, what date format to use, or how this tool differs from the many siblings in the context. Given the tool has 4 parameters and a rich sibling set, more elaboration is needed for an agent to invoke it correctly in the right situation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must compensate. It references 'two date endpoints,' which maps to date_from and date_to, but provides no meaning for query or limit. The schema's parameter names alone may be insufficient for an agent to understand how to form a query.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific action and resource: search for experience/decision/event candidates within a date interval. It clearly distinguishes itself from siblings like get_topic_timeline by focusing on event candidates rather than a timeline, though it does not explicitly name the sibling it is not.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to prefer this tool over the listed siblings such as find_change_candidates or get_topic_timeline. The caveat about temporal adjacency not implying causality is interpretive advice, not usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_topic_timelineB

按时间整理同一主题的历次表达;最近一条只是 recent 候选。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
topicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations at all, the description must carry the transparency burden. It does add behavioral nuance: results are time-ordered and the newest entry is only a 'recent candidate', not a final truth. It does not mention permissions, side effects, or return behavior, but this appears to be a read-only timeline tool and an output schema exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is compact and front-loaded with the core behavior, followed by one interpretive caveat. It avoids unnecessary words, though the mixed-language phrase 'recent 候选' is somewhat cryptic and could be more clearly phrased.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple two-parameter tool with an output schema, the description covers the core purpose and a key behavioral nuance. It is incomplete because the 'limit' parameter is unaddressed and the 'recent candidate' concept is left unexplained, but the output schema reduces the need to describe return values in detail.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, so the description must explain the parameters. It indirectly explains 'topic' through '同一主题', but it never explains the 'limit' parameter, its default, or how it affects the returned timeline. This leaves the optional parameter semantically undocumented.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb and resource: it chronologically organizes the historical expressions of the same topic. This is clearly distinct from search or source-reading siblings, though it does not explicitly name any alternative or contrast with them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The chronological 'same topic' framing implies when this tool is appropriate, and the caveat about the latest item being only a 'recent candidate' hints at how to interpret results. However, it does not explicitly state when not to use it or which sibling tool to prefer instead.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

get_user_verdictsA

读取用户对该主题此前的确认/否认判定;被否认的解释不得复用。

ParametersJSON Schema
NameRequiredDescriptionDefault
topicYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. It plainly states this is a read operation ('读取') and adds a meaningful policy: denied explanations must not be reused. This goes beyond the tool name and tells the agent a consequence of the returned verdicts.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two short clauses, no filler. The core read action comes first, and the important reuse constraint is appended second. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple one-parameter read tool with an output schema, the description covers the action, the target resource, and the key policy. It lacks only explicit usage guidance relative to sibling tools, but the tool is otherwise callable without further clarification.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0%, so the description must clarify the parameter. It does so by binding 'topic' to the subject of the verdicts ('用户对该主题此前的确认/否认判定'), which adds semantic meaning beyond the schema's bare 'Topic' label.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description starts with a specific verb ('读取' / read) and a specific resource: the user's prior confirm/deny verdicts for the topic. This clearly differentiates it from sibling tools like search_sources or get_topic_timeline, which address different information.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second clause, '被否认的解释不得复用', implies the tool should be consulted before reusing an explanation, but no explicit when-to-use or when-not-to-use guidance is given. It does not name alternatives or exclusion conditions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

read_sourceA

读取本轮已发现来源的原文与定位信息(引用前必须先读)。

ParametersJSON Schema
NameRequiredDescriptionDefault
atom_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are present, so the description carries the full behavioral burden. It clarifies this is a read operation and constraints the scope to sources discovered in the current round, but it does not describe side effects, prerequisites beyond reading, or output behavior. The output schema likely covers return values, so this is adequate but not rich.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence that states the action, target, returned data, and a critical usage requirement. No filler or redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple tool with one required parameter and an output schema, the description is nearly complete. The main omission is explicit atom_id semantics, but the rest of the invocation context is clear enough.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% and the description never mentions atom_id or how it maps to a source. The parameter name and type provide some inference, but the description adds no explicit semantic guidance beyond the tool name. This is a clear gap for a single required parameter.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description states a specific verb ('读取' / read), a specific resource ('本轮已发现来源' / sources discovered in this round), and what is returned ('原文与定位信息' / full text and location information). It also distinguishes itself from the sibling search_sources by emphasizing pre-discovered sources.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives an explicit usage condition: '引用前必须先读' (must read before citing). It clearly signals when to use the tool, though it does not explicitly name alternatives or state when not to use it.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_hypothesis_evidenceA

对原因假设分侧检索:stance=support 或 challenge;两侧都必须调用。

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
stanceYes
hypothesisYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden, and it adds value by specifying the allowed stance values and requiring both sides to be called. These are non-obvious behaviors not visible in the schema. It could be more explicit about read-only semantics, but '检索' and the search-oriented name imply a non-mutating operation.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The entire guidance is one compact sentence that front-loads the purpose and then packs in the stance values and the mandatory two-call pattern. There is no filler or repetition.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple three-parameter tool with an output schema, the description covers the core invocation details: purpose, stance values, and the requirement to call both sides. The main omission is the meaning of the optional 'query' parameter, but because it has a default and is not required, this does not block correct use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The description clarifies that 'stance' takes either support or challenge and interprets 'hypothesis' as a causal hypothesis, which is meaningful given 0% schema description coverage. However, it does not explain the optional 'query' parameter at all, leaving one parameter semantically unaddressed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool searches evidence for a causal hypothesis and divides the search by stance ('support' or 'challenge'), giving a specific verb and resource. It does not explicitly compare itself to siblings such as search_sources, but the stance-based scope is enough to identify its distinct role.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The instruction '两侧都必须调用' is an explicit, actionable usage rule: the agent must invoke the tool with both support and challenge stances. It gives clear context for how to use the tool, although it does not mention when to prefer it over sibling tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_sourcesA

按关键词与时间窗检索用户本人的记录候选,返回 [A{id}] 编号。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryYes
date_toNo
date_fromNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries the behavioral burden. The verbs '检索' and '返回' clearly indicate a non-destructive read operation that returns candidate IDs, which is useful context. It does not disclose authentication needs, rate limits, or details such as pagination or how time-window boundaries are handled.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

One compact sentence conveys the action, scope, filtering dimensions, and return format with no filler. It is front-loaded with the verb and ends with the concrete return value.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The description covers the core selection criteria (keyword and time window) and return format, and an output schema exists for return values. However, with no annotations and no parameter-level docs, it leaves limit semantics and date format unspecified, so it is only minimally complete for an agent to call it correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0%, but the description adds meaning for the main parameters: '关键词' maps to query and '时间窗' maps to date_from/date_to. It does not explain the limit parameter or the expected date string format, leaving some of the schema under-explained.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a specific verb ('检索' / search), a resource ('用户本人的记录候选' / the user's own record candidates), and a constraint set (keyword plus time window), with an explicit return of '[A{id}]' IDs. It is clear enough to be distinguished from siblings like search_hypothesis_evidence, though it does not name those alternatives explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The intended use is implied: use this tool when searching the user's own record candidates by keyword and time window. However, there is no explicit guidance about when not to use it or how it compares with sibling search tools such as search_hypothesis_evidence or get_topic_timeline.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 9 tool updatesv2.0.0
    • First observedask_garden
    • First observeddiscover_cognitive_shifts
    • First observedfind_change_candidates
    • First observedfind_interval_events
    • First observedget_topic_timeline
    • First observedget_user_verdicts
    • First observedread_source
    • First observedsearch_hypothesis_evidence
    • First observedsearch_sources

TDQS

B3.4/5.0

Scored across 9 tools

Disambiguation3/5

Most tools have clear roles, but discover_cognitive_shifts and find_change_candidates both surface 'change candidates' and could be confused; search_sources and find_interval_events also overlap in time-based retrieval. The descriptions help clarify scope, but the boundaries are not always immediately obvious.

Naming Consistency4/5

All names use lowercase snake_case and mostly follow a verb_noun pattern such as search_sources, get_topic_timeline, and find_interval_events. Minor inconsistency exists between verbs like discover, find, and search for similar retrieval actions, but the overall pattern remains predictable.

Tool Count5/5

Nine tools is a well-scoped size for a cognitive retrospection domain. Each tool contributes to a distinct stage of the workflow, from source discovery through evidence retrieval to the final ask_garden synthesis, with no obvious bloat.

Completeness4/5

The toolset covers the main cognitive backtracking pipeline: search sources, read them, build timelines, identify change candidates, find interval events, gather hypothesis evidence, and check user verdicts. A minor gap is that there is no explicit tool to record or update user confirmations/verdicts, but this may be handled outside the server.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    B
    maintenance
    Enables read-only access to Obsidian vaults with semantic search, tag filtering, and metadata queries. Provides secure, intelligent note retrieval and summarization for LLMs without modifying your vault.
    8 npm
    13
    ISC
  • A
    license
    Not graded
    quality
    F
    maintenance
    Turns your Obsidian vault into an AI memory palace, enabling AI assistants to store knowledge with intent-based organization, retrieve information through full-text search, auto-link related notes, and query using Dataview syntax while maintaining provenance tracking.
    4 npm
    AGPL 3.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Turns your Obsidian vault into an MCP-enabled workspace with tools for reading/writing notes, managing folders, running semantic searches, and maintaining long-term memory—all while keeping data local to your vault.
    149,900 npm
    153
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Syncs Obsidian notes into a temporal knowledge graph and exposes 23 MCP tools for AI assistants to read, search, and write to your vault, enabling persistent memory across conversations.
    79
    MIT