
skillscript v0.39.1
Skillscript — 一种用于编写代理工作流的小型声明式语言。包含运行时、编译器和CLI。
由代理编写的安全、可复用的自动化。
太长不看 —
npm install -g skillscript-runtime && skillfile init && skillfile dashboard。参见快速开始。
Skillscript 是什么?
Skillscript 源于一个问题:如果 Makefile 构建的是技能而非二进制文件,它会是什么样子?答案是:一种受 Make 启发的受限语言,以及一个运行时,能将代理的推理转化为持久、可检查的自动化。代理编写技能,你批准其所能执行的操作,然后每次运行时都保持不变。
它专为那些希望代理创建并执行重复性工作流,但又不想赋予其不受限制的 shell 访问权限、任意包安装或直接控制生产凭据的团队而设计。
代理编写技能。人类审查并批准。运行时通过配置的连接器、允许列表和安全策略来执行。
npm install -g skillscript-runtime
skillfile init
skillfile dashboard
然后将你的代理连接到 MCP:http://localhost:7878/rpc,并让它编写一个技能。
为什么使用它?
代理通常从头开始重新推导常规任务。这会增加成本、延迟和行为漂移。
Skillscript 让代理能将学到的过程结晶为一个命名的、可复用的工件,该工件可以:
- 重复执行而无需重新规划整个任务
- 被人类检查和版本化
- 在准入前验证
- 限制为已批准的工具、文件、命令和凭据
- 与其他技能组合
Skillscript 仅负责编排。计算仍保留在工具和连接器内部;技能通过小型声明式语法协调这些能力。这可以显著减少重复性工作流中前沿模型的令牌使用:推理成本在技能编写时一次性支付,之后每次运行都确定性执行,常规子任务交由更便宜的本地模型处理。
为什么不用 Python 或 Bash?
Python 和 Bash 在实现工作中仍然有用。风险在于允许代理编写的脚本在不受限制的主机上无人值守运行。
Skillscript 缩小了执行面:
- 没有任意导入、包安装、
eval或子进程逃逸 - 通过连接器中介访问外部系统
- 默认拒绝 shell 和文件系统允许列表
- 执行前静态验证
- 对有副作用的技能可选操作者签名
- 凭据由运行时持有,而非嵌入在技能中
目标不是取代脚本。而是将脚本和 API 置于操作者显式暴露的能力之后。
还有一个扩展性方面的原因。审查任意代码意味着审计它可能做的一切,这需要熟练的读者。一个 skillscript 将其完整的效果面置于页面上,因此即使代理编写速度比任何人都读代码快,批准仍然可行;并且知道自己系统应允许何种操作的操作者,可以根据声明的效果进行批准,而非重新阅读逻辑。
一个技能
技能是一个类型化、声明式的工作流,包含变量、操作、依赖和输出模板。
# 技能: hello
# 状态: Approved
# 描述: 按名称问候某人。
# 变量: WHO=world
Hello, ${WHO}!
这是一个完整的、可运行的技能。其主体作为输出呈现。
技能还可以调用连接器、分支、循环、运行其他技能、响应事件以及按计划执行:
# 技能: daily-disk-check
# 状态: Approved
# 触发器: cron:"0 6 * * *"
# 自主: true
Snapshot written for ${NOW}.
snapshot:
shell(command="df -h --output=source,pcent,target") -> USAGE
file_write(
path="/var/log/skillscript/disk-${EVENT.fired_at_unix}.txt",
content="${USAGE}"
)
default: snapshot
在操作者允许列出二进制文件和路径之前,运行时会拒绝执行 shell 命令和文件写入操作。
工作原理
- 编写: 一个连接到 MCP 的代理发现可用工具、编写技能并进行 lint 检查。在安全模式下,它会以“草稿”状态到达,在你批准之前处于非激活状态。
- 审查: 人类检查并批准技能。在安全模式下,批准会用操作者持有的密钥对批准的内容进行签名。
- 运行: 技能可以通过 CLI、MCP、cron、HTTP 事件或另一个技能执行。
- 观察: 运行时记录跟踪、输出、失败和被阻止的操作。
技能可以扮演三种角色:
| 种类 | 目的 |
|---|---|
| 无头 | 自主运行,并将输出发送到系统或人类 |
| 增强型 | 为前沿模型准备上下文 |
| 模板 | 为代理提供一个可重复使用的过程 |
快速开始
1. 安装并启动运行时
npm install -g skillscript-runtime
skillfile init
skillfile dashboard --host 127.0.0.1 --port 7878
打开 http://localhost:7878。
仅当其他容器或机器需要访问运行时,才使用 --host 0.0.0.0,并保护暴露的入站端口。
2. 将 MCP 服务器添加到你的代理
{
"mcpServers": {
"skillscript": {
"type": "http",
"url": "http://localhost:7878/rpc"
}
}
}
3. 让代理构建一个技能
编写一个按名字问候某人的技能。
代理通过 MCP 编写技能。在仪表板或 CLI 中批准它:
skillfile approve hello
skillfile execute hello
连接器与安全
技能通过配置的连接器(而非直接凭据)访问外部系统。连接器可以暴露 MCP 工具、数据存储、本地模型、代理交付渠道或自定义运行时能力。
重要的操作者控制项:
| 设置 | 默认值 |
|---|---|
SKILLSCRIPT_SHELL_ALLOWLIST | 拒绝所有二进制文件 |
SKILLSCRIPT_FS_ALLOWLIST | 拒绝所有路径 |
SKILLSCRIPT_SECURED_MODE | 关闭 |
SKILLSCRIPT_MAX_DEADLINE_SECONDS | 未设置(无上限) |
SKILLSCRIPT_SUPERVISOR_SKILL | 未设置(关闭) |
SKILLSCRIPT_SECRET_<NAME> | 未设置 |
秘密由运行时解析,仅传递给已批准的接收器。技能无法打印或检查其原始值。
常用命令
skillfile lint <技能名>
skillfile compile <技能名>
skillfile execute <技能名>
skillfile approve <技能名>
skillfile diagram <技能名>
skillfile fires <技能名>
skillfile replay <追踪ID>
skillfile health
运行 skillfile <命令> --help 查看选项。
文档
状态
Skillscript 处于 pre-1.0 阶段。核心语言和连接器合约正在稳定中;外部采用和分发工作正在进行。
贡献
欢迎通过 Issue 提交错误报告和功能请求。在提议语法更改之前,请先打开 Issue 以便讨论设计。
许可证
MIT。参见 LICENSE。