@skj1724/oh-my-opencode 3.18.24 → 3.18.26
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/dist/agents/atlas/agent.d.ts +3 -2
- package/dist/agents/dynamic-agent-category-skills-guide.d.ts +1 -1
- package/dist/agents/dynamic-agent-core-sections.d.ts +9 -15
- package/dist/agents/dynamic-agent-policy-sections.d.ts +5 -5
- package/dist/agents/dynamic-agent-tool-categorization.d.ts +1 -1
- package/dist/agents/sisyphus/default.d.ts +1 -1
- package/dist/agents/sisyphus.d.ts +1 -1
- package/dist/agents/types/language.d.ts +3 -0
- package/dist/cli/index.js +3 -3
- package/dist/hooks/auto-update-checker/constants.d.ts +1 -1
- package/dist/index.js +317 -86
- package/dist/shared/plugin-identity.d.ts +3 -3
- package/package.json +1 -1
- package/src/agents/prompts-zh/sisyphus-junior.md +29 -0
|
@@ -23,11 +23,12 @@ export interface OrchestratorContext {
|
|
|
23
23
|
availableAgents?: AvailableAgent[];
|
|
24
24
|
availableSkills?: AvailableSkill[];
|
|
25
25
|
userCategories?: Record<string, CategoryConfig>;
|
|
26
|
+
language?: string;
|
|
26
27
|
}
|
|
27
28
|
/**
|
|
28
|
-
* Gets the appropriate Atlas prompt based on model.
|
|
29
|
+
* Gets the appropriate Atlas prompt based on model and language.
|
|
29
30
|
*/
|
|
30
|
-
export declare function getAtlasPrompt(model?: string): string;
|
|
31
|
+
export declare function getAtlasPrompt(model?: string, language?: string): string;
|
|
31
32
|
export declare function createAtlasAgent(ctx: OrchestratorContext): AgentConfig;
|
|
32
33
|
export declare namespace createAtlasAgent {
|
|
33
34
|
var mode: "primary";
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
import type { AvailableCategory, AvailableSkill } from "./dynamic-agent-prompt-types";
|
|
2
|
-
export declare function buildCategorySkillsDelegationGuide(categories: AvailableCategory[], skills: AvailableSkill[]): string;
|
|
2
|
+
export declare function buildCategorySkillsDelegationGuide(categories: AvailableCategory[], skills: AvailableSkill[], language?: string): string;
|
|
@@ -1,17 +1,11 @@
|
|
|
1
1
|
import type { AvailableAgent, AvailableCategory, AvailableSkill } from "./dynamic-agent-prompt-types";
|
|
2
2
|
import type { AvailableTool } from "./dynamic-agent-prompt-types";
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
export declare function
|
|
10
|
-
export declare function
|
|
11
|
-
export declare function
|
|
12
|
-
export declare function buildExploreSection(agents: AvailableAgent[]): string;
|
|
13
|
-
export declare function buildLibrarianSection(agents: AvailableAgent[]): string;
|
|
14
|
-
export declare function buildDelegationTable(agents: AvailableAgent[]): string;
|
|
15
|
-
export declare function buildOracleSection(agents: AvailableAgent[]): string;
|
|
16
|
-
export declare function buildNonClaudePlannerSection(model: string): string;
|
|
17
|
-
export declare function buildParallelDelegationSection(model: string, categories: AvailableCategory[]): string;
|
|
3
|
+
export declare function buildAgentIdentitySection(agentName: string, roleDescription: string, language?: string): string;
|
|
4
|
+
export declare function buildKeyTriggersSection(agents: AvailableAgent[], _skills?: AvailableSkill[], language?: string): string;
|
|
5
|
+
export declare function buildToolSelectionTable(agents: AvailableAgent[], tools?: AvailableTool[], _skills?: AvailableSkill[], language?: string): string;
|
|
6
|
+
export declare function buildExploreSection(agents: AvailableAgent[], language?: string): string;
|
|
7
|
+
export declare function buildLibrarianSection(agents: AvailableAgent[], language?: string): string;
|
|
8
|
+
export declare function buildDelegationTable(agents: AvailableAgent[], language?: string): string;
|
|
9
|
+
export declare function buildOracleSection(agents: AvailableAgent[], language?: string): string;
|
|
10
|
+
export declare function buildNonClaudePlannerSection(model: string, language?: string): string;
|
|
11
|
+
export declare function buildParallelDelegationSection(model: string, categories: AvailableCategory[], language?: string): string;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AvailableAgent, AvailableCategory, AvailableSkill } from "./dynamic-agent-prompt-types";
|
|
2
|
-
export declare function buildHardBlocksSection(): string;
|
|
3
|
-
export declare function buildAntiPatternsSection(): string;
|
|
4
|
-
export declare function buildToolCallFormatSection(): string;
|
|
5
|
-
export declare function buildUltraworkSection(agents: AvailableAgent[], categories: AvailableCategory[], skills: AvailableSkill[]): string;
|
|
6
|
-
export declare function buildAntiDuplicationSection(): string;
|
|
2
|
+
export declare function buildHardBlocksSection(language?: string): string;
|
|
3
|
+
export declare function buildAntiPatternsSection(language?: string): string;
|
|
4
|
+
export declare function buildToolCallFormatSection(language?: string): string;
|
|
5
|
+
export declare function buildUltraworkSection(agents: AvailableAgent[], categories: AvailableCategory[], skills: AvailableSkill[], language?: string): string;
|
|
6
|
+
export declare function buildAntiDuplicationSection(language?: string): string;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import type { AvailableTool } from "./dynamic-agent-prompt-types";
|
|
2
2
|
export declare function categorizeTools(toolNames: string[]): AvailableTool[];
|
|
3
|
-
export declare function getToolsPromptDisplay(tools: AvailableTool[]): string;
|
|
3
|
+
export declare function getToolsPromptDisplay(tools: AvailableTool[], language?: string): string;
|
|
@@ -4,6 +4,6 @@
|
|
|
4
4
|
*/
|
|
5
5
|
import type { AvailableAgent, AvailableTool, AvailableSkill, AvailableCategory } from "../dynamic-agent-prompt-builder";
|
|
6
6
|
import { categorizeTools } from "../dynamic-agent-prompt-builder";
|
|
7
|
-
export declare function buildTaskManagementSection(useTaskSystem: boolean): string;
|
|
7
|
+
export declare function buildTaskManagementSection(useTaskSystem: boolean, language?: string): string;
|
|
8
8
|
export declare function buildDefaultSisyphusPrompt(model: string, availableAgents: AvailableAgent[], availableTools?: AvailableTool[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean): string;
|
|
9
9
|
export { categorizeTools };
|
|
@@ -2,7 +2,7 @@ import type { AgentConfig } from "@opencode-ai/sdk";
|
|
|
2
2
|
import type { AgentPromptMetadata } from "./types";
|
|
3
3
|
export declare const SISYPHUS_PROMPT_METADATA: AgentPromptMetadata;
|
|
4
4
|
import type { AvailableAgent, AvailableTool, AvailableSkill, AvailableCategory } from "./dynamic-agent-prompt-builder";
|
|
5
|
-
export declare function buildDynamicSisyphusPromptZh(model: string, availableAgents: AvailableAgent[], availableTools?: AvailableTool[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean): string;
|
|
5
|
+
export declare function buildDynamicSisyphusPromptZh(model: string, availableAgents: AvailableAgent[], availableTools?: AvailableTool[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean, language?: string): string;
|
|
6
6
|
export declare function createSisyphusAgent(model: string, availableAgents?: AvailableAgent[], availableToolNames?: string[], availableSkills?: AvailableSkill[], availableCategories?: AvailableCategory[], useTaskSystem?: boolean, language?: string): AgentConfig;
|
|
7
7
|
export declare namespace createSisyphusAgent {
|
|
8
8
|
var mode: "primary";
|
|
@@ -0,0 +1,3 @@
|
|
|
1
|
+
export type SupportedLanguage = "zh-CN" | "zh-TW" | "en-US" | "ja-JP" | "ko-KR" | "fr-FR" | "de-DE" | "es-ES" | "pt-BR" | "ru-RU" | "vi-VN" | "th-TH" | "id-ID" | "ms-MY" | "hi-IN" | "ar-SA" | "he-IL";
|
|
2
|
+
export declare function isZhLanguage(lang?: string): boolean;
|
|
3
|
+
export declare function isEnLanguage(lang?: string): boolean;
|
package/dist/cli/index.js
CHANGED
|
@@ -4954,9 +4954,9 @@ function isWithinProject(candidatePath, projectRoot) {
|
|
|
4954
4954
|
var init_contains_path = () => {};
|
|
4955
4955
|
|
|
4956
4956
|
// src/shared/plugin-identity.ts
|
|
4957
|
-
var PLUGIN_NAME = "@skj1724/oh-my-
|
|
4957
|
+
var PLUGIN_NAME = "@skj1724/oh-my-opencode", LEGACY_PLUGIN_NAME = "@skj1724/oh-my-openagent", PUBLISHED_PACKAGE_NAME, ACCEPTED_PACKAGE_NAMES, CONFIG_BASENAME = "oh-my-opencode", LEGACY_CONFIG_BASENAME = "oh-my-opencode", LOG_FILENAME = "oh-my-opencode.log", CACHE_DIR_NAME = "oh-my-opencode";
|
|
4958
4958
|
var init_plugin_identity = __esm(() => {
|
|
4959
|
-
PUBLISHED_PACKAGE_NAME =
|
|
4959
|
+
PUBLISHED_PACKAGE_NAME = PLUGIN_NAME;
|
|
4960
4960
|
ACCEPTED_PACKAGE_NAMES = [PUBLISHED_PACKAGE_NAME, PLUGIN_NAME];
|
|
4961
4961
|
});
|
|
4962
4962
|
|
|
@@ -54876,7 +54876,7 @@ var {
|
|
|
54876
54876
|
// package.json
|
|
54877
54877
|
var package_default = {
|
|
54878
54878
|
name: "@skj1724/oh-my-opencode",
|
|
54879
|
-
version: "3.18.
|
|
54879
|
+
version: "3.18.26",
|
|
54880
54880
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
54881
54881
|
main: "./dist/index.js",
|
|
54882
54882
|
types: "dist/index.d.ts",
|
|
@@ -8,7 +8,7 @@ export declare const PACKAGE_NAME = "@skj1724/oh-my-opencode";
|
|
|
8
8
|
* because the installed name depends on which package the user added to
|
|
9
9
|
* their config. Code that *writes* continues to use {@link PACKAGE_NAME}.
|
|
10
10
|
*/
|
|
11
|
-
export declare const ACCEPTED_PACKAGE_NAMES: readonly ["@skj1724/oh-my-opencode", "@skj1724/oh-my-
|
|
11
|
+
export declare const ACCEPTED_PACKAGE_NAMES: readonly ["@skj1724/oh-my-opencode", "@skj1724/oh-my-opencode"];
|
|
12
12
|
export declare const NPM_REGISTRY_URL = "https://registry.npmjs.org/-/package/@skj1724/oh-my-opencode/dist-tags";
|
|
13
13
|
export declare const NPM_FETCH_TIMEOUT = 5000;
|
|
14
14
|
export declare const CACHE_ROOT_DIR: string;
|
package/dist/index.js
CHANGED
|
@@ -2715,9 +2715,9 @@ var init_frontmatter = __esm(() => {
|
|
|
2715
2715
|
});
|
|
2716
2716
|
|
|
2717
2717
|
// src/shared/plugin-identity.ts
|
|
2718
|
-
var PLUGIN_NAME = "@skj1724/oh-my-
|
|
2718
|
+
var PLUGIN_NAME = "@skj1724/oh-my-opencode", LEGACY_PLUGIN_NAME = "@skj1724/oh-my-openagent", PUBLISHED_PACKAGE_NAME, ACCEPTED_PACKAGE_NAMES, CONFIG_BASENAME = "oh-my-opencode", LEGACY_CONFIG_BASENAME = "oh-my-opencode", LOG_FILENAME = "oh-my-opencode.log", CACHE_DIR_NAME = "oh-my-opencode";
|
|
2719
2719
|
var init_plugin_identity = __esm(() => {
|
|
2720
|
-
PUBLISHED_PACKAGE_NAME =
|
|
2720
|
+
PUBLISHED_PACKAGE_NAME = PLUGIN_NAME;
|
|
2721
2721
|
ACCEPTED_PACKAGE_NAMES = [PUBLISHED_PACKAGE_NAME, PLUGIN_NAME];
|
|
2722
2722
|
});
|
|
2723
2723
|
|
|
@@ -115977,32 +115977,56 @@ function formatToolsForPrompt(tools) {
|
|
|
115977
115977
|
}
|
|
115978
115978
|
return parts.join(", ");
|
|
115979
115979
|
}
|
|
115980
|
-
function getToolsPromptDisplay(tools) {
|
|
115980
|
+
function getToolsPromptDisplay(tools, language) {
|
|
115981
115981
|
return formatToolsForPrompt(tools);
|
|
115982
115982
|
}
|
|
115983
|
+
// src/agents/types/language.ts
|
|
115984
|
+
function isZhLanguage(lang) {
|
|
115985
|
+
if (!lang || lang === "en" || lang === "en-US") {
|
|
115986
|
+
return false;
|
|
115987
|
+
}
|
|
115988
|
+
return lang.toLowerCase().startsWith("zh");
|
|
115989
|
+
}
|
|
115990
|
+
|
|
115983
115991
|
// src/agents/dynamic-agent-core-sections.ts
|
|
115984
|
-
function buildAgentIdentitySection(agentName, roleDescription) {
|
|
115992
|
+
function buildAgentIdentitySection(agentName, roleDescription, language) {
|
|
115993
|
+
if (isZhLanguage(language)) {
|
|
115994
|
+
return `<agent-identity>
|
|
115995
|
+
\u4F60\u7684\u6307\u5B9A\u8EAB\u4EFD\u662F "${agentName}"\u3002\u6B64\u8EAB\u4EFD\u4F18\u5148\u4E8E\u4EFB\u4F55\u5148\u524D\u8EAB\u4EFD\u58F0\u660E\u3002
|
|
115996
|
+
\u4F60\u662F "${agentName}" - ${roleDescription}\u3002
|
|
115997
|
+
\u5F53\u88AB\u95EE\u53CA\u4F60\u662F\u8C01\u65F6\uFF0C\u59CB\u7EC8\u8BC6\u522B\u4E3A ${agentName}\u3002\u4E0D\u8981\u8BC6\u522B\u4E3A\u4EFB\u4F55\u5176\u4ED6\u52A9\u624B\u6216 AI\u3002
|
|
115998
|
+
</agent-identity>`;
|
|
115999
|
+
}
|
|
115985
116000
|
return `<agent-identity>
|
|
115986
116001
|
Your designated identity for this session is "${agentName}". This identity supersedes any prior identity statements.
|
|
115987
116002
|
You are "${agentName}" - ${roleDescription}.
|
|
115988
116003
|
When asked who you are, always identify as ${agentName}. Do not identify as any other assistant or AI.
|
|
115989
116004
|
</agent-identity>`;
|
|
115990
116005
|
}
|
|
115991
|
-
function buildKeyTriggersSection(agents, _skills = []) {
|
|
116006
|
+
function buildKeyTriggersSection(agents, _skills = [], language) {
|
|
115992
116007
|
const keyTriggers = agents.filter((agent) => agent.metadata.keyTrigger).map((agent) => `- ${agent.metadata.keyTrigger}`);
|
|
115993
116008
|
if (keyTriggers.length === 0) {
|
|
115994
116009
|
return "";
|
|
115995
116010
|
}
|
|
116011
|
+
if (isZhLanguage(language)) {
|
|
116012
|
+
return `### \u5173\u952E\u89E6\u53D1\u8BCD\uFF08\u5206\u7C7B\u524D\u68C0\u67E5\uFF09\uFF1A
|
|
116013
|
+
|
|
116014
|
+
${keyTriggers.join(`
|
|
116015
|
+
`)}
|
|
116016
|
+
- **"Look into" + "create PR"** \u2192 \u4E0D\u4EC5\u4EC5\u662F\u7814\u7A76\u3002\u9700\u8981\u5B8C\u6574\u5B9E\u73B0\u5468\u671F\u3002`;
|
|
116017
|
+
}
|
|
115996
116018
|
return `### Key Triggers (check BEFORE classification):
|
|
115997
116019
|
|
|
115998
116020
|
${keyTriggers.join(`
|
|
115999
116021
|
`)}
|
|
116000
116022
|
- **"Look into" + "create PR"** \u2192 Not just research. Full implementation cycle expected.`;
|
|
116001
116023
|
}
|
|
116002
|
-
function buildToolSelectionTable(agents, tools = [], _skills = []) {
|
|
116003
|
-
const rows = [
|
|
116024
|
+
function buildToolSelectionTable(agents, tools = [], _skills = [], language) {
|
|
116025
|
+
const rows = [];
|
|
116026
|
+
const isZh = isZhLanguage(language);
|
|
116027
|
+
rows.push(isZh ? "### \u5DE5\u5177\u4E0E Agent \u9009\u62E9\uFF1A" : "### Tool & Agent Selection:", "");
|
|
116004
116028
|
if (tools.length > 0) {
|
|
116005
|
-
rows.push(`- ${getToolsPromptDisplay(tools)} - **FREE** - Not Complex, Scope Clear, No Implicit Assumptions`);
|
|
116029
|
+
rows.push(`- ${getToolsPromptDisplay(tools, language)} - **FREE** - ${isZh ? "\u4E0D\u590D\u6742\u3001\u8303\u56F4\u6E05\u6670\u3001\u65E0\u9690\u542B\u5047\u8BBE" : "Not Complex, Scope Clear, No Implicit Assumptions"}`);
|
|
116006
116030
|
}
|
|
116007
116031
|
const costOrder = { FREE: 0, CHEAP: 1, EXPENSIVE: 2 };
|
|
116008
116032
|
const sortedAgents = [...agents].filter((agent) => agent.metadata.category !== "utility").sort((left, right) => costOrder[left.metadata.cost] - costOrder[right.metadata.cost]);
|
|
@@ -116011,17 +116035,33 @@ function buildToolSelectionTable(agents, tools = [], _skills = []) {
|
|
|
116011
116035
|
rows.push(`- \`${agent.name}\` agent - **${agent.metadata.cost}** - ${shortDescription}`);
|
|
116012
116036
|
}
|
|
116013
116037
|
rows.push("");
|
|
116014
|
-
rows.push("**Default flow**: explore/librarian (background) + tools \u2192 oracle (if required)");
|
|
116038
|
+
rows.push(isZh ? "**\u9ED8\u8BA4\u6D41\u7A0B**\uFF1Aexplore/librarian\uFF08\u540E\u53F0\uFF09+ \u5DE5\u5177 \u2192 oracle\uFF08\u5982\u9700\u8981\uFF09" : "**Default flow**: explore/librarian (background) + tools \u2192 oracle (if required)");
|
|
116015
116039
|
return rows.join(`
|
|
116016
116040
|
`);
|
|
116017
116041
|
}
|
|
116018
|
-
function buildExploreSection(agents) {
|
|
116042
|
+
function buildExploreSection(agents, language) {
|
|
116019
116043
|
const exploreAgent = agents.find((agent) => agent.name === "explore");
|
|
116020
116044
|
if (!exploreAgent) {
|
|
116021
116045
|
return "";
|
|
116022
116046
|
}
|
|
116023
116047
|
const useWhen = exploreAgent.metadata.useWhen || [];
|
|
116024
116048
|
const avoidWhen = exploreAgent.metadata.avoidWhen || [];
|
|
116049
|
+
const isZh = isZhLanguage(language);
|
|
116050
|
+
if (isZh) {
|
|
116051
|
+
return `### Explore Agent = \u4E0A\u4E0B\u6587\u641C\u7D22
|
|
116052
|
+
|
|
116053
|
+
\u5C06\u5176\u7528\u4F5C**\u540C\u884C\u5DE5\u5177**\uFF0C\u800C\u4E0D\u662F\u540E\u5907\u3002\u5927\u91CF\u7528\u4E8E\u53D1\u73B0\uFF0C\u800C\u975E\u4F60\u5DF2\u7ECF\u77E5\u9053\u6587\u4EF6\u7684\u641C\u7D22\u3002
|
|
116054
|
+
|
|
116055
|
+
**\u59D4\u6258\u4FE1\u4EFB\u89C4\u5219**\uFF1A\u4E00\u65E6\u4F60\u89E6\u53D1 explore agent \u8FDB\u884C\u641C\u7D22\uFF0C**\u4E0D\u8981\u81EA\u5DF1\u624B\u52A8\u6267\u884C\u76F8\u540C\u7684\u641C\u7D22**\u3002\u4EC5\u5BF9\u975E\u91CD\u53E0\u5DE5\u4F5C\u4F7F\u7528\u76F4\u63A5\u5DE5\u5177\uFF0C\u6216\u8005\u5F53\u4F60\u6545\u610F\u8DF3\u8FC7\u59D4\u6258\u65F6\u3002
|
|
116056
|
+
|
|
116057
|
+
**\u4F7F\u7528\u76F4\u63A5\u5DE5\u5177\u7684\u573A\u666F\uFF1A**
|
|
116058
|
+
${avoidWhen.map((entry) => `- ${entry}`).join(`
|
|
116059
|
+
`)}
|
|
116060
|
+
|
|
116061
|
+
**\u4F7F\u7528 Explore Agent \u7684\u573A\u666F\uFF1A**
|
|
116062
|
+
${useWhen.map((entry) => `- ${entry}`).join(`
|
|
116063
|
+
`)}`;
|
|
116064
|
+
}
|
|
116025
116065
|
return `### Explore Agent = Contextual Grep
|
|
116026
116066
|
|
|
116027
116067
|
Use it as a **peer tool**, not a fallback. Fire liberally for discovery, not for files you already know.
|
|
@@ -116036,12 +116076,25 @@ ${avoidWhen.map((entry) => `- ${entry}`).join(`
|
|
|
116036
116076
|
${useWhen.map((entry) => `- ${entry}`).join(`
|
|
116037
116077
|
`)}`;
|
|
116038
116078
|
}
|
|
116039
|
-
function buildLibrarianSection(agents) {
|
|
116079
|
+
function buildLibrarianSection(agents, language) {
|
|
116040
116080
|
const librarianAgent = agents.find((agent) => agent.name === "librarian");
|
|
116041
116081
|
if (!librarianAgent) {
|
|
116042
116082
|
return "";
|
|
116043
116083
|
}
|
|
116044
116084
|
const useWhen = librarianAgent.metadata.useWhen || [];
|
|
116085
|
+
const isZh = isZhLanguage(language);
|
|
116086
|
+
if (isZh) {
|
|
116087
|
+
return `### Librarian Agent = \u53C2\u8003\u641C\u7D22
|
|
116088
|
+
|
|
116089
|
+
\u641C\u7D22**\u5916\u90E8\u53C2\u8003\u8D44\u6599**\uFF08\u6587\u6863\u3001\u5F00\u6E90\u5E93\u3001\u7F51\u7EDC\uFF09\u3002\u5F53\u6D89\u53CA\u4E0D\u719F\u6089\u7684\u5E93\u65F6\u4E3B\u52A8\u89E6\u53D1\u3002
|
|
116090
|
+
|
|
116091
|
+
**\u4E0A\u4E0B\u6587\u641C\u7D22\uFF08\u5185\u90E8\uFF09** - \u641C\u7D22\u6211\u4EEC\u7684\u4EE3\u7801\u5E93\uFF0C\u5728 THIS repo \u4E2D\u67E5\u627E\u6A21\u5F0F\uFF0C\u9879\u76EE\u7279\u5B9A\u903B\u8F91\u3002
|
|
116092
|
+
**\u53C2\u8003\u641C\u7D22\uFF08\u5916\u90E8\uFF09** - \u641C\u7D22\u5916\u90E8\u8D44\u6E90\u3001\u5B98\u65B9 API \u6587\u6863\u3001\u5E93\u6700\u4F73\u5B9E\u8DF5\u3001\u5F00\u6E90\u5B9E\u73B0\u793A\u4F8B\u3002
|
|
116093
|
+
|
|
116094
|
+
**\u89E6\u53D1\u77ED\u8BED**\uFF08\u7ACB\u5373\u89E6\u53D1 librarian\uFF09\uFF1A
|
|
116095
|
+
${useWhen.map((entry) => `- "${entry}"`).join(`
|
|
116096
|
+
`)}`;
|
|
116097
|
+
}
|
|
116045
116098
|
return `### Librarian Agent = Reference Grep
|
|
116046
116099
|
|
|
116047
116100
|
Search **external references** (docs, OSS, web). Fire proactively when unfamiliar libraries are involved.
|
|
@@ -116053,8 +116106,10 @@ Search **external references** (docs, OSS, web). Fire proactively when unfamilia
|
|
|
116053
116106
|
${useWhen.map((entry) => `- "${entry}"`).join(`
|
|
116054
116107
|
`)}`;
|
|
116055
116108
|
}
|
|
116056
|
-
function buildDelegationTable(agents) {
|
|
116057
|
-
const rows = [
|
|
116109
|
+
function buildDelegationTable(agents, language) {
|
|
116110
|
+
const rows = [];
|
|
116111
|
+
const isZh = isZhLanguage(language);
|
|
116112
|
+
rows.push(isZh ? "### \u59D4\u6258\u8868\uFF1A" : "### Delegation Table:", "");
|
|
116058
116113
|
for (const agent of agents) {
|
|
116059
116114
|
for (const trigger of agent.metadata.triggers) {
|
|
116060
116115
|
rows.push(`- **${trigger.domain}** \u2192 \`${agent.name}\` - ${trigger.trigger}`);
|
|
@@ -116063,17 +116118,54 @@ function buildDelegationTable(agents) {
|
|
|
116063
116118
|
return rows.join(`
|
|
116064
116119
|
`);
|
|
116065
116120
|
}
|
|
116066
|
-
function buildOracleSection(agents) {
|
|
116121
|
+
function buildOracleSection(agents, language) {
|
|
116067
116122
|
const oracleAgent = agents.find((agent) => agent.name === "oracle");
|
|
116068
116123
|
if (!oracleAgent) {
|
|
116069
116124
|
return "";
|
|
116070
116125
|
}
|
|
116071
116126
|
const useWhen = oracleAgent.metadata.useWhen || [];
|
|
116072
|
-
const avoidWhen = oracleAgent.metadata.
|
|
116127
|
+
const avoidWhen = oracleAgent.metadata.useWhen || [];
|
|
116128
|
+
const isZh = isZhLanguage(language);
|
|
116129
|
+
if (isZh) {
|
|
116130
|
+
return `<Oracle_Usage>
|
|
116131
|
+
## Oracle - \u53EA\u8BFB\u9AD8\u667A\u5546\u987E\u95EE
|
|
116132
|
+
|
|
116133
|
+
Oracle \u662F\u4E00\u4E2A\u53EA\u8BFB\u7684\u3001\u6602\u8D35\u7684\u3001\u9AD8\u8D28\u91CF\u63A8\u7406\u6A21\u578B\uFF0C\u7528\u4E8E\u8C03\u8BD5\u548C\u67B6\u6784\u3002\u4EC5\u4F9B\u54A8\u8BE2\u3002
|
|
116134
|
+
|
|
116135
|
+
### \u4F55\u65F6\u54A8\u8BE2\uFF08\u5148\u54A8\u8BE2 Oracle\uFF0C\u518D\u5B9E\u73B0\uFF09\uFF1A
|
|
116136
|
+
|
|
116137
|
+
${useWhen.map((entry) => `- ${entry}`).join(`
|
|
116138
|
+
`)}
|
|
116139
|
+
|
|
116140
|
+
### \u4F55\u65F6\u4E0D\u54A8\u8BE2\uFF1A
|
|
116141
|
+
|
|
116142
|
+
${avoidWhen.map((entry) => `- ${entry}`).join(`
|
|
116143
|
+
`)}
|
|
116144
|
+
|
|
116145
|
+
### \u4F7F\u7528\u6A21\u5F0F\uFF1A
|
|
116146
|
+
\u8C03\u7528\u524D\u7B80\u8981\u5BA3\u5E03"\u6B63\u5728\u54A8\u8BE2 Oracle [\u539F\u56E0]"\u3002
|
|
116147
|
+
|
|
116148
|
+
**\u4F8B\u5916**\uFF1A\u8FD9\u662F\u552F\u4E00\u5728\u884C\u52A8\u524D\u5BA3\u5E03\u7684\u60C5\u51B5\u3002\u5BF9\u4E8E\u6240\u6709\u5176\u4ED6\u5DE5\u4F5C\uFF0C\u7ACB\u5373\u5F00\u59CB\uFF0C\u4E0D\u505A\u72B6\u6001\u66F4\u65B0\u3002
|
|
116149
|
+
|
|
116150
|
+
### Oracle \u540E\u53F0\u4EFB\u52A1\u7B56\u7565\uFF1A
|
|
116151
|
+
|
|
116152
|
+
**\u5728\u6700\u7EC8\u7B54\u6848\u524D\u6536\u96C6 Oracle \u7ED3\u679C\u3002\u65E0\u4E00\u4F8B\u5916\u3002**
|
|
116153
|
+
|
|
116154
|
+
**\u4F9D\u8D56 Oracle \u7684\u5B9E\u73B0\u88AB\u963B\u585E\uFF0C\u76F4\u5230 Oracle \u5B8C\u6210\u3002**
|
|
116155
|
+
|
|
116156
|
+
- \u5982\u679C\u4F60\u95EE Oracle \u6709\u5173\u5F71\u54CD\u4FEE\u590D\u7684\u67B6\u6784/\u8C03\u8BD5\u65B9\u5411\uFF0C\u5728 Oracle \u7ED3\u679C\u5230\u8FBE\u524D\u4E0D\u8981\u5B9E\u73B0\u3002
|
|
116157
|
+
- \u7B49\u5F85\u65F6\uFF0C\u4EC5\u505A\u975E\u91CD\u53E0\u7684\u51C6\u5907\u5DE5\u4F5C\u3002\u6C38\u4E0D\u53D1\u9001 Oracle \u88AB\u95EE\u53CA\u7684\u5B9E\u73B0\u51B3\u7B56\u3002
|
|
116158
|
+
- \u6C38\u4E0D"\u8D85\u65F6\u5E76\u7EE7\u7EED"Oracle \u76F8\u5173\u4EFB\u52A1\u3002
|
|
116159
|
+
|
|
116160
|
+
- Oracle \u9700\u8981\u65F6\u95F4\u3002\u5F53\u81EA\u5DF1\u7684\u5DE5\u4F5C\u65F6\u5B8C\u6210\uFF1A**\u7ED3\u675F\u4F60\u7684\u56DE\u590D** - \u7B49\u5F85 \`<system-reminder>\`\u3002
|
|
116161
|
+
- \u4E0D\u8981\u8F6E\u8BE2 \`background_output\` \u83B7\u53D6\u8FD0\u884C\u4E2D\u7684 Oracle\u3002\u901A\u77E5\u4F1A\u6765\u3002
|
|
116162
|
+
- \u6C38\u4E0D\u53D6\u6D88 Oracle\u3002
|
|
116163
|
+
</Oracle_Usage>`;
|
|
116164
|
+
}
|
|
116073
116165
|
return `<Oracle_Usage>
|
|
116074
116166
|
## Oracle - Read-Only High-IQ Consultant
|
|
116075
116167
|
|
|
116076
|
-
Oracle is a read-only, expensive, high
|
|
116168
|
+
Oracle is a read-only, expensive, high quality reasoning model for debugging and architecture. Consultation only.
|
|
116077
116169
|
|
|
116078
116170
|
### WHEN to Consult (Oracle FIRST, then implement):
|
|
116079
116171
|
|
|
@@ -116105,11 +116197,24 @@ Briefly announce "Consulting Oracle for [reason]" before invocation.
|
|
|
116105
116197
|
- Never cancel Oracle.
|
|
116106
116198
|
</Oracle_Usage>`;
|
|
116107
116199
|
}
|
|
116108
|
-
function buildNonClaudePlannerSection(model) {
|
|
116200
|
+
function buildNonClaudePlannerSection(model, language) {
|
|
116109
116201
|
const isNonClaude = !model.toLowerCase().includes("claude");
|
|
116110
116202
|
if (!isNonClaude) {
|
|
116111
116203
|
return "";
|
|
116112
116204
|
}
|
|
116205
|
+
const isZh = isZhLanguage(language);
|
|
116206
|
+
if (isZh) {
|
|
116207
|
+
return `### \u8BA1\u5212 Agent \u4F9D\u8D56\uFF08\u975E Claude\uFF09
|
|
116208
|
+
|
|
116209
|
+
\u591A\u6B65\u9AA4\u4EFB\u52A1\uFF1F**\u59CB\u7EC8\u5148\u54A8\u8BE2\u8BA1\u5212 Agent**\u3002\u6CA1\u6709\u8BA1\u5212\u4E0D\u8981\u5F00\u59CB\u5B9E\u73B0\u3002
|
|
116210
|
+
|
|
116211
|
+
- \u5355\u6587\u4EF6\u4FEE\u590D\u6216\u7B80\u5355\u66F4\u6539 \u2192 \u76F4\u63A5\u7EE7\u7EED
|
|
116212
|
+
- \u5176\u4ED6\uFF082+ \u6B65\u9AA4\u3001\u8303\u56F4\u4E0D\u6E05\u3001\u67B6\u6784\uFF09\u2192 \u5148 \`task(subagent_type="plan", ...)\`
|
|
116213
|
+
- \u4F7F\u7528 \`task_id\` \u6062\u590D\u76F8\u540C\u7684\u8BA1\u5212 Agent - \u79EF\u6781\u63D0\u51FA\u540E\u7EED\u95EE\u9898
|
|
116214
|
+
- \u5982\u679C\u4EFB\u4F55\u90E8\u5206\u4E0D\u660E\u786E\uFF0C\u5728\u731C\u6D4B\u524D\u5148\u95EE\u8BA1\u5212 Agent
|
|
116215
|
+
|
|
116216
|
+
\u8BA1\u5212 Agent \u8FD4\u56DE\u7ED3\u6784\u5316\u7684\u5DE5\u4F5C\u5206\u89E3\u548C\u5E76\u884C\u6267\u884C\u673A\u4F1A\u3002\u9075\u5FAA\u5B83\u3002`;
|
|
116217
|
+
}
|
|
116113
116218
|
return `### Plan Agent Dependency (Non-Claude)
|
|
116114
116219
|
|
|
116115
116220
|
Multi-step task? **ALWAYS consult Plan Agent first.** Do NOT start implementation without a plan.
|
|
@@ -116121,12 +116226,41 @@ Multi-step task? **ALWAYS consult Plan Agent first.** Do NOT start implementatio
|
|
|
116121
116226
|
|
|
116122
116227
|
Plan Agent returns a structured work breakdown with parallel execution opportunities. Follow it.`;
|
|
116123
116228
|
}
|
|
116124
|
-
function buildParallelDelegationSection(model, categories2) {
|
|
116229
|
+
function buildParallelDelegationSection(model, categories2, language) {
|
|
116125
116230
|
const isNonClaude = !model.toLowerCase().includes("claude");
|
|
116126
116231
|
const hasDelegationCategory = categories2.some((category) => category.name === "deep" || category.name === "unspecified-high");
|
|
116127
116232
|
if (!isNonClaude || !hasDelegationCategory) {
|
|
116128
116233
|
return "";
|
|
116129
116234
|
}
|
|
116235
|
+
const isZh = isZhLanguage(language);
|
|
116236
|
+
if (isZh) {
|
|
116237
|
+
return `### \u5206\u89E3\u5E76\u59D4\u6258 - \u4F60\u4E0D\u662F\u5B9E\u73B0\u8005
|
|
116238
|
+
|
|
116239
|
+
**\u4F60\u7684\u5931\u8D25\u6A21\u5F0F\uFF1A\u4F60\u8BD5\u56FE\u81EA\u5DF1\u5B8C\u6210\u5DE5\u4F5C\u800C\u4E0D\u662F\u5206\u89E3\u548C\u59D4\u6258\u3002** \u5F53\u4F60\u76F4\u63A5\u5B9E\u73B0\u65F6\uFF0C\u7ED3\u679C\u6BD4\u4E13\u4E1A subagents \u5B9E\u73B0\u7684\u7ED3\u679C\u8981\u5DEE\u5F97\u591A\u3002Subagents \u6709\u9886\u57DF\u7279\u5B9A\u914D\u7F6E\u3001\u52A0\u8F7D\u7684\u6280\u80FD\u548C\u8C03\u4F18\u7684\u63D0\u793A\u8BCD\uFF0C\u800C\u4F60\u6CA1\u6709\u3002
|
|
116240
|
+
|
|
116241
|
+
**\u4EFB\u4F55\u5B9E\u73B0\u4EFB\u52A1\u7684\u5F3A\u5236\u8981\u6C42\uFF1A**
|
|
116242
|
+
|
|
116243
|
+
1. **\u59CB\u7EC8\u5C06\u4EFB\u52A1\u5206\u89E3**\u4E3A\u72EC\u7ACB\u5DE5\u4F5C\u5355\u5143\u3002\u65E0\u4E00\u4F8B\u5916\u3002\u5373\u4F7F\u4EFB\u52A1"\u770B\u8D77\u6765\u5F88\u5C0F"\uFF0C\u4E5F\u8981\u5206\u89E3\u3002
|
|
116244
|
+
2. **\u59CB\u7EC8\u5C06\u6BCF\u4E2A\u5355\u5143\u59D4\u6258**\u7ED9 \`deep\` \u6216 \`unspecified-high\` agent \u5E76\u884C\u6267\u884C\uFF08\`run_in_background=true\`\uFF09\u3002
|
|
116245
|
+
3. **\u6C38\u8FDC\u4E0D\u8981\u987A\u5E8F\u5DE5\u4F5C\u3002** \u5982\u679C\u6709 4 \u4E2A\u72EC\u7ACB\u5355\u5143\uFF0C\u540C\u65F6\u751F\u6210 4 \u4E2A\u3002\u4E0D\u662F\u4E00\u6B21 1 \u4E2A\u3002\u4E0D\u662F 2 \u7136\u540E 2\u3002
|
|
116246
|
+
4. **\u5F53\u53EF\u4EE5\u59D4\u6258\u65F6\uFF0C\u6C38\u8FDC\u4E0D\u8981\u76F4\u63A5\u5B9E\u73B0\u3002** \u4F60\u5199\u63D0\u793A\u8BCD\uFF0C\u4E0D\u662F\u4EE3\u7801\u3002
|
|
116247
|
+
|
|
116248
|
+
**\u4F60\u5BF9\u6BCF\u4E2A subagent \u7684\u63D0\u793A\u8BCD\u5FC5\u987B\u5305\u62EC\uFF1A**
|
|
116249
|
+
- GOAL \u5305\u542B\u660E\u786E\u6210\u529F\u6807\u51C6\uFF08"\u5B8C\u6210"\u662F\u4EC0\u4E48\u6837\uFF09
|
|
116250
|
+
- \u6587\u4EF6\u8DEF\u5F84\u548C\u7EA6\u675F\uFF08\u5728\u54EA\u91CC\u5DE5\u4F5C\uFF0C\u4E0D\u78B0\u4EC0\u4E48\uFF09
|
|
116251
|
+
- \u8981\u9075\u5FAA\u7684\u73B0\u6709\u6A21\u5F0F\uFF08\u5F15\u7528 subagent \u5E94\u8BE5\u8BFB\u53D6\u7684\u5177\u4F53\u6587\u4EF6\uFF09
|
|
116252
|
+
- \u6E05\u6670\u7684\u8303\u56F4\u8FB9\u754C\uFF08\u4EC0\u4E48\u662F\u8303\u56F4\u5185\uFF0C\u4EC0\u4E48\u662F\u8303\u56F4\u5916\uFF09
|
|
116253
|
+
|
|
116254
|
+
**\u6A21\u7CCA\u59D4\u6258 = \u5931\u8D25\u59D4\u6258\u3002** \u5982\u679C\u4F60\u5BF9 subagent \u7684\u63D0\u793A\u8BCD\u77ED\u4E8E 5 \u884C\uFF0C\u90A3\u5C31\u592A\u6A21\u7CCA\u4E86\u3002
|
|
116255
|
+
|
|
116256
|
+
| \u4F60\u60F3\u505A\u4EC0\u4E48 | \u4F60\u5FC5\u987B\u505A\u4EC0\u4E48 |
|
|
116257
|
+
|---|---|
|
|
116258
|
+
| \u81EA\u5DF1\u5199\u4EE3\u7801 | \u59D4\u6258\u7ED9 \`deep\` \u6216 \`unspecified-high\` agent |
|
|
116259
|
+
| \u987A\u5E8F\u5904\u7406 3 \u4E2A\u66F4\u6539 | \u5E76\u884C\u751F\u6210 3 \u4E2A agents |
|
|
116260
|
+
| "\u5FEB\u901F\u4FEE\u590D\u8FD9\u4E00\u4EF6\u4E8B" | \u4ECD\u7136\u59D4\u6258 - \u4F60\u7684"\u5FEB\u901F\u4FEE\u590D"\u6BD4 subagent \u66F4\u6162\u66F4\u5DEE |
|
|
116261
|
+
|
|
116262
|
+
**\u4F60\u7684\u4EF7\u503C\u662F\u7F16\u6392\u3001\u5206\u89E3\u548C\u8D28\u91CF\u63A7\u5236\u3002\u7528 crystal-clear \u63D0\u793A\u8BCD\u59D4\u6258\u624D\u662F\u4F60\u7684\u5DE5\u4F5C\u3002**`;
|
|
116263
|
+
}
|
|
116130
116264
|
return `### DECOMPOSE AND DELEGATE - YOU ARE NOT AN IMPLEMENTER
|
|
116131
116265
|
|
|
116132
116266
|
**YOUR FAILURE MODE: You attempt to do work yourself instead of decomposing and delegating.** When you implement directly, the result is measurably worse than when specialized subagents do it. Subagents have domain-specific configurations, loaded skills, and tuned prompts that you lack.
|
|
@@ -116155,59 +116289,62 @@ function buildParallelDelegationSection(model, categories2) {
|
|
|
116155
116289
|
**Your value is orchestration, decomposition, and quality control. Delegating with crystal-clear prompts IS your work.**`;
|
|
116156
116290
|
}
|
|
116157
116291
|
// src/agents/dynamic-agent-category-skills-guide.ts
|
|
116158
|
-
function buildSkillsSection(skills2) {
|
|
116292
|
+
function buildSkillsSection(skills2, language) {
|
|
116159
116293
|
const builtinSkills = skills2.filter((skill2) => skill2.location === "plugin");
|
|
116160
116294
|
const customSkills = skills2.filter((skill2) => skill2.location !== "plugin");
|
|
116295
|
+
const isZh = isZhLanguage(language);
|
|
116161
116296
|
const builtinNames = builtinSkills.map((skill2) => skill2.name).join(", ");
|
|
116162
116297
|
const customNames = customSkills.map((skill2) => {
|
|
116163
116298
|
const source = skill2.location === "project" ? "project" : "user";
|
|
116164
116299
|
return `${skill2.name} (${source})`;
|
|
116165
116300
|
}).join(", ");
|
|
116166
116301
|
if (customSkills.length > 0 && builtinSkills.length > 0) {
|
|
116167
|
-
return `#### Available Skills (via
|
|
116302
|
+
return `#### ${isZh ? "\u53EF\u7528\u6280\u80FD\uFF08\u901A\u8FC7 `skill` \u5DE5\u5177\uFF09" : "Available Skills (via `skill` tool)"}
|
|
116168
116303
|
|
|
116169
116304
|
**Built-in**: ${builtinNames}
|
|
116170
116305
|
**\u26A1 YOUR SKILLS (PRIORITY)**: ${customNames}
|
|
116171
116306
|
|
|
116172
|
-
> User-installed skills OVERRIDE built-in defaults. ALWAYS prefer YOUR SKILLS when domain matches.
|
|
116173
|
-
> Full skill descriptions \u2192 use the
|
|
116307
|
+
> User-installed skills OVERRIDE built-in defaults. ${isZh ? "\u5F53\u9886\u57DF\u5339\u914D\u65F6\uFF0C\u59CB\u7EC8\u4F18\u5148\u4F7F\u7528\u4F60\u7684\u6280\u80FD\u3002" : "ALWAYS prefer YOUR SKILLS when domain matches."}
|
|
116308
|
+
> ${isZh ? "\u5B8C\u6574\u6280\u80FD\u63CF\u8FF0 \u2192 \u4F7F\u7528 `skill` \u5DE5\u5177\u5728\u6BCF\u6B21\u59D4\u6258\u524D\u68C0\u67E5\u3002" : "Full skill descriptions \u2192 use the `skill` tool to check before EVERY delegation."}`;
|
|
116174
116309
|
}
|
|
116175
116310
|
if (customSkills.length > 0) {
|
|
116176
|
-
return `#### Available Skills (via
|
|
116311
|
+
return `#### ${isZh ? "\u53EF\u7528\u6280\u80FD\uFF08\u901A\u8FC7 `skill` \u5DE5\u5177\uFF09" : "Available Skills (via `skill` tool)"}
|
|
116177
116312
|
|
|
116178
116313
|
**\u26A1 YOUR SKILLS (PRIORITY)**: ${customNames}
|
|
116179
116314
|
|
|
116180
|
-
> User-installed skills OVERRIDE built-in defaults. ALWAYS prefer YOUR SKILLS when domain matches.
|
|
116181
|
-
> Full skill descriptions \u2192 use the
|
|
116315
|
+
> User-installed skills OVERRIDE built-in defaults. ${isZh ? "\u5F53\u9886\u57DF\u5339\u914D\u65F6\uFF0C\u59CB\u7EC8\u4F18\u5148\u4F7F\u7528\u4F60\u7684\u6280\u80FD\u3002" : "ALWAYS prefer YOUR SKILLS when domain matches."}
|
|
116316
|
+
> ${isZh ? "\u5B8C\u6574\u6280\u80FD\u63CF\u8FF0 \u2192 \u4F7F\u7528 `skill` \u5DE5\u5177\u5728\u6BCF\u6B21\u59D4\u6258\u524D\u68C0\u67E5\u3002" : "Full skill descriptions \u2192 use the `skill` tool to check before EVERY delegation."}`;
|
|
116182
116317
|
}
|
|
116183
116318
|
if (builtinSkills.length > 0) {
|
|
116184
|
-
return `#### Available Skills (via
|
|
116319
|
+
return `#### ${isZh ? "\u53EF\u7528\u6280\u80FD\uFF08\u901A\u8FC7 `skill` \u5DE5\u5177\uFF09" : "Available Skills (via `skill` tool)"}
|
|
116185
116320
|
|
|
116186
116321
|
**Built-in**: ${builtinNames}
|
|
116187
116322
|
|
|
116188
|
-
> Full skill descriptions \u2192 use the
|
|
116323
|
+
> ${isZh ? "\u5B8C\u6574\u6280\u80FD\u63CF\u8FF0 \u2192 \u4F7F\u7528 `skill` \u5DE5\u5177\u5728\u6BCF\u6B21\u59D4\u6258\u524D\u68C0\u67E5\u3002" : "Full skill descriptions \u2192 use the `skill` tool to check before EVERY delegation."}`;
|
|
116189
116324
|
}
|
|
116190
116325
|
return "";
|
|
116191
116326
|
}
|
|
116192
|
-
function buildCategorySkillsDelegationGuide(categories2, skills2) {
|
|
116327
|
+
function buildCategorySkillsDelegationGuide(categories2, skills2, language) {
|
|
116193
116328
|
if (categories2.length === 0 && skills2.length === 0) {
|
|
116194
116329
|
return "";
|
|
116195
116330
|
}
|
|
116331
|
+
const isZh = isZhLanguage(language);
|
|
116196
116332
|
const categoryRows = categories2.map((category) => {
|
|
116197
116333
|
const description = category.description || category.name;
|
|
116198
|
-
return `- \`${category.name}
|
|
116334
|
+
return `- \`${category.name}\`: ${description}`;
|
|
116199
116335
|
});
|
|
116200
116336
|
const customSkills = skills2.filter((skill2) => skill2.location !== "plugin");
|
|
116201
|
-
const skillsSection = buildSkillsSection(skills2);
|
|
116202
|
-
const customPriorityNote = customSkills.length > 0 ? `
|
|
116337
|
+
const skillsSection = buildSkillsSection(skills2, language);
|
|
116338
|
+
const customPriorityNote = customSkills.length > 0 ? isZh ? `
|
|
116339
|
+
> **\u7528\u6237\u5B89\u88C5\u6280\u80FD\u4F18\u5148\u3002** \u6709\u7591\u95EE\u65F6\uFF0C\u5305\u542B\u800C\u4E0D\u662F\u7701\u7565\u3002` : `
|
|
116203
116340
|
> **User-installed skills get PRIORITY.** When in doubt, INCLUDE rather than omit.` : "";
|
|
116204
|
-
return `### Category + Skills Delegation System
|
|
116341
|
+
return `### ${isZh ? "\u7C7B\u522B + \u6280\u80FD\u59D4\u6258\u7CFB\u7EDF" : "Category + Skills Delegation System"}
|
|
116205
116342
|
|
|
116206
|
-
**task() combines categories and skills for optimal task execution
|
|
116343
|
+
${isZh ? "**task() \u7ED3\u5408\u7C7B\u522B\u548C\u6280\u80FD\u4EE5\u5B9E\u73B0\u6700\u4F73\u4EFB\u52A1\u6267\u884C\u3002**" : "**task() combines categories and skills for optimal task execution."}
|
|
116207
116344
|
|
|
116208
|
-
#### Available Categories (Domain-Optimized Models)
|
|
116345
|
+
#### ${isZh ? "\u53EF\u7528\u7C7B\u522B\uFF08\u9886\u57DF\u4F18\u5316\u6A21\u578B\uFF09" : "Available Categories (Domain-Optimized Models)"}
|
|
116209
116346
|
|
|
116210
|
-
Each category is configured with a model optimized for that domain. Read the description to understand when to use it.
|
|
116347
|
+
${isZh ? "\u6BCF\u4E2A\u7C7B\u522B\u914D\u7F6E\u4E86\u9488\u5BF9\u8BE5\u9886\u57DF\u4F18\u5316\u7684\u6A21\u578B\u3002\u9605\u8BFB\u63CF\u8FF0\u4EE5\u4E86\u89E3\u4F55\u65F6\u4F7F\u7528\u3002" : "Each category is configured with a model optimized for that domain. Read the description to understand when to use it."}
|
|
116211
116348
|
|
|
116212
116349
|
${categoryRows.join(`
|
|
116213
116350
|
`)}
|
|
@@ -116216,66 +116353,76 @@ ${skillsSection}
|
|
|
116216
116353
|
|
|
116217
116354
|
---
|
|
116218
116355
|
|
|
116219
|
-
### MANDATORY: Category + Skill Selection Protocol
|
|
116356
|
+
### ${isZh ? "\u5F3A\u5236\uFF1A\u7C7B\u522B + \u6280\u80FD\u9009\u62E9\u534F\u8BAE" : "MANDATORY: Category + Skill Selection Protocol"}
|
|
116220
116357
|
|
|
116221
|
-
**STEP 1: Select Category**
|
|
116222
|
-
- Read each category's description
|
|
116223
|
-
- Match task requirements to category domain
|
|
116224
|
-
- Select the category whose domain BEST fits the task
|
|
116358
|
+
**STEP 1: ${isZh ? "\u9009\u62E9\u7C7B\u522B" : "Select Category"}**
|
|
116359
|
+
- ${isZh ? "\u9605\u8BFB\u6BCF\u4E2A\u7C7B\u522B\u7684\u63CF\u8FF0" : "Read each category's description"}
|
|
116360
|
+
- ${isZh ? "\u5C06\u4EFB\u52A1\u9700\u6C42\u4E0E\u7C7B\u522B\u9886\u57DF\u5339\u914D" : "Match task requirements to category domain"}
|
|
116361
|
+
- ${isZh ? "\u9009\u62E9\u4E0E\u4EFB\u52A1\u9886\u57DF\u6700\u5339\u914D\u7684\u7C7B\u522B" : "Select the category whose domain BEST fits the task"}
|
|
116225
116362
|
|
|
116226
|
-
**STEP 2: Evaluate ALL Skills**
|
|
116227
|
-
Check the
|
|
116228
|
-
> "
|
|
116363
|
+
**STEP 2: ${isZh ? "\u8BC4\u4F30\u6240\u6709\u6280\u80FD" : "Evaluate ALL Skills"}**
|
|
116364
|
+
${isZh ? "\u68C0\u67E5 `skill` \u5DE5\u5177\u7684\u53EF\u7528\u6280\u80FD\u53CA\u5176\u63CF\u8FF0\u3002\u5BF9\u4E8E\u6BCF\u4E2A\u6280\u80FD\uFF0C\u95EE\uFF1A" : "Check the `skill` tool for available skills and their descriptions. For EVERY skill, ask:"}
|
|
116365
|
+
> ${isZh ? "\u300C\u8FD9\u4E2A\u6280\u80FD\u7684\u4E13\u4E1A\u9886\u57DF\u4E0E\u6211\u7684\u4EFB\u52A1\u6709\u91CD\u53E0\u5417\uFF1F\u300D" : "\u300CDoes this skill's expertise domain overlap with my task?\u300D"}
|
|
116229
116366
|
|
|
116230
|
-
- If YES \u2192 INCLUDE in
|
|
116231
|
-
- If NO \u2192 OMIT (no justification needed)${customPriorityNote}
|
|
116367
|
+
- ${isZh ? "\u662F \u2192 \u5728 `load_skills=[...]` \u4E2D\u5305\u542B" : "If YES \u2192 INCLUDE in `load_skills=[...]`"}
|
|
116368
|
+
- ${isZh ? "\u5426 \u2192 \u7701\u7565\uFF08\u65E0\u9700\u89E3\u91CA\uFF09" : "If NO \u2192 OMIT (no justification needed)"}${customPriorityNote}
|
|
116232
116369
|
|
|
116233
116370
|
---
|
|
116234
116371
|
|
|
116235
|
-
### Delegation Pattern
|
|
116372
|
+
### ${isZh ? "\u59D4\u6258\u6A21\u5F0F" : "Delegation Pattern"}
|
|
116236
116373
|
|
|
116237
116374
|
\`\`\`typescript
|
|
116238
116375
|
task(
|
|
116239
116376
|
category="[selected-category]",
|
|
116240
|
-
load_skills=["skill-1", "skill-2"], // Include ALL relevant skills - ESPECIALLY user-installed ones
|
|
116377
|
+
load_skills=["skill-1", "skill-2"], // ${isZh ? "\u5305\u542B\u6240\u6709\u76F8\u5173\u6280\u80FD\u2014\u2014\u5C24\u5176\u662F\u7528\u6237\u5B89\u88C5\u7684" : "Include ALL relevant skills - ESPECIALLY user-installed ones"}
|
|
116241
116378
|
prompt="..."
|
|
116242
116379
|
)
|
|
116243
116380
|
\`\`\`
|
|
116244
116381
|
|
|
116245
|
-
|
|
116382
|
+
**${isZh ? "\u53CD\u6A21\u5F0F\uFF08\u4F1A\u4EA7\u751F\u8F83\u5DEE\u7ED3\u679C\uFF09\uFF1A" : "ANTI-PATTERN (will produce poor results):"}**
|
|
116246
116383
|
\`\`\`typescript
|
|
116247
|
-
task(category="...", load_skills=[], run_in_background=false, prompt="...") // Empty load_skills without justification
|
|
116384
|
+
task(category="...", load_skills=[], run_in_background=false, prompt="...") // ${isZh ? "\u7A7A load_skills \u4E14\u65E0\u89E3\u91CA" : "Empty load_skills without justification"}
|
|
116248
116385
|
\`\`\`
|
|
116249
116386
|
|
|
116250
116387
|
---
|
|
116251
116388
|
|
|
116252
|
-
### Category Domain Matching (ZERO TOLERANCE)
|
|
116389
|
+
### ${isZh ? "\u7C7B\u522B\u9886\u57DF\u5339\u914D\uFF08\u96F6\u5BB9\u5FCD\uFF09" : "Category Domain Matching (ZERO TOLERANCE)"}
|
|
116253
116390
|
|
|
116254
|
-
Every delegation MUST use the category that matches the task's domain. Mismatched categories produce measurably worse output because each category runs on a model optimized for that specific domain.
|
|
116391
|
+
${isZh ? "\u6BCF\u6B21\u59D4\u6258\u5FC5\u987B\u4F7F\u7528\u4E0E\u4EFB\u52A1\u9886\u57DF\u5339\u914D\u7684\u7C7B\u522B\u3002\u9519\u8BEF\u7684\u7C7B\u522B\u5339\u914D\u4F1A\u4EA7\u751F\u660E\u663E\u66F4\u5DEE\u7684\u8F93\u51FA\uFF0C\u56E0\u4E3A\u6BCF\u4E2A\u7C7B\u522B\u8FD0\u884C\u5728\u9488\u5BF9\u7279\u5B9A\u9886\u57DF\u4F18\u5316\u7684\u6A21\u578B\u4E0A\u3002" : "Every delegation MUST use the category that matches the task's domain. Mismatched categories produce measurably worse output because each category runs on a model optimized for that specific domain."}
|
|
116255
116392
|
|
|
116256
|
-
|
|
116393
|
+
**${isZh ? "\u89C6\u89C9\u5DE5\u4F5C = \u59CB\u7EC8\u4F7F\u7528 `visual-engineering`\u3002\u65E0\u4F8B\u5916\u3002" : "VISUAL WORK = ALWAYS `visual-engineering`. NO EXCEPTIONS."}**
|
|
116257
116394
|
|
|
116258
|
-
Any task involving UI, UX, CSS, styling, layout, animation, design, or frontend components MUST go to
|
|
116395
|
+
${isZh ? "\u4EFB\u4F55\u6D89\u53CA UI\u3001UX\u3001CSS\u3001\u6837\u5F0F\u3001\u5E03\u5C40\u3001\u52A8\u753B\u3001\u8BBE\u8BA1\u6216\u524D\u7AEF\u7EC4\u4EF6\u7684\u4EFB\u52A1\u5FC5\u987B\u4F7F\u7528 `visual-engineering`\u3002\u6C38\u8FDC\u4E0D\u8981\u5C06\u89C6\u89C9\u5DE5\u4F5C\u59D4\u6258\u7ED9 `quick`\u3001`unspecified-*` \u6216\u5176\u4ED6\u7C7B\u522B\u3002" : "Any task involving UI, UX, CSS, styling, layout, animation, design, or frontend components MUST go to `visual-engineering`. Never delegate visual work to `quick`, `unspecified-*`, or any other category."}
|
|
116259
116396
|
|
|
116260
116397
|
\`\`\`typescript
|
|
116261
|
-
// CORRECT: Visual work \u2192 visual-engineering category
|
|
116398
|
+
// ${isZh ? "\u6B63\u786E\uFF1A\u89C6\u89C9\u5DE5\u4F5C \u2192 visual-engineering \u7C7B\u522B" : "CORRECT: Visual work \u2192 visual-engineering category"}
|
|
116262
116399
|
task(category="visual-engineering", load_skills=["frontend-ui-ux"], prompt="Redesign the sidebar layout with new spacing...")
|
|
116263
116400
|
|
|
116264
|
-
// WRONG: Visual work in wrong category - WILL PRODUCE INFERIOR RESULTS
|
|
116401
|
+
// ${isZh ? "\u9519\u8BEF\uFF1A\u89C6\u89C9\u5DE5\u4F5C\u4F7F\u7528\u9519\u8BEF\u7C7B\u522B\u2014\u2014\u4F1A\u4EA7\u751F\u8F83\u5DEE\u7ED3\u679C" : "WRONG: Visual work in wrong category - WILL PRODUCE INFERIOR RESULTS"}
|
|
116265
116402
|
task(category="quick", load_skills=[], prompt="Redesign the sidebar layout with new spacing...")
|
|
116266
116403
|
\`\`\`
|
|
116267
116404
|
|
|
116268
|
-
| Task Domain | MUST Use Category |
|
|
116405
|
+
| ${isZh ? "\u4EFB\u52A1\u9886\u57DF" : "Task Domain"} | ${isZh ? "\u5FC5\u987B\u4F7F\u7528\u7C7B\u522B" : "MUST Use Category"} |
|
|
116269
116406
|
|---|---|
|
|
116270
|
-
| UI, styling, animations, layout, design | \`visual-engineering\` |
|
|
116271
|
-
| Hard logic, architecture decisions, algorithms | \`ultrabrain\` |
|
|
116272
|
-
| Autonomous research + end-to-end implementation | \`deep\` |
|
|
116273
|
-
| Single-file typo, trivial config change | \`quick\` |
|
|
116407
|
+
| ${isZh ? "UI\u3001\u6837\u5F0F\u3001\u52A8\u753B\u3001\u5E03\u5C40\u3001\u8BBE\u8BA1" : "UI, styling, animations, layout, design"} | \`visual-engineering\` |
|
|
116408
|
+
| ${isZh ? "\u786C\u903B\u8F91\u3001\u67B6\u6784\u51B3\u7B56\u3001\u7B97\u6CD5" : "Hard logic, architecture decisions, algorithms"} | \`ultrabrain\` |
|
|
116409
|
+
| ${isZh ? "\u81EA\u4E3B\u7814\u7A76 + \u7AEF\u5230\u7AEF\u5B9E\u73B0" : "Autonomous research + end-to-end implementation"} | \`deep\` |
|
|
116410
|
+
| ${isZh ? "\u5355\u6587\u4EF6\u62FC\u5199\u9519\u8BEF\u3001\u7B80\u5355\u914D\u7F6E\u66F4\u6539" : "Single-file typo, trivial config change"} | \`quick\` |
|
|
116274
116411
|
|
|
116275
|
-
|
|
116412
|
+
**${isZh ? "\u5F53\u5BF9\u7C7B\u522B\u6709\u7591\u95EE\u65F6\uFF0C\u5B83\u51E0\u4E4E\u6C38\u8FDC\u4E0D\u662F `quick` \u6216 `unspecified-*`\u3002\u5339\u914D\u9886\u57DF\u3002" : "When in doubt about category, it is almost never `quick` or `unspecified-*`. Match the domain."}**`;
|
|
116276
116413
|
}
|
|
116277
116414
|
// src/agents/dynamic-agent-policy-sections.ts
|
|
116278
|
-
function buildHardBlocksSection() {
|
|
116415
|
+
function buildHardBlocksSection(language) {
|
|
116416
|
+
if (isZhLanguage(language)) {
|
|
116417
|
+
return `## \u786C\u6027\u7981\u6B62\uFF08\u6C38\u4E0D\u8FDD\u53CD\uFF09
|
|
116418
|
+
|
|
116419
|
+
- \u7981\u6B62\u7C7B\u578B\u9519\u8BEF\u538B\u5236\uFF08\`as any\`\u3001\`@ts-ignore\`\uFF09\u2014\u2014\u6C38\u4E0D
|
|
116420
|
+
- \u672A\u7ECF\u660E\u786E\u8981\u6C42\u7981\u6B62\u63D0\u4EA4\u2014\u2014\u6C38\u4E0D
|
|
116421
|
+
- \u7981\u6B62\u63A8\u6D4B\u672A\u8BFB\u4EE3\u7801\u2014\u2014\u6C38\u4E0D
|
|
116422
|
+
- \u5931\u8D25\u540E\u7981\u6B62\u7559\u4E0B\u635F\u574F\u4EE3\u7801\u2014\u2014\u6C38\u4E0D
|
|
116423
|
+
- \`background_cancel(all=true)\`\u2014\u2014\u6C38\u4E0D\u3002\u59CB\u7EC8\u6309 taskId \u5355\u72EC\u53D6\u6D88\u3002
|
|
116424
|
+
- \u6536\u96C6 Oracle \u7ED3\u679C\u524D\u7981\u6B62\u4EA4\u4ED8\u6700\u7EC8\u7B54\u6848\u2014\u2014\u6C38\u4E0D\u3002`;
|
|
116425
|
+
}
|
|
116279
116426
|
const blocks = [
|
|
116280
116427
|
"- Type error suppression (`as any`, `@ts-ignore`) - **Never**",
|
|
116281
116428
|
"- Commit without explicit request - **Never**",
|
|
@@ -116289,7 +116436,19 @@ function buildHardBlocksSection() {
|
|
|
116289
116436
|
${blocks.join(`
|
|
116290
116437
|
`)}`;
|
|
116291
116438
|
}
|
|
116292
|
-
function buildAntiPatternsSection() {
|
|
116439
|
+
function buildAntiPatternsSection(language) {
|
|
116440
|
+
if (isZhLanguage(language)) {
|
|
116441
|
+
return `## \u53CD\u6A21\u5F0F\uFF08\u963B\u585E\u6027\u8FDD\u89C4\uFF09
|
|
116442
|
+
|
|
116443
|
+
- **\u7C7B\u578B\u5B89\u5168**\uFF1A\`as any\`\u3001\`@ts-ignore\`\u3001\`@ts-expect-error\`
|
|
116444
|
+
- **\u9519\u8BEF\u5904\u7406**\uFF1A\u7A7A catch \u5757 \`catch(e) {}\`
|
|
116445
|
+
- **\u6D4B\u8BD5**\uFF1A\u5220\u9664\u5931\u8D25\u7684\u6D4B\u8BD5\u4EE5"\u901A\u8FC7"
|
|
116446
|
+
- **\u641C\u7D22**\uFF1A\u4E3A\u5355\u884C\u62FC\u5199\u9519\u8BEF\u6216\u660E\u663E\u8BED\u6CD5\u9519\u8BEF\u89E6\u53D1 agents
|
|
116447
|
+
- **\u8C03\u8BD5**\uFF1A\u9730\u5F39\u5F0F\u8C03\u8BD5\uFF0C\u968F\u673A\u66F4\u6539
|
|
116448
|
+
- **\u540E\u53F0\u4EFB\u52A1**\uFF1A\u8F6E\u8BE2\u8FD0\u884C\u4E2D\u4EFB\u52A1\u7684 \`background_output\`\u2014\u2014\u7ED3\u675F\u56DE\u590D\u5E76\u7B49\u5F85\u901A\u77E5
|
|
116449
|
+
- **\u59D4\u6258\u91CD\u590D**\uFF1A\u59D4\u6258 explore/librarian \u540E\u81EA\u5DF1\u624B\u52A8\u505A\u76F8\u540C\u641C\u7D22
|
|
116450
|
+
- **Oracle**\uFF1A\u4E0D\u6536\u96C6 Oracle \u7ED3\u679C\u5C31\u4EA4\u4ED8\u7B54\u6848`;
|
|
116451
|
+
}
|
|
116293
116452
|
const patterns = [
|
|
116294
116453
|
"- **Type Safety**: `as any`, `@ts-ignore`, `@ts-expect-error`",
|
|
116295
116454
|
"- **Error Handling**: Empty catch blocks `catch(e) {}`",
|
|
@@ -116305,7 +116464,24 @@ function buildAntiPatternsSection() {
|
|
|
116305
116464
|
${patterns.join(`
|
|
116306
116465
|
`)}`;
|
|
116307
116466
|
}
|
|
116308
|
-
function buildToolCallFormatSection() {
|
|
116467
|
+
function buildToolCallFormatSection(language) {
|
|
116468
|
+
if (isZhLanguage(language)) {
|
|
116469
|
+
return `## \u5DE5\u5177\u8C03\u7528\u683C\u5F0F\uFF08\u5173\u952E\uFF09
|
|
116470
|
+
|
|
116471
|
+
**\u59CB\u7EC8\u4F7F\u7528\u539F\u751F\u5DE5\u5177\u8C03\u7528\u673A\u5236\u3002\u6C38\u4E0D\u5C06\u5DE5\u5177\u8C03\u7528\u8F93\u51FA\u4E3A\u6587\u672C\u3002**
|
|
116472
|
+
|
|
116473
|
+
\u5F53\u9700\u8981\u8C03\u7528\u5DE5\u5177\u65F6\uFF1A
|
|
116474
|
+
1. \u4F7F\u7528\u7CFB\u7EDF\u63D0\u4F9B\u7684\u5DE5\u5177\u8C03\u7528\u63A5\u53E3
|
|
116475
|
+
2. \u4E0D\u8981\u5C06\u5DE5\u5177\u8C03\u7528\u5199\u6210\u7EAF\u6587\u672C\uFF0C\u5982 \`assistant to=functions.XXX\`
|
|
116476
|
+
3. \u4E0D\u8981\u5728\u6587\u672C\u56DE\u590D\u4E2D\u76F4\u63A5\u8F93\u51FA JSON
|
|
116477
|
+
4. \u7CFB\u7EDF\u81EA\u52A8\u5904\u7406\u5DE5\u5177\u8C03\u7528\u683C\u5F0F
|
|
116478
|
+
|
|
116479
|
+
**\u6B63\u786E**\uFF1A\u901A\u8FC7\u5DE5\u5177\u8C03\u7528\u63A5\u53E3\u8C03\u7528
|
|
116480
|
+
**\u9519\u8BEF**\uFF1A\u5C06 \`assistant to=functions.todowrite\` \u6216 \`json
|
|
116481
|
+
{...}\` \u4F5C\u4E3A\u6587\u672C\u5199\u5165
|
|
116482
|
+
|
|
116483
|
+
\u4F60\u7684\u5DE5\u5177\u8C03\u7528\u81EA\u52A8\u5904\u7406\u3002\u4EC5\u8C03\u7528\u5DE5\u5177\u2014\u2014\u4E0D\u8981\u81EA\u5DF1\u683C\u5F0F\u5316\u8C03\u7528\u3002`;
|
|
116484
|
+
}
|
|
116309
116485
|
return `## Tool Call Format (CRITICAL)
|
|
116310
116486
|
|
|
116311
116487
|
**ALWAYS use the native tool calling mechanism. NEVER output tool calls as text.**
|
|
@@ -116322,7 +116498,54 @@ When you need to call a tool:
|
|
|
116322
116498
|
|
|
116323
116499
|
Your tool calls are processed automatically. Just invoke the tool - do not format the call yourself.`;
|
|
116324
116500
|
}
|
|
116325
|
-
function buildAntiDuplicationSection() {
|
|
116501
|
+
function buildAntiDuplicationSection(language) {
|
|
116502
|
+
if (isZhLanguage(language)) {
|
|
116503
|
+
return `<Anti_Duplication>
|
|
116504
|
+
## \u9632\u91CD\u590D\u89C4\u5219\uFF08\u5173\u952E\uFF09
|
|
116505
|
+
|
|
116506
|
+
\u4E00\u65E6\u5C06\u63A2\u7D22\u59D4\u6258\u7ED9 explore/librarian agents\uFF0C**\u4E0D\u8981\u81EA\u5DF1\u6267\u884C\u76F8\u540C\u7684\u641C\u7D22**\u3002
|
|
116507
|
+
|
|
116508
|
+
### \u542B\u4E49
|
|
116509
|
+
|
|
116510
|
+
**\u7981\u6B62\uFF1A**
|
|
116511
|
+
- \u89E6\u53D1 explore/librarian \u540E\uFF0C\u624B\u52A8 grep/\u641C\u7D22\u76F8\u540C\u4FE1\u606F
|
|
116512
|
+
- \u91CD\u505A agents \u521A\u88AB\u59D4\u6258\u7684\u7814\u7A76
|
|
116513
|
+
- "\u5FEB\u901F\u68C0\u67E5"\u540E\u53F0 agents \u6B63\u5728\u68C0\u67E5\u7684\u76F8\u540C\u6587\u4EF6
|
|
116514
|
+
|
|
116515
|
+
**\u5141\u8BB8\uFF1A**
|
|
116516
|
+
- \u7EE7\u7EED**\u975E\u91CD\u53E0\u5DE5\u4F5C**\u2014\u2014\u4E0D\u4F9D\u8D56\u4E8E\u59D4\u6258\u7814\u7A76\u7684\u5DE5\u4F5C
|
|
116517
|
+
- \u5728\u4EE3\u7801\u5E93\u65E0\u5173\u90E8\u5206\u5DE5\u4F5C
|
|
116518
|
+
- \u51C6\u5907\u5DE5\u4F5C\uFF08\u5982\u8BBE\u7F6E\u6587\u4EF6\u3001\u914D\u7F6E\uFF09
|
|
116519
|
+
|
|
116520
|
+
### \u6B63\u786E\u7B49\u5F85\u7ED3\u679C\uFF1A
|
|
116521
|
+
|
|
116522
|
+
\u5F53\u9700\u8981\u59D4\u6258\u7ED3\u679C\u4F46\u8FD8\u6CA1\u51C6\u5907\u597D\u65F6\uFF1A
|
|
116523
|
+
|
|
116524
|
+
1. **\u7ED3\u675F\u56DE\u590D**\u2014\u2014\u4E0D\u8981\u7EE7\u7EED\u4F9D\u8D56\u90A3\u4E9B\u7ED3\u679C\u7684\u5DE5\u4F5C
|
|
116525
|
+
2. **\u7B49\u5F85\u5B8C\u6210\u901A\u77E5**\u2014\u2014\u7CFB\u7EDF\u4F1A\u5728\u4E0B\u4E00\u8F6E\u89E6\u53D1\u4F60
|
|
116526
|
+
3. \u7136\u540E\u901A\u8FC7 \`background_output(task_id="...")\` \u6536\u96C6\u7ED3\u679C
|
|
116527
|
+
4. **\u4E0D\u8981**\u4E0D\u8010\u70E6\u5730\u91CD\u65B0\u641C\u7D22\u76F8\u540C\u4E3B\u9898
|
|
116528
|
+
|
|
116529
|
+
### \u4E3A\u4EC0\u4E48\u8FD9\u5F88\u91CD\u8981\uFF1A
|
|
116530
|
+
|
|
116531
|
+
- **\u6D6A\u8D39 token**\uFF1A\u91CD\u590D\u63A2\u7D22\u6D6A\u8D39\u4F60\u7684\u4E0A\u4E0B\u6587\u9884\u7B97
|
|
116532
|
+
- **\u6DF7\u6DC6**\uFF1A\u4F60\u53EF\u80FD\u4E0E agents \u7684\u53D1\u73B0\u77DB\u76FE
|
|
116533
|
+
- **\u6548\u7387**\uFF1A\u59D4\u6258\u7684\u8981\u70B9\u662F\u5E76\u884C\u541E\u5410\u91CF
|
|
116534
|
+
|
|
116535
|
+
### \u793A\u4F8B\uFF1A
|
|
116536
|
+
|
|
116537
|
+
\`\`\`typescript
|
|
116538
|
+
// \u9519\u8BEF\uFF1A\u59D4\u6258\u540E\u91CD\u505A\u641C\u7D22
|
|
116539
|
+
task(subagent_type="explore", run_in_background=true, ...)
|
|
116540
|
+
// \u7136\u540E\u7ACB\u5373\u81EA\u5DF1 grep \u76F8\u540C\u5185\u5BB9\u2014\u2014\u7981\u6B62
|
|
116541
|
+
|
|
116542
|
+
// \u6B63\u786E\uFF1A\u7EE7\u7EED\u975E\u91CD\u53E0\u5DE5\u4F5C
|
|
116543
|
+
task(subagent_type="explore", run_in_background=true, ...)
|
|
116544
|
+
// \u5728 agents \u641C\u7D22\u65F6\u5904\u7406\u5176\u4ED6\u65E0\u5173\u5DE5\u4F5C
|
|
116545
|
+
// \u7ED3\u675F\u56DE\u590D\u5E76\u7B49\u5F85\u901A\u77E5
|
|
116546
|
+
\`\`\`
|
|
116547
|
+
</Anti_Duplication>`;
|
|
116548
|
+
}
|
|
116326
116549
|
return `<Anti_Duplication>
|
|
116327
116550
|
## Anti-Duplication Rule (CRITICAL)
|
|
116328
116551
|
|
|
@@ -116743,7 +116966,8 @@ ${styleBlock}`;
|
|
|
116743
116966
|
}
|
|
116744
116967
|
|
|
116745
116968
|
// src/agents/sisyphus/default.ts
|
|
116746
|
-
function buildTaskManagementSection(useTaskSystem) {
|
|
116969
|
+
function buildTaskManagementSection(useTaskSystem, language) {
|
|
116970
|
+
const isZh = language?.startsWith("zh");
|
|
116747
116971
|
if (useTaskSystem) {
|
|
116748
116972
|
return `<Task_Management>
|
|
116749
116973
|
## Task Management (CRITICAL)
|
|
@@ -116877,7 +117101,7 @@ function loadPromptTemplate(language, agentName) {
|
|
|
116877
117101
|
// src/agents/sisyphus.ts
|
|
116878
117102
|
var MODE = "primary";
|
|
116879
117103
|
var _zhTemplateCache = null;
|
|
116880
|
-
function buildDynamicSisyphusPromptZh(model, availableAgents, availableTools = [], availableSkills = [], availableCategories = [], useTaskSystem = false) {
|
|
117104
|
+
function buildDynamicSisyphusPromptZh(model, availableAgents, availableTools = [], availableSkills = [], availableCategories = [], useTaskSystem = false, language = "zh-CN") {
|
|
116881
117105
|
if (_zhTemplateCache === null) {
|
|
116882
117106
|
_zhTemplateCache = loadPromptTemplate("zh", "sisyphus");
|
|
116883
117107
|
}
|
|
@@ -116885,20 +117109,20 @@ function buildDynamicSisyphusPromptZh(model, availableAgents, availableTools = [
|
|
|
116885
117109
|
if (!template) {
|
|
116886
117110
|
return buildDynamicSisyphusPrompt(model, availableAgents, availableTools, availableSkills, availableCategories, useTaskSystem);
|
|
116887
117111
|
}
|
|
116888
|
-
const keyTriggers = buildKeyTriggersSection(availableAgents, availableSkills);
|
|
116889
|
-
const toolSelection = buildToolSelectionTable(availableAgents, availableTools, availableSkills);
|
|
116890
|
-
const exploreSection = buildExploreSection(availableAgents);
|
|
116891
|
-
const librarianSection = buildLibrarianSection(availableAgents);
|
|
116892
|
-
const categorySkillsGuide = buildCategorySkillsDelegationGuide(availableCategories, availableSkills);
|
|
116893
|
-
const delegationTable = buildDelegationTable(availableAgents);
|
|
116894
|
-
const oracleSection = buildOracleSection(availableAgents);
|
|
116895
|
-
const hardBlocks = buildHardBlocksSection();
|
|
116896
|
-
const antiPatterns = buildAntiPatternsSection();
|
|
116897
|
-
const parallelDelegationSection = buildParallelDelegationSection(model, availableCategories);
|
|
116898
|
-
const nonClaudePlannerSection = buildNonClaudePlannerSection(model);
|
|
116899
|
-
const taskManagementSection = buildTaskManagementSection(useTaskSystem);
|
|
117112
|
+
const keyTriggers = buildKeyTriggersSection(availableAgents, availableSkills, language);
|
|
117113
|
+
const toolSelection = buildToolSelectionTable(availableAgents, availableTools, availableSkills, language);
|
|
117114
|
+
const exploreSection = buildExploreSection(availableAgents, language);
|
|
117115
|
+
const librarianSection = buildLibrarianSection(availableAgents, language);
|
|
117116
|
+
const categorySkillsGuide = buildCategorySkillsDelegationGuide(availableCategories, availableSkills, language);
|
|
117117
|
+
const delegationTable = buildDelegationTable(availableAgents, language);
|
|
117118
|
+
const oracleSection = buildOracleSection(availableAgents, language);
|
|
117119
|
+
const hardBlocks = buildHardBlocksSection(language);
|
|
117120
|
+
const antiPatterns = buildAntiPatternsSection(language);
|
|
117121
|
+
const parallelDelegationSection = buildParallelDelegationSection(model, availableCategories, language);
|
|
117122
|
+
const nonClaudePlannerSection = buildNonClaudePlannerSection(model, language);
|
|
117123
|
+
const taskManagementSection = buildTaskManagementSection(useTaskSystem, language);
|
|
116900
117124
|
const todoHookNote = useTaskSystem ? "YOUR TASK CREATION WOULD BE TRACKED BY HOOK([SYSTEM REMINDER - TASK CONTINUATION])" : "YOUR TODO CREATION WOULD BE TRACKED BY HOOK([SYSTEM REMINDER - TODO CONTINUATION])";
|
|
116901
|
-
const agentIdentity = buildAgentIdentitySection("Sisyphus", "Powerful AI Agent with orchestration capabilities from OhMyOpenCode");
|
|
117125
|
+
const agentIdentity = buildAgentIdentitySection("Sisyphus", "Powerful AI Agent with orchestration capabilities from OhMyOpenCode", language);
|
|
116902
117126
|
return template.replace(/\$\{agentIdentity\}/g, agentIdentity).replace(/\$\{todoHookNote\}/g, todoHookNote).replace(/\$\{keyTriggers\}/g, keyTriggers).replace(/\$\{toolSelection\}/g, toolSelection).replace(/\$\{exploreSection\}/g, exploreSection).replace(/\$\{librarianSection\}/g, librarianSection).replace(/\$\{buildAntiDuplicationSection\(\)\}/g, buildAntiDuplicationSection()).replace(/\$\{categorySkillsGuide\}/g, categorySkillsGuide).replace(/\$\{nonClaudePlannerSection\}/g, nonClaudePlannerSection).replace(/\$\{parallelDelegationSection\}/g, parallelDelegationSection).replace(/\$\{delegationTable\}/g, delegationTable).replace(/\$\{oracleSection\}/g, oracleSection).replace(/\$\{taskManagementSection\}/g, taskManagementSection).replace(/\$\{hardBlocks\}/g, hardBlocks).replace(/\$\{antiPatterns\}/g, antiPatterns);
|
|
116903
117127
|
}
|
|
116904
117128
|
function buildDynamicSisyphusPrompt(model, availableAgents, availableTools = [], availableSkills = [], availableCategories = [], useTaskSystem = false) {
|
|
@@ -119562,7 +119786,13 @@ function getAtlasPromptSource(model) {
|
|
|
119562
119786
|
}
|
|
119563
119787
|
return "default";
|
|
119564
119788
|
}
|
|
119565
|
-
function getAtlasPrompt(model) {
|
|
119789
|
+
function getAtlasPrompt(model, language) {
|
|
119790
|
+
const isZh = language?.startsWith("zh");
|
|
119791
|
+
if (isZh) {
|
|
119792
|
+
const zhPrompt = loadPromptTemplate("zh", "atlas");
|
|
119793
|
+
if (zhPrompt)
|
|
119794
|
+
return zhPrompt;
|
|
119795
|
+
}
|
|
119566
119796
|
const source = getAtlasPromptSource(model);
|
|
119567
119797
|
switch (source) {
|
|
119568
119798
|
case "gpt":
|
|
@@ -119588,9 +119818,9 @@ function buildDynamicOrchestratorPrompt(ctx) {
|
|
|
119588
119818
|
const agentSection = buildAgentSelectionSection(agents);
|
|
119589
119819
|
const decisionMatrix = buildDecisionMatrix(agents, userCategories);
|
|
119590
119820
|
const skillsSection = buildSkillsSection2(skills2);
|
|
119591
|
-
const categorySkillsGuide = buildCategorySkillsDelegationGuide(availableCategories, skills2);
|
|
119592
|
-
const agentIdentity = buildAgentIdentitySection("Atlas", "Master Orchestrator agent from OhMyOpenCode that coordinates specialized agents to complete todo lists");
|
|
119593
|
-
const basePrompt = getAtlasPrompt(model);
|
|
119821
|
+
const categorySkillsGuide = buildCategorySkillsDelegationGuide(availableCategories, skills2, ctx?.language);
|
|
119822
|
+
const agentIdentity = buildAgentIdentitySection("Atlas", "Master Orchestrator agent from OhMyOpenCode that coordinates specialized agents to complete todo lists", ctx?.language);
|
|
119823
|
+
const basePrompt = getAtlasPrompt(model, ctx?.language);
|
|
119594
119824
|
return agentIdentity + `
|
|
119595
119825
|
` + basePrompt.replace("{CATEGORY_SECTION}", categorySection).replace("{AGENT_SECTION}", agentSection).replace("{DECISION_MATRIX}", decisionMatrix).replace("{SKILLS_SECTION}", skillsSection).replace("{{CATEGORY_SKILLS_DELEGATION_GUIDE}}", categorySkillsGuide);
|
|
119596
119826
|
}
|
|
@@ -122280,7 +122510,8 @@ function maybeCreateAtlasConfig(input) {
|
|
|
122280
122510
|
model: atlasModel,
|
|
122281
122511
|
availableAgents,
|
|
122282
122512
|
availableSkills,
|
|
122283
|
-
userCategories
|
|
122513
|
+
userCategories,
|
|
122514
|
+
language: orchestratorOverride?.language ?? language
|
|
122284
122515
|
});
|
|
122285
122516
|
if (atlasResolvedVariant) {
|
|
122286
122517
|
orchestratorConfig = { ...orchestratorConfig, variant: atlasResolvedVariant };
|
|
@@ -132237,7 +132468,7 @@ class PostHog extends PostHogBackendClient {
|
|
|
132237
132468
|
// package.json
|
|
132238
132469
|
var package_default = {
|
|
132239
132470
|
name: "@skj1724/oh-my-opencode",
|
|
132240
|
-
version: "3.18.
|
|
132471
|
+
version: "3.18.26",
|
|
132241
132472
|
description: "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
132242
132473
|
main: "./dist/index.js",
|
|
132243
132474
|
types: "dist/index.d.ts",
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export declare const PLUGIN_NAME = "@skj1724/oh-my-
|
|
2
|
-
export declare const LEGACY_PLUGIN_NAME = "@skj1724/oh-my-
|
|
1
|
+
export declare const PLUGIN_NAME = "@skj1724/oh-my-opencode";
|
|
2
|
+
export declare const LEGACY_PLUGIN_NAME = "@skj1724/oh-my-openagent";
|
|
3
3
|
export declare const PUBLISHED_PACKAGE_NAME = "@skj1724/oh-my-opencode";
|
|
4
|
-
export declare const ACCEPTED_PACKAGE_NAMES: readonly ["@skj1724/oh-my-opencode", "@skj1724/oh-my-
|
|
4
|
+
export declare const ACCEPTED_PACKAGE_NAMES: readonly ["@skj1724/oh-my-opencode", "@skj1724/oh-my-opencode"];
|
|
5
5
|
export declare const CONFIG_BASENAME = "oh-my-opencode";
|
|
6
6
|
export declare const LEGACY_CONFIG_BASENAME = "oh-my-opencode";
|
|
7
7
|
export declare const LOG_FILENAME = "oh-my-opencode.log";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@skj1724/oh-my-opencode",
|
|
3
|
-
"version": "3.18.
|
|
3
|
+
"version": "3.18.26",
|
|
4
4
|
"description": "The Best AI Agent Harness - Batteries-Included OpenCode Plugin with Multi-Model Orchestration, Parallel Background Agents, and Crafted LSP/AST Tools",
|
|
5
5
|
"main": "./dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
用中文进行深度思考
|
|
2
|
+
|
|
3
|
+
${agentIdentity}
|
|
4
|
+
<Role>
|
|
5
|
+
Sisyphus-Junior - 来自 OhMyOpenCode 的专注执行者。
|
|
6
|
+
直接执行任务。
|
|
7
|
+
</Role>
|
|
8
|
+
|
|
9
|
+
${buildAntiDuplicationSection()}
|
|
10
|
+
|
|
11
|
+
${todoDiscipline}
|
|
12
|
+
|
|
13
|
+
<Verification>
|
|
14
|
+
任务未完成除非:
|
|
15
|
+
- 更改文件的 lsp_diagnostics 为干净
|
|
16
|
+
- 构建通过(如果适用)
|
|
17
|
+
- ${verificationText}
|
|
18
|
+
</Verification>
|
|
19
|
+
|
|
20
|
+
<Termination>
|
|
21
|
+
首次成功验证后停止。不要重新验证。
|
|
22
|
+
最大状态检查次数:2。之后无论结果如何都停止。
|
|
23
|
+
</Termination>
|
|
24
|
+
|
|
25
|
+
<Style>
|
|
26
|
+
- 立即开始。不要确认。
|
|
27
|
+
- 匹配用户的沟通风格。
|
|
28
|
+
- 简洁 > 冗长。
|
|
29
|
+
</Style>
|