SkillLite 技术演进笔记:Workspace、沙箱与进化

摘要 :记录 SkillLite 仓库里和实现强相关的几件事:Cargo workspace 里 crate 怎么切、skillliteskilllite-sandbox 两个二进制差在哪、安装到运行三条防线怎么串、skilllite-evolution 写哪些文件以及产物为何仍走扫描与沙箱、MCP / JSON-RPC / agent-rpc 各管哪一段、artifact 与 Python SDK、Tauri 桌面为何单独 manifest。图表用 Mermaid,贴到 CSDN 时请在支持 Mermaid 的编辑器里预览。

仓库:https://github.com/EXboys/skilllite


1. Skill 执行要拆成几条硬步骤

Skill = 不可信脚本/解释执行 + SKILL.md + 依赖声明。只拦运行时不够:安装阶段就要扫、执行前要让人或策略点头、跑起来还要 OS 级隔离和资源上限。仓库里 benchmark/security_vs.pysecurity_detailed_vs.py 把对比项固定成表,README 里那组 20 项对比数据从这里出。

安全相关逻辑分布在 skilllite-core(路径校验、协议)、skilllite-sandbox(runner、各 OS 后端、security/ 规则)等处,不是「沙箱里随便加一段」就完事。




Skill 目录 / 安装请求
Layer1 安装时
静态规则扫描
可疑路径 LLM 辅助分析
供应链审计 PyPI OSV 等
通过?
拒绝安装或标记风险
Layer2 执行前
两阶段确认
完整性哈希校验
允许执行?
不进入 runner
Layer3 运行时
Seatbelt / bwrap seccomp 等
进程白名单 资源上限 FS 网络 IPC
受控执行结束


2. Workspace:两层产品、依赖从上往下长

官方说明见 https://github.com/EXboys/skilllite/blob/main/docs/zh/ARCHITECTURE.md。下面这张图只画「谁依赖谁」的粗关系,细粒度以源码 Cargo.toml 为准。
制品
进化
Core 引擎
上层 Agent 产品
skilllite-agent
skilllite-executor
skilllite-commands
skilllite-core
skilllite-fs
skilllite-sandbox
skilllite-evolution
skilllite-artifact

skilllite 主 crate 把 CLI、MCP、stdio_rpc、对 skilllite-commands 的分发拼起来;skilllite-agent 是 Core 的第一个完整客户,也是默认「开箱聊天」那条链路的实现。

入口与 crate 对照表:https://github.com/EXboys/skilllite/blob/main/docs/zh/ENTRYPOINTS-AND-DOMAINS.md


3. 两个二进制:全功能与只留沙箱

skilllite/ 里默认产物是 skilllite;另有一个 skilllite-sandbox 入口(src/bin/skilllite-sandbox.rs),用 feature 砍掉 Agent、进化等大块,只保留「Core + 能跑沙箱执行」那条线。集成方只想换执行引擎、不想拖全家桶时,用这个更小的二进制;README 里的体积和 RSS 对比也是按这两个入口分别量的。
聊天 进化 CLI 全家桶
只换安全执行层 MCP 等
集成方要什么?
skilllite 二进制
skilllite-sandbox 二进制
agent executor evolution commands ...
core sandbox fs 等裁剪组合


4. 沙箱 crate 里平台怎么分

skilllite-sandboxrunner.rs 里统一 SandboxLevelSandboxConfigResourceLimitsmacos.rslinux.rswindows.rs 各写一套落地。macOS 走 Seatbelt;Linux 走 namespace + seccomp,配合 bubblewrap / firejail;Windows 文档里写清楚是 WSL2 桥接,和 Linux 不是同一套假设。

另外还有 bash 校验、move 保护、network_proxy 等横切模块:起进程前拦一层,起来以后再拦一层,不是单次 exec 了事。
SandboxRunner 抽象
macOS Seatbelt
Linux namespace seccomp bwrap firejail
Windows WSL2 桥接
bash_validator move_protection
network_proxy 可选


5. 进化:skilllite-evolution 动哪些盘、产物去哪

二进制不自我改写;会改的是 prompts、memory、skills 等目录下的文件。新写出来的内容和手工装的 skill 一样过安装扫描、执行前确认、运行时沙箱,没有「进化绿色通道」。调度阈值、cooldown、evolution_log 审计、backlog 状态机等细节直接看 https://github.com/EXboys/skilllite/blob/main/docs/zh/ENV_REFERENCE.md 和 CHANGELOG(A9 调度、shallow preflight、memory 分卷 rollup、evolution_run_outcome 等条目)。
输入
用户反馈 工具结果 任务记录
信号与决策 backlog
skilllite-evolution run
写 prompts 片段
写 memory evolution 分卷等
写或更新 skills
走与手动安装相同的扫描与沙箱路径


6. 对外协议:MCP、stdio JSON-RPC、agent-rpc

  • MCP:skilllite/src/mcp/,给 Cursor、OpenCode 这类宿主挂工具用。
  • stdio_rpc.rs:stdio 上的 JSON-RPC,偏 skill 执行管线。
  • agent-rpc:skilllite-agent 里 JSON Lines 事件流,桌面或子进程 UI 跟一轮对话的状态用。

三条线协议形状不同,维护成本在 CHANGELOG 里能看出来(流式事件、去重、可见 assistant 文本等修过多次)。
宿主
Cursor OpenCode 等
Python SDK 子进程
Tauri 桌面
MCP Server skilllite
skilllite 子进程 API
Tauri invoke
agent-rpc JSON Lines
stdio JSON-RPC 可选路径
同一套 core sandbox commands


7. Artifact:skilllite-artifact 与 HTTP 默认

crate 用 feature 拆 local / server / client:本地目录存储、可选 Axum HTTP、run_artifact_http_server。大文件走 artifact 引用,不硬塞进模型上下文。CLI artifact-serve 和库侧对「无 token 绑非 loopback」一类情况偏拒绝,具体规则见 CHANGELOG 0.1.22、0.1.27 附近。Python 里 artifact_put / artifact_get 用标准库 HTTP 对齐 docs/openapi/artifact-store-http-v1.yaml,逻辑仍在 Rust 二进制。
skilllite-artifact features
local LocalDirArtifactStore
server Axum run_artifact_http_server
client HTTP 客户端
skilllite 或嵌入方
python-sdk urllib


8. Python SDK

python-sdk/ 代码量不大,统一通过子进程调仓库里的 skilllite 可执行文件,导出 scan_codeexecute_codechatrun_skillget_binary 以及 artifact 相关函数。调试时多一层进程边界,换的是零额外 Python 依赖、和 CLI 同版本同行为。LangChain 封装在 langchain-skilllite/,与核心 SDK 分开装。


9. 桌面:skilllite-assistant

Tauri 2 + 前端在 crates/skilllite-assistant/。根 workspace 故意不收这个 crate(GUI 工具链、各平台 CI 矩阵),用 src-tauri/Cargo.toml 单独 cargo build --manifest-path ...。Rust 侧 path 依赖 core、fs、sandbox、agent、evolution,和 CLI 共用一套业务代码;差异主要在 Tauri command 和 WebView(例如 0.1.25 去掉带 lookbehind 的依赖以兼容旧 WKWebView)。
skilllite-assistant
React UI
Tauri commands
skilllite-agent
skilllite-evolution
skilllite-sandbox
skilllite-core


10. tasks/ 目录在干什么

大改动会落在 tasks/TASK-*:背景、约束、cargo test / cargo deny 等怎么跑、superseded 是否作废。例如加过 skilllite-services 又整段回滚(TASK-2026-045),决策和反决策都留在 git 里,而不是只留在聊天窗口。
合并
回滚
想法或重构 PR
TASK 目录写清约束与验证
Code
REVIEW.md
合并或回滚
主分支
保留 superseded 任务供以后查


11. 版本与链接

行为以源码和对应 tag 的 release 说明为准。

相关推荐
lly2024061 小时前
Python 列表(List)
开发语言
Little At Air1 小时前
C++priority_queue模拟实现
开发语言·数据结构·c++
程序员zgh1 小时前
C++ decltype 关键字 详解
c语言·开发语言·c++
Olivia051405141 小时前
Voohu:以太网隔离变压器的耐压与局部放电测试方法及判定标准
网络·安全·信息与通信
qq_419854051 小时前
clip-path绘制倾斜角裁剪的矩形占比条;基于svg实现仪表盘弧线占比图。
前端·javascript·vue.js
weixin_307779131 小时前
SparkPySetup:基于Python的Windows 11 PySpark环境自动化搭建工具
大数据·开发语言·python·spark
明月清了个风1 小时前
libmodbus笔记
笔记·嵌入式软件·libmodbus
Y学院1 小时前
鸿蒙ArkTS动画开发全解析:从基础入门到实战精通
开发语言·鸿蒙
DevilSeagull1 小时前
Rust 结构体详解:从定义到实例化的指南
开发语言·算法·安全·rust