CSL-Core 解决的是把安全规则写进提示词所固有的问题:提示词中的规则只是建议,模型可能被说服绕过,规则大多时候有效但并非每次有效,且没有记录。CSL-Core 把规则放在模型之外,编译成经过一致性证明的策略,并在每次工具调用时检查。
一、主要用途与核心能力
- 发现:cslcore venom 读取代码(解析但不运行)、助手与 MCP 配置、cron、systemd 与 launchd、进程列表、运行历史以及已有策略,找出主机上的每个 AI 智能体及其可触达范围。每个智能体的工具按风险分类(read、write、external、execute、spend、destructive),并给出守卫覆盖情况与发现项(如“智能体以 root 运行”“入站 webhook 可达公开发布工具”)。扫描只读、不修改主机,凭据值、提示词与对话记录不会出现在输出中。报告位于 .csl/venom/reports/,cslcore venom --check 可用于 CI 门禁;--check --fail-on-new-reach 可在出现新可达路径时让 CI 失败。
- 可达链与可达地图:智能体单独看可能无害,风险在于链条——读取网页内容的智能体可能修改以 root 运行的另一个智能体的代码,或触及云凭据、转移资金。Venom 基于发现结果构建可达图,找出需要经过两个或以上智能体才能到达的升级链。cslcore venom map 可全屏打开地图,用方向键或数字 1 到 9 选择,面板显示什么可达该节点以及它可达什么;按 d 可深入查看某个智能体,s 切换为 3D 地球视图,n 隐藏名称,r 重放扩散。最严重的直接暴露也会在扫描屏幕和报告中逐步显示。
- 安装与设置:cslcore setup 提供十个可恢复步骤:范围、发现、清单、发现项及建议、豁免、策略(保护板)、验证、映射、执行模式与接线、激活。在保护板上,按 Enter 为无策略的智能体提供标准保护,数字可打开单个智能体的循环,s 保持不动,o 提供其他方式(沿用已有策略、在工作室或编辑器中编写、让助手起草)。每个策略在激活前都通过同一道门:解析、校验、Z3、映射测试。首次激活的智能体默认进入 block 模式(除非选择 log)。
- 策略语言与工作室:策略是小型可读的纯文本文件,语法规范见 syntax-spec.md。cslcore studio 是终端中的完整策略编辑器,F5(或 Ctrl+R)运行 Z3 检查规则矛盾与永不触发的规则,F8(或 Ctrl+T)在可用 Java 时运行 TLA+ 与真实 TLC 模型检查器。建议可按 Enter 应用,Agents 标签可在更改前针对编辑重放已记录决策,Ctrl+B 绑定智能体,Ctrl+L 上线,运行中的守卫会在下次调用时切换。
- 映射测试:cslcore map --test 用大小写变体、未知值、缺失键、错误类型和范围边界测试每个映射,并用绕过技巧测试每个派生检查(路径在范围内、命令被允许、目标被允许),如路径穿越、相似文件夹、链式与替换命令、URL 中的凭据与相似主机。红队发现保留为回归用例。引导见 MAPPING.md。
- 运行监控:cslcore watch 是实时面板,显示智能体的模式与拦截率、决策流、按拦截频率排序的规则。可在 log 与 block 之间切换(m),禁用智能体或单个工具(kill switch),带记录原因地豁免规则,或在工作室中打开规则。l 修改限额,w 接线或取消接线,a 列出等待批准的调用。更改在下次调用时到达运行中的智能体,无需重启,并记录在 .csl/venom/audit.jsonl。按 g 可查看实时可达地图,ALLOW 以青色光显示,WOULD BLOCK 以紫色闪烁显示。
二、使用方式
- 首次安装:cslcore setup 即完成全部首次安装,扫描机器、说明发现并打开保护板,按风险从高到低排列。确认接线更改前,只会在运行所在文件夹内写入。
- 只看不装:使用 uv 可先运行只读扫描,约一秒。加 --share 可生成机器可达地图卡片用于发布(不含主机名、用户名或路径;--anonymize 还会隐藏智能体名称)。也可在克隆本仓库后对示例主机尝试完整流程(示例主机与流量脚本在仓库中,不在包里)。
- 接线:策略激活后,守卫进入每个智能体的调用路径。Claude Code 使用项目 .claude/settings.local.json 中的 PreToolUse 钩子,每次工具调用都经过它,包括插件之后添加的工具。Python 工具(LangChain @tool、OpenAI Agents @function_tool、CrewAI、普通函数)在框架装饰器之下直接加 @_csl_guard.tool("name"),工具保留名称、文档字符串与签名。仅以 schema 形式存在的工具无法自动接线,会得到精确的 guard.check 行,摘要会说明未接线。每个被修改文件先复制到工作区,cslcore wire --undo 可还原。
- 限额:cslcore limits 显示并修改每个智能体可做的事(--set transfer_funds=100k..300k、--set export_rows.limit=..1000、--decide delete_user=block),并重新生成策略、检查并运行检查。仓库可将限额保存在 csl-limits.ini 中,在 pull request 中审阅;cslcore apply 使其生效,cslcore apply --check 在 CI 中检查。
- 审批:超过免费额度的调用不会直接停止;Claude Code 会询问(钩子回答 ask),已接线的 Python 工具返回 ApprovalPending 并在 cslcore watch 中等待(按 a);批准后,同一调用在十分钟内运行一次。任何审批都无法允许的调用(超过最大值、破坏性命令)仍会停止。
- 从代码使用:守卫在智能体启动时使用,实时遵循其绑定、模式和 kill switch;策略也可独立于工作区使用。默认情况下,被阻止的调用抛出 ChimeraError,智能体无法忽略结果继续执行。已有守卫(0.5.1)可用一行添加决策日志、log 模式和实时面板,并保持 block 模式。inject 中的值来自你的系统而非模型,模型无法覆盖。MCP 服务器为助手(Claude Desktop、Cursor、VS Code)提供验证、模拟、解释和脚手架策略的工具,读取发现结果并保存草稿;草稿由助手验证但从不激活,激活权在你。
三、适用场景 适用于在自己的机器或服务器上运行多个 AI 智能体、MCP 服务器、定时任务和带工具访问的脚本,需要知道有哪些智能体、它们能触达什么、并为它们设置可证明且确定性执行的边界。也适用于在 CI 中门禁策略一致性、审阅限额变更、以及需要记录每次工具调用决策的团队。
四、限制与说明 策略在运行前完成验证,运行时守卫只评估;未通过 Z3 的策略不会编译,映射无法读取某个值时阻止调用而不是猜测。工作区应放在本地磁盘:NFS 和某些容器卷上的文件锁不可靠。不自动接线的仅 schema 工具需要手动添加 guard.check 行。多机器托管控制平面(统一视图、集中策略发布、长期审计保留)、更多框架集成和 Linux 打包仍在后续计划中。项目采用 Apache 2.0,仓库内所有内容免费用于任何用途;Chimera Protocol 与 CSL 是 Chimera Protocol 的商标,Apache 2.0 授予代码权利,商标保留。联系合作:aytug@chimera-protocol.com。