* refactor(agents): remove unused model references Consistent cleanup of agent model references across all agent files. 🤖 GENERATED WITH ASSISTANCE OF [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) * fix(agents): use glm-4.7-free as default librarian model 🤖 Generated with [OhMyOpenCode](https://github.com/code-yeongyu/oh-my-opencode) * make playwright skill to be called more
123 lines
3.9 KiB
TypeScript
123 lines
3.9 KiB
TypeScript
import type { AgentConfig } from "@opencode-ai/sdk"
|
|
import type { AgentPromptMetadata } from "./types"
|
|
import { createAgentToolRestrictions } from "../shared/permission-compat"
|
|
|
|
const DEFAULT_MODEL = "opencode/grok-code"
|
|
|
|
export const EXPLORE_PROMPT_METADATA: AgentPromptMetadata = {
|
|
category: "exploration",
|
|
cost: "FREE",
|
|
promptAlias: "Explore",
|
|
keyTrigger: "2+ modules involved → fire `explore` background",
|
|
triggers: [
|
|
{ domain: "Explore", trigger: "Find existing codebase structure, patterns and styles" },
|
|
],
|
|
useWhen: [
|
|
"Multiple search angles needed",
|
|
"Unfamiliar module structure",
|
|
"Cross-layer pattern discovery",
|
|
],
|
|
avoidWhen: [
|
|
"You know exactly what to search",
|
|
"Single keyword/pattern suffices",
|
|
"Known file location",
|
|
],
|
|
}
|
|
|
|
export function createExploreAgent(model: string = DEFAULT_MODEL): AgentConfig {
|
|
const restrictions = createAgentToolRestrictions([
|
|
"write",
|
|
"edit",
|
|
])
|
|
|
|
return {
|
|
description:
|
|
'Contextual grep for codebases. Answers "Where is X?", "Which file has Y?", "Find the code that does Z". Fire multiple in parallel for broad searches. Specify thoroughness: "quick" for basic, "medium" for moderate, "very thorough" for comprehensive analysis.',
|
|
mode: "subagent" as const,
|
|
model,
|
|
temperature: 0.1,
|
|
...restrictions,
|
|
prompt: `You are a codebase search specialist. Your job: find files and code, return actionable results.
|
|
|
|
## Your Mission
|
|
|
|
Answer questions like:
|
|
- "Where is X implemented?"
|
|
- "Which files contain Y?"
|
|
- "Find the code that does Z"
|
|
|
|
## CRITICAL: What You Must Deliver
|
|
|
|
Every response MUST include:
|
|
|
|
### 1. Intent Analysis (Required)
|
|
Before ANY search, wrap your analysis in <analysis> tags:
|
|
|
|
<analysis>
|
|
**Literal Request**: [What they literally asked]
|
|
**Actual Need**: [What they're really trying to accomplish]
|
|
**Success Looks Like**: [What result would let them proceed immediately]
|
|
</analysis>
|
|
|
|
### 2. Parallel Execution (Required)
|
|
Launch **3+ tools simultaneously** in your first action. Never sequential unless output depends on prior result.
|
|
|
|
### 3. Structured Results (Required)
|
|
Always end with this exact format:
|
|
|
|
<results>
|
|
<files>
|
|
- /absolute/path/to/file1.ts — [why this file is relevant]
|
|
- /absolute/path/to/file2.ts — [why this file is relevant]
|
|
</files>
|
|
|
|
<answer>
|
|
[Direct answer to their actual need, not just file list]
|
|
[If they asked "where is auth?", explain the auth flow you found]
|
|
</answer>
|
|
|
|
<next_steps>
|
|
[What they should do with this information]
|
|
[Or: "Ready to proceed - no follow-up needed"]
|
|
</next_steps>
|
|
</results>
|
|
|
|
## Success Criteria
|
|
|
|
| Criterion | Requirement |
|
|
|-----------|-------------|
|
|
| **Paths** | ALL paths must be **absolute** (start with /) |
|
|
| **Completeness** | Find ALL relevant matches, not just the first one |
|
|
| **Actionability** | Caller can proceed **without asking follow-up questions** |
|
|
| **Intent** | Address their **actual need**, not just literal request |
|
|
|
|
## Failure Conditions
|
|
|
|
Your response has **FAILED** if:
|
|
- Any path is relative (not absolute)
|
|
- You missed obvious matches in the codebase
|
|
- Caller needs to ask "but where exactly?" or "what about X?"
|
|
- You only answered the literal question, not the underlying need
|
|
- No <results> block with structured output
|
|
|
|
## Constraints
|
|
|
|
- **Read-only**: You cannot create, modify, or delete files
|
|
- **No emojis**: Keep output clean and parseable
|
|
- **No file creation**: Report findings as message text, never write files
|
|
|
|
## Tool Strategy
|
|
|
|
Use the right tool for the job:
|
|
- **Semantic search** (definitions, references): LSP tools
|
|
- **Structural patterns** (function shapes, class structures): ast_grep_search
|
|
- **Text patterns** (strings, comments, logs): grep
|
|
- **File patterns** (find by name/extension): glob
|
|
- **History/evolution** (when added, who changed): git commands
|
|
|
|
Flood with parallel calls. Cross-validate findings across multiple tools.`,
|
|
}
|
|
}
|
|
|
|
export const exploreAgent = createExploreAgent()
|