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

设计理念

Scoot 刻意保守。它不追求成为功能最多的 AI 自动化平台,而是要成为一个小型、 本地、可检查的 Agent 运行时,能以可控方式触碰真实机器。

有些看起来像缺陷的地方,其实是选择。没有 GUI、daemon 前台运行、readonly 非常严格、不做各厂商私有协议适配,这些都不是偶然遗漏,而是为了让系统保持小、 可审计、可预测。真正的 bug 当然应该修;但如果需求跨过下面这些边界,就需要先 做项目级决策。

Scoot 优先追求什么

Scoot 按下面顺序优化:

  1. 安全与可控。 模型输出必须先被校验;不安全或非法输出不能直接落到系统。
  2. 可审计。 一次运行结束后,用户应能回看目标、模型步骤、工具调用、策略决定、 观察结果和最终答案。
  3. 本地优先。 配置、会话、技能、日志和 daemon 状态都留在用户机器上。
  4. 小部署面。 一个原生二进制、纯文本配置和尽量少的活动部件,比功能广度更重要。
  5. 长时间运行稳定。 daemon 和 scheduled workloads 必须有边界,并采用保守恢复。

这些目标冲突时,Scoot 选择优先级更高的一项。因此,一些更激进的 Agent 会尝试的 工作,Scoot 可能会拒绝。

目标

Scoot 应该是:

  • 终端原生的 Agent。 通过 shell 使用 -e、REPL、schedule 和 daemon 模式。
  • 带策略门的本地执行器。 文件、搜索、shell、HTTP、skill 和 parallel 动作都 先校验,再经过明确策略决策。
  • 边界上 OpenAI 兼容。 本地或云端后端只要提供 OpenAI 兼容 Responses API(/v1/responses)即可接入。
  • 适合小机器。 Zig 实现、低依赖、显式内存分配和交叉编译能力,是为了适配 边缘主机、NAS、实验室机器和小型服务器。
  • 通过指令扩展,而不是原生插件扩展。 Skills 通过可审查的指令包和资源扩展 行为,不需要重新编译 Scoot。
  • 足够适合无人值守只读任务。 Scheduled work 默认 readonly,无人值守的 guarded 会被矫正为有效 readonly

非目标

这些不是 backlog,而是边界:

  • 不做 GUI 或 Web Dashboard。 Scoot 是 CLI 和 daemon,不是桌面应用或浏览器控制台。
  • 不扩散到厂商私有协议。 Scoot 不为每个模型厂商维护一个适配器;厂商差异应由 OpenAI 兼容网关抹平。
  • 不做复杂云同步。 运行状态留在本地;Scoot 不是托管式多设备控制平面。
  • 不执行未经校验的模型输出。 自由文本不会直接变成 shell 命令或工具调用。
  • 不做原生插件运行时。 Skills 是指令和资源,不是带新权限的动态原生代码。
  • 不为了方便牺牲密钥安全。 token 不应出现在提交的配置、日志、审计输出或示例里。
  • 不把 guarded 伪装成安全沙箱。 guarded 是交互式绊线;无人值守或敌对环境 应使用 readonly 和操作系统隔离。

铁律

  1. 先校验,再产生效果。 每个模型步骤必须先解析和检查,工具才能运行。
  2. 所有效果都经过策略门。 shell、写入、网络和原生工具动作必须通过当前策略。
  3. 外部工作必须有超时。 子进程和网络请求不能让 Agent 无限挂住。
  4. 密钥不能进入文本产物。 配置、日志、会话、错误和文档都不能暴露 token。
  5. 无人值守优先 readonly Scheduled guarded job 会被矫正为有效 readonly
  6. Skill 不授予特权。 读取 skill 是原生只读能力;skill 要求 Scoot 执行的动作 仍走正常策略门。
  7. 文档保持双语。 面向用户的文档变更必须同步英文和中文。

看起来像缺陷,其实是选择

你可能看到的现象为什么这样做
没有 GUI。文本界面可脚本化、可审查,也适合小型主机。
daemon run 保持前台运行。后台化、重启、日志和停止应由 systemd 这类 supervisor 负责。
readonly 禁止 shell 和网络。fail-closed 的无人值守模式必须阻止修改和数据外带。
guarded 不被宣传成安全隔离。拒绝清单能挡事故,但不是对抗性沙箱。
没有厂商原生 tool calling 集成。模型边界保持 OpenAI 兼容和 schema 驱动。
Skills 是本地目录,不是插件。指令可以扩展行为,同时不扩大原生可信面。
没有向量记忆子系统。本地 JSONL 状态和 skills 更可检查,也避免重依赖。
网络探针需要显式接受风险。探针有价值,但必须先用 OS / 网络隔离收窄环境,再授予宽权限。

判断一个新功能时,正确的问题不是“能不能做”,而是“能不能在保持本地优先、 可审计、小型、经过策略门的前提下做”。