跳转至

交互式入口 xun / xuns

Xun 安装后提供五个控制台命令,都在 pyproject.toml 的 [project.scripts] 中声明:

命令 入口函数 形态 适用场景
xun xun:main 终端会话 在当前目录里交互式干活
xuns xun:main_serve Web 服务 浏览器界面、文件面板、多会话
xunc xun:main_container 容器会话 把 xuns / xun 关进 Docker 沙箱
xunx xun.supervisor:main 多用户网关 一个端口服务多个用户容器
xune xun.extension:main_extension 扩展 CLI 直接运行某个扩展自带的命令行

xun 与 xuns 共用同一套会话实现,差别只在显示层:前者是控制台显示 Display,后者是 WebDisplay。

xun:终端会话

xun                                        # 进入交互循环,工作目录为当前目录
xun "把 hello.py 写成 hello world"          # 带初始指令进入
xun --non-interactive "只回答一句话:1+1=?"  # 单轮执行,打印结果后退出
参数 类型 默认 说明
instruction 位置参数 "" 进入会话时的第一条指令
--non-interactive 开关 关 单轮执行后退出,不进入交互循环

输入方式

  • 直接输入文本即为用户消息;/名字 参数 为会话命令。
  • 图片附件写成 [image:路径 或 URL],可一次放多个: >>> [image:cat.png image:https://example.com/dog.png] 比较这两张图 (需要 model.capabilities 含 vision,否则智能体会报错而不是静默忽略。)
  • 输入行编辑由 prompt_toolkit 提供:Up 搜索历史、/ 补全斜杠命令、@ 补全文件路径。
  • 确认提示可以在输入中途弹出,回答后原输入原样恢复。
  • Ctrl+C 中断当前执行;/exit 退出会话,/long 进入多行输入模式。

内置会话命令

/help 会列出当前入口实际注册的命令。命令分三组注册。

通用命令(所有入口)

命令 作用
/help 列出已注册命令
/tools 列出已注册工具
/history 显示历史
/tokens 显示当前会话 token 用量
/config 查看配置;/config model.name=my-model 修改(不落盘)
/compact [toolcall] 压缩会话;带 toolcall 时只回收工具结果
/continue 继续执行
/retry 重发上一条消息
/revise [新内容] 不带参数则删除最后一条用户消息并等待重新输入;带参数则替换它
/clear [all] 清空会话历史;all 同时清理临时文件
/yolo 切换全局自动确认
/extensions 列出扩展及其状态

读写工作区相关命令(只在带内置工具的交互式入口注册:xun、xuns)

命令 作用
/save / /load latest\|<序号> 会话存档的保存与载入(实验特性)
/render <文件> 把当前会话历史渲染成独立 HTML 保存
/handoff 把当前会话打包成 zip 交接包,并注入接手提示

策略命令(仅在装载内置工具时注册)

/policy 管理内置工具的写权限与命令允许列表,子命令为 cmd_allowlist、cmd_allowlist_add <命令>、cmd_allowlist_remove <命令>, 以及对应的 path_allowlist* 三个变体。这些允许列表是运行时状态,不写入配置文件。

命令与写文件的确认

危险命令直接拒绝而不进入确认,其余按命令行结构逐项判定,判定结论附简要原因。 详见 工具设置。

xuns:Web 服务

xuns                    # 临时工作区,每个会话各自一个
xuns .                  # 固定工作区,所有会话共用
参数 类型 默认 说明
workdir 位置参数 无 工作区目录;省略则每个会话使用独立临时目录
--host str localhost 监听地址
--port int 18960 端口;0 表示由系统分配
--token str 随机 访问令牌,缺省生成 24 字节 urlsafe token
--base-path str "" URL 前缀,用于挂在反向代理子路径下
--manage-sessions / --no-manage-sessions 开关 开 是否允许在界面上新建 / 删除会话
--initial-agent / --no-initial-agent 开关 开 是否在启动时创建初始智能体

启动后终端会打印带令牌的访问地址,形如 http://localhost:18960/chat/?session=/&token=…; 浏览器打开后令牌被写入 Cookie,地址栏中的令牌随即由一次 303 重定向清掉。

路由

路径 内容 是否需要令牌
/chat/ Web 前端(Vue 单页应用) 需要
/session/<挂载点>/… 该会话显示层的后端接口与 WebSocket 需要
/api/sessions 会话列表与新建 / 删除 / 重命名 需要
/docs/ 随包分发的双语文档 不需要(仅 GET / HEAD)
/srv/<随机键>/… 临时托管的工作目录站点,默认 1 小时过期 URL 自带随机键
/login 令牌登录页 不需要

因此「只想看文档」时可以完全不配模型:xuns --no-initial-agent 后访问 /docs/。

会话与智能体的关系

一个会话等于一个挂载点、一个 WebDisplay,各自持有独立的事件缓冲、待答提示与文件策略; 一个显示层可以绑定多个智能体,界面上用顶部下拉框切换。 xuns <目录> 时所有会话共用同一个工作目录;省略参数时每个会话得到自己的临时目录,会话删除即清理。 程序内挂载方式见 WebDisplay 挂载。

项目指令

智能体会读取工作目录下的 AGENTS.md 并作为系统提示的独立段落加载。 想关掉它,设置 load_project_instructions: false。

相关入口