opencode-swarm-plugin 0.56.0 → 0.56.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/claude-plugin/.claude-plugin/plugin.json +1 -4
- package/claude-plugin/commands/hive.md +1 -1
- package/claude-plugin/commands/swarm.md +5 -1
- package/dist/bin/swarm.js +10 -10
- package/dist/index.js +5 -5
- package/dist/plugin.js +5 -5
- package/dist/swarm-prompts.d.ts +1 -1
- package/dist/swarm-prompts.d.ts.map +1 -1
- package/dist/swarm-prompts.js +5 -5
- package/global-skills/swarm-coordination/SKILL.md +21 -20
- package/package.json +1 -1
|
@@ -5,10 +5,7 @@
|
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Joel Hooks"
|
|
7
7
|
},
|
|
8
|
-
"repository":
|
|
9
|
-
"type": "git",
|
|
10
|
-
"url": "https://github.com/joelhooks/opencode-swarm-plugin"
|
|
11
|
-
},
|
|
8
|
+
"repository": "https://github.com/joelhooks/opencode-swarm-plugin",
|
|
12
9
|
"keywords": ["multi-agent", "coordination", "tasks", "parallel"],
|
|
13
10
|
"license": "MIT"
|
|
14
11
|
}
|
|
@@ -4,7 +4,7 @@ description: Query and manage swarm tasks (cells)
|
|
|
4
4
|
|
|
5
5
|
# /swarm:hive
|
|
6
6
|
|
|
7
|
-
Manage Hive cells with the `hive_*` tools (
|
|
7
|
+
Manage Hive cells with the `hive_*` tools (no deprecated CLI references).
|
|
8
8
|
|
|
9
9
|
## Common actions
|
|
10
10
|
- List ready work: `hive_ready()`
|
|
@@ -6,6 +6,8 @@ description: Decompose a task into parallel subtasks and coordinate execution
|
|
|
6
6
|
|
|
7
7
|
Use this command to kick off a multi-agent swarm.
|
|
8
8
|
|
|
9
|
+
If no task is provided, ask the user for the task description before proceeding.
|
|
10
|
+
|
|
9
11
|
## Workflow
|
|
10
12
|
1. Clarify scope and success criteria if needed.
|
|
11
13
|
2. `swarmmail_init()` to register the session.
|
|
@@ -16,4 +18,6 @@ Use this command to kick off a multi-agent swarm.
|
|
|
16
18
|
7. Review workers with `swarm_review()` + `swarm_review_feedback()`.
|
|
17
19
|
|
|
18
20
|
## Usage
|
|
19
|
-
`/swarm:swarm
|
|
21
|
+
`/swarm:swarm <task>`
|
|
22
|
+
|
|
23
|
+
If `$ARGUMENTS` is empty, ask the user to provide the task before continuing.
|
package/dist/bin/swarm.js
CHANGED
|
@@ -351364,7 +351364,7 @@ var STRATEGY_DECOMPOSITION_PROMPT = `You are decomposing a task into paralleliza
|
|
|
351364
351364
|
|
|
351365
351365
|
{context_section}
|
|
351366
351366
|
|
|
351367
|
-
{
|
|
351367
|
+
{hivemind_history}
|
|
351368
351368
|
|
|
351369
351369
|
{skills_context}
|
|
351370
351370
|
|
|
@@ -352908,13 +352908,13 @@ var swarm_evaluation_prompt = tool2({
|
|
|
352908
352908
|
}
|
|
352909
352909
|
});
|
|
352910
352910
|
var swarm_plan_prompt = tool2({
|
|
352911
|
-
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries
|
|
352911
|
+
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries Hivemind sessions for similar tasks.",
|
|
352912
352912
|
args: {
|
|
352913
352913
|
task: tool2.schema.string().min(1).describe("Task description to decompose"),
|
|
352914
352914
|
strategy: tool2.schema.enum(["file-based", "feature-based", "risk-based", "auto"]).optional().describe("Decomposition strategy (default: auto-detect)"),
|
|
352915
352915
|
context: tool2.schema.string().optional().describe("Additional context (codebase info, constraints, etc.)"),
|
|
352916
|
-
query_cass: tool2.schema.boolean().optional().describe("Query
|
|
352917
|
-
cass_limit: tool2.schema.number().int().min(1).optional().describe("Max
|
|
352916
|
+
query_cass: tool2.schema.boolean().optional().describe("Query Hivemind sessions for similar past tasks (default: true)"),
|
|
352917
|
+
cass_limit: tool2.schema.number().int().min(1).optional().describe("Max Hivemind session results to include (default: 3)"),
|
|
352918
352918
|
include_skills: tool2.schema.boolean().optional().describe("Include available skills in context (default: true)")
|
|
352919
352919
|
},
|
|
352920
352920
|
async execute(args22) {
|
|
@@ -352962,7 +352962,7 @@ ${insights}` : insights ? `## Additional Context
|
|
|
352962
352962
|
|
|
352963
352963
|
${insights}` : `## Additional Context
|
|
352964
352964
|
(none provided)`;
|
|
352965
|
-
const prompt = STRATEGY_DECOMPOSITION_PROMPT.replace("{task}", args22.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{
|
|
352965
|
+
const prompt = STRATEGY_DECOMPOSITION_PROMPT.replace("{task}", args22.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{hivemind_history}", "").replace("{skills_context}", skillsContext || "");
|
|
352966
352966
|
return JSON.stringify({
|
|
352967
352967
|
prompt,
|
|
352968
352968
|
strategy: {
|
|
@@ -364357,7 +364357,7 @@ var STRATEGY_DECOMPOSITION_PROMPT3 = `You are decomposing a task into paralleliz
|
|
|
364357
364357
|
|
|
364358
364358
|
{context_section}
|
|
364359
364359
|
|
|
364360
|
-
{
|
|
364360
|
+
{hivemind_history}
|
|
364361
364361
|
|
|
364362
364362
|
{skills_context}
|
|
364363
364363
|
|
|
@@ -365540,13 +365540,13 @@ var swarm_evaluation_prompt2 = tool3({
|
|
|
365540
365540
|
}
|
|
365541
365541
|
});
|
|
365542
365542
|
var swarm_plan_prompt2 = tool3({
|
|
365543
|
-
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries
|
|
365543
|
+
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries Hivemind sessions for similar tasks.",
|
|
365544
365544
|
args: {
|
|
365545
365545
|
task: tool3.schema.string().min(1).describe("Task description to decompose"),
|
|
365546
365546
|
strategy: tool3.schema.enum(["file-based", "feature-based", "risk-based", "auto"]).optional().describe("Decomposition strategy (default: auto-detect)"),
|
|
365547
365547
|
context: tool3.schema.string().optional().describe("Additional context (codebase info, constraints, etc.)"),
|
|
365548
|
-
query_cass: tool3.schema.boolean().optional().describe("Query
|
|
365549
|
-
cass_limit: tool3.schema.number().int().min(1).optional().describe("Max
|
|
365548
|
+
query_cass: tool3.schema.boolean().optional().describe("Query Hivemind sessions for similar past tasks (default: true)"),
|
|
365549
|
+
cass_limit: tool3.schema.number().int().min(1).optional().describe("Max Hivemind session results to include (default: 3)"),
|
|
365550
365550
|
include_skills: tool3.schema.boolean().optional().describe("Include available skills in context (default: true)")
|
|
365551
365551
|
},
|
|
365552
365552
|
async execute(args5) {
|
|
@@ -365594,7 +365594,7 @@ ${insights}` : insights ? `## Additional Context
|
|
|
365594
365594
|
|
|
365595
365595
|
${insights}` : `## Additional Context
|
|
365596
365596
|
(none provided)`;
|
|
365597
|
-
const prompt = STRATEGY_DECOMPOSITION_PROMPT3.replace("{task}", args5.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{
|
|
365597
|
+
const prompt = STRATEGY_DECOMPOSITION_PROMPT3.replace("{task}", args5.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{hivemind_history}", "").replace("{skills_context}", skillsContext || "");
|
|
365598
365598
|
return JSON.stringify({
|
|
365599
365599
|
prompt,
|
|
365600
365600
|
strategy: {
|
package/dist/index.js
CHANGED
|
@@ -67093,7 +67093,7 @@ var STRATEGY_DECOMPOSITION_PROMPT2 = `You are decomposing a task into paralleliz
|
|
|
67093
67093
|
|
|
67094
67094
|
{context_section}
|
|
67095
67095
|
|
|
67096
|
-
{
|
|
67096
|
+
{hivemind_history}
|
|
67097
67097
|
|
|
67098
67098
|
{skills_context}
|
|
67099
67099
|
|
|
@@ -68276,13 +68276,13 @@ var swarm_evaluation_prompt = tool({
|
|
|
68276
68276
|
}
|
|
68277
68277
|
});
|
|
68278
68278
|
var swarm_plan_prompt = tool({
|
|
68279
|
-
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries
|
|
68279
|
+
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries Hivemind sessions for similar tasks.",
|
|
68280
68280
|
args: {
|
|
68281
68281
|
task: tool.schema.string().min(1).describe("Task description to decompose"),
|
|
68282
68282
|
strategy: tool.schema.enum(["file-based", "feature-based", "risk-based", "auto"]).optional().describe("Decomposition strategy (default: auto-detect)"),
|
|
68283
68283
|
context: tool.schema.string().optional().describe("Additional context (codebase info, constraints, etc.)"),
|
|
68284
|
-
query_cass: tool.schema.boolean().optional().describe("Query
|
|
68285
|
-
cass_limit: tool.schema.number().int().min(1).optional().describe("Max
|
|
68284
|
+
query_cass: tool.schema.boolean().optional().describe("Query Hivemind sessions for similar past tasks (default: true)"),
|
|
68285
|
+
cass_limit: tool.schema.number().int().min(1).optional().describe("Max Hivemind session results to include (default: 3)"),
|
|
68286
68286
|
include_skills: tool.schema.boolean().optional().describe("Include available skills in context (default: true)")
|
|
68287
68287
|
},
|
|
68288
68288
|
async execute(args2) {
|
|
@@ -68330,7 +68330,7 @@ ${insights}` : insights ? `## Additional Context
|
|
|
68330
68330
|
|
|
68331
68331
|
${insights}` : `## Additional Context
|
|
68332
68332
|
(none provided)`;
|
|
68333
|
-
const prompt = STRATEGY_DECOMPOSITION_PROMPT2.replace("{task}", args2.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{
|
|
68333
|
+
const prompt = STRATEGY_DECOMPOSITION_PROMPT2.replace("{task}", args2.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{hivemind_history}", "").replace("{skills_context}", skillsContext || "");
|
|
68334
68334
|
return JSON.stringify({
|
|
68335
68335
|
prompt,
|
|
68336
68336
|
strategy: {
|
package/dist/plugin.js
CHANGED
|
@@ -66674,7 +66674,7 @@ var STRATEGY_DECOMPOSITION_PROMPT2 = `You are decomposing a task into paralleliz
|
|
|
66674
66674
|
|
|
66675
66675
|
{context_section}
|
|
66676
66676
|
|
|
66677
|
-
{
|
|
66677
|
+
{hivemind_history}
|
|
66678
66678
|
|
|
66679
66679
|
{skills_context}
|
|
66680
66680
|
|
|
@@ -67857,13 +67857,13 @@ var swarm_evaluation_prompt = tool({
|
|
|
67857
67857
|
}
|
|
67858
67858
|
});
|
|
67859
67859
|
var swarm_plan_prompt = tool({
|
|
67860
|
-
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries
|
|
67860
|
+
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries Hivemind sessions for similar tasks.",
|
|
67861
67861
|
args: {
|
|
67862
67862
|
task: tool.schema.string().min(1).describe("Task description to decompose"),
|
|
67863
67863
|
strategy: tool.schema.enum(["file-based", "feature-based", "risk-based", "auto"]).optional().describe("Decomposition strategy (default: auto-detect)"),
|
|
67864
67864
|
context: tool.schema.string().optional().describe("Additional context (codebase info, constraints, etc.)"),
|
|
67865
|
-
query_cass: tool.schema.boolean().optional().describe("Query
|
|
67866
|
-
cass_limit: tool.schema.number().int().min(1).optional().describe("Max
|
|
67865
|
+
query_cass: tool.schema.boolean().optional().describe("Query Hivemind sessions for similar past tasks (default: true)"),
|
|
67866
|
+
cass_limit: tool.schema.number().int().min(1).optional().describe("Max Hivemind session results to include (default: 3)"),
|
|
67867
67867
|
include_skills: tool.schema.boolean().optional().describe("Include available skills in context (default: true)")
|
|
67868
67868
|
},
|
|
67869
67869
|
async execute(args2) {
|
|
@@ -67911,7 +67911,7 @@ ${insights}` : insights ? `## Additional Context
|
|
|
67911
67911
|
|
|
67912
67912
|
${insights}` : `## Additional Context
|
|
67913
67913
|
(none provided)`;
|
|
67914
|
-
const prompt = STRATEGY_DECOMPOSITION_PROMPT2.replace("{task}", args2.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{
|
|
67914
|
+
const prompt = STRATEGY_DECOMPOSITION_PROMPT2.replace("{task}", args2.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{hivemind_history}", "").replace("{skills_context}", skillsContext || "");
|
|
67915
67915
|
return JSON.stringify({
|
|
67916
67916
|
prompt,
|
|
67917
67917
|
strategy: {
|
package/dist/swarm-prompts.d.ts
CHANGED
|
@@ -21,7 +21,7 @@ export declare const DECOMPOSITION_PROMPT = "You are decomposing a task into par
|
|
|
21
21
|
/**
|
|
22
22
|
* Strategy-specific decomposition prompt template
|
|
23
23
|
*/
|
|
24
|
-
export declare const STRATEGY_DECOMPOSITION_PROMPT = "You are decomposing a task into parallelizable subtasks for a swarm of agents.\n\n## Task\n{task}\n\n{strategy_guidelines}\n\n{context_section}\n\n{
|
|
24
|
+
export declare const STRATEGY_DECOMPOSITION_PROMPT = "You are decomposing a task into parallelizable subtasks for a swarm of agents.\n\n## Task\n{task}\n\n{strategy_guidelines}\n\n{context_section}\n\n{hivemind_history}\n\n{skills_context}\n\n## MANDATORY: Hive Issue Tracking\n\n**Every subtask MUST become a cell.** This is non-negotiable.\n\nAfter decomposition, the coordinator will:\n1. Create an epic cell for the overall task\n2. Create child cells for each subtask\n3. Track progress through cell status updates\n4. Close cells with summaries when complete\n\nAgents MUST update their cell status as they work. No silent progress.\n\n## Requirements\n\n1. **Break into independent subtasks** that can run in parallel (as many as needed)\n2. **Assign files** - each subtask must specify which files it will modify\n3. **No file overlap** - files cannot appear in multiple subtasks (they get exclusive locks)\n4. **Order by dependency** - if subtask B needs subtask A's output, A must come first in the array\n5. **Estimate complexity** - 1 (trivial) to 5 (complex)\n6. **Plan aggressively** - break down more than you think necessary, smaller is better\n\n## Response Format\n\nRespond with a JSON object matching this schema:\n\n```typescript\n{\n epic: {\n title: string, // Epic title for the hive tracker\n description?: string // Brief description of the overall goal\n },\n subtasks: [\n {\n title: string, // What this subtask accomplishes\n description?: string, // Detailed instructions for the agent\n files: string[], // Files this subtask will modify (globs allowed)\n dependencies: number[], // Indices of subtasks this depends on (0-indexed)\n estimated_complexity: 1-5 // Effort estimate\n },\n // ... more subtasks\n ]\n}\n```\n\nNow decompose the task:";
|
|
25
25
|
/**
|
|
26
26
|
* Prompt template for spawned subtask agents.
|
|
27
27
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"swarm-prompts.d.ts","sourceRoot":"","sources":["../src/swarm-prompts.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAYH;;;;;GAKG;AACH,eAAO,MAAM,oBAAoB,s6EAkET,CAAC;AAEzB;;GAEG;AACH,eAAO,MAAM,6BAA6B,
|
|
1
|
+
{"version":3,"file":"swarm-prompts.d.ts","sourceRoot":"","sources":["../src/swarm-prompts.ts"],"names":[],"mappings":"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"}
|
package/dist/swarm-prompts.js
CHANGED
|
@@ -43546,7 +43546,7 @@ var STRATEGY_DECOMPOSITION_PROMPT = `You are decomposing a task into paralleliza
|
|
|
43546
43546
|
|
|
43547
43547
|
{context_section}
|
|
43548
43548
|
|
|
43549
|
-
{
|
|
43549
|
+
{hivemind_history}
|
|
43550
43550
|
|
|
43551
43551
|
{skills_context}
|
|
43552
43552
|
|
|
@@ -45090,13 +45090,13 @@ var swarm_evaluation_prompt = tool({
|
|
|
45090
45090
|
}
|
|
45091
45091
|
});
|
|
45092
45092
|
var swarm_plan_prompt = tool({
|
|
45093
|
-
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries
|
|
45093
|
+
description: "Generate strategy-specific decomposition prompt. Auto-selects strategy or uses provided one. Queries Hivemind sessions for similar tasks.",
|
|
45094
45094
|
args: {
|
|
45095
45095
|
task: tool.schema.string().min(1).describe("Task description to decompose"),
|
|
45096
45096
|
strategy: tool.schema.enum(["file-based", "feature-based", "risk-based", "auto"]).optional().describe("Decomposition strategy (default: auto-detect)"),
|
|
45097
45097
|
context: tool.schema.string().optional().describe("Additional context (codebase info, constraints, etc.)"),
|
|
45098
|
-
query_cass: tool.schema.boolean().optional().describe("Query
|
|
45099
|
-
cass_limit: tool.schema.number().int().min(1).optional().describe("Max
|
|
45098
|
+
query_cass: tool.schema.boolean().optional().describe("Query Hivemind sessions for similar past tasks (default: true)"),
|
|
45099
|
+
cass_limit: tool.schema.number().int().min(1).optional().describe("Max Hivemind session results to include (default: 3)"),
|
|
45100
45100
|
include_skills: tool.schema.boolean().optional().describe("Include available skills in context (default: true)")
|
|
45101
45101
|
},
|
|
45102
45102
|
async execute(args2) {
|
|
@@ -45144,7 +45144,7 @@ ${insights}` : insights ? `## Additional Context
|
|
|
45144
45144
|
|
|
45145
45145
|
${insights}` : `## Additional Context
|
|
45146
45146
|
(none provided)`;
|
|
45147
|
-
const prompt = STRATEGY_DECOMPOSITION_PROMPT.replace("{task}", args2.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{
|
|
45147
|
+
const prompt = STRATEGY_DECOMPOSITION_PROMPT.replace("{task}", args2.task).replace("{strategy_guidelines}", strategyGuidelines).replace("{context_section}", contextSection).replace("{hivemind_history}", "").replace("{skills_context}", skillsContext || "");
|
|
45148
45148
|
return JSON.stringify({
|
|
45149
45149
|
prompt,
|
|
45150
45150
|
strategy: {
|
|
@@ -24,8 +24,9 @@ tools:
|
|
|
24
24
|
- swarmmail_reserve
|
|
25
25
|
- swarmmail_release
|
|
26
26
|
- swarmmail_health
|
|
27
|
-
-
|
|
28
|
-
-
|
|
27
|
+
- hivemind_find
|
|
28
|
+
- hivemind_store
|
|
29
|
+
- hivemind_validate
|
|
29
30
|
- pdf-brain_search
|
|
30
31
|
- skills_list
|
|
31
32
|
references:
|
|
@@ -77,7 +78,7 @@ swarmmail_init({
|
|
|
77
78
|
});
|
|
78
79
|
|
|
79
80
|
// 2. QUERY LEARNINGS - Check what past agents learned
|
|
80
|
-
|
|
81
|
+
hivemind_find({
|
|
81
82
|
query: "task keywords domain",
|
|
82
83
|
limit: 5
|
|
83
84
|
});
|
|
@@ -114,7 +115,7 @@ swarm_checkpoint({
|
|
|
114
115
|
});
|
|
115
116
|
|
|
116
117
|
// 8. STORE LEARNINGS - Capture what you discovered
|
|
117
|
-
|
|
118
|
+
hivemind_store({
|
|
118
119
|
information: "OAuth refresh tokens need 5min buffer...",
|
|
119
120
|
metadata: "auth, oauth, tokens"
|
|
120
121
|
});
|
|
@@ -290,10 +291,10 @@ Before decomposing, query ALL knowledge sources:
|
|
|
290
291
|
|
|
291
292
|
```typescript
|
|
292
293
|
// 1. Past learnings from this project
|
|
293
|
-
|
|
294
|
+
hivemind_find({ query: "<task keywords>", limit: 5 });
|
|
294
295
|
|
|
295
296
|
// 2. How similar tasks were solved before
|
|
296
|
-
|
|
297
|
+
hivemind_find({ query: "<task description>", limit: 5, collection: "sessions" });
|
|
297
298
|
|
|
298
299
|
// 3. Design patterns and prior art
|
|
299
300
|
pdf_brain_search({ query: "<domain concepts>", limit: 5 });
|
|
@@ -308,7 +309,7 @@ Synthesize findings into `shared_context` for workers.
|
|
|
308
309
|
|
|
309
310
|
> **⚠️ CRITICAL: Context Preservation Pattern**
|
|
310
311
|
>
|
|
311
|
-
> **NEVER do planning inline in the coordinator thread.** Decomposition work (file reading,
|
|
312
|
+
> **NEVER do planning inline in the coordinator thread.** Decomposition work (file reading, Hivemind session searching, reasoning about task breakdown) consumes massive amounts of context and will exhaust your token budget on long swarms.
|
|
312
313
|
>
|
|
313
314
|
> **ALWAYS delegate planning to a `swarm-planner` subagent** and receive only the structured CellTree JSON result back.
|
|
314
315
|
|
|
@@ -346,7 +347,7 @@ ${taskDescription}
|
|
|
346
347
|
${synthesizedContext}
|
|
347
348
|
|
|
348
349
|
## Instructions
|
|
349
|
-
1. Use swarm_plan_prompt(task="...", max_subtasks=5
|
|
350
|
+
1. Use swarm_plan_prompt(task="...", max_subtasks=5)
|
|
350
351
|
2. Reason about decomposition strategy
|
|
351
352
|
3. Generate CellTree JSON
|
|
352
353
|
4. Validate with swarm_validate_decomposition
|
|
@@ -588,11 +589,11 @@ Long-running swarms exhaust context windows. These patterns keep you alive.
|
|
|
588
589
|
|
|
589
590
|
**Problem:** Repeating solved problems wastes tokens on rediscovery.
|
|
590
591
|
|
|
591
|
-
**Solution:** Query
|
|
592
|
+
**Solution:** Query the hivemind FIRST.
|
|
592
593
|
|
|
593
594
|
```typescript
|
|
594
595
|
// At swarm start (coordinator)
|
|
595
|
-
const learnings = await
|
|
596
|
+
const learnings = await hivemind_find({
|
|
596
597
|
query: "auth oauth tokens",
|
|
597
598
|
limit: 5
|
|
598
599
|
});
|
|
@@ -604,7 +605,7 @@ ${learnings.map(l => `- ${l.information}`).join('\n')}
|
|
|
604
605
|
`;
|
|
605
606
|
|
|
606
607
|
// At worker start (survival checklist step 2)
|
|
607
|
-
const relevantLearnings = await
|
|
608
|
+
const relevantLearnings = await hivemind_find({
|
|
608
609
|
query: "task-specific keywords",
|
|
609
610
|
limit: 3
|
|
610
611
|
});
|
|
@@ -662,7 +663,7 @@ await swarm_restore_checkpoint({
|
|
|
662
663
|
// ✅ CORRECT - Store immediately when discovered
|
|
663
664
|
// ... debug for 30 minutes ...
|
|
664
665
|
// ... find root cause ...
|
|
665
|
-
await
|
|
666
|
+
await hivemind_store({
|
|
666
667
|
information: "OAuth refresh tokens need 5min buffer to avoid race conditions. Without buffer, token refresh can fail mid-request if expiry happens between check and use.",
|
|
667
668
|
metadata: "auth, oauth, tokens, race-conditions"
|
|
668
669
|
});
|
|
@@ -693,7 +694,7 @@ await swarm_progress({
|
|
|
693
694
|
|
|
694
695
|
### Pattern 5: Delegate Heavy Research to Subagents
|
|
695
696
|
|
|
696
|
-
**Problem:** Reading 10+ files or doing deep
|
|
697
|
+
**Problem:** Reading 10+ files or doing deep Hivemind searches pollutes main thread.
|
|
697
698
|
|
|
698
699
|
**Solution:** Subagent researches, returns summary only.
|
|
699
700
|
|
|
@@ -715,7 +716,7 @@ const summary = await Task({
|
|
|
715
716
|
**When to Delegate:**
|
|
716
717
|
|
|
717
718
|
- Reading >3 files
|
|
718
|
-
- Multiple
|
|
719
|
+
- Multiple Hivemind searches
|
|
719
720
|
- Deep file tree exploration
|
|
720
721
|
- Analyzing large logs
|
|
721
722
|
|
|
@@ -749,7 +750,7 @@ const summary = await swarmmail_summarize_thread({ thread_id: "bd-123" });
|
|
|
749
750
|
|
|
750
751
|
### Context Survival Checklist
|
|
751
752
|
|
|
752
|
-
- [ ] Query
|
|
753
|
+
- [ ] Query the hivemind at start
|
|
753
754
|
- [ ] Checkpoint before risky operations
|
|
754
755
|
- [ ] Store learnings immediately when discovered
|
|
755
756
|
- [ ] Use `swarm_progress` for auto-checkpoints
|
|
@@ -838,7 +839,7 @@ One blocker affects multiple subtasks.
|
|
|
838
839
|
| **Under-Specified** | "Implement backend" | Clear goal, files, criteria |
|
|
839
840
|
| **Inline Planning** ⚠️ | Context pollution, exhaustion on long runs | Delegate planning to subagent |
|
|
840
841
|
| **Heavy File Reading** | Coordinator reading 10+ files | Subagent reads, returns summary only |
|
|
841
|
-
| **Deep
|
|
842
|
+
| **Deep Hivemind Drilling** | Multiple hivemind_find calls inline | Subagent searches, summarizes |
|
|
842
843
|
| **Manual Decomposition** | Hand-crafting subtasks without validation | Use swarm_plan_prompt + validation |
|
|
843
844
|
|
|
844
845
|
## Shared Context Template
|
|
@@ -858,8 +859,8 @@ One blocker affects multiple subtasks.
|
|
|
858
859
|
|
|
859
860
|
## Prior Art
|
|
860
861
|
|
|
861
|
-
- Similar tasks: {from
|
|
862
|
-
- Learnings: {from
|
|
862
|
+
- Similar tasks: {from hivemind sessions}
|
|
863
|
+
- Learnings: {from hivemind}
|
|
863
864
|
|
|
864
865
|
## Coordination
|
|
865
866
|
|
|
@@ -895,8 +896,8 @@ One blocker affects multiple subtasks.
|
|
|
895
896
|
swarmmail_init({ project_path: "$PWD", task_description: "..." });
|
|
896
897
|
|
|
897
898
|
// 2. Gather knowledge
|
|
898
|
-
|
|
899
|
-
|
|
899
|
+
hivemind_find({ query });
|
|
900
|
+
hivemind_find({ query, collection: "sessions" });
|
|
900
901
|
pdf_brain_search({ query });
|
|
901
902
|
skills_list();
|
|
902
903
|
|
package/package.json
CHANGED