fix: prevent agents from duplicating delegated subagent work
Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
This commit is contained in:
@@ -0,0 +1,145 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import { createSisyphusAgent } from "./sisyphus"
|
||||
import { createHephaestusAgent } from "./hephaestus"
|
||||
import { buildSisyphusJuniorPrompt } from "./sisyphus-junior/agent"
|
||||
import {
|
||||
buildAntiDuplicationSection,
|
||||
buildExploreSection,
|
||||
type AvailableAgent,
|
||||
} from "./dynamic-agent-prompt-builder"
|
||||
|
||||
const exploreAgent = {
|
||||
name: "explore",
|
||||
description: "Contextual grep specialist",
|
||||
metadata: {
|
||||
category: "advisor",
|
||||
cost: "FREE",
|
||||
promptAlias: "Explore",
|
||||
triggers: [],
|
||||
useWhen: ["Multiple search angles needed"],
|
||||
avoidWhen: ["Single keyword search is enough"],
|
||||
},
|
||||
} satisfies AvailableAgent
|
||||
|
||||
describe("delegation trust prompt rules", () => {
|
||||
test("buildAntiDuplicationSection explains overlap is forbidden", () => {
|
||||
// given
|
||||
const section = buildAntiDuplicationSection()
|
||||
|
||||
// when / then
|
||||
expect(section).toContain("DO NOT perform the same search yourself")
|
||||
expect(section).toContain("non-overlapping work")
|
||||
expect(section).toContain("End your response")
|
||||
})
|
||||
|
||||
test("buildExploreSection includes delegation trust rule", () => {
|
||||
// given
|
||||
const agents = [exploreAgent]
|
||||
|
||||
// when
|
||||
const section = buildExploreSection(agents)
|
||||
|
||||
// then
|
||||
expect(section).toContain("Delegation Trust Rule")
|
||||
expect(section).toContain("do **not** manually perform that same search yourself")
|
||||
})
|
||||
|
||||
test("Sisyphus prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const agent = createSisyphusAgent("anthropic/claude-sonnet-4-6", [exploreAgent])
|
||||
|
||||
// when
|
||||
const prompt = agent.prompt
|
||||
|
||||
// then
|
||||
expect(prompt).toContain("Continue only with non-overlapping work")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
|
||||
test("Hephaestus prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const agent = createHephaestusAgent("openai/gpt-5.2", [exploreAgent])
|
||||
|
||||
// when
|
||||
const prompt = agent.prompt
|
||||
|
||||
// then
|
||||
expect(prompt).toContain("Continue only with non-overlapping work after launching background agents")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
|
||||
test("Hephaestus GPT-5.4 prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const agent = createHephaestusAgent("openai/gpt-5.4", [exploreAgent])
|
||||
|
||||
// when
|
||||
const prompt = agent.prompt
|
||||
|
||||
// then
|
||||
expect(prompt).toContain("continue only with non-overlapping work while they search")
|
||||
expect(prompt).toContain("Continue only with non-overlapping work after launching background agents")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
|
||||
test("Hephaestus GPT-5.3 Codex prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const agent = createHephaestusAgent("openai/gpt-5.3-codex", [exploreAgent])
|
||||
|
||||
// when
|
||||
const prompt = agent.prompt
|
||||
|
||||
// then
|
||||
expect(prompt).toContain("continue only with non-overlapping work while they search")
|
||||
expect(prompt).toContain("Continue only with non-overlapping work after launching background agents")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
|
||||
test("Sisyphus-Junior GPT prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const prompt = buildSisyphusJuniorPrompt("openai/gpt-5.2", false)
|
||||
|
||||
// when / then
|
||||
expect(prompt).toContain("continue only with non-overlapping work while they search")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
|
||||
test("Sisyphus GPT-5.4 prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const agent = createSisyphusAgent("openai/gpt-5.4", [exploreAgent])
|
||||
|
||||
// when
|
||||
const prompt = agent.prompt
|
||||
|
||||
// then
|
||||
expect(prompt).toContain("do only non-overlapping work simultaneously")
|
||||
expect(prompt).toContain("Continue only with non-overlapping work")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
|
||||
test("Sisyphus-Junior GPT-5.4 prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const prompt = buildSisyphusJuniorPrompt("openai/gpt-5.4", false)
|
||||
|
||||
// when / then
|
||||
expect(prompt).toContain("continue only with non-overlapping work while they search")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
|
||||
test("Sisyphus-Junior GPT-5.3 Codex prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const prompt = buildSisyphusJuniorPrompt("openai/gpt-5.3-codex", false)
|
||||
|
||||
// when / then
|
||||
expect(prompt).toContain("continue only with non-overlapping work while they search")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
|
||||
test("Sisyphus-Junior Gemini prompt forbids duplicate delegated exploration", () => {
|
||||
// given
|
||||
const prompt = buildSisyphusJuniorPrompt("google/gemini-3.1-pro", false)
|
||||
|
||||
// when / then
|
||||
expect(prompt).toContain("continue only with non-overlapping work while they search")
|
||||
expect(prompt).toContain("DO NOT perform the same search yourself")
|
||||
})
|
||||
})
|
||||
Reference in New Issue
Block a user