Просмотр исходного кода

tweak: add model flag support for agent create command

Aiden Cline 2 месяцев назад
Родитель
Сommit
ca599ab8fc
2 измененных файлов с 10 добавлено и 3 удалено
  1. 2 2
      packages/opencode/src/agent/agent.ts
  2. 8 1
      packages/opencode/src/cli/cmd/agent.ts

+ 2 - 2
packages/opencode/src/agent/agent.ts

@@ -256,9 +256,9 @@ export namespace Agent {
     return state().then((x) => Object.values(x))
   }
 
-  export async function generate(input: { description: string }) {
+  export async function generate(input: { description: string; model?: { providerID: string; modelID: string } }) {
     const cfg = await Config.get()
-    const defaultModel = await Provider.defaultModel()
+    const defaultModel = input.model ?? (await Provider.defaultModel())
     const model = await Provider.getModel(defaultModel.providerID, defaultModel.modelID)
     const language = await Provider.getLanguage(model)
     const system = SystemPrompt.header(defaultModel.providerID)

+ 8 - 1
packages/opencode/src/cli/cmd/agent.ts

@@ -3,6 +3,7 @@ import * as prompts from "@clack/prompts"
 import { UI } from "../ui"
 import { Global } from "../../global"
 import { Agent } from "../../agent/agent"
+import { Provider } from "../../provider/provider"
 import path from "path"
 import fs from "fs/promises"
 import matter from "gray-matter"
@@ -47,6 +48,11 @@ const AgentCreateCommand = cmd({
       .option("tools", {
         type: "string",
         describe: `comma-separated list of tools to enable (default: all). Available: "${AVAILABLE_TOOLS.join(", ")}"`,
+      })
+      .option("model", {
+        type: "string",
+        alias: ["m"],
+        describe: "model to use in the format of provider/model",
       }),
   async handler(args) {
     await Instance.provide({
@@ -114,7 +120,8 @@ const AgentCreateCommand = cmd({
         // Generate agent
         const spinner = prompts.spinner()
         spinner.start("Generating agent configuration...")
-        const generated = await Agent.generate({ description }).catch((error) => {
+        const model = args.model ? Provider.parseModel(args.model) : undefined
+        const generated = await Agent.generate({ description, model }).catch((error) => {
           spinner.stop(`LLM failed to generate agent: ${error.message}`, 1)
           if (isFullyNonInteractive) process.exit(1)
           throw new UI.CancelledError()