打开 Lito
Lito文档
打开 Lito

权限与运行控制

一轮文献研究可能连续检索、读原文,再组织回答。模型负责判断下一步需要什么;系统负责限制它能访问的材料、允许占用的资源,以及何时结束执行。两者共同决定任务能否按用户选择的范围完成。

一、后端如何限制资料与工具访问

后端根据用户身份、项目范围及当前附件确定可访问的资料。模型负责提出查询,实际候选先经过权限和范围过滤,再参与排序。项目与附件条件同时存在时,可以合并为检索范围。

图 08-01点击放大

权限落实在几个不同的位置:

位置 当前做法 对使用体验的影响
资料检索 数据库检索条件包含 ACL、项目与附件等过滤项 候选证据先经过范围限制,再参与排序和筛选
工具配置 根据工具配置、凭据和本次请求构造可用工具 模型只能选择本轮提供的工具
运行记录 列表、导出、停止和恢复均按会话归属校验 知道一个 run_id 不足以读取或操作对应任务

项目文献范围限制检索资料,网页读取另由可用工具决定。当前启用 open_url 时仍可读取外部地址,因此项目范围与联网能力需要分别配置。

研究记录按会话归属校验,管理员身份也不自动开放其他用户的记录。过程追踪的内容见 Observability 与 Evaluation

二、沙箱如何隔离工具执行

工具需要运行脚本或处理文件时,可以在沙箱中执行。沙箱限制这次执行能接触的文件、网络和系统资源;具体范围由工具权限、文件挂载和运行环境配置决定。

Skill 提供任务方法,沙箱提供执行环境。读取 Skill 的方法说明可以通过文件读取工具完成;执行其中的脚本时,再由相应工具安排运行环境。

Lito 代码中保留了 Craft 沙箱相关实现,当前普通研究流程未启用这套环境。现有文献读取和检索通过已提供的工具及后端权限控制完成。

三、系统如何控制研究任务的资源占用

长任务需要一个明确的资源边界。Lito 为一次运行保存独立的 RunLimits,在调用模型和工具前检查额度,同时用监视线程检查时间和停止信号。

控制项 当前默认值 计算口径
同时运行 2 个 后续请求排队,按提交顺序进入
持续时间 600 秒 从创建运行开始计时,包含排队
模型与向量编码调用 64 次 按受控调用入口累计,与外层循环轮数分别限制
工具调用 30 次 按实际进入工具执行的次数累计
Token 预算 2,000,000 使用 UTF-8 字节量保守估算输入输出,提供商实际 token 另行记录
重复结果 3 次 工具名、参数和完整结果相同的指纹累计出现三次后结束
已知费用 100 美分 依据已返回用量和已配置价格估算

请求中的 run_budget 可以收紧这些上限。费用未知时记录为 unknown,时间和调用额度仍然有效;费用检查依据已返回用量,在后续调用前执行,可能晚于当前调用产生费用的时刻。

例如两项研究正在运行时,第三项会进入排队状态;一项任务释放名额后,排队任务才能开始。这个设计控制本机同时承担的模型、检索和数据库工作量,也让“等待执行”和“已经开始研究”可以分别追踪。

四、用户停止任务后,系统如何结束执行

用户点击停止后,系统会传播取消信号,中断当前模型请求、向量编码任务和数据库查询,再保存结束原因并释放运行名额。

图 08-02点击放大

在一次运行中,用户主动停止会记录为 cancelled,时间预算耗尽会记录为 time_budget_exhausted。系统保留已取得的证据,并通过结束原因区分主动中断、额度耗尽和执行错误。

浏览器断连与主动停止分别处理:页面连接中断后,后台任务可以继续运行,用户重新打开页面后读取结果。停止请求会尽力中断正在进行的计算,外部服务已完成的计算仍可能计费。

图表