# 智能决策(IDMM) **IDMM**——Intelligent Decision-Making Mode,智能决策模式——是 Nomi 面向 无人值守任务的稳定性层。它是一个**会话监督器**,盯守每一轮对话,一旦停滞 立即介入,让长时间自动化任务跑到终态,而不是卡在一次提供商抖动、或一个 不再向前推进的模型上。 如果说 [AutoWork](autowork-requirements.zh.md) 是推动工作**向前**的引擎, IDMM 就是让每一轮持续**运转**的守卫。两者天生互补:AutoWork 负责认领并执行 需求,IDMM 则确保它启动的每一轮都真的能跑完。 > IDMM 是一个**可选**的监督器(`nomifun-idmm` crate)。在会话头部——与开启 > AutoWork 相同的位置——按会话开启。 ## 为什么需要它 智能体对话失败,绝大多数是无聊、可恢复的方式,而不是什么有趣的原因: - 提供商返回一次瞬时的 `429` / `5xx`,对话本会就此放弃; - 模型反复重试同一个失败调用,陷入循环; - 模型在某个工具调用上空转,迟迟不决定下一步; - 对话干脆陷入沉默,最终撞上硬性超时。 交互式会话里,你自己推一把就好。但**无人值守**的会话——通宵跑的 AutoWork 队列、定时任务、多智能协同里的某个队友——没有人盯着。IDMM 就是那个盯守者。 ## 两个层级 检测到停滞时,IDMM 会用能解决问题的、最省的手段去化解,必要时才逐级升级。 ### 规则层(无需 LLM) 一套确定性策略**完全不调用模型**就能处理常见的机械性停滞——又快又省: - **提供商故障**——瞬时错误与限流被吸收,对话在合理退避下重试,而不是直接 失败。 - **重试循环**——识别并打断反复出现的相同重试。 - **工具空转**——对于不断重复发起同一工具调用却毫无进展的模型,把它拉回 正轨。 大多数介入都到此为止,不会进入下一层。 ### 旁路模型层(备用模型) 当停滞确实是一个*决策*问题——主模型卡住了、规则无法化解——IDMM 会请一个 **轻量旁路模型**做出下一步决策,让会话不至于死锁。旁路模型是一个小而便宜的 「第二意见」模型:它唯一的职责是把这一轮解开,而不是接管整个工作。 这就是产品语境里的**旁路模型(Sidecar)**:一个待在主智能体旁边、仅在需要 时才介入的模型。 ## 会话守卫与会话保活 规则层与旁路模型合在一起,构成了**会话守卫(Session guard)**:IDMM 在故障与 决策停滞中保活目标,并把这一轮护送到终态。这正是 Nomi 所说的「会话保活」 ——不是一个傻乎乎的心跳,而是一个主动的监督器,去解决那个本会让对话卡死的 根因。 ## 它如何与 AutoWork 协同 IDMM 与 AutoWork 相互独立、彼此互补: - **AutoWork** 认领下一条需求、注入、等待这一轮跑完、并完成它。 - 当 AutoWork 启动一轮时,会请求 IDMM(若已接入)在这一轮期间**确保对该目标 的监督**。 - **IDMM** 让这一轮不至于卡住,从而干净地抵达 `done` / `failed`,而不是超时。 最终效果是:AutoWork 提供向前的推进力,IDMM 提供存活性。一个队列可以无人值守 地跑上数小时,单次的瞬时失败不再让整轮任务中止。 ``` AutoWork: 认领 ─▶ 注入 ─▶ [ 对话运行 ] ─▶ 完成(done/failed) ▲ │ 确保监督 IDMM 守卫 ──▶ 规则层 ──▶ (升级)──▶ 旁路模型 ``` 每层策略的细节和介入日志 API 见 `crates/backend/nomifun-idmm/`。 ## 开启方式 IDMM 在**会话头部**开启,与 AutoWork 是同一处控制入口。对你打算无人值守长跑 的会话或终端目标打开它即可。规则层无需任何配置;旁路模型层会从你配置好的 提供商里使用一个轻量模型。 ## 何时使用 - **建议开启**:任何无人值守的长跑——AutoWork 队列、定时 ([cron](scheduled-tasks.zh.md))任务、通宵批处理,或长时间运行的终端型 agent 会话。 - **可以不开**:你自己盯着、随时能介入的短交互会话。 ## 另请参阅 - [AutoWork 与需求](autowork-requirements.zh.md)——IDMM 最常守护的引擎。 - [定时任务](scheduled-tasks.zh.md)——受益于监督的无人值守任务。 - [终端](terminal.zh.md)——IDMM 可以监督长时间运行的终端目标。