Skip to content

Commit a567a1c

Browse files
committed
Overhaul Intern prompt
Clarify Intern as a mechanical executor for exact shell, git, and briefed file operations. Keep mounted writes honest while preventing Builder drift, and stop on ambiguity, missing inputs, or failures. Closes CL-7025
1 parent 9fadfe5 commit a567a1c

2 files changed

Lines changed: 43 additions & 8 deletions

File tree

‎src/agent/directors/intern/package.test.ts‎

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,40 @@ describe("internPackage", () => {
1313
expect(internPackage.systemPrompt).toMatch(/PRIMARY INTENT/i);
1414
});
1515

16+
test("systemPrompt identity and mechanical lane", () => {
17+
const p = internPackage.systemPrompt;
18+
expect(p).toContain("InternDirector");
19+
expect(p).toMatch(/mechanical executor/i);
20+
expect(p).toMatch(/shell, git, or simple file operations/i);
21+
expect(p).toMatch(/No product judgment/i);
22+
expect(p).toMatch(/no improvising/i);
23+
});
24+
25+
test("systemPrompt acknowledges mounted writes without becoming Builder", () => {
26+
const p = internPackage.systemPrompt;
27+
expect(p).toMatch(/Write tools are mounted/i);
28+
expect(p).toMatch(/Do not become Builder/i);
29+
expect(p).toMatch(/mechanical path write\/edit\/delete/i);
30+
});
31+
32+
test("systemPrompt has no tool-schema restatement or fake caps", () => {
33+
const p = internPackage.systemPrompt;
34+
expect(p).not.toMatch(/parameters?:/i);
35+
expect(p).not.toMatch(/fan-out/i);
36+
expect(p).not.toMatch(/at most \d+/i);
37+
expect(p).not.toMatch(/turn budget/i);
38+
});
39+
40+
test("systemPrompt stops on ambiguous scope or failure", () => {
41+
const p = internPackage.systemPrompt;
42+
expect(p).toMatch(/ambiguous/i);
43+
expect(p).toMatch(/fails/i);
44+
expect(p).toMatch(/lacks required inputs/i);
45+
expect(p).toMatch(/Blockers/i);
46+
expect(p).toMatch(/raw output/i);
47+
expect(p).toMatch(/Do not invent next steps/i);
48+
});
49+
1650
test("spawn.maySpawn is false", () => {
1751
expect(internPackage.spawn.maySpawn).toBe(false);
1852
});
@@ -39,7 +73,7 @@ describe("internPackage", () => {
3973
});
4074

4175
test("primaryIntent and description", () => {
42-
expect(internPackage.primaryIntent).toContain("Mechanical shell/commands only");
76+
expect(internPackage.primaryIntent).toContain("Mechanical shell/git/file ops only");
4377
expect(internPackage.description).toBe("Mechanical intern leaf");
4478
});
4579
});

‎src/agent/directors/intern/package.ts‎

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,13 @@ import type { DirectorPackage } from "../types.js";
22
import { INTERN_TOOLS } from "../tool-sets.js";
33

44
/**
5-
* Mechanical intern leaf (CL-5822).
6-
* Shell/commands first — no judgment, no exploration; path writes only when the brief requires them.
5+
* Mechanical intern leaf (CL-5822 / CL-7025).
6+
* Exact shell/git/simple file ops when briefed — no judgment, no improvisation.
7+
* Write tools are mounted; use only when the brief names a mechanical path op.
78
*/
89
export const internPackage: DirectorPackage = {
910
id: "intern",
10-
primaryIntent: "Mechanical shell/commands only — exact steps, zero judgment",
11+
primaryIntent: "Mechanical shell/git/file ops only — exact steps, zero judgment",
1112
outOfLane: [
1213
"design judgment",
1314
"product edits without explicit brief",
@@ -25,11 +26,11 @@ export const internPackage: DirectorPackage = {
2526
modelRole: "implement",
2627
systemPrompt: `You are InternDirector, a specialist in Corbits Code.
2728
28-
PRIMARY INTENT: mechanical execution only. Run exactly what the brief says. No judgment, no debugging narratives, no codebase exploration, no implementation.
29+
PRIMARY INTENT: mechanical executor. Run exactly the shell, git, or simple file operations the brief names. No product judgment, no architecture, no reviewing, no improvising.
2930
30-
If anything is ambiguous, missing, or fails: STOP. Report raw command output and the blocker. Do not invent next steps.
31+
Write tools are mounted. Use them only when the brief explicitly asks for a mechanical path write/edit/delete. Do not become Builder — no feature work, no design choices, no helpful extras beyond the brief.
3132
32-
You are a cheap model package — stay short.
33+
If the brief is ambiguous, fails, lacks required inputs, or needs a product decision: STOP. Report Blockers with the raw output. Do not invent next steps.
3334
34-
Findings: commands run and their outputs.`,
35+
Stay short. Findings: ops run and their raw outputs.`,
3536
};

0 commit comments

Comments
 (0)