@skj1724/oh-my-opencode 3.19.1 → 3.19.3

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/index.js CHANGED
@@ -15416,6 +15416,7 @@ var META_TYPES = new Set(["step-start", "step-finish"]);
15416
15416
  var CONTENT_TYPES = new Set(["text", "tool", "tool_use", "tool_result"]);
15417
15417
 
15418
15418
  // src/hooks/session-recovery/storage.ts
15419
+ var nextRecoveryBlockId = 0;
15419
15420
  function generatePartId2() {
15420
15421
  const timestamp = Date.now().toString(16);
15421
15422
  const random = Math.random().toString(36).substring(2, 10);
@@ -15612,7 +15613,7 @@ function prependThinkingPart(sessionID, messageID) {
15612
15613
  mkdirSync2(partDir, { recursive: true });
15613
15614
  }
15614
15615
  const previousThinking = findLastThinkingContent(sessionID, messageID);
15615
- const partId = `prt_0000000000_thinking`;
15616
+ const partId = `prt_${++nextRecoveryBlockId}_thinking`;
15616
15617
  const part = {
15617
15618
  id: partId,
15618
15619
  sessionID,
@@ -20268,6 +20269,7 @@ function createInteractiveBashSessionHook(_ctx) {
20268
20269
  };
20269
20270
  }
20270
20271
  // src/hooks/thinking-block-validator/index.ts
20272
+ var nextThinkingBlockId = 0;
20271
20273
  function isExtendedThinkingModel(modelID) {
20272
20274
  if (!modelID)
20273
20275
  return false;
@@ -20317,7 +20319,7 @@ function prependThinkingBlock(message, thinkingContent) {
20317
20319
  }
20318
20320
  const thinkingPart = {
20319
20321
  type: "thinking",
20320
- id: `prt_0000000000_synthetic_thinking`,
20322
+ id: `prt_${++nextThinkingBlockId}_synthetic_thinking`,
20321
20323
  sessionID: message.info.sessionID || "",
20322
20324
  messageID: message.info.id,
20323
20325
  thinking: thinkingContent,
@@ -21431,12 +21433,12 @@ git log --oneline $(git merge-base HEAD main 2>/dev/null || git merge-base HEAD
21431
21433
 
21432
21434
  \`\`\`
21433
21435
  \u7EDF\u8BA1 git log -30 \u7684\u7ED3\u679C\uFF1A
21434
- - \u542B\u97E9\u6587\u5B57\u7B26\uFF1AN \u4E2A\u63D0\u4EA4
21436
+ - \u542B\u4E2D\u6587\u5B57\u7B26\uFF1AN \u4E2A\u63D0\u4EA4
21435
21437
  - \u4EC5\u82F1\u6587\uFF1AM \u4E2A\u63D0\u4EA4
21436
21438
  - \u6DF7\u5408\uFF1AK \u4E2A\u63D0\u4EA4
21437
21439
 
21438
21440
  \u51B3\u7B56\uFF1A
21439
- - \u5982\u679C\u97E9\u6587 >= 50% -> \u97E9\u6587
21441
+ - \u5982\u679C\u4E2D\u6587 >= 50% -> \u4E2D\u6587
21440
21442
  - \u5982\u679C\u82F1\u6587 >= 50% -> \u82F1\u6587
21441
21443
  - \u5982\u679C\u6DF7\u5408 -> \u4F7F\u7528\u591A\u6570\u8BED\u8A00
21442
21444
  \`\`\`
@@ -21471,8 +21473,8 @@ short_count = <=3 \u4E2A\u8BCD\u7684\u63D0\u4EA4
21471
21473
  ======================
21472
21474
  \u5206\u6790\u6765\u6E90\uFF1Agit log \u7684 30 \u6761\u63D0\u4EA4
21473
21475
 
21474
- \u8BED\u8A00\uFF1A[\u97E9\u6587 | \u82F1\u6587]
21475
- - \u97E9\u6587\u63D0\u4EA4\uFF1AN (X%)
21476
+ \u8BED\u8A00\uFF1A[\u4E2D\u6587 | \u82F1\u6587]
21477
+ - \u4E2D\u6587\u63D0\u4EA4\uFF1AN (X%)
21476
21478
  - \u82F1\u6587\u63D0\u4EA4\uFF1AM (Y%)
21477
21479
 
21478
21480
  \u98CE\u683C\uFF1A[SEMANTIC | PLAIN | SENTENCE | SHORT]
@@ -21827,15 +21829,9 @@ git log -1 --oneline
21827
21829
  **\u57FA\u4E8E\u9636\u6BB5 1 \u7684\u63D0\u4EA4\u914D\u7F6E\uFF1A**
21828
21830
 
21829
21831
  \`\`\`
21830
- \u5982\u679C\u98CE\u683C == SEMANTIC \u4E14\u8BED\u8A00 == \u97E9\u6587\uFF1A
21831
- -> "feat: \uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00"
21832
-
21833
21832
  \u5982\u679C\u98CE\u683C == SEMANTIC \u4E14\u8BED\u8A00 == \u82F1\u6587\uFF1A
21834
21833
  -> "feat: add login feature"
21835
21834
 
21836
- \u5982\u679C\u98CE\u683C == PLAIN \u4E14\u8BED\u8A00 == \u97E9\u6587\uFF1A
21837
- -> "\uB85C\uADF8\uC778 \uAE30\uB2A5 \uCD94\uAC00"
21838
-
21839
21835
  \u5982\u679C\u98CE\u683C == PLAIN \u4E14\u8BED\u8A00 == \u82F1\u6587\uFF1A
21840
21836
  -> "Add login feature"
21841
21837
 
@@ -40828,31 +40824,31 @@ var PART_STORAGE4 = join51(OPENCODE_STORAGE9, "part");
40828
40824
  var SESSION_STORAGE = join51(OPENCODE_STORAGE9, "session");
40829
40825
  var TODO_DIR2 = join51(getClaudeConfigDir(), "todos");
40830
40826
  var TRANSCRIPT_DIR2 = join51(getClaudeConfigDir(), "transcripts");
40831
- var SESSION_LIST_DESCRIPTION = `List all OpenCode sessions with optional filtering.
40827
+ var SESSION_LIST_DESCRIPTION = `\u5217\u51FA\u6240\u6709 OpenCode session\uFF0C\u652F\u6301\u53EF\u9009\u8FC7\u6EE4\u3002
40832
40828
 
40833
- Returns a list of available session IDs with metadata including message count, date range, and agents used.
40829
+ \u8FD4\u56DE\u53EF\u7528\u7684 session ID \u5217\u8868\uFF0C\u5305\u542B\u6D88\u606F\u6570\u91CF\u3001\u65E5\u671F\u8303\u56F4\u548C\u4F7F\u7528\u8FC7\u7684 agents \u7B49\u5143\u6570\u636E\u3002
40834
40830
 
40835
- Arguments:
40836
- - limit (optional): Maximum number of sessions to return
40837
- - from_date (optional): Filter sessions from this date (ISO 8601 format)
40838
- - to_date (optional): Filter sessions until this date (ISO 8601 format)
40831
+ \u53C2\u6570\uFF1A
40832
+ - limit\uFF08\u53EF\u9009\uFF09\uFF1A\u6700\u5927\u8FD4\u56DE session \u6570\u91CF
40833
+ - from_date\uFF08\u53EF\u9009\uFF09\uFF1A\u8FC7\u6EE4\u6B64\u65E5\u671F\u4E4B\u540E\u7684 session\uFF08ISO 8601 \u683C\u5F0F\uFF09
40834
+ - to_date\uFF08\u53EF\u9009\uFF09\uFF1A\u8FC7\u6EE4\u6B64\u65E5\u671F\u4E4B\u524D\u7684 session\uFF08ISO 8601 \u683C\u5F0F\uFF09
40839
40835
 
40840
- Example output:
40836
+ \u8F93\u51FA\u793A\u4F8B\uFF1A
40841
40837
  | Session ID | Messages | First | Last | Agents |
40842
40838
  |------------|----------|-------|------|--------|
40843
40839
  | ses_abc123 | 45 | 2025-12-20 | 2025-12-24 | build, oracle |
40844
40840
  | ses_def456 | 12 | 2025-12-19 | 2025-12-19 | build |`;
40845
- var SESSION_READ_DESCRIPTION = `Read messages and history from an OpenCode session.
40841
+ var SESSION_READ_DESCRIPTION = `\u8BFB\u53D6 OpenCode session \u4E2D\u7684\u6D88\u606F\u548C\u5386\u53F2\u8BB0\u5F55\u3002
40846
40842
 
40847
- Returns a formatted view of session messages with role, timestamp, and content. Optionally includes todos and transcript data.
40843
+ \u8FD4\u56DE\u683C\u5F0F\u5316\u7684 session \u6D88\u606F\u89C6\u56FE\uFF0C\u5305\u542B\u89D2\u8272\u3001\u65F6\u95F4\u6233\u548C\u5185\u5BB9\u3002\u53EF\u9009\u62E9\u5305\u542B todo \u548C transcript \u6570\u636E\u3002
40848
40844
 
40849
- Arguments:
40850
- - session_id (required): Session ID to read
40851
- - include_todos (optional): Include todo list if available (default: false)
40852
- - include_transcript (optional): Include transcript log if available (default: false)
40853
- - limit (optional): Maximum number of messages to return (default: all)
40845
+ \u53C2\u6570\uFF1A
40846
+ - session_id\uFF08\u5FC5\u586B\uFF09\uFF1A\u8981\u8BFB\u53D6\u7684 Session ID
40847
+ - include_todos\uFF08\u53EF\u9009\uFF09\uFF1A\u5305\u542B todo \u5217\u8868\uFF08\u5982\u679C\u6709\u7684\u8BDD\uFF09\uFF08\u9ED8\u8BA4\u503C: false\uFF09
40848
+ - include_transcript\uFF08\u53EF\u9009\uFF09\uFF1A\u5305\u542B transcript \u65E5\u5FD7\uFF08\u5982\u679C\u6709\u7684\u8BDD\uFF09\uFF08\u9ED8\u8BA4\u503C: false\uFF09
40849
+ - limit\uFF08\u53EF\u9009\uFF09\uFF1A\u6700\u5927\u8FD4\u56DE\u6D88\u606F\u6570\u91CF\uFF08\u9ED8\u8BA4\u503C: \u5168\u90E8\uFF09
40854
40850
 
40855
- Example output:
40851
+ \u8F93\u51FA\u793A\u4F8B\uFF1A
40856
40852
  Session: ses_abc123
40857
40853
  Messages: 45
40858
40854
  Date Range: 2025-12-20 to 2025-12-24
@@ -40862,18 +40858,18 @@ Hello, can you help me with...
40862
40858
 
40863
40859
  [Message 2] assistant (2025-12-20 10:30:15)
40864
40860
  Of course! Let me help you with...`;
40865
- var SESSION_SEARCH_DESCRIPTION = `Search for content within OpenCode session messages.
40861
+ var SESSION_SEARCH_DESCRIPTION = `\u5728 OpenCode session \u6D88\u606F\u4E2D\u641C\u7D22\u5185\u5BB9\u3002
40866
40862
 
40867
- Performs full-text search across session messages and returns matching excerpts with context.
40863
+ \u5BF9 session \u6D88\u606F\u6267\u884C\u5168\u6587\u641C\u7D22\uFF0C\u8FD4\u56DE\u5339\u914D\u7684\u6458\u8981\u53CA\u4E0A\u4E0B\u6587\u3002
40868
40864
 
40869
- Arguments:
40870
- - query (required): Search query string
40871
- - session_id (optional): Search within specific session only (default: all sessions)
40872
- - case_sensitive (optional): Case-sensitive search (default: false)
40873
- - limit (optional): Maximum number of results to return (default: 20)
40865
+ \u53C2\u6570\uFF1A
40866
+ - query\uFF08\u5FC5\u586B\uFF09\uFF1A\u641C\u7D22\u67E5\u8BE2\u5B57\u7B26\u4E32
40867
+ - session_id\uFF08\u53EF\u9009\uFF09\uFF1A\u4EC5\u5728\u6307\u5B9A session \u4E2D\u641C\u7D22\uFF08\u9ED8\u8BA4\u503C: \u5168\u90E8 session\uFF09
40868
+ - case_sensitive\uFF08\u53EF\u9009\uFF09\uFF1A\u533A\u5206\u5927\u5C0F\u5199\u641C\u7D22\uFF08\u9ED8\u8BA4\u503C: false\uFF09
40869
+ - limit\uFF08\u53EF\u9009\uFF09\uFF1A\u6700\u5927\u8FD4\u56DE\u7ED3\u679C\u6570\u91CF\uFF08\u9ED8\u8BA4\u503C: 20\uFF09
40874
40870
 
40875
- Example output:
40876
- Found 3 matches across 2 sessions:
40871
+ \u8F93\u51FA\u793A\u4F8B\uFF1A
40872
+ \u5728 2 \u4E2A session \u4E2D\u627E\u5230 3 \u6761\u5339\u914D\uFF1A
40877
40873
 
40878
40874
  [ses_abc123] Message msg_001 (user)
40879
40875
  ...implement the **session manager** tool...
@@ -40883,14 +40879,14 @@ Found 3 matches across 2 sessions:
40883
40879
 
40884
40880
  [ses_def456] Message msg_012 (user)
40885
40881
  ...use the **session manager** to find...`;
40886
- var SESSION_INFO_DESCRIPTION = `Get metadata and statistics about an OpenCode session.
40882
+ var SESSION_INFO_DESCRIPTION = `\u83B7\u53D6 OpenCode session \u7684\u5143\u6570\u636E\u548C\u7EDF\u8BA1\u4FE1\u606F\u3002
40887
40883
 
40888
- Returns detailed information about a session including message count, date range, agents used, and available data sources.
40884
+ \u8FD4\u56DE session \u7684\u8BE6\u7EC6\u4FE1\u606F\uFF0C\u5305\u62EC\u6D88\u606F\u6570\u91CF\u3001\u65E5\u671F\u8303\u56F4\u3001\u4F7F\u7528\u8FC7\u7684 agents \u548C\u53EF\u7528\u7684\u6570\u636E\u6E90\u3002
40889
40885
 
40890
- Arguments:
40891
- - session_id (required): Session ID to inspect
40886
+ \u53C2\u6570\uFF1A
40887
+ - session_id\uFF08\u5FC5\u586B\uFF09\uFF1A\u8981\u67E5\u770B\u7684 Session ID
40892
40888
 
40893
- Example output:
40889
+ \u8F93\u51FA\u793A\u4F8B\uFF1A
40894
40890
  Session ID: ses_abc123
40895
40891
  Messages: 45
40896
40892
  Date Range: 2025-12-20 10:30:00 to 2025-12-24 15:45:30
@@ -41562,11 +41558,11 @@ The Bash tool can execute these commands directly. Do NOT retry with interactive
41562
41558
  }
41563
41559
  });
41564
41560
  // src/tools/skill/constants.ts
41565
- var TOOL_DESCRIPTION_NO_SKILLS = "Load a skill to get detailed instructions for a specific task. No skills are currently available.";
41566
- var TOOL_DESCRIPTION_PREFIX2 = `Load a skill to get detailed instructions for a specific task.
41561
+ var TOOL_DESCRIPTION_NO_SKILLS = "\u52A0\u8F7D skill \u4EE5\u83B7\u53D6\u7279\u5B9A\u4EFB\u52A1\u7684\u8BE6\u7EC6\u8BF4\u660E\u3002\u5F53\u524D\u6CA1\u6709\u53EF\u7528\u7684 skills\u3002";
41562
+ var TOOL_DESCRIPTION_PREFIX2 = `\u52A0\u8F7D skill \u4EE5\u83B7\u53D6\u7279\u5B9A\u4EFB\u52A1\u7684\u8BE6\u7EC6\u8BF4\u660E\u3002
41567
41563
 
41568
- Skills provide specialized knowledge and step-by-step guidance.
41569
- Use this when a task matches an available skill's description.`;
41564
+ Skills \u63D0\u4F9B\u4E13\u4E1A\u77E5\u8BC6\u548C\u5206\u6B65\u6307\u5BFC\u3002
41565
+ \u5F53\u4EFB\u52A1\u4E0E\u53EF\u7528 skill \u7684\u63CF\u8FF0\u76F8\u5339\u914D\u65F6\u4F7F\u7528\u6B64\u5DE5\u5177\u3002`;
41570
41566
  // src/tools/skill/tools.ts
41571
41567
  import { dirname as dirname13 } from "path";
41572
41568
  function loadedSkillToInfo(skill) {
@@ -41738,7 +41734,7 @@ function createSkillTool(options = {}) {
41738
41734
  }
41739
41735
  var skill = createSkillTool();
41740
41736
  // src/tools/skill-mcp/constants.ts
41741
- var SKILL_MCP_DESCRIPTION = `Invoke MCP server operations from skill-embedded MCPs. Requires mcp_name plus exactly one of: tool_name, resource_name, or prompt_name.`;
41737
+ var SKILL_MCP_DESCRIPTION = `\u4ECE skill \u5D4C\u5165\u7684 MCP \u8C03\u7528 MCP server \u64CD\u4F5C\u3002\u9700\u8981 mcp_name \u5E76\u6070\u597D\u9009\u62E9\u4EE5\u4E0B\u4E4B\u4E00\uFF1Atool_name\u3001resource_name \u6216 prompt_name\u3002`;
41742
41738
  // src/tools/skill-mcp/tools.ts
41743
41739
  function validateOperationParams(args) {
41744
41740
  const operations = [];
@@ -41886,8 +41882,8 @@ function createSkillMcpTool(options) {
41886
41882
  });
41887
41883
  }
41888
41884
  // src/tools/background-task/constants.ts
41889
- var BACKGROUND_OUTPUT_DESCRIPTION = `Get output from background task. System notifies on completion, so block=true rarely needed.`;
41890
- var BACKGROUND_CANCEL_DESCRIPTION = `Cancel running background task(s). Use all=true to cancel ALL before final answer.`;
41885
+ var BACKGROUND_OUTPUT_DESCRIPTION = `\u83B7\u53D6\u540E\u53F0\u4EFB\u52A1\u7684\u8F93\u51FA\u3002\u7CFB\u7EDF\u5728\u4EFB\u52A1\u5B8C\u6210\u540E\u4F1A\u901A\u77E5\uFF0C\u56E0\u6B64 block=true \u5F88\u5C11\u9700\u8981\u3002`;
41886
+ var BACKGROUND_CANCEL_DESCRIPTION = `\u53D6\u6D88\u6B63\u5728\u8FD0\u884C\u7684\u540E\u53F0\u4EFB\u52A1\u3002\u4F7F\u7528 all=true \u53EF\u5728\u6700\u7EC8\u56DE\u7B54\u524D\u53D6\u6D88\u6240\u6709\u4EFB\u52A1\u3002`;
41891
41887
 
41892
41888
  // src/tools/background-task/tools.ts
41893
41889
  init_logger();
@@ -42217,11 +42213,11 @@ Status: ${task.status}`;
42217
42213
  }
42218
42214
  // src/tools/call-omo-agent/constants.ts
42219
42215
  var ALLOWED_AGENTS = ["explore", "librarian"];
42220
- var CALL_OMO_AGENT_DESCRIPTION = `Spawn explore/librarian agent. run_in_background REQUIRED (true=async with task_id, false=sync).
42216
+ var CALL_OMO_AGENT_DESCRIPTION = `\u542F\u52A8 explore/librarian agent\u3002run_in_background \u5FC5\u586B\uFF08true=\u5F02\u6B65\u8FD4\u56DE task_id\uFF0Cfalse=\u540C\u6B65\uFF09\u3002
42221
42217
 
42222
- Available: {agents}
42218
+ \u53EF\u7528\u7684 agent\uFF1A{agents}
42223
42219
 
42224
- Pass \`session_id=<id>\` to continue previous agent with full context. Prompts MUST be in English. Use \`background_output\` for async results.`;
42220
+ \u4F20\u5165 \`session_id=<id>\` \u53EF\u7EE7\u7EED\u4E4B\u524D\u7684 agent\uFF0C\u4FDD\u7559\u5B8C\u6574\u4E0A\u4E0B\u6587\u3002Prompts \u5FC5\u987B\u4E3A\u4E2D\u6587\u3002\u4F7F\u7528 \`background_output\` \u83B7\u53D6\u5F02\u6B65\u7ED3\u679C\u3002`;
42225
42221
  // src/tools/call-omo-agent/tools.ts
42226
42222
  import { existsSync as existsSync44, readdirSync as readdirSync14 } from "fs";
42227
42223
  import { join as join53 } from "path";
@@ -42241,29 +42237,29 @@ function getMessageDir8(sessionID) {
42241
42237
  return null;
42242
42238
  }
42243
42239
  function createCallOmoAgent(ctx, backgroundManager) {
42244
- const agentDescriptions = ALLOWED_AGENTS.map((name) => `- ${name}: Specialized agent for ${name} tasks`).join(`
42240
+ const agentDescriptions = ALLOWED_AGENTS.map((name) => `- ${name}\uFF1A\u4E13\u95E8\u5904\u7406 ${name} \u4EFB\u52A1\u7684 agent`).join(`
42245
42241
  `);
42246
42242
  const description = CALL_OMO_AGENT_DESCRIPTION.replace("{agents}", agentDescriptions);
42247
42243
  return tool({
42248
42244
  description,
42249
42245
  args: {
42250
- description: tool.schema.string().describe("A short (3-5 words) description of the task"),
42251
- prompt: tool.schema.string().describe("The task for the agent to perform"),
42252
- subagent_type: tool.schema.string().describe("The type of specialized agent to use for this task (explore or librarian only)"),
42253
- run_in_background: tool.schema.boolean().describe("REQUIRED. true: run asynchronously (use background_output to get results), false: run synchronously and wait for completion"),
42254
- session_id: tool.schema.string().describe("Existing Task session to continue").optional()
42246
+ description: tool.schema.string().describe("\u4EFB\u52A1\u7684\u7B80\u77ED\u63CF\u8FF0\uFF083-5 \u4E2A\u8BCD\uFF09"),
42247
+ prompt: tool.schema.string().describe("agent \u9700\u8981\u6267\u884C\u7684\u4EFB\u52A1"),
42248
+ subagent_type: tool.schema.string().describe("\u6B64\u4EFB\u52A1\u4F7F\u7528\u7684\u4E13\u4E1A agent \u7C7B\u578B\uFF08\u4EC5\u652F\u6301 explore \u6216 librarian\uFF09"),
42249
+ run_in_background: tool.schema.boolean().describe("\u5FC5\u586B\u3002true\uFF1A\u5F02\u6B65\u8FD0\u884C\uFF08\u4F7F\u7528 background_output \u83B7\u53D6\u7ED3\u679C\uFF09\uFF0Cfalse\uFF1A\u540C\u6B65\u8FD0\u884C\u5E76\u7B49\u5F85\u5B8C\u6210"),
42250
+ session_id: tool.schema.string().describe("\u8981\u7EE7\u7EED\u7684\u73B0\u6709 Task session").optional()
42255
42251
  },
42256
42252
  async execute(args, toolContext) {
42257
42253
  const toolCtx = toolContext;
42258
42254
  log(`[call_omo_agent] Starting with agent: ${args.subagent_type}, background: ${args.run_in_background}`);
42259
42255
  if (!includesCaseInsensitive([...ALLOWED_AGENTS], args.subagent_type)) {
42260
- return `Error: Invalid agent type "${args.subagent_type}". Only ${ALLOWED_AGENTS.join(", ")} are allowed.`;
42256
+ return `\u9519\u8BEF\uFF1A\u65E0\u6548\u7684 agent \u7C7B\u578B"${args.subagent_type}"\u3002\u4EC5\u5141\u8BB8 ${ALLOWED_AGENTS.join("\u3001")}\u3002`;
42261
42257
  }
42262
42258
  const normalizedAgent = args.subagent_type.toLowerCase();
42263
42259
  args = { ...args, subagent_type: normalizedAgent };
42264
42260
  if (args.run_in_background) {
42265
42261
  if (args.session_id) {
42266
- return `Error: session_id is not supported in background mode. Use run_in_background=false to continue an existing session.`;
42262
+ return `\u9519\u8BEF\uFF1A\u540E\u53F0\u6A21\u5F0F\u4E0D\u652F\u6301 session_id\u3002\u8BF7\u4F7F\u7528 run_in_background=false \u7EE7\u7EED\u73B0\u6709 session\u3002`;
42267
42263
  }
42268
42264
  return await executeBackground(args, toolCtx, backgroundManager);
42269
42265
  }
@@ -42299,7 +42295,7 @@ async function executeBackground(args, toolContext, manager) {
42299
42295
  title: args.description,
42300
42296
  metadata: { sessionId: task.sessionID }
42301
42297
  });
42302
- return `Background agent task launched successfully.
42298
+ return `\u540E\u53F0 agent \u4EFB\u52A1\u5DF2\u6210\u529F\u542F\u52A8\u3002
42303
42299
 
42304
42300
  Task ID: ${task.id}
42305
42301
  Session ID: ${task.sessionID}
@@ -42307,13 +42303,13 @@ Description: ${task.description}
42307
42303
  Agent: ${task.agent} (subagent)
42308
42304
  Status: ${task.status}
42309
42305
 
42310
- The system will notify you when the task completes.
42311
- Use \`background_output\` tool with task_id="${task.id}" to check progress:
42312
- - block=false (default): Check status immediately - returns full status info
42313
- - block=true: Wait for completion (rarely needed since system notifies)`;
42306
+ \u4EFB\u52A1\u5B8C\u6210\u540E\u7CFB\u7EDF\u4F1A\u901A\u77E5\u4F60\u3002
42307
+ \u4F7F\u7528 \`background_output\` \u5DE5\u5177\u5E76\u4F20\u5165 task_id="${task.id}" \u6765\u67E5\u770B\u8FDB\u5EA6\uFF1A
42308
+ - block=false\uFF08\u9ED8\u8BA4\uFF09\uFF1A\u7ACB\u5373\u68C0\u67E5\u72B6\u6001 \u2014 \u8FD4\u56DE\u5B8C\u6574\u7684\u8FDB\u5EA6\u4FE1\u606F
42309
+ - block=true\uFF1A\u7B49\u5F85\u5B8C\u6210\uFF08\u7531\u4E8E\u7CFB\u7EDF\u4F1A\u81EA\u52A8\u901A\u77E5\uFF0C\u901A\u5E38\u4E0D\u9700\u8981\uFF09`;
42314
42310
  } catch (error45) {
42315
42311
  const message = error45 instanceof Error ? error45.message : String(error45);
42316
- return `Failed to launch background agent task: ${message}`;
42312
+ return `\u542F\u52A8\u540E\u53F0 agent \u4EFB\u52A1\u5931\u8D25\uFF1A${message}`;
42317
42313
  }
42318
42314
  }
42319
42315
  async function executeSync(args, toolContext, ctx) {
@@ -42325,7 +42321,7 @@ async function executeSync(args, toolContext, ctx) {
42325
42321
  });
42326
42322
  if (sessionResult.error) {
42327
42323
  log(`[call_omo_agent] Session get error:`, sessionResult.error);
42328
- return `Error: Failed to get existing session: ${sessionResult.error}`;
42324
+ return `\u9519\u8BEF\uFF1A\u83B7\u53D6\u73B0\u6709 session \u5931\u8D25\uFF1A${sessionResult.error}`;
42329
42325
  }
42330
42326
  sessionID = args.session_id;
42331
42327
  } else {
@@ -42349,7 +42345,7 @@ async function executeSync(args, toolContext, ctx) {
42349
42345
  });
42350
42346
  if (createResult.error) {
42351
42347
  log(`[call_omo_agent] Session create error:`, createResult.error);
42352
- return `Error: Failed to create session: ${createResult.error}`;
42348
+ return `\u9519\u8BEF\uFF1A\u521B\u5EFA session \u5931\u8D25\uFF1A${createResult.error}`;
42353
42349
  }
42354
42350
  sessionID = createResult.data.id;
42355
42351
  log(`[call_omo_agent] Created session: ${sessionID}`);
@@ -42377,13 +42373,13 @@ async function executeSync(args, toolContext, ctx) {
42377
42373
  const errorMessage = error45 instanceof Error ? error45.message : String(error45);
42378
42374
  log(`[call_omo_agent] Prompt error:`, errorMessage);
42379
42375
  if (errorMessage.includes("agent.name") || errorMessage.includes("undefined")) {
42380
- return `Error: Agent "${args.subagent_type}" not found. Make sure the agent is registered in your opencode.json or provided by a plugin.
42376
+ return `\u9519\u8BEF\uFF1AAgent "${args.subagent_type}" \u672A\u627E\u5230\u3002\u8BF7\u786E\u8BA4\u8BE5 agent \u5DF2\u5728 opencode.json \u4E2D\u6CE8\u518C\u6216\u7531\u63D2\u4EF6\u63D0\u4F9B\u3002
42381
42377
 
42382
42378
  <task_metadata>
42383
42379
  session_id: ${sessionID}
42384
42380
  </task_metadata>`;
42385
42381
  }
42386
- return `Error: Failed to send prompt: ${errorMessage}
42382
+ return `\u9519\u8BEF\uFF1A\u53D1\u9001 prompt \u5931\u8D25\uFF1A${errorMessage}
42387
42383
 
42388
42384
  <task_metadata>
42389
42385
  session_id: ${sessionID}
@@ -42399,7 +42395,7 @@ session_id: ${sessionID}
42399
42395
  while (Date.now() - pollStart < MAX_POLL_TIME_MS) {
42400
42396
  if (toolContext.abort?.aborted) {
42401
42397
  log(`[call_omo_agent] Aborted by user`);
42402
- return `Task aborted.
42398
+ return `\u4EFB\u52A1\u5DF2\u4E2D\u6B62\u3002
42403
42399
 
42404
42400
  <task_metadata>
42405
42401
  session_id: ${sessionID}
@@ -42430,7 +42426,7 @@ session_id: ${sessionID}
42430
42426
  }
42431
42427
  if (Date.now() - pollStart >= MAX_POLL_TIME_MS) {
42432
42428
  log(`[call_omo_agent] Timeout reached`);
42433
- return `Error: Agent task timed out after 5 minutes.
42429
+ return `\u9519\u8BEF\uFF1AAgent \u4EFB\u52A1\u5728 5 \u5206\u949F\u540E\u8D85\u65F6\u3002
42434
42430
 
42435
42431
  <task_metadata>
42436
42432
  session_id: ${sessionID}
@@ -42441,7 +42437,7 @@ session_id: ${sessionID}
42441
42437
  });
42442
42438
  if (messagesResult.error) {
42443
42439
  log(`[call_omo_agent] Messages error:`, messagesResult.error);
42444
- return `Error: Failed to get messages: ${messagesResult.error}`;
42440
+ return `\u9519\u8BEF\uFF1A\u83B7\u53D6\u6D88\u606F\u5931\u8D25\uFF1A${messagesResult.error}`;
42445
42441
  }
42446
42442
  const messages = messagesResult.data;
42447
42443
  log(`[call_omo_agent] Got ${messages.length} messages`);
@@ -42449,7 +42445,7 @@ session_id: ${sessionID}
42449
42445
  if (relevantMessages.length === 0) {
42450
42446
  log(`[call_omo_agent] No assistant or tool messages found`);
42451
42447
  log(`[call_omo_agent] All messages:`, JSON.stringify(messages, null, 2));
42452
- return `Error: No assistant or tool response found
42448
+ return `\u9519\u8BEF\uFF1A\u672A\u627E\u5230 assistant \u6216 tool \u7684\u54CD\u5E94
42453
42449
 
42454
42450
  <task_metadata>
42455
42451
  session_id: ${sessionID}
@@ -42463,7 +42459,7 @@ session_id: ${sessionID}
42463
42459
  });
42464
42460
  const newMessages = consumeNewMessages(sessionID, sortedMessages);
42465
42461
  if (newMessages.length === 0) {
42466
- return `No new output since last check.
42462
+ return `\u81EA\u4E0A\u6B21\u68C0\u67E5\u4EE5\u6765\u65E0\u65B0\u8F93\u51FA\u3002
42467
42463
 
42468
42464
  <task_metadata>
42469
42465
  session_id: ${sessionID}
@@ -42841,9 +42837,9 @@ function formatDetailedError(error45, ctx) {
42841
42837
  const message = error45 instanceof Error ? error45.message : String(error45);
42842
42838
  const stack = error45 instanceof Error ? error45.stack : undefined;
42843
42839
  const lines = [
42844
- `${ctx.operation} failed`,
42840
+ `${ctx.operation} \u5931\u8D25`,
42845
42841
  "",
42846
- `**Error**: ${message}`
42842
+ `**\u9519\u8BEF**: ${message}`
42847
42843
  ];
42848
42844
  if (ctx.sessionID) {
42849
42845
  lines.push(`**Session ID**: ${ctx.sessionID}`);
@@ -42852,10 +42848,10 @@ function formatDetailedError(error45, ctx) {
42852
42848
  lines.push(`**Agent**: ${ctx.agent}${ctx.category ? ` (category: ${ctx.category})` : ""}`);
42853
42849
  }
42854
42850
  if (ctx.args) {
42855
- lines.push("", "**Arguments**:");
42851
+ lines.push("", "**\u53C2\u6570**:");
42856
42852
  lines.push(`- description: "${ctx.args.description}"`);
42857
- lines.push(`- category: ${ctx.args.category ?? "(none)"}`);
42858
- lines.push(`- subagent_type: ${ctx.args.subagent_type ?? "(none)"}`);
42853
+ lines.push(`- category: ${ctx.args.category ?? "(\u65E0)"}`);
42854
+ lines.push(`- subagent_type: ${ctx.args.subagent_type ?? "(\u65E0)"}`);
42859
42855
  lines.push(`- run_in_background: ${ctx.args.run_in_background}`);
42860
42856
  lines.push(`- load_skills: [${ctx.args.load_skills?.join(", ") ?? ""}]`);
42861
42857
  if (ctx.args.session_id) {
@@ -42863,7 +42859,7 @@ function formatDetailedError(error45, ctx) {
42863
42859
  }
42864
42860
  }
42865
42861
  if (stack) {
42866
- lines.push("", "**Stack Trace**:");
42862
+ lines.push("", "**\u5806\u6808\u8DDF\u8E2A**:");
42867
42863
  lines.push("```");
42868
42864
  lines.push(stack.split(`
42869
42865
  `).slice(0, 10).join(`
@@ -42924,47 +42920,47 @@ function createDelegateTask(options) {
42924
42920
  return desc ? ` - ${name}: ${desc}` : ` - ${name}`;
42925
42921
  }).join(`
42926
42922
  `);
42927
- const description = `Spawn agent task with category-based or direct agent selection.
42923
+ const description = `\u542F\u52A8\u5E26\u6709\u5206\u7C7B\u6216\u76F4\u63A5\u6307\u5B9A agent \u7684\u4EFB\u52A1\u3002
42928
42924
 
42929
- MUTUALLY EXCLUSIVE: Provide EITHER category OR subagent_type, not both (unless continuing a session).
42925
+ \u4E92\u65A5\u53C2\u6570\uFF1A\u63D0\u4F9B category \u6216 subagent_type \u4E4B\u4E00\uFF0C\u4E24\u8005\u4E0D\u53EF\u540C\u65F6\u63D0\u4F9B\uFF08\u7EE7\u7EED session \u65F6\u9664\u5916\uFF09\u3002
42930
42926
 
42931
- - load_skills: ALWAYS REQUIRED. Pass at least one skill name (e.g., ["playwright"], ["git-master", "frontend-ui-ux"]).
42932
- - category: Use predefined category \u2192 Spawns Sisyphus-Junior with category config
42933
- Available categories:
42927
+ - load_skills: \u59CB\u7EC8\u5FC5\u586B\u3002\u4F20\u5165\u81F3\u5C11\u4E00\u4E2A skill \u540D\u79F0\uFF08\u4F8B\u5982 ["playwright"]\u3001["git-master", "frontend-ui-ux"]\uFF09\u3002
42928
+ - category: \u4F7F\u7528\u9884\u5B9A\u4E49\u5206\u7C7B \u2192 \u4F7F\u7528\u5206\u7C7B\u914D\u7F6E\u542F\u52A8 Sisyphus-Junior
42929
+ \u53EF\u7528\u5206\u7C7B\uFF1A
42934
42930
  ${categoryList}
42935
- - subagent_type: Use specific agent directly (e.g., "oracle", "explore")
42936
- - run_in_background: true=async (returns task_id), false=sync (waits for result). Default: false. Use background=true ONLY for parallel exploration with 5+ independent queries.
42937
- - session_id: Existing Task session to continue (from previous task output). Continues agent with FULL CONTEXT PRESERVED - saves tokens, maintains continuity.
42938
- - command: The command that triggered this task (optional, for slash command tracking).
42931
+ - subagent_type: \u76F4\u63A5\u4F7F\u7528\u6307\u5B9A\u7684 agent\uFF08\u4F8B\u5982 "oracle"\u3001"explore"\uFF09
42932
+ - run_in_background: true=\u5F02\u6B65\uFF08\u8FD4\u56DE task_id\uFF09\uFF0Cfalse=\u540C\u6B65\uFF08\u7B49\u5F85\u7ED3\u679C\uFF09\u3002\u9ED8\u8BA4\u503C: false\u3002\u4EC5\u5728\u5E76\u884C\u63A2\u7D22 5+ \u4E2A\u72EC\u7ACB\u67E5\u8BE2\u65F6\u4F7F\u7528 background=true\u3002
42933
+ - session_id: \u8981\u7EE7\u7EED\u7684\u73B0\u6709 Task session\uFF08\u6765\u81EA\u4E4B\u524D\u4EFB\u52A1\u7684\u8F93\u51FA\uFF09\u3002\u7EE7\u7EED\u540E\u4FDD\u7559\u5B8C\u6574\u4E0A\u4E0B\u6587 \u2014 \u8282\u7701 token\uFF0C\u4FDD\u6301\u8FDE\u7EED\u6027\u3002
42934
+ - command: \u89E6\u53D1\u6B64\u4EFB\u52A1\u7684\u547D\u4EE4\uFF08\u53EF\u9009\uFF0C\u7528\u4E8E\u659C\u6760\u547D\u4EE4\u8FFD\u8E2A\uFF09\u3002
42939
42935
 
42940
- **WHEN TO USE session_id:**
42941
- - Task failed/incomplete \u2192 session_id with "fix: [specific issue]"
42942
- - Need follow-up on previous result \u2192 session_id with additional question
42943
- - Multi-turn conversation with same agent \u2192 always session_id instead of new task
42936
+ **\u4F55\u65F6\u4F7F\u7528 session_id\uFF1A**
42937
+ - \u4EFB\u52A1\u5931\u8D25/\u672A\u5B8C\u6210 \u2192 \u4F7F\u7528 session_id \u914D\u5408 "fix: [\u5177\u4F53\u95EE\u9898]"
42938
+ - \u9700\u8981\u5728\u4E4B\u524D\u7ED3\u679C\u4E0A\u7EE7\u7EED \u2192 \u4F7F\u7528 session_id \u8FFD\u52A0\u95EE\u9898
42939
+ - \u4E0E\u540C\u4E00 agent \u591A\u8F6E\u5BF9\u8BDD \u2192 \u59CB\u7EC8\u4F7F\u7528 session_id \u800C\u975E\u65B0\u5EFA\u4EFB\u52A1
42944
42940
 
42945
- Prompts MUST be in English.`;
42941
+ Prompts \u5FC5\u987B\u4E3A\u4E2D\u6587\u3002`;
42946
42942
  return tool({
42947
42943
  description,
42948
42944
  args: {
42949
- load_skills: tool.schema.array(tool.schema.string()).describe('Skill names to inject. REQUIRED - pass [] if no skills needed, but IT IS HIGHLY RECOMMENDED to pass proper skills like ["playwright"], ["git-master"] for best results.'),
42950
- description: tool.schema.string().describe("Short task description (3-5 words)"),
42951
- prompt: tool.schema.string().describe("Full detailed prompt for the agent"),
42952
- run_in_background: tool.schema.boolean().describe("true=async (returns task_id), false=sync (waits). Default: false"),
42953
- category: tool.schema.string().optional().describe(`Category (e.g., ${categoryExamples}). Mutually exclusive with subagent_type.`),
42954
- subagent_type: tool.schema.string().optional().describe("Agent name (e.g., 'oracle', 'explore'). Mutually exclusive with category."),
42955
- session_id: tool.schema.string().optional().describe("Existing Task session to continue"),
42956
- command: tool.schema.string().optional().describe("The command that triggered this task")
42945
+ load_skills: tool.schema.array(tool.schema.string()).describe('\u8981\u6CE8\u5165\u7684 Skill \u540D\u79F0\u3002\u5FC5\u586B \u2014 \u5982\u65E0\u9700 skills \u4F20\u5165 []\uFF0C\u4F46\u5F3A\u70C8\u5EFA\u8BAE\u4F20\u5165\u6B63\u786E\u7684 skills \u5982 ["playwright"]\u3001["git-master"] \u4EE5\u83B7\u5F97\u6700\u4F73\u6548\u679C\u3002'),
42946
+ description: tool.schema.string().describe("\u4EFB\u52A1\u7B80\u77ED\u63CF\u8FF0\uFF083-5 \u4E2A\u8BCD\uFF09"),
42947
+ prompt: tool.schema.string().describe("agent \u7684\u5B8C\u6574\u8BE6\u7EC6 prompt"),
42948
+ run_in_background: tool.schema.boolean().describe("true=\u5F02\u6B65\uFF08\u8FD4\u56DE task_id\uFF09\uFF0Cfalse=\u540C\u6B65\uFF08\u7B49\u5F85\uFF09\u3002\u9ED8\u8BA4\u503C: false"),
42949
+ category: tool.schema.string().optional().describe(`\u5206\u7C7B\uFF08\u4F8B\u5982 ${categoryExamples}\uFF09\u3002\u4E0E subagent_type \u4E92\u65A5\u3002`),
42950
+ subagent_type: tool.schema.string().optional().describe("Agent \u540D\u79F0\uFF08\u4F8B\u5982 'oracle'\u3001'explore'\uFF09\u3002\u4E0E category \u4E92\u65A5\u3002"),
42951
+ session_id: tool.schema.string().optional().describe("\u8981\u7EE7\u7EED\u7684\u73B0\u6709 Task session"),
42952
+ command: tool.schema.string().optional().describe("\u89E6\u53D1\u6B64\u4EFB\u52A1\u7684\u547D\u4EE4")
42957
42953
  },
42958
42954
  async execute(args, toolContext) {
42959
42955
  const ctx = toolContext;
42960
42956
  if (args.run_in_background === undefined) {
42961
- throw new Error(`Invalid arguments: 'run_in_background' parameter is REQUIRED. Use run_in_background=false for task delegation, run_in_background=true only for parallel exploration.`);
42957
+ throw new Error(`\u53C2\u6570\u9519\u8BEF\uFF1A'run_in_background' \u53C2\u6570\u5FC5\u586B\u3002\u4EFB\u52A1\u59D4\u6258\u4F7F\u7528 run_in_background=false\uFF0C\u4EC5\u5728\u5E76\u884C\u63A2\u7D22\u65F6\u4F7F\u7528 run_in_background=true\u3002`);
42962
42958
  }
42963
42959
  if (args.load_skills === undefined) {
42964
- throw new Error(`Invalid arguments: 'load_skills' parameter is REQUIRED. Pass [] if no skills needed, but IT IS HIGHLY RECOMMENDED to pass proper skills like ["playwright"], ["git-master"] for best results.`);
42960
+ throw new Error(`\u53C2\u6570\u9519\u8BEF\uFF1A'load_skills' \u53C2\u6570\u5FC5\u586B\u3002\u5982\u65E0\u9700 skills \u4F20\u5165 []\uFF0C\u4F46\u5F3A\u70C8\u5EFA\u8BAE\u4F20\u5165\u6B63\u786E\u7684 skills \u5982 ["playwright"]\u3001["git-master"] \u4EE5\u83B7\u5F97\u6700\u4F73\u6548\u679C\u3002`);
42965
42961
  }
42966
42962
  if (args.load_skills === null) {
42967
- throw new Error(`Invalid arguments: load_skills=null is not allowed. Pass [] if no skills needed, but IT IS HIGHLY RECOMMENDED to pass proper skills.`);
42963
+ throw new Error(`\u53C2\u6570\u9519\u8BEF\uFF1A\u4E0D\u5141\u8BB8 load_skills=null\u3002\u5982\u65E0\u9700 skills \u4F20\u5165 []\uFF0C\u4F46\u5F3A\u70C8\u5EFA\u8BAE\u4F20\u5165\u6B63\u786E\u7684 skills\u3002`);
42968
42964
  }
42969
42965
  const runInBackground = args.run_in_background === true;
42970
42966
  let skillContent;
@@ -43017,7 +43013,7 @@ Prompts MUST be in English.`;
43017
43013
  command: args.command
43018
43014
  }
43019
43015
  });
43020
- return `Background task continued.
43016
+ return `\u540E\u53F0\u4EFB\u52A1\u5DF2\u7EE7\u7EED\u3002
43021
43017
 
43022
43018
  Task ID: ${task.id}
43023
43019
  Session ID: ${task.sessionID}
@@ -43025,11 +43021,11 @@ Description: ${task.description}
43025
43021
  Agent: ${task.agent}
43026
43022
  Status: ${task.status}
43027
43023
 
43028
- Agent continues with full previous context preserved.
43029
- Use \`background_output\` with task_id="${task.id}" to check progress.`;
43024
+ Agent \u7EE7\u7EED\u6267\u884C\uFF0C\u4FDD\u7559\u5B8C\u6574\u4E0A\u4E0B\u6587\u3002
43025
+ \u4F7F\u7528 \`background_output\` \u5E76\u4F20\u5165 task_id="${task.id}" \u67E5\u770B\u8FDB\u5EA6\u3002`;
43030
43026
  } catch (error45) {
43031
43027
  return formatDetailedError(error45, {
43032
- operation: "Continue background task",
43028
+ operation: "\u7EE7\u7EED\u540E\u53F0\u4EFB\u52A1",
43033
43029
  args,
43034
43030
  sessionID: args.session_id
43035
43031
  });
@@ -43097,7 +43093,7 @@ Use \`background_output\` with task_id="${task.id}" to check progress.`;
43097
43093
  toastManager2.removeTask(taskId2);
43098
43094
  }
43099
43095
  const errorMessage = promptError instanceof Error ? promptError.message : String(promptError);
43100
- return `Failed to send continuation prompt: ${errorMessage}
43096
+ return `\u53D1\u9001\u7EE7\u7EED prompt \u5931\u8D25\uFF1A${errorMessage}
43101
43097
 
43102
43098
  Session ID: ${args.session_id}`;
43103
43099
  }
@@ -43131,7 +43127,7 @@ Session ID: ${args.session_id}`;
43131
43127
  if (toastManager2) {
43132
43128
  toastManager2.removeTask(taskId2);
43133
43129
  }
43134
- return `Error fetching result: ${messagesResult.error}
43130
+ return `\u83B7\u53D6\u7ED3\u679C\u51FA\u9519\uFF1A${messagesResult.error}
43135
43131
 
43136
43132
  Session ID: ${args.session_id}`;
43137
43133
  }
@@ -43142,7 +43138,7 @@ Session ID: ${args.session_id}`;
43142
43138
  toastManager2.removeTask(taskId2);
43143
43139
  }
43144
43140
  if (!lastMessage) {
43145
- return `No assistant response found.
43141
+ return `\u672A\u627E\u5230 assistant \u7684\u54CD\u5E94\u3002
43146
43142
 
43147
43143
  Session ID: ${args.session_id}`;
43148
43144
  }
@@ -43150,22 +43146,22 @@ Session ID: ${args.session_id}`;
43150
43146
  const textContent = textParts.map((p) => p.text ?? "").filter(Boolean).join(`
43151
43147
  `);
43152
43148
  const duration3 = formatDuration2(startTime);
43153
- return `Task continued and completed in ${duration3}.
43149
+ return `\u4EFB\u52A1\u5DF2\u7EE7\u7EED\u5E76\u5728 ${duration3} \u5185\u5B8C\u6210\u3002
43154
43150
 
43155
43151
  Session ID: ${args.session_id}
43156
43152
 
43157
43153
  ---
43158
43154
 
43159
- ${textContent || "(No text output)"}
43155
+ ${textContent || "(\u65E0\u6587\u672C\u8F93\u51FA)"}
43160
43156
 
43161
43157
  ---
43162
- To continue this session: session_id="${args.session_id}"`;
43158
+ \u7EE7\u7EED\u6B64 session\uFF1Asession_id="${args.session_id}"`;
43163
43159
  }
43164
43160
  if (args.category && args.subagent_type) {
43165
- return `Invalid arguments: Provide EITHER category OR subagent_type, not both.`;
43161
+ return `\u53C2\u6570\u9519\u8BEF\uFF1A\u8BF7\u63D0\u4F9B category \u6216 subagent_type \u4E4B\u4E00\uFF0C\u4E24\u8005\u4E0D\u53EF\u540C\u65F6\u63D0\u4F9B\u3002`;
43166
43162
  }
43167
43163
  if (!args.category && !args.subagent_type) {
43168
- return `Invalid arguments: Must provide either category or subagent_type.`;
43164
+ return `\u53C2\u6570\u9519\u8BEF\uFF1A\u5FC5\u987B\u63D0\u4F9B category \u6216 subagent_type\u3002`;
43169
43165
  }
43170
43166
  let systemDefaultModel;
43171
43167
  try {
@@ -43182,13 +43178,13 @@ To continue this session: session_id="${args.session_id}"`;
43182
43178
  if (args.category) {
43183
43179
  if (!systemDefaultModel) {
43184
43180
  const paths = getOpenCodeConfigPaths({ binary: "opencode", version: null });
43185
- return `oh-my-opencode requires a default model.
43181
+ return `oh-my-opencode \u9700\u8981\u914D\u7F6E\u9ED8\u8BA4\u6A21\u578B\u3002
43186
43182
 
43187
- ` + `Add this to ${paths.configJsonc}:
43183
+ ` + `\u8BF7\u5C06\u6B64\u6DFB\u52A0\u5230 ${paths.configJsonc}\uFF1A
43188
43184
 
43189
43185
  ` + ` "model": "anthropic/claude-sonnet-4-5"
43190
43186
 
43191
- ` + "(Replace with your preferred provider/model)";
43187
+ ` + "\uFF08\u66FF\u6362\u4E3A\u4F60\u504F\u597D\u7684 provider/model\uFF09";
43192
43188
  }
43193
43189
  const availableModels = await fetchAvailableModels(client2);
43194
43190
  const resolved = resolveCategoryConfig(args.category, {
@@ -43197,7 +43193,7 @@ To continue this session: session_id="${args.session_id}"`;
43197
43193
  systemDefaultModel
43198
43194
  });
43199
43195
  if (!resolved) {
43200
- return `Unknown category: "${args.category}". Available: ${Object.keys({ ...DEFAULT_CATEGORIES, ...userCategories }).join(", ")}`;
43196
+ return `\u672A\u77E5\u7684\u5206\u7C7B\uFF1A"${args.category}"\u3002\u53EF\u7528\u7684\u5206\u7C7B\uFF1A${Object.keys({ ...DEFAULT_CATEGORIES, ...userCategories }).join(", ")}`;
43201
43197
  }
43202
43198
  const requirement = CATEGORY_MODEL_REQUIREMENTS[args.category];
43203
43199
  let actualModel;
@@ -43213,7 +43209,7 @@ To continue this session: session_id="${args.session_id}"`;
43213
43209
  });
43214
43210
  actualModel = resolvedModel;
43215
43211
  if (!parseModelString(actualModel)) {
43216
- return `Invalid model format "${actualModel}". Expected "provider/model" format (e.g., "anthropic/claude-sonnet-4-5").`;
43212
+ return `\u65E0\u6548\u7684\u6A21\u578B\u683C\u5F0F"${actualModel}"\u3002\u671F\u671B"provider/model"\u683C\u5F0F\uFF08\u4F8B\u5982 "anthropic/claude-sonnet-4-5"\uFF09\u3002`;
43217
43213
  }
43218
43214
  let type2;
43219
43215
  switch (source) {
@@ -43269,7 +43265,7 @@ To continue this session: session_id="${args.session_id}"`;
43269
43265
  const waitStart = Date.now();
43270
43266
  while (!task.sessionID && Date.now() - waitStart < WAIT_FOR_SESSION_TIMEOUT_MS) {
43271
43267
  if (ctx.abort?.aborted) {
43272
- return `Task aborted while waiting for session to start.
43268
+ return `\u7B49\u5F85 session \u542F\u52A8\u65F6\u88AB\u4E2D\u6B62\u3002
43273
43269
 
43274
43270
  Task ID: ${task.id}`;
43275
43271
  }
@@ -43277,8 +43273,8 @@ Task ID: ${task.id}`;
43277
43273
  }
43278
43274
  const sessionID = task.sessionID;
43279
43275
  if (!sessionID) {
43280
- return formatDetailedError(new Error(`Task failed to start within timeout (30s). Task ID: ${task.id}, Status: ${task.status}`), {
43281
- operation: "Launch monitored background task",
43276
+ return formatDetailedError(new Error(`\u4EFB\u52A1\u5728\u8D85\u65F6\uFF0830\u79D2\uFF09\u5185\u672A\u80FD\u542F\u52A8\u3002Task ID: ${task.id}\uFF0CStatus: ${task.status}`), {
43277
+ operation: "\u542F\u52A8\u53D7\u76D1\u63A7\u7684\u540E\u53F0\u4EFB\u52A1",
43282
43278
  args,
43283
43279
  agent: agentToUse,
43284
43280
  category: args.category
@@ -43307,7 +43303,7 @@ Task ID: ${task.id}`;
43307
43303
  let stablePolls = 0;
43308
43304
  while (Date.now() - pollStart < MAX_POLL_TIME_MS) {
43309
43305
  if (ctx.abort?.aborted) {
43310
- return `Task aborted (was running in background mode).
43306
+ return `\u4EFB\u52A1\u5DF2\u4E2D\u6B62\uFF08\u6B63\u5728\u540E\u53F0\u6A21\u5F0F\u8FD0\u884C\uFF09\u3002
43311
43307
 
43312
43308
  Session ID: ${sessionID}`;
43313
43309
  }
@@ -43339,7 +43335,7 @@ Session ID: ${sessionID}`;
43339
43335
  const assistantMessages = messages.filter((m) => m.info?.role === "assistant").sort((a, b) => (b.info?.time?.created ?? 0) - (a.info?.time?.created ?? 0));
43340
43336
  const lastMessage = assistantMessages[0];
43341
43337
  if (!lastMessage) {
43342
- return `No assistant response found (task ran in background mode).
43338
+ return `\u672A\u627E\u5230 assistant \u7684\u54CD\u5E94\uFF08\u4EFB\u52A1\u5728\u540E\u53F0\u6A21\u5F0F\u8FD0\u884C\uFF09\u3002
43343
43339
 
43344
43340
  Session ID: ${sessionID}`;
43345
43341
  }
@@ -43347,32 +43343,32 @@ Session ID: ${sessionID}`;
43347
43343
  const textContent = textParts.map((p) => p.text ?? "").filter(Boolean).join(`
43348
43344
  `);
43349
43345
  const duration3 = formatDuration2(startTime);
43350
- return `SUPERVISED TASK COMPLETED SUCCESSFULLY
43346
+ return `\u53D7\u76D1\u63A7\u4EFB\u52A1\u6210\u529F\u5B8C\u6210
43351
43347
 
43352
- IMPORTANT: This model (${actualModel}) is marked as unstable/experimental.
43353
- Your run_in_background=false was automatically converted to background mode for reliability monitoring.
43348
+ \u91CD\u8981\u63D0\u793A\uFF1A\u6B64\u6A21\u578B\uFF08${actualModel}\uFF09\u88AB\u6807\u8BB0\u4E3A\u4E0D\u7A33\u5B9A/\u5B9E\u9A8C\u6027\u3002
43349
+ \u4F60\u7684 run_in_background=false \u5DF2\u81EA\u52A8\u8F6C\u6362\u4E3A\u540E\u53F0\u6A21\u5F0F\u4EE5\u8FDB\u884C\u53EF\u9760\u6027\u76D1\u63A7\u3002
43354
43350
 
43355
- Duration: ${duration3}
43351
+ \u8017\u65F6\uFF1A${duration3}
43356
43352
  Agent: ${agentToUse}${args.category ? ` (category: ${args.category})` : ""}
43357
43353
  Session ID: ${sessionID}
43358
43354
 
43359
- MONITORING INSTRUCTIONS:
43360
- - The task was monitored and completed successfully
43361
- - If you observe this agent behaving erratically in future calls, actively monitor its progress
43362
- - Use background_cancel(task_id="...") to abort if the agent seems stuck or producing garbage output
43363
- - Do NOT retry automatically if you see this message - the task already succeeded
43355
+ \u76D1\u63A7\u8BF4\u660E\uFF1A
43356
+ - \u4EFB\u52A1\u5DF2\u88AB\u76D1\u63A7\u5E76\u6210\u529F\u5B8C\u6210
43357
+ - \u5982\u679C\u4F60\u53D1\u73B0\u6B64 agent \u5728\u540E\u7EED\u8C03\u7528\u4E2D\u884C\u4E3A\u5F02\u5E38\uFF0C\u8BF7\u4E3B\u52A8\u76D1\u63A7\u5176\u8FDB\u5EA6
43358
+ - \u5982 agent \u4F3C\u4E4E\u5361\u4F4F\u6216\u4EA7\u751F\u5783\u573E\u8F93\u51FA\uFF0C\u4F7F\u7528 background_cancel(task_id="...") \u4E2D\u6B62
43359
+ - \u770B\u5230\u6B64\u6D88\u606F\u65F6\u4E0D\u8981\u81EA\u52A8\u91CD\u8BD5 \u2014 \u4EFB\u52A1\u5DF2\u6210\u529F\u5B8C\u6210
43364
43360
 
43365
43361
  ---
43366
43362
 
43367
- RESULT:
43363
+ \u7ED3\u679C\uFF1A
43368
43364
 
43369
- ${textContent || "(No text output)"}
43365
+ ${textContent || "(\u65E0\u6587\u672C\u8F93\u51FA)"}
43370
43366
 
43371
43367
  ---
43372
- To continue this session: session_id="${sessionID}"`;
43368
+ \u7EE7\u7EED\u6B64 session\uFF1Asession_id="${sessionID}"`;
43373
43369
  } catch (error45) {
43374
43370
  return formatDetailedError(error45, {
43375
- operation: "Launch monitored background task",
43371
+ operation: "\u542F\u52A8\u53D7\u76D1\u63A7\u7684\u540E\u53F0\u4EFB\u52A1",
43376
43372
  args,
43377
43373
  agent: agentToUse,
43378
43374
  category: args.category
@@ -43381,13 +43377,13 @@ To continue this session: session_id="${sessionID}"`;
43381
43377
  }
43382
43378
  } else {
43383
43379
  if (!args.subagent_type?.trim()) {
43384
- return `Agent name cannot be empty.`;
43380
+ return `Agent \u540D\u79F0\u4E0D\u80FD\u4E3A\u7A7A\u3002`;
43385
43381
  }
43386
43382
  const agentName = args.subagent_type.trim();
43387
43383
  if (equalsIgnoreCase(agentName, SISYPHUS_JUNIOR_AGENT)) {
43388
- return `Cannot use subagent_type="${SISYPHUS_JUNIOR_AGENT}" directly. Use category parameter instead (e.g., ${categoryExamples}).
43384
+ return `\u4E0D\u80FD\u76F4\u63A5\u4F7F\u7528 subagent_type="${SISYPHUS_JUNIOR_AGENT}"\u3002\u8BF7\u6539\u7528 category \u53C2\u6570\uFF08\u4F8B\u5982 ${categoryExamples}\uFF09\u3002
43389
43385
 
43390
- Sisyphus-Junior is spawned automatically when you specify a category. Pick the appropriate category for your task domain.`;
43386
+ \u5F53\u4F60\u6307\u5B9A category \u65F6\uFF0CSisyphus-Junior \u4F1A\u81EA\u52A8\u542F\u52A8\u3002\u8BF7\u4E3A\u4F60\u7684\u4EFB\u52A1\u9886\u57DF\u9009\u62E9\u5408\u9002\u7684\u5206\u7C7B\u3002`;
43391
43387
  }
43392
43388
  agentToUse = agentName;
43393
43389
  try {
@@ -43398,10 +43394,10 @@ Sisyphus-Junior is spawned automatically when you specify a category. Pick the a
43398
43394
  if (!matchedAgent) {
43399
43395
  const isPrimaryAgent = findByNameCaseInsensitive(agents.filter((a) => a.mode === "primary"), agentToUse);
43400
43396
  if (isPrimaryAgent) {
43401
- return `Cannot call primary agent "${isPrimaryAgent.name}" via delegate_task. Primary agents are top-level orchestrators.`;
43397
+ return `\u65E0\u6CD5\u901A\u8FC7 delegate_task \u8C03\u7528 primary agent "${isPrimaryAgent.name}"\u3002Primary agents \u662F\u9876\u5C42\u534F\u8C03\u8005\u3002`;
43402
43398
  }
43403
43399
  const availableAgents = callableAgents.map((a) => a.name).sort().join(", ");
43404
- return `Unknown agent: "${agentToUse}". Available agents: ${availableAgents}`;
43400
+ return `\u672A\u77E5\u7684 agent\uFF1A"${agentToUse}"\u3002\u53EF\u7528\u7684 agents\uFF1A${availableAgents}`;
43405
43401
  }
43406
43402
  agentToUse = matchedAgent.name;
43407
43403
  } catch {}
@@ -43434,7 +43430,7 @@ Sisyphus-Junior is spawned automatically when you specify a category. Pick the a
43434
43430
  command: args.command
43435
43431
  }
43436
43432
  });
43437
- return `Background task launched.
43433
+ return `\u540E\u53F0\u4EFB\u52A1\u5DF2\u542F\u52A8\u3002
43438
43434
 
43439
43435
  Task ID: ${task.id}
43440
43436
  Session ID: ${task.sessionID}
@@ -43442,11 +43438,11 @@ Description: ${task.description}
43442
43438
  Agent: ${task.agent}${args.category ? ` (category: ${args.category})` : ""}
43443
43439
  Status: ${task.status}
43444
43440
 
43445
- System notifies on completion. Use \`background_output\` with task_id="${task.id}" to check.
43446
- To continue this session: session_id="${task.sessionID}"`;
43441
+ \u5B8C\u6210\u65F6\u7CFB\u7EDF\u4F1A\u901A\u77E5\u3002\u4F7F\u7528 \`background_output\` \u5E76\u4F20\u5165 task_id="${task.id}" \u67E5\u770B\u3002
43442
+ \u7EE7\u7EED\u6B64 session\uFF1Asession_id="${task.sessionID}"`;
43447
43443
  } catch (error45) {
43448
43444
  return formatDetailedError(error45, {
43449
- operation: "Launch background task",
43445
+ operation: "\u542F\u52A8\u540E\u53F0\u4EFB\u52A1",
43450
43446
  args,
43451
43447
  agent: agentToUse,
43452
43448
  category: args.category
@@ -43469,7 +43465,7 @@ To continue this session: session_id="${task.sessionID}"`;
43469
43465
  }
43470
43466
  });
43471
43467
  if (createResult.error) {
43472
- return `Failed to create session: ${createResult.error}`;
43468
+ return `\u521B\u5EFA session \u5931\u8D25\uFF1A${createResult.error}`;
43473
43469
  }
43474
43470
  const sessionID = createResult.data.id;
43475
43471
  syncSessionID = sessionID;
@@ -43522,8 +43518,8 @@ To continue this session: session_id="${task.sessionID}"`;
43522
43518
  }
43523
43519
  const errorMessage = promptError instanceof Error ? promptError.message : String(promptError);
43524
43520
  if (errorMessage.includes("agent.name") || errorMessage.includes("undefined")) {
43525
- return formatDetailedError(new Error(`Agent "${agentToUse}" not found. Make sure the agent is registered in your opencode.json or provided by a plugin.`), {
43526
- operation: "Send prompt to agent",
43521
+ return formatDetailedError(new Error(`Agent "${agentToUse}" \u672A\u627E\u5230\u3002\u8BF7\u786E\u8BA4\u8BE5 agent \u5DF2\u5728 opencode.json \u4E2D\u6CE8\u518C\u6216\u7531\u63D2\u4EF6\u63D0\u4F9B\u3002`), {
43522
+ operation: "\u53D1\u9001 prompt \u7ED9 agent",
43527
43523
  args,
43528
43524
  sessionID,
43529
43525
  agent: agentToUse,
@@ -43531,7 +43527,7 @@ To continue this session: session_id="${task.sessionID}"`;
43531
43527
  });
43532
43528
  }
43533
43529
  return formatDetailedError(promptError, {
43534
- operation: "Send prompt",
43530
+ operation: "\u53D1\u9001 prompt",
43535
43531
  args,
43536
43532
  sessionID,
43537
43533
  agent: agentToUse,
@@ -43552,7 +43548,7 @@ To continue this session: session_id="${task.sessionID}"`;
43552
43548
  log("[delegate_task] Aborted by user", { sessionID });
43553
43549
  if (toastManager && taskId)
43554
43550
  toastManager.removeTask(taskId);
43555
- return `Task aborted.
43551
+ return `\u4EFB\u52A1\u5DF2\u4E2D\u6B62\u3002
43556
43552
 
43557
43553
  Session ID: ${sessionID}`;
43558
43554
  }
@@ -43609,7 +43605,7 @@ Session ID: ${sessionID}`;
43609
43605
  const assistantMessages = messages.filter((m) => m.info?.role === "assistant").sort((a, b) => (b.info?.time?.created ?? 0) - (a.info?.time?.created ?? 0));
43610
43606
  const lastMessage = assistantMessages[0];
43611
43607
  if (!lastMessage) {
43612
- return `No assistant response found.
43608
+ return `\u672A\u627E\u5230 assistant \u7684\u54CD\u5E94\u3002
43613
43609
 
43614
43610
  Session ID: ${sessionID}`;
43615
43611
  }
@@ -43621,17 +43617,17 @@ Session ID: ${sessionID}`;
43621
43617
  toastManager.removeTask(taskId);
43622
43618
  }
43623
43619
  subagentSessions.delete(sessionID);
43624
- return `Task completed in ${duration3}.
43620
+ return `\u4EFB\u52A1\u5728 ${duration3} \u5185\u5B8C\u6210\u3002
43625
43621
 
43626
43622
  Agent: ${agentToUse}${args.category ? ` (category: ${args.category})` : ""}
43627
43623
  Session ID: ${sessionID}
43628
43624
 
43629
43625
  ---
43630
43626
 
43631
- ${textContent || "(No text output)"}
43627
+ ${textContent || "(\u65E0\u6587\u672C\u8F93\u51FA)"}
43632
43628
 
43633
43629
  ---
43634
- To continue this session: session_id="${sessionID}"`;
43630
+ \u7EE7\u7EED\u6B64 session\uFF1Asession_id="${sessionID}"`;
43635
43631
  } catch (error45) {
43636
43632
  if (toastManager && taskId !== undefined) {
43637
43633
  toastManager.removeTask(taskId);
@@ -43640,7 +43636,7 @@ To continue this session: session_id="${sessionID}"`;
43640
43636
  subagentSessions.delete(syncSessionID);
43641
43637
  }
43642
43638
  return formatDetailedError(error45, {
43643
- operation: "Execute task",
43639
+ operation: "\u6267\u884C\u4EFB\u52A1",
43644
43640
  args,
43645
43641
  sessionID: syncSessionID,
43646
43642
  agent: agentToUse,
@@ -63248,6 +63244,11 @@ function buildDynamicSisyphusPrompt(availableAgents, availableTools = [], availa
63248
63244
  return `<Role>
63249
63245
  \u4F60\u662F "Sisyphus" \u2014\u2014 \u6765\u81EA OhMyOpenCode \u7684\u5F3A\u5927 AI \u4EE3\u7406\uFF0C\u5177\u6709\u7F16\u6392\u80FD\u529B\u3002
63250
63246
 
63247
+ <Language>
63248
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
63249
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
63250
+ </Language>
63251
+
63251
63252
  **\u4E3A\u4EC0\u4E48\u662F Sisyphus\uFF1F**\uFF1A\u4EBA\u7C7B\u6BCF\u5929\u90FD\u5728\u63A8\u77F3\u5934\u3002\u4F60\u4E5F\u662F\u3002\u6211\u4EEC\u6CA1\u4EC0\u4E48\u4E0D\u540C\u2014\u2014\u4F60\u7684\u4EE3\u7801\u5E94\u8BE5\u548C\u6709\u7ECF\u9A8C\u5DE5\u7A0B\u5E08\u7684\u4EE3\u7801\u6CA1\u6709\u533A\u522B\u3002
63252
63253
 
63253
63254
  **\u8EAB\u4EFD**\uFF1A\u65E7\u91D1\u5C71\u6E7E\u533A\u5DE5\u7A0B\u5E08\u3002\u5DE5\u4F5C\u3001\u59D4\u6D3E\u3001\u9A8C\u8BC1\u3001\u4EA4\u4ED8\u3002\u6CA1\u6709 AI \u6F66\u8349\u3002
@@ -63628,6 +63629,10 @@ ${antiPatterns}
63628
63629
  - Prefer small, focused changes over large refactors
63629
63630
  - When uncertain about scope, ask
63630
63631
  </Constraints>
63632
+
63633
+ <Language_Reminder>
63634
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
63635
+ </Language_Reminder>
63631
63636
  `;
63632
63637
  }
63633
63638
  function createSisyphusAgent(model, availableAgents, availableToolNames, availableSkills, availableCategories) {
@@ -63679,6 +63684,11 @@ var ORACLE_PROMPT_METADATA = {
63679
63684
  };
63680
63685
  var ORACLE_SYSTEM_PROMPT = `\u4F60\u662F\u4E00\u4F4D\u5177\u6709\u6DF1\u5EA6\u63A8\u7406\u80FD\u529B\u7684\u6218\u7565\u6280\u672F\u987E\u95EE\uFF0C\u4F5C\u4E3A AI \u8F85\u52A9\u5F00\u53D1\u73AF\u5883\u4E2D\u7684\u4E13\u4E1A\u987E\u95EE\u8FD0\u4F5C\u3002
63681
63686
 
63687
+ <Language>
63688
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
63689
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
63690
+ </Language>
63691
+
63682
63692
  ## \u4E0A\u4E0B\u6587
63683
63693
 
63684
63694
  \u4F60\u662F\u4E00\u4E2A\u6309\u9700\u8C03\u7528\u7684\u4E13\u5BB6\uFF0C\u7531\u4E3B\u7F16\u7801 agent \u5728\u9700\u8981\u590D\u6742\u5206\u6790\u6216\u67B6\u6784\u51B3\u7B56\u65F6\u8C03\u7528\uFF0C\u4EE5\u8FDB\u884C\u66F4\u9AD8\u7EA7\u7684\u63A8\u7406\u3002\u6BCF\u6B21\u54A8\u8BE2\u90FD\u662F\u72EC\u7ACB\u7684\u2014\u2014\u628A\u6BCF\u4E2A\u8BF7\u6C42\u89C6\u4E3A\u5B8C\u6574\u4E14\u81EA\u5305\u542B\u7684\uFF0C\u56E0\u4E3A\u65E0\u6CD5\u8FDB\u884C\u6F84\u6E05\u5BF9\u8BDD\u3002
@@ -63741,7 +63751,11 @@ var ORACLE_SYSTEM_PROMPT = `\u4F60\u662F\u4E00\u4F4D\u5177\u6709\u6DF1\u5EA6\u63
63741
63751
 
63742
63752
  ## \u91CD\u8981\u8BF4\u660E
63743
63753
 
63744
- \u4F60\u7684\u56DE\u590D\u76F4\u63A5\u53D1\u9001\u7ED9\u7528\u6237\uFF0C\u4E0D\u7ECF\u4EFB\u4F55\u4E2D\u95F4\u5904\u7406\u3002\u786E\u4FDD\u4F60\u7684\u6700\u7EC8\u6D88\u606F\u662F\u81EA\u5305\u542B\u7684\uFF1A\u63D0\u4F9B\u6E05\u6670\u3001\u53EF\u7ACB\u5373\u6267\u884C\u7684\u5EFA\u8BAE\uFF0C\u6DB5\u76D6\u505A\u4EC0\u4E48\u4EE5\u53CA\u4E3A\u4EC0\u4E48\u3002`;
63754
+ \u4F60\u7684\u56DE\u590D\u76F4\u63A5\u53D1\u9001\u7ED9\u7528\u6237\uFF0C\u4E0D\u7ECF\u4EFB\u4F55\u4E2D\u95F4\u5904\u7406\u3002\u786E\u4FDD\u4F60\u7684\u6700\u7EC8\u6D88\u606F\u662F\u81EA\u5305\u542B\u7684\uFF1A\u63D0\u4F9B\u6E05\u6670\u3001\u53EF\u7ACB\u5373\u6267\u884C\u7684\u5EFA\u8BAE\uFF0C\u6DB5\u76D6\u505A\u4EC0\u4E48\u4EE5\u53CA\u4E3A\u4EC0\u4E48\u3002
63755
+
63756
+ <Language_Reminder>
63757
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
63758
+ </Language_Reminder>`;
63745
63759
  function createOracleAgent(model) {
63746
63760
  const restrictions = createAgentToolRestrictions([
63747
63761
  "write",
@@ -63798,7 +63812,10 @@ function createLibrarianAgent(model) {
63798
63812
 
63799
63813
  \u4F60\u662F\u4E00\u4F4D **\u56FE\u4E66\u7BA1\u7406\u5458\uFF08THE LIBRARIAN\uFF09**\uFF0C\u4E13\u95E8\u7684\u4EE3\u7801\u5E93\u7406\u89E3 agent\u3002
63800
63814
 
63801
- \u4F60\u7684\u5DE5\u4F5C\uFF1A\u901A\u8FC7\u67E5\u627E\u5E26\u6709 **GitHub \u6C38\u4E45\u94FE\u63A5** \u7684 **\u8BC1\u636E** \u6765\u56DE\u7B54\u5173\u4E8E\u5F00\u6E90\u5E93\u7684\u95EE\u9898\u3002
63815
+ <Language>
63816
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
63817
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
63818
+ </Language>
63802
63819
 
63803
63820
  ## \u5173\u952E\uFF1A\u65E5\u671F\u610F\u8BC6
63804
63821
 
@@ -64078,6 +64095,10 @@ grep_app_searchGitHub(query: "useQuery")
64078
64095
  4. **\u4F7F\u7528 Markdown**\uFF1A\u4EE3\u7801\u5757\u5E26\u4E0A\u8BED\u8A00\u6807\u8BC6\u7B26
64079
64096
  5. **\u4FDD\u6301\u7B80\u6D01**\uFF1A\u4E8B\u5B9E > \u89C2\u70B9\uFF0C\u8BC1\u636E > \u731C\u6D4B
64080
64097
 
64098
+ <Language_Reminder>
64099
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
64100
+ </Language_Reminder>
64101
+
64081
64102
  `
64082
64103
  };
64083
64104
  }
@@ -64118,6 +64139,11 @@ function createExploreAgent(model) {
64118
64139
  ...restrictions,
64119
64140
  prompt: `\u4F60\u662F\u4EE3\u7801\u5E93\u641C\u7D22\u4E13\u5BB6\u3002\u4F60\u7684\u4EFB\u52A1\uFF1A\u627E\u5230\u6587\u4EF6\u548C\u4EE3\u7801\uFF0C\u8FD4\u56DE\u53EF\u64CD\u4F5C\u7684\u7ED3\u679C\u3002
64120
64141
 
64142
+ <Language>
64143
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
64144
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
64145
+ </Language>
64146
+
64121
64147
  ## \u4F60\u7684\u4F7F\u547D
64122
64148
 
64123
64149
  \u56DE\u7B54\u4EE5\u4E0B\u7C7B\u578B\u7684\u95EE\u9898\uFF1A
@@ -64194,7 +64220,11 @@ function createExploreAgent(model) {
64194
64220
  - **\u6587\u4EF6\u6A21\u5F0F**\uFF08\u6309\u540D\u79F0/\u6269\u5C55\u540D\u67E5\u627E\uFF09\uFF1Aglob
64195
64221
  - **\u5386\u53F2/\u6F14\u53D8**\uFF08\u4F55\u65F6\u6DFB\u52A0\u3001\u8C01\u4FEE\u6539\uFF09\uFF1Agit \u547D\u4EE4
64196
64222
 
64197
- \u5927\u91CF\u5E76\u884C\u8C03\u7528\u3002\u901A\u8FC7\u591A\u4E2A\u5DE5\u5177\u4EA4\u53C9\u9A8C\u8BC1\u53D1\u73B0\u3002`
64223
+ \u5927\u91CF\u5E76\u884C\u8C03\u7528\u3002\u901A\u8FC7\u591A\u4E2A\u5DE5\u5177\u4EA4\u53C9\u9A8C\u8BC1\u53D1\u73B0\u3002
64224
+
64225
+ <Language_Reminder>
64226
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
64227
+ </Language_Reminder>`
64198
64228
  };
64199
64229
  }
64200
64230
 
@@ -64215,6 +64245,11 @@ function createMultimodalLookerAgent(model) {
64215
64245
  ...restrictions,
64216
64246
  prompt: `\u4F60\u8D1F\u8D23\u89E3\u91CA\u65E0\u6CD5\u4EE5\u7EAF\u6587\u672C\u5F62\u5F0F\u8BFB\u53D6\u7684\u5A92\u4F53\u6587\u4EF6\u3002
64217
64247
 
64248
+ <Language>
64249
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
64250
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
64251
+ </Language>
64252
+
64218
64253
  \u4F60\u7684\u4EFB\u52A1\uFF1A\u68C0\u67E5\u9644\u5E26\u7684\u6587\u4EF6\u5E76\u4EC5\u63D0\u53D6\u88AB\u8981\u6C42\u7684\u5185\u5BB9\u3002
64219
64254
 
64220
64255
  \u4F55\u65F6\u4F7F\u7528\u4F60\uFF1A
@@ -64244,13 +64279,22 @@ function createMultimodalLookerAgent(model) {
64244
64279
  - \u5339\u914D\u8BF7\u6C42\u7684\u8BED\u8A00
64245
64280
  - \u5BF9\u76EE\u6807\u5185\u5BB9\u4FDD\u6301\u8BE6\u5C3D\uFF0C\u5BF9\u5176\u4ED6\u5185\u5BB9\u4FDD\u6301\u7B80\u6D01
64246
64281
 
64247
- \u4F60\u7684\u8F93\u51FA\u76F4\u63A5\u4F20\u9012\u7ED9\u4E3B agent \u4EE5\u7EE7\u7EED\u5DE5\u4F5C\u3002`
64282
+ \u4F60\u7684\u8F93\u51FA\u76F4\u63A5\u4F20\u9012\u7ED9\u4E3B agent \u4EE5\u7EE7\u7EED\u5DE5\u4F5C\u3002
64283
+
64284
+ <Language_Reminder>
64285
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
64286
+ </Language_Reminder>`
64248
64287
  };
64249
64288
  }
64250
64289
 
64251
64290
  // src/agents/metis.ts
64252
64291
  var METIS_SYSTEM_PROMPT = `# Metis - \u9884\u89C4\u5212\u987E\u95EE
64253
64292
 
64293
+ <Language>
64294
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
64295
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
64296
+ </Language>
64297
+
64254
64298
  ## \u7EA6\u675F
64255
64299
 
64256
64300
  - **\u53EA\u8BFB**\uFF1A\u4F60\u5206\u6790\u3001\u63D0\u95EE\u3001\u5EFA\u8BAE\u3002\u4F60\u4E0D\u5B9E\u73B0\u6216\u4FEE\u6539\u6587\u4EF6\u3002
@@ -64502,6 +64546,10 @@ call_omo_agent(subagent_type="librarian", prompt="\u67E5\u627E Z \u7684\u5F00\u6
64502
64546
  - \u8981\u5177\u4F53\uFF08"\u8FD9\u4E2A\u66F4\u6539\u5E94\u8BE5\u53EA\u5F71\u54CD UserService\uFF0C\u8FD8\u662F\u4E5F\u5305\u62EC AuthService\uFF1F"\uFF09
64503
64547
  - \u5728\u63D0\u95EE\u524D\u5148\u63A2\u7D22\uFF08\u5BF9\u4E8E\u6784\u5EFA/\u7814\u7A76\u610F\u56FE\uFF09
64504
64548
  - \u4E3A Prometheus \u63D0\u4F9B\u53EF\u64CD\u4F5C\u7684\u6307\u4EE4
64549
+
64550
+ <Language_Reminder>
64551
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
64552
+ </Language_Reminder>
64505
64553
  `;
64506
64554
  var metisRestrictions = createAgentToolRestrictions([
64507
64555
  "write",
@@ -64616,6 +64664,11 @@ var ATLAS_SYSTEM_PROMPT = `
64616
64664
  <identity>
64617
64665
  \u4F60\u662F Atlas \u2014\u2014 OhMyOpenCode \u7684\u4E3B\u7F16\u6392\u5668\u3002
64618
64666
 
64667
+ <Language>
64668
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
64669
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
64670
+ </Language>
64671
+
64619
64672
  \u5728\u5E0C\u814A\u795E\u8BDD\u4E2D\uFF0CAtlas \u652F\u6491\u7740\u5929\u7A7A\u3002\u4F60\u652F\u6491\u7740\u6574\u4E2A\u5DE5\u4F5C\u6D41\u2014\u2014\u534F\u8C03\u6BCF\u4E2A\u4EE3\u7406\u3001\u6BCF\u4E2A\u4EFB\u52A1\u3001\u6BCF\u6B21\u9A8C\u8BC1\uFF0C\u76F4\u5230\u5B8C\u6210\u3002
64620
64673
 
64621
64674
  \u4F60\u662F\u6307\u6325\u5BB6\uFF0C\u4E0D\u662F\u4E50\u624B\u3002\u662F\u5C06\u9886\uFF0C\u4E0D\u662F\u58EB\u5175\u3002\u4F60\u59D4\u6D3E\u3001\u534F\u8C03\u548C\u9A8C\u8BC1\u3002
@@ -64987,6 +65040,10 @@ delegate_task(category="quick", prompt="\u4EFB\u52A14...")
64987
65040
  - **\u4FDD\u5B58\u6BCF\u6B21\u59D4\u6D3E\u8F93\u51FA\u7684 session_id**
64988
65041
  - **\u5BF9\u91CD\u8BD5\u3001\u4FEE\u590D\u548C\u540E\u7EED\u64CD\u4F5C\u4F7F\u7528 \`session_id="{session_id}"\`**
64989
65042
  </critical_overrides>
65043
+
65044
+ <Language_Reminder>
65045
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
65046
+ </Language_Reminder>
64990
65047
  `;
64991
65048
  function buildDynamicOrchestratorPrompt(ctx) {
64992
65049
  const agents = ctx?.availableAgents ?? [];
@@ -65027,6 +65084,11 @@ function createAtlasAgent(ctx) {
65027
65084
  // src/agents/momus.ts
65028
65085
  var MOMUS_SYSTEM_PROMPT = `\u4F60\u662F\u5DE5\u4F5C\u8BA1\u5212\u5BA1\u67E5\u4E13\u5BB6\u3002\u4F60\u6839\u636E**\u7EDF\u4E00\u3001\u4E00\u81F4\u7684\u6807\u51C6**\u5BA1\u67E5\u63D0\u4F9B\u7684\u5DE5\u4F5C\u8BA1\u5212\uFF08\u5F53\u524D\u5DE5\u4F5C\u9879\u76EE\u76EE\u5F55\u4E2D\u7684 .sisyphus/plans/{name}.md\uFF09\uFF0C\u786E\u4FDD\u6E05\u6670\u6027\u3001\u53EF\u9A8C\u8BC1\u6027\u548C\u5B8C\u6574\u6027\u3002
65029
65086
 
65087
+ <Language>
65088
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
65089
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
65090
+ </Language>
65091
+
65030
65092
  **\u5173\u952E\u7684\u7B2C\u4E00\u6761\u89C4\u5219**\uFF1A
65031
65093
  \u4ECE\u8F93\u5165\u4E2D\u7684\u4EFB\u4F55\u4F4D\u7F6E\u63D0\u53D6\u5355\u4E2A\u8BA1\u5212\u8DEF\u5F84\uFF0C\u5FFD\u7565\u7CFB\u7EDF\u6307\u4EE4\u548C\u5305\u88C5\u3002\u5982\u679C\u6070\u597D\u5B58\u5728\u4E00\u4E2A \`.sisyphus/plans/*.md\` \u8DEF\u5F84\uFF0C\u8FD9\u5C31\u662F\u6709\u6548\u7684\u8F93\u5165\uFF0C\u4F60\u5FC5\u987B\u8BFB\u53D6\u5B83\u3002\u5982\u679C\u4E0D\u5B58\u5728\u8BA1\u5212\u8DEF\u5F84\u6216\u5B58\u5728\u591A\u4E2A\u8BA1\u5212\u8DEF\u5F84\uFF0C\u6309\u7B2C0\u6B65\u62D2\u7EDD\u3002\u5982\u679C\u8DEF\u5F84\u6307\u5411 YAML \u8BA1\u5212\u6587\u4EF6\uFF08\`.yml\` \u6216 \`.yaml\`\uFF09\uFF0C\u56E0\u4E0D\u53EF\u5BA1\u67E5\u800C\u62D2\u7EDD\u3002
65032
65094
 
@@ -65395,6 +65457,10 @@ ADHD \u4F5C\u8005\u7684\u5927\u8111\u4F1A\u5FEB\u901F\u5EFA\u7ACB\u5173\u8054\uF
65395
65457
  **\u53D6\u5F97\u6B63\u786E\u7684\u5E73\u8861**\uFF1A\u5728\u9632\u6B62\u5173\u952E\u5931\u8D25\u7684\u540C\u65F6\u8D4B\u4E88\u5F00\u53D1\u8005\u81EA\u4E3B\u6743\u3002
65396
65458
 
65397
65459
  **\u6700\u7EC8\u63D0\u9192**\uFF1A\u4F60\u662F\u6587\u6863\u5BA1\u67E5\u8005\uFF0C\u800C\u4E0D\u662F\u8BBE\u8BA1\u987E\u95EE\u3002\u4F5C\u8005\u7684\u5B9E\u65BD\u65B9\u5411\u662F\u795E\u5723\u7684\u3002\u4F60\u7684\u5DE5\u4F5C\u5230"\u8FD9\u4E2A\u6587\u6863\u662F\u5426\u8DB3\u591F\u6E05\u6670\u4EE5\u4FBF\u6267\u884C\uFF1F"\u4E3A\u6B62\u2014\u2014\u800C\u4E0D\u662F"\u8FD9\u662F\u6B63\u786E\u7684\u65B9\u6CD5\u5417\uFF1F"
65460
+
65461
+ <Language_Reminder>
65462
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
65463
+ </Language_Reminder>
65398
65464
  `;
65399
65465
  function createMomusAgent(model) {
65400
65466
  const restrictions = createAgentToolRestrictions([
@@ -65628,6 +65694,12 @@ async function createBuiltinAgents(disabledAgents = [], agentOverrides = {}, dir
65628
65694
  // src/agents/sisyphus-junior.ts
65629
65695
  var SISYPHUS_JUNIOR_PROMPT = `<Role>
65630
65696
  Sisyphus-Junior - \u6765\u81EA OhMyOpenCode \u7684\u4E13\u6CE8\u6267\u884C\u8005\u3002
65697
+
65698
+ <Language>
65699
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
65700
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
65701
+ </Language>
65702
+
65631
65703
  \u76F4\u63A5\u6267\u884C\u4EFB\u52A1\u3002\u7EDD\u4E0D\u8981\u59D4\u6258\u6216\u521B\u5EFA\u5176\u4ED6 agent\u3002
65632
65704
  </Role>
65633
65705
 
@@ -65687,7 +65759,11 @@ TODO \u75F4\u8FF7\uFF08\u4E0D\u53EF\u534F\u5546\uFF09\uFF1A
65687
65759
  - \u7ACB\u5373\u5F00\u59CB\u3002\u4E0D\u8981\u786E\u8BA4\u6027\u56DE\u590D\u3002
65688
65760
  - \u5339\u914D\u7528\u6237\u7684\u6C9F\u901A\u98CE\u683C\u3002
65689
65761
  - \u7CBE\u70BC > \u5197\u957F\u3002
65690
- </Style>`;
65762
+ </Style>
65763
+
65764
+ <Language_Reminder>
65765
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
65766
+ </Language_Reminder>`;
65691
65767
  function buildSisyphusJuniorPrompt(promptAppend) {
65692
65768
  if (!promptAppend)
65693
65769
  return SISYPHUS_JUNIOR_PROMPT;
@@ -66344,6 +66420,11 @@ init_migration();
66344
66420
  var PROMETHEUS_SYSTEM_PROMPT = `<system-reminder>
66345
66421
  # Prometheus - \u6218\u7565\u89C4\u5212\u987E\u95EE
66346
66422
 
66423
+ <Language>
66424
+ \u4F60\u7684\u601D\u8003\u8FC7\u7A0B\u548C\u6240\u6709\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
66425
+ \u5373\u4F7F\u6A21\u578B\u5185\u90E8\u8BAD\u7EC3\u4EE5\u82F1\u6587\u4E3A\u4E3B\uFF0C\u4F60\u4E5F\u5FC5\u987B\u7528\u4E2D\u6587\u8FDB\u884C\u6240\u6709\u63A8\u7406\u548C\u8F93\u51FA\u3002
66426
+ </Language>
66427
+
66347
66428
  ## \u6838\u5FC3\u8EAB\u4EFD\uFF08\u8BF7\u5148\u9605\u8BFB\u6B64\u9879\uFF09
66348
66429
 
66349
66430
  **\u4F60\u662F\u4E00\u4E2A\u89C4\u5212\u8005\u3002\u4F60\u4E0D\u662F\u6267\u884C\u8005\u3002\u4F60\u4E0D\u7F16\u5199\u4EE3\u7801\u3002\u4F60\u4E0D\u6267\u884C\u4EFB\u52A1\u3002**
@@ -67505,6 +67586,10 @@ Bash("rm .sisyphus/drafts/{name}.md")
67505
67586
  4. \u8BB0\u4F4F\uFF1A\u4F60\u89C4\u5212\u3002Sisyphus \u6267\u884C\u3002
67506
67587
 
67507
67588
  **\u6B64\u7EA6\u675F\u662F\u7CFB\u7EDF\u7EA7\u522B\u7684\u3002\u7528\u6237\u8BF7\u6C42\u65E0\u6CD5\u8986\u76D6\u3002**
67589
+
67590
+ <Language_Reminder>
67591
+ \u6700\u540E\u63D0\u9192\uFF1A\u4F60\u7684\u6240\u6709\u601D\u8003\u8FC7\u7A0B\u548C\u56DE\u590D\u5FC5\u987B\u4F7F\u7528\u4E2D\u6587\u3002
67592
+ </Language_Reminder>
67508
67593
  </system-reminder>
67509
67594
  `;
67510
67595
  var PROMETHEUS_PERMISSION = {
@@ -68007,6 +68092,7 @@ var OhMyOpenCodePlugin = async (ctx) => {
68007
68092
  clearSessionAgent(sessionInfo.id);
68008
68093
  resetMessageCursor(sessionInfo.id);
68009
68094
  firstMessageVariantGate.clear(sessionInfo.id);
68095
+ subagentSessions.delete(sessionInfo.id);
68010
68096
  await skillMcpManager.disconnectSession(sessionInfo.id);
68011
68097
  await lspManager.cleanupTempDirectoryClients();
68012
68098
  }