关于 agent-signal
Agent Signal 是用于构建事件驱动型 Agent 后台任务的开发技能,使其与前台聊天请求解耦。它说明如何将来源事件转为语义信号并执行动作,也涵盖异步处理、作用域、完成回执、测试与可观测性。
主要功能
- 01定义来源、信号、动作与策略
- 02说明同步及排队入口的选择
- 03指导处理器和策略实现
- 04涵盖作用域与幂等实践
- 05说明追踪、指标与测试
适用场景
- 01添加由运行时事件触发的后台任务
- 02将用户或 Bot 事件路由为 Agent 动作
- 03实现持久化的自迭代完成流程
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ lobehub/ lobehub --skill agent-signal安装后在 Claude Code 中输入/agent-signal确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
agents/openai.yamlreferences/architecture.mdhandlers.mdobservability.md详细介绍
Agent Signal
使用此技能为 Agent 实现事件驱动的后台工作,同时避免将工作与前台聊天请求耦合。
Agent Signal 具有一致的运行时形态:
source event -> signal interpretation -> action execution -> 内置结果信号
持久化的自迭代工作多一个完成分支:
memory/skill action -> execAgent 入队 -> agent.execution.completed -> selfIteration 回执投影
从这里开始
- 阅读
references/architecture.md,了解包边界、运行时队列、作用域模型和异步工作流交接。 - 编写新的策略、源处理器、信号处理器或操作处理器之前,先阅读
references/handlers.md。 - 需要追踪、指标、调试或工作流快照可见性时,阅读
references/observability.md。
选择正确的入口
- 当服务端拥有的生产者应立即执行管道时,使用
emitAgentSignalSourceEvent(...)。 - 当工作线程或受控后端路径已负责执行时机,并且可能注入运行时守卫后端时,使用
executeAgentSignalSourceEvent(...)。 - 当调用方应快速返回,并让 Upstash Workflow 在带外处理事件时,使用
enqueueAgentSignalSourceEvent(...)。 - 对于应避免使用环境中的 Redis 状态的隔离测试或评估,使用
emitAgentSignalSourceEventWithStore(...)。
阅读:
apps/server/src/services/agentSignal/index.tsapps/server/src/workflows/agentSignal/index.tsapps/server/src/workflows/agentSignal/run.ts
核心模型
source:已发生的规范化事实。来源包括运行时生命周期事件、用户消息或机器人入口等生产者。signal:根据一个来源或另一个信号推导出的语义解释。信号表达含义、路由或策略状态。action:根据一个信号规划的具体副作用。操作负责执行工作。policy:用于注册来源、信号和操作处理器的可安装中间件包。procedure:不是独立的运行时节点。将“过程”视为一个用例的端到端流程:入口来源、匹配的处理器、规划的操作、执行结果和可观测性。
严格遵守以下边界:
- 当外部世界产生了新事件时,添加新的
source。 - 当系统需要可复用的语义解释时,添加新的
signal。 - 当运行时需要具体的副作用时,添加新的
action。 - 将这些部分连接起来时,添加或更新
policy。
实现工作流
- 判断用例属于同步工作还是静默后台工作。
- 在
packages/agent-signal/src/source/sourceTypes.ts中定义或复用来源类型。 - 在
apps/server/src/services/agentSignal/policies/types.ts中定义或复用信号和操作类型。 - 使用
defineSourceHandler、defineSignalHandler或defineActionHandler实现处理器。 - 如果生产者负载需要整形,则在
apps/server/src/services/agentSignal/sources/**下添加来源规范化或数据填充逻辑。 - 使用
defineAgentSignalHandlers(...)汇总处理器。 - 在
apps/server/src/services/agentSignal/policies/index.ts中注册策略,并在需要时将其传入运行时工厂。 - 添加或更新入口代码,以发出或入队来源事件。
- 对于异步自迭代写入,添加 Agent Signal 操作标记,并从完成路径投影面向用户的回执。
- 在认为流程完成之前,添加可观测性和测试。
默认阅读集合
- 共享语义核心:
packages/agent-signal/src/index.tspackages/agent-signal/src/base/builders.tspackages/agent-signal/src/base/types.tspackages/agent-signal/src/source/sourceTypes.tspackages/agent-signal/src/source/sourceEvent.ts - 服务端拥有的运行时和中间件:
apps/server/src/services/agentSignal/runtime/AgentSignalRuntime.tsapps/server/src/services/agentSignal/runtime/AgentSignalScheduler.tsapps/server/src/services/agentSignal/runtime/middleware.tsapps/server/src/services/agentSignal/runtime/context.ts - 现有策略示例:
apps/server/src/services/agentSignal/policies/analyzeIntent/index.tsapps/server/src/services/agentSignal/policies/analyzeIntent/feedbackSatisfaction.tsapps/server/src/services/agentSignal/policies/analyzeIntent/feedbackDomain.tsapps/server/src/services/agentSignal/policies/analyzeIntent/feedbackAction.tsapps/server/src/services/agentSignal/policies/analyzeIntent/actions/userMemory.tsapps/server/src/services/agentSignal/policies/analyzeIntent/actions/skillManagement.tsapps/server/src/services/agentSignal/policies/analyzeIntent/completionSkillSynthesis.tsapps/server/src/services/agentSignal/policies/completionPolicy.tsapps/server/src/services/agentSignal/services/selfIteration/completion/buildSelfIterationReceipts.tsapps/server/src/services/agentSignal/services/selfIteration/completion/selfIterationCompletionHandler.ts - 可观测性:
apps/server/src/services/agentSignal/observability/projector.tsapps/server/src/services/agentSignal/observability/traceEvents.tspackages/observability-otel/src/modules/agent-signal/index.ts
实现规则
- 添加新类型前,先复用现有的来源、信号和操作类型。
- 来源处理器应专注于解释和分发,而不是执行繁重的副作用。
- 操作处理器负责副作用、幂等性和执行器式结果报告。对于记忆/技能自迭代操作,副作用是将
execAgent加入队列;持久化写入和回执投影会在完成后进行。 - 当同一来源可能多次到达时,使用稳定 ID 和幂等键。
- 保持作用域纪律。运行时使用
scopeKey串行处理相关的后台工作。 - 对于规范化节点和结果契约,优先使用
@lobechat/agent-signal中专用的共享包类型和构建器。 - 不要从入队操作中投影记忆或技能回执。使用
agent.execution.completed+selfIteration最终状态,并通过createSelfIterationCompletionHandler(...)处理。 - 在所修改的运行时、策略或存储模块附近添加有针对性的测试。
apps/server/src/services/agentSignal/**/__test__和**/__tests__下的现有测试可作为参考模式。
参考
- 架构和边界:
references/architecture.md - 编写处理器和策略:
references/handlers.md - 可观测性、指标和调试:
references/observability.md
评论
支持 Markdown