Skip to content

MoonPalace 是 Moonshot AI 官方出品的本地调试代理工具,可捕获 Kimi API 的完整请求/响应内容,支持历史请求检索、GoodCase/BadCase 标注与导出,是调试 AI 应用的利器。安装后只需把 base_url 改成 localhost:9988 即可接入。

MoonPalace:Kimi API 本地调试代理

什么是 MoonPalace

MoonPalace 是一个本地反向代理工具,运行在 localhost:9988,将你的 API 请求转发给 Kimi API 的同时,完整记录每次请求和响应。适用场景:

  • 调试 prompt 效果,对比多次请求的输出差异
  • 抓取 BadCase 上报给 Moonshot 改进模型
  • 开发期间检查 token 消耗和请求参数

与 Charles/Fiddler 对比:MoonPalace 专为 Kimi API 设计,内置 Kimi 格式解析,还支持 BadCase 导出和邮件上报,比通用抓包工具更方便。


安装

方式一:Go 安装(推荐)

bash
go install github.com/MoonshotAI/moonpalace@latest

方式二:下载预编译二进制

访问 GitHub Releases,下载对应平台(Mac/Windows/Linux)的二进制文件。


启动代理服务

bash
moonpalace start --port 9988

默认端口为 9988,启动成功后控制台会显示监听地址。


接入调试

将代码中的 base_url 替换为本地代理地址:

python
from openai import OpenAI

client = OpenAI(
    api_key="$MOONSHOT_API_KEY",
    base_url="http://127.0.0.1:9988/v1",  # 原来是 https://api.moonshot.cn/v1
)
typescript
const client = new OpenAI({
  apiKey: process.env.MOONSHOT_API_KEY,
  baseURL: "http://127.0.0.1:9988/v1",  // 切换到本地代理
});

调试完成后将 base_url 改回原始地址即可,无需修改其他代码。


请求检索与管理

bash
# 列出最近的 API 请求
moonpalace list

# 查看特定请求详情(通过请求 ID)
moonpalace inspect <request_id>

BadCase 标注与导出

对有问题的请求打标签,方便后续处理:

bash
# 标记为 BadCase
moonpalace tag <request_id> --tag badcase

# 导出 BadCase 数据到本地文件
moonpalace export --tag badcase --output badcases.jsonl

导出后可通过邮件(api-feedback@moonshot.cn)上报 BadCase,协助 Moonshot 改进模型。


高级功能

  • 检测重复输出:自动标记模型出现重复 token 循环的请求
  • 强制流式模式:即使代码未设置 stream=True,也可强制转换为流式请求,避免长时间等待

常见问题

Q: MoonPalace 会影响请求性能吗?

A: 增加一层本地代理会有轻微延迟(通常 < 5ms),对功能测试无影响。生产环境请使用原始 API 地址,不要经过 MoonPalace。

Q: MoonPalace 记录的内容是否安全?

A: 所有记录都存储在本地,不会自动上传。只有你主动执行 moonpalace export 并发送邮件时,才会将数据分享给 Moonshot。

Q: 能同时代理多个 API Key 的请求吗?

A: 可以,MoonPalace 会根据请求头中的 API Key 区分请求来源,并在列表中显示对应的 Key(已脱敏)。