基于 MCP 协议 封装的多厂商 Coding Plan 服务,目前已支持讯飞星火 / 讯飞星辰 Coding Plan、火山方舟 Coding Plan 个人版、百度智能云千帆 Coding Plan、商汤日日新 SenseNova Token Plan 与 DeepSeek 官方 API,并为 OpenCode Go(experimental)提供 OpenAI 兼容子集接入,为 Claude Code 等 AI 编程工具提供代码审查、计划审查与多轮对话能力。
Coding Bridge MCP 通过统一的 OpenAI 兼容 HTTP 客户端接入多个厂商的 Coding Plan / 大模型服务。
| Provider | 协议 | 凭证 | 默认端点 | 默认模型 |
|---|---|---|---|---|
| xfyun-coding(默认) | OpenAI 兼容 | API_KEY(HTTP Bearer) |
https://maas-coding-api.cn-huabei-1.xf-yun.com/v2/chat/completions |
astron-code-latest |
| volcengine-coding | OpenAI 兼容 | API_KEY(HTTP Bearer) |
https://ark.cn-beijing.volces.com/api/coding/v3/chat/completions |
ark-code-latest |
| qianfan-coding | OpenAI 兼容 | API_KEY(HTTP Bearer) |
https://qianfan.baidubce.com/v2/coding/chat/completions |
qianfan-code-latest |
| sensenova |
OpenAI 兼容 | API_KEY(HTTP Bearer) |
https://token.sensenova.cn/v1/chat/completions |
deepseek-v4-flash |
| deepseek | OpenAI 兼容 | API_KEY(HTTP Bearer) |
https://api.deepseek.com/chat/completions |
deepseek-v4-pro |
| opencode-go |
OpenAI 兼容 | API_KEY(HTTP Bearer) |
https://opencode.ai/zen/go/v1/chat/completions |
glm-5.2 |
注意:Coding Plan 类套餐(讯飞、火山)的 API Key 仅限在 AI 编程工具交互场景中使用,禁止用于自动化脚本、批量任务或自建后端。
切换 Provider 只需修改 PROVIDER 环境变量(旧版 SPARK_MODE 仍兼容)。为统一凭证入口,推荐使用通用变量 API_KEY:
# 讯飞 Coding Plan
PROVIDER=xfyun-coding
API_KEY=your-xfyun-key
# 火山方舟 Coding Plan 个人版
PROVIDER=volcengine-coding
API_KEY=your-volcano-key
# 百度智能云千帆 Coding Plan(OpenAI 兼容)
PROVIDER=qianfan-coding
API_KEY=your-qianfan-key
# 商汤日日新 SenseNova(Token Plan,OpenAI 兼容,⚠️ 配额极低)
PROVIDER=sensenova
API_KEY=your-sensenova-key
# DeepSeek 官方 API(OpenAI 兼容)
PROVIDER=deepseek
API_KEY=your-deepseek-key
# OpenCode Go(⚠️ experimental,OpenAI 兼容子集:GLM / Kimi / DeepSeek / MiMo)
PROVIDER=opencode-go
API_KEY=your-opencode-go-key凭证兼容回退顺序(按下列优先级取第一个非空值):
- 讯飞 Coding Plan(
xfyun-coding):API_KEY→SPARK_API_PASSWORD→SPARK_API_KEY- 火山方舟(
volcengine-coding):API_KEY→VOLCENGINE_API_KEY→ARK_API_KEY- 千帆 Coding Plan(
qianfan-coding):API_KEY→QIANFAN_API_KEY- 商汤 SenseNova(
sensenova):API_KEY→SENSENOVA_API_KEY- DeepSeek(
deepseek):API_KEY→DEEPSEEK_API_KEY- OpenCode Go(
opencode-go):API_KEY→OPENCODE_API_KEY推荐只设
API_KEY一个变量,避免歧义。
⚠️ 关于opencode-go(experimental):官方文档仅描述 TUI/connect与 JS AI SDK 用法,未明确直接 HTTP/REST 调用契约。本 Provider 按 OpenAI 兼容惯例推断Authorization: Bearer鉴权——首次使用前建议用 curl 实测确认,若返回 401/403 需排查是否实际要求x-api-key等其他头。仅覆盖 OpenAI 兼容子集(GLM / Kimi / DeepSeek / MiMo);MiniMax / Qwen 走 Anthropic 协议,暂不支持。额度为美元配额制(每 5h $12 / 周 $30 / 月 $60)。推荐只设
API_KEY一个变量,避免歧义。
curl -LsSf https://astral.sh/uv/install.sh | shgit clone https://github.com/htmambo/coding-bridge-mcp.git
cd coding-bridge-mcpcp .env.example .env
# 编辑 .env,填入你的 API Key提示:Coding Bridge MCP 启动时会自动加载当前工作目录下的
.env文件(不覆盖已有的环境变量),所以本地使用时不必手动source。
讯飞 Coding Plan 用户最少只需要:
PROVIDER=xfyun-coding
API_KEY=your-xfyun-key火山方舟 Coding Plan 个人版用户最少只需要:
PROVIDER=volcengine-coding
API_KEY=your-volcano-keyOpenCode Go 用户最少只需要(
PROVIDER=opencode-go
API_KEY=your-opencode-go-keyuv sync方式 A:本地开发(推荐,方便改配置和二次开发)
claude mcp add coding-bridge -s user --transport stdio -- uv run --python 3.12 coding-bridge-mcp方式 B:直接从 GitHub 安装(无需克隆)
claude mcp add coding-bridge -s user --transport stdio -- uvx --from git+https://github.com/htmambo/coding-bridge-mcp.git coding-bridge-mcp注意:方式 B 需要你在 Claude Code 配置中注入环境变量(见下文「配置 API Key」),或者从已设置好环境变量的 Shell 启动 Claude Code。
验证:
claude mcp list应看到 coding-bridge: uv run --python 3.12 coding-bridge-mcp - ✓ Connected 或 coding-bridge: uvx --from git+https://github.com/htmambo/coding-bridge-mcp.git coding-bridge-mcp - ✓ Connected。
Kimi Code 通过 ~/.kimi-code/mcp.json 声明 MCP Server(也支持项目级 .kimi-code/mcp.json,优先级更高)。创建或编辑该文件,加入以下内容:
{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "xfyun-coding",
"API_KEY": "your-xfyun-key"
}
}
}
}注意:当前 Kimi Code 的 MCP 配置主要通过直接编辑
~/.kimi-code/mcp.json完成。修改后需要重启 Kimi 会话或启动新会话才会加载。
验证:重启 Kimi 后,新会话中应出现 mcp__coding-bridge__chat、mcp__coding-bridge__review_code 等工具。
MCP Server 作为 Claude Code 的子进程运行,需要从环境变量读取密钥。claude mcp add 不能直接带 --env,推荐通过 ~/.claude/settings.json 注入:
{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "xfyun-coding",
"API_KEY": "your-xfyun-key"
}
}
}
}{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "volcengine-coding",
"API_KEY": "your-volcano-key"
}
}
}
}{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "qianfan-coding",
"API_KEY": "your-qianfan-key"
}
}
}
}{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "sensenova",
"API_KEY": "your-sensenova-key"
}
}
}
}默认模型
deepseek-v4-flash(1M 上下文,思考模式,审查质量较高)。⚠️ Token Plan 配额极低(tpm 限流易触发,连续调用需间隔约 1 分钟);若更看重吞吐而非审查深度,可设SENSENOVA_MODEL=sensenova-6.7-flash-lite(256K 上下文,更快更省 token)。注意sensenova-u1-fast是图像生成接口,不能作对话模型。
{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "deepseek",
"API_KEY": "your-deepseek-key"
}
}
}
}默认模型
deepseek-v4-pro(思考模式,审查质量更高);如需更快更省 token,可设DEEPSEEK_MODEL=deepseek-v4-flash。旧名deepseek-chat/deepseek-reasoner将于 2026-07-24 废弃(分别对应deepseek-v4-flash的非思考 / 思考模式)。思考模式响应含reasoning_content,客户端只取最终content(符合审查工具预期)。
{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "opencode-go",
"API_KEY": "your-opencode-go-key"
}
}
}
}Kimi Code 的 MCP 配置与 Claude Code 的 settings.json 结构相同,只是把文件放到 ~/.kimi-code/mcp.json。各 Provider 配置示例如下。
{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "xfyun-coding",
"API_KEY": "your-xfyun-key"
}
}
}
}{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "volcengine-coding",
"API_KEY": "your-volcano-key"
}
}
}
}{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "qianfan-coding",
"API_KEY": "your-qianfan-key"
}
}
}
}{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "sensenova",
"API_KEY": "your-sensenova-key"
}
}
}
}{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "deepseek",
"API_KEY": "your-deepseek-key"
}
}
}
}{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "opencode-go",
"API_KEY": "your-opencode-go-key"
}
}
}
}提示:Kimi Code 暂不支持全局
AGENTS.md,自动审查规范需要放在项目根目录的AGENTS.md中,详见 §6。
如果你用的是本地克隆的方式 A,把 command/args 换成:
{
"command": "uv",
"args": ["run", "--python", "3.12", "coding-bridge-mcp"]
}注:以上 Claude Code 与 Kimi Code 示例中的
uvx --from git+...均可按此规则改为本地克隆命令,仅command/args字段需要替换。
修改 Claude Code 配置后,重启 Claude Code 或运行
claude mcp list刷新;修改 Kimi Code 的~/.kimi-code/mcp.json后,重启 Kimi 会话即可。
如果你用的是 Claude Code CLI,也可以在启动它的 Shell 中导出环境变量:
export PROVIDER=xfyun-coding
export API_KEY=your-xfyun-key
claude但这种方式对桌面版 Claude 无效,建议优先使用 settings.json。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
PROMPT |
str |
✅ | 任务指令 |
cd |
Path |
✅ | 工作目录 |
SESSION_ID |
str |
❌ | 继续会话,空则新建 |
model |
str |
❌ | 模型版本;默认取 PROVIDER 内置值(xfyun-coding → astron-code-latest,volcengine-coding → ark-code-latest),可被 SPARK_DEFAULT_MODEL / VOLCENGINE_MODEL / ARK_MODEL 覆盖 |
return_all_messages |
bool |
❌ | 是否返回完整历史 |
返回值:
{
"success": true,
"SESSION_ID": "uuid-string",
"agent_messages": "模型回复内容...",
"usage": {
"prompt_tokens": 100,
"completion_tokens": 200,
"total_tokens": 300,
"cached_tokens": 0,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
},
"cumulative_usage": {
"prompt_tokens": 350,
"completion_tokens": 540,
"total_tokens": 890,
"cached_tokens": 0,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}usage 是当前这一轮的 token 用量,cumulative_usage 是该会话从开始到现在的累计值(跨多轮对话自动累加)。当 SESSION_ID 沿用同一个时,累计值会持续增长。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
CODE |
str |
✅ | 要审查的代码 |
cd |
Path |
✅ | 工作目录 |
REQUIREMENTS |
str |
❌ | 额外要求/上下文 |
SESSION_ID |
str |
❌ | 继续会话 |
model |
str |
❌ | 模型版本 |
return_all_messages |
bool |
❌ | 返回完整历史 |
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
PLAN |
str |
✅ | 计划文本 |
cd |
Path |
✅ | 工作目录 |
CONTEXT |
str |
❌ | 项目背景 |
SESSION_ID |
str |
❌ | 继续会话 |
model |
str |
❌ | 模型版本 |
return_all_messages |
bool |
❌ | 返回完整历史 |
读取当前 MCP 进程内已累计的 token 用量。所有写操作工具(chat / review_code / review_plan)在每次成功调用后都会把 usage 累加到对应会话;本工具不发起任何 HTTP 请求。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
cd |
Path |
✅ | 工作目录 |
SESSION_ID |
str |
❌ | 指定会话 ID;空字符串或不传则汇总当前进程所有会话 |
返回值(指定 SESSION_ID 时):
{
"success": true,
"SESSION_ID": "uuid-string",
"found": true,
"cumulative_usage": {
"prompt_tokens": 350,
"completion_tokens": 540,
"total_tokens": 890,
"cached_tokens": 0,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
}
}返回值(不传 SESSION_ID,全局汇总):
{
"success": true,
"cumulative_usage": {
"prompt_tokens": 1280,
"completion_tokens": 960,
"total_tokens": 2240,
"cached_tokens": 0,
"cache_creation_input_tokens": 0,
"cache_read_input_tokens": 0
},
"session_count": 3,
"sessions": {
"uuid-a": { "prompt_tokens": 350, "...": "..." },
"uuid-b": { "...": "..." },
"uuid-c": { "...": "..." }
}
}关于缓存三件套:
cached_tokens/cache_creation_input_tokens/cache_read_input_tokens是 Anthropic 风格的统一 schema。当前volcengine-coding与xfyun-coding默认不启用上下文缓存,所以通常为 0;cached_tokens会在厂商返回usage.prompt_tokens_details.cached_tokens或顶层cached_tokens时如实透传。Schema 稳定后,未来即便切换到真正支持缓存的 Provider,调用方代码也无需调整。
| 变量 | 默认值 | 说明 |
|---|---|---|
PROVIDER |
xfyun-coding |
xfyun-coding / volcengine-coding / qianfan-coding / sensenova / deepseek / opencode-go |
API_KEY |
- | 通用 API Key,根据 PROVIDER 自动对应到讯飞、火山、千帆、商汤或 DeepSeek |
SPARK_MODE |
- | 旧版变量,已废弃;coding 映射到 xfyun-coding(仍发出弃用警告),http / websocket 不再支持并会报错,请直接使用 PROVIDER |
SPARK_API_PASSWORD |
- | 讯飞 Coding Plan 的 API Key 或 APIPassword |
SPARK_API_KEY |
- | SPARK_API_PASSWORD 的别名 |
SPARK_API_URL |
见 Provider | 讯飞 HTTP 端点覆盖 |
SPARK_DEFAULT_MODEL |
见 Provider | 讯飞默认模型覆盖 |
VOLCENGINE_API_KEY |
- | 火山方舟 Coding Plan API Key |
ARK_API_KEY |
- | 火山方舟旧版 API Key(VOLCENGINE_API_KEY 的别名) |
VOLCENGINE_API_URL |
见 Provider | 火山 HTTP 端点覆盖 |
VOLCENGINE_MODEL |
ark-code-latest |
火山默认模型覆盖 |
QIANFAN_API_KEY |
- | 千帆 Coding Plan API Key(API_KEY 为空时回退) |
QIANFAN_API_URL |
见 Provider | 千帆 Coding Plan 端点覆盖 |
QIANFAN_MODEL |
qianfan-code-latest |
千帆默认模型覆盖 |
SENSENOVA_API_KEY |
- | 商汤 SenseNova API Key(API_KEY 为空时回退) |
SENSENOVA_API_URL |
见 Provider | 商汤 SenseNova 端点覆盖 |
SENSENOVA_MODEL |
deepseek-v4-flash |
商汤默认模型覆盖(可选 sensenova-6.7-flash-lite,配额极低时换用以提吞吐) |
DEEPSEEK_API_KEY |
- | DeepSeek 官方 API Key(API_KEY 为空时回退) |
DEEPSEEK_API_URL |
见 Provider | DeepSeek 端点覆盖 |
DEEPSEEK_MODEL |
deepseek-v4-pro |
DeepSeek 默认模型覆盖(可选 deepseek-v4-flash) |
OPENCODE_API_KEY |
- | OpenCode Go API Key(API_KEY 为空时回退) |
OPENCODE_API_URL |
见 Provider | OpenCode Go 端点覆盖 |
OPENCODE_MODEL |
glm-5.2 |
OpenCode Go 默认模型覆盖 |
MCP_TIMEOUT_SECONDS |
300 |
请求超时(兼容旧 SPARK_TIMEOUT_SECONDS) |
MCP_MAX_CONTEXT_CHARS |
见 Provider | 上下文字符上限(兼容旧 SPARK_MAX_CONTEXT_CHARS) |
MCP_MAX_MESSAGES |
40 |
单会话最大消息数(兼容旧 SPARK_MAX_MESSAGES) |
MCP_MAX_TOKENS |
见 Provider | 单次最大输出 tokens(兼容旧 SPARK_MAX_TOKENS) |
LOG_LEVEL |
INFO |
结构化日志级别(DEBUG / INFO / WARNING / ERROR),输出到 stderr |
默认 PROXY=false:忽略 shell 中的 HTTP_PROXY / HTTPS_PROXY / ALL_PROXY 环境变量,强制直连厂商 API。
通过 MCP 启动配置 (settings.json → mcpServers.<name>.env) 声明:
PROXY |
行为 | 适用场景 |
|---|---|---|
false / no / off / 0 (默认) |
直连;httpx trust_env=False |
普通部署,无需代理 |
true / env / yes / on / 1 |
读取 shell 中的 HTTP(S)_PROXY 环境变量;httpx trust_env=True |
已有标准代理出口 |
custom |
使用下方 HTTP(S)_PROXY_HOST/PORT 自定义代理 |
需要绕过环境变量、或需要认证 |
custom 模式下还支持:
| 变量 | 必填 | 说明 |
|---|---|---|
HTTP_PROXY_HOST |
✅ | HTTP scheme 代理主机 |
HTTP_PROXY_PORT |
✅ | HTTP scheme 代理端口 (1-65535) |
HTTP_PROXY_USER |
❌ | 代理认证用户名;提供时 HTTP_PROXY_PASSWORD 必填 |
HTTP_PROXY_PASSWORD |
❌ | 代理认证密码 |
HTTPS_PROXY_HOST |
✅ | HTTPS scheme 代理主机 |
HTTPS_PROXY_PORT |
✅ | HTTPS scheme 代理端口 |
HTTPS_PROXY_USER |
❌ | 同上 |
HTTPS_PROXY_PASSWORD |
❌ | 同上 |
PROXY=custom 时 HTTP 与 HTTPS 两组 host/port 必须同时提供,否则启动期报错。
settings.json 示例:
{
"mcpServers": {
"coding-bridge": {
"command": "uv",
"args": ["run", "coding-bridge-mcp"],
"env": {
"PROVIDER": "xfyun-coding",
"API_KEY": "<your-key>",
"PROXY": "custom",
"HTTP_PROXY_HOST": "proxy.internal",
"HTTP_PROXY_PORT": "8080",
"HTTPS_PROXY_HOST": "proxy.internal",
"HTTPS_PROXY_PORT": "8443"
}
}
}
}| Provider | MCP_MAX_CONTEXT_CHARS |
MCP_MAX_TOKENS |
备注 |
|---|---|---|---|
xfyun-coding |
96000 |
8192 |
套餐场景,限制最宽 |
volcengine-coding |
128000 |
8192 |
上下文最长 |
qianfan-coding |
96000 |
8192 |
默认值保守估计,可由 MCP_MAX_CONTEXT_CHARS 覆盖 |
sensenova |
96000 |
8192 |
deepseek-v4-flash(1M 上下文,思考模式),此处按保守字符数估计,可由 MCP_MAX_CONTEXT_CHARS 覆盖 |
deepseek |
96000 |
8192 |
默认 deepseek-v4-pro(思考模式);字符数按保守估计,可由 MCP_MAX_CONTEXT_CHARS 覆盖 |
opencode-go |
96000 |
8192 |
MCP_MAX_CONTEXT_CHARS 覆盖 |
在 ~/.claude/CLAUDE.md 中加入类似内容,可让 Claude Code 在编码流程中主动调用审查工具:
## Coding Bridge MCP 使用规范
1. 在形成初步实现思路后,可调用 `review_plan` 审查实施计划。
2. 完成代码修改后,必须调用 `review_code` 审查改动。
3. 保存每次返回的 `SESSION_ID`,以便对同一话题进行多轮追问。
4. 星火/Coding Plan 的回复仅供参考,你仍需保持独立判断。Kimi Code 没有全局 AGENTS.md,它只从项目树中读取 AGENTS.md / .kimi/AGENTS.md / agents.md。因此自动审查规范必须放在每个项目的根目录。
在当前项目根目录创建 AGENTS.md,内容示例:
# Coding Bridge MCP 自动审查规范
## 1. 计划审查(形成思路后)
调用 `mcp__coding-bridge__review_plan`:
- `PLAN`:当前实现计划文本
- `cd`:当前项目根目录
- `CONTEXT`:项目背景与约束(可选)
## 2. 代码审查(完成修改后)
**每次对 `src/`、`tests/` 做出实质性修改后,必须调用 `mcp__coding-bridge__review_code`:**
- `CODE`:需要审查的完整代码或 diff
- `cd`:当前项目根目录
- `REQUIREMENTS`:额外上下文(可选)
## 3. 多轮追问
保存每次返回的 `SESSION_ID`,对同一话题继续追问时沿用该 ID。
## 4. 判断原则
Coding Plan / 星火返回的审查结论仅供参考,你仍需保持独立判断。注意:
AGENTS.md在会话启动时读取,修改后需要重启 Kimi 会话才会生效。如果需要在多个项目复用同一份规范,可在
~/.kimi-code/templates/AGENTS.md维护一份母版,新建项目时复制进去。Kimi Code 不会读取~/.kimi-code/AGENTS.md。
XPowers 提供「结构化工作流 + 内部多 Agent 验证」,coding-bridge 提供「外部 Coding Plan 专家级审查」。两者可以互补:XPowers 负责计划、跟踪、内部验证;coding-bridge 负责外部代码/计划审查。
保留项目根目录的 AGENTS.md(要求改完代码后调用 mcp__coding-bridge__review_code),同时安装 XPowers。Kimi 会同时读取 XPowers skills 和 AGENTS.md,模型通常会按以下流程执行:
形成思路
↓
XPowers write-plan → 生成实现计划
↓
实现代码
↓
AGENTS.md 触发 → coding-bridge review_code(外部审查)
↓
XPowers test-runner → 运行测试
↓
XPowers review-implementation → 对照需求检查
↓
XPowers verification-before-completion → 最终确认
↓
任务完成
如果你希望 XPowers 的 verification 明确强制调用 coding-bridge,可以在 XPowers 的 skill 或自定义 skill 中加入以下步骤:
## 外部 Coding Plan 审查
在完成内部 review-implementation 和测试后,调用:
- `mcp__coding-bridge__review_code`
- `CODE`: 本次修改的完整代码或 diff
- `cd`: 项目根目录
- `REQUIREMENTS`: 原始需求、已发现的内部审查问题
将 coding-bridge 返回的风险和建议作为验收依据之一。注意:直接修改
~/.kimi-code/skills/下的 XPowers skill 文件会在更新时被覆盖。建议复制到项目级.kimi-code/skills/做覆盖,或创建独立自定义 skill。
在项目 .kimi-code/skills/coding-bridge-review/SKILL.md 中创建:
---
name: coding-bridge-review
description: Use when you need an external Coding Plan review after implementing code changes.
---
# Coding Bridge Review
When verification is needed:
1. Collect the changed code or diff.
2. Call `mcp__coding-bridge__review_code` with `cd` set to project root.
3. Summarize findings and decide if fixes are needed.
4. If fixes are made, repeat the review.然后在 AGENTS.md 中加上:
完成代码修改后,优先调用 `coding-bridge-review` skill 进行外部 Coding Plan 审查。- 成本叠加:XPowers 内部多 Agent 审查 + coding-bridge 外部审查会同时消耗模型 token 和 Coding Plan 套餐额度。
- 结论冲突:如果 XPowers 内部审查与 coding-bridge 结论冲突,可在
AGENTS.md中写明优先级,例如「以 coding-bridge 的安全与架构建议为最终依据」。 - 避免重复:XPowers 内部 reviewer 负责基础检查,coding-bridge 负责外部视角的深层问题,分工更合理。
Q: Coding Plan 返回 401 怎么办?
- 确认 API Key 来自「套餐订阅」页面,而不是星火大模型控制台。
- 确认
PROVIDER=xfyun-coding。 - 确认 model 使用
astron-code-latest(默认)。
Q: Coding Plan 返回 403 怎么办?
- 火山方舟 403 通常是 endpoint 不存在或模型名拼写错误,先确认
ark-code-latest仍可访问。
Q: 模型底层怎么切换?
在 讯飞星辰 MaaS 套餐订阅页面 点击「配置模型」,1-3 分钟后生效。API 层仍使用 astron-code-latest。
Q: 出现 429 / 请求速率限制?
Coding Plan 有 5 小时/周/月的请求次数限制,高峰期也可能触发平台限流。代码已透传错误信息,建议稍后重试或升级套餐。
Q: 调用时提示 Working directory does not exist?
当前涉及文件系统操作的工具会校验 cd 参数必须为已存在的真实目录,若目录不存在将拒绝执行。CI / 沙箱环境务必先 mkdir -p 工作目录。
Q: 如何调试(查看完整消息历史)?
调用任意工具时传 return_all_messages=True,响应中会带 all_messages 字段返回当前会话全部消息。注意:SESSION_ID 对应的会话上下文保存在进程内存字典中,服务进程重启后内存清空,旧 SESSION_ID 即失效,需获取新 ID 开启新会话。
Q: 为什么修改了 .env 文件中的凭证,但依然提示鉴权失败?
应用加载 .env 文件时不覆盖已存在的系统环境变量(override=False),即系统环境变量的优先级始终高于 .env。请检查 Shell / CI 配置中是否设置了旧凭证。
Q: 调用 coding-bridge 超时或被中途打断,超时在哪里设置?
超时分两层,两者都需调到足够大且相互匹配:
- 客户端层(Claude Code / Kimi Code → coding-bridge 工具调用):由 MCP 宿主对单次工具调用的超时控制。
- Claude Code:默认
MCP_TOOL_TIMEOUT约 28 小时,基本不会超时;coding-bridge 为 stdio 类型,不受 5 分钟空闲断开(CLAUDE_CODE_MCP_TOOL_IDLE_TIMEOUT,仅针对 HTTP/SSE)影响。如需显式上调,在~/.claude.json的coding-bridge块加timeout(单位毫秒),仅对该服务生效,改完重启 Claude Code。 - Kimi Code:默认
toolTimeoutMs为 30000 毫秒(30 秒),审长代码或复杂计划时容易触发-32001: Request timed out。在~/.kimi-code/mcp.json(或项目级.kimi-code/mcp.json)对应 server 条目中添加toolTimeoutMs即可调整,改完重启 Kimi 会话。startupTimeoutMs控制 server 启动/连接超时,默认同样 30000 毫秒,首次uvx拉取构建较慢时也可能需要上调。
- Claude Code:默认
- 服务端层(coding-bridge → 上游 LLM):由
MCP_TIMEOUT_SECONDS(旧名SPARK_TIMEOUT_SECONDS)控制,默认 300 秒(经多轮及高峰期实测,120 秒在上游 LLM 高负载时易被打断),超过即被httpx打断(见src/coding_bridge_mcp/config.py)。uvx从 git 启动时不会加载仓库.env,需在宿主配置(~/.claude.json或~/.kimi-code/mcp.json)的env字段显式传入才可靠。
建议客户端超时 ≤ 服务端超时,避免宿主未放弃时 coding-bridge 已因上游超时报错:
Claude Code 示例:
Kimi Code 示例:
{
"mcpServers": {
"coding-bridge": {
"command": "uvx",
"args": [
"--from",
"git+https://github.com/htmambo/coding-bridge-mcp.git",
"coding-bridge-mcp"
],
"env": {
"PROVIDER": "volcengine-coding",
"API_KEY": "ark-...",
"MCP_TIMEOUT_SECONDS": "600"
},
"startupTimeoutMs": 60000,
"toolTimeoutMs": 300000
}
}
}通过 claude mcp add 安装后,命令注册在 Claude Code 配置中固定不变。更新 = 让 claude 启动时重新拉取新版本。
uvx --from git+... 会带缓存窗口拉取远端源。清掉本地 wheel 缓存即可让下次启动重新 fetch。
# 清掉 coding-bridge-mcp 的 wheel 缓存
uv cache clean coding-bridge-mcp
# 重新启动 Claude,下次启动会自动拉取最新 main 分支适用于:日常维护,远端
main分支已有目标提交,本地无需修改。
跳过 uvx + git 拉取,直接用本地仓库的 .venv 跑。任何本地修改立即生效,无需 push。
# 1. 移除旧的远端源注册
claude mcp remove coding-bridge
# 2. 重新注册为本地路径
claude mcp add coding-bridge -s user --transport stdio -- \
uv run --directory /home/hoping/htdocs/coding-bridge-mcp coding-bridge-mcp适用于:本地有未推送的提交、需要立刻在 Claude 中验证最新代码改动。
对生产部署建议锁定到具体版本,避免 main 分支意外变更影响线上行为。
# 第一次 add 时直接锁版本
claude mcp add coding-bridge -s user --transport stdio -- \
uvx --from git+https://github.com/htmambo/coding-bridge-mcp.git@<commit-sha> coding-bridge-mcp
# 锁到 tag
claude mcp add coding-bridge -s user --transport stdio -- \
uvx --from git+https://github.com/htmambo/coding-bridge-mcp.git@v0.2.0 coding-bridge-mcp更新时把 @<sha> 换成新值,重新执行 claude mcp add(同名会覆盖)。
# 查看当前 MCP server 注册的命令
claude mcp get coding-bridge
# 直接运行看 uvx 是否拉到新版本
uvx --from git+https://github.com/htmambo/coding-bridge-mcp.git coding-bridge-mcp --help
# 看实际拉取的 commit
uvx --from git+https://github.com/htmambo/coding-bridge-mcp.git@main \
python -c "import coding_bridge_mcp; print(coding_bridge_mcp.__file__)"# 安装 dev 依赖
uv sync
# 运行测试
uv run pytest
# 直接以 stdio 方式启动服务器(便于手动调试)
uv run coding-bridge-mcp测试覆盖:tests/test_config.py(Provider 解析 / 凭证回退 / 配置校验)、tests/test_session.py(消息历史裁剪)。所有工具的真实调用都通过 mock,不会产生 API 费用。
修改代码后建议先跑一遍 pytest 再提交。
MIT