Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

CLI 参考

scoot [options] [command]

不带命令时,Scoot 启动交互式 REPL。全局选项可以位于命令之前或之后。运行目录默认是 ~/.scoot,可用 --scoot-homeSCOOT_HOME 覆盖。

全局选项

选项说明
-e, --eval <prompt>运行单个目标至完成,打印答复,然后退出。
--retries <N>-e 模式下针对瞬时后端错误的重试次数(默认 20 禁用)。
--scoot-home <dir>覆盖运行目录。优先于 SCOOT_HOME
--trace把 ReACT 执行轨迹打印到 stderr(答复/对话仍在 stdout)。-e 与交互式 REPL 模式均可用。
--ticks <N>用于 schedule run / daemon run:运行 N 个轮询周期后退出(默认 0 = 永久运行)。
-h, --help显示用法。
-v, --version显示版本。

命令

选择运行模式

模式工作来源退出行为什么时候用
scoot -e "<goal>"命令行 prompt。返回一个答案后退出。要立即执行一个任务。
scoot servestdin 上的 NDJSON 请求。一直运行到 stdin 关闭。本地 app 需要长期 stdio peer。
scoot schedule run --ticks 1配置里的 [[schedule.jobs]]轮询一次调度器后退出。cron、systemd timer 或 CI 负责调度时间。
scoot daemon run配置里的 [[schedule.jobs]]默认持续运行。Scoot 负责调度循环,外部 supervisor 负责保活。

daemon run 不是 -e 的快捷写法:它不接收命令行里的临时 prompt,而是加载 配置任务、检查触发器、写入 daemon pid/state 文件,并使用无人值守任务的安全规则。

repl(默认)

scoot              # or: scoot repl

启动交互式的读取-求值-打印循环(Read-Eval-Print loop)。输入一个目标,看着 agent 工作, 得到答复,再循环。输入 /exit 退出。每个提示都会在所配置的策略下运行完整的 ReACT 循环。 加上 --trace 可把每一轮的 ReACT 轨迹流式输出到 stderr,对话仍保留在 stdout:

scoot --trace            # 交互式 REPL,执行轨迹输出到 stderr

-e, --eval — 一次性

scoot -e "count the Zig source files in this repository"
scoot --retries 4 -e "summarize README.md"
scoot --trace -e "list the largest files under src/"

运行一个目标,并 仅把最终答复 打印到 stdout——非常适合脚本与管道。--trace 会在 stderr 上附加逐步轨迹,便于调试而不污染答复。轨迹会在每个阻塞步骤之前先打印实时进度 标记——调用模型前打印 thinking:,执行工具前打印 running: <工具>——这样等待期间也能看到 agent 当前在做什么,轨迹不会显得卡死。--retries 控制对瞬时后端失败(限流、5xx)的重试。

serve — stdio app-server

printf '%s\n' '{"id":"1","method":"session.list","params":{}}' | scoot serve

以前台进程运行本地 app 集成用的 stdio 协议。协议是换行分隔 JSON:stdin 每一行 是一条请求,stdout 每一行是一条响应;响应会带回同一个 idok,以及 resulterror

支持的方法:

方法参数结果
run{ "goal": "..." }{ "session_id": "...", "reply": "..." }
session.list{}{ "sessions": [...] }
session.get{ "id": "..." }{ "id": "...", "messages": [...] }
audit.query{ "session_id": "..." }{ "session_id": "...", "events": [...] }

serve 不打开 TCP/UDS,不做鉴权,不把自己后台化,也不做多任务并发状态机。 进程生命周期、重启和日志归调用方或 supervisor 管理。

setup

scoot setup
scoot --scoot-home /opt/scoot/instance-a setup

通过几步交互式提问生成配置目录,让你无需手写 TOML 即可快速搭建一个实例。它会询问 配置目录(默认 ~/.scoot,或解析出的 --scoot-home / SCOOT_HOME)、后端的 base_urlmodeltoken 来源env、一个 0600 文件,或一条命令)、max_turns 以及工具 policy。随后创建运行目录树(skills/logs/state/sessions/)并写出 config.toml

token 值本身 绝不会写入 config.toml——只记录其来源。如果选择文件来源并粘贴了 token,Scoot 会把它写入 token 文件并收紧为 0600,以便密钥加载能够接受。 若 config.toml 已存在,会先请你确认再覆盖。提示未覆盖到的选项,可在生成后直接编辑该文件 (参见 config.example.toml)。

由于每个生成的目录都是自包含的,setup 是在同一台主机上运行 多个隔离实例 的快捷路径—— 让每个实例各自指向自己的 --scoot-home / SCOOT_HOME。每个运行目录只允许一个守护进程的规则 参见调度与守护进程

config

scoot config

打印解析出的运行目录与后端配置。密钥被 脱敏——只显示解析出的来源,绝不显示 token 值。 用它来确认当前生效的是哪个配置文件与运行目录。

doctor

scoot doctor
scoot --scoot-home /tmp/scoot-test doctor

运行本地健康检查且不打印任何密钥:运行目录与权限、配置来源、后端前置条件、解析出的 密钥来源、技能发现、调度状态,以及审计日志路径。出现异常时先运行它。

policy check

scoot policy check <action> <input> [--mode <mode>]

针对某个策略模式对工具动作进行试运行(dry-run),并解释它会被 允许 还是 拒绝, 而不实际执行任何东西。<mode>guarded(默认)、readonlyunrestricted

scoot policy check bash "rm -rf /" --mode guarded      # deny
scoot policy check bash "ls -la"   --mode readonly     # deny (no shell in readonly)
scoot policy check file_read '{"path":"README.md"}' --mode readonly  # allow
scoot policy check skill '{"name":"demo"}' --mode readonly           # allow (native)
scoot policy check recall '{"query":"old"}' --mode readonly          # allow (native)

这是理解策略模型最快的方式——参见 执行策略与安全

skills

scoot skills                       # list discovered skills (name / description / dir)
scoot skills check [dir]           # validate a skill dir, or all search paths if omitted
scoot skills pack <dir> [out.tar]  # validate and export a reviewable tar package
  • skills 打印解析出的搜索路径与每个被发现的技能。
  • skills check [dir] 校验结构,不执行 任何技能脚本。一个有效的技能拥有 带非空 namedescriptionSKILL.md;可选的 capabilitiesallowed_toolsscope 元数据也会被校验。
  • skills pack 先校验再导出一个带 .scoot-skill.json 评审 manifest 的 tar。它包含常规的非隐藏文件,拒绝符号链接等不安全类型,且不授予任何策略绕过。

撰写细节参见 技能

wasm-tools check

scoot wasm-tools check <dir>

静态校验本地 Wasm 工具包的边界——manifest.tomlpolicy.toml、被引用的 JSON schema,以及安全的相对路径。它 绝不 加载或执行 Wasm。参见 Wasm 工具包

schedule

scoot schedule list                 # show configured jobs and their state
scoot schedule run                  # run the scheduler loop (foreground)
scoot schedule run --ticks 1        # run one poll cycle then exit

列出或运行调度任务。无人值守的运行强制执行 fail-closed 的 readonly 安全级别。运行需要 schedule.enabled = true。参见 调度与守护进程

daemon

scoot daemon status                 # print last recorded daemon state
scoot daemon run                    # foreground long-running scheduler
scoot daemon run --ticks 3          # run three poll cycles then exit
scoot daemon stop                   # state/pid 一致时才发送 SIGTERM

面向调度任务的前台长运行模式。它写入 state/daemon.jsonstate/daemon.pid,安装 SIGTERM/SIGINT 处理器,并 保持无人值守的 readonly 安全规则。它 不会 fork 到后台—— 请用 systemdlaunchdtmux 或 shell 作业来实现。每个运行目录只允许一个守护进程; 若要在同一主机上运行多个,请为每个实例分配各自的 --scoot-home / SCOOT_HOME (可用 scoot setup 来搭建)。参见 调度与守护进程

退出行为与管道

-e 模式把最终答复写入 stdout,把诊断/轨迹写入 stderr,因此你可以把 Scoot 组合进 shell 管道:

answer=$(scoot -e "print today's date in ISO 8601")
scoot --trace -e "audit open ports" 2> trace.log