文档

CLI / API / Skill / MCP 四种接入方式背后是同一个校对引擎,鉴权与限流按 Key 计。本页覆盖安装、鉴权、参数、限制与错误码。

概览

所有接入共用:

方式适合依赖
CLI 脚本终端快速校对、脚本批量macOS / Linux:curl + python3;Windows:PowerShell 5.1+
API(OpenAI 兼容)服务端集成、产品内嵌、发布流程钩子任意 HTTP 客户端或 OpenAI SDK
SkillAI 助手对话内自动调用支持 Skill 的客户端(Claude Code、ZCode 等)
MCPMCP 客户端对话内调用Claude / Cursor / VS Code 等支持 MCP 的客户端

获取 Key

  1. 注册(邮箱 + 密码,免费)。注册成功后进入个人中心,Key 以明文一次性展示,请当场保存。
  2. 之后随时可在个人中心重新生成或吊销 Key。每个账户最多持有 1 个有效 Key,更换时先吊销旧的再创建新的。

安全提示:不要把 Key 提交进代码仓库或写进前端页面。推荐用环境变量 JIAODUI_API_KEY,泄露后在个人中心吊销即可。

CLI · 命令行

安装

macOS / Linux(依赖 curl 与 python3,python3 仅用于组装/解析 JSON):

curl -fsSL https://jd.glowjames.top/jiaodui.sh -o jiaodui.sh
chmod +x jiaodui.sh
./jiaodui.sh "他慢慢的走了。"

Windows:下载 jiaodui.ps1(PowerShell 5.1+,HTTP 用原生 Invoke-RestMethod,无 python 依赖);cmd 用户用 jiaodui.cmd(包装入口,转发给 jiaodui.ps1)。若脚本执行策略受限:

powershell -NoProfile -ExecutionPolicy Bypass -File .\jiaodui.ps1 "他慢慢的走了。"

也可以直接浏览器打开 /jiaodui.sh、/jiaodui.ps1、/jiaodui.cmd 下载。源码见 GitHub 仓库(MIT)。

配置 Key

Key 读取顺序:--key 参数 → $JIAODUI_API_KEY 环境变量 → 脚本目录向上逐级查找 .env 文件(内容形如 JIAODUI_API_KEY=...)。

# macOS / Linux
export JIAODUI_API_KEY="你的 Key"

# Windows PowerShell
$env:JIAODUI_API_KEY = "你的 Key"

用法

# 校对一段文本
./jiaodui.sh "他慢慢的走了。"

# 校对文件
./jiaodui.sh -f draft.md

# stdin 管道
echo "他慢慢的走了。" | ./jiaodui.sh

# 输出原始 JSON(默认输出可读报告)
./jiaodui.sh -f draft.md --json

# 返回人类可读的文本报告(等价 model=jiaodui-text)
./jiaodui.sh --text-model "他慢慢的走了。"

# Windows PowerShell(参数同义)
.\jiaodui.ps1 -File draft.md -Json
.\jiaodui.ps1 -TextModel "他慢慢的走了。"
jiaodui.shjiaodui.ps1说明
-f, --file FILE-File FILE校对文件内容
--json-Json输出原始 JSON(默认可读报告)
--text-model-TextModel使用 jiaodui-text 模型(可读文本报告)
--model NAME-Model NAME指定模型(jiaodui / jiaodui-text / jiaodui-json)
--key KEY-Key KEY显式指定 Key(默认读环境变量 / .env)
--url URL-Url URL覆盖 API 端点(调试/自部署用)

输出示例(发现差错时):

发现 1 条:
  慢慢的走 → 慢慢地走

无差错时输出 本次校对未发现差错。常见报错:未找到 JIAODUI_API_KEY(先 export 或用 --key);HTTP 401(Key 无效或已吊销,去个人中心重新生成);HTTP 429(触发限流:每 2 秒 1 次,按响应的 Retry-After 退避后重试)。

API · OpenAI 兼容

端点与鉴权

POST https://jd.glowjames.top/v1/chat/completions
Content-Type: application/json
Authorization: Bearer <你的 Key>

协议与 OpenAI /v1/chat/completions 兼容,OpenAI SDK 把 base_url 指向 https://jd.glowjames.top/v1 即可复用。

model 取值

modelcontent 返回内容
jiaodui(默认)一段 JSON 字符串,结构见下方「响应结构」
jiaodui-text人类可读的纯文本报告
jiaodui-jsonjiaodui 的别名

messages 取最后一个 role=user 消息的 content 作为待校对文本;system 及更早的对话内容不参与校对。

两种模型的条目数可能不同:jiaodui-text 沿用人工复查报告的形态,会额外带上建议里含 ?? 的提示项(如「重复[t]??」,表示"疑似、请人工确认");jiaodui 的 JSON 面向程序消费,会过滤掉这类无法自动套用的提示。需要汇报条目数时请固定用同一种模型。

jiaodui-text 返回的 content 即报告全文(CRLF 行尾、等宽对齐),形如:

发现差错时:

     本次校对出以下   1 条疑似差错

 序号 疑似差错词                    建议修改                  出现次数  距篇首字数
    1) 慢慢的走                           慢慢地走                                     .2

【校对助手】2026.09.12 09:00:00 AM 校对共    7字  耗时:  0.1秒

无差错时:

     本次校对没有发现差错

 序号 疑似差错词                    建议修改                  出现次数  距篇首字数

【校对助手】2026.09.12 09:00:00 AM 校对共    6字  耗时:  0.1秒

最小示例(curl)

curl -s https://jd.glowjames.top/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $JIAODUI_API_KEY" \
  -d '{
    "model": "jiaodui",
    "messages": [{"role": "user", "content": "他慢慢的走了。"}]
  }'

响应结构(重要)

注意:外层是标准 OpenAI chat.completion 信封,但 choices[0].message.content 是一段 JSON 字符串,不是对象。用标准 SDK 拿到 content 后需要再 json.loads / JSON.parse 一次。
{
  "id": "chatcmpl-…",
  "object": "chat.completion",
  "model": "jiaodui",
  "choices": [{
    "index": 0,
    "finish_reason": "stop",
    "message": {
      "role": "assistant",
      "content": "{\"file\":\"\",\"total\":1,\"items\":[{\"index\":1,\"wrong\":\"慢慢的走\",\"suggestion\":\"慢慢地走\",\"type\":\"general\",\"offset\":2}]}"
    }
  }],
  "usage": { "prompt_tokens": 7, "completion_tokens": 96, "total_tokens": 103 }
}

content 二次解析后的结构:

字段类型说明
filestring回显的文件名(CLI 传入时),API 调用为空串
totalint发现的差错总数
items[]array差错列表,可能为空
items[].indexint序号,从 1 起
items[].wrongstring原文片段
items[].suggestionstring建议改法
items[].typestring错误类别,取值 general / grammar / typo / style 等(无法归类时为 general);字段恒存在,不会省略
items[].offsetint在原文中的大致位置(按 Unicode 字符计,从 1 起)

无差错时 items 为空数组、total 为 0。jiaodui-text 的 content 则是纯文本报告,直接展示即可。

Python(openai SDK)

import json
from openai import OpenAI

client = OpenAI(base_url="https://jd.glowjames.top/v1", api_key="你的 Key")
resp = client.chat.completions.create(
    model="jiaodui",
    messages=[{"role": "user", "content": "他慢慢的走了。"}],
)
result = json.loads(resp.choices[0].message.content)  # content 是 JSON 字符串,需二次解析
for it in result["items"]:
    print(it["wrong"], "→", it["suggestion"])

JavaScript / TypeScript(openai npm 包)

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://jd.glowjames.top/v1",
  apiKey: process.env.JIAODUI_API_KEY,
});
const resp = await client.chat.completions.create({
  model: "jiaodui",
  messages: [{ role: "user", content: "他慢慢的走了。" }],
});
const result = JSON.parse(resp.choices[0].message.content); // 二次解析
for (const it of result.items) {
  console.log(`${it.wrong} → ${it.suggestion}`);
}

流式

请求体加 "stream": true 即返回标准 SSE 分块(chat.completion.chunk),OpenAI SDK 的 stream=True 可直接使用。注意:内容是把最终校对结果切块下发,不是边算边出的增量校对。

注意事项

Skill · AI 助手调用

Skill = SKILL.md(能力说明)+ 三系统 CLI 脚本 + MCP 本地版源码。装好后,在支持的 AI 客户端里说一句"帮我校对这段",校对能力自动被调起。

获取与放置

git clone https://github.com/beautare/jiaodui-skill.git

clone 下来的 jiaodui-skill/ 目录即 skill 根目录(SKILL.md 就在根上)。把它整体放入客户端的 skills 目录,目录名保持 jiaodui-skill:

目录层级以各客户端自己的 skills 文档为准。配置 Key:设 JIAODUI_API_KEY 环境变量,或在 skill 目录内运行 python scripts/setup_env.py --key "<key>"(只写 skill 目录的 .env,不改 shell profile)。

MCP · 客户端接入

远端(推荐,零安装)

端点 https://jd.glowjames.top/mcp(POST,Streamable HTTP,无状态),Bearer Key 鉴权。在 MCP 客户端的 server 配置中加:

{
  "mcpServers": {
    "jiaodui": {
      "url": "https://jd.glowjames.top/mcp",
      "headers": { "Authorization": "Bearer 你的 Key" }
    }
  }
}

配置文件位置因客户端而异(如 Claude Desktop 的 claude_desktop_config.json、Cursor 的 .cursor/mcp.json、VS Code 的 MCP 设置节),字段形态以上述通用写法为准。

工具

本地版(自行编译,stdio)

git clone https://github.com/beautare/jiaodui-skill.git
cd jiaodui-skill/mcp-server
go build -o jiaodui-mcp .   # 需要 Go 1.25+
{
  "mcpServers": {
    "jiaodui": {
      "command": "/path/to/jiaodui-skill/mcp-server/jiaodui-mcp",
      "env": { "JIAODUI_API_KEY": "你的 Key" }
    }
  }
}

本地版经远端 API 调用(JIAODUI_API_URL 可覆盖端点),同样消耗配额;不内置任何 Key。

限制与配额

项目限制超出时
HTTP body≤ 1 MB400
单次输入文本≤ 40,000 字400(context_length_exceeded),请分段
限流(每 Key)每 2 秒 1 次(30 次/分钟),突发上限 4429,按 Retry-After: 2 退避重试
服务端处理30 秒超时504,请缩短文本
Key 数量每账户 1 个有效 Key先吊销旧 Key,再创建新的
并发保护服务端全局并发上限(当前 32)503,稍后重试

免费档即为上述额度,适合轻度使用;需要更高额度或批量处理请发邮件至 contact@beautare.com。

错误码

错误响应统一为 OpenAI 格式:{"error":{"message":"…","type":"…","code":"…"}}。

HTTPcode场景处理建议
400body_too_largebody 超 1 MB 或 JSON 非法减小请求体、检查 JSON
400context_length_exceeded输入超 40,000 字按段落分段校对
400parameter_missing缺 messages 或没有 role=user 消息补全请求体
401invalid_api_keyKey 缺失、错误或已吊销去个人中心检查或重新生成
405method_not_allowed非 POST 请求改用 POST
429rate_limit_exceeded超过限流(每 2 秒 1 次)按 Retry-After: 2 退避重试
503server_overloaded服务端并发已满稍后重试
504timeout处理超时缩短文本或分段

隐私与数据

CLI / Skill / MCP / API 直调都走 OpenAI 兼容接口:该接口不主动保存原文,仅当文本触发同音字等候选检查时,相关质量改进日志会记录该次输入文本,且与账户不关联;另记录调用时间、错误类别等元数据用于配额统计与质量改进(以聚合统计为主)。完整口径见隐私政策与服务条款。

更新日期:2026-09-12 · 问题反馈:contact@beautare.com · 开源仓库:GitHub(MIT) · 隐私口径见隐私政策