Patricia
官方Patricia将您的AI客户端连接到一个Patricia工作区。读取工作区记忆和文件,检查已集成的连接,并在人工审批控制下将工作委派给Patricia。
你可以用 Patricia MCP 做什么?
- 安装并配置插件 — 请让您的 AI 通过市场安装
patricia插件,并使用 OAuth 或个人令牌登录。 - 自动引导项目 — 当配置了令牌时,
SessionStart钩子会向您问好,并在每个项目中提供一次引导技能。 - 回忆相关记忆 —
UserPromptSubmit钩子通过search_memory将相关记忆添加到符合条件的提示中,最多发送 300 个字符。 - 在工具运行前检查集成 —
PreToolUse钩子会在本地对照已知的提供商目录检查WebFetch、WebSearch和Bash输入,不进行任何网络调用。 - 建议记忆推送 — 在本地记忆写入后,
PostToolUse钩子会建议使用显式范围的remember,而Stop钩子会在重要会话后提醒您。 - 管理设置和文件 — 使用
get_settings、update_settings、list_files和get_brand_kit来读取或更改工作区配置和品牌资产。
文档
[!NOTE] 此仓库由
bettergroupinc/patricia-monorepo在plugins/patricia/生成。 自动化同步此公共镜像。 源提交:147037702592109a4944cdbfb94bdcabb33f490f。 请在单体仓库中提交拉取请求和问题。
patricia Claude Code 插件
安装一次后,代理无需再次被告知即可正确使用 Patricia 的 MCP 服务器。
它包含三部分内容。
- 指南。 五个技能涵盖 Patricia 基础知识、入门、委派工作、集成和记忆桥接。
- MCP 连接。 安装配置了 Patricia 的 Streamable HTTP 服务器以进行 OAuth 登录。
- 五个本地钩子。 它们负责项目入门、回忆记忆、优先检查集成,并提出记忆推送建议。它们从不写入 Patricia。
这是一个可分发的 Claude Code 插件。用户在自己的机器上安装它,它在该用户的 Claude Code 会话中运行。它不是 Patricia 的产品技能目录,其中没有任何内容在 Patricia 内部运行。
安装
claude plugin marketplace add patricia-app/patricia-plugin
claude plugin install patricia@patricia
然后启动新会话,或运行 /reload-plugins。
该市场是 https://github.com/patricia-app/patricia-plugin.。自动化从 Patricia 的单体仓库生成其中的每个文件。
贡献者说明:单体仓库是私有的。有权限的贡献者可以将单体仓库本身添加为市场,因为其根目录的 .claude-plugin/marketplace.json 将 patricia 插件指向 ./plugins/patricia。
请安装它。不要使用 --plugin-dir 加载它。 通过目录加载的插件只能获得技能而无法获得钩子,因此指南可以工作,但记忆桥接永远不会触发。这是经过测量而非假设得出的结论:通过 --plugin-dir 加载的探测钩子从未运行,而在相同的无头模式下,在项目设置中声明的相同钩子在相同的写入操作上运行了。Claude Code 仅为已安装且已启用的插件注册插件的 hooks/hooks.json。
claude plugin details patricia 报告了安装结果:
Component inventory
Skills (5) delegating-work, integrations, memory-bridge, onboard, using-patricia
MCP servers (1) patricia
Hooks (5) SessionStart, UserPromptSubmit, PreToolUse, PostToolUse, Stop
登录 MCP 服务器
插件配置 MCP 服务器时不存储标头。首次使用时,运行 /mcp 并选择 Patricia。您也可以从终端启动 OAuth 流程:
claude mcp login plugin:patricia:patricia
MCP OAuth 登录和钩子的 pat_mcp_ 个人令牌是分开的凭据。仅 OAuth 不会激活依赖令牌的钩子。
在 OAuth 不适用时,可以使用令牌作为替代方案:
claude mcp add --transport http patricia https://api.patricia.app/v1/mcp \
--header "Authorization: Bearer $PATRICIA_MCP_TOKEN"
pat_mcp_ 个人令牌标识责任人并且可以写入。pat_live_ 租户 API 密钥不标识任何人,因此只能读取,并且无法回答 list_skills 或 list_integrations。
为本地钩子提供个人令牌
本地钩子需要通过 python3 命令提供 Python 3。
在 Patricia 中,在“设置”>“开发者”>“个人密钥”下创建 pat_mcp_ 个人密钥。然后选择一种设置方式:
export PATRICIA_MCP_TOKEN="pat_mcp_..."
或者在 ~/.claude/patricia.json 处写入此文件:
{
"token": "pat_mcp_..."
}
PATRICIA_MCP_TOKEN 优先于文件。空的 PATRICIA_MCP_TOKEN 会禁用文件回退。这是有意为之的行为。它允许用户在不移动文件的情况下暂停经过身份验证的钩子。
本地钩子
所有五个钩子默认开启。配置文件缺失或钩子键缺失时保持开启。配置格式错误或不可读时关闭。在 ~/.claude/patricia-plugin.json 中将钩子的列出的键设置为字面值 false,以仅关闭该钩子。
入门
- 触发时机和操作:
SessionStart在新会话或恢复会话时运行。它向连接的用户问好,并为每个项目提供一次入门技能。 - 成本: 使用令牌时,它会发起一次
whoami调用。网络超时为 3 秒,钩子超时为 10 秒。 - 关闭开关:
hooks.onboarding.enabled设置为false。 - 隐私: 使用令牌时,只有经过身份验证的
whoami请求会离开机器。提示、记录或项目内容不会通过此钩子离开。
回忆
- 触发时机和操作:
UserPromptSubmit在每次提交提示之前运行。它跳过命令、简短回复、确认和纯代码输入。它为符合条件的提示添加相关记忆。 - 成本: 使用令牌且提示符合条件时,它会发起一次
search_memory调用。网络超时为 3 秒,钩子超时为 8 秒。 - 关闭开关:
hooks.recall.enabled设置为false。 - 隐私: 它会将最多 300 个字符的折叠提示发送到 Patricia。仅当配置了令牌时才发送该文本。
集成优先
- 触发时机和操作:
UserPromptSubmit检查提示。PreToolUse在工具运行前检查WebFetch、WebSearch和Bash输入。本地目录识别已知提供商。 - 成本: 它不进行 MCP 或网络调用,也不需要令牌。提示的钩子超时为 8 秒,工具调用前为 5 秒。
- 关闭开关:
hooks.integrations_first.enabled设置为false。 - 隐私: 没有任何内容离开机器。钩子在本地检查提示或工具输入。
记忆桥接
- 触发时机和操作:
PostToolUse在Write、Edit或MultiEdit之后运行。它注意到保存的本地记忆笔记,并提出带有明确范围的remember。 - 成本: 它不进行 MCP 或网络调用。钩子超时为 5 秒。
- 关闭开关:
hooks.memory_bridge.enabled设置为false。旧版~/.claude/patricia-memory-bridge.json文件也可以将enabled设置为false。 - 隐私: 脚本在本地读取保存的笔记,不通过网络发送任何内容。它将笔记路径和提醒文本返回给 Claude Code,而不包含笔记内容。
推送提醒
- 触发时机和操作:
Stop在代理完成时运行。在本地记忆写入或大量使用工具但未向 Patricia 写入记忆的会话后,它提出remember。 - 成本: 它不进行 MCP 或网络调用。钩子超时为 8 秒。
- 关闭开关:
hooks.push_reminder.enabled设置为false。 - 隐私: 它最多读取 5 MB 的本地记录,不发送任何内容。它仅在配置了令牌时运行,因此提议的记忆调用可以在用户同意后成功。
网络和凭据
此插件通过 Streamable HTTP 连接到 https://api.patricia.app/v1/mcp。
Patricia 使用带有 PKCE S256 的 OAuth 2.1。完成的 OAuth 流程为客户端提供个人 pat_mcp_ 承载令牌。
插件清单不包含任何凭据。登录后,客户端将承载令牌发送到 api.patricia.app。
其他市场
- Cursor 从此包中读取
plugin.json和mcp.json。 - OpenAI Codex 和 ChatGPT 读取
.codex-plugin/plugin.json。 - 远程源条目不需要清单。xAI 在存在时读取
.claude-plugin/plugin.json。
所有市场包都指向此包中的单个 skills/ 树。
assets/icon.png 是 Patricia 的第一方品牌资产。
记忆桥接只提议,从不写入
钩子是一个 shell 命令。它不持有 MCP 客户端,没有获得任何人的同意,也无法区分笔记中的团队事实和私人事实。一个将每个本地笔记都发送到共享工作区的钩子会静默地将特定于机器的、一次性的和私人的笔记展示给整个团队。这正是桥接要避免的失败模式,而不是推迟的功能。
因此,钩子只做一件事:它注入 hookSpecificOutput.additionalContext,告诉代理该笔记仅限本地,并且 remember 需要 scope。代理决定范围,询问其用户,并进行调用。判断和写入保持在同一个地方。
四个门保持其安静:
| 门 | 效果 |
|---|---|
任一支持的配置将桥接的 enabled 值设置为 false | 静默。没有该值,桥接开启。 |
| 写入的路径在记忆目录之外 | 静默。 |
| 写入未成功,或文件为空 | 静默。 |
笔记的前置元数据带有 patricia: skip | 静默。 |
它还会在每次会话中最多提供一次给定笔记,因此 Write 后跟一系列 Edit 调用会产生一个提醒而不是四个。该记录存储在 ~/.claude/patricia-memory-bridge-state/ 中,每个会话一个文件,七天后清理。
它不使用 CLAUDE_PLUGIN_DATA 来实现这一点。该变量存在于钩子的环境中,但不可靠地是正在运行的插件自身的目录:此机器上的项目级钩子看到它设置为 ~/.claude/plugins/data/codex-openai-codex,这是一个无关插件的数据目录。
记忆写入实际使用哪个工具
Claude Code 2.1.238 声明了名为 memory_list、memory_read 和 memory_write 的工具。在构建此插件的机器上,记忆笔记不是用它们写入的:对最近 120 个会话记录的扫描发现,有 49 次 Write 和 35 次 Edit 调用进入 ~/.claude/projects/*/memory/,以及零次 memory_write 调用。
因此,匹配器是 Write|Edit|MultiEdit。memory_write 被有意排除。为尚未验证负载形状的工具添加匹配器,会得到一个静默永不触发且看起来与正常工作的钩子完全相同的钩子。当读取到真实的 memory_write 负载时,再添加它。
指南和服务器常驻规则是一份副本,而不是两份
start_onboarding_import 可能返回一个 standing_rule_to_offer,其中包含 ask_first、instruction 和一个大小适合放入他人 CLAUDE.md 的 markdown 块。该技能不会重述该块。它告诉代理调用工具并使用返回的内容,因此服务器保持该措辞的唯一所有者。
在安装时获取它是另一种选择,但行不通。插件的 SKILL.md 是内容寻址缓存中的静态文本,没有安装时步骤可以重写它,而且一个负责设置 Patricia 的插件不能依赖正常工作的经过身份验证的 Patricia 连接来渲染自己的指令。在使用时读取工具可以以相同的方式获得单一副本,而无需任何这些。
此处的每个工具名称都是真实工具
此插件中每个带反引号的工具标识符都与服务器自身的工具注册表进行核对,该注册表是服务器从 tools/list 构建的列表。相同的检查断言它找到了一组非空的标识符,因此损坏的提取器无法通过找不到任何内容而通过。
贡献者说明:该检查是 Patricia 单体仓库中的 backend/api/tests/test_patricia_claude_plugin.py,它在此插件的每次更改时运行。
设置和文件发现
| 工具 | 用途 |
|---|---|
get_settings | 列出设置,或读取选定的键或组及其含义、值和权限。任一凭据都可以读取工作区组。 |
update_settings | 通过仪表板操作更改一个允许的组。需要个人令牌。 |
list_files | 列出文件。第一页包含文件夹和按可见性过滤的计数。 |
get_brand_kit | 读取品牌颜色、排版和徽标。 |
使用 get_settings(keys=["company_profile"]) 获取公司资料。设置工具共享 Patricia 在聊天中使用的目录和操作。聊天设置更改需要请求用户点击确认。审批策略更改会影响控制台运行;关键和提供商要求的操作保留其审批底线,受众和仅点击底线保留在 Patricia 已询问的任何操作上。
集成读取在另一个任务为同一用户运行时等待。使用 get_task_status 轮询该任务,或等待其完成。直接集成审批后,遵循 decide_approval 返回的 next 句子。它指定了要使用相同的 tool_ref 和参数再次调用的工具。