mcpField
P
phaedo-mcp

phaedo-mcp

本地服务
github.com/phaedo-labsAI 与智能体01 天前更新

关于 phaedo-mcp

phaedo-mcp 是 MCP 服务,让 AI 应用读取个人写作与决策偏好,并通过手机审批重要操作。适合希望 AI 应用在委派任务中遵循个人习惯和授权决定的用户。

主要功能

  1. 01加载写作偏好档案
  2. 02在重要操作前征询意见
  3. 03向手机发送审批请求
  4. 04从审批决定中学习
  5. 05支持签署购买授权
  6. 06加密缓存档案数据

适用场景

  1. 01在 AI 对话中应用偏好语气和长度
  2. 02通过配对手机审查 Agent 操作
  3. 03训练 Agent 按偏好处理委派工作
  4. 04在手机上批准购买授权

MCP 相关

提供用于档案注入、咨询、授权检查、升级审批、记录结果和签署授权的工具、资源及提示词。服务通过本地 stdio 运行。

配置

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

mcp.json · 通用配置
{
"mcpServers": {
"phaedo-labs-phaedo": {
"command": "npx",
"args": [
"-y",
"phaedo-mcp"
]
}
}
}
启动命令npx -y phaedo-mcp

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

安装包
npmphaedo-mcp0.3.13

工具

还没有获取到工具列表

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

详细介绍

Phaedo MCP 服务(phaedo-mcp)

Phaedo 会了解你的写作、工作和决策方式,并将你的个人资料保存在手机上。 此服务可让你的 AI 应用使用它:Claude Desktop、Claude Code、Cursor,以及其他 支持 MCP 的应用。借助它们,你可以:

  • 按你喜欢的方式回答 — 按你偏好的长度、语气和格式回答,无需 在每次聊天中重复说明。
  • 行动前先征求你的意见 — AI Agent 会询问 Phaedo 你是否希望它继续操作。如果它拿不准,你的手机上 就会收到一张批准/拒绝卡片。
  • 从你的回答中学习 — 每次批准或拒绝都会让它学会在你不查看时如何处理工作。
  • 获取你的购买签名 — 你在手机上使用 Face ID 签署消费许可;Agent 永远不会持有密钥。

你的个人资料会从手机加密传输。为了在手机离线时使用,这台电脑上保存的副本也经过加密。

所需条件

  1. 个人资料,可通过以下任一方式获取:
    • Phaedo 手机应用 — 你的完整个人资料保存在那里。该应用尚未向公众开放;phaedo.so 上有链接,可让你在开放时收到通知。
    • 你自己的 Claude Code 会话 — 无需手机。Phaedo 会根据你在 Claude Code 中的工作方式,在这台电脑上创建一份初始个人资料(见下文)。
  2. 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. 获取此文件夹,按照下方第 1 步操作(Code → Download ZIP,解压,打开 mcp 文件夹)。
  2. 安装 Claude Code 钩子。 在终端中,从 mcp 文件夹运行:
    npm install
    
    npm run setup:code-hook
    
    这会将 Phaedo 添加到你的 AI 应用,并在 Claude Code 中启用三项功能: 在会话开始时加载个人资料、在合并或发布前征求你的意见,以及从你的会话中学习。
  3. 退出并重新打开 Claude Code,然后继续工作。前几个会话会建立 个人资料,之后的每个会话都会继承已学到的内容。

读取的数据会留在这台电脑上:每个会话都会被简化为计数(例如“要求缩短回答,4 次”), 文本本身则会被丢弃。如果之后配对手机应用,你的完整个人资料会取代初始个人资料,并保留已学到的内容。

使用自己的个人档案(通过手机应用)

  1. 获取此文件夹。 在 GitHub 页面 点击 Code → Download ZIP,解压,然后打开其中的 mcp 文件夹。

  2. 运行安装程序。

    • 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,同时保留你的其他 设置并先备份每个文件,然后开始配对。

  3. 与手机配对。 在手机上打开 Phaedo。在同一 Wi-Fi 网络下,批准 "Phaedo MCP Server",并确认代码与 Terminal 中显示的代码一致。 如果使用不同的网络,请轻点 Pair with code,然后输入 Terminal 显示的代码。

  4. 退出并重新打开 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

评论

支持 Markdown

第一次接触 MCP?

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

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