mcpField
H
Hermit CRM

Hermit CRM

本地服务
hermitcrm.io商业与营销31 天前更新

关于 Hermit CRM

Hermit CRM 是面向个体经营者的本地 CRM,将销售管道、联系人和互动记录保存为 Git 中的 Markdown 文件,并提供网页应用、命令行和 MCP 服务。数据可直接阅读和追踪版本,项目目前仍属 Alpha 软件。

主要功能

  1. 01以 Markdown 文件保存客户和互动记录
  2. 02通过 Git 记录每次更改
  3. 03提供销售管道看板、日历和报表
  4. 04支持任务、跟进提醒及会前简报
  5. 05导入邮件、日历和表格数据
  6. 06提供 AI Agent 可读写的 CRM 接口

适用场景

  1. 01个人销售跟踪潜在客户及交易阶段
  2. 02记录与联系人之间的邮件和会议
  3. 03安排后续任务并查看日历
  4. 04让 AI Agent 查询或更新 CRM 记录

MCP 相关

MCP 服务通过 stdio 向支持 MCP 的客户端提供 CRM 读写能力,包含 10 个读取工具和 7 个写入工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"hermit-crm-hermit-crm": {
"command": "uvx",
"args": [
"hermitcrm"
],
"env": {
"HERMITCRM_DATA": "<HERMITCRM_DATA>"
}
}
}
}
启动命令uvx hermitcrm
需要配置的环境变量
HERMITCRM_DATAPath to your Hermit CRM data folder (made with `hermitcrm init`).

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypihermitcrm1.0.0

工具

还没有获取到工具列表

本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。

详细介绍

Hermit CRM

为个体创业者打造的免费本地 CRM。 你的销售管道、联系人和对话都以 Markdown 文件的形式保存在你自己的 Mac 上的 git 仓库中,并配有供你使用的 Web 应用,以及供 AI Agent 使用的 CLI 和 MCP 服务。无需账户,无需云端,采用 Apache 2.0 许可证。

许可证:Apache 2.0 PyPI 状态:alpha 网站

Hermit CRM:销售管道、包含草稿和时间线的公司页面、日历和报告

使用 AI 编码 Agent 安装。 将以下内容粘贴到 Claude Code、Codex、 Cursor 或其他工具中:

Read https://raw.githubusercontent.com/Hermit-CRM/hermit-crm/main/INSTALL.md and set up Hermit CRM for me.

想自己输入命令?请参阅安装。

销售管道公司日历
销售管道看板及上方的跟进提醒公司页面:每封邮件、每次通话和每场会议的时间线日历:月历网格中的每项后续安排

Alpha 版软件。 Hermit CRM 尚不完善,可能在不事先通知的情况下发生变化,也存在尚未被发现的错误。它免费提供,且不提供任何形式的保证——如果它丢失了你的数据,没有人会承担责任。请自行备份,并确认备份可以恢复。在将真实工作数据放入其中之前,请阅读 DISCLAIMER.md。

你的 CRM 是 git 中一个由 Markdown 文件组成的文件夹。每家公司、联系人和对话都是一个小型文本文件,你可以阅读、搜索、编辑和比较差异;应用所做的每次更改都会生成一次提交,因此文件的先前版本会保留在 git log 中,大多数错误都可以通过一次 git revert 撤销。本地 Web 应用为你提供销售管道看板、后续安排日历、消息草稿和报告。由于数据是纯文件,且配有简洁的 CLI,AI Agent(Claude Code、Codex 等)也能像你一样轻松地读取和更新销售管道。Hermit CRM 专为一个人打造:创业者、自由职业者,或自己负责销售的人。

对比

一份审慎、客观的对比(于 2026 年 9 月核对;欢迎纠正):

Hermit CRMHubSpot FreeTwentyObsidian CRM 插件
数据以 Markdown 文件形式存储是否否(Postgres)是
每次更改的 Git 历史记录是,每次写入生成一次提交否(活动日志)否仅安装 git 插件后支持
Web 应用有,本地运行有,托管版有无(在 Obsidian 中使用)
邮件收集通过 Gmail IMAP 密送/转发有(密送、收件箱同步)有(Gmail/Outlook 同步)取决于插件
适用于 AI Agent纯文件、CLI、AGENTS.md通过 API通过 API纯文件
无需 Docker 即可自托管可以(git clone + pip)不可以(仅提供 SaaS)不可以(Docker Compose)不适用(桌面应用)
多用户团队不支持支持支持不支持

如果你需要团队 CRM,请使用其他产品。如果你希望自己的销售管道保存在自己掌控的文件中,Hermit CRM 就适合你。

安装

使用 AI 助手。 将本页顶部的那行内容粘贴到 Claude Code、Codex、Cursor 或其他 AI 编码工具中,或者解压下载文件,在其中打开文件夹并发送一条消息:

Read INSTALL.md and set up Hermit CRM for me.

它会检查机器、安装命令、创建数据文件夹、询问你的姓名和发件地址,然后启动应用。它不会询问应用密码或日历 URL:这些信息需要你自行输入 Settings 页面,因此会留在你的机器上。INSTALL.md 是它遵循的脚本。

Hermit CRM 可在 macOS 上运行。Linux 也能运行,但测试较少。

手动安装。 你需要 Python 3.11 或更高版本以及 git:

git clone https://github.com/Hermit-CRM/hermit-crm.git && cd hermit-crm
python3 -m venv .venv && source .venv/bin/activate
pip install .
hermitcrm init ~/crm                                # a new data folder; asks 3 questions
hermitcrm --data ~/crm serve                        # http://127.0.0.1:8765
hermitcrm --data ~/crm schedule install --serve     # daily sync, web app always on

在 Debian 和 Ubuntu 上,python3 -m venv 需要 python3-venv 软件包;Ubuntu 22.04 自带的 Python(3.10)版本太旧;uv(从克隆的仓库运行 uv tool install .)会自带 Python,可以避开这两个问题。

下载文件名为 hermitcrm-<version>.tar.gz,解压后得到 hermitcrm-<version>/,旁边还有一个 .sha256 文件。解压前请先校验:

shasum -a 256 -c hermitcrm-<version>.tar.gz.sha256   # macOS
sha256sum -c hermitcrm-<version>.tar.gz.sha256       # Linux

Hermit CRM 也发布在 PyPI 上:uv tool install hermitcrm(或 pipx install hermitcrm)可替代前三行,并提供一个无需激活虚拟环境即可使用的 hermitcrm 命令。

hermitcrm init 会询问三个问题:你(姓名和发件地址)、密送捕获(跟踪地址及其应用密码),以及在线副本(可选的私有 git 远程服务;本地备份可通过 schedule install 或 Settings > Backup 启动)。可以跳过其中任何一项;之后运行 hermitcrm setup 重新设置,或在 Web 应用中打开 Settings 页面(/settings)。添加 --demo 可创建 13 家虚构公司,添加 --no-setup 可跳过这些问题。你也可以不使用 --data,而是设置 HERMITCRM_DATA=~/crm,或在该文件夹内运行命令。

hermitcrm doctor 会一次性检查整个安装。Web 应用的每个页面都有一个 Help 链接;hermitcrm help [topic] 会打印相同的页面内容。

你的第一家公司

想先看看完整的客户档案吗?空白首页提供查看示例客户档案(也可以运行 hermitcrm sample add):其中包含一家虚构公司及其联系人、消息、一笔销售机会和任务,还有一个置顶仪表板和一个已暂停的例行任务,展示你可以构建什么。每个页面上都有提示条说明示例已添加;点击移除即可通过一次提交将其删除(hermitcrm sample remove),且绝不会影响你自己的公司。

应用运行在 http://127.0.0.1:8765 时,点击新建公司,输入名称和国家/地区,然后保存。也可以在终端中执行相同操作:

hermitcrm --data ~/crm add company "Acme BV" --country NL --website acme.example.com
# company acme created: companies/acme/company.md

无论采用哪种方式,都会创建一个文件,这就是公司的完整记录:

~/crm/companies/acme/company.md
---
name: Acme BV
slug: acme
website: https://acme.example.com
country: NL
source: other
stage: prospect
stage_changed: 2026-09-17
...

并通过一次提交记录下来:company: acme created。打开公司页面并添加联系人,然后记录第一封电子邮件:

hermitcrm --data ~/crm add contact acme "Jane Roe" --title CTO --email [email protected]
hermitcrm --data ~/crm add interaction acme --channel email --direction out \
    --contact jane-roe --subject "Intro" --body "Hi Jane, ..."

联系人会成为 companies/acme/contacts/jane-roe.md,邮件会成为 companies/acme/interactions/ 下的一个文件;由于你已经与 Acme 联系过,它也会从潜在客户变为已接洽。三个文件,三次提交,运行 git log 即可查看历史记录。hermitcrm show acme 会打印所有内容。

这就是完整的数据模型:每家公司一个文件夹,每个联系人一个文件,每段对话一个文件。以下所有功能都只是基于此模型提供的便利功能。

功能

  • 销售管道看板,包含自定义阶段。默认阶段为潜在客户、已接洽、需求了解、报价、已成交、已流失、不符合条件和暂不符合条件(带重新评估日期);可在设置中重命名、添加、重新排序或移除阶段,并为每个阶段设置角色(开放、已成交、已流失、已关闭或暂缓)。
  • 公司和联系人表格,支持按列筛选和排序。
  • 首页上的跟进提醒:显示别人给你发了消息而你尚未回复的对话,以及你发了消息但对方没有回复的对话。也可使用 hermitcrm followups。
  • 任务:每家公司或联系人可创建任意数量的任务;所有任务显示在同一张表格中,每列都有日期按钮和筛选器,并保留完成日期。公司下一步要做的事就是到期时间最早的任务。
  • 日历:在月视图中显示所有任务、本周会议和 Google Calendar 链接。
  • 会前简报:显示在每个即将召开的会议下方,包含阶段、未完成的下一步、联系人和最近三次互动。也可使用 hermitcrm brief。
  • 扩展功能:使用书签脚本,将当前浏览的页面转换为预填表单:公司页面可转换为新公司;已登录的 LinkedIn 个人资料可转换为新联系人。页面在你自己的标签页中读取,无需安装任何内容。
  • 每家公司都有时间线:记录电子邮件、LinkedIn、电话、WhatsApp 和会议互动,包含收发内容,并逐字节保留正文。
  • 为每位联系人生成外联消息:点击一个按钮即可打开 Outreach,并准备好该联系人的信息;支持英语、德语、荷兰语或法语(按国家/地区选择;比利时的语言根据邮件、网站、邮政编码和职位判断)。系统会将已知信息保存为笔记,用于撰写草稿;你可以在 messages.toml 中控制措辞。
  • 消息标签页:显示每条外发消息及其结果(收到回复后标记为成功、超过时限后标记为未成功,或手动设置;可选结果见 config.toml 中的 outcomes)。
  • 报告:每周活动、销售漏斗和转化率、阶段停留时间、结果、按语言和渠道划分的消息效果,以及数据完整性。
  • 密送导入:将邮件密送或转发到 Gmail 地址,即可将其记录到相应联系人名下;无法匹配的邮件会暂存于首页的待归档中。
  • 日历导入:通过私密 ICS 订阅源导入过往会议(无需 OAuth)。
  • 从 CSV、TSV 或 .xlsx 导入公司或联系人。
  • 咨询 Hermit:每个页面都有一个提问框。AI 会根据当前页面回答;如果页面信息不足,则会只读整个数据文件夹;点击一次即可切换到能力更强的模型重试。
  • 夜间模式(开启、关闭或跟随系统)和带图标的侧边栏。
  • 在手机上使用:运行 hermitcrm serve --host 0.0.0.0,即可在本地网络中访问应用。应用没有密码,因此请使用可信网络或专用网络(Tailscale、WireGuard)。
  • 信息补充:可免费“从 URL 获取”(网站或 LinkedIn 页面),也可使用你已有的任意 AI CLI(claude、codex、gemini、grok 或自定义命令)。
  • 每家公司都有阶段历史,可根据 git 重建。
  • MCP 服务(hermitcrm mcp):无需使用终端,即可通过 Claude Desktop、ChatGPT、Cursor 或任何支持 MCP 的工具读取和写入 CRM。通过 stdio 提供十种读取工具和七种写入工具(记录、“设为你的专属”、批量更改、撤销),无需额外依赖。
  • 反馈表单位于 /help/feedback:会在你的文件夹中生成一份报告,其中附有版本、计数和功能标志,并显示给你,由你自行发送。报告不会自行离开你的设备,也不会包含姓名或路径。
  • PIPELINE.md:为你和你的 Agent 生成的一页摘要。
  • 保留未知的 front-matter 字段,以便其他工具添加字段。

配置

hermitcrm init 会生成 config.toml,其中每个键都以注释形式列出默认值。 取消注释即可修改。

键默认值作用
owner_name""你的姓名;首个词会用于签署外联草稿({owner_first_name})。
owner_email""你的主要电子邮件地址(仅供参考)。
port8765Web 应用在 127.0.0.1 上使用的端口(hermitcrm serve --port 可覆盖此设置)。
silent_days14某公司在这么多天内没有互动,就会被视为沉寂。
push_enabledtrue每次提交后推送到 git 远程仓库(存在远程仓库时)。
remote"origin"要推送到的 git 远程仓库名称。
enrich_provider"auto"用于 Enrich 的 AI CLI:auto、claude、codex、gemini、grok 或 custom。
enrich_command""自定义 enrich 命令;留空则使用提供方自己的二进制文件。
enrich_model""enrich CLI 使用的模型;留空则使用其默认值。
enrich_timeout180放弃 enrich 调用前等待的秒数。
message_window_days14消息在这么多天后仍无回复或结果,就会被视为最近一次结果。
fetch_timeout10Fetch from URL 读取页面时的等待秒数。
bcc_address""你密送或转发邮件的地址,例如 [email protected];留空则禁用 BCC 导入。
bcc_imap_host"imap.gmail.com"此邮箱的 IMAP 服务器。
bcc_keychain_service"crm-bcc"保存应用专用密码的 Keychain(macOS)或 Secret Service(Linux)服务(账户 = IMAP 用户)。
bcc_lookback_days30BCC 导入向前搜索的天数。
bcc_create_companiestrue你发送或转发的邮件到达尚无对应公司的域名时,创建公司(以域名命名);设为 false 则将邮件发送到 Home 上的 To file。
my_addresses[]来自这些地址的邮件视为你发送的邮件(外发)。
bcc_ignore_domains[]永远不记录这些域名下收件人的邮件(同事)。
calendar_keychain_service"crm-calendar"保存 ICS 密钥 URL 的 Keychain(macOS)或 Secret Service(Linux)服务。
calendar_keychain_account"ics"存储 ICS URL 的 Keychain(macOS)或 Secret Service(Linux)账户。
calendar_lookback_days30日历导入向前查看的天数。
calendar_ignore_titles[]标题包含其中任一内容的活动将被跳过。
calendar_min_attendees2参与者(包括你)少于此数量的活动将被跳过。
ai_tier"medium"Enrich 和 Ask Hermit 使用的模型层级:medium(Claude:Opus)或 strong(Claude:Fable)。
enrich_model_strong""强档模型覆盖项;留空则使用提供方默认值。
ask_timeout300放弃一次 Ask Hermit 调用前等待的秒数。
theme"light"Web 应用的外观:light、dark 或 system。
update_checktrue每天最多检查一次是否有更新的 Hermit CRM(不会发送任何标识信息)。
update_url""检查时访问的地址;留空则使用 PyPI。任何返回 {"version": "0.4.0"} 的 URL 都可用。
feedback_email""Feedback 表单用于发送报告的地址;留空则由你自行复制报告。

不要将密钥放入 config.toml;请参阅 密钥。

消息模板

草稿来自软件包中通用的 default_messages.toml。在你的数据文件夹中放置 messages.toml,即可覆盖其中任意部分;配置会进行深度合并,因此只需一个两行文件:

[languages.en]
signoff = "Best,\n{owner_first_name}"

数据文件夹中的 MESSAGING.md 用于记录你的语气、沟通方式和语言。

CLI

hermitcrm [--data DIR] <command>      --data, then $HERMITCRM_DATA, then the current directory
hermitcrm --version

hermitcrm init DIR [--demo] [--no-setup]
                                   create a data folder (git repo, config, agent rules)
hermitcrm setup                       the setup questions again (you, BCC, backup, calendar)
hermitcrm help [TOPIC]                how a feature works (the web app's /help pages)
hermitcrm doctor [--online]           check Python, git, config, secrets, schedule, backup, updates
hermitcrm schedule install [--at HH:MM] [--serve]
                                   daily sync --apply (launchd, systemd; schtasks is printed)
hermitcrm schedule remove|status
hermitcrm serve [--port N] [--host A] the web app (default 127.0.0.1; --host 0.0.0.0 reaches your phone)
hermitcrm show <slug> [--bodies N | --all]
hermitcrm digest [--days 7]           recent interactions, oldest first
hermitcrm followups [--reply-after N] [--nudge-after N]
                                   threads you owe a reply, and ones you are waiting on
hermitcrm brief [--days 7]            each upcoming meeting with the record behind it
hermitcrm mcp                         serve this folder to AI clients over MCP (stdio)
hermitcrm report [--days N | --from D --to D] [--md]
hermitcrm check                       validate every file (exit 1 on problems)
hermitcrm rebuild                     regenerate PIPELINE.md and commit
hermitcrm add company NAME [--country NL] [--website URL] [--stage S] [--next-step TEXT] [--set FIELD=VALUE ...]
hermitcrm add contact SLUG NAME [--title T] [--email E] [--phone P] [--role R]
hermitcrm add interaction SLUG --channel email|linkedin|call|whatsapp|meeting --direction in|out
                                   [--contact CSLUG] [--subject S] [--date D] [--body TEXT|-]
hermitcrm import FILE [--mode companies|contacts] [--map HEADER=FIELD] [--apply]
hermitcrm fetch <slug> [--url URL] [--apply]
hermitcrm enrich <slug> [--contact SLUG] [--apply]
hermitcrm bcc [--apply] [--eml FILE ...]
hermitcrm calendar [--apply] [--ics FILE ...]
hermitcrm sync [--apply]              bcc, then calendar
hermitcrm backfill-history [--apply]  stage_history from git
hermitcrm migrate [--dry-run]         upgrade the data format (runs automatically)

会写入数据的命令需要使用 --apply;不加此参数时,命令只会显示将执行的操作。 每次写入都会形成一个 git 提交。

密钥

共有两个密钥:bcc_password(Gmail 应用专用密码)和 calendar_ics_url。Hermit CRM 会按以下顺序查找它们:

  1. 环境变量:HERMITCRM_BCC_PASSWORD、HERMITCRM_CALENDAR_ICS_URL;
  2. 数据文件夹中的 .secrets.toml(已加入 gitignore;请将权限设为 chmod 600, 否则 Hermit CRM 会发出警告):
    bcc_password = "abcd efgh ijkl mnop"
    calendar_ics_url = "https://calendar.google.com/calendar/ical/.../basic.ics"
    
  3. 系统的密钥存储,其中服务名称来自 config.toml 中的 bcc_keychain_service / calendar_keychain_service(这些键在所有平台上都保留“keychain”这一名称):
    • macOS:通过 security 使用 Keychain;
    • Linux:通过 libsecret-tools 提供的 secret-tool 使用 freedesktop Secret Service(GNOME Keyring、KWallet、KeePassXC)。手动操作: secret-tool store --label='Hermit CRM calendar' service crm-calendar account ics (然后粘贴 URL)。只有在 D-Bus 会话运行时才会使用它,因此无头服务器会直接回退到 .secrets.toml;hermitcrm doctor 会显示一行 keyring,说明适用哪种情况。

如果没有密钥存储,密钥会保存在环境变量或 .secrets.toml 中,以纯文本形式存储,仅你的用户帐户可读取,且绝不会提交到版本库。全盘加密可在设备关机时保护密钥。Linux 密钥环会在你注销时锁定,因此如果每日导入在此时运行(systemd lingering),请将应用专用密码保存在 .secrets.toml 中。

BCC 导入设置

最简单的方法:在 Web 应用中选择 Settings → BCC capture(/settings#bcc),或运行 hermitcrm setup。它会为 Gmail 建议使用 [email protected],为 Gmail、Outlook/Hotmail/Live 和 iCloud 选择 IMAP 服务器,将应用专用密码存储在 .secrets.toml 或系统密钥环中(macOS Keychain、Linux Secret Service),通过试运行测试连接,并显示要添加的 Gmail 过滤器:

Matches: to:([email protected]) → Skip the Inbox, Mark as read, Apply label Hermit CRM

对于 Gmail,请开启两步验证,并在 https://myaccount.google.com/apppasswords 创建应用专用密码;普通密码会被拒绝。

手动操作:在 config.toml 中设置 bcc_address、my_addresses,以及可选的 bcc_ignore_domains,并将 bcc_password 存储为密钥(参见密钥)。 然后在你发送的邮件中密送该地址,或将邮件往来转发给它,再运行 hermitcrm bcc(试运行)和 hermitcrm bcc --apply。与联系人或公司均不匹配的邮件会留在主页的 To file(/#to-file)下。 hermitcrm schedule install 会每天运行一次。

日历导入设置

  1. 复制日历的私有 ICS 地址(请像对待密码一样保管):
    • Google Calendar:Settings → 你的日历 → Integrate calendar → Secret address in iCal format。
    • Outlook / Microsoft 365:Settings → Calendar → Shared calendars → Publish a calendar → 复制 ICS 链接。
    • iCloud:将日历共享为公共日历(支持使用 webcal://)。
  2. 在 Settings → Calendar(/settings#calendar)中粘贴该地址,或在运行 hermitcrm setup 时对日历问题回答 yes;该地址会以 calendar_ics_url 的名称存储在 .secrets.toml 中,并通过试运行进行测试。手动操作请参见密钥。
  3. 运行 hermitcrm calendar,然后运行 hermitcrm calendar --apply(或者让 hermitcrm schedule install 每天运行 sync)。与已知联系人相关的会议会记录为 meeting 互动;其余会议会留在主页的 To file 下。

更新

发布新版本后,侧边栏和 Settings > About 中会显示 Upgrade 按钮:点击一次即可安装新版本、重启应用并提示你重新加载(关于何时显示此按钮,请参阅 Settings)。也可以手动更新:

uv tool install hermitcrm@latest   # or: pipx install --force hermitcrm

这两种方式也会将通过下载或克隆安装的版本切换到 PyPI;uv tool upgrade 和 pipx upgrade 会继续使用原来的文件夹,因此在那里找不到新版本。更新通知会显示与你的安装方式匹配的命令。之后请重启应用:在 Mac 上运行 launchctl kickstart -k gui/$(id -u)/io.hermitcrm.serve,在 Linux 上运行 systemctl --user restart hermitcrm-serve,或者自行停止并重新启动 hermitcrm serve。(如果忘了重启,应用会显示 Restart needed 和一个按钮,而不会导致页面出错。)

Web 应用每天最多检查一次(不会发送标识符;可通过 update_check = false 或 HERMITCRM_NO_UPDATE_CHECK=1 关闭),并在有新版本时在导航栏中显示通知。除非 update_url 指向其他位置,否则应用会查询 PyPI;任何返回 {"version": "0.4.0"} 的 URL 都可使用,因此下载页面上的静态文件无需包含包索引。若检查返回 404 或无法连接网络,应用会如实说明——如果未能成功查询,就不会报告“已是最新版本”。当某个版本更改数据格式时,下次运行命令会自动迁移你的文件夹,并通过一个 git 提交完成,提交名称为 migrate: data format N → M (...),因此可以用 git revert <sha> 撤销。先运行 hermitcrm migrate --dry-run 查看将要发生的更改。由更新版本的 Hermit CRM 写入的文件夹会被拒绝,直到你升级。

数据布局

~/crm/
├── config.toml                 settings (all optional)
├── messages.toml               optional draft wording, merged over the defaults
├── .secrets.toml               optional secrets (gitignored, chmod 600)
├── .hermitcrm-format              data format version (committed)
├── PIPELINE.md                 generated summary, never edit by hand
├── CLAUDE.md / AGENTS.md       rules for AI agents working in this folder
├── .claude/settings.json       git commands Claude Code may not run here
├── MESSAGING.md                your outreach playbook
├── inbox/                      BCC and calendar items waiting for a decision
└── companies/<slug>/
    ├── company.md              front matter: stage, next step, scores, history...
    ├── contacts/<slug>.md
    └── interactions/<date>-<channel>-<direction>-<contact>.md

每个文件都是带有 YAML 前置元数据的 Markdown,键的顺序固定,因此同一数据的两次写入结果完全一致,差异中也只会显示实际更改。Hermit CRM 不识别的键会保留在已知键之后。

你的数据,由你负责

Hermit CRM 在你的机器上运行,不会向任何地方发送数据。它没有账户、服务器或遥测功能。作者不会接收、存储或处理你的数据;根据 GDPR,你是自己放入其中的所有数据的数据控制者。

另一方面,数据需要由你自行保管。每次写入都创建一次提交,每隔几分钟复制一次文件夹,这些只是便利措施,并非保证。请自行备份,并不时尝试恢复备份,确认其正常可用。 如果你连接邮件账户、日历或 AI 工具,密钥由你提供,相关服务提供商的条款也由你负责。

DISCLAIMER.md 完整说明了这一点:不提供保证、不承担责任、不提供支持,以及商标不涵盖的内容。

回滚操作指南

每次写入都会创建一次提交,因此回滚只需使用普通的 git 命令,并在数据文件夹中运行:

git log -- companies/<slug>          # the history of one company
git checkout <sha> -- <path>         # restore one file to an older version
git revert <sha>                     # undo one commit, keeping history
hermitcrm rebuild                       # then regenerate PIPELINE.md

默认情况下,每次写入后都会推送到远程仓库(push_enabled);只有在运行 git remote add origin <url> 添加远程仓库后,才会实际执行推送。

与 AI Agent 协作

hermitcrm init 会在数据文件夹中写入 CLAUDE.md 和 AGENTS.md(内容相同):先阅读 PIPELINE.md,使用 hermitcrm show / digest / report,而不要打开许多文件;手动编辑后运行 hermitcrm check 和 hermitcrm rebuild;绝不重写交互正文;使用 hermitcrm help <topic> 了解功能的工作方式。要写入数据,Agent 应使用 hermitcrm add company|contact| interaction,由它验证字段并提交,而不是手动编写 YAML。用 Claude Code、Codex 或任何 Agent 打开文件夹,然后请求检查销售流程或起草跟进内容。

Claude Code 被禁止运行会破坏历史记录的 git 命令 (git reset --hard、commit --amend、rebase、push --force、git clean -f、 rm -rf .git 等):每个数据文件夹都有一个 .claude/settings.json deny list, 无论处于哪种权限模式(包括绕过模式)都有效。它会匹配命令模式,因此只是安全带,而非锁;即使有命令绕过防护,5 分钟备份 (hermitcrm help backups)也会保留每个版本。

对于没有 shell 的客户端,hermitcrm mcp 可通过 MCP 提供文件夹服务。在 Claude Desktop 中,依次选择 Settings → Developer → Edit Config:

{
  "mcpServers": {
    "hermitcrm": {
      "command": "hermitcrm",
      "args": ["--data", "/Users/you/crm", "mcp"]
    }
  }
}

它提供十个读取工具(list_pipeline、search_companies、 show_company、digest、report、followups、brief、adjust_help、 adjust_read、bulk_preview)和七个写入工具(add_company、 add_contact、add_interaction、adjust_write、adjust_config、 bulk_apply、undo)。每次写入都会创建一个 git 提交,就像在 Web 应用中保存一样;adjust_write 会在保留文件前检查文件,bulk_apply 只有在运行 bulk_preview 后才会执行。详情请见 hermitcrm help ai-agents。

路线图

  • WhatsApp:将 WhatsApp 对话记录为交互,支持从导出的聊天记录或 Business Cloud API 导入。
  • 在 Web 应用中查看并恢复单条记录的历史版本。
  • 开箱即提供更多草稿语言。

贡献

请参阅 CONTRIBUTING.md 和 docs/ARCHITECTURE.md。 提交需要 DCO 签署(git commit -s)。安全问题请发送至 SECURITY.md 中的邮箱;该文件承诺会阅读报告,但不承诺修复。

支持

Hermit CRM 是免费开源软件,并将一直如此。如果它值得你每周使用,可以在 Ko-fi 打赏以支持其开发。应用的任何功能都不依赖打赏。

许可

Apache License 2.0——请参阅 LICENSE 和 NOTICE。

许可涵盖代码,但不涵盖 “Hermit CRM” 名称或 hermit logo(第 6 条):你可以分叉,但请更改名称。软件不提供任何担保,也不承担任何责任;第 7 条和第 8 条以法律措辞说明了这一点, DISCLAIMER.md 则以通俗语言作了说明。


由 Gijs Bos 构建。这是一个按现状分享的个人项目,不是产品, 也不是服务。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。