权限与运行控制
一轮文献研究可能连续检索、读原文,再组织回答。模型负责判断下一步需要什么;系统负责限制它能访问的材料、允许占用的资源,以及何时结束执行。两者共同决定任务能否按用户选择的范围完成。
一、资料与工具访问
后端根据用户身份和请求中的材料范围生成检索条件。资料范围可以包含项目文件及当前附件,访问权限继续单独约束候选;指定某个文件或项目,不会自动获得访问权限。通过过滤的片段再参与排序和筛选。
文献检索、工具配置和运行记录分别校验:
| 位置 | 当前做法 | 对使用体验的影响 |
|---|---|---|
| 资料检索 | 数据库检索条件包含 ACL、项目与附件等过滤项 | 候选证据先经过范围限制,再参与排序和筛选 |
| 工具配置 | 根据工具配置、凭据和本次请求构造可用工具 | 模型只能选择本轮提供的工具 |
| 运行记录 | 列表、导出、停止和恢复均按会话归属校验 | 知道一个 run_id 不足以读取或操作对应任务 |
项目文献范围约束资料检索,不是网络隔离开关。open_url 等外部工具是否可用,由工具配置和各自的访问限制决定;不能因为选择了项目论文,就认为整个任务已禁止联网。
研究记录按会话归属校验,管理员身份也不自动开放其他用户的记录。过程追踪的内容见 Observability 与 Evaluation。
二、Skill 执行与沙箱
内置综述 Skill 的方法资源由应用加载,配套脚本由后端直接导入调用。它使用已有检索、文件读取与存储能力,不能绕过资料范围、访问权限或运行预算。Skill 中出现脚本说明,也不等于模型获得了任意代码执行能力。
代码中保留了 Craft 沙箱相关实现,但普通研究流程未启用这套环境。这里的资料过滤、工具配置和运行限制属于应用层控制,不应描述为所有工具都在沙箱中隔离执行。
三、运行预算与排队
每次受控研究运行保存独立预算,在模型和工具调用入口检查额度,同时监视时间与停止信号。下表列出代码默认值,实际运行使用创建时保存的配置。
| 控制项 | 当前默认值 | 计算口径 |
|---|---|---|
| 同时运行 | 2 个 | 同一运行队列限制并发,后续请求按提交顺序等待;可由服务配置调整 |
| 持续时间 | 600 秒 | 从创建运行开始计时,包含排队 |
| 模型与向量编码调用 | 64 次 | 按受控调用入口累计,与外层循环轮数分别限制 |
| 工具调用 | 30 次 | 按实际进入工具执行的次数累计 |
| Token 预算 | 2,000,000 | 调用前预占保守输入估算与声明的输出上限;生成中累计输出估算,收到提供商用量后结算,未结算调用保留预占 |
| 重复结果 | 3 次 | 工具名、参数和完整结果相同的指纹累计出现三次后结束 |
| 已知费用 | 100 美分 | 依据已返回用量和已配置价格估算 |
请求中的 run_budget 可收紧时间、调用次数、Token、重复结果和费用上限;并发数由服务配置控制。费用无法计算时记录为 unknown,时间和调用限制仍然生效。费用检查依据已返回用量,可能晚于当前调用实际产生费用的时刻,不能将其理解为计费服务的硬性封顶。
例如两项研究正在运行时,第三项会进入排队状态;一项任务释放名额后,排队任务才能开始。这个设计控制同一队列同时承担的模型、检索和数据库工作量,也让“等待执行”和“已经开始研究”可以分别追踪。
四、综述范围与交付控制
Skill启用不等于可以忽略本轮要求。明确不检索或只润色时,当前综述分支停止强制预取、定向补查及稿后补查,并从模型可用集合中移除内部搜索和网页搜索。这个限制不等于对所有其他工具提供账户级网络隔离。
停止取证与正文质量分别记录:取证结束不直接判定当前正文有错,也不能抹去已确认的问题。修订、补读和技术重试都受次数及剩余预算约束;未完成检查时保留已有稿件、引用与实际状态。具体的核验与交付分工见Agent Loop 与工具。
五、停止与异常处理
用户点击停止后,系统设置运行停止信号,拒绝后续受控调用,并通过已注册的取消或关闭接口尝试中断模型请求、向量编码和数据库查询。执行退出时保存实际结果与结束原因,再释放占用的运行资源。
图中的中断和取消操作通过已注册的接口尽力执行,具体结果取决于调用当时的状态。
运行记录区分用户主动停止(cancelled)、时间预算耗尽(time_budget_exhausted),以及调用、Token、工具、费用额度耗尽和重复无进展等原因。保存结束原因不等于任务已经完成,已有证据和稿件按实际生成情况保留。
浏览器断连与主动停止分别处理:当前后台执行路径在页面连接中断后继续处理,用户可重新打开会话读取保存的结果。主动停止会传播取消信号,但外部服务是否立即终止取决于其接口,已发生的计算仍可能计费。