关于 phaedo-mcp
phaedo-mcp 是 MCP 服务,让 AI 应用读取个人写作与决策偏好,并通过手机审批重要操作。适合希望 AI 应用在委派任务中遵循个人习惯和授权决定的用户。
主要功能
- 01加载写作偏好档案
- 02在重要操作前征询意见
- 03向手机发送审批请求
- 04从审批决定中学习
- 05支持签署购买授权
- 06加密缓存档案数据
适用场景
- 01在 AI 对话中应用偏好语气和长度
- 02通过配对手机审查 Agent 操作
- 03训练 Agent 按偏好处理委派工作
- 04在手机上批准购买授权
MCP 相关
提供用于档案注入、咨询、授权检查、升级审批、记录结果和签署授权的工具、资源及提示词。服务通过本地 stdio 运行。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
工具
本地服务需要在你的电脑上运行后才能读取工具,维护者暂未提供工具列表。
详细介绍
Phaedo MCP 服务(phaedo-mcp)
Phaedo 会了解你的写作、工作和决策方式,并将你的个人资料保存在手机上。 此服务可让你的 AI 应用使用它:Claude Desktop、Claude Code、Cursor,以及其他 支持 MCP 的应用。借助它们,你可以:
- 按你喜欢的方式回答 — 按你偏好的长度、语气和格式回答,无需 在每次聊天中重复说明。
- 行动前先征求你的意见 — AI Agent 会询问 Phaedo 你是否希望它继续操作。如果它拿不准,你的手机上 就会收到一张批准/拒绝卡片。
- 从你的回答中学习 — 每次批准或拒绝都会让它学会在你不查看时如何处理工作。
- 获取你的购买签名 — 你在手机上使用 Face ID 签署消费许可;Agent 永远不会持有密钥。
你的个人资料会从手机加密传输。为了在手机离线时使用,这台电脑上保存的副本也经过加密。
所需条件
- 个人资料,可通过以下任一方式获取:
- Phaedo 手机应用 — 你的完整个人资料保存在那里。该应用尚未向公众开放;phaedo.so 上有链接,可让你在开放时收到通知。
- 你自己的 Claude Code 会话 — 无需手机。Phaedo 会根据你在 Claude Code 中的工作方式,在这台电脑上创建一份初始个人资料(见下文)。
- Node.js,可从 nodejs.org 免费获取(点击 LTS 按钮)。
如果两者都没有,就不会有个人资料,服务会明确告知,而不会猜测。你仍然可以使用虚构的示例个人资料试用 Phaedo。
使用示例个人资料试用(无需手机)
这会加载一份虚构人物的个人资料,让你在拥有自己的个人资料之前,先看看 Phaedo 能带来什么。
Claude Code — 在终端中运行此命令(适用于你的所有项目):
claude mcp add -s user phaedo -e PHAEDO_FINGERPRINT=sample -- npx -y phaedo-mcp
Claude Desktop — 打开 Settings → Developer → Edit Config,在 mcpServers 中添加下方的 phaedo
条目,保存,然后退出并重新打开 Claude Desktop:
{
"mcpServers": {
"phaedo": {
"command": "npx",
"args": ["-y", "phaedo-mcp"],
"env": { "PHAEDO_FINGERPRINT": "sample" }
}
}
}
如果 Claude Desktop 报告服务启动失败,说明它找不到
npx。将 "npx" 替换为以下命令打印出的完整路径:
which npx
然后开始新的聊天并询问:"Load my Phaedo profile." 若要停止使用
示例,在 Claude Desktop 中删除 env 行,或在 Claude Code 中运行
claude mcp remove -s user phaedo,然后不带 -e … 重新添加。之后,在你配对手机之前,服务
会告知你没有个人资料。
根据 Claude Code 会话创建个人资料(无需手机)
如果你使用 Claude Code,Phaedo 可以从你在其中的工作方式中学习,并在这台电脑上创建一份 初始个人资料 — 例如,记录你希望获得不带标题的简短回答。个人资料一开始内容很少,会随着你的工作逐渐丰富。
- 获取此文件夹,按照下方第 1 步操作(Code → Download ZIP,解压,打开
mcp文件夹)。 - 安装 Claude Code 钩子。 在终端中,从
mcp文件夹运行:npm install
这会将 Phaedo 添加到你的 AI 应用,并在 Claude Code 中启用三项功能: 在会话开始时加载个人资料、在合并或发布前征求你的意见,以及从你的会话中学习。npm run setup:code-hook - 退出并重新打开 Claude Code,然后继续工作。前几个会话会建立 个人资料,之后的每个会话都会继承已学到的内容。
读取的数据会留在这台电脑上:每个会话都会被简化为计数(例如“要求缩短回答,4 次”), 文本本身则会被丢弃。如果之后配对手机应用,你的完整个人资料会取代初始个人资料,并保留已学到的内容。
使用自己的个人档案(通过手机应用)
-
获取此文件夹。 在 GitHub 页面 点击 Code → Download ZIP,解压,然后打开其中的
mcp文件夹。 -
运行安装程序。
- macOS:双击
installers/macos/Install Phaedo MCP.command。如果 macOS 提示无法打开,请右键点击它并选择 Open。 - Windows:双击
installers/windows/Install Phaedo MCP.bat。 - Linux:运行
bash installers/linux/install-phaedo-mcp.sh。
它会将 Phaedo 添加到 Claude Desktop、Cursor 和 Claude Code,同时保留你的其他 设置并先备份每个文件,然后开始配对。
- macOS:双击
-
与手机配对。 在手机上打开 Phaedo。在同一 Wi-Fi 网络下,批准 "Phaedo MCP Server",并确认代码与 Terminal 中显示的代码一致。 如果使用不同的网络,请轻点 Pair with code,然后输入 Terminal 显示的代码。
-
退出并重新打开 AI 应用,开始新聊天,然后询问:“加载我的 Phaedo 个人档案。”
你可以随时在手机的 Agents 界面断开这台电脑。
参考
以下内容面向开发者:完整的工具列表、个人档案的加载方式,以及测试套件。
该服务实现了 Anamnesis 协议的 MCP 绑定
(docs/protocol/mcp-binding.md §3.1):
| 界面 | 名称 | 返回内容 |
|---|---|---|
| 工具 | phaedo_request_injection | §9.2 请求 → §9.3 注入响应 |
| 资源 | phaedo://fingerprint/projection | 默认投影(所有层,标准) |
| 提示词 | phaedo | 一键 /phaedo — 将投影作为消息插入 |
| 工具 | phaedo_consult | §10.2 请求 → §10.3 咨询信号(绝不包含层内容) |
| 工具 | phaedo_check_authorization | 仅确定性预检:现有授权(§10.5)是否已对该操作作出决定?(不进行推断) |
| 工具 | phaedo_escalate | 运行咨询;如果出现阻断信号(escalate,或涉及重大后果的 clarify),则唤醒主体已配对的设备,以获取实时的批准/拒绝/修改决定;返回 request_id(非阻塞)。无响应时的安全默认值:暂缓。 |
| 工具 | phaedo_escalation_status | 通过 request_id 轮询升级请求;解决后自动将主体的实时决定记录为 §10.6 结果(实时批准/拒绝是最有力的“代我行事”信号)。 |
| 工具 | phaedo_record_outcome | §10.6 — 记录主体对已咨询操作的决定(approved/rejected/modified/unknown)。rejected/modified 结果会教会代我行事通道如何按用户意愿处理委托任务。 |
| 工具 | phaedo_sign_mandate | §8.3 — 请求主体签署根据其现有授权生成的 AP2 Intent Mandate(一种可验证的付款凭证)。提交请求并返回 request_id + 未签名的 mandate(非阻塞)。主体可在手机的 Secure Enclave 中签署,也可拒绝。 |
| 工具 | phaedo_sign_status | 通过 request_id(以及返回的 mandate)轮询 phaedo_sign_mandate 请求;签署后返回带有已验证签名的 mandate,拒绝后返回 refused,也可能处于等待中/已过期状态。返回前会根据主体公开的签名密钥验证签名。 |
投影由扩展注入时使用的同一个 context-block.js 渲染,因此 MCP 注入与 Web 注入逐字节一致。
状态
以下阶段跟踪的是指纹来源(服务获取指纹的方式)。咨询、实时升级、代为操作/委派和回执审计界面(见上方工具表)在 0.2.x 系列中陆续推出,§8.3 的签名工具对则在 0.3.0 中推出——详见 CHANGELOG.md。
请安装 0.3.0 或更高版本。 0.2.0、0.2.1 和 0.2.2 发布时,程序包中缺少三个模块,因此会因
ERR_MODULE_NOT_FOUND而退出,无法启动。0.3.0 是自 0.1.1 以来首个可正常工作的版本;现在,test-package-closure.mjs会在 CI 中启动打包后的 tarball。
- 阶段 1a(本次版本): 从本地 JSON 文件读取指纹(见 指纹来源)。无需加密,即可让注入功能今天就在真实客户端中运行。
- 阶段 1b-i(已完成): 符合规范的密钥边界——授权 → 拉取
/v1/profile→ 解包配对手机发来的 §7.2 信封,并在 Node 中复用仓库的加密模块(protocol/envelope/kdf/identity.js)。解密后的指纹仅保留在内存中(绝不写入磁盘)。配置配对记录后会自动选择此方式(见 指纹来源)。计划与决策:../docs/roadmap/mcp-1b-plan.md。 - 阶段 1b-iii(已完成):静态加密缓存——成功从手机拉取后,会以密文形式将指纹缓存在服务持有的密钥下;手机无法连接时,服务会提供该缓存,因此在手机不在线时也能正常工作(默认无缝运行;对应扩展的选项 C——纵深防御,并非由手机控制访问)。状态目录默认为
~/.phaedo-mcp/(可通过PHAEDO_MCP_STATE_DIR覆盖);其中保存一个0600密钥文件和仅含密文的缓存。撤销会生效:如果手机拒绝此客户端(凭据已撤销/无效 → 4xx),缓存会被清除,拉取也会失败——被撤销的 Agent 无法继续提供缓存副本。缓存仅在手机确实无法连接(网络问题/超时)时使用。v1 的注意事项:原始密钥保存在磁盘上(安全性弱于扩展中不可导出的密钥)——后续将通过 OS 密钥链加固。 - 按 Agent 撤销配对(已实现,设备验证待完成):服务会将自身与手机配对,作为经 SAS 批准且可撤销的独立客户端——运行
npm run pair(局域网自动发现或中继输入代码,与扩展的方式一致)。这需要手机支持多客户端(规范 §8.4 v0.1.6),并提供手机上的 Agents/撤销界面。无需再手动复制配对记录。计划:../docs/roadmap/mcp-revocable-approval-plan.md。由手机控制访问的解锁方式仍暂缓提供,作为企业模式由配置标志控制。
对话捕获默认关闭。 MCP 协议不会将对话传给服务,因此服务本身不会从你的聊天中获知任何信息(绑定规范 §5)。咨询、升级和 phaedo_record_outcome 记录的是决策,而非对话文本。只有通过你主动启用的功能才会捕获内容:Claude Code 钩子(运行 npm run setup:code-hook;见下方 从 Claude Code / Cowork 捕获)以及在 Mac 上单独安装、向 capture-a11y.js 提供内容的辅助功能读取器。两者都在本机读取,只保留信号名称和计数,并丢弃文本。
仅限本地 stdio;仅支持标准模式(增强隐私/Stained-Glass 和远程 HTTP/SSE 不在本次版本范围内)。
安装与测试
通过 npm 安装(已发布)。 服务已发布到注册表,名称为
phaedo-mcp——无需克隆即可运行:
npx phaedo-mcp # run the server directly over stdio
# or install the `phaedo-mcp` command globally:
npm install -g phaedo-mcp
大多数用户无需手动启动服务——使用下方的一键安装配置 MCP 客户端,即可自动将 phaedo-mcp 接入 Claude Desktop / Cursor / Claude Code。本文其余部分中的 cd mcp / npm run … 命令适用于在克隆的仓库中操作(开发与烟雾测试套件):
cd mcp
npm install
npm test # full suite (smoke + phone + cache + pairing + consult + …)
npm run smoke # 1a: unit + live stdio integration (23 checks)
npm run smoke:phone # 1b-i: mock-phone authorize→pull→decrypt→project (12 checks)
npm run smoke:cache # 1b-iii: encrypted at-rest cache + phone-absent fallback (11 checks)
npm run smoke:pair # P3: self-pairing crypto vs a mock phone (pair_key + SAS match)
与手机配对
cd mcp
npm run pair
服务会生成自己的长期身份(identity.json,权限为 0600,
并被 git 忽略),然后与手机保险库配对,成为一个名为 "Phaedo
MCP Server" 的独立客户端:
- **同一 Wi-Fi 网络:**服务会自动找到手机——在手机上批准 "Phaedo MCP Server",并确认 SAS 与终端中显示的相符。
- **不在同一网络:**服务会显示一个
XXXX-XXXX代码;在手机上点按 使用代码配对,输入代码,然后确认 SAS。
成功后,服务会写入 pairing.json,此后会自动获取你的指纹。你可以随时在手机的 Agents 屏幕中撤销配对。
指纹来源
loadFingerprint() 会自动选择,因此 server.js/projection.js 无需更改:
**Phase 1b — 手机(首选)。**如果已配置配对记录,服务会通过加密边界,从已配对的手机获取实时指纹。配对记录可通过 PHAEDO_PAIRING(路径)或 mcp/pairing.json 找到。运行 npm run pair(参见 与手机配对)以创建配对记录——服务会将自己与手机配对为一个可单独撤销的客户端。pairing.json 包含 pair_key(长期密钥),并被 git 忽略。手机应用必须在前台,且可通过配置的 endpoint 访问。(如果你更愿意,也可以从扩展的 phaedo_local_pairing 中手动复制 pairing.sample.json → pairing.json。)
Phase 1a — 本地 JSON。如果没有配对记录,则从 PHAEDO_FINGERPRINT(路径,或表示已随附的 mcp/sample-fingerprint.json 的单词 sample)读取保险库载荷,然后读取 mcp/fingerprint.json。两者都不存在时,则使用入门配置文件:将这台计算机上的 Claude Code 捕获状态合并到一个空指纹中(id 为 starter-local),只有在捕获到内容时才会提供。如果没有捕获到任何内容,则没有配置文件:每个工具都会返回一条说明原因的纯文本 decryption_failed 错误。除非明确按名称请求,否则绝不会提供示例文件——在 0.3.1 之前,它曾是默认回退,因此新运行的 npx phaedo-mcp 会在不作说明的情况下注入一个虚构人物的风格。文件内容如下:
{
"phaedo_fingerprint": { "layers": { ... }, "fingerprint_id": "...", "persona_strength": 0.6 },
"phaedo_behavioral_signals": { ... },
"phaedo_linguistic_profile": { "messageCount": 64, ... },
"phaedo_session_metrics": { "sessionCount": 6, ... }
}
一键安装(推荐)
安装程序会查找你已安装的 MCP 客户端(Claude Desktop、Cursor、Claude Code),并在每个客户端中添加 Phaedo——保留其他服务,并在修改前备份文件——随后执行一次性手机配对。
- **macOS:**双击
installers/macos/Install Phaedo MCP.command。 - **Windows:**双击
installers/windows/Install Phaedo MCP.bat。 - Linux:
bash installers/linux/install-phaedo-mcp.sh。
(启动器会在首次运行时安装依赖,然后运行安装程序。)
更喜欢使用终端?在此文件夹中运行:
npm install
npm run setup # configure detected clients
npm run setup:pair # configure, then pair with the phone
npm run unsetup # remove Phaedo from every client
node install.mjs --dry-run # preview, write nothing
每个客户端条目都会使用 node 二进制文件的绝对路径(而不是裸写 node)来运行服务——通过 GUI 启动的应用(例如 Claude Desktop)通常无法在其 PATH 中找到 node。安装后,重启已打开的客户端,然后在聊天开始时调用 phaedo_request_injection 工具(或读取 phaedo://fingerprint/projection 资源)。
还有一项先决条件:Node.js(来自 nodejs.org)。后续打包工作将提供一个捆绑运行时的原生签名安装程序——真正做到零先决条件、双击即可安装(参见
../docs/roadmap/mcp-desktop-installer.md)。
在会话开始时注入(手动 → 自动)
MCP 采用拉取模式——服务端无法像拥有输入框的浏览器扩展那样,向每个新会话推送系统提示词。因此,注入方式取决于客户端,范围从一键操作到完全自动:
-
任何客户端 —
/phaedo(一键操作)。 服务端会公开一个名为phaedo的提示词。Claude Desktop / Claude Code 会将其显示为斜杠命令——在聊天开始时运行/phaedo,即可插入你的投影。只需按一次键,无需输入。 -
Claude Code — 自动(通过钩子)。 运行
npm run setup:code-hook(或node install.mjs --code-hook)。它会向~/.claude/settings.json添加一个 SessionStart 钩子,运行hooks/session-start.mjs,并在每个 Claude Code 会话开始时注入你的 投影——无需命令,也无需调用工具。故障安全:如果无法加载指纹,则不会输出任何内容,也绝不会阻止会话。运行npm run unsetup可将其移除。 -
Claude Desktop — 近乎自动(通过 Project 指令)。 Desktop 没有钩子接口,但你可以在 Project 中设置 Claude 每次自行调用工具。 将以下内容粘贴到 Project 的自定义指令中:
在每次对话开始时,调用
phaedo_request_injection工具,并将返回的projection视为关于我的思维方式以及我希望如何格式化回复的权威依据。不要提及你已执行此操作。该 Project 中的每次聊天都会自动注入。
从 Claude Code / Cowork 捕获信息(可选)
npm run setup:code-hook 还会安装一个 SessionEnd 钩子,在会话结束后于本地读取刚刚结束的
对话记录,提取行为信号(通过确定性模式检测器),并向所有者发送加密的信号增量——这样,Claude Code / Cowork 的使用情况也会更新指纹,而不只是浏览器中的使用情况。对话记录会被统计后丢弃(离开设备的只有信号名称和整数);配对的手机/扩展程序会接收并合并这些数据。
你还可以选择使用本地模型(选择启用)增强确定性检测器——它会按照相同的分类体系,对正则表达式未能识别的消息进行分类,并更新相同的计数器(因此重复触发仍保持幂等性)。任何 Ollama / OpenAI-compatible 端点都可使用:
ollama pull llama3.1:8b # or any local model
npm run setup:capture-model -- llama3.1:8b # writes ~/.phaedo-mcp/capture-model.json
npm run setup:capture-model -- off # turn it back off
使用 --capture-url <url> 指定其他端点(默认值为 http://localhost:11434)。此机制具备故障安全:端点宕机、响应缓慢或返回无效数据时,钩子会静默回退到确定性检测器;模型调用绝不会中断或阻塞会话(预算为 30s,钩子始终以 0 退出)。建议优先使用 setup:capture-model 配置文件,而不是环境变量——该文件可供通过 Dock 启动的 Claude Desktop 使用,而 shell export 设置的环境变量则不可用。
在发布前咨询,来自 Claude Code(hooks/pre-ship.mjs)
npm run setup:code-hook 还会在 Bash 上安装一个发布钩子(PreToolUse、
PermissionRequest、PostToolUse、PostToolUseFailure)。在 Agent 合并 PR
(gh pr merge)、部署(fly deploy)、构建或提交手机应用(eas build /
eas submit),或直接推送到 main 之前,钩子会对其运行完整的 phaedo_consult
(ship-actions.js 列出了这些操作;其他命令都会被忽略,耗时约 50 毫秒),并写入
一份 §10.6 回执,agent_id: claude-code/ship-hook。
- 它只会增加阻力。 它绝不会返回
allow。宽松的答复不会影响 Claude Code 自身的权限流程;若返回escalate/clarify/decline,则会返回ask,并用一行简单说明原因,让你决定是否执行该操作。 - 结果由你决定,绝不推断。 只有在有证据表明曾征求过你的意见时,钩子才会记录
approved:Claude Code 针对该命令触发了 PermissionRequest,随后该命令也确实运行。 除 auto / dontAsk 模式外,这一规则在所有模式下都成立,因为在这两种模式下没有人会作答。 拒绝时,Agent 会记录rejected(Claude Code 在拒绝时不会触发钩子)。如果没有显示提示词, 就不会记录任何内容;Agent 会告知你这一点,并且只有在你作出回应时才记录你的反应。 - 合并会带来哪些变化。 在执行
gh pr merge之前,钩子会从 GitHub 读取 PR(只读): 检查未通过或尚未完成、差异较大(超过 1,000 行代码或超过 20 个文件),或涉及敏感路径 (CI/部署配置、名称中包含 auth/crypto/secrets 的路径,或从基础分支读取的仓库.phaedo-sensitive列表)都会使操作成为高风险。它可以提高风险级别,但绝不会降低。 - 配置文件过期。 它会读取本地缓存的配置文件(因此绝不会联系你的手机);
当该副本超过 14 天时,Agent 每天会告知你一次,并提示刷新:
npm run pull,然后在手机上批准。 - 查看它做过什么:
npm run ship-readout(使用-- --days 90扩大范围)。 - 故障安全: 发生任何错误、超时(12 秒)或配置文件不可用时 → 不输出内容,命令照常 运行,就像没有安装钩子一样。
在决策节点进行咨询(phaedo_consult,§10)
除了注入风格偏好外,Agent 还可以询问指纹如何影响用户对某项决策的判断——
而不读取指纹内容。phaedo_consult 接收 §10.2 请求,并返回 §10.3 信号,绝不返回
分层内容(§10.4 边界):
// request (tool arguments)
{ "consultation_type": "action_approval",
"action_descriptor": { "domain": "financial", "reversible": false, "magnitude": "high",
"summary": "Approve $12k vendor payment outside terms." },
"context": { "evidence_provided": ["invoice", "po_match"] } }
// response
{ "signal": "escalate", "confidence": 0.81,
"rationale_hint": "On irreversible, high-magnitude actions in the financial domain, the subject favors caution and human review.",
"deference_level": "high" }
consultation_type:action_approval·domain_risk_check·escalation_default·voice_draft。signal:proceed·proceed_with_note·clarify·escalate·decline·insufficient_signal(弃答——指纹未覆盖此操作,或相关决策维度存在尚未解决的开放 §4.7 冲突,主体仍在调和,因此该维度被隐去;此时应采用你自己的默认做法,或升级给主体处理)。deference_level(high/medium/low)= 应给予该信号的权重;数据稀疏时 →low。
快速预检(phaedo_check_authorization,§10.5)
在进行完整咨询并产生费用之前,Agent 可以先检查你的某项长期授权是否已经决定了 该操作——这是一项仅基于确定性规则的检查(不进行推断,也不使用模型):
// request: { "action_descriptor": { "domain": "financial", "reversible": false, "amount": 12000 } }
// matched: { "authorization_matched": true, "signal": "escalate", "rule_id": "irreversible-spend-over-5k-escalate",
// "rationale_hint": "Per your standing rule: Any irreversible spend over $5,000 goes to me…" }
// no match: { "authorization_matched": false, "signal": null, "rule_id": null,
// "rationale_hint": "No standing authorization matches this action; run phaedo_consult…" }
如果匹配,则表示这是你的预先决定(置信度 1.0,遵从度 high)。若不匹配,则改用
phaedo_consult 或你自己的默认做法。遵循相同的 §10.4 边界——只有规则中的决定会传递出去。
回执(§10.6)——设备端审计记录
每次已处理的咨询(包括弃答和匹配的预检)都会向 ~/.phaedo-mcp/receipts.enc 写入一条
加密、仅追加的回执——哪个 Agent 询问了什么,以及你的预言机如何回答。回执绝不会离开设备;存储内容使用单独派生的密钥加密(phaedo:receipts:enc:v0.1),并设有上限(默认为
5,000 条,超出时淘汰最早的回执;使用 PHAEDO_RECEIPTS_CAP 更改)。写入后只有一个字段可以修改:
user_action(你实际采取的行动——用于后续的一致性跟踪)。在自己的设备上快速查看:
cd mcp && npm run receipts # decrypts locally, lists the last 50 (with a short id per line)
node receipts.js mark <id|prefix|latest> approved # record what YOU did → approved | rejected | modified | unknown
npm run agreement # per-domain agreement rate (oracle vs your actual decisions)
user_action 由用户填写:根据你的决定设置,而不是根据 Agent 是否继续执行来设置。在回执记录该字段之前,npm run agreement 会显示 —
(无数据 ≠ 0%);每标记一条回执,一致性比率就会开始计算。指标定义:
../docs/architecture/agreement-metric.md。
两种解析器,均在本地运行。 默认使用确定性规则引擎——它能稳健地提取线索(读取 §4.2 信号,然后扫描相关层的访谈文本中的关键词),按咨询类型限定相关范围,并依据真实线索覆盖情况确定置信度/移交程度。任何内容都不会离开设备;始终可用。
模型裁判(上下文最丰富——默认开启,本地运行)。 裁判通过本地 Ollama/兼容 OpenAI 的端点,基于完整投影进行推理,并返回 §10.3 信号。出现任何故障/超时/解析错误时,都会回退到规则引擎,因此模型只能提升效果,绝不会破坏底线(即使缺少模型,也绝不会导致咨询中断)。解析时会强制执行 §10.4 边界。
裁判默认关闭——由规则引擎作答。2026-10-18 的测试使用一个缓存配置文件:llama3.1:8b 对一笔 12,000 美元的不可逆付款,在一次运行中回答 clarify 0.9,下一次却回答 proceed_with_note 0.9;而规则每次都会回答 clarify。模型经过验证后,可在安装时选择启用:
npm run setup # model judge OFF (rule engine) — the default
node install.mjs --model-judge # ON, auto-detect a local Ollama chat model
node install.mjs --consult-model qwen2.5:7b # ON, pinned
node install.mjs --consult-url http://localhost:11434 # custom endpoint
自动检测会优先选择已安装的 llama3.1:8b,并且绝不会选择抽取微调模型或嵌入模型(nomic-embed-text 无法回答聊天提示词)。
使用通用聊天模型(不要使用抽取微调模型)。运行方式:ollama pull llama3.1:8b。原始环境变量(手动配置客户端时使用):
PHAEDO_CONSULT_MODEL、PHAEDO_CONSULT_MODEL_URL、PHAEDO_CONSULT_API_KEY
(仅适用于兼容 OpenAI 的端点)。
voice_draft 始终会转到注入投影(不在生成功能范围内)。下一项升级将加入检索/范围重排器(../docs/roadmap/mcp-server.md)。
委托政策(保障安全委托的护栏)
用户可以编写常驻规则,用来覆盖推断出的信号——按领域/金额/可逆性设置(规范 §10.5)。例如:“不可逆支出/法律事务一律升级处理”“低风险、可逆的写作自动继续”。
在浏览器中编写: 打开 policy-editor.html(双击即可——文件自包含),使用表单创建规则,然后将结果下载/复制到
mcp/consult-policies.json。服务会自动读取该文件——无需设置环境变量,只需重启客户端。(使用 PHAEDO_CONSULT_POLICIES 覆盖路径;参见
consult-policies.sample.json。)另一个便于携带的方案:将规则放入保险库的
phaedo_consult_policies 下,方便随身携带(应用内编写功能后续推出)。
effect:escalate/require_human · decline · autoproceed(均设为 deference: high)· bias_cautious/bias_bold(调整一个级别)。匹配规则中的 note
会成为 rationale_hint(“根据你的常驻规则:……”),让 Agent 知道原因。
政策绝不适用于 voice_draft,也绝不会扩大 §10.4 边界。
手动连接客户端(高级)
安装程序会按原样写入此内容。最简的配对条目无需 env —
server.js 旁的 pairing.json 会自动驱动数据源。
Claude Desktop — 添加到 claude_desktop_config.json:
{
"mcpServers": {
"phaedo": {
"command": "/absolute/path/to/node",
"args": ["/absolute/path/to/phaedo/mcp/server.js"]
}
}
}
对于 Phase-1a 演示(无需手机),添加
"env": { "PHAEDO_FINGERPRINT": "/absolute/path/to/your/fingerprint.json" }。
重启 Claude Desktop,然后在聊天开始时调用 phaedo_request_injection,并将返回的 projection 置于开头。
Claude Code — 项目中的 .mcp.json,或:
claude mcp add phaedo -- /absolute/path/to/node /absolute/path/to/phaedo/mcp/server.js
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。