Commit d89a54e
feat: skip/filter subagent observations (Dynamic Workflows) — thedotmack#2736
Claude Code Dynamic Workflows fan a single prompt out to tens-to-hundreds of
parallel subagents (agent_type `workflow-subagent`). Every tool call fires a
PostToolUse hook → claude-mem creates one provider-analyzed observation per
call, so a single run emits hundreds-to-thousands of low-signal observations.
That exhausts the provider's free-tier quota (HTTP 429) and trips the restart
guard, dropping the rest of the run — including valuable main-session work.
Add two settings, filtered BEFORE any worker HTTP call or provider request so
the round-trip and the provider tokens are saved:
- CLAUDE_MEM_SKIP_SUBAGENT_OBSERVATIONS (default `false`) — skip every
observation carrying an agentId. The robust, type-independent lever.
- CLAUDE_MEM_SKIP_AGENT_TYPES (default empty) — comma-separated agent_type skip
list, e.g. `workflow-subagent,Explore`.
Both default off to preserve current behavior (per the issue's acceptance
criteria); `workflow-subagent` is documented as the recommended value. The two
combine as a union: skip if the global toggle matches OR the agent_type is listed.
Implementation:
- New pure helper src/shared/should-skip-agent-observation.ts — single source of
truth for both filtering points.
- Hook handler (src/cli/handlers/observation.ts) filters ahead of the runtime
branch, so it covers both the worker and server-beta runtimes.
- Worker ingestObservation (src/services/worker/http/shared.ts) filters again as
defense-in-depth for any non-hook caller, before the provider call.
- Settings wired into SettingsDefaultsManager (interface + defaults) and the
viewer constants; documented in docs/public/configuration.mdx.
- Tests: helper unit tests + hook-handler integration covering worker and
server-beta runtimes, main-session-unaffected, global toggle, and per-type list.
- Rebuilt plugin bundles.
Future work (out of scope): an optional per-session/minute throughput guard for
runaway bursts from any source.
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>1 parent 8463689 commit d89a54e
13 files changed
Lines changed: 734 additions & 316 deletions
File tree
- docs/public
- plugin
- scripts
- ui
- src
- cli/handlers
- services/worker/http
- ui/viewer/constants
- tests
- cli/handlers
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
22 | 22 | | |
23 | 23 | | |
24 | 24 | | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
25 | 62 | | |
26 | 63 | | |
27 | 64 | | |
| |||
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Large diffs are not rendered by default.
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
7 | 7 | | |
8 | 8 | | |
9 | 9 | | |
| 10 | + | |
| 11 | + | |
10 | 12 | | |
11 | 13 | | |
12 | 14 | | |
| |||
60 | 62 | | |
61 | 63 | | |
62 | 64 | | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
| 76 | + | |
| 77 | + | |
| 78 | + | |
63 | 79 | | |
64 | 80 | | |
65 | 81 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
6 | 6 | | |
7 | 7 | | |
8 | 8 | | |
| 9 | + | |
9 | 10 | | |
10 | 11 | | |
11 | 12 | | |
| |||
114 | 115 | | |
115 | 116 | | |
116 | 117 | | |
| 118 | + | |
| 119 | + | |
| 120 | + | |
| 121 | + | |
| 122 | + | |
| 123 | + | |
| 124 | + | |
| 125 | + | |
| 126 | + | |
117 | 127 | | |
118 | 128 | | |
119 | 129 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
9 | 9 | | |
10 | 10 | | |
11 | 11 | | |
12 | | - | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
13 | 15 | | |
14 | 16 | | |
15 | 17 | | |
| |||
89 | 91 | | |
90 | 92 | | |
91 | 93 | | |
| 94 | + | |
| 95 | + | |
92 | 96 | | |
93 | 97 | | |
94 | 98 | | |
| |||
| Original file line number | Diff line number | Diff line change | |
|---|---|---|---|
| |||
| 1 | + | |
| 2 | + | |
| 3 | + | |
| 4 | + | |
| 5 | + | |
| 6 | + | |
| 7 | + | |
| 8 | + | |
| 9 | + | |
| 10 | + | |
| 11 | + | |
| 12 | + | |
| 13 | + | |
| 14 | + | |
| 15 | + | |
| 16 | + | |
| 17 | + | |
| 18 | + | |
| 19 | + | |
| 20 | + | |
| 21 | + | |
| 22 | + | |
| 23 | + | |
| 24 | + | |
| 25 | + | |
| 26 | + | |
| 27 | + | |
| 28 | + | |
| 29 | + | |
| 30 | + | |
| 31 | + | |
| 32 | + | |
| 33 | + | |
| 34 | + | |
| 35 | + | |
| 36 | + | |
| 37 | + | |
| 38 | + | |
| 39 | + | |
| 40 | + | |
| 41 | + | |
| 42 | + | |
| 43 | + | |
| 44 | + | |
| 45 | + | |
| 46 | + | |
| 47 | + | |
| 48 | + | |
| 49 | + | |
| 50 | + | |
| 51 | + | |
| 52 | + | |
| 53 | + | |
| 54 | + | |
| 55 | + | |
| 56 | + | |
| 57 | + | |
| 58 | + | |
| 59 | + | |
| 60 | + | |
| 61 | + | |
| 62 | + | |
| 63 | + | |
| 64 | + | |
| 65 | + | |
| 66 | + | |
| 67 | + | |
| 68 | + | |
| 69 | + | |
| 70 | + | |
| 71 | + | |
| 72 | + | |
| 73 | + | |
| 74 | + | |
| 75 | + | |
0 commit comments