自己部署

一个二进制或一个容器。用自己的知识包,或让生辰不出本机。

公网服务够用时不需要部署。这两种情况值得自己跑一份:想让工具用你自己的知识包;或者不想让生辰离开自己的机器。

源码在 x-haose/x-ziwei,MIT 许可。

本机用(stdio)

需要 Rust 1.88 以上和 Git。

git clone https://github.com/x-haose/x-ziwei
cd x-ziwei
cargo build --release --locked

得到 target/release/x-ziwei。在客户端里把它登记为本地 MCP 服务器,生辰只在本机处理:

.mcp.json
{
  "mcpServers": {
    "ziwei": {
      "command": "/你的路径/x-ziwei",
      "args": ["stdio"]
    }
  }
}

作为服务跑

docker build -t x-ziwei .
docker run --rm -p 8080:8080 x-ziwei

或直接运行二进制:x-ziwei serve --listen 127.0.0.1:8080。

  • MCP:http://127.0.0.1:8080/mcp
  • JSON 接口:http://127.0.0.1:8080/v1/*
  • 健康检查:GET /healthz
参数作用
--listen监听地址,默认 0.0.0.0:8080
--allowed-hostMCP 只接受这个 Host,可重复。公网部署要设
--public-url对外的 HTTPS 根地址。设了才提供 /v1/openapi.json
--client-ip-header服务在反向代理之后时,指明哪个请求头带客户端地址,用作限流键。Cloudflare 之后填 cf-connecting-ip,Traefik 或 nginx 之后填 x-real-ip
--rate-per-second / --rate-burst每个地址的限流,默认每秒 10 次、突发 30 次

客户端地址头必须由代理覆盖

只有前面的代理一定会改写这个头时才能设 --client-ip-header,否则客户端可以伪造地址绕过限流。经 Cloudflare 时还要让源站只接受 Cloudflare 的连接。

用自己的知识包

启动时登记允许读取的目录或地址:

x-ziwei stdio --allow-pack-dir ./packs
x-ziwei serve --allow-pack-url https://example.com/my-school.json

之后各工具的 pack 参数可以写 file:./packs/my-school.json 或登记过的那个 URL。不在白名单里的路径和地址一律拒绝;远程包上限 1 MiB。

包的写法见知识包。extends 写 iztro-docs 的包会合并到默认包之上。

本页目录