Lovrabet CLI 风险等级(riskLevel)完全指南
这篇主要给 技能维护者、交付同学、自动化集成人员 看。业务人员一般只需要知道:读写有边界,写入前最好先预览。
riskLevel 是干什么的
riskLevel 是 Lovrabet Runtime CLI 的权限护栏。
它的作用不是决定“你想不想执行”,而是决定“当前配置下允不允许执行”。
如果某个命令的风险等级高于当前 riskLevel,CLI 会直接拦截。
当前只有三档
read < write < high-risk-write
| 等级 | 代表什么 | 常见命令 |
|---|---|---|
read | 只读 | dataset list、data filter、data getOne、data aggregate、sql exec、bff exec |
write | 普通写入 | data create、data update、config set、app use |
high-risk-write | 不可逆写入 | data delete |
为什么不能通过 CLI 修改 riskLevel
这是刻意保留的安全边界。
如果 Agent 自己就能执行:
lovrabet config set riskLevel high-risk-write
那它等于可以先提权,再做删除或批量写入,护栏就失效了。
所以当前设计是:
- 你可以通过 CLI 读取
riskLevel - 但不能通过 CLI 修改
riskLevel - 真正的修改必须由人手动编辑配置文件完成
现在应该怎么设置
直接改 .lovrabet.json 顶层字段:
{
"accessKey": "ak_xxx",
"env": "production",
"defaultApp": "crm",
"riskLevel": "write"
}
当前 runtime CLI 的主模型是顶层用户意图配置。
不要再把重点放在旧的本地多应用 profile 模型上。
默认值是什么
当前默认值是:
write
这意味着:
- 读操作默认可执行
- 普通写入默认可执行
- 删除这类高危动作仍然需要更高风险级别
典型拦截场景
场景 1:当前是 read,却想更新数据
lovrabet data update --code <datasetCode> --params '{"id":123,"status":"completed"}'
CLI 会拒绝执行,因为当前权限只允许读。
场景 2:当前是 write,却想删除数据
lovrabet data delete --code <datasetCode> --params '{"id":123}'
CLI 也会拒绝,因为删除属于 high-risk-write。
riskLevel 和 --dry-run 是两个不同的东西
很多人会把它们混在一起,其实它们职责不同:
riskLevel:决定这次有没有资格执行--dry-run:决定这次是否真的执行
也就是说:
- 有权限但不想立刻执行 → 用
--dry-run - 没权限 → 先解决
riskLevel
为什么高危删除还要再确认一次
因为 riskLevel 只是在说“允许你做这类动作”,并不代表“这次删的一定就是你想删的那条数据”。
所以删除命令还有第二层保护:
- 交互模式下弹确认
- 非交互模式下必须加
--yes
这两层加在一起,才更接近真实生产环境需要的安全程度。
给维护同学的实用建议
如果你主要面向生产环境
推荐偏保守:
{
"riskLevel": "read"
}
这样 Agent 默认只能查,不能写。
如果你在做日常交付或测试环境维护
通常可以用:
{
"riskLevel": "write"
}
这样可以做补录和修正,但还不能直接删数据。
如果你真的要执行删除
请至少同时满足:
riskLevel已允许- 先看清目标记录
- 最好先
--dry-run - 非交互模式下显式加
--yes
给业务侧的一句解释
如果业务人员问:
为什么 Agent 不能直接帮我删掉?
最简单的解释就是:
因为系统默认把删除当成高风险动作,必须由人明确放开权限并确认。
这不是麻烦,而是保护真实业务数据。