mcpField
C
consult

consult

本地服务
getconsult.devAI 与智能体11 周前更新

关于 consult

consult 是供编码 Agent 使用的 MCP 服务,可调用本机已登录的 Claude Code、Codex、Grok 和 Antigravity CLI 获取其他模型的意见,无需另配 API 密钥。它还可并行审查代码变更,并可选支持询问现有会话或分派编码任务。

主要功能

  1. 01向其他编码 CLI 询问意见
  2. 02并行征询多个顾问
  3. 03审查 Git 变更与拉取请求
  4. 04询问或发送消息给运行中的会话
  5. 05向 Codex 或 Grok 分派任务

适用场景

  1. 01在修复多次失败后征求第二意见
  2. 02提交前让多个 Agent 审查变更
  3. 03评估架构或数据模型决策
  4. 04将编码任务交给 Codex 或 Grok

MCP 相关

consult 是 MCP 服务,将本机已登录的 Agent CLI 暴露为顾问工具,并注册到找到的 Claude、Codex 和 Grok CLI。可选功能还提供会话查询、消息和任务分派工具。

配置

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

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

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

安装包
npmconsult-mcp1.2.0

工具

4

收录的工具列表 · 更新于 1 周前

参数类型必填说明
cwdstring否顾问可读取的目录。默认使用启动此服务时所在的目录
agentenum是要咨询的 CLIclaude | codex | grok | agy
modelstring否该 CLI 使用的模型,例如 gpt-6-astra、opus、grok-4.7、gemini-3.1-pro-high。不填则使用该 CLI 的默认模型;list_agents 会列出可选项
effortenum否推理强度。省略时使用 CLI 的默认值low | medium | high
questionstring是问题,提供足够的上下文以便回答(文件路径、你尝试过的内容、限制条件)
session_idstring否用于提出后续问题的先前回复中的 session_id

详细介绍

consult

让你的编码 Agent 获得第二种意见。

consult 是一个 MCP 服务,可让 Claude Code、Codex 和 Grok 通过你机器上已登录的 CLI 互相征求建议,也可向 Google 的 Antigravity CLI 征求建议。无需 API 密钥:每位顾问都使用其 CLI 已在使用的订阅。

使用 Opus 的 Claude Code 可以请使用 GPT-6 Astra 的 Codex 审查计划,Codex 可以询问 Grok 为什么某项测试不稳定,或者让其中任意一个一次向其他所有顾问提问。在宣布工作完成之前,Agent 可以通过一次调用让其他厂商审查其差异,你也可以在终端中这样做:

npx -y consult-mcp@latest review            # every installed advisor reviews your uncommitted changes
npx -y consult-mcp@latest review --base main

启用实时会话后,Agent 还可以向你已经运行的会话提问并与其交流;启用任务分派后,还可以将编码任务交给 Codex 或 Grok 工作器,并跟踪其进度。

getconsult.dev · npm

安装

npx -y consult-mcp@latest install

这会在用户级别向它在 PATH 中找到的每个 Agent CLI(claude、codex、grok)注册 consult。之后请重启正在运行的 Agent 会话。

Antigravity(agy)仅作为顾问。consult 不会向 agy 注册自身,因为只有在未启用 MCP 服务的情况下,才能确保 agy 处于只读状态(详情)。如果在安装 consult 后安装 agy,请重新运行 install,以便服务的 PATH 包含它。

它会保持最新。 宿主会通过 npx -y consult-mcp@latest serve 启动服务,因此每个新 Agent 会话都会运行最新版本。重新运行 install 是安全的:它会替换现有注册项,包括旧版本写入的注册项。

要移除它:

npx -y consult-mcp@latest uninstall

要求:macOS、Linux 或 Windows 上的 Node 22 或更高版本,以及至少一个已登录的 claude、codex 或 grok CLI。

在 Windows 上,除实时会话和会话消息外,其他功能均可使用:这两项功能通过 ps 和 lsof 查找会话,并通过 POSIX shell 钩子发送消息,因此在 Windows 上不会启用。consult 绝不会通过 cmd.exe 运行顾问,因为它会重新解释问题中的 & 和 % 等字符:对于安装为 npm .cmd shim 的 CLI,它会直接运行 shim 所指向的脚本或二进制文件。

运行 npx -y consult-mcp@latest doctor 检查设置。它会报告每个 Agent CLI 及其版本、consult 是否已向其注册、你的设置、消息钩子以及 agy 的配置是否为只读,并为每个问题提供修复方法。doctor --ask 还会向每位顾问发送一个单词的问题,以确认其 CLI 已登录且能够回答。

安装会更改什么
  • claude:claude mcp add consult --scope user …
  • grok:grok mcp add consult …
  • codex:在 $CODEX_HOME/config.toml(默认为 ~/.codex/config.toml)中添加 [mcp_servers.consult] 表。它会设置 tool_timeout_sec = 960,因为 Codex 默认的 60 秒对于顾问调用来说太短;还会设置 startup_timeout_sec = 60,因为冷启动 npx 可能比默认的 10 秒耗时更久。原文件会保留为 config.toml.bak。只有在写入结果能够解析且其他所有设置均未更改时,consult 才会写入文件。否则它会停止,并要求你手动编辑文件。

每个条目都会将 PATH 设置为包含启动器(npx 或 node)和 Agent CLI 的目录,因为有些宿主会在精简环境中启动 MCP 服务。

启用会话消息后,安装过程还会将 consult 的钩子添加到每个 CLI 自己的钩子文件中:~/.claude/settings.json、~/.codex/hooks.json 和 ~/.grok/hooks/consult.json。这些文件中的其他钩子保持不变;卸载或关闭消息功能时,只会移除 consult 的钩子。通过 npx consult-mcp@latest 启动的服务还会在 consult 自己的 Claude Code 条目与当前版本不同时对其进行重写,因此无需重新安装即可获得钩子修复。

安装过程还会在每个 CLI 的全局指令文件(~/.claude/CLAUDE.md、~/.codex/AGENTS.md、~/.grok/AGENTS.md)中添加一小段 consult 说明,让 Agent 了解 consult 的功能:向顾问提问;以及在相关功能启用时,向实时会话提问、发送消息和分派任务。这段说明位于 和 注释之间;文件其余部分保持不变。consult settings 会根据你的选择更新这段说明,服务启动时也会刷新它,而 uninstall 会将其移除。

若要固定使用特定构建版本,而不是跟随 @latest,请使用 npm i -g consult-mcp 全局安装,然后运行 consult install;或者在检出目录中运行 node dist/cli.js install。之后,宿主会启动该确切脚本。

## 工具

ask_agent {agent, question, model?, effort?, session_id?, cwd?} 返回 {agent, answer, session_id, model?, duration_ms}。

  • agent:claude、codex、grok 或 agy(Antigravity,Gemini 模型)。
  • model:传递给该 CLI 的模型(opus、gpt-6-astra、grok-4.7、gemini-3.1-pro-high 等)。省略此项则使用 CLI 的默认模型。
  • effort:low、medium 或 high。
  • session_id:使用同一位顾问继续之前的对话。
  • cwd:顾问可读取的目录。默认是宿主 Agent 启动服务时所在的目录,通常是其代码仓库。

ask_agents {agents, question, effort?, cwd?} 会并行向多位顾问询问同一个问题,并返回 {results: [...]},每位顾问对应一个条目。每个条目要么是带有自身 session_id 的回答,要么是错误。一位顾问失败不会影响其他顾问。

review_changes {agents, base?, focus?, effort?, cwd?} 会并行让每位顾问审查 cwd 中的 Git 更改。请参阅审查你的更改。

list_agents 显示已安装的 CLI、其版本,以及各账号可使用的模型 ID。

当实时会话启用时,会显示 list_sessions 和 ask_session {session_id, question, effort?}。

当会话消息启用时,会显示 send_message {session_id, message}。

当任务分发启用时,会显示 dispatch_task、task_status 和 cancel_task。

顾问工作期间,服务会发送 MCP 进度通知(codex is thinking (40s)),这样支持显示进度的宿主就不会看起来像是卡住了。

Agent 何时咨询顾问

服务的 MCP 指令会由宿主添加到 Agent 的上下文中,并告诉它在以下情况下征求第二意见:

  • 已尝试两种修复 Bug 的方法,但都没有奏效;
  • 即将做出架构、数据模型、迁移或其他难以撤销的决策;
  • 希望在宣布工作完成前让人审查计划或差异;
  • 不确定该怎么做,且犯错的代价很高。

指令还会告诉它优先选择来自不同供应商的顾问,提出自包含的问题(顾问可以读取代码仓库,但看不到对话),并在采取行动前对照代码核实建议。

审查你的更改

consult 会自行收集差异,并连同审查说明发送给每位顾问:找出实际的错误、回归问题、安全问题以及与代码其他部分不兼容的契约,注明严重程度、file:line、失败场景和修复方法;跳过风格上的小问题;如果没有值得修复的问题,就直截了当地说明。顾问会阅读相关代码,核实自己的发现后再报告,并像其他顾问一样保持只读。

  • 不指定 base 时,会审查所有尚未提交的内容:针对 HEAD 的已暂存和未暂存更改,以及新建的未跟踪文件名称;顾问会直接读取这些文件。
  • 指定 base(例如 main)时,会审查分支离开 base 后的所有更改,包括未提交的工作(git diff --merge-base main)。
  • focus 用于补充特别需要关注的内容,例如 "error handling in the retry path"。

无论从哪个子目录运行,它始终会审查整个代码仓库,并在仓库根目录运行顾问。问题会作为单个命令行参数传给每个 CLI,因此差异会截断至适合的大小:Linux 上约 110 KB、macOS 上约 190 KB、Windows 上约 25 KB;Windows 的命令行长度最短。顾问会收到指示,需阅读其余更改文件。外部差异、textconv、fsmonitor 和 clean/process 过滤器命令均已关闭,因此收集差异时除 git 外不会运行任何命令。

在 shell 中,consult review 会使用 PATH 中的所有顾问 CLI,除非你传入 --agents codex,grok:

consult review --base main --focus "the new caching layer"
consult review --agents codex --effort high > review.md
consult review --pr 42

--pr <number> 会审查 GitHub 拉取请求。它会通过 gh pr view 查找 PR 的基准和头部提交(需要已登录的 GitHub CLI),检查 HEAD 是否为 PR 的头部提交(请先运行 gh pr checkout 42),且跟踪文件没有未提交的更改,因为顾问会读取工作区;随后审查自合并基准以来 PR 的提交:与 GitHub 显示的差异相同,不包含未提交或未跟踪的文件。只有 consult 会运行 gh;顾问仍会收到差异,并以只读方式访问代码仓库。

进度会输出到 stderr,审查结果会输出到 stdout;每位顾问各占一个部分,每部分都附有用于在同一对话中继续提问的命令。仅当所有顾问都失败时,命令才会以状态码 1 退出。

实时会话

默认关闭。开启后,Agent 可以向你已在运行的 Agent 会话提问,而不仅限于新建顾问。例如,负责处理 API 的 Codex 会话可以询问编写客户端的 Claude Code 会话做了哪些改动。

  • list_sessions 列出其他实时会话:Agent、会话 ID、目录、Git 分支、标题、其用户最近一次提示词(前 200 个字符,便于了解它正在处理什么),以及每个会话的开始时间和最近活动时间。不会显示其对话中的其他内容。
  • ask_session {session_id, question, effort?} 会向该会话的只读副本提问。consult 会分叉该会话(claude --resume <id> --fork-session、codex exec fork <id>、grok --resume <id> --fork-session),并采用与任何顾问相同的隔离措施。副本了解该会话见过的所有内容,而会话本身不会被打断,也不会看到问题。将回复中的 session_id 和 cwd 传给 ask_agent,即可继续提问。

安装时开启,或之后再开启:

npx -y consult-mcp@latest install --sessions=repo   # or off, tree, machine; without the flag, install asks when run in a terminal
npx -y consult-mcp@latest settings                  # interactive: live sessions, messages, task dispatch, and which agents use consult
设置谁能看到谁并向谁提问
off(默认)无人。不会显示这些工具。
repo同一 Git 仓库中的会话,包括其工作树(不在 Git 仓库中时,则为同一目录)
tree包含 repo 允许的所有会话,此外还包括目录位于当前目录之上或之下的会话,例如一个会话位于 ~/code,另一个位于 ~/code/app
machine你在此机器上运行的所有 consult 会话

设置存储在 $XDG_CONFIG_HOME/consult/settings.json(默认路径为 ~/.config/consult/)。运行中的会话会注册到 $XDG_STATE_HOME/consult/sessions/(默认路径为 ~/.local/state/consult/),只有你能读取这些文件。开启会话功能后,会在新的 Agent 会话中生效;关闭该功能或更改范围则立即生效。

CLIconsult 查找会话的方式
claude使用 Claude Code 为每个运行中的进程保存的记录(~/.claude/sessions/<pid>.json),因此可跟随 /resume 和 /clear;也可将 CLAUDE_CODE_SESSION_ID 用作备用方式。对话保存后(即发送第一条消息后)才会列出
codex使用 codex 进程保持打开状态的 rollout-*.jsonl 文件,从会话的第一轮开始
grok使用交互式 grok 进程保持打开状态的 ~/.grok/sessions/<cwd>/<session id>/events.jsonl 文件,从会话的第一轮开始;若同时打开多个会话,则无法识别

会话消息

默认关闭,且只有启用实时会话后才能使用。ask_session 会询问副本,因此会话本身不会获得任何信息。启用消息后,Agent 可以向正在运行的会话传递信息。例如,刚刚合并并推送了 main 的 Claude Code 会话,可以告诉同一检出目录中有未提交编辑的 Grok 会话哪些文件发生了变化。

  • send_message {session_id, message} 会向 list_sessions 中的某个会话留下一条最多 4,000 个字符的消息。接收消息的 Agent 会在自己的对话中读取消息,消息会标明发送方 Agent、会话 ID、目录和分支,并注明消息来自同级 Agent,而不是你的指令。它可以通过自己的 send_message 回复。

消息投递使用各 CLI 的钩子:启用消息后,consult install 会添加这些钩子;Codex 则使用自己的 codex queue 命令:

CLI工作期间空闲期间
claude在下一次工具调用后或当前轮次结束时读取几秒内唤醒:每轮结束时启动的后台钩子(asyncRewake)会等待消息
codex在当前轮次结束后,将消息作为下一条提示词读取立即唤醒:消息通过 codex queue 排队并启动一个轮次。如果该命令失败,消息会等待 Codex 的钩子;只有在你信任这些钩子后,它们才会运行
grok在下一次工具调用后或当前轮次结束时读取不会唤醒:Grok 无法从外部启动轮次,因此会在你提示它后读取消息

唤醒会话会在无需你参与的情况下启动一个轮次,这会消耗该会话的令牌,并让其中的 Agent 处理消息。发送方不会收到消息已读通知。没有钩子的会话仍会在下一次调用 list_sessions、ask_session 或 send_message 时收到消息。未读消息会在 24 小时后丢弃;每个会话最多保留 20 条消息,每个会话每小时最多可向另一个会话发送 10 条消息。

安装时启用,或之后再启用:

npx -y consult-mcp@latest install --sessions=repo --messages=on
npx -y consult-mcp@latest settings

等待中的消息存储在 $XDG_STATE_HOME/consult/inbox/(默认为 ~/.local/state/consult/),文件只有你可以读取。相同的 repo 和 machine 作用域决定哪些人可以互相发送消息。

任务分派

默认关闭。开启后,Agent 可以将定义明确的编码任务交给 Codex 或 Grok 工作器,自己继续工作,并随时查看任务进度。例如,Claude Code 可以让 Codex 为某个模块编写测试,同时自己构建下一个模块。

  • dispatch_task {agent, task, model?, effort?, cwd?} 在后台启动工作器,并立即返回 task_id。agent 为 codex 或 grok。工作器在 cwd 中以无头模式运行(默认为主机的目录),可以在其中编辑文件并运行命令。它无法查看主机的对话或提出问题,因此任务必须自成一体。
  • task_status {task_id?, wait_sec?, since?} 返回任务状态(running、succeeded、failed、cancelled)、最新进展(运行的命令、编辑的文件、消息),以及任务完成后的工作器最终报告。wait_sec(最长 600 秒)会等待任务完成,并在每条进展发生时将其作为 MCP 进度通知发送。since 仅返回早先调用中 last_seq 之后的进展(服务会保留最近 200 条;如果有遗漏,earlier_updates_dropped 会说明)。如果不提供 task_id,则列出所有任务。
  • cancel_task {task_id} 停止工作器。它已更改的文件会保持更改状态。

任务存储在 consult 服务的内存中:启动任务的 Agent 会话结束时,任务也会结束;服务退出时,会停止所有仍在运行的任务。CONSULT_TASK_TIMEOUT_SEC(默认值为 3600)限制每项任务的时长。报告中包含工作器的 session_id;将其与同一个 Agent 一起传给 ask_agent,即可针对工作内容提出只读的后续问题。

运行 npx -y consult-mcp@latest settings 可开启此功能。此设置会应用于之后启动的 Agent 会话。工作器会更改文件,因此请先检查其差异,再基于更改继续工作;也不要让两个工作器处理相同的文件。

顾问如何受到限制

每个顾问都以无头、只读模式运行,并且没有 MCP 服务。因此,顾问无法再次调用 consult,从而避免循环调用。

CLI标志
claude-p --restricted --tools Read,Grep,Glob --strict-mcp-config
codexexec、sandbox_mode="read-only"、approval_policy="never"、关闭插件,并按名称禁用所有已启用的 MCP 服务(Codex 在沙箱之外运行 MCP 工具)
grok--tools read_file,grep,list_dir --disallowed-tools Agent,search_tool,use_tool(MCP 辅助工具可以访问能够写入文件的服务)
agy-p --output-format stream-json --disable-slash-commands,仅在检查 agy 自身的配置(如下)后运行

agy 没有用于限制其工具或关闭 MCP 服务的标志(--mode plan 和 --sandbox 仍会启用写入、shell、浏览器和 MCP 工具),因此每次调用前,consult 都会检查 agy 将使用的配置,并在以下条件未满足时拒绝运行:

  • ~/.gemini/antigravity-cli/settings.json 中的 toolPermission 为 request-review(默认值)或 strict。此时写入、shell 命令和 URL 获取都需要审批,而无头模式无法请求审批,因此 agy 会拒绝这些操作。always-proceed 和 proceed-in-sandbox 会被拒绝。strict 也会拒绝文件读取,这会使 agy 无法回答大多数问题。
  • 该文件中的 permissions.allow 为空,因为允许规则会让命令无需审批即可运行。
  • agy mcp list 显示没有已启用的服务,且 agy plugin list 显示没有插件(插件会自带 MCP 服务)。
  • 无法加载任何钩子或插件:~/.gemini/config/hooks.json 和 plugins.json 不存在或为空,~/.gemini/config/plugins/ 和 ~/.gemini/antigravity-cli/plugins/ 为空,并且从 cwd 到存储库根目录的路径上不存在 .agents、.agent、_agents 或 _agent 目录。钩子会运行命令,而且钩子可以批准任何工具调用,从而绕过权限检查。 错误会说明需要更改什么。agy 也被告知只能使用其文件工具:如果某个工具被拒绝,它会结束本轮而不作答,随后 consult 会报告哪个工具被拒绝。它的网页搜索工具未被屏蔽,因此搜索查询会发送给 Google,而问题本身也已经发送给同一提供商。agy 无法分叉会话,因此没有实时会话或任务调度功能。通过 --conversation 使用 session_id 恢复会话是可行的,但如果 id 未知,agy 会开始新的对话;此时回复中的 session_id 会与你传入的 id 不同。

ask_session 副本使用相同的标志,外加 --resume <id> --fork-session(claude、grok)或 exec fork <id>(codex),因此只会读取实时会话自身的对话记录。

consult 不使用 Grok 的内核沙箱(--sandbox read-only),因为如果 /var/run/docker.sock 是符号链接,它就会拒绝启动;在安装了 Docker 的 Mac 上,这种情况很常见。

每个会话的第一条消息还会告知顾问,另一个 Agent 正在向它咨询。它应该直接作答,跳过审批和头脑风暴工作流,并且不要修改任何内容。

任务调度工作线程是只读模式的唯一例外,而且只有在你启用它时才适用。它们以无头模式运行,且没有 MCP 服务,因此也无法调用 consult:

CLI工作线程标志
codexexec、sandbox_mode="workspace-write",并设置 network_access=false 和 writable_roots=[](写入范围仅限 cwd 和临时目录,且无法访问网络),approval_policy="never",关闭插件,并按名称禁用所有已启用的 MCP 服务
grok--tools read_file,grep,list_dir,search_replace,write_file,run_terminal_cmd --always-approve --disallowed-tools Agent,search_tool,use_tool。如果不使用 Grok 的内核沙箱(见上文),它的 Shell 命令会以你的用户身份不受限制地运行,并可访问网络。它的 Shell 甚至可以启动另一个 Agent CLI,因此对 grok 来说,“没有 MCP 服务”只能阻止通过 consult 形成循环,并不是一道严格的边界

它们的第一条消息会告知它们,另一个 Agent 已分派任务;它们应不提问,完成任务,始终遵守任务范围和目录范围,并且除非任务另有要求,否则不要提交或推送。

顾问会将自己读取的内容发送给各自的提供商。SECURITY.md 介绍了读取范围和威胁模型。

CLI

也可以从 Shell 使用相同的调用,这对调试很方便:

consult ask codex --model gpt-6-astra "Is the retry logic in src/sync.ts safe under concurrent calls?"
consult ask codex --resume <session_id> "What would you change first?"
consult ask grok - < question.md      # long questions from a file or pipe
consult review --base main            # every installed advisor reviews the branch
consult doctor --ask                  # check the setup and that each advisor answers
consult agents
consult settings                      # live sessions, messages, task dispatch, and which agents use consult

如果没有全局安装,请使用 npx -y consult-mcp@latest <command>。这里的顾问也处于只读模式:适用相同的限制标志,因此无需告知它们不要编辑文件。当顾问工作时,consult ask 会将带时间戳的进度信息打印到 stderr(codex 和 grok 会显示运行的命令和消息;对于任何 Agent,每静默 30 秒会发送一次心跳),并且只将答案输出到 stdout。

CONSULT_TIMEOUT_SEC(默认值为 900)限制每次顾问调用的时长;处理大型问题时,如果 grok 运行时间较长,请调高此值。CONSULT_TASK_TIMEOUT_SEC(默认值为 3600)限制每个已分派任务的时长。

开发

npm install
npm run build
npm test                              # unit tests, no CLIs needed
npm run test:live                     # real calls to all three CLIs through the MCP server
node dist/cli.js install              # register this checkout with your agents

发布:在 package.json 中提升 version,然后推送匹配的标签(git tag v0.3.0 && git push --tags)。发布工作流通过 npm trusted publishing 发布到 npm,并附带来源证明,然后创建 GitHub 发布版本。所有使用 @latest 的用户都会在下次 Agent 会话中获取该版本。带有预发布后缀的标签(v0.3.0-rc.1)会发布到 next dist-tag,而不是 latest。

落地页位于 site/,并通过 Vercel 部署到 getconsult.dev。旧地址 consult.n3el.dev 会重定向到该站点。

报告错误

  1. 运行 npx -y consult-mcp@latest doctor 并复制其输出。输出会显示 consult 版本、你的平台、每个 Agent CLI 及其配置错误情况,并将你的主目录显示为 ~。
  2. 提交错误报告,并将输出粘贴进去。

安全问题请改为通过私密漏洞报告提交(参见 SECURITY.md)。

许可证

MIT

评论

支持 Markdown

第一次接触 MCP?

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

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