@ai-agent-forge/plugin-steering-guard

中文文档
0.88.28发布于 2026/11/02MITTypeScriptES Module零依赖近 30 天下载 2511

Steering-guard capability plugin for Agent Forge (mid-run steering reminder injected into the request view)

原始使用文档
文档目录3 节
  1. 行为契约
  2. 探测结论(实施前源码验证)
  3. 测试

@agent-forge/plugin-steering-guard

Agent Forge 中途引导落账提醒插件(docs/design/中途引导与任务状态联动设计.md §4.1 路线 A、§7 S5,第二层强化):检测到 run 进行中到达的用户引导时,向下一次模型请求的视图尾部注入一条 display:false 的提醒,提示模型按六类分类引导并按跨面落账顺序在本回合内落账。第一层常驻纪律由 goal 插件的 TASK_TOOLS_GUIDE 承载,本插件只做决策点提醒,不重复常驻文本。

bundled 分发,宿主通过 manifest 加载;禁用面为会话装配的 disabledPluginIds(agent-forge.plugin.steering-guard)。提醒只在请求视图内生存(不写 context.messages、不进 newMessages,不持久化),对用户不可见。

行为契约

  • 探测:宿主在 _runInputHandlers 内联 await beforeInput loop 钩子,先于 prompt 路径的 run 激活、也先于 steer/followUp 入队返回。钩子时刻读 SessionAPI.isIdle() 是确定性的:idle ⇒ 该输入开新 run(清零 pending),busy ⇒ 运行中(含压缩中)到达的引导(pending 加一)。
  • 注入:transformContext 链路在 pending > 0 且任务面在场时,向请求视图尾部追加一条提醒并消费一个计数(同一引导只提醒一次;run 内连发多条引导各提醒一次)。
  • 生效边界:SessionAPI.getActiveTools 与任务面工具(goal_set/plan_set/todo_update/workflow_set/workflow_advance)无交集时不注入(计数保留,下一请求再判);getActiveTools 不可用时视为在场(宁可多提醒);宿主无 SessionAPI 时插件保持惰性(一切输入按 run-start 处理,零提醒)。
  • 压缩边界:不维护消息计数基线,不存在压缩致基线失真的问题;压缩期间 isIdle() 为 false,压缩窗口内到达的引导照常注入(确定性测试钉住)。

探测结论(实施前源码验证)

  • input.received@1 不流经 CapabilityAPI.subscribe 可见的总线:该事件经 dispatchInputReceivedLifecycle 只派发到 capability runtime 的 lifecycle 目录通道(dispatchLifecycleImpl 只读 lifecycleRegistrations),而 subscribe/publish 是独立的插件间总线(宿主从不向其发布宿主事件,plan.changed 等均由插件自身 api.publish)。
  • lifecycle 通道的派发是 fire-and-forget 异步(宿主 void dispatch...),相对 run 激活(runDefaultLoop 置 _isAgentRunActive)无顺序保证——"新 prompt 开新 run"路径在派发时刻读 isIdle() 是竞态,无法确定性满足"首请求/新回合首请求不提醒"。
  • 故探测事件选 beforeInput loop 钩子(与 transformContext 同属 loop-hook 公共通道),状态机与决策矩阵全为纯函数(src/detector.ts)。

测试

npm test(确定性,零真实 AI/网络):

  • test/detector.test.ts:决策矩阵逐格(首请求/新回合/steering/去重/重放/连发/压缩窗口/任务面缺席/默认在场)。
  • test/entry.test.ts:公共面接线(钩子注册、信号映射、注入与去重、门控保留计数、dispose)。
  • test/manifests.test.ts:三份清单(plugin.json / agent-forge.json / package.json)一致性。
  • test/registration.test.ts:manifest 通道真实装载(需先构建 dist:npm run build)。

版本与发布记录

@ai-agent-forge/plugin-steering-guard 共发布 15 个版本,首次发布于 2026/10/25;过去 12 个月发布了 15 个版本。

版本发布日期距今
0.88.28latest2026/11/025 天前
0.88.272026/11/016 天前
0.88.262026/11/016 天前
0.88.252026/10/317 天前
0.88.242026/10/308 天前
0.88.232026/10/308 天前

关于 @ai-agent-forge/plugin-steering-guard 的常见问题

@ai-agent-forge/plugin-steering-guard 是什么?

Steering-guard capability plugin for Agent Forge (mid-run steering reminder injected into the request view)

如何安装 @ai-agent-forge/plugin-steering-guard?

在项目目录运行 npm install @ai-agent-forge/plugin-steering-guard,或使用 pnpm add / yarn add / bun add。

@ai-agent-forge/plugin-steering-guard 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@ai-agent-forge/plugin-steering-guard 支持 ESM 还是 CommonJS?

以 ES Module 形式发布,推荐使用 import 引入。在 CommonJS 项目中,Node.js 20.19+ / 22.12+ 可以直接 require() 不含顶层 await 的 ES Module,更早的版本需要改用动态 import()。

@ai-agent-forge/plugin-steering-guard 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >=22.19.0。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@ai-agent-forge/plugin-steering-guard 可以商用吗?

@ai-agent-forge/plugin-steering-guard 使用 MIT 许可。宽松许可:允许商业使用、修改和再分发,通常只需在分发时保留原版权与许可声明。以上为概括,不构成法律意见,请以许可原文为准。

@ai-agent-forge/plugin-steering-guard 的下载量有多少?

根据 npm 官方下载统计,@ai-agent-forge/plugin-steering-guard 在 2026/10/05 – 2026/11/03 这 30 天内被下载 2,511 次,日均约 84 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@ai-agent-forge/plugin-steering-guard 还在维护吗?

最新版本 0.88.28 发布于 2026/11/02(5 天前);至今共发布 15 个版本,其中过去 12 个月发布了 15 个;首次发布于 2026/10/25。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。