关于 datacron
Datacron 是本地优先的 MCP 服务,让支持的 AI 客户端检索和维护 Markdown 笔记库,无需将整个笔记库载入上下文。它还可生成离线浏览库;写入默认关闭,并可按路径限制。
主要功能
- 01搜索已索引的 Markdown 笔记
- 02返回有来源且限量的上下文
- 03受控地创建和编辑笔记
- 04生成可离线浏览的资料库
- 05配置读写路径范围
适用场景
- 01根据已保存笔记继续项目
- 02利用带来源的上下文准备会议
- 03跟踪人物、决策和承诺
- 04审阅笔记整理方案
MCP 相关
向 Claude Desktop、Codex CLI 和 Gemini CLI 等 stdio MCP 客户端提供工具和说明。可通过客户端配置注册 Datacron;除非配置允许的写入路径,否则写入功能保持关闭。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Datacron
本地 MCP 服务,可通过 Claude、Codex、Gemini 或其他 stdio MCP 客户端查询和维护 Markdown 知识库,无需将整个知识库发送到上下文中。
English | Français
Datacron 可以做什么?
恢复项目上下文、为对话做准备,并跟踪承诺事项。 Datacron 为你的助手提供持久记忆,以便于阅读和编辑的 Markdown 格式保存。无论你选择哪个客户端,这些笔记都能独立使用。
离线资料库: 构建可供 Obsidian 或其他本地阅读器浏览的 Markdown 资料库,其中包含主页和主题索引。 在更改源知识库之前,先审阅建议的改写、拆分和归档。 请参阅离线资料库指南和 2026.0913.02 版发布说明。
| 需求 | 向助手提出的示例请求 |
|---|---|
| 恢复项目进度 | “我们上次进展到哪里了?找出相关决策和下一步行动。” |
| 准备会议 | “总结近期对话和待解决事项,并注明来源。” |
| 记住某个人 | “这个人是谁?我们有过哪些互动?接下来应该跟进什么?” |
| 跟踪目标 | “找出与我下一次评审相关的承诺和成就。” |
| 保存可靠记录 | “保存这项决策,将其关联到项目,并确认已成功存储。” |
助手会使用可用工具和已授予的权限来协调处理这些请求。 一套通用协议指导信息读取、人员信息更新和写入验证。身份不明确时需要先澄清;保存截止日期并不会安排提醒。 了解日常跟进。
从这里开始: 安装 · 首次会话 · 用户指南 · MCP 参考 · 隐私。
安装
Windows:双击安装程序
在 Windows 上最简单的方式:从最新版本下载 Datacron-Setup.exe,双击运行,
然后选择你的知识库。无需安装 Python,无需使用终端,也无需管理员权限;Datacron 会自动向你的 AI 客户端注册自身。完整指南:
Windows 安装。
Python:从 PyPI 安装
python -m pip install datacron
datacron setup
从源代码安装
从克隆的代码仓库开始:
python -m pip install -e ".[dev]"
或者,仅安装应用程序:
python -m pip install -e .
运行时先决条件:
- Python 3.11+
PATH中需提供ripgrep,供search_regex使用;如果没有该程序,此工具会改为扫描已编入索引的分块正文,但速度较慢- 一个包含 Markdown 笔记的文件夹
- 受支持的 stdio MCP 客户端,例如 Claude Desktop、Codex CLI 或 Gemini CLI
首次会话
- 使用安装程序或
datacron setup选择笔记文件夹。 - 在 MCP 客户端中重新连接 Datacron,以加载工具和说明。Claude Desktop 聊天不会显示服务说明:将 setup 输出的会话启动行粘贴到 Claude 偏好设置中(参见设置)。
- 询问:“查找我项目的笔记,并引用来源总结其状态。”
对于记忆会话,session_context 会返回有界上下文和共享协议。
prepare_follow_up 会准备带来源的更新;现有写入器会根据权限应用这些更新。
get_follow_up 会检索最新的结构化修订。现有的文字笔记仍可读取,不会自动转换。
服务在本地运行。客户端可能会将返回的摘录发送给其模型提供商; 请参阅隐私与安全。
有关缓存会话约定、归档排序、可恢复的写入跟踪和对话评估,请参阅 日常工作流改进。
快速开始
简单的方法——一条命令即可检测你的 AI 客户端、初始化知识库、为其建立索引,并在所有客户端中注册 Datacron:
datacron setup # interactive; add --yes for all defaults
有关可选项(--client、--scope、写入、持久性),请参阅安装指南。也可以按步骤操作:
datacron init /path/to/vault
datacron index --vault /path/to/vault
datacron status --vault /path/to/vault
datacron mcp install --client claude-desktop --vault /path/to/vault
上面的 mcp install 子命令专用于 Claude Desktop。对于 Codex CLI、Gemini CLI、
Antigravity、LM Studio、Cursor 和其他客户端,请使用多客户端设置
datacron setup --client <identifier>,或使用 --client all 自动检测。
添加到 LM Studio
LM Studio 0.3.17+ 只有一个用户配置,且没有项目范围。推荐使用以下命令:
datacron setup --yes --vault "VAULT_PATH" --client lmstudio --scope user
如果是 Python 安装,且 datacron-mcp 位于 PATH 中,也可以通过此官方深层链接导入等效的只读配置:
此链接会导入以下示例。启动服务前,打开 LM Studio 的 MCP 编辑器并替换两个
<YOUR_VAULT> 占位符:
{
"mcpServers": {
"datacron": {
"command": "datacron-mcp",
"args": [],
"env": {
"DATACRON_VAULT_ROOT": "<YOUR_VAULT>",
"DATACRON_READ_PATHS": "<YOUR_VAULT>",
"DATACRON_DURABILITY": "best-effort"
}
}
}
}
此示例不会启用写入工具。对于打包安装,CLI 设置更安全,因为它会自动写入实际的可执行文件路径。
安装后,重启已配置的客户端。
要手动运行服务:
datacron mcp serve --vault /path/to/vault
安装程序使用的直接脚本入口也可用:
datacron-mcp
datacron-mcp 会从 DATACRON_VAULT_ROOT 读取知识库。
配置
datacron init 会创建 .datacron/VAULT.yaml。此文件可承载知识库本地配置,尤其是查询扩展:
query_expansion:
supervision: [monitoring]
sauvegarde: [backup]
restauration: [restore]
chiffrement: [encryption]
sécurité: [security]
validité: [validity]
certificat: [certificate]
常用环境变量:
| 变量 | 默认值 | 作用 |
|---|---|---|
DATACRON_VAULT_ROOT | 未设置 | 主要用户文档知识库根目录(--vault 之后的回退选项;仅当当前目录包含 .datacron/VAULT.yaml 时才会将其作为知识库) |
DATACRON_MEMORY_ROOT | 未设置 | 可选的专用记忆知识库根目录,托管 .datacron/ 和 _memory/(双知识库模式) |
DATACRON_EXTRA_READ_VAULTS | 空 | 可选的只读次级知识库挂载项(prefix=path,以操作系统路径分隔符分隔,或使用 JSON 对象) |
DATACRON_READ_PATHS | 空 | 读取允许列表;客户端设置会将其设为知识库路径 |
DATACRON_WRITE_PATHS | 空 | 写入允许列表;为空 = 禁用写入工具 |
DATACRON_MAX_RESULT_COUNT | 20 | 返回结果的最大数量 |
DATACRON_MAX_RESULT_TOKENS | 8000 | 搜索结果的 Token 预算 |
DATACRON_REPAIR_MIN_INTERVAL_SECONDS | 30 | 读取时修复扫描的最小间隔;0 = 每次读取都扫描 |
DATACRON_GET_NOTE_MAX_TOKENS | 25000 | get_note(format="full") 的预算 |
DATACRON_MAX_READ_RESPONSE_CHARS | 131072(最小值 4096) | get_note 和 list_notes 序列化 JSON 的上限,包含元数据、封装内容和转义字符 |
DATACRON_SESSION_CONTEXT_SECTIONS | {}(未选择任何章节) | 将笔记路径映射到标题路径的 JSON 映射,用于生成有长度限制的方向摘录 |
DATACRON_CHUNK_MAX_TOKENS | 1024 | 分块目标最大大小 |
DATACRON_RIPGREP_PATH | rg | ripgrep 二进制文件路径 |
路径列表使用操作系统分隔符(Unix 上为 :,Windows 上为 ;)。
写入
默认情况下,写入功能有意关闭。未设置 DATACRON_WRITE_PATHS 时,写入工具会返回明确错误,且不会创建任何文件。
若要启用对特定子文件夹的写入:
$env:DATACRON_VAULT_ROOT = "C:\Notes"
$env:DATACRON_READ_PATHS = "C:\Notes"
$env:DATACRON_WRITE_PATHS = "C:\Notes\_memory"
datacron mcp serve --vault C:\Notes
datacron setup 也可以在整台机器范围内应用允许列表(选择启用的用户环境变量),使所有 MCP 客户端都继承该设置;默认值:_memory、_drafts、_journal。请参阅设置指南。
可用的写入工具:
create_note_ai:创建类型化 Markdown 笔记,不覆盖已有内容。append_journal:在现有笔记的标题下添加条目。set_frontmatter:更新生命周期字段、rejected选项列表和单调递增的last_id计数器,不修改 Markdown 正文。patch_note_preamble:替换或移除第一个可识别的 Markdown 标题(ATX 或 Setext)之前的 Markdown 前言,并强制要求 CAS 控制。patch_note_section:通过 CAS 控制替换现有标题下的内容。delete_note_section:显式删除一个 H2-H6 章节(ATX 或 Setext)及其子树。rename_note_section:仅重命名一个 H2-H6 章节(ATX 或 Setext)的标题。move_note_section:预览或提交笔记内精确的 H2-H6 子树移动,并强制要求 CAS。revert_note:恢复历史记录中某个版本的精确字节内容。apply_organization_manifest:验证本地内容寻址包,然后在确认与获准的组织操作前状态精确绑定后应用该包。
保障:
- 严格限制笔记只能位于
DATACRON_WRITE_PATHS中;组织批次的笔记源和目标也必须位于未变更的实时organization.scope内,并通过实时笔记准入策略(包括排除项) - 组织批次的两个内部精确 CAS 目标:
.datacron/VAULT.yaml,仅用于更改顶层organization映射,不得更改organization.scope;以及.datacron/ulids.json,仅当 Datacron 根据move_replace_exact推导出需要迁移键时才可更改 - 通过临时文件 +
os.replace原子覆盖 - 修改现有笔记前,先写入内容寻址的历史记录
- 正常写入后同步执行
reconcile();只有在协调成功时,才能保证立即可搜索 - 本地审计日志
- 对于组织清单:支持崩溃一致性恢复和逐个文件原子替换;不保证多个路径同时可见
不支持多机并发写入模式:请在知识库上保持单写入者规则。
对于 apply_organization_manifest,还应在维护窗口期间停止所有其他 Datacron 客户端和服务。应用前,请在知识库外保留受影响笔记和完整 .datacron 目录经过验证、逐字节精确的备份,直到所有提交后检查均通过。先调用 mode="validate",检查其返回的有限范围哈希,然后在 mode="apply" 中重用完全相同的 confirmation_token。该令牌绑定清单和载荷、organization.scope 内所有获准的 Markdown 笔记、确切的知识库配置和身份侧车文件,以及投影报告。它有意不绑定 organization.scope 外无关笔记的字节内容。任何经过认证的组件发生变化,都会在修改前使确认失效。验证时必须使用 history_mode=full。如果 Datacron 推导出身份侧车的大小写冲突清理,还应在应用前检查 identity_sidecar_case_canonicalization_count 及其不含内容的 SHA-256;这两项证明均绑定到令牌,并保留在持久化回执中。
现有的 replace_exact 或 move_replace_exact 源必须在 frontmatter 中携带其 id;仅能从侧车获取的身份不受此 v1 架构支持。如果批次已持久提交,但索引协调或规划器预言机失败,响应会明确说明(committed_index_incomplete 或 committed_report_mismatch),并可使用相同令牌重试同一调用。
组织批次阻塞项会通过 datacron ops inspect 报告,原因中包含 pending_batch_,且两种单笔记修复操作均不可用;请使用 operational-health 指南中的完整离线回滚流程,而不要修复或隔离其中单个成员。
可用功能
Datacron 会为 Markdown 笔记文件夹建立索引,并公开一个本地 MCP 服务,然后向客户端返回相关笔记或片段,而不是完整转储。知识库仍是普通的 Markdown 文件夹:Datacron 只会添加 .datacron/ 旁置目录,用于存放索引、日志、内部 ULID、历史记录和操作日志。唯一例外是项目级别的 datacron setup,它属于默认行为:该命令还会将每个检测到的客户端的项目配置写入知识库根目录,例如 .mcp.json、.cursor/mcp.json、.gemini/settings.json、.agents/mcp_config.json、.codex/config.toml 或 .vscode/mcp.json。这些文件包含机器本地的绝对路径,因此同步知识库时也会将它们同步到每台机器。传入 --scope user 可避免在知识库中写入这些文件。
| 接口 | 当前状态 |
|---|---|
| 知识库读取 | list_notes、get_note、资源 datacron://vault/map、vault/info、policy/active |
| 搜索 | SQLite FTS5/BM25、FR↔EN 查询扩展、时间重排、通过 search_regex 使用 ripgrep |
| 本地图谱 | 通过 get_backlinks 获取维基链接和反向链接 |
| 写入 | 9 个受限的笔记工具 + 1 个整理批处理工具;需设置 DATACRON_WRITE_PATHS 才能启用,默认禁用,并记录操作日志 |
| MCP 传输 | 通过 MCPServer 使用 Python MCP SDK v2;仅支持本地 stdio;支持现代 2026-07-28 协议和旧版 2025-11-25 兼容模式,不提供 HTTP 监听器 |
| 索引 | datacron index 增量索引、datacron reindex 完整索引、读取时按需修复 |
| 整理 | VAULT.yaml 中可选的 organization 块;datacron reorganize --dry-run 只读测量差异,apply_organization_manifest 负责应用 |
| 评估 | 通过真实 MCP 流程运行 datacron eval:recall@k、MRR、nDCG、新鲜度、延迟和载荷令牌数 |
| 引导式设置 | datacron setup:通过一条命令完成初始化、索引和 MCP 注册(通过 --memory-vault 配置单知识库或双知识库) |
| 图形控制面板 | datacron companion:本地图形控制面板(127.0.0.1),用于拓扑、搜索、图谱诊断、压缩、MCP 客户端设置、审计历史记录和 CAS 设置 |
| 客户端 | 通过 datacron setup --client all 自动检测并注册:Claude Desktop、Claude Code、Cursor、Gemini CLI、Antigravity、LM Studio、Codex CLI、Windsurf、VS Code |
| 日常记忆 | session_context、prepare_follow_up、get_follow_up:有界上下文、带来源的后续跟进和结构化状态 |
| 图谱与压缩 | datacron graph-health(断开的链接、孤立节点、枢纽节点、跨知识库链接)和 datacron compact-memory(月度日志摘要) |
| 记忆协议 | 共享的版本化服务端/客户端契约;protocol status 检查分发情况,而非模型行为 |
| 分发 | Windows 安装程序(Datacron-Setup.exe)、无需 Python 的独立可执行文件(PyInstaller),或从源代码安装 |
MCP 工具
下表列出了标准配置(23 个工具)。对于更适合从精简列表中选择工具的助手,DATACRON_TOOL_PROFILE=essential 会改为注册 5 个工具:remember、recall、what_changed、get_note 和 get_health。请参阅精简工具配置。
阅读
| 工具 | 描述 |
|---|---|
session_context | 有界会话上下文和带版本的通用协议。 |
prepare_follow_up | 准备有来源依据的后续计划,不进行写入。 |
get_follow_up | 获取最新的结构化后续修订,并支持基于快照的分页。 |
list_notes | 返回分页列表,可按文件夹、标签和 frontmatter 键值对筛选,并包含 ULID、标题、标签、别名和日期 |
get_note | 读取笔记或精确的标题子树,并支持分页、分块查找或标题大纲 |
search_text | 在 FTS5 索引上执行 BM25 搜索,返回排名后的摘要片段,默认降低过时笔记的排名 |
search_regex | 使用 ripgrep 执行正则表达式搜索,并将找到的行解析为已索引的分块 |
get_backlinks | 返回维基链接指向某个 ULID 或已解析别名的分块 |
写入
| 工具 | 描述 |
|---|---|
create_note_ai | 创建新的类型化 _memory 笔记,限制在允许的路径内,不覆盖现有内容,并记录持久化日志 |
append_journal | 在指定标题下添加 Markdown 条目,并提供路径限制、精确历史记录和原子写入 |
set_frontmatter | 更新允许的生命周期字段、rejected、单调递增的 last_id 计数器和 updated,同时保留 Markdown 正文 |
patch_note_preamble | 替换或移除第一个可识别的 Markdown 标题(ATX 或 Setext)之前的前言;必须使用 CAS,并保留后缀 |
patch_note_section | 使用 CAS 替换现有标题下的内容,保留精确历史记录和其他章节 |
move_note_section | 预览或提交同一笔记中某个现有标题下方的精确子树移动 |
delete_note_section | 显式删除 H2-H6 章节(ATX 或 Setext)及其子树,并可选择使用 CAS 和精确历史记录 |
rename_note_section | 重命名 H2-H6 章节(ATX 或 Setext)的标题,不修改其内容或子树 |
revert_note | 从基于内容寻址的历史记录恢复笔记;操作持久、可逆且经过审计 |
apply_organization_manifest | 验证本地基于内容寻址的捆绑包,其中至少包含一项精确笔记操作和/或一项精确的 organization 配置替换,然后在 CAS 下应用其声明的成员,以及任何必需的派生 ULID 侧车迁移;应用过程会记录日志并确保崩溃一致性 |
运维
| 工具 | 描述 |
|---|---|
get_health | 返回索引新鲜度、完整性、校验和、持久性及不变量的实际状态 |
get_write_progress | 检查多笔记写入回执、冲突和当前索引状态,不重试写入。 |
get_note_history | 列出笔记已提交操作的元数据,不读取历史内容,也不修改日志 |
audit_query | 按时间段、工具或笔记查询操作元数据,不修改日志或知识库 |
建议(实验性)
| 工具 | 描述 |
|---|---|
contradiction_scan | 对章节间的矛盾/细化内容进行实时、确定性、有界扫描;提出并确认显式 CAS 调用,只读操作,绝不自动写入 |
MCP 资源:
datacron://vault/mapdatacron://vault/infodatacron://policy/active
搜索
search_text 会综合多种信号:
- 使用 FTS5/BM25 计算基础词法分数
- 笔记标题和标题层级的权重高于分块正文,因此主题相关笔记的排名会高于仅仅提及该主题的笔记
- 使用
VAULT.yaml中配置的 FR↔EN 查询扩展 - 保守的时间重排:
- 如果一篇笔记的
supersedes被另一篇笔记引用,其排名会大幅降低 confidence: low和confidence: needs_verification会受到轻微惩罚include_superseded=true会让历史笔记重新进入排名
- 如果一篇笔记的
- 可选范围:
folder、tags和frontmatter会按照与list_notes相同的语义缩小搜索笔记的范围;响应会回显实际应用的筛选条件 - 可选分组:
group_by_note=true会保留每篇笔记中排名最高的分块,并报告该笔记有多少个分块匹配;在评估语料库上,这会将返回的令牌数减少约 40%
search_regex 保持字面匹配:它既不应用查询扩展,也不进行时间重排。
历史搜索测量结果——2026 年 7 月 17 日
这些测量涵盖 19 个问题和一种配置。它们不是对当前版本的基准测试,也不保证在其他知识库上有相同表现。
对 Agent 实际收到的 tool/impl 流程进行的本地测量:19 个问题、8k 令牌/20 个结果配置,2026 年 7 月 17 日:
recall@5 0.89
recall@10 0.95
recall@20 0.95
MRR 0.73
nDCG@10 0.79
latency p50 57 ms
latency p95 276 ms
payload tokens 90567
在这组历史数据中,工具级 recall@5 与 BM25 存储的结果相同。请使用 datacron eval 和合适的问题集,测量其在你自己的笔记上的表现。
隐私与安全
- Datacron 不进行遥测。
- Datacron 不调用云端大模型。
- MCP 客户端(例如 Claude、Codex 或 Gemini)可能会将 Datacron 返回的分块发送给其提供方。Datacron 不会将整个知识库发送给它。
- 返回给客户端的内容会包装在
<vault_content>...</vault_content>中。 - 结果数量和令牌预算均有限制。
- 文件系统访问受
DATACRON_READ_PATHS和DATACRON_WRITE_PATHS限制。 - MCP 操作会记录在本地日志中。
CLI 命令
datacron companion # launch the local graphical control panel (127.0.0.1)
datacron setup # guided path: init + index + client config
datacron setup --yes # all defaults, no prompts
datacron setup --client all --scope both --vault /path/to/vault
datacron setup --vault /path/to/docs --memory-vault /path/to/memory # Dual-Vault setup
datacron migrate-memory --vault /path/to/docs --memory-vault /path/to/memory
datacron graph-health --vault /path/to/vault --json
datacron compact-memory --vault /path/to/vault --older-than-days 30 --dry-run
datacron compact-memory --vault /path/to/vault --older-than-days 30 --apply
datacron config get --vault /path/to/vault --json
datacron config set --vault /path/to/vault --expected-hash sha256:... --values-json '{"excluded_folders":[".git"]}'
datacron setup --protocol # also install client memory rules
datacron protocol install --client all
datacron protocol status --client all --scope user
datacron init /path/to/vault
datacron status --vault /path/to/vault
datacron index --vault /path/to/vault
datacron reindex --vault /path/to/vault
datacron scrub-init --vault /path/to/vault
datacron scrub --vault /path/to/vault
datacron reorganize --vault /path/to/vault --dry-run # measure organization, read-only
datacron reorganize --vault /path/to/vault --dry-run --json # stable machine-readable report
datacron eval --questions examples/eval-questions.example.yaml --vault /path/to/vault
datacron eval --questions local/golden.yaml --vault /path/to/vault --save-baseline
datacron eval --questions local/golden.yaml --vault /path/to/vault --compare --json
datacron mcp serve --vault /path/to/vault
datacron mcp install --client claude-desktop --vault /path/to/vault # Claude Desktop only
datacron unregister --client all --scope both --vault /path/to/vault
datacron protocol uninstall --client all
当前限制
- 仅支持词法搜索:不支持向量搜索或嵌入。
- 没有自主 Agent:由 MCP 客户端负责编排。
- 不支持多台机器并发写入。
datacron setup对客户端的检测仅尽力而为(依据配置目录或PATH中的二进制文件);可能无法检测到安装在非标准位置的客户端,之后可以手动配置。
文档
完整索引:docs/en/index.md | 法语索引。
快速入门:
技术参考:
开发
对于仅涉及 README、CHANGELOG 以及 docs/fr/ 或 docs/en/ 下 Markdown 页面变更的情况,CI 会在 Linux/Python 3.12 上运行不变量检查和完整回归测试套件。其他所有变更仍会覆盖 Linux/Windows 和 Python 3.11-3.13 的六种组合。发布需要运行完整矩阵,空差异或无法验证的差异也同样如此。ShellCheck、依赖项审计和必需的 Quality gate 在这两种路径中都会保持启用。新分支的首次推送也会运行完整矩阵,因为没有可用的先前比较点。
python -m pip install -e ".[dev]"
ruff check .
ruff format --check .
mypy
pytest
许可证
版权所有 2026 Julien Bombled。
根据 Apache License, Version 2.0 授权。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。