Appearance
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(已脱敏)。