安装¶
环境要求¶
- Python 3.12 或更高(代码使用 PEP 695 的类型参数语法
def f[T](...);TypeVar(default=...)在 3.12 上由typing_extensions兜底) - Linux / macOS(
bash工具在 Windows 上不注册,见 工具系统) - 一个 OpenAI 兼容的模型服务端点
主要运行时依赖:openai、pydantic、aiohttp、fastapi、rich、jinja2、json-repair、markdown、pillow、playwright、docker、html-to-markdown、python-dotenv、puremagic、typing-extensions。
安装¶
pip install xun-agent
如果需要使用内置浏览器工具,再装一次浏览器内核:
playwright install # 或 playwright install chromium
从源码安装¶
Web 前端资源与文档站点是打包进 src/xun/assets/ 的,从源码安装时若需要 Web 界面,先构建前端:
git clone https://github.com/MenxLi/xun.git
cd xun
make build-web # cd web && npm i && npm run build,产物写入 src/xun/assets/web
pip install .
| 目标 | 作用 |
|---|---|
build-web |
构建 Vue 前端到 src/xun/assets/web |
build-docker |
先 build-web,再 docker build -t xun -f docker/Dockerfile . |
doc |
在容器里按 docs/AGENTS.md 生成中英双语文档站点到 site/ |
doc-update |
与 doc 同一条命令,只把提示词换成「按源码最近的变动更新并优化现有文档」 |
doc-dist |
把 site/ 拷进 src/xun/assets/docs,供 xuns 在 /docs/ 提供(site/index.html 不存在时只提示并跳过) |
doc-clean |
删除 site/ 与打包目录 src/xun/assets/docs(用 git checkout 还原其中被跟踪的文件),再删除 mkdocs.yml;docs/ 下的源文件不受影响 |
test |
uv run python -m unittest discover -s test -t . -v(需要 uv) |
构建 Docker 镜像¶
xunc 与 xunx 使用名为 xun 的镜像:
make build-docker
镜像基于 ubuntu:24.04,预装 Playwright Chromium、Node、LibreOffice、mkdocs 工具链等,并固定了两个与 xun 相关的环境变量:XUN_HOME=/.xun(宿主 xun home 会在建容器时复制进来,只取 config.json 与 extensions)、_XUN_INFO_TOOL_OVERRIDE=1(此外还设了 locale、VIRTUAL_ENV、PATH 等镜像自身所需变量)。Dockerfile 未声明 ENTRYPOINT/CMD(因此继承 ubuntu:24.04 的 /bin/bash),xunc 会显式传入要执行的命令。
配置¶
Xun 从 $XUN_HOME/config.json 读取配置;XUN_HOME 未设置时是当前工作目录下的 .xun/(不是 ~/.xun)。只写想改的字段即可,缺失字段回落内置默认值:
{
"model": {
"name": "my-model"
}
}
配置支持 ${XUN_...} 占位符,值取自环境变量(因此密钥可以放在 .env 里,加载配置时会自动 load_dotenv()):
# .env
XUN_OPENAI_BASE_URL=https://api.example.com/v1
XUN_OPENAI_API_KEY=sk-...
XUN_OPENAI_MODEL= # 留空则自动取服务端返回的第一个模型
| 配置字段 | 环境变量 | 缺失时 |
|---|---|---|
provider.openai_base_url |
${XUN_OPENAI_BASE_URL} |
启动报 RuntimeError |
provider.openai_api_key |
${XUN_OPENAI_API_KEY} |
启动报 RuntimeError |
model.name |
${XUN_OPENAI_MODEL} |
回落空串 → 自动探测模型 |
auto_confirm |
${XUN_AUTO_CONFIRM} |
回落 false |
完整字段、合并规则与全部环境变量见 配置。
确认提示与自动确认
写文件、执行未列入允许列表的命令等操作默认会要求确认。脚本或 CI 场景可以设 XUN_AUTO_CONFIRM=true(或 /yolo 命令临时切换)。自动确认不会把命令或路径写入允许列表。
验证安装¶
xun "Print the current directory and say hello"
进入交互模式后:
>>> /config # 看当前生效的配置
>>> /tools # 看已注册工具
>>> /extensions # 看扩展及其状态
>>> /help # 看全部命令
非交互模式(单轮执行,适合脚本与 CI):
xun --non-interactive "Summarize README.md in one line"
安装后可选内容¶
| 想做什么 | 参考 |
|---|---|
| 换模型、调温度、设推理力度 | 配置 |
| 加自定义工具/钩子/命令 | 扩展系统 |
| 把智能体嵌进自己的程序 | API 指南 |
| 部署到容器、开放给多人 | xunc、xunx |