AuditEffectPower 场景
用一个 effect 场景说明 Power 如何只做副作用,而不改主值
场景
你想记录某类事件:
- 某条消息进来了
- 某个动作被触发了
但你不想:
- 改写主值
- 阻断流程
这时最适合 effect。
示例
import { Power, type PowerHooks } from "@downcity/city/power";
class AuditEffectPower extends Power {
readonly name = "audit_effect";
readonly title = "Audit Effect";
readonly description = "Writes one audit line for every observed event.";
readonly hooks: PowerHooks = {
effect: {
"audit.observe": [
async ({ value, power }) => {
console.log(`[${power}] observed`, value);
},
],
},
};
}
// City 已登记并把 audit_effect 绑定到 entry 的 Agent/Workspace。
await city.powers.scope({ agent_id: agent.id, workspace_id: workspace.id }).effect("audit.observe", {
event: "incoming_message",
session_id: "sess_001",
});为什么这里不是 pipeline
因为你并不关心返回一个新值,只关心副作用本身。