后台主动模式与安全系统
环境模式与安全系统
相关源文件
本章引用的主要源码文件:
docs/AMBIENT_MODE.mddocs/MEMORY_ARCHITECTURE.mddocs/MEMORY_BUDGET.mddocs/SAFETY_SYSTEM.mdsrc/ambient.rssrc/ambient_runner.rssrc/channel.rssrc/notifications.rssrc/safety.rssrc/tool/ambient.rstests/e2e/main.rs
环境模式是一种主动的后台执行状态,允许 jcode 在无需用户直接监督的情况下自主执行"园艺"、"侦察"和"工作"任务 docs/AMBIENT_MODE.md:6-16。为确保这些自主操作始终处于人类控制之下,系统由安全系统进行管理,该系统将操作分类为不同层级,并管理权限请求/通知生命周期 docs/SAFETY_SYSTEM.md:6-17。
系统总览
后台运行器、代理和安全控制之间的关系围绕 AmbientRunnerHandle 和 SafetySystem 展开。
- 环境模式:一个管理自主代理周期的后台循环。它使用
AdaptiveScheduler根据资源可用性和用户活动确定唤醒间隔src/ambient.rs:12。 - 安全系统:一个拦截工具调用的分类引擎。它判断操作是
AutoAllowed(第 1 层)还是RequiresPermission(第 2 层)src/safety.rs:15-18。 - 通知分发器:一个多通道系统(ntfy.sh、电子邮件、桌面通知、Telegram、Discord),用于在后台代理需要干预或完成一个周期时提醒用户
src/notifications.rs:3-8、src/channel.rs:25-57。
自然语言到代码实体的映射
下图将文档中描述的"环境周期"概念桥接到实现该生命周期的具体 Rust 实体。
环境周期执行桥接
来源:src/ambient.rs:69-83、src/ambient.rs:147-160、src/tool/ambient.rs:108-146、docs/AMBIENT_MODE.md:92-143
环境运行器与调度器
AmbientRunnerHandle 是管理后台操作的主要接口。它维护 AmbientStatus(空闲、运行中、已调度、暂停或禁用),并与 AdaptiveScheduler 协调以唤醒代理 src/ambient.rs:69-83。
关键组件:
AmbientRunnerHandle:提供对后台状态的线程安全访问,允许 TUI 和服务器触发或启动周期src/ambient_runner.rs:3-4。VisibleCycleContext:促进后台环境进程与可见 TUI 会话之间的"交接",将状态持久化到~/.jcode/ambient/visible_cycle.jsonsrc/ambient.rs:35-46。ScheduledItem:优先级队列(低、正常、高)中的持久化任务,定义代理在唤醒时应执行的操作,并通过ScheduleTarget指定结果交付位置src/ambient.rs:113-133。
关于资源感知调度和基于 EWMA 的间隔计算的详细信息,请参见 环境运行器与调度器。
来源:src/ambient.rs:35-133、src/ambient_runner.rs:1-4
安全系统与通知
安全系统充当 Agent 的守门员。在执行工具之前,系统使用 classify 方法评估其 ActionTier src/safety.rs:157-164。
操作分类层级:
| 层级 | 分类 | 示例 |
|---|---|---|
| 第 1 层 | AutoAllowed | read、glob、ls、memory、codesearch、grep src/safety.rs:110-122。 |
| 第 2 层 | RequiresPermission | 不在 AUTO_ALLOWED 白名单中的任何操作,例如代码修改、PR 创建或外部通信 src/safety.rs:162-164。 |
权限生命周期:
当尝试执行第 2 层操作时,代理会调用 request_permission 工具。这会创建一个 PermissionRequest,并将其添加到 SafetySystem 的审核队列中 src/safety.rs:167-179。然后,NotificationDispatcher 通过配置的通道(如 ntfy.sh、桌面通知或使用 jcode-notify-email crate 的 SMTP 电子邮件)发送警报 src/notifications.rs:105-130。它还支持通过 Telegram 和 Discord 进行交互式回复循环,以实现远程审批 src/channel.rs:74-83。
安全请求流程
来源:src/safety.rs:128-179、src/notifications.rs:48-130、src/channel.rs:142-205、docs/SAFETY_SYSTEM.md:153-187
关于分类规则、审核队列和通知通道配置的详细信息,请参见 安全系统与通知。