核心原则
iLang 是一种指令格式,不是绕过授权的手段。
iLang 把交给 Agent 的指令写成结构化的格式,但不授予 Agent 执行的权限。所有危险操作都要有宿主运行时的确认、权限检查和审计日志。
动词风险分级
安全动词(没有副作用)
这些动词读取、分析或格式化数据,不改变外部状态。
| 动词 | 风险 | 原因 |
|---|---|---|
| READ, GET, LIST, STRM | 安全 | 只读访问 |
| FMT, CONV, SPLIT, MERGE, MAP, FILT, SORT, DEDU | 安全 | 在内存里转换 |
| SCAN, MTCH, CNT, STAT, EVAL, SCOR, RANK | 安全 | 分析,不改变状态 |
| OUT, DISP, EXPT, PRNT, LOG | 安全 | 输出给用户 |
| HELP, DESC, INTR, NOOP | 安全 | 只提供信息 |
受控动词(需要确认)
这些动词会修改文件、发送数据或改变外部状态。宿主运行时必须在执行前要求用户确认。
| 动词 | 风险 | 必要防护 |
|---|---|---|
| WRIT | 受控 | 写入前确认文件路径和内容 |
| MOVE | 受控 | 确认来源和目标 |
| COPY | 受控 | 确认目标不会被覆盖 |
| SEND | 受控 | 确认收件人和内容 |
| SYNC | 受控 | 确认同步方向和范围 |
| CACH | 受控 | 确认缓存的存放位置 |
| SAVE | 受控 | 确认状态检查点的存放位置 |
危险动词(需要明确授权)
这些动词能造成数据丢失、执行任意代码,或者改动生产系统。宿主运行时必须强制落实权限检查、试运行模式、沙箱执行和审计日志。
| 动词 | 风险 | 必要防护措施 |
|---|---|---|
| DEL | 危险 | 用户确认 + 试运行预览 + 审计日志 |
| RUN | 危险 | 沙箱执行 + 命令预览 + 用户批准 |
| DPLO | 危险 | 确认目标环境 + 回滚方案 + 审计日志 |
运行时要求
任何执行 iLang 指令的运行时,都必须实现下面这些防护:
| 要求 | 说明 |
|---|---|
| 权限检查 | 执行受控或危险动词之前,核实 Agent 对目标资源有授权 |
| 用户确认 | 对受控和危险动词,先展示将要发生什么,再要求用户明确批准 |
| 试运行模式 | 让用户不执行就能预览一条链的效果 |
| 沙箱执行 | RUN 这样的危险动词,默认必须在隔离环境里执行 |
| 审计日志 | 每一次受控和危险动词的执行,都必须记录时间戳、动词、目标、修饰符和批准它的用户 |
| 宿主策略优先 | 不管 iLang 指令怎么写,宿主系统都可以限制或拦截任何动词 |
iLang 不做什么
| iLang 不会 | 说明 |
|---|---|
| 授予权限 | iLang 把意图写成结构化指令,权限由宿主运行时把关。 |
| 绕过安全层 | 行为定义(::GENE{})在模型已有的安全约束之内起作用。 |
| 直接执行代码 | [RUN|cmd=...] 是交给运行时的指令,不是直接执行代码。 |
| 推翻宿主策略 | 如果宿主拦截 DEL,任何 iLang 指令都推翻不了。 |
报告安全问题
如果你发现 iLang 规范或任何 iLang 工具有安全问题,请通过 GitHub 安全公告报告。