mirror of
https://github.com/anomalyco/opencode.git
synced 2026-02-13 04:14:20 +00:00
Compare commits
4 Commits
provider-o
...
models-end
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
496c43e635 | ||
|
|
1755e23e49 | ||
|
|
66d1418b27 | ||
|
|
51d3f98f98 |
1
.github/VOUCHED.td
vendored
1
.github/VOUCHED.td
vendored
@@ -8,7 +8,6 @@
|
||||
# - Denounce with minus prefix: -username or -platform:username.
|
||||
# - Optional details after a space following the handle.
|
||||
adamdotdevin
|
||||
ariane-emory
|
||||
-florianleibert
|
||||
fwang
|
||||
iamdavidhill
|
||||
|
||||
15
logs/.2c5480b3b2480f80fa29b850af461dce619c0b2f-audit.json
Normal file
15
logs/.2c5480b3b2480f80fa29b850af461dce619c0b2f-audit.json
Normal file
@@ -0,0 +1,15 @@
|
||||
{
|
||||
"keep": {
|
||||
"days": true,
|
||||
"amount": 14
|
||||
},
|
||||
"auditLog": "/home/thdxr/dev/projects/sst/opencode/logs/.2c5480b3b2480f80fa29b850af461dce619c0b2f-audit.json",
|
||||
"files": [
|
||||
{
|
||||
"date": 1759827172859,
|
||||
"name": "/home/thdxr/dev/projects/sst/opencode/logs/mcp-puppeteer-2025-10-07.log",
|
||||
"hash": "a3d98b26edd793411b968a0d24cfeee8332138e282023c3b83ec169d55c67f16"
|
||||
}
|
||||
],
|
||||
"hashType": "sha256"
|
||||
}
|
||||
48
logs/mcp-puppeteer-2025-10-07.log
Normal file
48
logs/mcp-puppeteer-2025-10-07.log
Normal file
@@ -0,0 +1,48 @@
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:52:52.879"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:52:52.880"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:52:56.191"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:52:56.192"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:52:59.267"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:52:59.268"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:53:20.276"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:53:20.277"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:53:30.838"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:53:30.839"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:53:42.452"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:53:42.452"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:53:46.499"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:53:46.500"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:54:02.295"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:54:02.295"}
|
||||
{"arguments":{"url":"https://google.com"},"level":"debug","message":"Tool call received","service":"mcp-puppeteer","timestamp":"2025-10-07 04:54:37.150","tool":"puppeteer_navigate"}
|
||||
{"0":"n","1":"p","2":"x","level":"info","message":"Launching browser with config:","service":"mcp-puppeteer","timestamp":"2025-10-07 04:54:37.150"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 04:55:08.488"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 04:55:08.489"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:11.815"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:11.816"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:21.934"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:21.935"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:32.544"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:32.544"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:41.154"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:41.155"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:55.426"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:23:55.427"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:24:15.715"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:24:15.716"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:24:25.063"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:24:25.064"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:24:48.567"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:24:48.568"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 05:25:08.937"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 05:25:08.938"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 22:38:37.120"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 22:38:37.121"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 22:38:52.490"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 22:38:52.491"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 22:39:25.524"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 22:39:25.525"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 22:40:57.126"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 22:40:57.127"}
|
||||
{"level":"info","message":"Starting MCP server","service":"mcp-puppeteer","timestamp":"2025-10-07 22:42:24.175"}
|
||||
{"level":"info","message":"MCP server started successfully","service":"mcp-puppeteer","timestamp":"2025-10-07 22:42:24.176"}
|
||||
@@ -2,7 +2,6 @@ import { onCleanup, onMount } from "solid-js"
|
||||
import { showToast } from "@opencode-ai/ui/toast"
|
||||
import { usePrompt, type ContentPart, type ImageAttachmentPart } from "@/context/prompt"
|
||||
import { useLanguage } from "@/context/language"
|
||||
import { uuid } from "@/utils/uuid"
|
||||
import { getCursorPosition } from "./editor-dom"
|
||||
|
||||
export const ACCEPTED_IMAGE_TYPES = ["image/png", "image/jpeg", "image/gif", "image/webp"]
|
||||
@@ -32,7 +31,7 @@ export function createPromptAttachments(input: PromptAttachmentsInput) {
|
||||
const dataUrl = reader.result as string
|
||||
const attachment: ImageAttachmentPart = {
|
||||
type: "image",
|
||||
id: uuid(),
|
||||
id: crypto.randomUUID?.() ?? Math.random().toString(16).slice(2),
|
||||
filename: file.name,
|
||||
mime: file.type,
|
||||
dataUrl,
|
||||
|
||||
@@ -4,7 +4,6 @@ import { createSimpleContext } from "@opencode-ai/ui/context"
|
||||
import { useParams } from "@solidjs/router"
|
||||
import { Persist, persisted } from "@/utils/persist"
|
||||
import { createScopedCache } from "@/utils/scoped-cache"
|
||||
import { uuid } from "@/utils/uuid"
|
||||
import type { SelectedLineRange } from "@/context/file"
|
||||
|
||||
export type LineComment = {
|
||||
@@ -54,7 +53,7 @@ function createCommentSessionState(store: Store<CommentStore>, setStore: SetStor
|
||||
|
||||
const add = (input: Omit<LineComment, "id" | "time">) => {
|
||||
const next: LineComment = {
|
||||
id: uuid(),
|
||||
id: crypto.randomUUID?.() ?? Math.random().toString(16).slice(2),
|
||||
time: Date.now(),
|
||||
...input,
|
||||
}
|
||||
|
||||
@@ -1,5 +1,3 @@
|
||||
import { uuid } from "@/utils/uuid"
|
||||
|
||||
type Nav = {
|
||||
id: string
|
||||
dir?: string
|
||||
@@ -18,6 +16,8 @@ const key = (dir: string | undefined, to: string) => `${dir ?? ""}:${to}`
|
||||
|
||||
const now = () => performance.now()
|
||||
|
||||
const uid = () => crypto.randomUUID?.() ?? Math.random().toString(16).slice(2)
|
||||
|
||||
const navs = new Map<string, Nav>()
|
||||
const pending = new Map<string, string>()
|
||||
const active = new Map<string, string>()
|
||||
@@ -94,7 +94,7 @@ function ensure(id: string, data: Omit<Nav, "marks" | "logged" | "timer">) {
|
||||
export function navStart(input: { dir?: string; from?: string; to: string; trigger?: string }) {
|
||||
if (!dev) return
|
||||
|
||||
const id = uuid()
|
||||
const id = uid()
|
||||
const start = now()
|
||||
const nav = ensure(id, { ...input, id, start })
|
||||
nav.marks["navigate:start"] = start
|
||||
@@ -109,7 +109,7 @@ export function navParams(input: { dir?: string; from?: string; to: string }) {
|
||||
const k = key(input.dir, input.to)
|
||||
const pendingId = pending.get(k)
|
||||
if (pendingId) pending.delete(k)
|
||||
const id = pendingId ?? uuid()
|
||||
const id = pendingId ?? uid()
|
||||
|
||||
const start = now()
|
||||
const nav = ensure(id, { ...input, id, start, trigger: pendingId ? "key" : "route" })
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
import { afterEach, describe, expect, test } from "bun:test"
|
||||
import { uuid } from "./uuid"
|
||||
|
||||
const cryptoDescriptor = Object.getOwnPropertyDescriptor(globalThis, "crypto")
|
||||
const secureDescriptor = Object.getOwnPropertyDescriptor(globalThis, "isSecureContext")
|
||||
const randomDescriptor = Object.getOwnPropertyDescriptor(Math, "random")
|
||||
|
||||
const setCrypto = (value: Partial<Crypto>) => {
|
||||
Object.defineProperty(globalThis, "crypto", {
|
||||
configurable: true,
|
||||
value: value as Crypto,
|
||||
})
|
||||
}
|
||||
|
||||
const setSecure = (value: boolean) => {
|
||||
Object.defineProperty(globalThis, "isSecureContext", {
|
||||
configurable: true,
|
||||
value,
|
||||
})
|
||||
}
|
||||
|
||||
const setRandom = (value: () => number) => {
|
||||
Object.defineProperty(Math, "random", {
|
||||
configurable: true,
|
||||
value,
|
||||
})
|
||||
}
|
||||
|
||||
afterEach(() => {
|
||||
if (cryptoDescriptor) {
|
||||
Object.defineProperty(globalThis, "crypto", cryptoDescriptor)
|
||||
}
|
||||
|
||||
if (secureDescriptor) {
|
||||
Object.defineProperty(globalThis, "isSecureContext", secureDescriptor)
|
||||
}
|
||||
|
||||
if (!secureDescriptor) {
|
||||
delete (globalThis as { isSecureContext?: boolean }).isSecureContext
|
||||
}
|
||||
|
||||
if (randomDescriptor) {
|
||||
Object.defineProperty(Math, "random", randomDescriptor)
|
||||
}
|
||||
})
|
||||
|
||||
describe("uuid", () => {
|
||||
test("uses randomUUID in secure contexts", () => {
|
||||
setCrypto({ randomUUID: () => "00000000-0000-0000-0000-000000000000" })
|
||||
setSecure(true)
|
||||
expect(uuid()).toBe("00000000-0000-0000-0000-000000000000")
|
||||
})
|
||||
|
||||
test("falls back in insecure contexts", () => {
|
||||
setCrypto({ randomUUID: () => "00000000-0000-0000-0000-000000000000" })
|
||||
setSecure(false)
|
||||
setRandom(() => 0.5)
|
||||
expect(uuid()).toBe("8")
|
||||
})
|
||||
|
||||
test("falls back when randomUUID throws", () => {
|
||||
setCrypto({
|
||||
randomUUID: () => {
|
||||
throw new DOMException("Failed", "OperationError")
|
||||
},
|
||||
})
|
||||
setSecure(true)
|
||||
setRandom(() => 0.5)
|
||||
expect(uuid()).toBe("8")
|
||||
})
|
||||
|
||||
test("falls back when randomUUID is unavailable", () => {
|
||||
setCrypto({})
|
||||
setSecure(true)
|
||||
setRandom(() => 0.5)
|
||||
expect(uuid()).toBe("8")
|
||||
})
|
||||
})
|
||||
@@ -1,12 +0,0 @@
|
||||
const fallback = () => Math.random().toString(16).slice(2)
|
||||
|
||||
export function uuid() {
|
||||
const c = globalThis.crypto
|
||||
if (!c || typeof c.randomUUID !== "function") return fallback()
|
||||
if (typeof globalThis.isSecureContext === "boolean" && !globalThis.isSecureContext) return fallback()
|
||||
try {
|
||||
return c.randomUUID()
|
||||
} catch {
|
||||
return fallback()
|
||||
}
|
||||
}
|
||||
@@ -149,7 +149,6 @@ export function Session() {
|
||||
const [showDetails, setShowDetails] = kv.signal("tool_details_visibility", true)
|
||||
const [showAssistantMetadata, setShowAssistantMetadata] = kv.signal("assistant_metadata_visibility", true)
|
||||
const [showScrollbar, setShowScrollbar] = kv.signal("scrollbar_visible", false)
|
||||
const [showHeader, setShowHeader] = kv.signal("header_visible", true)
|
||||
const [diffWrapMode] = kv.signal<"word" | "none">("diff_wrap_mode", "word")
|
||||
const [animationsEnabled, setAnimationsEnabled] = kv.signal("animations_enabled", true)
|
||||
|
||||
@@ -583,15 +582,6 @@ export function Session() {
|
||||
dialog.clear()
|
||||
},
|
||||
},
|
||||
{
|
||||
title: showHeader() ? "Hide header" : "Show header",
|
||||
value: "session.toggle.header",
|
||||
category: "Session",
|
||||
onSelect: (dialog) => {
|
||||
setShowHeader((prev) => !prev)
|
||||
dialog.clear()
|
||||
},
|
||||
},
|
||||
{
|
||||
title: "Page up",
|
||||
value: "session.page.up",
|
||||
@@ -973,7 +963,7 @@ export function Session() {
|
||||
<box flexDirection="row">
|
||||
<box flexGrow={1} paddingBottom={1} paddingTop={1} paddingLeft={2} paddingRight={2} gap={1}>
|
||||
<Show when={session()}>
|
||||
<Show when={showHeader() && (!sidebarVisible() || !wide())}>
|
||||
<Show when={!sidebarVisible() || !wide()}>
|
||||
<Header />
|
||||
</Show>
|
||||
<scrollbox
|
||||
|
||||
@@ -571,28 +571,25 @@ export namespace MCP {
|
||||
const clientsSnapshot = await clients()
|
||||
const defaultTimeout = cfg.experimental?.mcp_timeout
|
||||
|
||||
const connectedClients = Object.entries(clientsSnapshot).filter(
|
||||
([clientName]) => s.status[clientName]?.status === "connected",
|
||||
)
|
||||
for (const [clientName, client] of Object.entries(clientsSnapshot)) {
|
||||
// Only include tools from connected MCPs (skip disabled ones)
|
||||
if (s.status[clientName]?.status !== "connected") {
|
||||
continue
|
||||
}
|
||||
|
||||
const toolsResults = await Promise.all(
|
||||
connectedClients.map(async ([clientName, client]) => {
|
||||
const toolsResult = await client.listTools().catch((e) => {
|
||||
log.error("failed to get tools", { clientName, error: e.message })
|
||||
const failedStatus = {
|
||||
status: "failed" as const,
|
||||
error: e instanceof Error ? e.message : String(e),
|
||||
}
|
||||
s.status[clientName] = failedStatus
|
||||
delete s.clients[clientName]
|
||||
return undefined
|
||||
})
|
||||
return { clientName, client, toolsResult }
|
||||
}),
|
||||
)
|
||||
|
||||
for (const { clientName, client, toolsResult } of toolsResults) {
|
||||
if (!toolsResult) continue
|
||||
const toolsResult = await client.listTools().catch((e) => {
|
||||
log.error("failed to get tools", { clientName, error: e.message })
|
||||
const failedStatus = {
|
||||
status: "failed" as const,
|
||||
error: e instanceof Error ? e.message : String(e),
|
||||
}
|
||||
s.status[clientName] = failedStatus
|
||||
delete s.clients[clientName]
|
||||
return undefined
|
||||
})
|
||||
if (!toolsResult) {
|
||||
continue
|
||||
}
|
||||
const mcpConfig = config[clientName]
|
||||
const entry = isMcpConfigured(mcpConfig) ? mcpConfig : undefined
|
||||
const timeout = entry?.timeout ?? defaultTimeout
|
||||
|
||||
63
packages/opencode/src/provider/model-detection.ts
Normal file
63
packages/opencode/src/provider/model-detection.ts
Normal file
@@ -0,0 +1,63 @@
|
||||
import z from "zod"
|
||||
import { iife } from "@/util/iife"
|
||||
import { Log } from "@/util/log"
|
||||
import { Provider } from "./provider"
|
||||
|
||||
export namespace ProviderModelDetection {
|
||||
export async function detect(provider: Provider.Info): Promise<string[] | undefined> {
|
||||
const log = Log.create({ service: "provider.model-detection" })
|
||||
|
||||
const model = Object.values(provider.models)[0]
|
||||
const providerNPM = model?.api?.npm ?? "@ai-sdk/openai-compatible"
|
||||
const providerBaseURL = provider.options["baseURL"] ?? model?.api?.url ?? ""
|
||||
|
||||
const detectedModels = await iife(async () => {
|
||||
try {
|
||||
if (providerNPM === "@ai-sdk/openai-compatible" && providerBaseURL) {
|
||||
log.info("using OpenAI-compatible method", { providerID: provider.id })
|
||||
return await ProviderModelDetection.OpenAICompatible.listModels(providerBaseURL, provider)
|
||||
}
|
||||
} catch (error) {
|
||||
log.warn(`failed to detect models\n${error}`, { providerID: provider.id })
|
||||
}
|
||||
})
|
||||
|
||||
if (!detectedModels || detectedModels.length === 0) return
|
||||
|
||||
log.info("detected models", { providerID: provider.id, count: detectedModels.length })
|
||||
return detectedModels
|
||||
}
|
||||
}
|
||||
|
||||
export namespace ProviderModelDetection.OpenAICompatible {
|
||||
const OpenAICompatibleResponse = z.object({
|
||||
object: z.string(),
|
||||
data: z.array(
|
||||
z.object({
|
||||
id: z.string(),
|
||||
object: z.string().optional(),
|
||||
created: z.number().optional(),
|
||||
owned_by: z.string().optional(),
|
||||
}),
|
||||
),
|
||||
})
|
||||
type OpenAICompatibleResponse = z.infer<typeof OpenAICompatibleResponse>
|
||||
|
||||
export async function listModels(baseURL: string, provider: Provider.Info): Promise<string[]> {
|
||||
const fetchFn = provider.options["fetch"] ?? fetch
|
||||
const apiKey = provider.options["apiKey"] ?? provider.key ?? ""
|
||||
const headers = new Headers()
|
||||
if (apiKey) headers.append("Authorization", `Bearer ${apiKey}`)
|
||||
|
||||
const res = await fetchFn(`${baseURL}/models`, {
|
||||
headers,
|
||||
signal: AbortSignal.timeout(3 * 1000),
|
||||
})
|
||||
if (!res.ok) throw new Error(`bad http status ${res.status}`)
|
||||
const parsed = OpenAICompatibleResponse.parse(await res.json())
|
||||
|
||||
return parsed.data
|
||||
.filter((model) => model.id && !model.id.includes("embedding") && !model.id.includes("embed"))
|
||||
.map((model) => model.id)
|
||||
}
|
||||
}
|
||||
@@ -64,7 +64,7 @@ export namespace ModelsDev {
|
||||
status: z.enum(["alpha", "beta", "deprecated"]).optional(),
|
||||
options: z.record(z.string(), z.any()),
|
||||
headers: z.record(z.string(), z.string()).optional(),
|
||||
provider: z.object({ npm: z.string().optional(), api: z.string().optional() }).optional(),
|
||||
provider: z.object({ npm: z.string() }).optional(),
|
||||
variants: z.record(z.string(), z.record(z.string(), z.any())).optional(),
|
||||
})
|
||||
export type Model = z.infer<typeof Model>
|
||||
|
||||
@@ -9,7 +9,7 @@ import { BunProc } from "../bun"
|
||||
import { Plugin } from "../plugin"
|
||||
import { ModelsDev } from "./models"
|
||||
import { NamedError } from "@opencode-ai/util/error"
|
||||
import { Auth } from "../auth"
|
||||
import { Auth, OAUTH_DUMMY_KEY } from "../auth"
|
||||
import { Env } from "../env"
|
||||
import { Instance } from "../project/instance"
|
||||
import { Flag } from "../flag/flag"
|
||||
@@ -629,7 +629,7 @@ export namespace Provider {
|
||||
family: model.family,
|
||||
api: {
|
||||
id: model.id,
|
||||
url: model.provider?.api ?? provider.api!,
|
||||
url: provider.api!,
|
||||
npm: model.provider?.npm ?? provider.npm ?? "@ai-sdk/openai-compatible",
|
||||
},
|
||||
status: model.status ?? "active",
|
||||
@@ -694,11 +694,52 @@ export namespace Provider {
|
||||
source: "custom",
|
||||
name: provider.name,
|
||||
env: provider.env ?? [],
|
||||
options: {},
|
||||
options: {
|
||||
...(provider.api && { baseURL: provider.api }),
|
||||
},
|
||||
models: mapValues(provider.models, (model) => fromModelsDevModel(provider, model)),
|
||||
}
|
||||
}
|
||||
|
||||
const ModelsList = z.object({
|
||||
object: z.string(),
|
||||
data: z.array(
|
||||
z
|
||||
.object({
|
||||
id: z.string(),
|
||||
object: z.string().optional(),
|
||||
created: z.number().optional(),
|
||||
owned_by: z.string().optional(),
|
||||
})
|
||||
.catchall(z.any()),
|
||||
),
|
||||
})
|
||||
type ModelsList = z.infer<typeof ModelsList>
|
||||
|
||||
async function listModels(provider: Info) {
|
||||
const baseURL = provider.options["baseURL"]
|
||||
const fetchFn = (provider.options["fetch"] as typeof fetch) ?? fetch
|
||||
const apiKey = provider.options["apiKey"] ?? provider.key ?? ""
|
||||
const headers = new Headers()
|
||||
if (apiKey && apiKey !== OAUTH_DUMMY_KEY) headers.append("Authorization", `Bearer ${apiKey}`)
|
||||
const models = await fetchFn(`${baseURL}/models`, {
|
||||
headers,
|
||||
signal: AbortSignal.timeout(3 * 1000),
|
||||
})
|
||||
.then(async (resp) => {
|
||||
if (!resp.ok) return
|
||||
return ModelsList.parse(await resp.json())
|
||||
})
|
||||
.catch((err) => {
|
||||
log.error(`Failed to fetch models from: ${baseURL}/models`, { error: err })
|
||||
})
|
||||
if (!models) return
|
||||
|
||||
return models.data
|
||||
.filter((model) => model.id && !model.id.includes("embedding") && !model.id.includes("embed"))
|
||||
.map((model) => model.id)
|
||||
}
|
||||
|
||||
const state = Instance.state(async () => {
|
||||
using _ = log.time("state")
|
||||
const config = await Config.get()
|
||||
@@ -781,7 +822,7 @@ export namespace Provider {
|
||||
existingModel?.api.npm ??
|
||||
modelsDev[providerID]?.npm ??
|
||||
"@ai-sdk/openai-compatible",
|
||||
url: model.provider?.api ?? provider?.api ?? existingModel?.api.url ?? modelsDev[providerID]?.api,
|
||||
url: provider?.api ?? existingModel?.api.url ?? modelsDev[providerID]?.api,
|
||||
},
|
||||
status: model.status ?? existingModel?.status ?? "active",
|
||||
name,
|
||||
@@ -930,6 +971,20 @@ export namespace Provider {
|
||||
mergeProvider(providerID, partial)
|
||||
}
|
||||
|
||||
// detect models and prune invalid ones
|
||||
await Promise.all(
|
||||
Object.values(providers).map(async (provider) => {
|
||||
const detected = await listModels(provider)
|
||||
if (!detected) return
|
||||
const detectedSet = new Set(detected)
|
||||
for (const modelID of Object.keys(provider.models)) {
|
||||
if (!detectedSet.has(modelID)) delete provider.models[modelID]
|
||||
}
|
||||
// TODO: add detected models not present in config/models.dev
|
||||
// for (const modelID of detected) {}
|
||||
}),
|
||||
)
|
||||
|
||||
for (const [providerID, provider] of Object.entries(providers)) {
|
||||
if (!isProviderAllowed(providerID)) {
|
||||
delete providers[providerID]
|
||||
|
||||
@@ -401,8 +401,6 @@ export namespace ProviderTransform {
|
||||
// https://v5.ai-sdk.dev/providers/ai-sdk-providers/xai
|
||||
case "@ai-sdk/deepinfra":
|
||||
// https://v5.ai-sdk.dev/providers/ai-sdk-providers/deepinfra
|
||||
case "venice-ai-sdk-provider":
|
||||
// https://docs.venice.ai/overview/guides/reasoning-models#reasoning-effort
|
||||
case "@ai-sdk/openai-compatible":
|
||||
return Object.fromEntries(WIDELY_SUPPORTED_EFFORTS.map((effort) => [effort, { reasoningEffort: effort }]))
|
||||
|
||||
|
||||
@@ -38,7 +38,6 @@ export namespace LLM {
|
||||
small?: boolean
|
||||
tools: Record<string, Tool>
|
||||
retries?: number
|
||||
toolChoice?: "auto" | "required" | "none"
|
||||
}
|
||||
|
||||
export type StreamOutput = StreamTextResult<ToolSet, unknown>
|
||||
@@ -206,7 +205,6 @@ export namespace LLM {
|
||||
providerOptions: ProviderTransform.providerOptions(input.model, params.options),
|
||||
activeTools: Object.keys(tools).filter((x) => x !== "invalid"),
|
||||
tools,
|
||||
toolChoice: input.toolChoice,
|
||||
maxOutputTokens,
|
||||
abortSignal: input.abort,
|
||||
headers: {
|
||||
|
||||
@@ -15,13 +15,6 @@ import type { Provider } from "@/provider/provider"
|
||||
export namespace MessageV2 {
|
||||
export const OutputLengthError = NamedError.create("MessageOutputLengthError", z.object({}))
|
||||
export const AbortedError = NamedError.create("MessageAbortedError", z.object({ message: z.string() }))
|
||||
export const StructuredOutputError = NamedError.create(
|
||||
"StructuredOutputError",
|
||||
z.object({
|
||||
message: z.string(),
|
||||
retries: z.number(),
|
||||
}),
|
||||
)
|
||||
export const AuthError = NamedError.create(
|
||||
"ProviderAuthError",
|
||||
z.object({
|
||||
@@ -46,29 +39,6 @@ export namespace MessageV2 {
|
||||
z.object({ message: z.string(), responseBody: z.string().optional() }),
|
||||
)
|
||||
|
||||
export const OutputFormatText = z
|
||||
.object({
|
||||
type: z.literal("text"),
|
||||
})
|
||||
.meta({
|
||||
ref: "OutputFormatText",
|
||||
})
|
||||
|
||||
export const OutputFormatJsonSchema = z
|
||||
.object({
|
||||
type: z.literal("json_schema"),
|
||||
schema: z.record(z.string(), z.any()).meta({ ref: "JSONSchema" }),
|
||||
retryCount: z.number().int().min(0).default(2),
|
||||
})
|
||||
.meta({
|
||||
ref: "OutputFormatJsonSchema",
|
||||
})
|
||||
|
||||
export const Format = z.discriminatedUnion("type", [OutputFormatText, OutputFormatJsonSchema]).meta({
|
||||
ref: "OutputFormat",
|
||||
})
|
||||
export type OutputFormat = z.infer<typeof Format>
|
||||
|
||||
const PartBase = z.object({
|
||||
id: z.string(),
|
||||
sessionID: z.string(),
|
||||
@@ -343,7 +313,6 @@ export namespace MessageV2 {
|
||||
time: z.object({
|
||||
created: z.number(),
|
||||
}),
|
||||
format: Format.optional(),
|
||||
summary: z
|
||||
.object({
|
||||
title: z.string().optional(),
|
||||
@@ -396,7 +365,6 @@ export namespace MessageV2 {
|
||||
NamedError.Unknown.Schema,
|
||||
OutputLengthError.Schema,
|
||||
AbortedError.Schema,
|
||||
StructuredOutputError.Schema,
|
||||
ContextOverflowError.Schema,
|
||||
APIError.Schema,
|
||||
])
|
||||
@@ -425,7 +393,6 @@ export namespace MessageV2 {
|
||||
write: z.number(),
|
||||
}),
|
||||
}),
|
||||
structured: z.any().optional(),
|
||||
variant: z.string().optional(),
|
||||
finish: z.string().optional(),
|
||||
}).meta({
|
||||
|
||||
@@ -50,16 +50,6 @@ import { Truncate } from "@/tool/truncation"
|
||||
// @ts-ignore
|
||||
globalThis.AI_SDK_LOG_WARNINGS = false
|
||||
|
||||
const STRUCTURED_OUTPUT_DESCRIPTION = `Use this tool to return your final response in the requested structured format.
|
||||
|
||||
IMPORTANT:
|
||||
- You MUST call this tool exactly once at the end of your response
|
||||
- The input must be valid JSON matching the required schema
|
||||
- Complete all necessary research and tool calls BEFORE calling this tool
|
||||
- This tool provides your final answer - no further actions are taken after calling it`
|
||||
|
||||
const STRUCTURED_OUTPUT_SYSTEM_PROMPT = `IMPORTANT: The user has requested structured output. You MUST use the StructuredOutput tool to provide your final response. Do NOT respond with plain text - you MUST call the StructuredOutput tool with your answer formatted according to the schema.`
|
||||
|
||||
export namespace SessionPrompt {
|
||||
const log = Log.create({ service: "session.prompt" })
|
||||
|
||||
@@ -106,7 +96,6 @@ export namespace SessionPrompt {
|
||||
.describe(
|
||||
"@deprecated tools and permissions have been merged, you can set permissions on the session itself now",
|
||||
),
|
||||
format: MessageV2.Format.optional(),
|
||||
system: z.string().optional(),
|
||||
variant: z.string().optional(),
|
||||
parts: z.array(
|
||||
@@ -287,11 +276,6 @@ export namespace SessionPrompt {
|
||||
|
||||
using _ = defer(() => cancel(sessionID))
|
||||
|
||||
// Structured output state
|
||||
// Note: On session resumption, state is reset but outputFormat is preserved
|
||||
// on the user message and will be retrieved from lastUser below
|
||||
let structuredOutput: unknown | undefined
|
||||
|
||||
let step = 0
|
||||
const session = await Session.get(sessionID)
|
||||
while (true) {
|
||||
@@ -605,16 +589,6 @@ export namespace SessionPrompt {
|
||||
messages: msgs,
|
||||
})
|
||||
|
||||
// Inject StructuredOutput tool if JSON schema mode enabled
|
||||
if (lastUser.format?.type === "json_schema") {
|
||||
tools["StructuredOutput"] = createStructuredOutputTool({
|
||||
schema: lastUser.format.schema,
|
||||
onSuccess(output) {
|
||||
structuredOutput = output
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
if (step === 1) {
|
||||
SessionSummary.summarize({
|
||||
sessionID: sessionID,
|
||||
@@ -645,19 +619,12 @@ export namespace SessionPrompt {
|
||||
|
||||
await Plugin.trigger("experimental.chat.messages.transform", {}, { messages: sessionMessages })
|
||||
|
||||
// Build system prompt, adding structured output instruction if needed
|
||||
const system = [...(await SystemPrompt.environment(model)), ...(await InstructionPrompt.system())]
|
||||
const format = lastUser.format ?? { type: "text" }
|
||||
if (format.type === "json_schema") {
|
||||
system.push(STRUCTURED_OUTPUT_SYSTEM_PROMPT)
|
||||
}
|
||||
|
||||
const result = await processor.process({
|
||||
user: lastUser,
|
||||
agent,
|
||||
abort,
|
||||
sessionID,
|
||||
system,
|
||||
system: [...(await SystemPrompt.environment(model)), ...(await InstructionPrompt.system())],
|
||||
messages: [
|
||||
...MessageV2.toModelMessages(sessionMessages, model),
|
||||
...(isLastStep
|
||||
@@ -671,33 +638,7 @@ export namespace SessionPrompt {
|
||||
],
|
||||
tools,
|
||||
model,
|
||||
toolChoice: format.type === "json_schema" ? "required" : undefined,
|
||||
})
|
||||
|
||||
// If structured output was captured, save it and exit immediately
|
||||
// This takes priority because the StructuredOutput tool was called successfully
|
||||
if (structuredOutput !== undefined) {
|
||||
processor.message.structured = structuredOutput
|
||||
processor.message.finish = processor.message.finish ?? "stop"
|
||||
await Session.updateMessage(processor.message)
|
||||
break
|
||||
}
|
||||
|
||||
// Check if model finished (finish reason is not "tool-calls" or "unknown")
|
||||
const modelFinished = processor.message.finish && !["tool-calls", "unknown"].includes(processor.message.finish)
|
||||
|
||||
if (modelFinished && !processor.message.error) {
|
||||
if (format.type === "json_schema") {
|
||||
// Model stopped without calling StructuredOutput tool
|
||||
processor.message.error = new MessageV2.StructuredOutputError({
|
||||
message: "Model did not produce structured output",
|
||||
retries: 0,
|
||||
}).toObject()
|
||||
await Session.updateMessage(processor.message)
|
||||
break
|
||||
}
|
||||
}
|
||||
|
||||
if (result === "stop") break
|
||||
if (result === "compact") {
|
||||
await SessionCompaction.create({
|
||||
@@ -728,8 +669,7 @@ export namespace SessionPrompt {
|
||||
return Provider.defaultModel()
|
||||
}
|
||||
|
||||
/** @internal Exported for testing */
|
||||
export async function resolveTools(input: {
|
||||
async function resolveTools(input: {
|
||||
agent: Agent.Info
|
||||
model: Provider.Model
|
||||
session: Session.Info
|
||||
@@ -909,36 +849,6 @@ export namespace SessionPrompt {
|
||||
return tools
|
||||
}
|
||||
|
||||
/** @internal Exported for testing */
|
||||
export function createStructuredOutputTool(input: {
|
||||
schema: Record<string, any>
|
||||
onSuccess: (output: unknown) => void
|
||||
}): AITool {
|
||||
// Remove $schema property if present (not needed for tool input)
|
||||
const { $schema, ...toolSchema } = input.schema
|
||||
|
||||
return tool({
|
||||
id: "StructuredOutput" as any,
|
||||
description: STRUCTURED_OUTPUT_DESCRIPTION,
|
||||
inputSchema: jsonSchema(toolSchema as any),
|
||||
async execute(args) {
|
||||
// AI SDK validates args against inputSchema before calling execute()
|
||||
input.onSuccess(args)
|
||||
return {
|
||||
output: "Structured output captured successfully.",
|
||||
title: "Structured Output",
|
||||
metadata: { valid: true },
|
||||
}
|
||||
},
|
||||
toModelOutput(result) {
|
||||
return {
|
||||
type: "text",
|
||||
value: result.output,
|
||||
}
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
async function createUserMessage(input: PromptInput) {
|
||||
const agent = await Agent.get(input.agent ?? (await Agent.defaultAgent()))
|
||||
|
||||
@@ -960,7 +870,6 @@ export namespace SessionPrompt {
|
||||
agent: agent.name,
|
||||
model,
|
||||
system: input.system,
|
||||
format: input.format,
|
||||
variant,
|
||||
}
|
||||
using _ = defer(() => InstructionPrompt.clear(info.id))
|
||||
|
||||
@@ -1,233 +0,0 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import path from "path"
|
||||
import { Session } from "../../src/session"
|
||||
import { SessionPrompt } from "../../src/session/prompt"
|
||||
import { Log } from "../../src/util/log"
|
||||
import { Instance } from "../../src/project/instance"
|
||||
import { MessageV2 } from "../../src/session/message-v2"
|
||||
|
||||
const projectRoot = path.join(__dirname, "../..")
|
||||
Log.init({ print: false })
|
||||
|
||||
// Skip tests if no API key is available
|
||||
const hasApiKey = !!process.env.ANTHROPIC_API_KEY
|
||||
|
||||
// Helper to run test within Instance context
|
||||
async function withInstance<T>(fn: () => Promise<T>): Promise<T> {
|
||||
return Instance.provide({
|
||||
directory: projectRoot,
|
||||
fn,
|
||||
})
|
||||
}
|
||||
|
||||
describe("StructuredOutput Integration", () => {
|
||||
test.skipIf(!hasApiKey)(
|
||||
"produces structured output with simple schema",
|
||||
async () => {
|
||||
await withInstance(async () => {
|
||||
const session = await Session.create({ title: "Structured Output Test" })
|
||||
|
||||
const result = await SessionPrompt.prompt({
|
||||
sessionID: session.id,
|
||||
parts: [
|
||||
{
|
||||
type: "text",
|
||||
text: "What is 2 + 2? Provide a simple answer.",
|
||||
},
|
||||
],
|
||||
format: {
|
||||
type: "json_schema",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
answer: { type: "number", description: "The numerical answer" },
|
||||
explanation: { type: "string", description: "Brief explanation" },
|
||||
},
|
||||
required: ["answer"],
|
||||
},
|
||||
retryCount: 0,
|
||||
},
|
||||
})
|
||||
|
||||
// Verify structured output was captured (only on assistant messages)
|
||||
expect(result.info.role).toBe("assistant")
|
||||
if (result.info.role === "assistant") {
|
||||
expect(result.info.structured).toBeDefined()
|
||||
expect(typeof result.info.structured).toBe("object")
|
||||
|
||||
const output = result.info.structured as any
|
||||
expect(output.answer).toBe(4)
|
||||
|
||||
// Verify no error was set
|
||||
expect(result.info.error).toBeUndefined()
|
||||
}
|
||||
|
||||
// Clean up
|
||||
// Note: Not removing session to avoid race with background SessionSummary.summarize
|
||||
})
|
||||
},
|
||||
60000,
|
||||
)
|
||||
|
||||
test.skipIf(!hasApiKey)(
|
||||
"produces structured output with nested objects",
|
||||
async () => {
|
||||
await withInstance(async () => {
|
||||
const session = await Session.create({ title: "Nested Schema Test" })
|
||||
|
||||
const result = await SessionPrompt.prompt({
|
||||
sessionID: session.id,
|
||||
parts: [
|
||||
{
|
||||
type: "text",
|
||||
text: "Tell me about Anthropic company in a structured format.",
|
||||
},
|
||||
],
|
||||
format: {
|
||||
type: "json_schema",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
company: {
|
||||
type: "object",
|
||||
properties: {
|
||||
name: { type: "string" },
|
||||
founded: { type: "number" },
|
||||
},
|
||||
required: ["name", "founded"],
|
||||
},
|
||||
products: {
|
||||
type: "array",
|
||||
items: { type: "string" },
|
||||
},
|
||||
},
|
||||
required: ["company"],
|
||||
},
|
||||
retryCount: 0,
|
||||
},
|
||||
})
|
||||
|
||||
// Verify structured output was captured (only on assistant messages)
|
||||
expect(result.info.role).toBe("assistant")
|
||||
if (result.info.role === "assistant") {
|
||||
expect(result.info.structured).toBeDefined()
|
||||
const output = result.info.structured as any
|
||||
|
||||
expect(output.company).toBeDefined()
|
||||
expect(output.company.name).toBe("Anthropic")
|
||||
expect(typeof output.company.founded).toBe("number")
|
||||
|
||||
if (output.products) {
|
||||
expect(Array.isArray(output.products)).toBe(true)
|
||||
}
|
||||
|
||||
// Verify no error was set
|
||||
expect(result.info.error).toBeUndefined()
|
||||
}
|
||||
|
||||
// Clean up
|
||||
// Note: Not removing session to avoid race with background SessionSummary.summarize
|
||||
})
|
||||
},
|
||||
60000,
|
||||
)
|
||||
|
||||
test.skipIf(!hasApiKey)(
|
||||
"works with text outputFormat (default)",
|
||||
async () => {
|
||||
await withInstance(async () => {
|
||||
const session = await Session.create({ title: "Text Output Test" })
|
||||
|
||||
const result = await SessionPrompt.prompt({
|
||||
sessionID: session.id,
|
||||
parts: [
|
||||
{
|
||||
type: "text",
|
||||
text: "Say hello.",
|
||||
},
|
||||
],
|
||||
format: {
|
||||
type: "text",
|
||||
},
|
||||
})
|
||||
|
||||
// Verify no structured output (text mode) and no error
|
||||
expect(result.info.role).toBe("assistant")
|
||||
if (result.info.role === "assistant") {
|
||||
expect(result.info.structured).toBeUndefined()
|
||||
expect(result.info.error).toBeUndefined()
|
||||
}
|
||||
|
||||
// Verify we got a response with parts
|
||||
expect(result.parts.length).toBeGreaterThan(0)
|
||||
|
||||
// Clean up
|
||||
// Note: Not removing session to avoid race with background SessionSummary.summarize
|
||||
})
|
||||
},
|
||||
60000,
|
||||
)
|
||||
|
||||
test.skipIf(!hasApiKey)(
|
||||
"stores outputFormat on user message",
|
||||
async () => {
|
||||
await withInstance(async () => {
|
||||
const session = await Session.create({ title: "OutputFormat Storage Test" })
|
||||
|
||||
await SessionPrompt.prompt({
|
||||
sessionID: session.id,
|
||||
parts: [
|
||||
{
|
||||
type: "text",
|
||||
text: "What is 1 + 1?",
|
||||
},
|
||||
],
|
||||
format: {
|
||||
type: "json_schema",
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
result: { type: "number" },
|
||||
},
|
||||
required: ["result"],
|
||||
},
|
||||
retryCount: 3,
|
||||
},
|
||||
})
|
||||
|
||||
// Get all messages from session
|
||||
const messages = await Session.messages({ sessionID: session.id })
|
||||
const userMessage = messages.find((m) => m.info.role === "user")
|
||||
|
||||
// Verify outputFormat was stored on user message
|
||||
expect(userMessage).toBeDefined()
|
||||
if (userMessage?.info.role === "user") {
|
||||
expect(userMessage.info.format).toBeDefined()
|
||||
expect(userMessage.info.format?.type).toBe("json_schema")
|
||||
if (userMessage.info.format?.type === "json_schema") {
|
||||
expect(userMessage.info.format.retryCount).toBe(3)
|
||||
}
|
||||
}
|
||||
|
||||
// Clean up
|
||||
// Note: Not removing session to avoid race with background SessionSummary.summarize
|
||||
})
|
||||
},
|
||||
60000,
|
||||
)
|
||||
|
||||
test("unit test: StructuredOutputError is properly structured", () => {
|
||||
const error = new MessageV2.StructuredOutputError({
|
||||
message: "Failed to produce valid structured output after 3 attempts",
|
||||
retries: 3,
|
||||
})
|
||||
|
||||
expect(error.name).toBe("StructuredOutputError")
|
||||
expect(error.data.message).toContain("3 attempts")
|
||||
expect(error.data.retries).toBe(3)
|
||||
|
||||
const obj = error.toObject()
|
||||
expect(obj.name).toBe("StructuredOutputError")
|
||||
expect(obj.data.retries).toBe(3)
|
||||
})
|
||||
})
|
||||
@@ -1,385 +0,0 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import { MessageV2 } from "../../src/session/message-v2"
|
||||
import { SessionPrompt } from "../../src/session/prompt"
|
||||
|
||||
describe("structured-output.OutputFormat", () => {
|
||||
test("parses text format", () => {
|
||||
const result = MessageV2.Format.safeParse({ type: "text" })
|
||||
expect(result.success).toBe(true)
|
||||
if (result.success) {
|
||||
expect(result.data.type).toBe("text")
|
||||
}
|
||||
})
|
||||
|
||||
test("parses json_schema format with defaults", () => {
|
||||
const result = MessageV2.Format.safeParse({
|
||||
type: "json_schema",
|
||||
schema: { type: "object", properties: { name: { type: "string" } } },
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
if (result.success) {
|
||||
expect(result.data.type).toBe("json_schema")
|
||||
if (result.data.type === "json_schema") {
|
||||
expect(result.data.retryCount).toBe(2) // default value
|
||||
}
|
||||
}
|
||||
})
|
||||
|
||||
test("parses json_schema format with custom retryCount", () => {
|
||||
const result = MessageV2.Format.safeParse({
|
||||
type: "json_schema",
|
||||
schema: { type: "object" },
|
||||
retryCount: 5,
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
if (result.success && result.data.type === "json_schema") {
|
||||
expect(result.data.retryCount).toBe(5)
|
||||
}
|
||||
})
|
||||
|
||||
test("rejects invalid type", () => {
|
||||
const result = MessageV2.Format.safeParse({ type: "invalid" })
|
||||
expect(result.success).toBe(false)
|
||||
})
|
||||
|
||||
test("rejects json_schema without schema", () => {
|
||||
const result = MessageV2.Format.safeParse({ type: "json_schema" })
|
||||
expect(result.success).toBe(false)
|
||||
})
|
||||
|
||||
test("rejects negative retryCount", () => {
|
||||
const result = MessageV2.Format.safeParse({
|
||||
type: "json_schema",
|
||||
schema: { type: "object" },
|
||||
retryCount: -1,
|
||||
})
|
||||
expect(result.success).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe("structured-output.StructuredOutputError", () => {
|
||||
test("creates error with message and retries", () => {
|
||||
const error = new MessageV2.StructuredOutputError({
|
||||
message: "Failed to validate",
|
||||
retries: 3,
|
||||
})
|
||||
|
||||
expect(error.name).toBe("StructuredOutputError")
|
||||
expect(error.data.message).toBe("Failed to validate")
|
||||
expect(error.data.retries).toBe(3)
|
||||
})
|
||||
|
||||
test("converts to object correctly", () => {
|
||||
const error = new MessageV2.StructuredOutputError({
|
||||
message: "Test error",
|
||||
retries: 2,
|
||||
})
|
||||
|
||||
const obj = error.toObject()
|
||||
expect(obj.name).toBe("StructuredOutputError")
|
||||
expect(obj.data.message).toBe("Test error")
|
||||
expect(obj.data.retries).toBe(2)
|
||||
})
|
||||
|
||||
test("isInstance correctly identifies error", () => {
|
||||
const error = new MessageV2.StructuredOutputError({
|
||||
message: "Test",
|
||||
retries: 1,
|
||||
})
|
||||
|
||||
expect(MessageV2.StructuredOutputError.isInstance(error)).toBe(true)
|
||||
expect(MessageV2.StructuredOutputError.isInstance({ name: "other" })).toBe(false)
|
||||
})
|
||||
})
|
||||
|
||||
describe("structured-output.UserMessage", () => {
|
||||
test("user message accepts outputFormat", () => {
|
||||
const result = MessageV2.User.safeParse({
|
||||
id: "test-id",
|
||||
sessionID: "test-session",
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: "default",
|
||||
model: { providerID: "anthropic", modelID: "claude-3" },
|
||||
outputFormat: {
|
||||
type: "json_schema",
|
||||
schema: { type: "object" },
|
||||
},
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
})
|
||||
|
||||
test("user message works without outputFormat (optional)", () => {
|
||||
const result = MessageV2.User.safeParse({
|
||||
id: "test-id",
|
||||
sessionID: "test-session",
|
||||
role: "user",
|
||||
time: { created: Date.now() },
|
||||
agent: "default",
|
||||
model: { providerID: "anthropic", modelID: "claude-3" },
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
describe("structured-output.AssistantMessage", () => {
|
||||
const baseAssistantMessage = {
|
||||
id: "test-id",
|
||||
sessionID: "test-session",
|
||||
role: "assistant" as const,
|
||||
parentID: "parent-id",
|
||||
modelID: "claude-3",
|
||||
providerID: "anthropic",
|
||||
mode: "default",
|
||||
agent: "default",
|
||||
path: { cwd: "/test", root: "/test" },
|
||||
cost: 0.001,
|
||||
tokens: { input: 100, output: 50, reasoning: 0, cache: { read: 0, write: 0 } },
|
||||
time: { created: Date.now() },
|
||||
}
|
||||
|
||||
test("assistant message accepts structured", () => {
|
||||
const result = MessageV2.Assistant.safeParse({
|
||||
...baseAssistantMessage,
|
||||
structured: { company: "Anthropic", founded: 2021 },
|
||||
})
|
||||
expect(result.success).toBe(true)
|
||||
if (result.success) {
|
||||
expect(result.data.structured).toEqual({ company: "Anthropic", founded: 2021 })
|
||||
}
|
||||
})
|
||||
|
||||
test("assistant message works without structured_output (optional)", () => {
|
||||
const result = MessageV2.Assistant.safeParse(baseAssistantMessage)
|
||||
expect(result.success).toBe(true)
|
||||
})
|
||||
})
|
||||
|
||||
describe("structured-output.createStructuredOutputTool", () => {
|
||||
test("creates tool with correct id", () => {
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema: { type: "object", properties: { name: { type: "string" } } },
|
||||
onSuccess: () => {},
|
||||
})
|
||||
|
||||
// AI SDK tool type doesn't expose id, but we set it internally
|
||||
expect((tool as any).id).toBe("StructuredOutput")
|
||||
})
|
||||
|
||||
test("creates tool with description", () => {
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema: { type: "object" },
|
||||
onSuccess: () => {},
|
||||
})
|
||||
|
||||
expect(tool.description).toContain("structured format")
|
||||
})
|
||||
|
||||
test("creates tool with schema as inputSchema", () => {
|
||||
const schema = {
|
||||
type: "object",
|
||||
properties: {
|
||||
company: { type: "string" },
|
||||
founded: { type: "number" },
|
||||
},
|
||||
required: ["company"],
|
||||
}
|
||||
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema,
|
||||
onSuccess: () => {},
|
||||
})
|
||||
|
||||
// AI SDK wraps schema in { jsonSchema: {...} }
|
||||
expect(tool.inputSchema).toBeDefined()
|
||||
const inputSchema = tool.inputSchema as any
|
||||
expect(inputSchema.jsonSchema?.properties?.company).toBeDefined()
|
||||
expect(inputSchema.jsonSchema?.properties?.founded).toBeDefined()
|
||||
})
|
||||
|
||||
test("strips $schema property from inputSchema", () => {
|
||||
const schema = {
|
||||
$schema: "http://json-schema.org/draft-07/schema#",
|
||||
type: "object",
|
||||
properties: { name: { type: "string" } },
|
||||
}
|
||||
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema,
|
||||
onSuccess: () => {},
|
||||
})
|
||||
|
||||
// AI SDK wraps schema in { jsonSchema: {...} }
|
||||
const inputSchema = tool.inputSchema as any
|
||||
expect(inputSchema.jsonSchema?.$schema).toBeUndefined()
|
||||
})
|
||||
|
||||
test("execute calls onSuccess with valid args", async () => {
|
||||
let capturedOutput: unknown
|
||||
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema: { type: "object", properties: { name: { type: "string" } } },
|
||||
onSuccess: (output) => {
|
||||
capturedOutput = output
|
||||
},
|
||||
})
|
||||
|
||||
expect(tool.execute).toBeDefined()
|
||||
const testArgs = { name: "Test Company" }
|
||||
const result = await tool.execute!(testArgs, {
|
||||
toolCallId: "test-call-id",
|
||||
messages: [],
|
||||
abortSignal: undefined as any,
|
||||
})
|
||||
|
||||
expect(capturedOutput).toEqual(testArgs)
|
||||
expect(result.output).toBe("Structured output captured successfully.")
|
||||
expect(result.metadata.valid).toBe(true)
|
||||
})
|
||||
|
||||
test("AI SDK validates schema before execute - missing required field", async () => {
|
||||
// Note: The AI SDK validates the input against the schema BEFORE calling execute()
|
||||
// So invalid inputs never reach the tool's execute function
|
||||
// This test documents the expected schema behavior
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
name: { type: "string" },
|
||||
age: { type: "number" },
|
||||
},
|
||||
required: ["name", "age"],
|
||||
},
|
||||
onSuccess: () => {},
|
||||
})
|
||||
|
||||
// The schema requires both 'name' and 'age'
|
||||
expect(tool.inputSchema).toBeDefined()
|
||||
const inputSchema = tool.inputSchema as any
|
||||
expect(inputSchema.jsonSchema?.required).toContain("name")
|
||||
expect(inputSchema.jsonSchema?.required).toContain("age")
|
||||
})
|
||||
|
||||
test("AI SDK validates schema types before execute - wrong type", async () => {
|
||||
// Note: The AI SDK validates the input against the schema BEFORE calling execute()
|
||||
// So invalid inputs never reach the tool's execute function
|
||||
// This test documents the expected schema behavior
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
count: { type: "number" },
|
||||
},
|
||||
required: ["count"],
|
||||
},
|
||||
onSuccess: () => {},
|
||||
})
|
||||
|
||||
// The schema defines 'count' as a number
|
||||
expect(tool.inputSchema).toBeDefined()
|
||||
const inputSchema = tool.inputSchema as any
|
||||
expect(inputSchema.jsonSchema?.properties?.count?.type).toBe("number")
|
||||
})
|
||||
|
||||
test("execute handles nested objects", async () => {
|
||||
let capturedOutput: unknown
|
||||
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
user: {
|
||||
type: "object",
|
||||
properties: {
|
||||
name: { type: "string" },
|
||||
email: { type: "string" },
|
||||
},
|
||||
required: ["name"],
|
||||
},
|
||||
},
|
||||
required: ["user"],
|
||||
},
|
||||
onSuccess: (output) => {
|
||||
capturedOutput = output
|
||||
},
|
||||
})
|
||||
|
||||
// Valid nested object - AI SDK validates before calling execute()
|
||||
const validResult = await tool.execute!(
|
||||
{ user: { name: "John", email: "john@test.com" } },
|
||||
{
|
||||
toolCallId: "test-call-id",
|
||||
messages: [],
|
||||
abortSignal: undefined as any,
|
||||
},
|
||||
)
|
||||
|
||||
expect(capturedOutput).toEqual({ user: { name: "John", email: "john@test.com" } })
|
||||
expect(validResult.metadata.valid).toBe(true)
|
||||
|
||||
// Verify schema has correct nested structure
|
||||
const inputSchema = tool.inputSchema as any
|
||||
expect(inputSchema.jsonSchema?.properties?.user?.type).toBe("object")
|
||||
expect(inputSchema.jsonSchema?.properties?.user?.properties?.name?.type).toBe("string")
|
||||
expect(inputSchema.jsonSchema?.properties?.user?.required).toContain("name")
|
||||
})
|
||||
|
||||
test("execute handles arrays", async () => {
|
||||
let capturedOutput: unknown
|
||||
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema: {
|
||||
type: "object",
|
||||
properties: {
|
||||
tags: {
|
||||
type: "array",
|
||||
items: { type: "string" },
|
||||
},
|
||||
},
|
||||
required: ["tags"],
|
||||
},
|
||||
onSuccess: (output) => {
|
||||
capturedOutput = output
|
||||
},
|
||||
})
|
||||
|
||||
// Valid array - AI SDK validates before calling execute()
|
||||
const validResult = await tool.execute!(
|
||||
{ tags: ["a", "b", "c"] },
|
||||
{
|
||||
toolCallId: "test-call-id",
|
||||
messages: [],
|
||||
abortSignal: undefined as any,
|
||||
},
|
||||
)
|
||||
|
||||
expect(capturedOutput).toEqual({ tags: ["a", "b", "c"] })
|
||||
expect(validResult.metadata.valid).toBe(true)
|
||||
|
||||
// Verify schema has correct array structure
|
||||
const inputSchema = tool.inputSchema as any
|
||||
expect(inputSchema.jsonSchema?.properties?.tags?.type).toBe("array")
|
||||
expect(inputSchema.jsonSchema?.properties?.tags?.items?.type).toBe("string")
|
||||
})
|
||||
|
||||
test("toModelOutput returns text value", () => {
|
||||
const tool = SessionPrompt.createStructuredOutputTool({
|
||||
schema: { type: "object" },
|
||||
onSuccess: () => {},
|
||||
})
|
||||
|
||||
expect(tool.toModelOutput).toBeDefined()
|
||||
const modelOutput = tool.toModelOutput!({
|
||||
output: "Test output",
|
||||
title: "Test",
|
||||
metadata: { valid: true },
|
||||
})
|
||||
|
||||
expect(modelOutput.type).toBe("text")
|
||||
expect(modelOutput.value).toBe("Test output")
|
||||
})
|
||||
|
||||
// Note: Retry behavior is handled by the AI SDK and the prompt loop, not the tool itself
|
||||
// The tool simply calls onSuccess when execute() is called with valid args
|
||||
// See prompt.ts loop() for actual retry logic
|
||||
})
|
||||
@@ -57,7 +57,6 @@ import type {
|
||||
McpLocalConfig,
|
||||
McpRemoteConfig,
|
||||
McpStatusResponses,
|
||||
OutputFormat,
|
||||
Part as Part2,
|
||||
PartDeleteErrors,
|
||||
PartDeleteResponses,
|
||||
@@ -1474,7 +1473,6 @@ export class Session extends HeyApiClient {
|
||||
tools?: {
|
||||
[key: string]: boolean
|
||||
}
|
||||
format?: OutputFormat
|
||||
system?: string
|
||||
variant?: string
|
||||
parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
|
||||
@@ -1493,7 +1491,6 @@ export class Session extends HeyApiClient {
|
||||
{ in: "body", key: "agent" },
|
||||
{ in: "body", key: "noReply" },
|
||||
{ in: "body", key: "tools" },
|
||||
{ in: "body", key: "format" },
|
||||
{ in: "body", key: "system" },
|
||||
{ in: "body", key: "variant" },
|
||||
{ in: "body", key: "parts" },
|
||||
@@ -1564,7 +1561,6 @@ export class Session extends HeyApiClient {
|
||||
tools?: {
|
||||
[key: string]: boolean
|
||||
}
|
||||
format?: OutputFormat
|
||||
system?: string
|
||||
variant?: string
|
||||
parts?: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
|
||||
@@ -1583,7 +1579,6 @@ export class Session extends HeyApiClient {
|
||||
{ in: "body", key: "agent" },
|
||||
{ in: "body", key: "noReply" },
|
||||
{ in: "body", key: "tools" },
|
||||
{ in: "body", key: "format" },
|
||||
{ in: "body", key: "system" },
|
||||
{ in: "body", key: "variant" },
|
||||
{ in: "body", key: "parts" },
|
||||
|
||||
@@ -90,22 +90,6 @@ export type EventFileEdited = {
|
||||
}
|
||||
}
|
||||
|
||||
export type OutputFormatText = {
|
||||
type: "text"
|
||||
}
|
||||
|
||||
export type JsonSchema = {
|
||||
[key: string]: unknown
|
||||
}
|
||||
|
||||
export type OutputFormatJsonSchema = {
|
||||
type: "json_schema"
|
||||
schema: JsonSchema
|
||||
retryCount?: number
|
||||
}
|
||||
|
||||
export type OutputFormat = OutputFormatText | OutputFormatJsonSchema
|
||||
|
||||
export type FileDiff = {
|
||||
file: string
|
||||
before: string
|
||||
@@ -122,7 +106,6 @@ export type UserMessage = {
|
||||
time: {
|
||||
created: number
|
||||
}
|
||||
format?: OutputFormat
|
||||
summary?: {
|
||||
title?: string
|
||||
body?: string
|
||||
@@ -169,14 +152,6 @@ export type MessageAbortedError = {
|
||||
}
|
||||
}
|
||||
|
||||
export type StructuredOutputError = {
|
||||
name: "StructuredOutputError"
|
||||
data: {
|
||||
message: string
|
||||
retries: number
|
||||
}
|
||||
}
|
||||
|
||||
export type ContextOverflowError = {
|
||||
name: "ContextOverflowError"
|
||||
data: {
|
||||
@@ -214,7 +189,6 @@ export type AssistantMessage = {
|
||||
| UnknownError
|
||||
| MessageOutputLengthError
|
||||
| MessageAbortedError
|
||||
| StructuredOutputError
|
||||
| ContextOverflowError
|
||||
| ApiError
|
||||
parentID: string
|
||||
@@ -238,7 +212,6 @@ export type AssistantMessage = {
|
||||
write: number
|
||||
}
|
||||
}
|
||||
structured?: unknown
|
||||
variant?: string
|
||||
finish?: string
|
||||
}
|
||||
@@ -868,7 +841,6 @@ export type EventSessionError = {
|
||||
| UnknownError
|
||||
| MessageOutputLengthError
|
||||
| MessageAbortedError
|
||||
| StructuredOutputError
|
||||
| ContextOverflowError
|
||||
| ApiError
|
||||
}
|
||||
@@ -1549,7 +1521,6 @@ export type ProviderConfig = {
|
||||
}
|
||||
provider?: {
|
||||
npm: string
|
||||
api: string
|
||||
}
|
||||
/**
|
||||
* Variant-specific configuration
|
||||
@@ -3431,7 +3402,6 @@ export type SessionPromptData = {
|
||||
tools?: {
|
||||
[key: string]: boolean
|
||||
}
|
||||
format?: OutputFormat
|
||||
system?: string
|
||||
variant?: string
|
||||
parts: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
|
||||
@@ -3619,7 +3589,6 @@ export type SessionPromptAsyncData = {
|
||||
tools?: {
|
||||
[key: string]: boolean
|
||||
}
|
||||
format?: OutputFormat
|
||||
system?: string
|
||||
variant?: string
|
||||
parts: Array<TextPartInput | FilePartInput | AgentPartInput | SubtaskPartInput>
|
||||
@@ -4069,7 +4038,6 @@ export type ProviderListResponses = {
|
||||
}
|
||||
provider?: {
|
||||
npm: string
|
||||
api: string
|
||||
}
|
||||
variants?: {
|
||||
[key: string]: {
|
||||
|
||||
@@ -45,7 +45,7 @@ description: هيّئ الوكلاء المتخصصين واستخدمهم.
|
||||
|
||||
---
|
||||
|
||||
### استخدام Build
|
||||
### استخدام build
|
||||
|
||||
_الوضع_: `primary`
|
||||
|
||||
@@ -53,7 +53,7 @@ Build هو الوكيل الأساسي **الافتراضي** مع تفعيل ج
|
||||
|
||||
---
|
||||
|
||||
### استخدام Plan
|
||||
### استخدام plan
|
||||
|
||||
_الوضع_: `primary`
|
||||
|
||||
@@ -67,7 +67,7 @@ _الوضع_: `primary`
|
||||
|
||||
---
|
||||
|
||||
### استخدام General
|
||||
### استخدام general
|
||||
|
||||
_الوضع_: `subagent`
|
||||
|
||||
@@ -75,7 +75,7 @@ _الوضع_: `subagent`
|
||||
|
||||
---
|
||||
|
||||
### استخدام Explore
|
||||
### استخدام explore
|
||||
|
||||
_الوضع_: `subagent`
|
||||
|
||||
@@ -83,7 +83,7 @@ _الوضع_: `subagent`
|
||||
|
||||
---
|
||||
|
||||
### استخدام Compaction
|
||||
### استخدام compaction
|
||||
|
||||
_الوضع_: `primary`
|
||||
|
||||
@@ -91,7 +91,7 @@ _الوضع_: `primary`
|
||||
|
||||
---
|
||||
|
||||
### استخدام Title
|
||||
### استخدام title
|
||||
|
||||
_الوضع_: `primary`
|
||||
|
||||
@@ -99,7 +99,7 @@ _الوضع_: `primary`
|
||||
|
||||
---
|
||||
|
||||
### استخدام Summary
|
||||
### استخدام summary
|
||||
|
||||
_الوضع_: `primary`
|
||||
|
||||
|
||||
@@ -69,10 +69,10 @@ opencode attach [url]
|
||||
يتيح ذلك استخدام واجهة TUI مع واجهة خلفية لـ OpenCode تعمل عن بعد. على سبيل المثال:
|
||||
|
||||
```bash
|
||||
# ابدأ خادم الواجهة الخلفية للوصول عبر الويب/الجوال
|
||||
# Start the backend server for web/mobile access
|
||||
opencode web --port 4096 --hostname 0.0.0.0
|
||||
|
||||
# في محطة طرفية (terminal) أخرى، اربط TUI بالواجهة الخلفية قيد التشغيل
|
||||
# In another terminal, attach the TUI to the running backend
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
@@ -326,10 +326,10 @@ opencode run Explain the use of context in Go
|
||||
يمكنك أيضا الإرفاق بمثيل `opencode serve` قيد التشغيل لتجنّب زمن الإقلاع البارد لخوادم MCP في كل تشغيل:
|
||||
|
||||
```bash
|
||||
# ابدأ خادمًا بلا واجهة في محطة طرفية واحدة
|
||||
# Start a headless server in one terminal
|
||||
opencode serve
|
||||
|
||||
# في محطة طرفية أخرى، شغّل الأوامر التي ترتبط به
|
||||
# In another terminal, run commands that attach to it
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
|
||||
@@ -54,11 +54,11 @@ Focus on the failing tests and suggest fixes.
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"command": {
|
||||
// يصبح هذا اسم الأمر
|
||||
// This becomes the name of the command
|
||||
"test": {
|
||||
// هذه هي المطالبة التي ستُرسل إلى LLM
|
||||
// This is the prompt that will be sent to the LLM
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
|
||||
// يظهر هذا كوصف في TUI
|
||||
// This is shown as the description in the TUI
|
||||
"description": "Run tests with coverage",
|
||||
"agent": "build",
|
||||
"model": "anthropic/claude-3-5-sonnet-20241022"
|
||||
|
||||
@@ -14,7 +14,7 @@ description: استخدام ملف إعدادات OpenCode بصيغة JSON.
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
// إعدادات السمة
|
||||
// Theme configuration
|
||||
"theme": "opencode",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"autoupdate": true,
|
||||
@@ -326,7 +326,7 @@ opencode run "Hello world"
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
|
||||
"tools": {
|
||||
// تعطيل أدوات تعديل الملفات لوكيل المراجعة فقط
|
||||
// Disable file modification tools for review-only agent
|
||||
"write": false,
|
||||
"edit": false,
|
||||
},
|
||||
|
||||
@@ -221,7 +221,7 @@ How is authentication handled in @packages/functions/src/api/index.ts
|
||||
|
||||
انتقل إليه باستخدام مفتاح **Tab**. سترى مؤشرا لذلك في الزاوية السفلية اليمنى.
|
||||
|
||||
```bash frame="none" title="التبديل إلى وضع Plan"
|
||||
```bash frame="none" title="Switch to Plan mode"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
|
||||
@@ -278,10 +278,10 @@ opencode mcp logout my-oauth-server
|
||||
إذا فشل خادم MCP بعيد في المصادقة، يمكنك تشخيص المشكلة باستخدام:
|
||||
|
||||
```bash
|
||||
# عرض حالة المصادقة لجميع الخوادم القادرة على OAuth
|
||||
# View auth status for all OAuth-capable servers
|
||||
opencode mcp auth list
|
||||
|
||||
# تصحيح الاتصال وتدفق OAuth لخادم محدد
|
||||
# Debug connection and OAuth flow for a specific server
|
||||
opencode mcp debug my-oauth-server
|
||||
```
|
||||
|
||||
|
||||
@@ -12,13 +12,13 @@ description: إعداد الوكلاء والشهادات المخصصة.
|
||||
يتبع OpenCode متغيرات بيئة الوكيل القياسية.
|
||||
|
||||
```bash
|
||||
# وكيل HTTPS (موصى به)
|
||||
# HTTPS proxy (recommended)
|
||||
export HTTPS_PROXY=https://proxy.example.com:8080
|
||||
|
||||
# وكيل HTTP (إذا لم يتوفر HTTPS)
|
||||
# HTTP proxy (if HTTPS not available)
|
||||
export HTTP_PROXY=http://proxy.example.com:8080
|
||||
|
||||
# تجاوز الوكيل للخادم المحلي (مطلوب)
|
||||
# Bypass proxy for local server (required)
|
||||
export NO_PROXY=localhost,127.0.0.1
|
||||
```
|
||||
|
||||
|
||||
@@ -89,7 +89,7 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
فلا تتردد في فتح PR.
|
||||
|
||||
:::note
|
||||
لم تجد المزوّد الذي تبحث عنه؟ أرسل PR.
|
||||
ألا ترى مزوّدا هنا؟ أرسل PR.
|
||||
:::
|
||||
|
||||
---
|
||||
@@ -139,13 +139,13 @@ OpenCode Zen هي قائمة نماذج يوفّرها فريق OpenCode وقد
|
||||
عيّن أحد متغيرات البيئة التالية أثناء تشغيل opencode:
|
||||
|
||||
```bash
|
||||
# الخيار 1: استخدام مفاتيح وصول AWS
|
||||
# Option 1: Using AWS access keys
|
||||
AWS_ACCESS_KEY_ID=XXX AWS_SECRET_ACCESS_KEY=YYY opencode
|
||||
|
||||
# الخيار 2: استخدام ملف تعريف AWS مسمّى
|
||||
# Option 2: Using named AWS profile
|
||||
AWS_PROFILE=my-profile opencode
|
||||
|
||||
# الخيار 3: استخدام رمز Bedrock المميز (bearer token)
|
||||
# Option 3: Using Bedrock bearer token
|
||||
AWS_BEARER_TOKEN_BEDROCK=XXX opencode
|
||||
```
|
||||
|
||||
|
||||
@@ -366,7 +366,7 @@ OPENCODE_ENABLE_EXA=1 opencode
|
||||
|
||||
---
|
||||
|
||||
### أنماط التجاهل
|
||||
### Ignore patterns
|
||||
|
||||
لتضمين ملفات يتم تجاهلها عادة، أنشئ ملف `.ignore` في جذر المشروع. يمكن لهذا الملف السماح صراحة بمسارات محددة.
|
||||
|
||||
|
||||
@@ -290,12 +290,12 @@ How is auth handled in @packages/functions/src/api/index.ts?
|
||||
<Tabs>
|
||||
<TabItem label="Linux/macOS">
|
||||
```bash
|
||||
# مثال لـ nano أو vim
|
||||
# Example for nano or vim
|
||||
export EDITOR=nano
|
||||
export EDITOR=vim
|
||||
|
||||
# للمحررات الرسومية، VS Code، Cursor، VSCodium، Windsurf، Zed، إلخ.
|
||||
# قم بتضمين --wait
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
export EDITOR="code --wait"
|
||||
```
|
||||
|
||||
@@ -308,8 +308,8 @@ How is auth handled in @packages/functions/src/api/index.ts?
|
||||
```bash
|
||||
set EDITOR=notepad
|
||||
|
||||
# للمحررات الرسومية، VS Code، Cursor، VSCodium، Windsurf، Zed، إلخ.
|
||||
# قم بتضمين --wait
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
set EDITOR=code --wait
|
||||
```
|
||||
|
||||
@@ -321,8 +321,8 @@ How is auth handled in @packages/functions/src/api/index.ts?
|
||||
```powershell
|
||||
$env:EDITOR = "notepad"
|
||||
|
||||
# للمحررات الرسومية، VS Code، Cursor، VSCodium، Windsurf، Zed، إلخ.
|
||||
# قم بتضمين --wait
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
$env:EDITOR = "code --wait"
|
||||
```
|
||||
|
||||
|
||||
@@ -113,10 +113,10 @@ OPENCODE_SERVER_PASSWORD=secret opencode web
|
||||
يمكنك إرفاق واجهة terminal (TUI) بخادم ويب قيد التشغيل:
|
||||
|
||||
```bash
|
||||
# ابدأ خادم الويب
|
||||
# Start the web server
|
||||
opencode web --port 4096
|
||||
|
||||
# في محطة طرفية أخرى، اربط TUI
|
||||
# In another terminal, attach the TUI
|
||||
opencode attach http://localhost:4096
|
||||
```
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ ACP je otvoreni protokol koji standardizira komunikaciju između uređivača kod
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Konfiguriši
|
||||
|
||||
Da biste koristili OpenCode putem ACP-a, konfigurirajte svoj uređivač da pokrene naredbu `opencode acp`.
|
||||
|
||||
@@ -140,7 +140,7 @@ Ova konfiguracija postavlja CodeCompanion da koristi OpenCode kao ACP chat agent
|
||||
|
||||
Ako trebate proslijediti varijable okruženja (kao što je `OPENCODE_API_KEY`), pogledajte [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) u dokumentaciji CodeCompanion.nvim.
|
||||
|
||||
## Podržane funkcije
|
||||
## Podrška
|
||||
|
||||
OpenCode radi isto kroz ACP kao i u terminalu. Podržane su sve funkcije:
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Možete se prebacivati između agenata tokom sesije ili ih pozvati spominj
|
||||
|
||||
## Vrste
|
||||
|
||||
Postoje dvije vrste agenata u OpenCode: primarni agenti i podagenti.
|
||||
Postoje dvije vrste agenata u OpenCode; primarni agenti i podagenti.
|
||||
|
||||
---
|
||||
|
||||
@@ -45,17 +45,17 @@ OpenCode dolazi sa dva ugrađena primarna agenta i dva ugrađena subagenta.
|
||||
|
||||
---
|
||||
|
||||
### Build agent
|
||||
### Koristi build
|
||||
|
||||
_Režim_: `primary`
|
||||
_Mode_: `primary`
|
||||
|
||||
Build je **podrazumevani** primarni agent sa svim omogućenim alatima. Ovo je standardni agent za razvojni rad gdje vam je potreban pun pristup operacijama datoteka i sistemskim komandama.
|
||||
|
||||
---
|
||||
|
||||
### Plan agent
|
||||
### Koristi plan
|
||||
|
||||
_Režim_: `primary`
|
||||
_Mode_: `primary`
|
||||
|
||||
Ograničeni agent dizajniran za planiranje i analizu. Koristimo sistem dozvola kako bismo vam pružili veću kontrolu i spriječili neželjene promjene.
|
||||
Prema zadanim postavkama, sve sljedeće je postavljeno na `ask`:
|
||||
@@ -67,47 +67,47 @@ Ovaj agent je koristan kada želite da LLM analizira kod, predloži promjene ili
|
||||
|
||||
---
|
||||
|
||||
### General agent
|
||||
### Koristi general
|
||||
|
||||
_Režim_: `subagent`
|
||||
_Mode_: `subagent`
|
||||
|
||||
Agent opće namjene za istraživanje složenih pitanja i izvršavanje zadataka u više koraka. Ima potpuni pristup alatima (osim todo), tako da može mijenjati fajlove kada je to potrebno. Koristite ovo za paralelno pokretanje više jedinica rada.
|
||||
|
||||
---
|
||||
|
||||
### Explore agent
|
||||
### Koristi explore
|
||||
|
||||
_Režim_: `subagent`
|
||||
_Mode_: `subagent`
|
||||
|
||||
Brzi agent samo za čitanje za istraživanje kodnih baza. Nije moguće mijenjati fajlove. Koristite ovo kada trebate brzo pronaći datoteke po uzorku, pretražiti kod za ključne riječi ili odgovoriti na pitanja o bazi kodova.
|
||||
|
||||
---
|
||||
|
||||
### Compaction agent
|
||||
### Koristi compaction
|
||||
|
||||
_Režim_: `primary`
|
||||
_Mode_: `primary`
|
||||
|
||||
Skriveni sistemski agent koji sažima dugi kontekst u manji sažetak. Pokreće se automatski kada je potrebno i ne može se odabrati u korisničkom interfejsu.
|
||||
|
||||
---
|
||||
|
||||
### Title agent
|
||||
### Koristi title
|
||||
|
||||
_Režim_: `primary`
|
||||
_Mode_: `primary`
|
||||
|
||||
Skriveni sistemski agent koji generiše kratke naslove sesija. Pokreće se automatski i ne može se odabrati u korisničkom interfejsu.
|
||||
|
||||
---
|
||||
|
||||
### Summary agent
|
||||
### Koristi summary
|
||||
|
||||
_Režim_: `primary`
|
||||
_Mode_: `primary`
|
||||
|
||||
Skriveni sistemski agent koji kreira sažetke sesije. Pokreće se automatski i ne može se odabrati u korisničkom interfejsu.
|
||||
|
||||
---
|
||||
|
||||
## Korištenje
|
||||
## Upotreba
|
||||
|
||||
1. Za primarne agente, koristite taster **Tab** za kretanje kroz njih tokom sesije. Također možete koristiti svoju konfiguriranu vezu tipke `switch_agent`.
|
||||
|
||||
@@ -215,7 +215,7 @@ Pogledajmo ove opcije konfiguracije detaljno.
|
||||
|
||||
---
|
||||
|
||||
### Opis
|
||||
### Description
|
||||
|
||||
Koristite opciju `description` da pružite kratak opis onoga što agent radi i kada ga koristiti.
|
||||
|
||||
@@ -233,7 +233,7 @@ Ovo je **obavezna** opcija konfiguracije.
|
||||
|
||||
---
|
||||
|
||||
### Temperatura
|
||||
### Temperature
|
||||
|
||||
Kontrolišite slučajnost i kreativnost odgovora LLM-a pomoću `temperature` konfiguracije.
|
||||
|
||||
@@ -280,7 +280,7 @@ Ako temperatura nije navedena, OpenCode koristi standardne postavke specifične
|
||||
|
||||
---
|
||||
|
||||
### Maksimalan broj koraka
|
||||
### Max steps
|
||||
|
||||
Kontrolirajte maksimalni broj iteracija agenta koje agent može izvesti prije nego što bude prisiljen da odgovori samo tekstom. Ovo omogućava korisnicima koji žele kontrolirati troškove da postave ograničenje na akcije agenta.
|
||||
|
||||
@@ -306,7 +306,7 @@ Naslijeđeno polje `maxSteps` je zastarjelo. Umjesto toga koristite `steps`.
|
||||
|
||||
---
|
||||
|
||||
### Onemogućavanje
|
||||
### Disable
|
||||
|
||||
Postavite na `true` da onemogućite agenta.
|
||||
|
||||
@@ -322,7 +322,7 @@ Postavite na `true` da onemogućite agenta.
|
||||
|
||||
---
|
||||
|
||||
### Upit
|
||||
### Prompt
|
||||
|
||||
Navedite prilagođenu sistemsku prompt datoteku za ovog agenta sa `prompt` konfiguracijom. Datoteka s promptom treba da sadrži upute specifične za svrhu agenta.
|
||||
|
||||
@@ -362,7 +362,7 @@ ID modela u vašoj OpenCode konfiguraciji koristi format `provider/model-id`. Na
|
||||
|
||||
---
|
||||
|
||||
### Alati
|
||||
### Tools
|
||||
|
||||
Kontrolirajte koji su alati dostupni u ovom agentu koristeći konfiguraciju `tools`. Možete omogućiti ili onemogućiti određene alate tako što ćete ih postaviti na `true` ili `false`.
|
||||
|
||||
@@ -409,7 +409,7 @@ Također možete koristiti zamjenske znakove za kontrolu više alata odjednom. N
|
||||
|
||||
---
|
||||
|
||||
### Dozvole
|
||||
### Permissions
|
||||
|
||||
Možete konfigurirati dozvole za upravljanje radnjama koje agent može poduzeti. Trenutno se dozvole za alate `edit`, `bash` i `webfetch` mogu konfigurirati na:
|
||||
|
||||
@@ -521,7 +521,7 @@ Budući da posljednje podudarno pravilo ima prednost, prvo postavite zamjenski z
|
||||
|
||||
---
|
||||
|
||||
### Način rada
|
||||
### Mode
|
||||
|
||||
Kontrolirajte način rada agenta koristeći konfiguraciju `mode`. Opcija `mode` se koristi da specificira kako se agent može koristiti.
|
||||
|
||||
@@ -539,7 +539,7 @@ Opcija `mode` se može postaviti na `primary`, `subagent` ili `all`. Ako `mode`
|
||||
|
||||
---
|
||||
|
||||
### Skriveno
|
||||
### Hidden
|
||||
|
||||
Sakrij podagenta iz `@` menija za automatsko dovršavanje sa `hidden: true`. Korisno za interne podagente koje bi drugi agenti trebali programski pozvati samo preko Task alata.
|
||||
|
||||
@@ -562,7 +562,7 @@ Odnosi se samo na `mode: subagent` agente.
|
||||
|
||||
---
|
||||
|
||||
### Dozvole zadataka
|
||||
### Task permissions
|
||||
|
||||
Kontrolirajte koje podagente agent može pozvati preko Task alata sa `permission.task`. Koristi glob uzorke za fleksibilno uparivanje.
|
||||
|
||||
@@ -595,7 +595,7 @@ Korisnici uvijek mogu pozvati bilo kojeg subagenta direktno preko `@` menija za
|
||||
|
||||
---
|
||||
|
||||
### Boja
|
||||
### Color
|
||||
|
||||
Prilagodite vizualni izgled agenta u korisničkom sučelju s opcijom `color`. Ovo utiče na to kako se agent pojavljuje u interfejsu.
|
||||
|
||||
@@ -634,7 +634,7 @@ Vrijednosti se kreću od 0.0 do 1.0. Niže vrijednosti su više fokusirane, viš
|
||||
|
||||
---
|
||||
|
||||
### Dodatno
|
||||
### Additional
|
||||
|
||||
Sve druge opcije koje navedete u konfiguraciji agenta će biti **direktno proslijeđene** dobavljaču kao opcije modela. Ovo vam omogućava da koristite karakteristike i parametre specifične za provajdera.
|
||||
|
||||
@@ -661,7 +661,7 @@ Pokrenite `opencode models` da vidite listu dostupnih modela.
|
||||
|
||||
---
|
||||
|
||||
## Kreiranje agenata
|
||||
## Kreirajte agente
|
||||
|
||||
Možete kreirati nove agente koristeći sljedeću naredbu:
|
||||
|
||||
@@ -679,7 +679,7 @@ Ova interaktivna komanda će:
|
||||
|
||||
---
|
||||
|
||||
## Primjeri upotrebe
|
||||
## Slučajevi upotrebe
|
||||
|
||||
Evo nekoliko uobičajenih slučajeva upotrebe različitih agenata.
|
||||
|
||||
|
||||
@@ -11,7 +11,7 @@ OpenCode CLI po defaultu pokreće [TUI](/docs/tui) kada se pokrene bez ikakvih a
|
||||
opencode
|
||||
```
|
||||
|
||||
Ali takođe prihvata naredbe kao što je dokumentovano na ovoj stranici. Ovo vam omogućava programsku interakciju sa OpenCode.
|
||||
Ali takođe prihvata komande kao što je dokumentovano na ovoj stranici. Ovo vam omogućava programsku interakciju sa OpenCode.
|
||||
|
||||
```bash
|
||||
opencode run "Explain how closures work in JavaScript"
|
||||
@@ -21,36 +21,36 @@ opencode run "Explain how closures work in JavaScript"
|
||||
|
||||
### tui
|
||||
|
||||
Pokrenite OpenCode terminalski korisnički interfejs.
|
||||
Pokrenite korisnički interfejs OpenCode terminala.
|
||||
|
||||
```bash
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Kratko | Opis |
|
||||
| Zastava | Kratko | Opis |
|
||||
| ------------ | ------ | ------------------------------------------------------------------------ |
|
||||
| `--continue` | `-c` | Nastavite posljednju sesiju |
|
||||
| `--session` | `-s` | ID sesije za nastavak |
|
||||
| `--fork` | | Forkujte sesiju pri nastavku (koristiti sa `--continue` ili `--session`) |
|
||||
| `--prompt` | | Prompt za upotrebu |
|
||||
| `--model` | `-m` | Model za korištenje u obliku provider/model |
|
||||
| `--prompt` | | Uputstvo za upotrebu |
|
||||
| `--model` | `-m` | Model za korištenje u obliku dobavljača/modela |
|
||||
| `--agent` | | Agent za korištenje |
|
||||
| `--port` | | Port na kojem treba slušati |
|
||||
| `--hostname` | | Hostname na kojem treba slušati |
|
||||
| `--port` | | Port za slušanje na |
|
||||
| `--hostname` | | Slušajte ime hosta |
|
||||
|
||||
---
|
||||
|
||||
## Naredbe
|
||||
## Commands
|
||||
|
||||
OpenCode CLI takođe ima sljedeće naredbe.
|
||||
OpenCode CLI takođe ima sledeće komande.
|
||||
|
||||
---
|
||||
|
||||
### agent
|
||||
|
||||
Upravljajte OpenCode agentima.
|
||||
Upravljajte agentima za OpenCode.
|
||||
|
||||
```bash
|
||||
opencode agent [command]
|
||||
@@ -60,13 +60,13 @@ opencode agent [command]
|
||||
|
||||
### attach
|
||||
|
||||
Priključite terminal na već pokrenut OpenCode backend server pokrenut putem `serve` ili `web` naredbi.
|
||||
Priključite terminal na već pokrenut OpenCode backend server pokrenut putem `serve` ili `web` komandi.
|
||||
|
||||
```bash
|
||||
opencode attach [url]
|
||||
```
|
||||
|
||||
Ovo omogućava korištenje TUI-ja sa udaljenim OpenCode backend-om. Na primjer:
|
||||
Ovo omogućava korištenje TUI-ja sa udaljenim OpenCode backend-om. na primjer:
|
||||
|
||||
```bash
|
||||
# Start the backend server for web/mobile access
|
||||
@@ -76,11 +76,11 @@ opencode web --port 4096 --hostname 0.0.0.0
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Kratko | Opis |
|
||||
| Zastava | Kratko | Opis |
|
||||
| ----------- | ------ | ------------------------------------ |
|
||||
| `--dir` | | Radni direktorij za pokretanje TUI-a |
|
||||
| `--dir` | | Radni direktorij za pokretanje TUI u |
|
||||
| `--session` | `-s` | ID sesije za nastavak |
|
||||
|
||||
---
|
||||
@@ -93,7 +93,7 @@ Kreirajte novog agenta s prilagođenom konfiguracijom.
|
||||
opencode agent create
|
||||
```
|
||||
|
||||
Ova naredba će vas voditi kroz kreiranje novog agenta sa prilagođenim sistemskim promptom i konfiguracijom alata.
|
||||
Ova komanda će vas voditi kroz kreiranje novog agenta sa prilagođenim sistemskim promptom i konfiguracijom alata.
|
||||
|
||||
---
|
||||
|
||||
@@ -131,7 +131,7 @@ Kada se OpenCode pokrene, učitava dobavljače iz datoteke vjerodajnica. I ako p
|
||||
|
||||
#### list
|
||||
|
||||
Navodi sve autentifikovane dobavljače pohranjene u datoteci vjerodajnica.
|
||||
Navodi sve autentifikovane dobavljače pohranjene u datoteci akreditiva.
|
||||
|
||||
```bash
|
||||
opencode auth list
|
||||
@@ -157,7 +157,7 @@ opencode auth logout
|
||||
|
||||
### github
|
||||
|
||||
Upravljajte GitHub agentom za automatizaciju repozitorija.
|
||||
Upravljajte GitHub agentom za automatizaciju spremišta.
|
||||
|
||||
```bash
|
||||
opencode github [command]
|
||||
@@ -167,7 +167,7 @@ opencode github [command]
|
||||
|
||||
#### install
|
||||
|
||||
Instalirajte GitHub agenta u svoj repozitorij.
|
||||
Instalirajte GitHub agenta u svoje spremište.
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
@@ -179,24 +179,24 @@ Ovo postavlja neophodni tok rada GitHub Actions i vodi vas kroz proces konfigura
|
||||
|
||||
#### run
|
||||
|
||||
Pokrenite GitHub agent. Ovo se obično koristi u GitHub Actions.
|
||||
Pokrenite GitHub agent. Ovo se obično koristi u GitHub akcijama.
|
||||
|
||||
```bash
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### Opcije
|
||||
##### Zastave
|
||||
|
||||
| Opcija | Opis |
|
||||
| --------- | -------------------------------------- |
|
||||
| `--event` | GitHub mock event za pokretanje agenta |
|
||||
| `--token` | GitHub Personal Access Token |
|
||||
| Zastava | Opis |
|
||||
| --------- | -------------------------------------------- |
|
||||
| `--event` | GitHub lažni događaj za pokretanje agenta za |
|
||||
| `--token` | GitHub token ličnog pristupa |
|
||||
|
||||
---
|
||||
|
||||
### mcp
|
||||
|
||||
Upravljajte Model Context Protocol (MCP) serverima.
|
||||
Upravljajte serverima protokola konteksta modela.
|
||||
|
||||
```bash
|
||||
opencode mcp [command]
|
||||
@@ -212,7 +212,7 @@ Dodajte MCP server svojoj konfiguraciji.
|
||||
opencode mcp add
|
||||
```
|
||||
|
||||
Ova naredba će vas voditi kroz dodavanje lokalnog ili udaljenog MCP servera.
|
||||
Ova komanda će vas voditi kroz dodavanje lokalnog ili udaljenog MCP servera.
|
||||
|
||||
---
|
||||
|
||||
@@ -241,7 +241,7 @@ opencode mcp auth [name]
|
||||
```
|
||||
|
||||
Ako ne navedete ime servera, od vas će biti zatraženo da izaberete neki od dostupnih servera koji podržavaju OAuth.
|
||||
Također možete navesti servere koji podržavaju OAuth i njihov status autentifikacije.
|
||||
Također možete navesti servere koji podržavaju OAuth i njihov status provjere autentičnosti.
|
||||
|
||||
```bash
|
||||
opencode mcp auth list
|
||||
@@ -267,7 +267,7 @@ opencode mcp logout [name]
|
||||
|
||||
#### debug
|
||||
|
||||
Otklanjanje grešaka (debug) OAuth veze sa MCP serverom.
|
||||
Otklanjanje grešaka OAuth veze sa MCP serverom.
|
||||
|
||||
```bash
|
||||
opencode mcp debug <name>
|
||||
@@ -291,11 +291,11 @@ Opciono možete proslijediti ID provajdera za filtriranje modela po tom dobavlja
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Opis |
|
||||
| Zastava | Opis |
|
||||
| ----------- | ------------------------------------------------------------------------ |
|
||||
| `--refresh` | Osvježite keš modela sa models.dev |
|
||||
| `--refresh` | Osvježite predmemoriju modela sa models.dev |
|
||||
| `--verbose` | Koristite detaljniji izlaz modela (uključuje metapodatke poput troškova) |
|
||||
|
||||
Koristite `--refresh` zastavicu da ažurirate keširanu listu modela. Ovo je korisno kada su novi modeli dodani provajderu i želite da ih vidite u OpenCode.
|
||||
@@ -308,13 +308,13 @@ opencode models --refresh
|
||||
|
||||
### run
|
||||
|
||||
Pokrenite OpenCode u neinteraktivnom modu tako što ćete direktno proslijediti prompt.
|
||||
Pokrenite opencode u neinteraktivnom modu tako što ćete direktno proslijediti prompt.
|
||||
|
||||
```bash
|
||||
opencode run [message..]
|
||||
```
|
||||
|
||||
Ovo je korisno za skriptiranje, automatizaciju ili kada želite brz odgovor bez pokretanja punog TUI-ja. Na primjer:
|
||||
Ovo je korisno za skriptiranje, automatizaciju ili kada želite brz odgovor bez pokretanja punog TUI-ja. Na primjer.
|
||||
|
||||
```bash "opencode run"
|
||||
opencode run Explain the use of context in Go
|
||||
@@ -330,11 +330,11 @@ opencode serve
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Kratko | Opis |
|
||||
| Zastava | Kratko | Opis |
|
||||
| ------------ | ------ | ------------------------------------------------------------------------ |
|
||||
| `--command` | | Naredba za pokretanje, koristite poruku za argumente |
|
||||
| `--command` | | Naredba za pokretanje, koristite poruku za args |
|
||||
| `--continue` | `-c` | Nastavite posljednju sesiju |
|
||||
| `--session` | `-s` | ID sesije za nastavak |
|
||||
| `--fork` | | Forkujte sesiju pri nastavku (koristiti sa `--continue` ili `--session`) |
|
||||
@@ -344,29 +344,29 @@ opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
| `--file` | `-f` | Fajlovi koje treba priložiti poruci |
|
||||
| `--format` | | Format: default (formatiran) ili json (sirovi JSON događaji) |
|
||||
| `--title` | | Naslov sesije (koristi skraćeni prompt ako nije navedena vrijednost) |
|
||||
| `--attach` | | Priključite na pokrenuti OpenCode server (npr. http://localhost:4096) |
|
||||
| `--attach` | | Priključite na pokrenuti opencode server (npr. http://localhost:4096) |
|
||||
| `--port` | | Port za lokalni server (zadano na nasumični port) |
|
||||
|
||||
---
|
||||
|
||||
### serve
|
||||
|
||||
Pokrenite OpenCode headless server za API pristup. Pogledajte [server docs](/docs/server) za kompletan HTTP interfejs.
|
||||
Pokrenite OpenCode server bez glave za pristup API-ju. Pogledajte [server docs](/docs/server) za kompletan HTTP interfejs.
|
||||
|
||||
```bash
|
||||
opencode serve
|
||||
```
|
||||
|
||||
Ovo pokreće HTTP server koji pruža API pristup funkcionalnosti OpenCode-a bez TUI interfejsa. Postavite `OPENCODE_SERVER_PASSWORD` da omogućite HTTP osnovnu auth (korisničko ime je zadano na `opencode`).
|
||||
Ovo pokreće HTTP server koji pruža API pristup funkcionalnosti otvorenog koda bez TUI interfejsa. Postavite `OPENCODE_SERVER_PASSWORD` da omogućite HTTP osnovnu auth (korisničko ime je zadano na `opencode`).
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Opis |
|
||||
| ------------ | ----------------------------------------------------- |
|
||||
| `--port` | Port na kojem treba slušati |
|
||||
| `--hostname` | Hostname na kojem treba slušati |
|
||||
| `--mdns` | Omogući mDNS otkrivanje |
|
||||
| `--cors` | Dodatni origin(i) pretraživača koji dozvoljavaju CORS |
|
||||
| Zastava | Opis |
|
||||
| ------------ | ---------------------------------------------------- |
|
||||
| `--port` | Port za slušanje na |
|
||||
| `--hostname` | Ime hosta za slušanje |
|
||||
| `--mdns` | Omogući mDNS otkrivanje |
|
||||
| `--cors` | Dodatni izvor(a) pretraživača koji dozvoljavaju CORS |
|
||||
|
||||
---
|
||||
|
||||
@@ -388,12 +388,12 @@ Navedite sve OpenCode sesije.
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### Opcije
|
||||
##### Zastave
|
||||
|
||||
| Opcija | Kratko | Opis |
|
||||
| ------------- | ------ | -------------------------------------- |
|
||||
| `--max-count` | `-n` | Ograničenje na N najnovijih sesija |
|
||||
| `--format` | | Izlazni format: table ili json (table) |
|
||||
| Zastava | Kratko | Opis |
|
||||
| ------------- | ------ | ----------------------------------------- |
|
||||
| `--max-count` | `-n` | Ograničenje na N najnovijih sesija |
|
||||
| `--format` | | Izlazni format: tablica ili json (tabela) |
|
||||
|
||||
---
|
||||
|
||||
@@ -405,14 +405,14 @@ Prikaži statistiku upotrebe tokena i troškova za vaše OpenCode sesije.
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Opis |
|
||||
| ----------- | ---------------------------------------------------------------------------------------------------------- |
|
||||
| `--days` | Prikaži statistiku za zadnjih N dana (sva vremena) |
|
||||
| `--tools` | Broj alata za prikaz (svi) |
|
||||
| `--models` | Prikaži raščlambu korištenja modela (skriveno prema zadanim postavkama). Proslijedite broj za prikaz top N |
|
||||
| `--project` | Filtriraj po projektu (svi projekti, prazan niz: trenutni projekt) |
|
||||
| Zastava | Opis |
|
||||
| ----------- | ----------------------------------------------------------------------------------------------------------- |
|
||||
| `--days` | Prikaži statistiku za zadnjih N dana (sva vremena) |
|
||||
| `--tools` | Broj alata za prikaz (svi) |
|
||||
| `--models` | Prikaži raščlambu korištenja modela (skriveno prema zadanim postavkama). Proslijedite broj za prikaz vrha N |
|
||||
| `--project` | Filtriraj po projektu (svi projekti, prazan niz: trenutni projekt) |
|
||||
|
||||
---
|
||||
|
||||
@@ -447,22 +447,22 @@ opencode import https://opncd.ai/s/abc123
|
||||
|
||||
### web
|
||||
|
||||
Pokrenite OpenCode headless server sa web interfejsom.
|
||||
Pokrenite OpenCode server bez glave sa web interfejsom.
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
```
|
||||
|
||||
Ovo pokreće HTTP server i otvara web pretraživač za pristup OpenCode-u preko web interfejsa. Postavite `OPENCODE_SERVER_PASSWORD` da omogućite HTTP osnovnu auth (korisničko ime je zadano na `opencode`).
|
||||
Ovo pokreće HTTP server i otvara web pretraživač za pristup OpenCode preko web interfejsa. Postavite `OPENCODE_SERVER_PASSWORD` da omogućite HTTP osnovnu auth (korisničko ime je zadano na `opencode`).
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Opis |
|
||||
| ------------ | ----------------------------------------------------- |
|
||||
| `--port` | Port na kojem treba slušati |
|
||||
| `--hostname` | Hostname na kojem treba slušati |
|
||||
| `--mdns` | Omogući mDNS otkrivanje |
|
||||
| `--cors` | Dodatni origin(i) pretraživača koji dozvoljavaju CORS |
|
||||
| Zastava | Opis |
|
||||
| ------------ | ---------------------------------------------------- |
|
||||
| `--port` | Port za slušanje na |
|
||||
| `--hostname` | Ime hosta za slušanje |
|
||||
| `--mdns` | Omogući mDNS otkrivanje |
|
||||
| `--cors` | Dodatni izvor(a) pretraživača koji dozvoljavaju CORS |
|
||||
|
||||
---
|
||||
|
||||
@@ -474,15 +474,15 @@ Pokrenite ACP (Agent Client Protocol) server.
|
||||
opencode acp
|
||||
```
|
||||
|
||||
Ova naredba pokreće ACP server koji komunicira preko stdin/stdout koristeći nd-JSON.
|
||||
Ova komanda pokreće ACP server koji komunicira preko stdin/stdout koristeći nd-JSON.
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Opis |
|
||||
| ------------ | --------------------------- |
|
||||
| `--cwd` | Radni direktorij |
|
||||
| `--port` | Port na kojem treba slušati |
|
||||
| `--hostname` | Hostname na kojem slušati |
|
||||
| Zastava | Opis |
|
||||
| ------------ | ------------------- |
|
||||
| `--cwd` | Radni imenik |
|
||||
| `--port` | Port za slušanje na |
|
||||
| `--hostname` | Slušajte ime hosta |
|
||||
|
||||
---
|
||||
|
||||
@@ -494,12 +494,12 @@ Deinstalirajte OpenCode i uklonite sve povezane datoteke.
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Kratko | Opis |
|
||||
| Zastava | Kratko | Opis |
|
||||
| --------------- | ------ | --------------------------------------------- |
|
||||
| `--keep-config` | `-c` | Sačuvajte konfiguracijske datoteke |
|
||||
| `--keep-data` | `-d` | Sačuvajte podatke i snimke sesije |
|
||||
| `--keep-config` | `-c` | Čuvajte konfiguracijske datoteke |
|
||||
| `--keep-data` | `-d` | Čuvajte podatke i snimke sesije |
|
||||
| `--dry-run` | | Pokažite šta bi bilo uklonjeno bez uklanjanja |
|
||||
| `--force` | `-f` | Preskoči upite za potvrdu |
|
||||
|
||||
@@ -507,7 +507,7 @@ opencode uninstall
|
||||
|
||||
### upgrade
|
||||
|
||||
Ažurira OpenCode na najnoviju verziju ili određenu verziju.
|
||||
Ažurira opencode na najnoviju verziju ili određenu verziju.
|
||||
|
||||
```bash
|
||||
opencode upgrade [target]
|
||||
@@ -525,76 +525,73 @@ Za nadogradnju na određenu verziju.
|
||||
opencode upgrade v0.1.48
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Zastave
|
||||
|
||||
| Opcija | Kratko | Opis |
|
||||
| Zastava | Kratko | Opis |
|
||||
| ---------- | ------ | ------------------------------------------------------- |
|
||||
| `--method` | `-m` | Korišteni način instalacije; curl, npm, pnpm, bun, brew |
|
||||
|
||||
---
|
||||
|
||||
## Globalne opcije
|
||||
## Globalne zastave
|
||||
|
||||
OpenCode CLI prihvata sljedeće globalne zastavice.
|
||||
|
||||
| Opcija | Kratko | Opis |
|
||||
| -------------- | ------ | ----------------------------------------- |
|
||||
| `--help` | `-h` | Prikaži pomoć |
|
||||
| `--version` | `-v` | Ispiši broj verzije |
|
||||
| `--print-logs` | | Ispis logova u stderr |
|
||||
| `--log-level` | | Nivo logovanja (DEBUG, INFO, WARN, ERROR) |
|
||||
CLI otvorenog koda uzima sljedeće globalne zastavice.
|
||||
| Zastava | Kratko | Opis
|
||||
|-------------- | ----- | ------------------------------------ |
|
||||
| `--help` | `-h` | Prikaži pomoć |
|
||||
| `--version` | `-v` | Odštampaj broj verzije |
|
||||
| `--print-logs` | | Ispis zapisnika u stderr |
|
||||
| `--log-level` | | Nivo dnevnika (DEBUG, INFO, WARN, ERROR) |
|
||||
|
||||
---
|
||||
|
||||
## Varijable okruženja
|
||||
|
||||
OpenCode se može konfigurirati pomoću varijabli okruženja.
|
||||
|
||||
| Varijabla | Tip | Opis |
|
||||
| ------------------------------------- | ------- | ------------------------------------------------------------------ |
|
||||
| `OPENCODE_AUTO_SHARE` | boolean | Automatski dijeli sesije |
|
||||
| `OPENCODE_GIT_BASH_PATH` | string | Putanja do Git Bash izvršne datoteke na Windows-u |
|
||||
| `OPENCODE_CONFIG` | string | Putanja do konfiguracijskog fajla |
|
||||
| `OPENCODE_CONFIG_DIR` | string | Putanja do konfiguracijskog direktorija |
|
||||
| `OPENCODE_CONFIG_CONTENT` | string | Inline json konfiguracijski sadržaj |
|
||||
| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | Onemogući automatske provjere ažuriranja |
|
||||
| `OPENCODE_DISABLE_PRUNE` | boolean | Onemogući brisanje (pruning) starih podataka |
|
||||
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | Onemogući automatsko ažuriranje naslova terminala |
|
||||
| `OPENCODE_PERMISSION` | string | Inline json konfiguracija dozvola |
|
||||
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | Onemogući podrazumijevane dodatke (plugins) |
|
||||
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | Onemogući automatsko preuzimanje LSP servera |
|
||||
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | Omogući eksperimentalne modele |
|
||||
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | Onemogući automatsko sažimanje konteksta |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | Onemogući čitanje iz `.claude` (prompt + vještine) |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | Onemogući čitanje `~/.claude/CLAUDE.md` |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | Onemogući učitavanje `.claude/skills` |
|
||||
| `OPENCODE_DISABLE_MODELS_FETCH` | boolean | Onemogući dohvaćanje modela iz udaljenih izvora |
|
||||
| `OPENCODE_FAKE_VCS` | string | Lažni VCS provajder za potrebe testiranja |
|
||||
| `OPENCODE_DISABLE_FILETIME_CHECK` | boolean | Onemogući provjeru vremena datoteke radi optimizacije |
|
||||
| `OPENCODE_CLIENT` | string | Identifikator klijenta (zadano na `cli`) |
|
||||
| `OPENCODE_ENABLE_EXA` | boolean | Omogući Exa alate za web pretraživanje |
|
||||
| `OPENCODE_SERVER_PASSWORD` | string | Omogući osnovnu autentifikaciju za `serve`/`web` |
|
||||
| `OPENCODE_SERVER_USERNAME` | string | Poništi osnovno korisničko ime autentifikacije (zadano `opencode`) |
|
||||
| `OPENCODE_MODELS_URL` | string | Prilagođeni URL za dohvaćanje konfiguracije modela |
|
||||
| Varijabilna | Vrsta | Opis
|
||||
|------------------------------------- | ------- | ------------------------------------------------- |
|
||||
| `OPENCODE_AUTO_SHARE` | boolean | Automatski dijeli sesije |
|
||||
| `OPENCODE_GIT_BASH_PATH` | string | Putanja do Git Bash izvršne datoteke na Windows |
|
||||
| `OPENCODE_CONFIG` | string | Put do konfiguracionog fajla |
|
||||
| `OPENCODE_CONFIG_DIR` | string | Put do konfiguracijskog direktorija |
|
||||
| `OPENCODE_CONFIG_CONTENT` | string | Inline json konfiguracijski sadržaj |
|
||||
| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | Onemogući automatske provjere ažuriranja |
|
||||
| `OPENCODE_DISABLE_PRUNE` | boolean | Onemogući orezivanje starih podataka |
|
||||
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boolean | Onemogući automatsko ažuriranje naslova terminala |
|
||||
| `OPENCODE_PERMISSION` | string | Umetnuta json konfiguracija dozvola |
|
||||
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boolean | Onemogući podrazumevane dodatke |
|
||||
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolean | Onemogući automatsko preuzimanje LSP servera |
|
||||
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | Omogući eksperimentalne modele |
|
||||
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | Onemogući automatsko sažimanje konteksta |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolean | Onemogući čitanje sa `.claude` (prompt + vještine) |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | Onemogući čitanje `~/.claude/CLAUDE.md` |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | Onemogući učitavanje `.claude/skills` |
|
||||
| `OPENCODE_DISABLE_MODELS_FETCH` | boolean | Onemogući dohvaćanje modela iz udaljenih izvora |
|
||||
| `OPENCODE_FAKE_VCS` | string | Lažni VCS provajder za potrebe testiranja |
|
||||
| `OPENCODE_DISABLE_FILETIME_CHECK` | boolean | Onemogući provjeru vremena datoteke radi optimizacije |
|
||||
| `OPENCODE_CLIENT` | string | Identifikator klijenta (zadano na `cli`) |
|
||||
| `OPENCODE_ENABLE_EXA` | boolean | Omogući Exa alate za web pretraživanje |
|
||||
| `OPENCODE_SERVER_PASSWORD` | string | Omogući osnovnu autorizaciju za `serve`/`web` |
|
||||
| `OPENCODE_SERVER_USERNAME` | string | Poništi osnovno korisničko ime autentifikacije (zadano `opencode`) |
|
||||
| `OPENCODE_MODELS_URL` | string | Prilagođeni URL za dohvaćanje konfiguracije modela |
|
||||
|
||||
---
|
||||
|
||||
### Eksperimentalno
|
||||
|
||||
Ove varijable okruženja omogućavaju eksperimentalne karakteristike koje se mogu promijeniti ili ukloniti.
|
||||
|
||||
| Varijabla | Tip | Opis |
|
||||
| ----------------------------------------------- | ------- | ------------------------------------------------- |
|
||||
| `OPENCODE_EXPERIMENTAL` | boolean | Omogući sve eksperimentalne funkcije |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | Omogući otkrivanje ikona |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolean | Onemogući kopiranje pri odabiru u TUI |
|
||||
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | number | Zadano vremensko ograničenje za bash naredbe u ms |
|
||||
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | number | Maksimalni izlazni tokeni za LLM odgovore |
|
||||
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | Omogući praćenje datoteka za cijeli direktorij |
|
||||
| `OPENCODE_EXPERIMENTAL_OXFMT` | boolean | Omogući oxfmt formatter |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolean | Omogući eksperimentalni LSP alat |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | Onemogući praćenje datoteka |
|
||||
| `OPENCODE_EXPERIMENTAL_EXA` | boolean | Omogući eksperimentalne Exa funkcije |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolean | Omogući eksperimentalnu provjeru tipa LSP |
|
||||
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolean | Omogući eksperimentalne Markdown funkcije |
|
||||
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | Omogući Plan mod |
|
||||
| Varijabilna | Vrsta | Opis
|
||||
|----------------------------------------------- | ------- | --------------------------------------- |
|
||||
| `OPENCODE_EXPERIMENTAL` | boolean | Omogući sve eksperimentalne funkcije |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | Omogući otkrivanje ikona |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolean | Onemogući kopiranje pri odabiru u TUI |
|
||||
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | broj | Zadano vremensko ograničenje za bash komande u ms |
|
||||
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | broj | Maksimalni izlazni tokeni za LLM odgovore |
|
||||
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | Omogući praćenje datoteka za cijeli dir |
|
||||
| `OPENCODE_EXPERIMENTAL_OXFMT` | boolean | Omogući oxfmt formatter |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolean | Omogući eksperimentalni LSP alat |
|
||||
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | Onemogući praćenje datoteka |
|
||||
| `OPENCODE_EXPERIMENTAL_EXA` | boolean | Omogući eksperimentalne Exa funkcije |
|
||||
| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolean | Omogući eksperimentalnu provjeru tipa LSP |
|
||||
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolean | Omogući eksperimentalne Markdown funkcije |
|
||||
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | Omogući režim plana |
|
||||
|
||||
@@ -13,7 +13,7 @@ Prilagođene komande su dodatak ugrađenim komandama kao što su `/init`, `/undo
|
||||
|
||||
---
|
||||
|
||||
## Kreiranje datoteka naredbi
|
||||
## Kreirajte komandne fajlove
|
||||
|
||||
Kreirajte markdown fajlove u direktorijumu `commands/` da definišete prilagođene komande.
|
||||
Kreiraj `.opencode/commands/test.md`:
|
||||
@@ -38,7 +38,7 @@ Koristite komandu tako što ćete upisati `/` nakon čega slijedi naziv komande.
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Konfiguriši
|
||||
|
||||
Možete dodati prilagođene komande kroz OpenCode konfiguraciju ili kreiranjem markdown datoteka u direktoriju `commands/`.
|
||||
|
||||
@@ -99,7 +99,7 @@ Ime markdown datoteke postaje ime naredbe. Na primjer, `test.md` vam omogućava
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija upita
|
||||
## Prompt config
|
||||
|
||||
Promptovi za prilagođene komande podržavaju nekoliko posebnih čuvara mjesta i sintakse.
|
||||
|
||||
@@ -190,7 +190,7 @@ Naredbe se pokreću u korijenskom direktoriju vašeg projekta i njihov izlaz pos
|
||||
|
||||
---
|
||||
|
||||
### Reference datoteka
|
||||
### Reference fajlova
|
||||
|
||||
Uključite datoteke u svoju naredbu koristeći `@` nakon čega slijedi naziv datoteke.
|
||||
|
||||
@@ -213,7 +213,7 @@ Pogledajmo detaljno opcije konfiguracije.
|
||||
|
||||
---
|
||||
|
||||
### Šablon
|
||||
### Template
|
||||
|
||||
Opcija `template` definira prompt koji će biti poslan LLM-u kada se naredba izvrši.
|
||||
|
||||
@@ -269,7 +269,7 @@ Ovo je **opciona** opcija konfiguracije. Ako nije navedeno, podrazumevano je va
|
||||
|
||||
---
|
||||
|
||||
### Podzadatak
|
||||
### Subtask
|
||||
|
||||
Koristite `subtask` boolean da prisilite naredbu da pokrene [subagent](/docs/agents/#subagents) pozivanje.
|
||||
Ovo je korisno ako želite da naredba ne zagađuje vaš primarni kontekst i da će **primorati** agenta da djeluje kao subagent,
|
||||
@@ -307,9 +307,9 @@ Ovo je **opciona** opcija konfiguracije.
|
||||
|
||||
---
|
||||
|
||||
## Ugrađene naredbe
|
||||
## Ugrađene
|
||||
|
||||
OpenCode uključuje nekoliko ugrađenih naredbi kao što su `/init`, `/undo`, `/redo`, `/share`, `/help`; [saznaj više](/docs/tui#commands).
|
||||
opencode uključuje nekoliko ugrađenih naredbi kao što su `/init`, `/undo`, `/redo`, `/share`, `/help`; [saznaj više](/docs/tui#commands).
|
||||
:::note
|
||||
Prilagođene komande mogu nadjačati ugrađene komande.
|
||||
:::
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Konfiguracija
|
||||
title: Config
|
||||
description: Korištenje OpenCode JSON konfiguracije.
|
||||
---
|
||||
|
||||
@@ -25,10 +25,10 @@ OpenCode podržava i **JSON** i **JSONC** (JSON sa komentarima) formate.
|
||||
|
||||
## Lokacije
|
||||
|
||||
Možete postaviti svoju konfiguraciju na nekoliko različitih lokacija i one imaju drugačiji redoslijed prioriteta.
|
||||
|
||||
Možete postaviti svoju konfiguraciju na nekoliko različitih lokacija i one imaju a
|
||||
drugačiji redosled prioriteta.
|
||||
:::note
|
||||
Konfiguracijski fajlovi se **spajaju**, ne zamjenjuju.
|
||||
Konfiguracijski fajlovi su **spojeni zajedno**, a ne zamijenjeni.
|
||||
:::
|
||||
Konfiguracijski fajlovi se spajaju, ne zamjenjuju. Kombiniraju se postavke sa sljedećih konfiguracijskih lokacija. Kasnije konfiguracije poništavaju prethodne samo za konfliktne ključeve. Nekonfliktne postavke iz svih konfiguracija su sačuvane.
|
||||
Na primjer, ako vaša globalna konfiguracija postavlja `theme: "opencode"` i `autoupdate: true`, a vaša projektna konfiguracija postavlja `model: "anthropic/claude-sonnet-4-5"`, konačna konfiguracija će uključivati sve tri postavke.
|
||||
@@ -39,13 +39,12 @@ Na primjer, ako vaša globalna konfiguracija postavlja `theme: "opencode"` i `au
|
||||
|
||||
Izvori konfiguracije se učitavaju ovim redoslijedom (kasniji izvori poništavaju ranije):
|
||||
|
||||
1. **Udaljena konfiguracija** (od `.well-known/opencode`) - organizacijske postavke
|
||||
1. **Udaljena konfiguracija** (od `.well-known/opencode`) - organizacione postavke
|
||||
2. **Globalna konfiguracija** (`~/.config/opencode/opencode.json`) - korisničke postavke
|
||||
3. **Prilagođena konfiguracija** (`OPENCODE_CONFIG` env var) - prilagođena preinačenja
|
||||
3. **Prilagođena konfiguracija** (`OPENCODE_CONFIG` env var) - prilagođena zaobilaženja
|
||||
4. **Konfiguracija projekta** (`opencode.json` u projektu) - postavke specifične za projekat
|
||||
5. **`.opencode` direktoriji** - agenti, komande, dodaci
|
||||
6. **Inline konfiguracija** (`OPENCODE_CONFIG_CONTENT` env var) - runtime preinačenja
|
||||
|
||||
6. **Inline config** (`OPENCODE_CONFIG_CONTENT` env var) - runtime nadjačava
|
||||
To znači da konfiguracije projekta mogu nadjačati globalne zadane postavke, a globalne konfiguracije mogu nadjačati postavke udaljene organizacije.
|
||||
:::note
|
||||
Direktoriji `.opencode` i `~/.config/opencode` koriste **imena u množini** za poddirektorije: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` i `themes/`. Pojedinačna imena (npr. `agent/`) su također podržana za kompatibilnost unatrag.
|
||||
@@ -53,9 +52,9 @@ Izvori konfiguracije se učitavaju ovim redoslijedom (kasniji izvori poništavaj
|
||||
|
||||
---
|
||||
|
||||
### Udaljeno (Remote)
|
||||
### Daljinski
|
||||
|
||||
Organizacije mogu pružiti zadanu konfiguraciju preko `.well-known/opencode` krajnje tačke. Ovo se automatski preuzima kada se autentifikujete kod provajdera koji to podržava.
|
||||
Organizacije mogu pružiti zadanu konfiguraciju preko `.well-known/opencode` krajnje točke. Ovo se automatski preuzima kada se autentifikujete kod provajdera koji to podržava.
|
||||
Prvo se učitava udaljena konfiguracija koja služi kao osnovni sloj. Svi ostali izvori konfiguracije (globalni, projektni) mogu nadjačati ove zadane postavke.
|
||||
Na primjer, ako vaša organizacija nudi MCP servere koji su po defaultu onemogućeni:
|
||||
|
||||
@@ -87,14 +86,14 @@ Možete omogućiti određene servere u vašoj lokalnoj konfiguraciji:
|
||||
|
||||
---
|
||||
|
||||
### Globalno
|
||||
### Global
|
||||
|
||||
Postavite svoju globalnu OpenCode konfiguraciju u `~/.config/opencode/opencode.json`. Koristite globalnu konfiguraciju za korisničke preferencije kao što su teme, provajderi ili veze tipki.
|
||||
Globalna konfiguracija poništava zadane postavke udaljene organizacije.
|
||||
|
||||
---
|
||||
|
||||
### Projekt
|
||||
### Project
|
||||
|
||||
Dodajte `opencode.json` u korijen projekta. Konfiguracija projekta ima najveći prioritet među standardnim konfiguracijskim datotekama - ona nadjačava globalne i udaljene konfiguracije.
|
||||
:::tip
|
||||
@@ -105,7 +104,7 @@ Ovo je također sigurno provjeriti u Git i koristi istu shemu kao globalna.
|
||||
|
||||
---
|
||||
|
||||
### Prilagođena konfiguracija
|
||||
### Custom config
|
||||
|
||||
Navedite prilagođenu putanju konfiguracijske datoteke koristeći varijablu okruženja `OPENCODE_CONFIG`.
|
||||
|
||||
@@ -118,9 +117,12 @@ Prilagođena konfiguracija se učitava između globalne i projektne konfiguracij
|
||||
|
||||
---
|
||||
|
||||
### Prilagođeni direktorij
|
||||
### Custom directory
|
||||
|
||||
Navedite prilagođeni konfiguracijski direktorij koristeći `OPENCODE_CONFIG_DIR` varijablu okruženja. U ovom direktoriju će se tražiti agenti, komande, modovi i dodaci baš kao standardni `.opencode` direktorij, i trebali bi pratiti istu strukturu.
|
||||
Navedite prilagođeni konfiguracijski direktorij koristeći `OPENCODE_CONFIG_DIR`
|
||||
varijabla okruženja. U ovom direktoriju će se tražiti agenti, komande,
|
||||
modove i dodatke baš kao standardni `.opencode` direktorij, i trebali bi
|
||||
prate istu strukturu.
|
||||
|
||||
```bash
|
||||
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
|
||||
@@ -131,10 +133,10 @@ Prilagođeni direktorij se učitava nakon direktorija globalne konfiguracije i `
|
||||
|
||||
---
|
||||
|
||||
## Šema
|
||||
## Shema
|
||||
|
||||
Konfiguracijski fajl ima šemu koja je definirana u [**`opencode.ai/config.json`**](https://opencode.ai/config.json).
|
||||
Vaš editor bi trebao biti u mogućnosti da validira i autodovršava na osnovu šeme.
|
||||
Vaš uređivač bi trebao biti u mogućnosti da potvrdi i autodovršava na osnovu šeme.
|
||||
|
||||
---
|
||||
|
||||
@@ -160,13 +162,13 @@ Dostupne opcije:
|
||||
- `scroll_acceleration.enabled` - Omogući ubrzanje skrolovanja u macOS stilu. **Ima prednost nad `scroll_speed`.**
|
||||
- `scroll_speed` - Prilagođeni množitelj brzine pomicanja (podrazumevano: `3`, minimalno: `1`). Zanemareno ako je `scroll_acceleration.enabled` `true`.
|
||||
- `diff_style` - Kontrola prikaza razlike. `"auto"` se prilagođava širini terminala, `"stacked"` uvijek prikazuje jednu kolonu.
|
||||
[Saznajte više o korištenju TUI](/docs/tui) ovdje.
|
||||
[Ovdje saznajte više o korištenju TUI](/docs/tui).
|
||||
|
||||
---
|
||||
|
||||
### Server
|
||||
|
||||
Možete konfigurirati postavke servera za naredbe `opencode serve` i `opencode web` putem opcije `server`.
|
||||
Možete konfigurirati postavke servera za komande `opencode serve` i `opencode web` putem opcije `server`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -184,15 +186,15 @@ Možete konfigurirati postavke servera za naredbe `opencode serve` i `opencode w
|
||||
Dostupne opcije:
|
||||
|
||||
- `port` - Port za slušanje.
|
||||
- `hostname` - Hostname za slušanje. Kada je `mdns` omogućen i nije postavljeno ime hosta, podrazumevano je `0.0.0.0`.
|
||||
- `mdns` - Omogući mDNS otkrivanje servisa. Ovo omogućava drugim uređajima na mreži da otkriju vaš OpenCode server.
|
||||
- `mdnsDomain` - Prilagođeno ime domene za mDNS servis. Zadano je `opencode.local`. Korisno za pokretanje više instanci na istoj mreži.
|
||||
- `cors` - Dodatni origini koji omogućavaju CORS kada koristite HTTP server iz klijenta baziranog na pretraživaču. Vrijednosti moraju biti puni origin (shema + host + opcijski port), npr. `https://app.example.com`.
|
||||
- `hostname` - Ime hosta za slušanje. Kada je `mdns` omogućen i nije postavljeno ime hosta, podrazumevano je `0.0.0.0`.
|
||||
- `mdns` - Omogući otkrivanje mDNS usluge. Ovo omogućava drugim uređajima na mreži da otkriju vaš OpenCode server.
|
||||
- `mdnsDomain` - Prilagođeno ime domene za mDNS uslugu. Zadano je `opencode.local`. Korisno za pokretanje više instanci na istoj mreži.
|
||||
- `cors` - Dodatni izvori koji omogućavaju CORS kada koristite HTTP server iz klijenta baziranog na pretraživaču. Vrijednosti moraju biti punog porijekla (šema + host + opcijski port), npr. `https://app.example.com`.
|
||||
[Saznajte više o serveru](/docs/server) ovdje.
|
||||
|
||||
---
|
||||
|
||||
### Alati
|
||||
### Tools
|
||||
|
||||
Možete upravljati alatima koje LLM može koristiti putem opcije `tools`.
|
||||
|
||||
@@ -242,7 +244,7 @@ Opcije provajdera mogu uključivati `timeout` i `setCacheKey`:
|
||||
|
||||
- `timeout` - Vrijeme čekanja zahtjeva u milisekundama (podrazumevano: 300000). Postavite na `false` da onemogućite.
|
||||
- `setCacheKey` - Osigurajte da je ključ keš memorije uvijek postavljen za određenog provajdera.
|
||||
Također možete konfigurirati [lokalne modele](/docs/models#local). [Saznajte više](/docs/models).
|
||||
Također možete konfigurirati [lokalni modeli](/docs/models#local). [Saznajte više](/docs/models).
|
||||
|
||||
---
|
||||
|
||||
@@ -270,8 +272,8 @@ Amazon Bedrock podržava konfiguraciju specifičnu za AWS:
|
||||
```
|
||||
|
||||
- `region` - AWS regija za Bedrock (zadano na `AWS_REGION` env var ili `us-east-1`)
|
||||
- `profile` - AWS imenovani profil iz `~/.aws/credentials` (zadano na `AWS_PROFILE` env var)
|
||||
- `endpoint` - URL prilagođene krajnje tačke za VPC krajnje tačke. Ovo je alias za generičku opciju `baseURL` koristeći terminologiju specifičnu za AWS. Ako su oba navedena, `endpoint` ima prednost.
|
||||
- `profile` - AWS imenovan profil od `~/.aws/credentials` (podrazumevano na `AWS_PROFILE` env var)
|
||||
- `endpoint` - URL prilagođene krajnje tačke za VPC krajnje tačke. Ovo je pseudonim za generičku opciju `baseURL` koristeći terminologiju specifičnu za AWS. Ako su oba navedena, `endpoint` ima prednost.
|
||||
:::note
|
||||
Tokeni nosioca (`AWS_BEARER_TOKEN_BEDROCK` ili `/connect`) imaju prednost nad autentifikacijom zasnovanom na profilu. Pogledajte [prednost autentifikacije](/docs/providers#authentication-precedence) za detalje.
|
||||
:::
|
||||
@@ -279,7 +281,7 @@ Amazon Bedrock podržava konfiguraciju specifičnu za AWS:
|
||||
|
||||
---
|
||||
|
||||
### Tema
|
||||
### Theme
|
||||
|
||||
Možete konfigurirati temu koju želite koristiti u svojoj OpenCode konfiguraciji putem opcije `theme`.
|
||||
|
||||
@@ -331,7 +333,7 @@ Možete postaviti zadanog agenta koristeći opciju `default_agent`. Ovo određuj
|
||||
}
|
||||
```
|
||||
|
||||
Zadani agent mora biti primarni agent (ne podagent). Ovo može biti ugrađeni agent kao što je `"build"` ili `"plan"`, ili [prilagođeni agent](/docs/agents) koji ste definirali. Ako navedeni agent ne postoji ili je podagent, OpenCode će se vratiti na `"build"` s upozorenjem.
|
||||
Zadani agent mora biti primarni agent (ne podagent). Ovo može biti ugrađeni agent kao što je `"build"` ili `"plan"`, ili [prilagođeni agent](/docs/agents) koji ste definirali. Ako navedeni agent ne postoji ili je subagent, OpenCode će se vratiti na `"build"` s upozorenjem.
|
||||
Ova postavka se primjenjuje na sva sučelja: TUI, CLI (`opencode run`), desktop aplikaciju i GitHub Action.
|
||||
|
||||
---
|
||||
@@ -347,18 +349,18 @@ Možete konfigurirati funkciju [share](/docs/share) putem opcije `share`.
|
||||
}
|
||||
```
|
||||
|
||||
Ovo prihvata:
|
||||
Ovo traje:
|
||||
|
||||
- `"manual"` - Dozvoli ručno dijeljenje putem naredbi (podrazumevano)
|
||||
- `"manual"` - Dozvoli ručno dijeljenje putem komandi (podrazumevano)
|
||||
- `"auto"` - Automatski dijelite nove razgovore
|
||||
- `"disabled"` - Onemogući dijeljenje u potpunosti
|
||||
Podrazumevano, dijeljenje je postavljeno na ručni način rada gdje trebate eksplicitno dijeliti razgovore pomoću naredbe `/share`.
|
||||
|
||||
---
|
||||
|
||||
### Naredbe
|
||||
### Command
|
||||
|
||||
Možete konfigurirati prilagođene naredbe za ponavljanje zadataka putem opcije `command`.
|
||||
Možete konfigurirati prilagođene komande za ponavljanje zadataka putem opcije `command`.
|
||||
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
@@ -378,13 +380,13 @@ Možete konfigurirati prilagođene naredbe za ponavljanje zadataka putem opcije
|
||||
}
|
||||
```
|
||||
|
||||
Također možete definirati naredbe koristeći markdown fajlove u `~/.config/opencode/commands/` ili `.opencode/commands/`. [Saznajte više ovdje](/docs/commands).
|
||||
Također možete definirati komande koristeći markdown fajlove u `~/.config/opencode/commands/` ili `.opencode/commands/`. [Saznajte više ovdje](/docs/commands).
|
||||
|
||||
---
|
||||
|
||||
### Prečice tipki
|
||||
### Keybinds
|
||||
|
||||
Možete prilagoditi svoje veze tipki putem opcije `keybinds`.
|
||||
Možete prilagoditi svoje veze ključeva putem opcije `keybinds`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -413,7 +415,7 @@ Imajte na umu da ovo funkcionira samo ako nije instalirano pomoću upravitelja p
|
||||
|
||||
---
|
||||
|
||||
### Formateri
|
||||
### Formatters
|
||||
|
||||
Možete konfigurirati formatere koda putem opcije `formatter`.
|
||||
|
||||
@@ -435,13 +437,13 @@ Možete konfigurirati formatere koda putem opcije `formatter`.
|
||||
}
|
||||
```
|
||||
|
||||
[Saznajte više o formaterima](/docs/formatters) ovdje.
|
||||
[Saznajte više o formatterima](/docs/formatters) ovdje.
|
||||
|
||||
---
|
||||
|
||||
### Dozvole
|
||||
|
||||
Prema zadanim postavkama, OpenCode **dopušta sve operacije** bez potrebe za eksplicitnim dopuštenjem. Ovo možete promijeniti koristeći opciju `permission`.
|
||||
Prema zadanim postavkama, opencode **dopušta sve operacije** bez potrebe za eksplicitnim dopuštenjem. Ovo možete promijeniti koristeći opciju `permission`.
|
||||
Na primjer, da osigurate da alati `edit` i `bash` zahtijevaju odobrenje korisnika:
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -454,11 +456,11 @@ Na primjer, da osigurate da alati `edit` i `bash` zahtijevaju odobrenje korisnik
|
||||
}
|
||||
```
|
||||
|
||||
[Saznajte više o dozvolama](/docs/permissions) ovdje.
|
||||
[Ovdje saznajte više o ](/docs/permissions) dozvolama.
|
||||
|
||||
---
|
||||
|
||||
### Sažimanje
|
||||
### Compaction
|
||||
|
||||
Možete kontrolirati ponašanje sažimanja konteksta putem opcije `compaction`.
|
||||
|
||||
@@ -477,7 +479,7 @@ Možete kontrolirati ponašanje sažimanja konteksta putem opcije `compaction`.
|
||||
|
||||
---
|
||||
|
||||
### Promatrač (Watcher)
|
||||
### Watcher
|
||||
|
||||
Možete konfigurirati obrasce ignoriranja promatrača datoteka putem opcije `watcher`.
|
||||
|
||||
@@ -509,7 +511,7 @@ Možete konfigurirati MCP servere koje želite koristiti putem opcije `mcp`.
|
||||
|
||||
---
|
||||
|
||||
### Dodaci
|
||||
### Extras
|
||||
|
||||
[Plugins](/docs/plugins) proširuju OpenCode sa prilagođenim alatima, kukicama i integracijama.
|
||||
Postavite datoteke dodataka u `.opencode/plugins/` ili `~/.config/opencode/plugins/`. Također možete učitati dodatke iz npm-a preko opcije `plugin`.
|
||||
@@ -536,7 +538,8 @@ Možete konfigurirati upute za model koji koristite putem opcije `instructions`.
|
||||
}
|
||||
```
|
||||
|
||||
Ovo uzima niz putanja i glob uzoraka do datoteka instrukcija. [Saznajte više o pravilima ovdje](/docs/rules).
|
||||
Ovo uzima niz putanja i uzoraka globusa do datoteka instrukcija. [Saznajte više
|
||||
o pravilima ovdje](/docs/rules).
|
||||
|
||||
---
|
||||
|
||||
@@ -557,7 +560,7 @@ Možete onemogućiti dobavljače koji se automatski učitavaju preko opcije `dis
|
||||
Opcija `disabled_providers` prihvata niz ID-ova provajdera. Kada je provajder onemogućen:
|
||||
|
||||
- Neće se učitati čak i ako su varijable okruženja postavljene.
|
||||
- Neće se učitati čak i ako su API ključevi konfigurirani putem `/connect` naredbe.
|
||||
- Neće se učitati čak i ako su API ključevi konfigurirani putem `/connect` komande.
|
||||
- Modeli dobavljača se neće pojaviti na listi za odabir modela.
|
||||
|
||||
---
|
||||
@@ -573,7 +576,7 @@ Možete odrediti listu dozvoljenih dobavljača putem opcije `enabled_providers`.
|
||||
}
|
||||
```
|
||||
|
||||
Ovo je korisno kada želite da ograničite OpenCode da koristi samo određene provajdere umjesto da ih onemogućavate jednog po jednog.
|
||||
Ovo je korisno kada želite da ograničite OpenCode da koristi samo određene provajdere umesto da ih onemogućavate jednog po jednog.
|
||||
:::note
|
||||
`disabled_providers` ima prioritet nad `enabled_providers`.
|
||||
:::
|
||||
@@ -604,7 +607,7 @@ Možete koristiti zamjenu varijabli u vašim konfiguracijskim datotekama da bist
|
||||
|
||||
---
|
||||
|
||||
### Varijable okruženja
|
||||
### Env vars
|
||||
|
||||
Koristite `{env:VARIABLE_NAME}` za zamjenu varijabli okruženja:
|
||||
|
||||
@@ -627,7 +630,7 @@ Ako varijabla okruženja nije postavljena, bit će zamijenjena praznim nizom.
|
||||
|
||||
---
|
||||
|
||||
### Datoteke
|
||||
### Fajlovi
|
||||
|
||||
Koristite `{file:path/to/file}` da zamijenite sadržaj fajla:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Prilagođeni alati
|
||||
title: Custom Tools
|
||||
description: Kreirajte alate koje LLM može pozvati u otvorenom kodu.
|
||||
---
|
||||
|
||||
@@ -133,7 +133,7 @@ Koristite `context.worktree` za korijen git radnog stabla.
|
||||
|
||||
## Primjeri
|
||||
|
||||
### Pisanje alata u Python-u
|
||||
### Napišite alat u Python-u
|
||||
|
||||
Možete pisati svoje alate na bilo kom jeziku koji želite. Evo primjera koji zbraja dva broja koristeći Python.
|
||||
Prvo kreirajte alat kao Python skriptu:
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Za preduzeća
|
||||
title: Enterprise
|
||||
description: Sigurno korištenje OpenCode u vašoj organizaciji.
|
||||
---
|
||||
|
||||
@@ -19,7 +19,7 @@ Da započnete s OpenCode Enterprise:
|
||||
|
||||
---
|
||||
|
||||
## Proba
|
||||
## Trial
|
||||
|
||||
OpenCode je otvorenog koda i ne pohranjuje vaš kod niti kontekstualne podatke, tako da vaši developeri mogu jednostavno [započeti](/docs/) i provesti probu.
|
||||
|
||||
@@ -60,19 +60,19 @@ Preporučujemo da ovo onemogućite tokom probe.
|
||||
|
||||
---
|
||||
|
||||
## Cijene
|
||||
## Pricing
|
||||
|
||||
Koristimo model naplate po sjedištu za OpenCode Enterprise. Ako imate vlastiti LLM gateway, ne naplaćujemo korištene tokene. Za više detalja o cijenama i opcijama implementacije, **<a href={email}>kontaktirajte nas</a>**.
|
||||
|
||||
---
|
||||
|
||||
## Postavljanje
|
||||
## Deployment
|
||||
|
||||
Nakon što završite probni period i spremni ste koristiti OpenCode u svojoj organizaciji, možete **<a href={email}>kontaktirati nas</a>** da razgovaramo o cijenama i opcijama implementacije.
|
||||
|
||||
---
|
||||
|
||||
### Centralna konfiguracija
|
||||
### Central Config
|
||||
|
||||
Možemo postaviti OpenCode da koristi jednu centralnu konfiguraciju za cijelu organizaciju.
|
||||
|
||||
@@ -96,7 +96,7 @@ Također možete onemogućiti sve druge AI provajdere, čime osiguravate da svi
|
||||
|
||||
---
|
||||
|
||||
### Samostalno hostovanje
|
||||
### Self-hosting
|
||||
|
||||
Iako preporučujemo onemogućavanje share stranica kako biste osigurali da podaci nikada ne napuštaju vašu organizaciju, možemo vam pomoći i da ih samostalno hostujete na vlastitoj infrastrukturi.
|
||||
|
||||
@@ -104,17 +104,17 @@ Ovo je trenutno na našoj mapi puta. Ako ste zainteresovani, **<a href={email}>j
|
||||
|
||||
---
|
||||
|
||||
## Često postavljana pitanja
|
||||
## FAQ
|
||||
|
||||
<details>
|
||||
<summary>Šta je OpenCode Enterprise?</summary>
|
||||
<summary>What is OpenCode Enterprise?</summary>
|
||||
|
||||
OpenCode Enterprise je za organizacije koje žele osigurati da njihov kod i podaci nikada ne napuštaju njihovu infrastrukturu. To omogućava centralizovana konfiguracija koja se integriše s vašim SSO-om i internim AI gateway-om.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Kako započeti s OpenCode Enterprise?</summary>
|
||||
<summary>How do I get started with OpenCode Enterprise?</summary>
|
||||
|
||||
Jednostavno započnite internu probu sa svojim timom. OpenCode po defaultu ne pohranjuje vaš kod ni kontekstualne podatke, što olakšava početak.
|
||||
|
||||
@@ -123,21 +123,21 @@ Zatim **<a href={email}>kontaktirajte nas</a>** da razgovaramo o cijenama i opci
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Kako funkcionišu enterprise cijene?</summary>
|
||||
<summary>How does enterprise pricing work?</summary>
|
||||
|
||||
Nudimo enterprise cijene po sjedištu. Ako imate vlastiti LLM gateway, ne naplaćujemo korištene tokene. Za više detalja, **<a href={email}>kontaktirajte nas</a>** za prilagođenu ponudu prema potrebama vaše organizacije.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Jesu li moji podaci sigurni uz OpenCode Enterprise?</summary>
|
||||
<summary>Is my data secure with OpenCode Enterprise?</summary>
|
||||
|
||||
Da. OpenCode ne pohranjuje vaš kod niti kontekstualne podatke. Sva obrada se odvija lokalno ili putem direktnih API poziva vašem AI provajderu. Uz centralnu konfiguraciju i SSO integraciju, vaši podaci ostaju sigurni unutar infrastrukture vaše organizacije.
|
||||
|
||||
</details>
|
||||
|
||||
<details>
|
||||
<summary>Možemo li koristiti vlastiti privatni NPM registar?</summary>
|
||||
<summary>Can we use our own private NPM registry?</summary>
|
||||
|
||||
OpenCode podržava privatne npm registre kroz Bunovu izvornu podršku za `.npmrc` datoteku. Ako vaša organizacija koristi privatni registar, kao što je JFrog Artifactory, Nexus ili slično, osigurajte da su developeri autentifikovani prije pokretanja OpenCode.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Formateri
|
||||
title: Formatters
|
||||
description: OpenCode koristi formatere specifične za jezik.
|
||||
---
|
||||
|
||||
@@ -7,7 +7,7 @@ OpenCode automatski formatira datoteke nakon što su napisane ili uređene pomo
|
||||
|
||||
---
|
||||
|
||||
## Ugrađeni
|
||||
## Ugrađeno
|
||||
|
||||
OpenCode dolazi sa nekoliko ugrađenih formatera za popularne jezike i okvire. Ispod je lista formatera, podržanih ekstenzija datoteka i naredbi ili opcija konfiguracije koje su mu potrebne.
|
||||
| Formatter | Ekstenzije | Zahtjevi
|
||||
@@ -49,7 +49,7 @@ Kada OpenCode piše ili uređuje datoteku, on:
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Konfiguriši
|
||||
|
||||
Možete prilagoditi formatere kroz `formatter` odjeljak u vašoj OpenCode konfiguraciji.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ OpenCode se integriše sa vašim GitHub tokovom rada. Spomenite `/opencode` ili
|
||||
|
||||
---
|
||||
|
||||
## Funkcije
|
||||
## Karakteristike
|
||||
|
||||
- **Problemi trijaže**: Zamolite OpenCode da ispita problem i objasni vam ga.
|
||||
- **Popravi i implementiraj**: Zamolite OpenCode da popravi problem ili implementira funkciju. I radit će u novoj poslovnici i dostavljati PR sa svim promjenama.
|
||||
@@ -244,7 +244,7 @@ Za `issues` događaje, `prompt` unos je **potreban** jer nema komentara za izvla
|
||||
|
||||
---
|
||||
|
||||
## Prilagođeni upiti
|
||||
## Prilagođene upite
|
||||
|
||||
Zaobiđite zadani prompt da biste prilagodili ponašanje OpenCode za vaš tok posla.
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Ovdje koristimo CI/CD komponentu kreiranu u zajednici za OpenCode — [nagyv/git
|
||||
|
||||
---
|
||||
|
||||
### Funkcije
|
||||
### Karakteristike
|
||||
|
||||
- **Koristite prilagođenu konfiguraciju po poslu**: Konfigurirajte OpenCode s prilagođenim konfiguracijskim direktorijem, na primjer `./config/#custom-directory` da omogućite ili onemogućite funkcionalnost po OpenCode pozivanju.
|
||||
- **Minimalno podešavanje**: CI komponenta postavlja OpenCode u pozadini, samo trebate kreirati OpenCode konfiguraciju i početnu prompt.
|
||||
@@ -49,7 +49,7 @@ Spomenite `@opencode` u komentaru i OpenCode će izvršiti zadatke unutar vašeg
|
||||
|
||||
---
|
||||
|
||||
### Funkcije
|
||||
### Karakteristike
|
||||
|
||||
- **Problemi trijaže**: Zamolite OpenCode da ispita problem i objasni vam ga.
|
||||
- **Popravi i implementiraj**: Zamolite OpenCode da popravi problem ili implementira funkciju.
|
||||
@@ -74,7 +74,7 @@ Pogledajte [**GitLab dokumente**](https://docs.gitlab.com/user/duo_agent_platfor
|
||||
|
||||
<details>
|
||||
|
||||
<summary>Konfiguracija toka</summary>
|
||||
<summary>Flow configuration</summary>
|
||||
|
||||
```yaml
|
||||
image: node:22-slim
|
||||
|
||||
@@ -7,7 +7,7 @@ OpenCode se integriše sa VS kodom, Cursor-om ili bilo kojim IDE-om koji podrža
|
||||
|
||||
---
|
||||
|
||||
## Korištenje
|
||||
## Upotreba
|
||||
|
||||
- **Brzo pokretanje**: Koristite `Cmd+Esc` (Mac) ili `Ctrl+Esc` (Windows/Linux) da otvorite OpenCode u prikazu podijeljenog terminala ili fokusirajte postojeću terminalsku sesiju ako je već pokrenuta.
|
||||
- **Nova sesija**: Koristite `Cmd+Shift+Esc` (Mac) ili `Ctrl+Shift+Esc` (Windows/Linux) da započnete novu OpenCode terminalsku sesiju, čak i ako je ona već otvorena. Takođe možete kliknuti na dugme OpenCode u korisničkom sučelju.
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: Uvod
|
||||
description: Započnite sa OpenCode.
|
||||
title: Intro
|
||||
description: Započnite s OpenCode.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
|
||||
[**OpenCode**](/) je AI agent za kodiranje otvorenog koda. Dostupan je kao interfejs baziran na terminalu, desktop aplikacija ili IDE ekstenzija.
|
||||
[**OpenCode**](/) je agent za AI kodiranje otvorenog koda. Dostupan je kao interfejs baziran na terminalu, desktop aplikacija ili IDE ekstenzija.
|
||||

|
||||
Hajde da počnemo.
|
||||
|
||||
@@ -18,17 +18,17 @@ Hajde da počnemo.
|
||||
Da biste koristili OpenCode u svom terminalu, trebat će vam:
|
||||
|
||||
1. Moderan emulator terminala kao što su:
|
||||
- [WezTerm](https://wezterm.org), više platformi
|
||||
- [Alacritty](https://alacritty.org), više platformi
|
||||
- [WezTerm](https://wezterm.org), multi-platforma
|
||||
- [Alacritty](https://alacritty.org), više platforma
|
||||
- [Ghostty](https://ghostty.org), Linux i macOS
|
||||
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux i macOS
|
||||
2. API ključevi za LLM provajdere koje želite koristiti.
|
||||
|
||||
---
|
||||
|
||||
## Instalacija
|
||||
## Instaliraj
|
||||
|
||||
Najlakši način za instaliranje OpenCode je putem instalacijske skripte.
|
||||
Najlakši način za instaliranje OpenCode je putem instalacione skripte.
|
||||
|
||||
```bash
|
||||
curl -fsSL https://opencode.ai/install | bash
|
||||
@@ -36,7 +36,7 @@ curl -fsSL https://opencode.ai/install | bash
|
||||
|
||||
Također ga možete instalirati pomoću sljedećih naredbi:
|
||||
|
||||
- **Korištenje Node.js**
|
||||
- **Korišćenje Node.js**
|
||||
|
||||
<Tabs>
|
||||
|
||||
@@ -70,7 +70,7 @@ Također ga možete instalirati pomoću sljedećih naredbi:
|
||||
|
||||
</Tabs>
|
||||
|
||||
- **Korištenje Homebrew-a na macOS-u i Linux-u**
|
||||
- **Korišćenje Homebrew-a na macOS-u i Linux-u**
|
||||
|
||||
```bash
|
||||
brew install anomalyco/tap/opencode
|
||||
@@ -78,7 +78,7 @@ Također ga možete instalirati pomoću sljedećih naredbi:
|
||||
|
||||
> Preporučujemo korištenje OpenCode tap za najnovija izdanja. Službenu formulu `brew install opencode` održava Homebrew tim i ažurira se rjeđe.
|
||||
|
||||
- **Korištenje Parua na Arch Linuxu**
|
||||
- **Korišćenje Parua na Arch Linuxu**
|
||||
|
||||
```bash
|
||||
paru -S opencode-bin
|
||||
@@ -87,16 +87,16 @@ Također ga možete instalirati pomoću sljedećih naredbi:
|
||||
#### Windows
|
||||
|
||||
:::tip[Preporučeno: Koristite WSL]
|
||||
Za najbolje iskustvo na Windows-u preporučujemo korištenje [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Pruža bolje performanse i potpunu kompatibilnost sa OpenCode funkcijama.
|
||||
Za najbolje iskustvo na Windows-u preporučujemo korištenje [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Pruža bolje performanse i potpunu kompatibilnost sa OpenCode karakteristikama.
|
||||
:::
|
||||
|
||||
- **Korištenje Chocolatey-a**
|
||||
- **Upotreba Chocolatey-a**
|
||||
|
||||
```bash
|
||||
choco install opencode
|
||||
```
|
||||
|
||||
- **Korištenje Scoop-a**
|
||||
- **Upotreba Scoop-a**
|
||||
|
||||
```bash
|
||||
scoop install opencode
|
||||
@@ -108,13 +108,13 @@ Za najbolje iskustvo na Windows-u preporučujemo korištenje [Windows Subsystem
|
||||
npm install -g opencode-ai
|
||||
```
|
||||
|
||||
- **Korištenje Mise**
|
||||
- **Korišćenje Mise**
|
||||
|
||||
```bash
|
||||
mise use -g github:anomalyco/opencode
|
||||
```
|
||||
|
||||
- **Korištenje Dockera**
|
||||
- **Korišćenje Dockera**
|
||||
|
||||
```bash
|
||||
docker run -it --rm ghcr.io/anomalyco/opencode
|
||||
@@ -125,11 +125,12 @@ Također možete preuzeti binarnu datoteku iz [Releases](https://github.com/anom
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Konfiguriši
|
||||
|
||||
Uz OpenCode možete koristiti bilo kojeg LLM provajdera tako što ćete konfigurirati njihove API ključeve.
|
||||
Ako ste tek počeli koristiti LLM provajdere, preporučujemo korištenje [OpenCode Zen](/docs/zen).
|
||||
To je kurirana lista modela koji su testirani i verifikovani od strane OpenCode tima.
|
||||
To je kurirana lista modela koji su testirani i verifikovani od strane OpenCode
|
||||
tim.
|
||||
|
||||
1. Pokrenite naredbu `/connect` u TUI-u, odaberite opencode i idite na [opencode.ai/auth](https://opencode.ai/auth).
|
||||
|
||||
@@ -151,9 +152,10 @@ Alternativno, možete odabrati jednog od drugih provajdera. [Saznajte više](/do
|
||||
|
||||
---
|
||||
|
||||
## Inicijalizacija
|
||||
## Inicijaliziraj
|
||||
|
||||
Sada kada ste konfigurisali provajdera, možete se kretati do projekta na kojem želite raditi.
|
||||
Sada kada ste konfigurisali provajdera, možete se kretati do projekta koji
|
||||
na čemu želite da radite.
|
||||
|
||||
```bash
|
||||
cd /path/to/project
|
||||
@@ -171,22 +173,26 @@ Zatim inicijalizirajte OpenCode za projekat pokretanjem sljedeće naredbe.
|
||||
/init
|
||||
```
|
||||
|
||||
Ovo će omogućiti OpenCode da analizira vaš projekat i kreira `AGENTS.md` fajl u korijenu projekta.
|
||||
Ovo će omogućiti OpenCode da analizira vaš projekat i kreira `AGENTS.md` fajl u njemu
|
||||
korijen projekta.
|
||||
:::tip
|
||||
Trebali biste komitovati datoteku `AGENTS.md` vašeg projekta u Git.
|
||||
Trebali biste urezati datoteku `AGENTS.md` vašeg projekta u Git.
|
||||
:::
|
||||
Ovo pomaže OpenCode da razumije strukturu projekta i obrasce kodiranja koji se koriste.
|
||||
Ovo pomaže OpenCode da razumije strukturu projekta i obrasce kodiranja
|
||||
korišteno.
|
||||
|
||||
---
|
||||
|
||||
## Korištenje
|
||||
## Upotreba
|
||||
|
||||
Sada ste spremni da koristite OpenCode za rad na svom projektu. Slobodno pitajte bilo šta!
|
||||
Ako ste novi u korištenju agenta za AI kodiranje, evo nekoliko primjera koji bi mogli pomoći.
|
||||
Sada ste spremni da koristite OpenCode za rad na svom projektu. Slobodno pitajte
|
||||
bilo šta!
|
||||
Ako ste novi u korištenju agenta za AI kodiranje, evo nekoliko primjera koji bi mogli
|
||||
pomoć.
|
||||
|
||||
---
|
||||
|
||||
### Postavljanje pitanja
|
||||
### Postavljajte pitanja
|
||||
|
||||
Možete zamoliti OpenCode da vam objasni kodnu bazu.
|
||||
:::tip
|
||||
@@ -201,12 +207,13 @@ Ovo je korisno ako postoji dio kodne baze na kojem niste radili.
|
||||
|
||||
---
|
||||
|
||||
### Dodavanje funkcija
|
||||
### Dodajte karakteristike
|
||||
|
||||
Možete zamoliti OpenCode da vašem projektu doda nove funkcije. Iako preporučujemo da ga prvo zamolite da napravi plan.
|
||||
|
||||
1. **Kreirajte plan**
|
||||
OpenCode ima _Plan mod_ koji onemogućuje njegovu sposobnost da pravi promjene i umjesto toga predlaže _kako_ će implementirati ovu funkciju.
|
||||
OpenCode ima _Plan mod_ koji onemogućuje njegovu sposobnost da pravi promjene i
|
||||
umjesto toga predložite _kako_ će implementirati ovu funkciju.
|
||||
Prebacite se na njega pomoću tipke **Tab**. Vidjet ćete indikator za ovo u donjem desnom uglu.
|
||||
|
||||
```bash frame="none" title="Switch to Plan mode"
|
||||
@@ -216,31 +223,35 @@ Možete zamoliti OpenCode da vašem projektu doda nove funkcije. Iako preporuču
|
||||
Hajde sada da opišemo šta želimo da uradi.
|
||||
|
||||
```txt frame="none"
|
||||
When a user deletes a note, we'd like to flag it as deleted in the database.
|
||||
Then create a screen that shows all the recently deleted notes.
|
||||
From this screen, the user can undelete a note or permanently delete it.
|
||||
When a user deletes a note, we'd like to flag it as deleted in the database.
|
||||
Then create a screen that shows all the recently deleted notes.
|
||||
From this screen, the user can undelete a note or permanently delete it.
|
||||
```
|
||||
|
||||
Želite da date OpenCode dovoljno detalja da razumije šta želite. Pomaže da razgovarate s njim kao da razgovarate sa mlađim programerom u svom timu.
|
||||
Želite da date OpenCode dovoljno detalja da razumete šta želite. Pomaže
|
||||
da razgovarate s njim kao da razgovarate sa mlađim programerom u svom timu.
|
||||
:::tip
|
||||
Dajte OpenCode dosta konteksta i primjera koji će mu pomoći da razumije šta vi želite.
|
||||
Dajte OpenCode dosta konteksta i primjera koji će mu pomoći da razumije šta vi
|
||||
želim.
|
||||
:::
|
||||
|
||||
2. **Ponovite plan**
|
||||
Kada vam da plan, možete mu dati povratne informacije ili dodati više detalja.
|
||||
|
||||
```txt frame="none"
|
||||
We'd like to design this new screen using a design I've used before.
|
||||
[Image #1] Take a look at this image and use it as a reference.
|
||||
We'd like to design this new screen using a design I've used before.
|
||||
[Image #1] Take a look at this image and use it as a reference.
|
||||
```
|
||||
|
||||
:::tip
|
||||
Prevucite i ispustite slike u terminal da biste ih dodali u prompt.
|
||||
:::
|
||||
OpenCode može skenirati sve slike koje mu date i dodati ih u prompt. Možete to učiniti povlačenjem i ispuštanjem slike u terminal.
|
||||
OpenCode može skenirati sve slike koje mu date i dodati ih u prompt. Možeš
|
||||
učinite to povlačenjem i ispuštanjem slike u terminal.
|
||||
|
||||
3. **Izgradite funkciju**
|
||||
Kada se osjećate ugodno s planom, vratite se na _Build mode_ ponovnim pritiskom na taster **Tab**.
|
||||
Kada se osjećate ugodno s planom, vratite se na _Build mode_ do
|
||||
ponovnim pritiskom na taster **Tab**.
|
||||
|
||||
```bash frame="none"
|
||||
<TAB>
|
||||
@@ -254,9 +265,10 @@ I tražeći od njega da napravi promjene.
|
||||
|
||||
---
|
||||
|
||||
### Pravljenje izmjena
|
||||
### Napravite promjene
|
||||
|
||||
Za jednostavnije promjene, možete zamoliti OpenCode da ga direktno izgradi bez potrebe da prvo pregledate plan.
|
||||
Za jednostavnije promjene, možete zamoliti OpenCode da ga direktno izgradi
|
||||
bez potrebe da prvo pregledate plan.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
|
||||
We need to add authentication to the /settings route. Take a look at how this is
|
||||
@@ -264,11 +276,12 @@ handled in the /notes route in @packages/functions/src/notes.ts and implement
|
||||
the same logic in @packages/functions/src/settings.ts
|
||||
```
|
||||
|
||||
Želite da budete sigurni da ste pružili dobru količinu detalja kako bi OpenCode napravio ispravne promjene.
|
||||
Želite da budete sigurni da ste pružili dobru količinu detalja kako bi OpenCode bio ispravan
|
||||
promjene.
|
||||
|
||||
---
|
||||
|
||||
### Poništavanje izmjena
|
||||
### Poništi promjene
|
||||
|
||||
Recimo da tražite od OpenCode da izvrši neke promjene.
|
||||
|
||||
@@ -276,13 +289,15 @@ Recimo da tražite od OpenCode da izvrši neke promjene.
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Ali shvatate da to nije ono što ste željeli. Možete **poništiti** promjene koristeći naredbu `/undo`.
|
||||
Ali shvatate da to nije ono što ste želeli. Možete **poništiti** promjene
|
||||
koristeći naredbu `/undo`.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
OpenCode će sada poništiti promjene koje ste napravili i ponovo prikazati vašu originalnu poruku.
|
||||
OpenCode će sada poništiti promjene koje ste napravili i prikazati vašu originalnu poruku
|
||||
opet.
|
||||
|
||||
```txt frame="none" "@packages/functions/src/api/index.ts"
|
||||
Can you refactor the function in @packages/functions/src/api/index.ts?
|
||||
@@ -300,9 +315,10 @@ Ili **možete ponoviti** promjene koristeći naredbu `/redo`.
|
||||
|
||||
---
|
||||
|
||||
## Dijeljenje
|
||||
## Dijeli
|
||||
|
||||
Razgovore koje imate sa OpenCode možete [dijeliti sa vašim timom](/docs/share).
|
||||
Razgovore koje imate sa OpenCode možete [dijeliti sa vašim
|
||||
tim](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
@@ -316,7 +332,7 @@ Evo [primjer razgovora](https://opencode.ai/s/4XP1fce5) sa OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Prilagođavanje
|
||||
## Prilagodi
|
||||
|
||||
I to je to! Sada ste profesionalac u korištenju OpenCode.
|
||||
Da biste to učinili svojim, preporučujemo [odabir teme](/docs/themes), [prilagođavanje povezivanja tipki](/docs/keybinds), [konfiguriranje formatera koda](/docs/formatters), [kreiranje prilagođenih komandi](/docs/commands), ili igranje sa [OpenCode config](/docs/config).
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Prečice tipki
|
||||
description: Prilagodite svoje veze tipki.
|
||||
title: Keybinds
|
||||
description: Prilagodite svoje veze dugmadi.
|
||||
---
|
||||
|
||||
OpenCode ima listu veza tipki koje možete prilagoditi preko OpenCode konfiguracije.
|
||||
OpenCode ima listu veza ključeva koje možete prilagoditi preko OpenCode konfiguracije.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -105,15 +105,15 @@ OpenCode ima listu veza tipki koje možete prilagoditi preko OpenCode konfigurac
|
||||
|
||||
---
|
||||
|
||||
## Leader tipka
|
||||
## Leader key
|
||||
|
||||
OpenCode koristi `leader` (vodeću) tipku za većinu povezivanja tipki. Ovo izbjegava sukobe u vašem terminalu.
|
||||
Prema zadanim postavkama, `ctrl+x` je vodeća tipka i većina radnji zahtijeva da prvo pritisnete vodeću tipku, a zatim i prečicu. Na primjer, da biste započeli novu sesiju, prvo pritisnite `ctrl+x`, a zatim pritisnite `n`.
|
||||
Ne morate koristiti vodeću tipku za svoje veze tipki, ali preporučujemo da to učinite.
|
||||
OpenCode koristi `leader` ključ za većinu povezivanja tipki. Ovo izbjegava sukobe u vašem terminalu.
|
||||
Prema zadanim postavkama, `ctrl+x` je vodeći taster i većina radnji zahtijeva da prvo pritisnete vodeći taster, a zatim i prečicu. Na primjer, da biste započeli novu sesiju, prvo pritisnite `ctrl+x`, a zatim pritisnite `n`.
|
||||
Ne morate koristiti vodeći ključ za svoje veze tipki, ali preporučujemo da to učinite.
|
||||
|
||||
---
|
||||
|
||||
## Onemogućavanje prečica tipki
|
||||
## Onemogući povezivanje tastera
|
||||
|
||||
Možete onemogućiti spajanje tipki dodavanjem ključa u svoju konfiguraciju s vrijednošću "none".
|
||||
|
||||
@@ -130,22 +130,21 @@ Možete onemogućiti spajanje tipki dodavanjem ključa u svoju konfiguraciju s v
|
||||
|
||||
## Prečice za radnu površinu
|
||||
|
||||
Unos prompta aplikacije OpenCode za desktop podržava uobičajene prečice u stilu Readline/Emacs za uređivanje teksta. One su ugrađene i trenutno se ne mogu konfigurirati putem `opencode.json`.
|
||||
|
||||
| Prečica | Akcija |
|
||||
| -------- | ------------------------------------------------ |
|
||||
| `ctrl+a` | Prelazak na početak trenutnog reda |
|
||||
| `ctrl+e` | Prelazak na kraj trenutnog reda |
|
||||
| `ctrl+b` | Pomjeri kursor za jedan znak unazad |
|
||||
| `ctrl+f` | Pomicanje kursora naprijed za jedan znak |
|
||||
| `alt+b` | Pomjeri kursor za jednu riječ unazad |
|
||||
| `alt+f` | Pomjeri kursor za jednu riječ unaprijed |
|
||||
| `ctrl+d` | Izbriši znak ispod kursora |
|
||||
| `ctrl+k` | Kill do kraja reda |
|
||||
| `ctrl+u` | Kill do početka reda |
|
||||
| `ctrl+w` | Kill prethodnu riječ |
|
||||
| `alt+d` | Kill sljedeću riječ |
|
||||
| `ctrl+t` | Transponirajte znakove |
|
||||
Unos prompta aplikacije OpenCode za desktop podržava uobičajene prečice u stilu Readline/Emacs za uređivanje teksta. Oni su ugrađeni i trenutno se ne mogu konfigurirati putem `opencode.json`.
|
||||
| Prečica | Akcija
|
||||
|-------- | ---------------------------------------- |
|
||||
| `ctrl+a` | Prelazak na početak tekućeg reda |
|
||||
| `ctrl+e` | Prelazak na kraj trenutnog reda |
|
||||
| `ctrl+b` | Pomeri kursor za jedan znak unazad |
|
||||
| `ctrl+f` | Pomicanje kursora naprijed za jedan znak |
|
||||
| `alt+b` | Pomeri kursor za jednu reč unazad |
|
||||
| `alt+f` | Pomeri kursor za jednu reč unapred |
|
||||
| `ctrl+d` | Izbriši znak ispod kursora |
|
||||
| `ctrl+k` | Kill do kraja reda |
|
||||
| `ctrl+u` | Kill do početka reda |
|
||||
| `ctrl+w` | Kill prethodnu riječ |
|
||||
| `alt+d` | Kill sljedeću riječ |
|
||||
| `ctrl+t` | Transponirajte znakove |
|
||||
| `ctrl+g` | Otkaži iskakanje / poništi odgovor na pokretanje |
|
||||
|
||||
---
|
||||
@@ -154,7 +153,7 @@ Unos prompta aplikacije OpenCode za desktop podržava uobičajene prečice u sti
|
||||
|
||||
Neki terminali ne šalju modifikatorske tipke sa Enter prema zadanim postavkama. Možda ćete trebati konfigurirati svoj terminal da pošalje `Shift+Enter` kao escape sekvencu.
|
||||
|
||||
### Windows Terminal
|
||||
### Windows terminal
|
||||
|
||||
Otvorite svoj `settings.json` na:
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ description: OpenCode se integriše sa vašim LSP serverima.
|
||||
|
||||
OpenCode se integriše sa vašim Language Server Protocol (LSP) serverima kako bi pomogao LLM-u u interakciji s kodnom bazom. Koristi dijagnostiku za slanje povratnih informacija modelu.
|
||||
|
||||
## Ugrađeni
|
||||
## Ugrađeno
|
||||
|
||||
OpenCode dolazi sa nekoliko ugrađenih LSP servera za popularne jezike:
|
||||
| LSP server | Ekstenzije | Zahtjevi
|
||||
@@ -58,7 +58,7 @@ Kada opencode otvori fajl, on:
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Konfiguriši
|
||||
|
||||
Možete prilagoditi LSP servere kroz `lsp` odjeljak u vašoj opencode konfiguraciji.
|
||||
|
||||
|
||||
@@ -8,7 +8,7 @@ Jednom dodani, MCP alati su automatski dostupni LLM-u zajedno sa ugrađenim alat
|
||||
|
||||
---
|
||||
|
||||
#### Upozorenje
|
||||
#### Upozorenja
|
||||
|
||||
Kada koristite MCP server, on dodaje u kontekst. Ovo se može brzo zbrojiti ako imate puno alata. Stoga preporučujemo da pazite koje MCP servere koristite.
|
||||
:::tip
|
||||
@@ -17,7 +17,7 @@ MCP serveri dodaju vaš kontekst, tako da želite da budete pažljivi s tim koje
|
||||
|
||||
Određeni MCP serveri, poput GitHub MCP servera, mogu dodati mnogo tokena i lako premašiti limit konteksta.
|
||||
|
||||
## Omogućavanje
|
||||
## Omogući
|
||||
|
||||
Možete definirati MCP servere u vašoj [OpenCode Config](https://opencode.ai/docs/config/) pod `mcp`. Dodajte svaki MCP sa jedinstvenim imenom. Možete se pozvati na taj MCP po imenu kada tražite LLM.
|
||||
|
||||
@@ -38,7 +38,7 @@ Možete definirati MCP servere u vašoj [OpenCode Config](https://opencode.ai/do
|
||||
|
||||
Također možete onemogućiti server postavljanjem `enabled` na `false`. To je korisno kada ga želite privremeno isključiti bez uklanjanja iz konfiguracije.
|
||||
|
||||
### Poništavanje udaljenih zadanih postavki
|
||||
### Poništavanje daljinskih zadanih postavki
|
||||
|
||||
Organizacije mogu obezbijediti zadane MCP servere preko svoje krajnje tačke `.well-known/opencode`. Ovi serveri mogu biti onemogućeni prema zadanim postavkama, omogućavajući korisnicima da se odluče za one koji su im potrebni.
|
||||
Da omogućite određeni server iz udaljene konfiguracije vaše organizacije, dodajte ga u svoju lokalnu konfiguraciju sa `enabled: true`:
|
||||
@@ -115,7 +115,7 @@ Ovdje su sve opcije za konfiguriranje lokalnog MCP servera.
|
||||
|
||||
---
|
||||
|
||||
## Udaljeno
|
||||
## Daljinski
|
||||
|
||||
Dodajte udaljene MCP servere postavljanjem `type` na `"remote"`.
|
||||
|
||||
@@ -178,7 +178,7 @@ Za većinu MCP servera sa omogućenim OAuthom nije potrebna posebna konfiguracij
|
||||
|
||||
Ako server zahtijeva autentifikaciju, OpenCode će vas tražiti prijavu pri prvom korištenju. Ako se to ne desi, možete [ručno pokrenuti tok](#authenticating) naredbom `opencode mcp auth <server-name>`.
|
||||
|
||||
### Prethodno registrirano
|
||||
### Prethodno registrovano
|
||||
|
||||
Ako imate klijentske vjerodajnice od dobavljača MCP servera, možete ih konfigurirati:
|
||||
|
||||
@@ -269,11 +269,11 @@ opencode mcp debug my-oauth-server
|
||||
|
||||
Komanda `mcp debug` prikazuje trenutni auth status, testira HTTP povezanost i pokušava OAuth discovery flow.
|
||||
|
||||
## Upravljanje
|
||||
## Manage
|
||||
|
||||
Vaši MCP serveri su dostupni kao alati u OpenCode, zajedno s ugrađenim alatima. Možete njima upravljati kroz OpenCode konfiguraciju kao i bilo kojim drugim alatom.
|
||||
|
||||
### Globalno
|
||||
### Global
|
||||
|
||||
To znači da ih možete omogućiti ili onemogućiti globalno.
|
||||
|
||||
|
||||
@@ -12,7 +12,7 @@ Saznajte više o [providers](/docs/providers).
|
||||
|
||||
---
|
||||
|
||||
## Odabir modela
|
||||
## Odaberite model
|
||||
|
||||
Nakon što konfigurirate svog provajdera, možete odabrati model koji želite upisivanjem:
|
||||
|
||||
@@ -41,7 +41,7 @@ Evo nekoliko modela koji dobro rade sa OpenCode, bez posebnog redosleda. (Ovo ni
|
||||
|
||||
---
|
||||
|
||||
## Postavljanje zadanog
|
||||
## Postavite zadano
|
||||
|
||||
Da postavite jedan od ovih kao zadani model, možete postaviti ključ `model` u svom
|
||||
OpenCode config.
|
||||
@@ -58,7 +58,7 @@ Ako ste konfigurirali [prilagođenog provajdera](/docs/providers#custom), `provi
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija modela
|
||||
## Konfigurišite modele
|
||||
|
||||
Možete globalno konfigurirati opcije modela kroz config.
|
||||
|
||||
@@ -180,7 +180,7 @@ Možete nadjačati postojeće varijante ili dodati svoje:
|
||||
}
|
||||
```
|
||||
|
||||
### Kruženje kroz varijante
|
||||
### Cycle variants
|
||||
|
||||
Koristite keybind `variant_cycle` za brzo prebacivanje između varijanti. [Saznajte više](/docs/keybinds).
|
||||
|
||||
|
||||
@@ -15,7 +15,7 @@ Možete se prebacivati između režima tokom sesije ili ih konfigurisati u
|
||||
|
||||
---
|
||||
|
||||
## Ugrađeni
|
||||
## Ugrađeno
|
||||
|
||||
opencode dolazi sa dva ugrađena načina rada.
|
||||
|
||||
@@ -42,7 +42,7 @@ Vidi također: [Formatters](/docs/formatters) za informacije o konfiguraciji for
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Konfiguriši
|
||||
|
||||
Možete prilagoditi ugrađene načine rada ili kreirati vlastite kroz konfiguraciju. Modovi se mogu konfigurirati na dva načina:
|
||||
|
||||
@@ -166,7 +166,7 @@ Vrijednosti temperature obično se kreću od 0,0 do 1,0:
|
||||
|
||||
Ako temperatura nije navedena, opencode koristi podrazumijevane postavke specifične za model (obično 0 za većinu modela i 0.55 za Qwen modele).
|
||||
|
||||
### Upit
|
||||
### Prompt
|
||||
|
||||
Navedite prilagođenu sistemsku datoteku prompta za ovaj način rada s konfiguracijom `prompt`. Datoteka s promptom treba da sadrži upute specifične za svrhu načina rada.
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ description: Konfigurirajte proksije i prilagođene certifikate.
|
||||
|
||||
OpenCode podržava standardne proxy varijable okruženja i prilagođene certifikate za enterprise mrežna okruženja.
|
||||
|
||||
## Proksi
|
||||
## Proxy
|
||||
|
||||
OpenCode poštuje standardne varijable proxy okruženja.
|
||||
|
||||
|
||||
@@ -141,7 +141,7 @@ Dozvole OpenCode su označene imenom alata, plus nekoliko sigurnosnih mjera:
|
||||
|
||||
---
|
||||
|
||||
## Zadane postavke
|
||||
## Defaults
|
||||
|
||||
Ako ništa ne navedete, OpenCode počinje od dozvoljenih zadanih vrijednosti:
|
||||
|
||||
@@ -164,7 +164,7 @@ Ako ništa ne navedete, OpenCode počinje od dozvoljenih zadanih vrijednosti:
|
||||
|
||||
---
|
||||
|
||||
## Šta radi “Ask”
|
||||
## Šta radi “Ask”.
|
||||
|
||||
Kada OpenCode zatraži odobrenje, korisničko sučelje nudi tri ishoda:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Dodaci
|
||||
title: Plugins
|
||||
description: Napišite vlastite dodatke za proširenje OpenCode.
|
||||
---
|
||||
|
||||
@@ -8,7 +8,7 @@ Za primjere, pogledajte [plugins](/docs/ecosystem#plugins) kreirane od strane za
|
||||
|
||||
---
|
||||
|
||||
## Korištenje dodatka
|
||||
## Koristite dodatak
|
||||
|
||||
Postoje dva načina za učitavanje dodataka.
|
||||
|
||||
@@ -22,7 +22,7 @@ Postavite JavaScript ili TypeScript datoteke u direktorij dodataka.
|
||||
|
||||
---
|
||||
|
||||
### Iz npm-a
|
||||
### Od npm
|
||||
|
||||
Navedite npm pakete u vašoj konfiguracijskoj datoteci.
|
||||
|
||||
@@ -45,7 +45,7 @@ Pregledajte dostupne dodatke u [ecosystem](/docs/ecosystem#plugins).
|
||||
|
||||
---
|
||||
|
||||
### Redoslijed učitavanja
|
||||
### Učitaj redoslijed
|
||||
|
||||
Dodaci se učitavaju iz svih izvora i svi zakačnjaci rade u nizu. Redoslijed učitavanja je:
|
||||
|
||||
@@ -57,7 +57,7 @@ Dodaci se učitavaju iz svih izvora i svi zakačnjaci rade u nizu. Redoslijed u
|
||||
|
||||
---
|
||||
|
||||
## Kreiranje dodatka
|
||||
## Kreirajte dodatak
|
||||
|
||||
Dodatak je **JavaScript/TypeScript modul** koji izvozi jedan ili više dodataka
|
||||
funkcije. Svaka funkcija prima objekt konteksta i vraća hooks objekt.
|
||||
@@ -154,14 +154,14 @@ Dodaci se mogu pretplatiti na događaje kao što je prikazano ispod u odjeljku P
|
||||
- `lsp.client.diagnostics`
|
||||
- `lsp.updated`
|
||||
|
||||
#### Događaji poruka
|
||||
#### Poruka Događaji
|
||||
|
||||
- `message.part.removed`
|
||||
- `message.part.updated`
|
||||
- `message.removed`
|
||||
- `message.updated`
|
||||
|
||||
#### Događaji dozvola
|
||||
#### Događaji dozvole
|
||||
|
||||
- `permission.asked`
|
||||
- `permission.replied`
|
||||
@@ -189,7 +189,7 @@ Dodaci se mogu pretplatiti na događaje kao što je prikazano ispod u odjeljku P
|
||||
|
||||
- `shell.env`
|
||||
|
||||
#### Događaji alata
|
||||
#### Alat Događaji
|
||||
|
||||
- `tool.execute.after`
|
||||
- `tool.execute.before`
|
||||
@@ -206,7 +206,7 @@ Dodaci se mogu pretplatiti na događaje kao što je prikazano ispod u odjeljku P
|
||||
|
||||
Evo nekoliko primjera dodataka koje možete koristiti za proširenje OpenCode.
|
||||
|
||||
### Slanje obavještenja
|
||||
### Šalji obavještenja
|
||||
|
||||
Pošaljite obavještenja kada se dogode određeni događaji:
|
||||
|
||||
@@ -248,7 +248,7 @@ export const EnvProtection = async ({ project, client, $, directory, worktree })
|
||||
|
||||
---
|
||||
|
||||
### Ubacivanje varijabli okruženja
|
||||
### Ubacite varijable okruženja
|
||||
|
||||
Ubacite varijable okruženja u sva izvršavanja ljuske (AI alati i korisnički terminali):
|
||||
|
||||
@@ -299,7 +299,7 @@ Pomoćnik `tool` kreira prilagođeni alat koji opencode može pozvati. Uzima fun
|
||||
|
||||
---
|
||||
|
||||
### Bilježenje
|
||||
### Logging
|
||||
|
||||
Koristite `client.app.log()` umjesto `console.log` za strukturirano bilježenje:
|
||||
|
||||
@@ -318,7 +318,7 @@ export const MyPlugin = async ({ client }) => {
|
||||
|
||||
Nivoi su: `debug`, `info`, `warn`, `error`. Pogledajte [SDK dokumentaciju](https://opencode.ai/docs/sdk) za detalje.
|
||||
|
||||
### Kuke za sažimanje
|
||||
### Kuke za sabijanje
|
||||
|
||||
Prilagodite kontekst uključen kada se sesija zbije:
|
||||
|
||||
|
||||
@@ -15,14 +15,14 @@ Za dodavanje provajdera potrebno je:
|
||||
|
||||
---
|
||||
|
||||
### Vjerodajnice
|
||||
### Akreditacije
|
||||
|
||||
Kada dodate API ključeve dobavljača sa naredbom `/connect`, oni se pohranjuju
|
||||
u `~/.local/share/opencode/auth.json`.
|
||||
|
||||
---
|
||||
|
||||
### Konfiguracija
|
||||
### Config
|
||||
|
||||
Možete prilagoditi dobavljače putem odjeljka `provider` u vašem OpenCode
|
||||
config.
|
||||
@@ -84,7 +84,7 @@ Radi kao i svaki drugi provajder u OpenCode i potpuno je opcionalan za korišten
|
||||
|
||||
---
|
||||
|
||||
## Direktorij
|
||||
## Directory
|
||||
|
||||
Pogledajmo neke od provajdera detaljno. Ako želite dodati provajdera na
|
||||
listu, slobodno otvori PR.
|
||||
@@ -135,7 +135,7 @@ Da biste koristili Amazon Bedrock s OpenCode:
|
||||
|
||||
2. **Konfigurirajte autentifikaciju** koristeći jedan od sljedećih metoda:
|
||||
|
||||
#### Varijable okruženja (Brzi početak)
|
||||
#### Varijable okruženja (brzi početak)
|
||||
|
||||
Postavite jednu od ovih varijabli okruženja dok pokrećete opencode:
|
||||
|
||||
@@ -157,7 +157,7 @@ Ili ih dodajte na svoj bash profil:
|
||||
export AWS_REGION=us-east-1
|
||||
```
|
||||
|
||||
#### Konfiguracijski fajl (Preporučeno)
|
||||
#### Konfiguracijski fajl (preporučeno)
|
||||
|
||||
Za konfiguraciju specifičnu za projekat ili trajnu konfiguraciju, koristite `opencode.json`:
|
||||
|
||||
@@ -689,7 +689,7 @@ da pohrani token u opencode auth memoriju.
|
||||
|
||||
##### Samostalni GitLab
|
||||
|
||||
:::note[Napomena o usklađenosti]
|
||||
:::note[compliance note]
|
||||
OpenCode koristi mali model za neke AI zadatke kao što je generiranje naslova sesije.
|
||||
Podrazumevano je konfigurisan da koristi gpt-5-nano, a hostuje ga Zen. Da zaključate OpenCode
|
||||
da biste koristili samo svoju vlastitu instancu koju hostuje GitLab, dodajte sljedeće u svoju
|
||||
@@ -1889,7 +1889,7 @@ Ako imate problema s konfiguracijom provajdera, provjerite sljedeće:
|
||||
|
||||
Ovo se ne odnosi na dobavljače kao što je Amazon Bedrock, koji se oslanjaju na varijable okruženja za svoju autentifikaciju.
|
||||
|
||||
2. Za prilagođene provajdere, provjerite OpenCode konfiguraciju i:
|
||||
2. Za prilagođene provajdere, provjerite konfiguraciju otvorenog koda i:
|
||||
- Uvjerite se da ID provajdera korišten u naredbi `/connect` odgovara ID-u u vašoj opencode konfiguraciji.
|
||||
- Za provajdera se koristi pravi npm paket. Na primjer, koristite `@ai-sdk/cerebras` za Cerebras. A za sve ostale OpenAI kompatibilne provajdere, koristite `@ai-sdk/openai-compatible`.
|
||||
- Provjerite da li se ispravna krajnja tačka API-ja koristi u polju `options.baseURL`.
|
||||
|
||||
@@ -96,7 +96,7 @@ Prva pronadena datoteka pobjeduje u svakoj kategoriji. Na primjer, ako imate i `
|
||||
|
||||
---
|
||||
|
||||
## Prilagođena uputstva
|
||||
## Prilagodena uputstva
|
||||
|
||||
Mozete navesti prilagodene datoteke uputstava u `opencode.json` ili globalnom `~/.config/opencode/opencode.json`. Tako vi i tim ponovo koristite postojeca pravila bez dupliranja u AGENTS.md.
|
||||
|
||||
@@ -128,7 +128,7 @@ Sve datoteke uputstava se kombinuju sa vasim `AGENTS.md` datotekama.
|
||||
|
||||
Iako opencode ne parsira automatski reference datoteka u `AGENTS.md`, slicno ponasanje mozete dobiti na dva nacina:
|
||||
|
||||
### Korištenje opencode.json
|
||||
### Koristenje opencode.json
|
||||
|
||||
Preporuceni pristup je da koristite `instructions` polje u `opencode.json`:
|
||||
|
||||
@@ -139,7 +139,7 @@ Preporuceni pristup je da koristite `instructions` polje u `opencode.json`:
|
||||
}
|
||||
```
|
||||
|
||||
### Ručna uputstva u AGENTS.md
|
||||
### Rucna uputstva u AGENTS.md
|
||||
|
||||
Mozete nauciti opencode da cita eksterne datoteke tako sto cete dati eksplicitna uputstva u `AGENTS.md`. Evo prakticnog primjera:
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Koristite ga za izradu integracija i programsko upravljanje opencode-om.
|
||||
|
||||
---
|
||||
|
||||
## Instalacija
|
||||
## Install
|
||||
|
||||
Instalirajte SDK sa npm-a:
|
||||
|
||||
@@ -23,7 +23,7 @@ npm install @opencode-ai/sdk
|
||||
|
||||
---
|
||||
|
||||
## Kreiranje klijenta
|
||||
## Create client
|
||||
|
||||
Kreirajte instancu opencode:
|
||||
|
||||
@@ -35,7 +35,7 @@ const { client } = await createOpencode()
|
||||
|
||||
Ovo pokrece i server i klijent
|
||||
|
||||
#### Opcije
|
||||
#### Options
|
||||
|
||||
| Opcija | Tip | Opis | Default |
|
||||
| ---------- | ------------- | ----------------------------- | ----------- |
|
||||
@@ -47,7 +47,7 @@ Ovo pokrece i server i klijent
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Config
|
||||
|
||||
Mozete proslijediti konfiguracijski objekat za prilagodavanje ponasanja. Instanca i dalje ucitava `opencode.json`, ali konfiguraciju mozete nadjacati ili dodati inline:
|
||||
|
||||
@@ -67,7 +67,7 @@ console.log(`Server running at ${opencode.server.url}`)
|
||||
opencode.server.close()
|
||||
```
|
||||
|
||||
## Samo klijent
|
||||
## Client only
|
||||
|
||||
Ako vec imate pokrenutu opencode instancu, mozete napraviti klijentsku instancu i povezati se na nju:
|
||||
|
||||
@@ -79,7 +79,7 @@ const client = createOpencodeClient({
|
||||
})
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Options
|
||||
|
||||
| Opcija | Tip | Opis | Default |
|
||||
| --------------- | ---------- | --------------------------------- | ----------------------- |
|
||||
@@ -91,7 +91,7 @@ const client = createOpencodeClient({
|
||||
|
||||
---
|
||||
|
||||
## Tipovi
|
||||
## Types
|
||||
|
||||
SDK ukljucuje TypeScript definicije za sve API tipove. Uvezite ih direktno:
|
||||
|
||||
@@ -103,7 +103,7 @@ Svi tipovi su generisani iz OpenAPI specifikacije servera i dostupni u <a href={
|
||||
|
||||
---
|
||||
|
||||
## Greške
|
||||
## Errors
|
||||
|
||||
SDK moze baciti greske koje mozete uhvatiti i obraditi:
|
||||
|
||||
@@ -117,7 +117,7 @@ try {
|
||||
|
||||
---
|
||||
|
||||
## API-ji
|
||||
## APIs
|
||||
|
||||
SDK izlaže sve server API-je kroz type-safe klijent.
|
||||
|
||||
@@ -131,7 +131,7 @@ SDK izlaže sve server API-je kroz type-safe klijent.
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
const health = await client.global.health()
|
||||
@@ -149,7 +149,7 @@ console.log(health.data.version)
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// Write a log entry
|
||||
@@ -176,7 +176,7 @@ const agents = await client.app.agents()
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// List all projects
|
||||
@@ -196,7 +196,7 @@ const currentProject = await client.project.current()
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// Get current path information
|
||||
@@ -205,7 +205,7 @@ const pathInfo = await client.path.get()
|
||||
|
||||
---
|
||||
|
||||
### Konfiguracija
|
||||
### Config
|
||||
|
||||
| Metoda | Opis | Odgovor |
|
||||
| -------------------- | --------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
@@ -214,7 +214,7 @@ const pathInfo = await client.path.get()
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
const config = await client.config.get()
|
||||
@@ -224,7 +224,7 @@ const { providers, default: defaults } = await client.config.providers()
|
||||
|
||||
---
|
||||
|
||||
### Sesije
|
||||
### Sessions
|
||||
|
||||
| Metoda | Opis | Napomene |
|
||||
| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
@@ -250,7 +250,7 @@ const { providers, default: defaults } = await client.config.providers()
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// Create and manage sessions
|
||||
@@ -281,7 +281,7 @@ await client.session.prompt({
|
||||
|
||||
---
|
||||
|
||||
### Datoteke
|
||||
### Files
|
||||
|
||||
| Metoda | Opis | Odgovor |
|
||||
| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
@@ -299,7 +299,7 @@ await client.session.prompt({
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// Search and read files
|
||||
@@ -338,7 +338,7 @@ const content = await client.file.read({
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// Control TUI interface
|
||||
@@ -361,7 +361,7 @@ await client.tui.showToast({
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
await client.auth.set({
|
||||
@@ -372,7 +372,7 @@ await client.auth.set({
|
||||
|
||||
---
|
||||
|
||||
### Događaji
|
||||
### Events
|
||||
|
||||
| Metoda | Opis | Odgovor |
|
||||
| ------------------- | ------------------------- | ------------------------- |
|
||||
@@ -380,7 +380,7 @@ await client.auth.set({
|
||||
|
||||
---
|
||||
|
||||
#### Primjeri
|
||||
#### Examples
|
||||
|
||||
```javascript
|
||||
// Listen to real-time events
|
||||
|
||||
@@ -10,13 +10,13 @@ Komanda `opencode serve` pokrece headless HTTP server koji izlaže OpenAPI endpo
|
||||
|
||||
---
|
||||
|
||||
### Korištenje
|
||||
### Usage
|
||||
|
||||
```bash
|
||||
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
|
||||
```
|
||||
|
||||
#### Opcije
|
||||
#### Options
|
||||
|
||||
| Zastava | Opis | Default |
|
||||
| --------------- | ----------------------------------- | ---------------- |
|
||||
@@ -34,7 +34,7 @@ opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
||||
|
||||
---
|
||||
|
||||
### Autentifikacija
|
||||
### Authentication
|
||||
|
||||
Postavite `OPENCODE_SERVER_PASSWORD` da zastitite server HTTP basic auth mehanizmom. Korisnicko ime je po defaultu `opencode`, ili postavite `OPENCODE_SERVER_USERNAME` za nadjacavanje. Ovo vazi i za `opencode serve` i za `opencode web`.
|
||||
|
||||
@@ -44,7 +44,7 @@ OPENCODE_SERVER_PASSWORD=your-password opencode serve
|
||||
|
||||
---
|
||||
|
||||
### Kako radi
|
||||
### How it works
|
||||
|
||||
Kada pokrenete `opencode`, pokrecu se TUI i server. TUI je klijent koji komunicira sa serverom. Server izlaže OpenAPI 3.1 spec endpoint koji se koristi i za generisanje [SDK-a](/docs/sdk).
|
||||
|
||||
@@ -58,7 +58,7 @@ Mozete pokrenuti `opencode serve` da startate standalone server. Ako je opencode
|
||||
|
||||
---
|
||||
|
||||
#### Povezivanje na postojeći server
|
||||
#### Connect to an existing server
|
||||
|
||||
Kada pokrenete TUI, port i hostname se nasumicno dodijele. Umjesto toga, mozete zadati `--hostname` i `--port` [zastave](/docs/cli), pa se povezati na taj server.
|
||||
|
||||
@@ -66,7 +66,7 @@ Endpoint [`/tui`](#tui) mozete koristiti za upravljanje TUI-jem kroz server. Na
|
||||
|
||||
---
|
||||
|
||||
## Specifikacija
|
||||
## Spec
|
||||
|
||||
Server objavljuje OpenAPI 3.1 specifikaciju koju mozete vidjeti na:
|
||||
|
||||
@@ -78,13 +78,13 @@ Na primjer, `http://localhost:4096/doc`. Koristite specifikaciju da generisete k
|
||||
|
||||
---
|
||||
|
||||
## API-ji
|
||||
## APIs
|
||||
|
||||
opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Globalno
|
||||
### Global
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ---------------- | ------------------------------ | ------------------------------------ |
|
||||
@@ -93,7 +93,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Projekt
|
||||
### Project
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------------------ | ----------------------- | --------------------------------------------- |
|
||||
@@ -102,7 +102,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Putanja i VCS
|
||||
### Path & VCS
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------- | ------------------------------------ | ------------------------------------------- |
|
||||
@@ -111,7 +111,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Instanca
|
||||
### Instance
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------------------- | ---------------------------- | --------- |
|
||||
@@ -119,7 +119,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Konfiguracija
|
||||
### Config
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------- | ------------------- | --------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
@@ -129,7 +129,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Provajder
|
||||
### Provider
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | -------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- |
|
||||
@@ -140,7 +140,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Sesije
|
||||
### Sessions
|
||||
|
||||
| Metoda | Putanja | Opis | Napomene |
|
||||
| -------- | ---------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
|
||||
@@ -165,7 +165,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Poruke
|
||||
### Messages
|
||||
|
||||
| Metoda | Putanja | Opis | Napomene |
|
||||
| ------ | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
@@ -178,7 +178,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Naredbe
|
||||
### Commands
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ---------- | ----------------- | --------------------------------------------- |
|
||||
@@ -186,7 +186,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Datoteke
|
||||
### Files
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
@@ -197,17 +197,17 @@ opencode server izlaže sljedece API-je.
|
||||
| `GET` | `/file/content?path=<p>` | Read a file | <a href={typesUrl}><code>FileContent</code></a> |
|
||||
| `GET` | `/file/status` | Get status for tracked files | <a href={typesUrl}><code>File[]</code></a> |
|
||||
|
||||
#### `/find/file` parametri upita
|
||||
#### `/find/file` query parameters
|
||||
|
||||
- `query` (obavezno) — niz za pretragu (fuzzy podudaranje)
|
||||
- `type` (opcionalno) — ograniči rezultate na `"file"` ili `"directory"`
|
||||
- `directory` (opcionalno) — nadjačaj korijen projekta za pretragu
|
||||
- `limit` (opcionalno) — maksimalni rezultati (1–200)
|
||||
- `dirs` (opcionalno) — zastarjela zastavica (`"false"` vraća samo datoteke)
|
||||
- `query` (required) — search string (fuzzy match)
|
||||
- `type` (optional) — limit results to `"file"` or `"directory"`
|
||||
- `directory` (optional) — override the project root for the search
|
||||
- `limit` (optional) — max results (1–200)
|
||||
- `dirs` (optional) — legacy flag (`"false"` returns only files)
|
||||
|
||||
---
|
||||
|
||||
### Alati (Eksperimentalno)
|
||||
### Tools (Experimental)
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------------------------------------------- | ---------------------------------------- | -------------------------------------------- |
|
||||
@@ -216,7 +216,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### LSP, Formateri & MCP
|
||||
### LSP, Formatters & MCP
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------------ | -------------------------- | -------------------------------------------------------- |
|
||||
@@ -227,7 +227,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Agenti
|
||||
### Agents
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | -------- | ------------------------- | ------------------------------------------- |
|
||||
@@ -235,7 +235,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Bilježenje
|
||||
### Logging
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------- | ------------------------------------------------------------ | --------- |
|
||||
@@ -261,7 +261,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Autentifikacija
|
||||
### Auth
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ----------- | --------------------------------------------------------------- | --------- |
|
||||
@@ -269,7 +269,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Događaji
|
||||
### Events
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | -------- | ----------------------------------------------------------------------------- | ------------------------- |
|
||||
@@ -277,7 +277,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
---
|
||||
|
||||
### Dokumentacija
|
||||
### Docs
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------- | ------------------------- | --------------------------- |
|
||||
|
||||
@@ -21,13 +21,13 @@ Kada podijelite razgovor, OpenCode:
|
||||
|
||||
---
|
||||
|
||||
## Dijeljenje
|
||||
## Sharing
|
||||
|
||||
OpenCode podrzava tri nacina dijeljenja koji odreduju kako se razgovori dijele:
|
||||
|
||||
---
|
||||
|
||||
### Ručno (zadano)
|
||||
### Manual (default)
|
||||
|
||||
Po defaultu, OpenCode koristi rucni nacin dijeljenja. Sesije se ne dijele automatski, ali ih mozete rucno podijeliti komandom `/share`:
|
||||
|
||||
@@ -48,7 +48,7 @@ Da eksplicitno postavite rucni nacin u [config datoteci](/docs/config):
|
||||
|
||||
---
|
||||
|
||||
### Automatsko dijeljenje
|
||||
### Auto-share
|
||||
|
||||
Mozete ukljuciti automatsko dijeljenje za sve nove razgovore tako sto `share` postavite na `"auto"` u [config datoteci](/docs/config):
|
||||
|
||||
@@ -63,7 +63,7 @@ Kada je auto-share ukljucen, svaki novi razgovor se automatski dijeli i kreira s
|
||||
|
||||
---
|
||||
|
||||
### Onemogućeno
|
||||
### Disabled
|
||||
|
||||
Dijeljenje mozete potpuno iskljuciti tako sto `share` postavite na `"disabled"` u [config datoteci](/docs/config):
|
||||
|
||||
@@ -96,7 +96,7 @@ Imajte na umu nekoliko stvari prije dijeljenja razgovora.
|
||||
|
||||
---
|
||||
|
||||
### Čuvanje podataka
|
||||
### Cuvanje podataka
|
||||
|
||||
Dijeljeni razgovori ostaju dostupni dok ih eksplicitno ne uklonite iz dijeljenja. Ovo ukljucuje:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Vještine agenata
|
||||
title: "Skills agenata"
|
||||
description: "Definisite ponasanje koje se moze ponovo koristiti"
|
||||
---
|
||||
|
||||
@@ -31,7 +31,7 @@ Globalne definicije se takoder ucitavaju iz `~/.config/opencode/skills/*/SKILL.m
|
||||
|
||||
---
|
||||
|
||||
## Pisanje frontmatter-a
|
||||
## Napisite frontmatter
|
||||
|
||||
Svaki `SKILL.md` mora poceti YAML frontmatter-om.
|
||||
Prepoznaju se samo ova polja:
|
||||
@@ -64,14 +64,14 @@ Ekvivalentni regex:
|
||||
|
||||
---
|
||||
|
||||
## Pravila dužine
|
||||
## Pratite pravila duzine
|
||||
|
||||
`description` mora imati 1-1024 karaktera.
|
||||
Neka bude dovoljno precizan da agent moze pravilno odabrati.
|
||||
|
||||
---
|
||||
|
||||
## Primjer
|
||||
## Koristite primjer
|
||||
|
||||
Kreirajte `.opencode/skills/git-release/SKILL.md` ovako:
|
||||
|
||||
@@ -100,7 +100,7 @@ Ask clarifying questions if the target versioning scheme is unclear.
|
||||
|
||||
---
|
||||
|
||||
## Opis alata
|
||||
## Prepoznajte opis alata
|
||||
|
||||
OpenCode navodi dostupne skills u opisu `skill` alata.
|
||||
Svaki unos sadrzi naziv i opis skill-a:
|
||||
@@ -122,7 +122,7 @@ skill({ name: "git-release" })
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija dozvola
|
||||
## Konfigurisite dozvole
|
||||
|
||||
Kontrolisite kojim skills agenti mogu pristupiti pomocu dozvola baziranih na obrascima u `opencode.json`:
|
||||
|
||||
@@ -149,7 +149,7 @@ Obrasci podrzavaju wildcard znakove: `internal-*` poklapa `internal-docs`, `inte
|
||||
|
||||
---
|
||||
|
||||
## Nadjačavanje po agentu
|
||||
## Nadjacajte po agentu
|
||||
|
||||
Dajte odredenim agentima drugacije dozvole od globalnih defaulta.
|
||||
|
||||
@@ -181,7 +181,7 @@ permission:
|
||||
|
||||
---
|
||||
|
||||
## Isključivanje skill alata
|
||||
## Iskljucite skill alat
|
||||
|
||||
Potpuno iskljucite skills za agente koji ih ne bi trebali koristiti:
|
||||
|
||||
@@ -212,7 +212,7 @@ Kada je iskljuceno, sekcija `<available_skills>` se potpuno izostavlja.
|
||||
|
||||
---
|
||||
|
||||
## Rješavanje problema s učitavanjem
|
||||
## Rjesavanje problema s ucitavanjem
|
||||
|
||||
Ako se skill ne pojavi:
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Bez truecolor podrske, teme mogu imati slabiju preciznost boja ili pasti na najb
|
||||
|
||||
---
|
||||
|
||||
## Ugrađene teme
|
||||
## Ugradene teme
|
||||
|
||||
OpenCode dolazi sa vise ugradenih tema.
|
||||
|
||||
@@ -59,7 +59,7 @@ System tema je za korisnike koji:
|
||||
|
||||
---
|
||||
|
||||
## Korištenje teme
|
||||
## Koristenje teme
|
||||
|
||||
Temu mozete izabrati preko selektora tema komandom `/theme`. Mozete je navesti i u [configu](/docs/config).
|
||||
|
||||
@@ -72,7 +72,7 @@ Temu mozete izabrati preko selektora tema komandom `/theme`. Mozete je navesti i
|
||||
|
||||
---
|
||||
|
||||
## Prilagođene teme
|
||||
## Prilagodene teme
|
||||
|
||||
OpenCode podrzava fleksibilan sistem tema baziran na JSON-u koji olaksava kreiranje i prilagodavanje tema.
|
||||
|
||||
@@ -111,7 +111,7 @@ vim .opencode/themes/my-theme.json
|
||||
|
||||
---
|
||||
|
||||
### JSON struktura
|
||||
### JSON format
|
||||
|
||||
Teme koriste fleksibilan JSON format koji podrzava:
|
||||
|
||||
@@ -129,7 +129,7 @@ Sekcija `defs` je opcionalna i omogucava da definisete boje koje se mogu ponovo
|
||||
|
||||
---
|
||||
|
||||
### Terminalske zadane vrijednosti
|
||||
### Terminalski defaulti
|
||||
|
||||
Specijalna vrijednost `"none"` moze se koristiti za bilo koju boju da naslijedi defaultnu boju terminala. Ovo je korisno za teme koje se prirodno uklapaju u semu boja terminala:
|
||||
|
||||
@@ -138,7 +138,7 @@ Specijalna vrijednost `"none"` moze se koristiti za bilo koju boju da naslijedi
|
||||
|
||||
---
|
||||
|
||||
### Primjer
|
||||
### Example
|
||||
|
||||
Evo primjera prilagodene teme:
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Po defaultu su svi alati **ukljuceni** i ne traze dozvolu za pokretanje. Ponasan
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Configure
|
||||
|
||||
Koristite polje `permission` za kontrolu ponasanja alata. Za svaki alat mozete postaviti allow, deny ili ask.
|
||||
|
||||
@@ -39,7 +39,7 @@ Mozete koristiti i wildcard obrasce da kontrolisete vise alata odjednom. Na prim
|
||||
|
||||
---
|
||||
|
||||
## Ugrađeni
|
||||
## Built-in
|
||||
|
||||
Ovo su svi ugradeni alati dostupni u OpenCode.
|
||||
|
||||
@@ -168,7 +168,7 @@ Ovaj alat ispisuje sadrzaj direktorija. Prihvata glob obrasce za filtriranje rez
|
||||
|
||||
---
|
||||
|
||||
### lsp (eksperimentalno)
|
||||
### lsp (experimental)
|
||||
|
||||
Komunicira sa konfigurisanim LSP serverima za funkcije inteligencije koda kao definicije, reference, hover info i hijerarhija poziva.
|
||||
|
||||
@@ -344,7 +344,7 @@ Svako pitanje ukljucuje naslov, tekst pitanja i listu opcija. Korisnici mogu iza
|
||||
|
||||
---
|
||||
|
||||
## Prilagođeni alati
|
||||
## Custom tools
|
||||
|
||||
Custom tools vam omogucavaju da definisete vlastite funkcije koje LLM moze pozivati. Definisu se u config datoteci i mogu izvrsavati proizvoljan kod.
|
||||
|
||||
@@ -352,7 +352,7 @@ Custom tools vam omogucavaju da definisete vlastite funkcije koje LLM moze poziv
|
||||
|
||||
---
|
||||
|
||||
## MCP serveri
|
||||
## MCP servers
|
||||
|
||||
MCP (Model Context Protocol) serveri omogucavaju integraciju eksternih alata i servisa. Ovo ukljucuje pristup bazama, API integracije i third-party servise.
|
||||
|
||||
@@ -360,13 +360,13 @@ MCP (Model Context Protocol) serveri omogucavaju integraciju eksternih alata i s
|
||||
|
||||
---
|
||||
|
||||
## Interno
|
||||
## Internals
|
||||
|
||||
Interno, alati kao `grep`, `glob` i `list` koriste [ripgrep](https://github.com/BurntSushi/ripgrep). Po defaultu, ripgrep postuje `.gitignore` obrasce, pa se fajlovi i direktoriji iz `.gitignore` izostavljaju iz pretraga i listinga.
|
||||
|
||||
---
|
||||
|
||||
### Obrasci ignorisanja
|
||||
### Ignore patterns
|
||||
|
||||
Da ukljucite fajlove koji bi inace bili ignorisani, kreirajte `.ignore` datoteku u korijenu projekta. Ova datoteka moze eksplicitno dozvoliti odredene putanje.
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ Da biste otklonili probleme s OpenCode, počnite provjeravanjem dnevnika i lokal
|
||||
|
||||
---
|
||||
|
||||
## Dnevnici
|
||||
## Logovi
|
||||
|
||||
Log fajlovi se pišu na:
|
||||
|
||||
@@ -20,9 +20,9 @@ Možete postaviti nivo dnevnika pomoću opcije komandne linije `--log-level` da
|
||||
|
||||
---
|
||||
|
||||
## Pohrana
|
||||
## Skladištenje
|
||||
|
||||
OpenCode pohranjuje podatke o sesiji i druge podatke aplikacije na disku na:
|
||||
opencode pohranjuje podatke o sesiji i druge podatke aplikacije na disku na:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/`
|
||||
- **Windows**: Pritisnite `WIN+R` i zalijepite `%USERPROFILE%\.local\share\opencode`
|
||||
@@ -49,7 +49,7 @@ OpenCode Desktop pokreće lokalni OpenCode server (`opencode-cli` sidecar) u poz
|
||||
|
||||
---
|
||||
|
||||
### Onemogućavanje dodataka
|
||||
### Onemogući dodatke
|
||||
|
||||
Ako se desktop aplikacija ruši pri pokretanju, visi ili se čudno ponaša, počnite s onemogućavanjem dodataka.
|
||||
|
||||
@@ -70,7 +70,7 @@ Ako imate konfigurirane dodatke, privremeno ih onemogućite uklanjanjem ključa
|
||||
}
|
||||
```
|
||||
|
||||
#### Provjera direktorija dodataka
|
||||
#### Provjerite imenike dodataka
|
||||
|
||||
OpenCode također može učitati lokalne dodatke s diska. Privremeno ih maknite s puta (ili preimenujte folder) i ponovo pokrenite desktop aplikaciju:
|
||||
|
||||
@@ -84,7 +84,7 @@ Ako aplikacija ponovo počne raditi, ponovo omogućite dodatke jedan po jedan ka
|
||||
|
||||
---
|
||||
|
||||
### Brisanje keš memorije
|
||||
### Očisti keš memoriju
|
||||
|
||||
Ako onemogućavanje dodataka ne pomogne (ili se instalacija dodatka zaglavila), obrišite keš memoriju kako bi ga OpenCode mogao ponovo izgraditi.
|
||||
|
||||
@@ -99,7 +99,7 @@ Ako onemogućavanje dodataka ne pomogne (ili se instalacija dodatka zaglavila),
|
||||
|
||||
---
|
||||
|
||||
### Rješavanje problema sa vezom na serveru
|
||||
### Popravite probleme sa vezom na serveru
|
||||
|
||||
OpenCode Desktop može ili pokrenuti svoj lokalni server (podrazumevano) ili se povezati na URL servera koji ste konfigurisali.
|
||||
|
||||
@@ -130,7 +130,7 @@ Na Linuxu, neka podešavanja Waylanda mogu uzrokovati prazne prozore ili greške
|
||||
|
||||
---
|
||||
|
||||
### Windows: WebView2 izvršno okruženje
|
||||
### Windows: WebView2 runtime
|
||||
|
||||
Na Windows-u, OpenCode Desktop zahtijeva Microsoft Edge **WebView2 Runtime**. Ako se aplikacija otvori u praznom prozoru ili se ne pokrene, instalirajte/ažurirajte WebView2 i pokušajte ponovo.
|
||||
|
||||
@@ -151,7 +151,7 @@ OpenCode Desktop prikazuje sistemska obavještenja samo kada:
|
||||
|
||||
---
|
||||
|
||||
### Resetovanje pohrane desktop aplikacije
|
||||
### Poništi pohranu desktop aplikacija (posljednje rješenje)
|
||||
|
||||
Ako se aplikacija ne pokrene i ne možete izbrisati postavke unutar korisničkog sučelja, resetirajte spremljeno stanje desktop aplikacije.
|
||||
|
||||
@@ -169,7 +169,7 @@ Da brzo pronađete direktorij:
|
||||
|
||||
---
|
||||
|
||||
## Traženje pomoći
|
||||
## Dobivanje pomoći
|
||||
|
||||
Ako imate problema s OpenCode:
|
||||
|
||||
@@ -195,7 +195,7 @@ Evo nekih uobičajenih problema i kako ih riješiti.
|
||||
|
||||
---
|
||||
|
||||
### OpenCode se ne pokreće
|
||||
### OpenCode se neće pokrenuti
|
||||
|
||||
1. Provjerite dnevnike za poruke o greškama
|
||||
2. Pokušajte pokrenuti sa `--print-logs` da vidite izlaz u terminalu
|
||||
@@ -252,7 +252,7 @@ Na Windows-u pritisnite `WIN+R` i izbrišite: `%USERPROFILE%\.local\share\openco
|
||||
|
||||
### AI_APICallError i problemi sa paketom dobavljača
|
||||
|
||||
Ako naiđete na greške API poziva, to može biti zbog zastarjelih paketa dobavljača. OpenCode dinamički instalira pakete dobavljača (OpenAI, Anthropic, Google, itd.) po potrebi i kešira ih lokalno.
|
||||
Ako naiđete na greške API poziva, to može biti zbog zastarjelih paketa dobavljača. opencode dinamički instalira pakete dobavljača (OpenAI, Anthropic, Google, itd.) po potrebi i kešira ih lokalno.
|
||||
|
||||
Da biste riješili probleme s paketom dobavljača:
|
||||
|
||||
@@ -264,9 +264,9 @@ Da biste riješili probleme s paketom dobavljača:
|
||||
|
||||
Na Windows-u pritisnite `WIN+R` i izbrišite: `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
2. Ponovo pokrenite OpenCode da ponovo instalirate najnovije pakete dobavljača
|
||||
2. Ponovo pokrenite opencode da ponovo instalirate najnovije pakete dobavljača
|
||||
|
||||
Ovo će prisiliti OpenCode da preuzme najnovije verzije paketa dobavljača, što često rješava probleme kompatibilnosti s parametrima modela i promjenama API-ja.
|
||||
Ovo će prisiliti opencode da preuzme najnovije verzije paketa dobavljača, što često rješava probleme kompatibilnosti s parametrima modela i promjenama API-ja.
|
||||
|
||||
---
|
||||
|
||||
@@ -297,4 +297,4 @@ Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
|
||||
export DISPLAY=:99.0
|
||||
```
|
||||
|
||||
OpenCode će otkriti da li koristite Wayland i preferirate `wl-clipboard`, u suprotnom će pokušati pronaći alate međuspremnika po redoslijedu: `xclip` i `xsel`.
|
||||
opencode će otkriti da li koristite Wayland i preferirate `wl-clipboard`, u suprotnom će pokušati pronaći alate međuspremnika po redoslijedu: `xclip` i `xsel`.
|
||||
|
||||
@@ -27,7 +27,7 @@ Give me a quick summary of the codebase.
|
||||
|
||||
---
|
||||
|
||||
## Reference datoteka
|
||||
## Reference fajlova
|
||||
|
||||
Možete referencirati datoteke u svojim porukama koristeći `@`. Ovo vrši nejasnu pretragu datoteka u trenutnom radnom direktoriju.
|
||||
|
||||
@@ -43,7 +43,7 @@ Sadržaj datoteke se automatski dodaje u razgovor.
|
||||
|
||||
---
|
||||
|
||||
## Bash naredbe
|
||||
## Bash komande
|
||||
|
||||
Započnite poruku sa `!` da pokrenete komandu ljuske.
|
||||
|
||||
@@ -55,7 +55,7 @@ Izlaz naredbe se dodaje u razgovor kao rezultat alata.
|
||||
|
||||
---
|
||||
|
||||
## Naredbe
|
||||
## Komande
|
||||
|
||||
Kada koristite OpenCode TUI, možete upisati `/` nakon čega slijedi ime komande da biste brzo izvršili radnje. na primjer:
|
||||
|
||||
@@ -356,7 +356,7 @@ Nekim uređivačima su potrebni argumenti komandne linije da bi se pokrenuli u n
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Konfiguriši
|
||||
|
||||
Možete prilagoditi TUI ponašanje putem vašeg OpenCode konfiguracionog fajla.
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Ovo pokreće lokalni server na `127.0.0.1` sa nasumičnim dostupnim portom i aut
|
||||
Ako `OPENCODE_SERVER_PASSWORD` nije postavljen, server će biti nezaštićen. Ovo je u redu za lokalnu upotrebu, ali bi trebalo biti postavljeno za pristup mreži.
|
||||
:::
|
||||
|
||||
:::tip[Windows korisnici]
|
||||
:::tip[Windows Users]
|
||||
Za najbolje iskustvo, pokrenite `opencode web` iz [WSL](/docs/windows-wsl) umjesto PowerShell-a. Ovo osigurava pravilan pristup sistemu datoteka i integraciju terminala.
|
||||
:::
|
||||
|
||||
@@ -54,7 +54,7 @@ Kada koristite `0.0.0.0`, OpenCode će prikazati i lokalne i mrežne adrese:
|
||||
Network access: http://192.168.1.100:4096
|
||||
```
|
||||
|
||||
### mDNS Otkrivanje
|
||||
### mDNS Discovery
|
||||
|
||||
Omogućite mDNS kako bi vaš server bio vidljiv na lokalnoj mreži:
|
||||
|
||||
|
||||
@@ -7,13 +7,13 @@ import { Steps } from "@astrojs/starlight/components"
|
||||
|
||||
Iako OpenCode moze raditi direktno na Windowsu, preporucujemo [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) za najbolje iskustvo. WSL daje Linux okruzenje koje glatko radi sa OpenCode funkcijama.
|
||||
|
||||
:::tip[Zašto WSL?]
|
||||
:::tip[Why WSL?]
|
||||
WSL nudi bolje performanse fajl sistema, punu terminalsku podrsku i kompatibilnost s razvojnim alatima na koje se OpenCode oslanja.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
## Postavljanje
|
||||
## Setup
|
||||
|
||||
<Steps>
|
||||
|
||||
@@ -42,7 +42,7 @@ WSL nudi bolje performanse fajl sistema, punu terminalsku podrsku i kompatibilno
|
||||
|
||||
---
|
||||
|
||||
## Desktop aplikacija + WSL Server
|
||||
## Desktop App + WSL Server
|
||||
|
||||
Ako preferirate OpenCode Desktop aplikaciju, ali zelite da server radi u WSL-u:
|
||||
|
||||
@@ -69,7 +69,7 @@ OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
|
||||
|
||||
---
|
||||
|
||||
## Web klijent + WSL
|
||||
## Web Client + WSL
|
||||
|
||||
Za najbolje web iskustvo na Windowsu:
|
||||
|
||||
@@ -106,7 +106,7 @@ Za najgladje iskustvo, razmislite da klonirate/kopirate repo u WSL fajl sistem (
|
||||
|
||||
---
|
||||
|
||||
## Savjeti
|
||||
## Tips
|
||||
|
||||
- Drzite OpenCode u WSL-u za projekte na Windows diskovima - pristup fajlovima je jednostavan
|
||||
- Koristite VS Code [WSL ekstenziju](https://code.visualstudio.com/docs/remote/wsl) uz OpenCode za integrisan tok rada
|
||||
|
||||
@@ -89,7 +89,7 @@ Nasim modelima mozete pristupiti i preko sljedecih API endpointa.
|
||||
|
||||
---
|
||||
|
||||
### Modeli
|
||||
### Models
|
||||
|
||||
Pun spisak dostupnih modela i metapodataka mozete preuzeti na:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: ACP-understøttelse
|
||||
title: ACP support
|
||||
description: Brug OpenCode i enhver ACP-kompatibel editor.
|
||||
---
|
||||
|
||||
@@ -13,7 +13,7 @@ ACP er en åben protokol, der standardiserer kommunikation mellem kodeeditorer o
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurer
|
||||
|
||||
For at bruge OpenCode via ACP, konfigurer din editor til at køre kommandoen `opencode acp`.
|
||||
|
||||
@@ -140,7 +140,7 @@ Denne konfiguration sætter CodeCompanion til at bruge OpenCode som ACP-agent ti
|
||||
|
||||
Hvis du har brug for at sende miljøvariabler (som `OPENCODE_API_KEY`), henvises til [Konfiguration af adaptere: Miljøvariabler](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) i CodeCompanion.nvim-dokumentationen for alle detaljer.
|
||||
|
||||
## Understøttelse
|
||||
## Support
|
||||
|
||||
OpenCode fungerer på samme måde via ACP som i terminalen. Alle funktioner understøtter:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Agenter
|
||||
title: Agent
|
||||
description: Konfigurer og brug specialiserede agenter.
|
||||
---
|
||||
|
||||
@@ -13,13 +13,13 @@ Du kan skifte mellem agenter under en session eller kalde dem med `@`-omtalen.
|
||||
|
||||
---
|
||||
|
||||
## Typer
|
||||
## Skriver
|
||||
|
||||
Der er to typer agenter i OpenCode; primære agenter og subagenter.
|
||||
|
||||
---
|
||||
|
||||
### Primær agent
|
||||
### Primære agent
|
||||
|
||||
Primære agenter er de vigtigste assistenter, du interagerer direkte med. Du kan bladre gennem dem ved at bruge **Tab**-tasten eller din konfigurerede `switch_agent`-tastebinding. Disse agenter håndterer din hovedsamtale. Værktøjsadgang konfigureres via tilladelser - for eksempel har Build alle aktiveret, mens Plan er begrænset.
|
||||
|
||||
@@ -40,13 +40,13 @@ OpenCode leveres med to indbyggede underagenter, **Generelt** og **Udforsk**. Vi
|
||||
|
||||
---
|
||||
|
||||
## Indbyggede
|
||||
## Indbygget
|
||||
|
||||
OpenCode leveres med to indbyggede primære agenter og to indbyggede subagenter.
|
||||
|
||||
---
|
||||
|
||||
### Build-agenten
|
||||
### Brug bygge
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
@@ -54,7 +54,7 @@ Byg er den **standard** primære agent med alle aktiveret. Dette er standardagen
|
||||
|
||||
---
|
||||
|
||||
### Plan-agenten
|
||||
### Brug plan
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
@@ -68,7 +68,7 @@ Denne agent er nyttig, når du vil have LLM til at analysere kode, foreslå ænd
|
||||
|
||||
---
|
||||
|
||||
### General-agenten
|
||||
### Brug generelt
|
||||
|
||||
_Tilstand_: `subagent`
|
||||
|
||||
@@ -76,7 +76,7 @@ En agent til generelt formål at undersøge komplekse spørgsmål og udføre opg
|
||||
|
||||
---
|
||||
|
||||
### Explore-agenten
|
||||
### Brug udforsk
|
||||
|
||||
_Tilstand_: `subagent`
|
||||
|
||||
@@ -84,7 +84,7 @@ En hurtig, skrivebeskyttet agent til at udforske kodebaser. Kan ikke ændre file
|
||||
|
||||
---
|
||||
|
||||
### Compact-agenten
|
||||
### Brug komprimering
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
@@ -92,7 +92,7 @@ Skjult systemagent, der komprimerer lang kontekst til et mindre resumé. Det kø
|
||||
|
||||
---
|
||||
|
||||
### Title-agenten
|
||||
### Brug titel
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
@@ -100,7 +100,7 @@ Skjult systemagent, der genererer korte sessionstitler. Den kører automatisk og
|
||||
|
||||
---
|
||||
|
||||
### Resume-agenten
|
||||
### Brug CV
|
||||
|
||||
_Tilstand_: `primary`
|
||||
|
||||
@@ -108,7 +108,7 @@ Skjult systemagent, der opretter sessionsoversigter. Den kører automatisk og ka
|
||||
|
||||
---
|
||||
|
||||
## Anvendelse
|
||||
## Brug
|
||||
|
||||
1. For primære agenter skal du bruge tasten **Tab** til at bladre gennem dem under en session. Du kan også bruge din konfigurerede `switch_agent` nøglebinding.
|
||||
|
||||
@@ -128,7 +128,7 @@ Skjult systemagent, der opretter sessionsoversigter. Den kører automatisk og ka
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse de indbyggede agenter eller oprette dine egne gennem konfiguration. Agenter kan konfigureres på følgende måder:
|
||||
|
||||
@@ -216,7 +216,7 @@ Lad os se nærmere på disse konfigurationsmuligheder.
|
||||
|
||||
---
|
||||
|
||||
### Beskrivelse (`description`)
|
||||
### Beskrivelse
|
||||
|
||||
Brug indstillingen `description` til at give en kort beskrivelse af, hvad agenten gør, og hvornår den skal bruges.
|
||||
|
||||
@@ -234,7 +234,7 @@ Dette er en **påkrævet** konfigurationsindstilling.
|
||||
|
||||
---
|
||||
|
||||
### Temperatur (`temperature`)
|
||||
### Temperatur
|
||||
|
||||
Styr tilfældigheden og kreativiteten af LLMs svar med `temperature`-konfigurationen.
|
||||
|
||||
@@ -281,7 +281,7 @@ Hvis ingen temperatur er angivet, bruger OpenCode modelspecifikke standardindsti
|
||||
|
||||
---
|
||||
|
||||
### Trin (`steps`)
|
||||
### Maks. skridt
|
||||
|
||||
Kontrollerer det maksimale antal agent-gentagelser, som en agent kan udføre, før han bliver tvunget til kun at svare med tekst. Dette giver brugere, der ønsker at kontrollere, mulighed for at sætte en grænse for agenthandlinger.
|
||||
|
||||
@@ -307,7 +307,7 @@ Det gamle `maxSteps`-felt er forældet. Brug `steps` i stedet.
|
||||
|
||||
---
|
||||
|
||||
### Deaktivering (`disable`)
|
||||
### Deaktiver
|
||||
|
||||
Indstil til `true` for at deaktivere agenten.
|
||||
|
||||
@@ -323,7 +323,7 @@ Indstil til `true` for at deaktivere agenten.
|
||||
|
||||
---
|
||||
|
||||
### Prompt (`prompt`)
|
||||
### Spørg
|
||||
|
||||
Angiv en brugerdefineret systempromptfil for denne agent med `prompt`-konfigurationen. Promptfilen skal indeholde instruktioner, der er specifikke for agentens formål.
|
||||
|
||||
@@ -341,7 +341,7 @@ Denne sti er i forhold til, hvor konfigurationsfilen er placeret. Så dette virk
|
||||
|
||||
---
|
||||
|
||||
### Model (`model`)
|
||||
### Model
|
||||
|
||||
Brug `model`-konfigurationen til at tilsidesætte modeller for denne agent. Nyttigt til brug af forskellige modeller optimeret til forskellige opgaver. For eksempel en hurtigere model til planlægning, en dygtig model til implementering.
|
||||
|
||||
@@ -363,7 +363,7 @@ Model-id'et i din OpenCode-konfiguration brugerformatet `provider/model-id`. For
|
||||
|
||||
---
|
||||
|
||||
### Værktøjer (`tools`)
|
||||
### Værktøjer
|
||||
|
||||
Kontroller, hvilke værktøjer der er tilgængelige i denne agent med `tools`-konfigurationen. Du kan aktivere eller deaktivere specifikke redskaber ved at indstille dem til `true` eller `false`.
|
||||
|
||||
@@ -410,7 +410,7 @@ Du kan også bruge jokertegn til at styre flere værktøjer på én gang. For ek
|
||||
|
||||
---
|
||||
|
||||
### Tilladelser (`permission`)
|
||||
### Tilladelser
|
||||
|
||||
Du kan konfigurere tilladelser til at administrere, hvilke handlinger og agenter kan udføre. I øjeblikket kan tilladelserne til værktøjerne `edit`, `bash` og `webfetch` konfigureres til:
|
||||
|
||||
@@ -522,7 +522,7 @@ Da den sidste matchningsregel har forrang, skal du sætte jokertegnet `*` først
|
||||
|
||||
---
|
||||
|
||||
### Tilstand (`mode`)
|
||||
### Tilstand
|
||||
|
||||
Styr agentens tilstand med `mode`-konfigurationen. Indstillingen `mode` bruges til at bestemme, hvordan agenten kan bruges.
|
||||
|
||||
@@ -540,7 +540,7 @@ Indstillingen `mode` kan indstilles til `primary`, `subagent` eller `all`. Hvis
|
||||
|
||||
---
|
||||
|
||||
### Skjult (`hidden`)
|
||||
### Skjult
|
||||
|
||||
Skjul en underagent fra `@` autofuldførelsesmenuen med `hidden: true`. Nyttigt for interne underagenter, der kun bør startes programmatisk af andre agenter via opgaveværktøjet.
|
||||
|
||||
@@ -563,7 +563,7 @@ Gælder kun for `mode: subagent`-agent.
|
||||
|
||||
---
|
||||
|
||||
### Opgavetilladelser (`permission.task`)
|
||||
### Opgavetilladelser
|
||||
|
||||
Kontroller, hvilke subagenter en agent kan påkalde via opgaveværktøjet med `permission.task`. Bruger glob-mønstre til fleksibel matchning.
|
||||
|
||||
@@ -596,7 +596,7 @@ Brugere kan altid påkalde enhver underagent direkte via `@` autofuldførelsesme
|
||||
|
||||
---
|
||||
|
||||
### Farve (`color`)
|
||||
### Farve
|
||||
|
||||
Tilpas agentens visuelle udseende i brugergrænsefladen med muligheden `color`. Dette påvirker, hvordan agenter vises i grænsefladen.
|
||||
|
||||
@@ -662,7 +662,7 @@ Kør `opencode models` for at se en liste over de tilgængelige modeller.
|
||||
|
||||
---
|
||||
|
||||
## Oprettelse af agent
|
||||
## Opret agent
|
||||
|
||||
Du kan oprette nye agenter ved hjælp af følgende kommando:
|
||||
|
||||
@@ -680,7 +680,7 @@ Denne interaktive kommando vil:
|
||||
|
||||
---
|
||||
|
||||
## Anvendelsesmuligheder
|
||||
## Use cases
|
||||
|
||||
Her er nogle almindelige use cases for forskellige agenter.
|
||||
|
||||
@@ -702,7 +702,7 @@ Har du en agent, du gerne vil dele? [Send en PR](https://github.com/anomalyco/op
|
||||
|
||||
---
|
||||
|
||||
### Dokumentations-agent
|
||||
### Dokumentationsagent
|
||||
|
||||
```markdown title="~/.config/opencode/agents/docs-writer.md"
|
||||
---
|
||||
@@ -724,7 +724,7 @@ Focus on:
|
||||
|
||||
---
|
||||
|
||||
### Sikkerheds-agent
|
||||
### Sikkerhedsrevisor
|
||||
|
||||
```markdown title="~/.config/opencode/agents/security-auditor.md"
|
||||
---
|
||||
|
||||
@@ -27,7 +27,7 @@ Start OpenCode terminalbrugergrænsefladen.
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ------------ | ---- | ---------------------------------------------------------------------------- |
|
||||
@@ -76,7 +76,7 @@ opencode web --port 4096 --hostname 0.0.0.0
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ----------- | ---- | -------------------------------- |
|
||||
@@ -185,7 +185,7 @@ Kør GitHub-agenten. Dette bruges typisk i GitHub Actions.
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### Flag
|
||||
##### Flags
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| --------- | ---------------------------------------------- |
|
||||
@@ -294,7 +294,7 @@ Du kan eventuelt videregive et udbyder-id for at filtrere modeller efter den udb
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ----------- | ----------------------------------------------------------------------- |
|
||||
@@ -333,7 +333,7 @@ opencode serve
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ------------ | ---- | ----------------------------------------------------------------------------------- |
|
||||
@@ -362,7 +362,7 @@ opencode serve
|
||||
|
||||
Dette starter en HTTP-server, der giver API-adgang til opencode-funktionalitet uden TUI-grænsefladen. Indstil `OPENCODE_SERVER_PASSWORD` for at aktivere HTTP grundlæggende godkendelse (brugernavn er standard til `opencode`).
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ------------ | ------------------------------------------------ |
|
||||
@@ -391,7 +391,7 @@ Liste over alle OpenCode sessioner.
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### Flag
|
||||
##### Flags
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ------------- | ---- | -------------------------------------- |
|
||||
@@ -408,7 +408,7 @@ Vis tokenbrug og omkostningsstatistikker for dine OpenCode-sessioner.
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ----------- | --------------------------------------------------------------------------- |
|
||||
@@ -458,7 +458,7 @@ opencode web
|
||||
|
||||
Dette starter en HTTP-server og åbner en webbrowser for at få adgang til OpenCode via en webgrænseflade. Indstil `OPENCODE_SERVER_PASSWORD` for at aktivere HTTP grundlæggende godkendelse (brugernavn er standard til `opencode`).
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ------------ | ------------------------------------------------ |
|
||||
@@ -479,7 +479,7 @@ opencode acp
|
||||
|
||||
Denne kommando starter en ACP-server, der kommunikerer via stdin/stdout ved hjælp af nd-JSON.
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Beskrivelse |
|
||||
| ------------ | --------------------- |
|
||||
@@ -497,7 +497,7 @@ Afinstaller OpenCode og fjern alle relaterede filer.
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### Flag
|
||||
#### Flags
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| --------------- | ---- | ------------------------------------------------ |
|
||||
@@ -536,7 +536,7 @@ opencode upgrade v0.1.48
|
||||
|
||||
---
|
||||
|
||||
## Globale flag
|
||||
## Globalt flag
|
||||
|
||||
opencode CLI tager følgende globale flag.
|
||||
|
||||
@@ -582,7 +582,7 @@ OpenCode kan konfigureres ved hjælp af miljøvariabler.
|
||||
|
||||
---
|
||||
|
||||
### Flag
|
||||
### Flags
|
||||
|
||||
Disse miljøvariabler muliggør eksperimentelle funktioner, der kan ændres eller fjernes.
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Brugerdefinerede kommandoer er ud over de indbyggede kommandoer som `/init`, `/u
|
||||
|
||||
---
|
||||
|
||||
## Oprettelse af kommandofiler
|
||||
## Opret kommandofiler
|
||||
|
||||
Opret markdown-filer i mappen `commands/` for at definere brugerdefinerede kommandoer.
|
||||
|
||||
@@ -40,7 +40,7 @@ Brug kommandoen ved at skrive `/` efterfulgt af kommandonavnet.
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilføje brugerdefinerede kommandoer gennem OpenCode-konfigurationen eller ved at oprette markdown-filer i `commands/`-mappen.
|
||||
|
||||
@@ -102,7 +102,7 @@ du løber:
|
||||
|
||||
---
|
||||
|
||||
## Prompt-konfiguration
|
||||
## Spørg config
|
||||
|
||||
Spørgsmålene til de brugerdefinerede kommandoer understøtter flere specielle pladsholdere og syntaks.
|
||||
|
||||
@@ -195,7 +195,7 @@ Kommandoer kører i dit projekts rodmappe, og deres output bliver en del af prom
|
||||
|
||||
---
|
||||
|
||||
### Fil-referencer
|
||||
### Filreferencer
|
||||
|
||||
Inkluder filer i din kommando ved hjælp af `@` efterfulgt af filnavnet.
|
||||
|
||||
@@ -218,7 +218,7 @@ Lad os se nærmere på konfigurationsmulighederne.
|
||||
|
||||
---
|
||||
|
||||
### Skabelon (`template`)
|
||||
### Skabelon
|
||||
|
||||
Indstillingen `template` definerer den prompt, der sendes til LLM, når kommandoen udføres.
|
||||
|
||||
@@ -236,7 +236,7 @@ Dette er en **påkrævet** konfigurationsindstilling.
|
||||
|
||||
---
|
||||
|
||||
### Beskrivelse (`description`)
|
||||
### Beskrivelse
|
||||
|
||||
Brug indstillingen `description` til at give en kort beskrivelse af, hvad kommandoen gør.
|
||||
|
||||
@@ -274,7 +274,7 @@ Dette er en **valgfri** konfigurationsindstilling. Hvis det ikke er angivet, er
|
||||
|
||||
---
|
||||
|
||||
### Underopgave (`subtask`)
|
||||
### Underopgave
|
||||
|
||||
Brug `subtask` boolean til at tvinge kommandoen til at udløse en [subagent](/docs/agents/#subagents) påkaldelse.
|
||||
Dette er nyttigt, hvis du ønsker, at kommandoen ikke skal forurene din primære kontekst og vil **tvinge** agenten til at fungere som en underagent,
|
||||
@@ -312,7 +312,7 @@ Dette er en **valgfri** konfigurationsindstilling.
|
||||
|
||||
---
|
||||
|
||||
## Indbyggede kommandoer
|
||||
## Indbygget
|
||||
|
||||
opencode indeholder flere indbyggede kommandoer som `/init`, `/undo`, `/redo`, `/share`, `/help`; [learn more](/docs/tui#commands).
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Konfiguration
|
||||
title: Konfig
|
||||
description: Ved at bruge OpenCode JSON konfig.
|
||||
---
|
||||
|
||||
@@ -23,7 +23,7 @@ OpenCode understøtter både **JSON** og **JSONC** (JSON med kommentarer) format
|
||||
|
||||
---
|
||||
|
||||
## Placeringer
|
||||
## Steder
|
||||
|
||||
Du kan placere din konfiguration et par forskellige steder, og de har en
|
||||
forskellig rækkefølge.
|
||||
@@ -101,7 +101,7 @@ Global config tilsidesætter eksterne organisatoriske standarder.
|
||||
|
||||
---
|
||||
|
||||
### Projekt-niveau
|
||||
### Pr. projekt
|
||||
|
||||
Tilføj `opencode.json` i dit projektrod. Project config har den højeste forrang blandt standard config-filer - den tilsidesætter både globale og eksterne config.
|
||||
|
||||
@@ -128,7 +128,7 @@ Brugerdefineret konfigurationsindlæses mellem globale konfigurationer og projek
|
||||
|
||||
---
|
||||
|
||||
### Brugerdefineret mappe
|
||||
### Brugerdefineret bibliotek
|
||||
|
||||
Angiv en brugerdefineret konfigurationsmappe ved hjælp af `OPENCODE_CONFIG_DIR`
|
||||
miljøvariabel. Dette kort vil blive søgt efter agenter, kommandoer,
|
||||
@@ -208,7 +208,7 @@ Tilgængelige muligheder:
|
||||
|
||||
---
|
||||
|
||||
### Værktøjer (`tools`)
|
||||
### Værktøjer
|
||||
|
||||
Du kan administrere de værktøjer, en LLM kan bruge, gennem indstillingen `tools`.
|
||||
|
||||
@@ -226,7 +226,7 @@ Du kan administrere de værktøjer, en LLM kan bruge, gennem indstillingen `tool
|
||||
|
||||
---
|
||||
|
||||
### Modeller (`models`)
|
||||
### Modeller
|
||||
|
||||
Du kan konfigurere de udbydere og modeller, du vil bruge i din OpenCode-konfiguration, gennem mulighederne `provider`, `model` og `small_model`.
|
||||
|
||||
@@ -299,7 +299,7 @@ Bearer tokens (`AWS_BEARER_TOKEN_BEDROCK` eller `/connect`) har forrang over pro
|
||||
|
||||
---
|
||||
|
||||
### Temaer (`themes`)
|
||||
### Temaer
|
||||
|
||||
Du kan konfigurere det tema, du vil bruge i din OpenCode-konfiguration, gennem indstillingen `theme`.
|
||||
|
||||
@@ -340,7 +340,7 @@ Du kan også definere agenter ved at bruge markdown-filer i `~/.config/opencode/
|
||||
|
||||
---
|
||||
|
||||
### Standardagent (`default_agent`)
|
||||
### Standardagent
|
||||
|
||||
Du kan indstille standardagenten ved at bruge indstillingen `default_agent`. Dette bestemmer, hvilken agent der bruges, når ingen er eksplicit angivet.
|
||||
|
||||
@@ -357,7 +357,7 @@ Denne indstilling gælder på tværs af alle grænseflader: TUI, CLI (`opencode
|
||||
|
||||
---
|
||||
|
||||
### Deling (`share`)
|
||||
### Deling
|
||||
|
||||
Du kan konfigurere funktionen [share](/docs/share) gennem indstillingen `share`.
|
||||
|
||||
@@ -378,7 +378,7 @@ Som standard er deling indstillet til manuel tilstand, hvor du eksplicit skal de
|
||||
|
||||
---
|
||||
|
||||
### Kommandoer (`command`)
|
||||
### Kommandoer
|
||||
|
||||
Du kan konfigurere brugerdefinerede kommandoer til gentagne opgaver gennem indstillingen `command`.
|
||||
|
||||
@@ -404,7 +404,7 @@ Du kan også definere kommandoer ved hjælp af markdown-filer i `~/.config/openc
|
||||
|
||||
---
|
||||
|
||||
### Tastebindinger (`keybinds`)
|
||||
### Nøglebindinger
|
||||
|
||||
Du kan tilpasse dine nøglebindinger gennem indstillingen `keybinds`.
|
||||
|
||||
@@ -419,7 +419,7 @@ Du kan tilpasse dine nøglebindinger gennem indstillingen `keybinds`.
|
||||
|
||||
---
|
||||
|
||||
### Auto-opdatering (`autoupdate`)
|
||||
### Autoopdatering
|
||||
|
||||
OpenCode vil automatisk downloade alle nye opdateringer, når den starter op. Du kan deaktivere dette med indstillingen `autoupdate`.
|
||||
|
||||
@@ -435,7 +435,7 @@ Bemærk, at dette kun virker, hvis det ikke blev installeret ved hjælp af en pa
|
||||
|
||||
---
|
||||
|
||||
### Formater (`formatter`)
|
||||
### Formatere
|
||||
|
||||
Du kan konfigurere kodeformatere gennem indstillingen `formatter`.
|
||||
|
||||
@@ -461,7 +461,7 @@ Du kan konfigurere kodeformatere gennem indstillingen `formatter`.
|
||||
|
||||
---
|
||||
|
||||
### Tilladelse (`permission`)
|
||||
### Tilladelser
|
||||
|
||||
Som standard opencode **tillader alle operationer** uden at kræve eksplicit godkendelse. Du kan ændre dette ved at bruge indstillingen `permission`.
|
||||
|
||||
@@ -481,7 +481,7 @@ For at sikre, at værktøjerne `edit` og `bash` for eksempel kræver brugergodke
|
||||
|
||||
---
|
||||
|
||||
### Komprimering (`compaction`)
|
||||
### Komprimering
|
||||
|
||||
Du kan styre kontekstkomprimeringsadfærd gennem indstillingen `compaction`.
|
||||
|
||||
@@ -500,7 +500,7 @@ Du kan styre kontekstkomprimeringsadfærd gennem indstillingen `compaction`.
|
||||
|
||||
---
|
||||
|
||||
### Overvågning (`watcher`)
|
||||
### Watcher
|
||||
|
||||
Du kan konfigurere ignoreringsmønstre for filovervåger gennem indstillingen `watcher`.
|
||||
|
||||
@@ -517,7 +517,7 @@ Mønstre følger glob-syntaks. Brug dette til at udelukke støjende mapper fra f
|
||||
|
||||
---
|
||||
|
||||
### MCP
|
||||
### MCP servere
|
||||
|
||||
Du kan konfigurere MCP-servere, som du vil bruge, gennem indstillingen `mcp`.
|
||||
|
||||
@@ -532,7 +532,7 @@ Du kan konfigurere MCP-servere, som du vil bruge, gennem indstillingen `mcp`.
|
||||
|
||||
---
|
||||
|
||||
### Plugin
|
||||
### Plugins
|
||||
|
||||
[Plugins](/docs/plugins) udvide OpenCode med brugerdefinerede værktøjer, kroge og integrationer.
|
||||
|
||||
@@ -549,7 +549,7 @@ Placer plugin-filer i `.opencode/plugins/` eller `~/.config/opencode/plugins/`.
|
||||
|
||||
---
|
||||
|
||||
### Instruktioner (`instructions`)
|
||||
### Instruktioner
|
||||
|
||||
Du kan konfigurere brugervejledningen til den model, du kan gennem indstillingen `instructions`.
|
||||
|
||||
@@ -565,7 +565,7 @@ om regler her](/docs/rules).
|
||||
|
||||
---
|
||||
|
||||
### Deaktiverede udbydere (`disabled_providers`)
|
||||
### Deaktiverede udbydere
|
||||
|
||||
Du kan deaktivere udbydere, der indlæses automatisk gennem `disabled_providers`-indstillingen. Dette er nyttigt, når du vil forhindre visse udbydere i at blive indlæst, deres legitimationsoplysninger er tilgængelige.
|
||||
|
||||
@@ -588,7 +588,7 @@ Indstillingen `disabled_providers` accepterer en række udbyder-id'er. Når en u
|
||||
|
||||
---
|
||||
|
||||
### Aktiverede udbydere (`enabled_providers`)
|
||||
### Aktiverede udbydere
|
||||
|
||||
Du kan angive en tilladelsesliste over udbydere gennem muligheden `enabled_providers`. Når den er indstillet, vil kun de angivne udbydere blive aktiveret, og alle andre vil blive ignoreret.
|
||||
|
||||
@@ -609,7 +609,7 @@ Hvis en udbyder optræder i både `enabled_providers` og `disabled_providers`, h
|
||||
|
||||
---
|
||||
|
||||
### Eksperimentel (`experimental`)
|
||||
### Eksperimentel
|
||||
|
||||
Nøglen `experimental` indeholder muligheder, der er under aktiv udvikling.
|
||||
|
||||
@@ -626,13 +626,13 @@ Eksperimentelle muligheder er ikke stabile. De kan ændres eller fjernes uden va
|
||||
|
||||
---
|
||||
|
||||
## Variabler
|
||||
## Variabel
|
||||
|
||||
Du kan bruge variabelsubstitution i dine konfigurationsfiler til at referere til miljøvariabler og filindhold.
|
||||
|
||||
---
|
||||
|
||||
### Miljøvariabler
|
||||
### Env vars
|
||||
|
||||
Brug `{env:VARIABLE_NAME}` til at erstatte miljøvariabler:
|
||||
|
||||
|
||||
@@ -68,7 +68,7 @@ Du kan også tjekke [awesome-opencode](https://github.com/awesome-opencode/aweso
|
||||
|
||||
---
|
||||
|
||||
## Agenter
|
||||
## Agent
|
||||
|
||||
| Navn | Beskrivelse |
|
||||
| ----------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
||||
|
||||
@@ -19,7 +19,7 @@ Sådan kommer du i gang med OpenCode Enterprise:
|
||||
|
||||
---
|
||||
|
||||
## Prøveperiode
|
||||
## Prøve
|
||||
|
||||
OpenCode er open source og gemmer ingen af din kode eller kontekstdata, så dine udviklere kan simpelthen [get started](/docs/) og udføre en prøveversion.
|
||||
|
||||
@@ -75,7 +75,7 @@ prissætning og implementeringsmuligheder.
|
||||
|
||||
---
|
||||
|
||||
### Central konfiguration
|
||||
### Central Config
|
||||
|
||||
Vi kan konfigurere OpenCode til at bruge en enkelt central konfiguration for hele din organisation.
|
||||
|
||||
@@ -99,7 +99,7 @@ Du kan også deaktivere alle andre AI-udbydere og sikre, at alle anmodninger gå
|
||||
|
||||
---
|
||||
|
||||
### Selv-hosting
|
||||
### Self-hosting
|
||||
|
||||
Selvom vi anbefaler at deaktivere delesiderne for at sikre, at dine data aldrig forsvinder
|
||||
din organisation, kan vi også hjælpe dig med at selv hoste dem på din infrastruktur.
|
||||
|
||||
@@ -7,7 +7,7 @@ OpenCode formaterer automatisk filer, efter de er skrevet eller redigeret ved hj
|
||||
|
||||
---
|
||||
|
||||
## Indbyggede
|
||||
## Indbygget
|
||||
|
||||
OpenCode leveres med flere indbyggede formatere til populære sprog og rammer. Nedenfor er en liste over de formatere, understøttede filtypenavne og kommandoer eller konfigurationsmuligheder, der har brug for.
|
||||
|
||||
@@ -54,7 +54,7 @@ Denne proces sker i baggrunden, hvilket sikrer, at dine kodestile vedligeholdes
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse formatere gennem afsnittet `formatter` i din OpenCode-konfiguration.
|
||||
|
||||
|
||||
@@ -114,7 +114,7 @@ OpenCode kan udløses af følgende GitHub hændelser:
|
||||
| `schedule` | Cron-baseret tidsplan | Kør OpenCode efter en tidsplan. Kræver `prompt` input. Output går til logfiler og PR'er (intet problem ved kommentere). |
|
||||
| `workflow_dispatch` | Manuel trigger fra GitHub UI | Udløs OpenCode efter behov via fanen Handlinger. Kræver `prompt` input. Output går til logfiler og PR'er. |
|
||||
|
||||
### Tidsplan eksempel
|
||||
### Skema Eksempel
|
||||
|
||||
Kør OpenCode efter en tidsplan for at udføre automatiske opgaver:
|
||||
|
||||
@@ -154,7 +154,7 @@ For planlagte begivenheder er `prompt` input **påkrævet**, da der ikke er noge
|
||||
|
||||
---
|
||||
|
||||
### Pull Request eksempel
|
||||
### Pull Request Eksempel
|
||||
|
||||
Gennemgå automatisk PR'er, når de åbnes eller opdateres:
|
||||
|
||||
@@ -195,7 +195,7 @@ For `pull_request` hændelser, hvis der ikke er angivet nogen `prompt`, vil Open
|
||||
|
||||
---
|
||||
|
||||
### Issues Triage eksempel
|
||||
### Issues Triage Eksempel
|
||||
|
||||
Triage automatisk nye problemer. Dette eksempel filtrerer til konti ældre end 30 dage for at reducere spam:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Introduktion
|
||||
title: Intro
|
||||
description: Kom godt i gang med OpenCode.
|
||||
---
|
||||
|
||||
@@ -29,7 +29,7 @@ For at bruge OpenCode i din terminal skal du bruge:
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
## Installationsprogram
|
||||
|
||||
Den nemmeste måde at installere OpenCode på er gennem installationsscriptet.
|
||||
|
||||
@@ -129,7 +129,7 @@ Du kan også få fat i binæren fra [Releases](https://github.com/anomalyco/open
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurer
|
||||
|
||||
Med OpenCode kan du bruge enhver LLM udbyder ved at konfigurere deres API-nøgler.
|
||||
|
||||
@@ -158,7 +158,7 @@ Alternativt kan du vælge en af de andre udbydere. [Læs mere](/docs/provi
|
||||
|
||||
---
|
||||
|
||||
## Initialisering
|
||||
## Initialiser
|
||||
|
||||
Nu hvor du har konfigureret en udbyder, kan du navigere til et projekt, der
|
||||
du vil arbejde på.
|
||||
@@ -333,7 +333,7 @@ Eller du **kan gentage** ændringerne ved hjælp af kommandoen `/redo`.
|
||||
|
||||
---
|
||||
|
||||
## Deling
|
||||
## Del
|
||||
|
||||
De samtaler, du har med OpenCode, kan [deles med din
|
||||
team](/docs/share).
|
||||
@@ -352,7 +352,7 @@ Her er en [eksempelsamtale](https://opencode.ai/s/4XP1fce5) med OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Tilpasning
|
||||
## Tilpas
|
||||
|
||||
Og det er det! Du er nu en professionel i at bruge OpenCode.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Tastebindinger
|
||||
title: Nøglebind
|
||||
description: Tilpas dine nøglebindinger.
|
||||
---
|
||||
|
||||
@@ -105,7 +105,7 @@ OpenCode har en liste over nøglebindinger, som du kan tilpasse gennem OpenCode-
|
||||
|
||||
---
|
||||
|
||||
## Ledertast
|
||||
## Ledernøgle
|
||||
|
||||
OpenCode bruger en `leader` nøgle til de fleste smagsbindinger. Dette undgår konflikter i din terminal.
|
||||
|
||||
@@ -115,7 +115,7 @@ Du behøver ikke bruge en ledernøgle til dine nøglebindinger, men vi anbefaler
|
||||
|
||||
---
|
||||
|
||||
## Deaktiver tastebinding
|
||||
## Deaktiver smagsbinding
|
||||
|
||||
Du kan deaktivere en nøglebinding ved at tilføje nøglen til din konfiguration med værdien "ingen".
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: LSP-servere
|
||||
title: LSP Servere
|
||||
description: OpenCode integreres med dine LSP-servere.
|
||||
---
|
||||
|
||||
@@ -7,7 +7,7 @@ OpenCode integreres med Language Server Protocol (LSP) for at hjælpe LLM med at
|
||||
|
||||
---
|
||||
|
||||
## Indbyggede
|
||||
## Indbygget
|
||||
|
||||
OpenCode leveres med flere indbyggede LSP-servere til populære sprog:
|
||||
|
||||
@@ -63,7 +63,7 @@ Når opencode åbner en fil, vil den:
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse LSP-servere gennem sektionen `lsp` i din opencode-konfiguration.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: MCP-servere
|
||||
title: MCP servere
|
||||
description: Tilføj lokale og eksterne MCP værktøjer.
|
||||
---
|
||||
|
||||
@@ -9,7 +9,7 @@ Når de er tilføjet, er MCP automatisk tilgængelig for LLM sammen med indbygge
|
||||
|
||||
---
|
||||
|
||||
#### Forbehold
|
||||
#### Caveats
|
||||
|
||||
Når du bruger en MCP-server, føjes den til konteksten. Dette kan hurtigt stige, hvis du har mange værktøjer. Så vi anbefaler at være forsigtig med hvilke MCP-servere du bruger.
|
||||
|
||||
@@ -21,7 +21,7 @@ Visse MCP-servere, som GitHub MCP-servere, har en tendens til at tilføje mange
|
||||
|
||||
---
|
||||
|
||||
## Aktivering
|
||||
## Aktiver
|
||||
|
||||
Du kan definere MCP-servere i din [OpenCode Config](https://opencode.ai/docs/config/) under `mcp`. Tilføj hver MCP med et unikt navn. Du kan henvise til denne MCP ved navn, når du spørger LLM.
|
||||
|
||||
@@ -44,7 +44,7 @@ Du kan også deaktivere en server ved at indstille `enabled` til `false`. Dette
|
||||
|
||||
---
|
||||
|
||||
### Tilsidesættelse af eksterne standarder
|
||||
### Overriding remote defaults
|
||||
|
||||
Organisationer kan levere standard MCP-servere via deres `.well-known/opencode`-slutpunkt. Disse servere kan være deaktiveret som standard, hvilket giver brugerne mulighed for at tilmelde sig dem, de har brug for.
|
||||
|
||||
@@ -112,7 +112,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
|
||||
---
|
||||
|
||||
#### Indstillinger
|
||||
#### Options
|
||||
|
||||
Her er alle muligheder for at konfigurere en lokal MCP-server.
|
||||
|
||||
@@ -126,7 +126,7 @@ Her er alle muligheder for at konfigurere en lokal MCP-server.
|
||||
|
||||
---
|
||||
|
||||
## Ekstern
|
||||
## Remote
|
||||
|
||||
Tilføj ekstern MCP-server ved at indstille `type` til `"remote"`.
|
||||
|
||||
@@ -150,7 +150,7 @@ Tilføj ekstern MCP-server ved at indstille `type` til `"remote"`.
|
||||
|
||||
---
|
||||
|
||||
#### Indstillinger
|
||||
#### Options
|
||||
|
||||
| Mulighed | Skriv | Påkrævet | Beskrivelse |
|
||||
| --------- | ------- | -------- | ------------------------------------------------------------------------------------ |
|
||||
@@ -173,7 +173,7 @@ OpenCode håndterer automatisk OAuth-godkendelse for eksterne MCP-servere. Når
|
||||
|
||||
---
|
||||
|
||||
### Automatisk
|
||||
### Automatic
|
||||
|
||||
For de fleste OAuth-aktiverede MCP-servere kræver ingen speciel konfiguration. Bare konfigureret fjernserver:
|
||||
|
||||
@@ -193,7 +193,7 @@ Hvis serveren kræver godkendelse, vil OpenCode bede dig om at godkende, når du
|
||||
|
||||
---
|
||||
|
||||
### Forhåndsregistreret
|
||||
### Pre-registered
|
||||
|
||||
Hvis du har klientlegitimationsoplysninger fra MCP-serverudbyderen, kan du konfigurere dem:
|
||||
|
||||
@@ -216,7 +216,7 @@ Hvis du har klientlegitimationsoplysninger fra MCP-serverudbyderen, kan du konfi
|
||||
|
||||
---
|
||||
|
||||
### Godkendelse
|
||||
### Authenticating
|
||||
|
||||
Du kan manuelt udløse godkendelse eller administrere legitimationsoplysninger.
|
||||
|
||||
@@ -242,7 +242,7 @@ Kommandoen `mcp auth` åbner din browser for godkendelse. Når du har godkendt,
|
||||
|
||||
---
|
||||
|
||||
#### Deaktivering af OAuth
|
||||
#### Disabling OAuth
|
||||
|
||||
Hvis du vil deaktivere automatisk OAuth for en server (f.eks. for servere, der bruger API-nøgler i stedet), skal du indstille `oauth` til `false`:
|
||||
|
||||
@@ -264,7 +264,7 @@ Hvis du vil deaktivere automatisk OAuth for en server (f.eks. for servere, der b
|
||||
|
||||
---
|
||||
|
||||
#### OAuth-indstillinger
|
||||
#### OAuth Options
|
||||
|
||||
| Mulighed | Skriv | Beskrivelse |
|
||||
| -------------- | --------------- | ----------------------------------------------------------------------------------------- |
|
||||
@@ -273,7 +273,7 @@ Hvis du vil deaktivere automatisk OAuth for en server (f.eks. for servere, der b
|
||||
| `clientSecret` | String | OAuth-klienthemmelighed, hvis det kræves af autorisationsserveren. |
|
||||
| `scope` | String | OAuth-omfang at anmode om under godkendelse. |
|
||||
|
||||
#### Fejlfinding
|
||||
#### Debugging
|
||||
|
||||
Hvis en ekstern MCP-server ikke kan godkendes, kan du diagnosticere problemer med:
|
||||
|
||||
@@ -289,7 +289,7 @@ Kommandoen `mcp debug` viser den aktuelle godkendelsesstatus, tester HTTP-forbin
|
||||
|
||||
---
|
||||
|
||||
## Administration
|
||||
## Administrator
|
||||
|
||||
Dine MCPs er tilgængelige som værktøjer i **TK\_** sammen med indbyggede værktøjer. Så du kan administrere dem gennem OpenCode-konfigurationen som ethvert andet værktøj.
|
||||
|
||||
@@ -375,7 +375,7 @@ Hvis du har et stort antal MCP-servere, vil du måske kun aktivere dem pr. agent
|
||||
|
||||
---
|
||||
|
||||
#### Glob-mønstre
|
||||
#### Glob patterns
|
||||
|
||||
Glob-mønsteret bruger simple regex-globing-mønstre:
|
||||
|
||||
|
||||
@@ -64,7 +64,7 @@ Hvis du har konfigureret en [custom provider](/docs/providers#custom), er `provi
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration af modeller
|
||||
## Konfigurer modeller
|
||||
|
||||
Du kan konfigurere en models muligheder globalt gennem konfigurationen.
|
||||
|
||||
@@ -195,13 +195,13 @@ Du kan tilsidesætte eksisterende varianter eller tilføje dine egne:
|
||||
}
|
||||
```
|
||||
|
||||
### Skift varianter
|
||||
### Cyklusvarianter
|
||||
|
||||
Brug tastebindingen `variant_cycle` til hurtigt at skifte mellem varianter. [Learn more](/docs/keybinds).
|
||||
|
||||
---
|
||||
|
||||
## Indlæsning af modeller
|
||||
## Indlæser modeller
|
||||
|
||||
Når OpenCode starter op, søger den efter modeller i følgende prioriterede rækkefølge:
|
||||
|
||||
|
||||
@@ -17,7 +17,7 @@ Du kan skifte mellem tilstande under en session eller konfigurere dem i din konf
|
||||
|
||||
---
|
||||
|
||||
## Indbyggede
|
||||
## Indbygget
|
||||
|
||||
opencode leveres med to indbyggede tilstande.
|
||||
|
||||
@@ -42,7 +42,7 @@ Denne tilstand er nyttig, når du vil have AI til at analysere kode, foreslå æ
|
||||
|
||||
---
|
||||
|
||||
## Skift
|
||||
## Skifter
|
||||
|
||||
Du kan skifte mellem tilstande under en session ved at bruge _Tab_-tasten. Eller din konfigurerede `switch_mode` nøglebinding.
|
||||
|
||||
@@ -50,11 +50,11 @@ Se også: [Formatters](/docs/formatters) for information om konfiguration af kod
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse de indbyggede tilstande eller oprette dine egne gennem konfiguration. Tilstande kan konfigureres på to måder:
|
||||
|
||||
### JSON-konfiguration
|
||||
### JSON Konfiguration
|
||||
|
||||
Konfigurer tilstande i din `opencode.json`-konfigurationsfil:
|
||||
|
||||
@@ -177,7 +177,7 @@ Hvis der ikke er angivet nogen temperatur, bruger opencode modelspecifikke stand
|
||||
|
||||
---
|
||||
|
||||
### Prompt
|
||||
### Spørg
|
||||
|
||||
Angiv en brugerdefineret systempromptfil for denne tilstand med `prompt`-konfigurationen. Promptfilen skal indeholde instruktioner, der er specifikke for tilstandens formål.
|
||||
|
||||
@@ -245,7 +245,7 @@ Her er alle de værktøjer, der kan styres gennem tilstandskonfigurationen.
|
||||
|
||||
Du kan oprette dine egne brugerdefinerede tilstande ved at tilføje dem til konfigurationen. Her er eksempler, der bruger begge tilgange:
|
||||
|
||||
### Brug af JSON-konfiguration
|
||||
### Bruger JSON konfiguration
|
||||
|
||||
```json title="opencode.json" {4-14}
|
||||
{
|
||||
@@ -318,7 +318,7 @@ Priorities:
|
||||
|
||||
---
|
||||
|
||||
### Brugsscenarier
|
||||
### Use cases
|
||||
|
||||
Her er nogle almindelige brugstilfælde for forskellige tilstande.
|
||||
|
||||
|
||||
@@ -30,7 +30,7 @@ Du kan konfigurere serverens port og værtsnavn ved hjælp af [CLI flags](/docs/
|
||||
|
||||
---
|
||||
|
||||
### Godkendelse
|
||||
### Godkend
|
||||
|
||||
Hvis din proxy kræver grundlæggende godkendelse, skal du inkludere legitimationsoplysninger i URL.
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ For eksempler, tjek [plugins](/docs/ecosystem#plugins) oprettet af fællesskabet
|
||||
|
||||
---
|
||||
|
||||
## Brug af plugin
|
||||
## Brug et plugin
|
||||
|
||||
Der er to måder at indlæse plugins på.
|
||||
|
||||
@@ -43,7 +43,7 @@ Gennemse tilgængelige plugins i [ecosystem](/docs/ecosystem#plugins).
|
||||
|
||||
---
|
||||
|
||||
### Installation af plugins
|
||||
### Hvordan plugins installeres
|
||||
|
||||
**npm plugins** installeres automatisk ved hjælp af Bun ved opstart. Pakker og deres afhængigheder cachelagres i `~/.cache/opencode/node_modules/`.
|
||||
|
||||
@@ -51,7 +51,7 @@ Gennemse tilgængelige plugins i [ecosystem](/docs/ecosystem#plugins).
|
||||
|
||||
---
|
||||
|
||||
### Indlæsningsrækkefølge
|
||||
### Indlæs rækkefølge
|
||||
|
||||
Plugins indlæses fra alle kilder, og alle hooks kører i rækkefølge. Indlæsningsrækkefølgen er:
|
||||
|
||||
@@ -64,7 +64,7 @@ Dublerede npm-pakker med samme navn og version indlæses én gang. Et lokalt plu
|
||||
|
||||
---
|
||||
|
||||
## Oprettelse af plugin
|
||||
## Opret et plugin
|
||||
|
||||
Et plugin er et **JavaScript/TypeScript modul**, der eksporterer et eller flere plugin
|
||||
funktioner. Hver funktion modtager et kontekstobjekt og returnerer et hooks-objekt.
|
||||
@@ -156,7 +156,7 @@ Plugins kan abonnere på begivenheder som vist nedenfor i afsnittet Eksempler. H
|
||||
|
||||
- `installation.updated`
|
||||
|
||||
#### LSP-hændelser
|
||||
#### LSP Begivenheder
|
||||
|
||||
- `lsp.client.diagnostics`
|
||||
- `lsp.updated`
|
||||
@@ -168,7 +168,7 @@ Plugins kan abonnere på begivenheder som vist nedenfor i afsnittet Eksempler. H
|
||||
- `message.removed`
|
||||
- `message.updated`
|
||||
|
||||
#### Tilladelseshændelser
|
||||
#### Tilladelsesbegivenheder
|
||||
|
||||
- `permission.asked`
|
||||
- `permission.replied`
|
||||
@@ -177,7 +177,7 @@ Plugins kan abonnere på begivenheder som vist nedenfor i afsnittet Eksempler. H
|
||||
|
||||
- `server.connected`
|
||||
|
||||
#### Sessionshændelser
|
||||
#### Sessionsbegivenheder
|
||||
|
||||
- `session.created`
|
||||
- `session.compacted`
|
||||
@@ -188,20 +188,20 @@ Plugins kan abonnere på begivenheder som vist nedenfor i afsnittet Eksempler. H
|
||||
- `session.status`
|
||||
- `session.updated`
|
||||
|
||||
#### Todo-hændelser
|
||||
#### Todo-begivenheder
|
||||
|
||||
- `todo.updated`
|
||||
|
||||
#### Shell-hændelser
|
||||
#### Shell-begivenheder
|
||||
|
||||
- `shell.env`
|
||||
|
||||
#### Værktøjshændelser
|
||||
#### Værktøjsbegivenheder
|
||||
|
||||
- `tool.execute.after`
|
||||
- `tool.execute.before`
|
||||
|
||||
#### TUI-hændelser
|
||||
#### TUI Begivenheder
|
||||
|
||||
- `tui.prompt.append`
|
||||
- `tui.command.execute`
|
||||
@@ -240,7 +240,7 @@ Hvis du bruger OpenCode desktop-appen, kan den sende systemmeddelelser automatis
|
||||
|
||||
---
|
||||
|
||||
### .env-beskyttelse
|
||||
###.env-beskyttelse
|
||||
|
||||
Undgå opencode i at læse `.env` filer:
|
||||
|
||||
@@ -331,7 +331,7 @@ Niveauer: `debug`, `info`, `warn`, `error`. Se [SDK documentation](https://openc
|
||||
|
||||
---
|
||||
|
||||
### Komprimerings-hooks
|
||||
### Komprimeringskroge
|
||||
|
||||
Tilpas konteksten inkluderet, når en session komprimeres:
|
||||
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: Regler
|
||||
description: Angiv tilpassede instruktioner til opencode.
|
||||
description: Set custom instructions for opencode.
|
||||
---
|
||||
|
||||
Du kan gi tilpassede instruksjoner for at OpenCode ved at oprete en `AGENTS.md`-fil. Dette ligner på Cursors regler. Den inneholder instruksjoner som vil bli inkludert i LLMs kontekst for at tilpasse oppførselen til ditt spesifikke prosjekt.
|
||||
|
||||
---
|
||||
|
||||
## Initialisering
|
||||
## Initialiser
|
||||
|
||||
For at lage en ny `AGENTS.md` fil, kan du kjøre kommandoen `/init` i opencode.
|
||||
|
||||
@@ -56,7 +56,7 @@ Vi tilføjer til prosjektspesifikke instruksjoner her, og dette vil bli delt på
|
||||
|
||||
opencode støtter også lesing av `AGENTS.md`-filen fra flere steder. Og dette tjener forskjellige formål.
|
||||
|
||||
### Projekt
|
||||
### Prosjekt
|
||||
|
||||
Plasser en `AGENTS.md` i prosjektroten for prosjektspesifikke regler. Disse gjelder kun når du arbeider i denne katalogen eller dens underkataloger.
|
||||
|
||||
@@ -66,7 +66,7 @@ Du kan også ha globale regler i en `~/.config/opencode/AGENTS.md`-fil. Dette bl
|
||||
|
||||
Siden dette ikke er forpliktet til Git eller delt med teamet ditt, anbefaler vi at bruge dette til at spesifisere eventuelle personlige regler som LLM bør følge.
|
||||
|
||||
### Claude Code-kompatibilitet
|
||||
### Claude-kodekompatibilitet
|
||||
|
||||
For brugere som migrerer fra Claude Code, støtter OpenCode Claude Codes filkonvensjoner som fallbacks:
|
||||
|
||||
@@ -84,7 +84,7 @@ export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
|
||||
|
||||
---
|
||||
|
||||
## Prioritet
|
||||
## Forrang
|
||||
|
||||
Når opencode starter, ser den etter regelfiler i denne rekkefølgen:
|
||||
|
||||
@@ -96,7 +96,7 @@ Den første matchende filen vinner i hver kategori. For eksempel, hvis du har b
|
||||
|
||||
---
|
||||
|
||||
## Brugerdefinerede instruktioner
|
||||
## Egendefinerte instruksjoner
|
||||
|
||||
Du kan spesifisere egendefinerte instruksjonsfiler i din `opencode.json` eller den globale `~/.config/opencode/opencode.json`. Dette lar deg og teamet ditt gjenbruge eksisterende regler i stedet for at måtte duplisere dem til AGENTS.md.
|
||||
|
||||
@@ -124,11 +124,11 @@ Alle instruksjonsfilene er kombinert med `AGENTS.md`-filene dine.
|
||||
|
||||
---
|
||||
|
||||
## Reference til eksterne filer
|
||||
## Refererer til eksterne filer
|
||||
|
||||
Selv om opencode ikke automatisk analyserer filreferanser i `AGENTS.md`, kan du oppnå lignende funksjonalitet på to måter:
|
||||
|
||||
### Brug af opencode.json
|
||||
### Bruger opencode.json
|
||||
|
||||
Den anbefalte tilnærmingen er at bruge feltet `instructions` i `opencode.json`:
|
||||
|
||||
@@ -139,7 +139,7 @@ Den anbefalte tilnærmingen er at bruge feltet `instructions` i `opencode.json`:
|
||||
}
|
||||
```
|
||||
|
||||
### Manuelle instruktioner i AGENTS.md
|
||||
### Manuelle instruksjoner i AGENTS.md
|
||||
|
||||
Du kan lære opencode at lese eksterne filer ved at gi eksplisitte instruksjoner i `AGENTS.md`. Her er et praktisk eksempel:
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ Brug den til at bygge integrasjoner og kontrollere opencode programmatisk.
|
||||
|
||||
---
|
||||
|
||||
## Installation
|
||||
## Installer
|
||||
|
||||
Installer SDK fra npm:
|
||||
|
||||
@@ -35,7 +35,7 @@ const { client } = await createOpencode()
|
||||
|
||||
Dette starter både en server og en klient
|
||||
|
||||
#### Indstillinger
|
||||
#### Alternativer
|
||||
|
||||
| Alternativ | Skriv | Beskrivelse | Standard |
|
||||
| ---------- | ------------- | -------------------------------- | ----------- |
|
||||
@@ -79,7 +79,7 @@ const client = createOpencodeClient({
|
||||
})
|
||||
```
|
||||
|
||||
#### Indstillinger
|
||||
#### Alternativer
|
||||
|
||||
| Alternativ | Skriv inn | Beskrivelse | Standard |
|
||||
| --------------- | ---------- | ---------------------------------- | ----------------------- |
|
||||
@@ -103,7 +103,7 @@ Alle typer er generert fra serverens OpenAPI-spesifikasjon og tilgængelig i <a
|
||||
|
||||
---
|
||||
|
||||
## Fejl
|
||||
## Feil
|
||||
|
||||
SDK kan gi feil som du kan fange opp og håndtere:
|
||||
|
||||
@@ -117,7 +117,7 @@ try {
|
||||
|
||||
---
|
||||
|
||||
## API'er
|
||||
## APIer
|
||||
|
||||
SDK avslører alle server-APIer gjennom en typesikker klient.
|
||||
|
||||
@@ -167,7 +167,7 @@ const agents = await client.app.agents()
|
||||
|
||||
---
|
||||
|
||||
### Projekt
|
||||
### Prosjekt
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------------- | -------------------------- | ---------------------------------------------- |
|
||||
@@ -205,7 +205,7 @@ const pathInfo = await client.path.get()
|
||||
|
||||
---
|
||||
|
||||
### Konfiguration
|
||||
### Konfig
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| -------------------- | -------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
@@ -224,7 +224,7 @@ const { providers, default: defaults } = await client.config.providers()
|
||||
|
||||
---
|
||||
|
||||
### Sessioner
|
||||
### sessioner
|
||||
|
||||
| Metode | Beskrivelse | Noter |
|
||||
| ---------------------------------------------------------- | --------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
@@ -353,7 +353,7 @@ await client.tui.showToast({
|
||||
|
||||
---
|
||||
|
||||
### Godkendelse
|
||||
### Auth
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------------- | ------------------------------- | --------- |
|
||||
@@ -372,7 +372,7 @@ await client.auth.set({
|
||||
|
||||
---
|
||||
|
||||
### Hændelser
|
||||
### Hendelser
|
||||
|
||||
| Metode | Beskrivelse | Svar |
|
||||
| ------------------- | ------------------------------ | ------------------------------ |
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
---
|
||||
title: Server
|
||||
description: Interager med opencode-serveren over HTTP.
|
||||
description: Samhandle med opencode-server over HTTP.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
|
||||
|
||||
Kommandoen `opencode serve` kører en hovedløs HTTP-server, som afslører et OpenAPI-endpoint, som en opencode-klient kan bruge.
|
||||
Kommandoen `opencode serve` kjører en hodeløs HTTP-server som avslører et OpenAPI-endepunkt som en opencode-klient kan bruge.
|
||||
|
||||
---
|
||||
|
||||
@@ -16,17 +16,17 @@ Kommandoen `opencode serve` kører en hovedløs HTTP-server, som afslører et Op
|
||||
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
|
||||
```
|
||||
|
||||
#### Indstillinger
|
||||
#### Alternativer
|
||||
|
||||
| Flag | Beskrivelse | Standard |
|
||||
| --------------- | -------------------------------------------- | ---------------- |
|
||||
| `--port` | Port at lytte på | `4096` |
|
||||
| `--hostname` | Værtsnavn at lytte på | `127.0.0.1` |
|
||||
| `--mdns` | Aktiver mDNS-opdagelse | `false` |
|
||||
| `--mdns-domain` | Brugerdefineret domænenavn for mDNS-tjeneste | `opencode.local` |
|
||||
| `--cors` | Yderligere browseroprindelse for at tillade | `[]` |
|
||||
| Flagg | Beskrivelse | Standard |
|
||||
| --------------- | ----------------------------------------------- | ---------------- |
|
||||
| `--port` | Port at lytte på | `4096` |
|
||||
| `--hostname` | Vertsnavn at lytte på | `127.0.0.1` |
|
||||
| `--mdns` | Aktiver mDNS-oppdagelse | `false` |
|
||||
| `--mdns-domain` | Egendefinert domenenavn for mDNS-tjeneste | `opencode.local` |
|
||||
| `--cors` | Ytterligere nettleseropprinnelse for at tillate | `[]` |
|
||||
|
||||
`--cors` kan angives flere gange:
|
||||
`--cors` kan passeres flere ganger:
|
||||
|
||||
```bash
|
||||
opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
||||
@@ -34,9 +34,9 @@ opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
||||
|
||||
---
|
||||
|
||||
### Godkendelse
|
||||
### Autentisering
|
||||
|
||||
Indstil `OPENCODE_SERVER_PASSWORD` for at beskytte serveren med HTTP grundlæggende godkendelse. Brugernavnet er som standard `opencode`, eller indstil `OPENCODE_SERVER_USERNAME` for at tilsidesætte det. Dette gælder både `opencode serve` og `opencode web`.
|
||||
Sett `OPENCODE_SERVER_PASSWORD` for at beskytte serveren med HTTP grunntilføjende autentisering. Brugernavnet er standard til `opencode`, eller sett `OPENCODE_SERVER_USERNAME` for at overstyre det. Dette gjelder både `opencode serve` og `opencode web`.
|
||||
|
||||
```bash
|
||||
OPENCODE_SERVER_PASSWORD=your-password opencode serve
|
||||
@@ -44,46 +44,46 @@ OPENCODE_SERVER_PASSWORD=your-password opencode serve
|
||||
|
||||
---
|
||||
|
||||
### Sådan fungerer det
|
||||
### Slik fungerer det
|
||||
|
||||
Når du kører `opencode` starter den en TUI og en server. Hvor TUI er
|
||||
klient som taler med serveren. Serveren viser en OpenAPI 3.1-specifikation
|
||||
endpoint. Dette endpoint bruges også til at generere en [SDK](/docs/sdk).
|
||||
Når du kjører `opencode` starter den en TUI og en server. Der TUI er
|
||||
klient som snakker med serveren. Serveren viser en OpenAPI 3.1-spesifikasjon
|
||||
endepunkt. Dette endepunktet bruges også til at generere en [SDK](/docs/sdk).
|
||||
|
||||
:::tip
|
||||
Brug opencode-serveren til at interagere med opencode programmatisk.
|
||||
Brug opencode-serveren til at samhandle med opencode programmatisk.
|
||||
:::
|
||||
|
||||
Denne arkitektur lader opencode understøtte flere klienter og lader dig interagere med opencode programmatisk.
|
||||
Denne arkitekturen lar opencode støtte flere klienter og lar deg samhandle med opencode programmatisk.
|
||||
|
||||
Du kan køre `opencode serve` for at starte en selvstændig server. Hvis du har
|
||||
opencode TUI kørende, vil `opencode serve` starte en ny server.
|
||||
Du kan kjøre `opencode serve` for at starte en frittstående server. Hvis du har
|
||||
opencode TUI kjører, vil `opencode serve` starte en ny server.
|
||||
|
||||
---
|
||||
|
||||
#### Opret forbindelse til en eksisterende server
|
||||
#### Koble til en eksisterende server
|
||||
|
||||
Når du starter TUI, tildeler den tilfældigt en port og et værtsnavn. Du kan i stedet sende `--hostname` og `--port` [flagene](/docs/cli). Brug derefter disse til at forbinde til serveren.
|
||||
Når du starter TUI, tildeler den tilfeldig en port og vertsnavn. Du kan i stedet sende inn `--hostname` og `--port` [flagg](/docs/cli). Brug deretter denne til at koble til serveren.
|
||||
|
||||
[`/tui`](#tui) endpointet kan bruges til at køre TUI gennem serveren. Du kan for eksempel forududfylde eller køre en forespørgsel. Denne opsætning bruges af OpenCode [IDE](/docs/ide) plugins.
|
||||
[`/tui`](#tui) endepunktet kan bruges til at kjøre TUI gjennom serveren. Du kan for eksempel forhåndsutfylle eller kjøre en forespørsel. Dette oppsettet bruges av OpenCode [IDE](/docs/ide) plugins.
|
||||
|
||||
---
|
||||
|
||||
## Specifikation
|
||||
## Spes
|
||||
|
||||
Serveren publicerer en OpenAPI 3.1-specifikation som kan vises på:
|
||||
Serveren publiserer en OpenAPI 3.1-spesifikasjon som kan vises på:
|
||||
|
||||
```
|
||||
http://<hostname>:<port>/doc
|
||||
```
|
||||
|
||||
For eksempel `http://localhost:4096/doc`. Brug specifikationen til at generere klienter eller inspicere forespørgsels- og svartyper. Eller se den i en Swagger-utforsker.
|
||||
For eksempel `http://localhost:4096/doc`. Brug spesifikasjonen til at generere klienter eller inspisere forespørsels- og svartyper. Eller se den i en Swagger-utforsker.
|
||||
|
||||
---
|
||||
|
||||
## API'er
|
||||
## APIer
|
||||
|
||||
OpenCode-serveren viser følgende API'er.
|
||||
OpenCode-serveren viser følgende APIer.
|
||||
|
||||
---
|
||||
|
||||
@@ -91,142 +91,142 @@ OpenCode-serveren viser følgende API'er.
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ---------------- | -------------------------------- | ------------------------------------ |
|
||||
| `GET` | `/global/health` | Få serverhelbred og version | `{ healthy: true, version: string }` |
|
||||
| `GET` | `/global/event` | Få globale hændelser (SSE strøm) | Eventstrøm |
|
||||
| `GET` | `/global/health` | Få serverhelse og versjon | `{ healthy: true, version: string }` |
|
||||
| `GET` | `/global/event` | Få globale hendelser (SSE strøm) | Eventstrøm |
|
||||
|
||||
---
|
||||
|
||||
### Projekt
|
||||
### Prosjekt
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------ | ------------------------- | --------------------------------------------- |
|
||||
| `GET` | `/project` | Liste over alle projekter | <a href={typesUrl}><code>Project[]</code></a> |
|
||||
| `GET` | `/project/current` | Få det nuværende projekt | <a href={typesUrl}><code>Project</code></a> |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------ | --------------------------- | ---------------------------------------------- |
|
||||
| `GET` | `/project` | Liste over alle prosjekter | <a href={typesUrl}><code>Prosjekt[]</code></a> |
|
||||
| `GET` | `/project/current` | Få det nåværende prosjektet | <a href={typesUrl}><code>Prosjekt</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Sti og VCS
|
||||
### Bane og VCS
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------- | --------------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/path` | Få nuværende sti | <a href={typesUrl}><code>Path</code></a> |
|
||||
| `GET` | `/vcs` | Få VCS info for nuværende projekt | <a href={typesUrl}><code>VcsInfo</code></a> |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------- | ---------------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/path` | Få nuværende bane | <a href={typesUrl}><code>Path</code></a> |
|
||||
| `GET` | `/vcs` | Få VCS info for nuværende prosjekt | <a href={typesUrl}><code>VcsInfo</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Instans
|
||||
### Forekomst
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------- | ------------------------ | --------- |
|
||||
| `POST` | `/instance/dispose` | Kassér nuværende instans | `boolean` |
|
||||
| `POST` | `/instance/dispose` | Kast nuværende forekomst | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Konfiguration
|
||||
### Konfig
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------- | ------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/config` | Få konfigurationsinformation | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `PATCH` | `/config` | Opdater konfiguration | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `GET` | `/config/providers` | Liste udbydere og standardmodeller | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------- | ------------------- | -------------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/config` | Få konfigurasjonsinformasjon | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `PATCH` | `/config` | Opdater konfigurasjon | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `GET` | `/config/providers` | Liste leverandører og standardmodeller | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
|
||||
|
||||
---
|
||||
|
||||
### Udbyder
|
||||
### Leverandør
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | -------------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------- |
|
||||
| `GET` | `/provider` | Liste alle udbydere | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
|
||||
| `GET` | `/provider/auth` | Få udbydergodkendelsesmetoder | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
|
||||
| `POST` | `/provider/{id}/oauth/authorize` | Autoriser en udbyder ved at bruge OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
|
||||
| `POST` | `/provider/{id}/oauth/callback` | Håndter OAuth-callback for en udbyder | `boolean` |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | -------------------------------- | ------------------------------------------ | ----------------------------------------------------------------------------------- |
|
||||
| `GET` | `/provider` | Liste alle leverandører | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
|
||||
| `GET` | `/provider/auth` | Få leverandørautentiseringsmetoder | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
|
||||
| `POST` | `/provider/{id}/oauth/authorize` | Autoriser en leverandør ved at bruge OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
|
||||
| `POST` | `/provider/{id}/oauth/callback` | Håndtere OAuth-callback for en leverandør | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Sessioner
|
||||
### sessioner
|
||||
|
||||
| Metode | Sti | Beskrivelse | Noter |
|
||||
| -------- | ---------------------------------------- | ------------------------------------------ | ------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session` | Liste alle sessioner | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `POST` | `/session` | Opret en ny session | body: `{ parentID?, title? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/status` | Få sessionstatus for alle sessioner | Returnerer `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
|
||||
| `GET` | `/session/:id` | Få sessiondetaljer | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id` | Slet en session og alle dens data | Returnerer `boolean` |
|
||||
| `PATCH` | `/session/:id` | Opdater sessionegenskaber | body: `{ title? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/children` | Få en sessions undersessioner | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `GET` | `/session/:id/todo` | Få to-do-listen for en session | Returnerer <a href={typesUrl}><code>Todo[]</code></a> |
|
||||
| `POST` | `/session/:id/init` | Analyser appen og lav `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/fork` | Fork en eksisterende session ved en besked | body: `{ messageID? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `POST` | `/session/:id/abort` | Afbryd en kørende session | Returnerer `boolean` |
|
||||
| `POST` | `/session/:id/share` | Del en session | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id/share` | Stop med at dele en session | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/diff` | Få diff for denne session | query: `messageID?`, returnerer <a href={typesUrl}><code>FileDiff[]</code></a> |
|
||||
| `POST` | `/session/:id/summarize` | Opsummér sessionen | body: `{ providerID, modelID }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/revert` | Tilbagestil en besked | body: `{ messageID, partID? }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/unrevert` | Gendan alle nulstillede beskeder | Returnerer `boolean` |
|
||||
| `POST` | `/session/:id/permissions/:permissionID` | Svar på en tilladelsesforespørgsel | body: `{ response, remember? }`, returnerer `boolean` |
|
||||
| Metode | Sti | Beskrivelse | Noter |
|
||||
| -------- | ---------------------------------------- | ------------------------------------------- | ------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session` | Liste alle sessioner | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `POST` | `/session` | Opret en ny session | body: `{ parentID?, title? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/status` | Få sessionstatus for alle sessioner | Returnerer `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
|
||||
| `GET` | `/session/:id` | Få sessiondetaljer | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id` | Slett en session og alle dens data | Returnerer `boolean` |
|
||||
| `PATCH` | `/session/:id` | Opdater sessionegenskaper | body: `{ title? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/children` | Få en sessions barnesessioner | Returnerer <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `GET` | `/session/:id/todo` | Få to-doslisten for en session | Returnerer <a href={typesUrl}><code>Todo[]</code></a> |
|
||||
| `POST` | `/session/:id/init` | Analyser appen og lag `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/fork` | Fork en eksisterende session ved en melding | body: `{ messageID? }`, returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `POST` | `/session/:id/abort` | Avbryt en løpesession | Returnerer `boolean` |
|
||||
| `POST` | `/session/:id/share` | Del en session | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `DELETE` | `/session/:id/share` | Slutt at dele en session | Returnerer <a href={typesUrl}><code>Session</code></a> |
|
||||
| `GET` | `/session/:id/diff` | Få diff for denne sessionen | spørring: `messageID?`, returnerer <a href={typesUrl}><code>FileDiff[]</code></a> |
|
||||
| `POST` | `/session/:id/summarize` | Oppsummer sessionen | body: `{ providerID, modelID }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/revert` | Tilbakestill en melding | body: `{ messageID, partID? }`, returnerer `boolean` |
|
||||
| `POST` | `/session/:id/unrevert` | Gjenopret alle nulstillete meldinger | Returnerer `boolean` |
|
||||
| `POST` | `/session/:id/permissions/:permissionID` | Svar på en tillatelsesforespørsel | body: `{ response, remember? }`, returnerer `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Beskeder
|
||||
### Meldinger
|
||||
|
||||
| Metode | Sti | Beskrivelse | Noter |
|
||||
| ------ | --------------------------------- | ------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `GET` | `/session/:id/message` | Liste beskeder i en session | query: `limit?`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
|
||||
| `POST` | `/session/:id/message` | Send en besked og vent på svar | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `GET` | `/session/:id/message/:messageID` | Få beskeddetaljer | Returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/prompt_async` | Send en besked asynkront (ingen vent) | body: samme som `/session/:id/message`, returnerer `204 No Content` |
|
||||
| `POST` | `/session/:id/command` | Udfør en skråstregskommando | body: `{ messageID?, agent?, model?, command, arguments }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/shell` | Kør en shell-kommando | body: `{ agent, model?, command }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| Metode | Sti | Beskrivelse | Noter |
|
||||
| ------ | --------------------------------- | -------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `GET` | `/session/:id/message` | Liste meldinger i en session | spørring: `limit?`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
|
||||
| `POST` | `/session/:id/message` | Send en melding og vent på svar | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `GET` | `/session/:id/message/:messageID` | Få meldingsdetaljer | Returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/prompt_async` | Send en melding asynkront (ingen vent) | body: samme som `/session/:id/message`, returnerer `204 No Content` |
|
||||
| `POST` | `/session/:id/command` | Utfør en skråstrek-kommando | body: `{ messageID?, agent?, model?, command, arguments }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
| `POST` | `/session/:id/shell` | Kjør en shell-kommando | body: `{ agent, model?, command }`, returnerer `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
|
||||
---
|
||||
|
||||
### Kommandoer
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ---------- | --------------------- | --------------------------------------------- |
|
||||
| `GET` | `/command` | Liste alle kommandoer | <a href={typesUrl}><code>Command[]</code></a> |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ---------- | --------------------- | ---------------------------------------------- |
|
||||
| `GET` | `/command` | Liste alle kommandoer | <a href={typesUrl}><code>Kommando[]</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### Filer
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------------ | ------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| `GET` | `/find?pattern=<pat>` | Søg efter tekst i filer | En række matchobjekter med `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `GET` | `/find/file?query=<q>` | Find filer og mapper efter navn | `string[]` (stier) |
|
||||
| `GET` | `/find/symbol?query=<q>` | Find arbejdsområdesymboler | <a href={typesUrl}><code>Symbol[]</code></a> |
|
||||
| `GET` | `/file?path=<path>` | Liste filer og mapper | <a href={typesUrl}><code>FileNode[]</code></a> |
|
||||
| `GET` | `/file/content?path=<p>` | Læs en fil | <a href={typesUrl}><code>FileContent</code></a> |
|
||||
| `GET` | `/file/status` | Få status for sporede filer | <a href={typesUrl}><code>File[]</code></a> |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------ |
|
||||
| `GET` | `/find?pattern=<pat>` | Søk etter tekst i filer | En rekke matchobjekter med `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `GET` | `/find/file?query=<q>` | Finn filer og kataloger etter navn | `string[]` (baner) |
|
||||
| `GET` | `/find/symbol?query=<q>` | Finn arbeidsområdesymboler | <a href={typesUrl}><code>Symbol[]</code></a> |
|
||||
| `GET` | `/file?path=<path>` | Liste filer og kataloger | <a href={typesUrl}><code>FilNode[]</code></a> |
|
||||
| `GET` | `/file/content?path=<p>` | Les en fil | <a href={typesUrl}><code>Filinnhold</code></a> |
|
||||
| `GET` | `/file/status` | Få status for sporede filer | <a href={typesUrl}><code>Fil[]</code></a> |
|
||||
|
||||
#### /find/file forespørgselsparametre
|
||||
#### `/find/file` spørringsparametere
|
||||
|
||||
- `query` (obligatorisk) - søgestreng (fuzzy match)
|
||||
- `type` (valgfrit) - begræns resultaterne til `"file"` eller `"directory"`
|
||||
- `directory` (valgfrit) — overstyr projektroden for søget
|
||||
- `limit` (valgfrit) - maks. resultater (1–200)
|
||||
- `dirs` (valgfrit) - ældre flag (`"false"` returnerer kun filer)
|
||||
- `query` (obligatorisk) - søkestreng (uklar samsvar)
|
||||
- `type` (valgfritt) - begrense resultatene til `"file"` eller `"directory"`
|
||||
- `directory` (valgfritt) — overstyr prosjektroten for søket
|
||||
- `limit` (valgfritt) - maks. resultater (1–200)
|
||||
- `dirs` (valgfritt) - eldre flagg (`"false"` returnerer kun filer)
|
||||
|
||||
---
|
||||
|
||||
### Værktøjer (eksperimentelt)
|
||||
### Verktøy (eksperimentelt)
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------------------------------- | --------------------------------------------- | -------------------------------------------- |
|
||||
| `GET` | `/experimental/tool/ids` | Vis alle værktøjs-ID'er | <a href={typesUrl}><code>ToolIDs</code></a> |
|
||||
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | Liste værktøjer med JSON-skemaer for en model | <a href={typesUrl}><code>ToolList</code></a> |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------------------------------------- | -------------------------------------------- | -------------------------------------------- |
|
||||
| `GET` | `/experimental/tool/ids` | Vis alle verktøy-ID-er | <a href={typesUrl}><code>ToolIDs</code></a> |
|
||||
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | List verktøy med JSON-skjemaer for en modell | <a href={typesUrl}><code>ToolList</code></a> |
|
||||
|
||||
---
|
||||
|
||||
### LSP, formattere og MCP
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------ | -------------------------- | -------------------------------------------------------- |
|
||||
| `GET` | `/lsp` | Få LSP serverstatus | <a href={typesUrl}><code>LSPStatus[]</code></a> |
|
||||
| `GET` | `/formatter` | Få formateringsstatus | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
|
||||
| `GET` | `/mcp` | Få MCP serverstatus | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
|
||||
| `POST` | `/mcp` | Tilføj MCP server dynamisk | body: `{ name, config }`, returnerer MCP statusobjekt |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------------ | ---------------------------- | -------------------------------------------------------- |
|
||||
| `GET` | `/lsp` | Få LSP serverstatus | <a href={typesUrl}><code>LSPStatus[]</code></a> |
|
||||
| `GET` | `/formatter` | Få formateringsstatus | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
|
||||
| `GET` | `/mcp` | Få MCP serverstatus | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
|
||||
| `POST` | `/mcp` | Legg til MCP server dynamisk | body: `{ name, config }`, returnerer MCP statusobjekt |
|
||||
|
||||
---
|
||||
|
||||
@@ -238,11 +238,11 @@ OpenCode-serveren viser følgende API'er.
|
||||
|
||||
---
|
||||
|
||||
### Logning
|
||||
### Logging
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------ | ---------------------------------------------------------- | --------- |
|
||||
| `POST` | `/log` | Skriv logpost. Body: `{ service, level, message, extra? }` | `boolean` |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------ | --------------------------------------------------------------------- | --------- |
|
||||
| `POST` | `/log` | Skriv loggoppføring. Brødtekst: `{ service, level, message, extra? }` | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
@@ -250,38 +250,38 @@ OpenCode-serveren viser følgende API'er.
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ----------------------- | ------------------------------------------- | -------------------------- |
|
||||
| `POST` | `/tui/append-prompt` | Tilføj tekst til prompten | `boolean` |
|
||||
| `POST` | `/tui/open-help` | Åbn hjælp-dialogen | `boolean` |
|
||||
| `POST` | `/tui/open-sessions` | Åbn sessionsvælgeren | `boolean` |
|
||||
| `POST` | `/tui/open-themes` | Åbn temavælgeren | `boolean` |
|
||||
| `POST` | `/tui/open-models` | Åbn modelvælgeren | `boolean` |
|
||||
| `POST` | `/tui/submit-prompt` | Indsend nuværende prompt | `boolean` |
|
||||
| `POST` | `/tui/clear-prompt` | Ryd prompten | `boolean` |
|
||||
| `POST` | `/tui/execute-command` | Udfør en kommando (`{ command }`) | `boolean` |
|
||||
| `POST` | `/tui/append-prompt` | Legg til tekst i ledeteksten | `boolean` |
|
||||
| `POST` | `/tui/open-help` | Åpne hjelpedialogen | `boolean` |
|
||||
| `POST` | `/tui/open-sessions` | Åpne sessionvelgeren | `boolean` |
|
||||
| `POST` | `/tui/open-themes` | Åpne temavelgeren | `boolean` |
|
||||
| `POST` | `/tui/open-models` | Åpne modellvelgeren | `boolean` |
|
||||
| `POST` | `/tui/submit-prompt` | Send inn nuværende ledetekst | `boolean` |
|
||||
| `POST` | `/tui/clear-prompt` | Fjern ledeteksten | `boolean` |
|
||||
| `POST` | `/tui/execute-command` | Utfør en kommando (`{ command }`) | `boolean` |
|
||||
| `POST` | `/tui/show-toast` | Vis toast (`{ title?, message, variant }`) | `boolean` |
|
||||
| `GET` | `/tui/control/next` | Vent på næste kontrolforespørgsel | Kontrolforespørgselsobjekt |
|
||||
| `POST` | `/tui/control/response` | Svar på en kontrolforespørgsel (`{ body }`) | `boolean` |
|
||||
| `GET` | `/tui/control/next` | Vent på neste kontrollforespørsel | Kontrollforespørselsobjekt |
|
||||
| `POST` | `/tui/control/response` | Svar på en kontrollforespørsel (`{ body }`) | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Godkendelse
|
||||
### Auth
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ----------- | ------------------------------------------------------------ | --------- |
|
||||
| `PUT` | `/auth/:id` | Angiv godkendelsesoplysninger. Body skal matche udbyderskema | `boolean` |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ----------- | --------------------------------------------------------------------------- | --------- |
|
||||
| `PUT` | `/auth/:id` | Angi autentiseringslegitimasjon. Brødtekst må samsvare med leverandørskjema | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### Hændelser
|
||||
### Hendelser
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | -------- | ----------------------------------------------------------------------------------------- | --------------------------- |
|
||||
| `GET` | `/event` | Server-sendt hændelsesstrøm. Første hændelse er `server.connected`, derefter bushændelser | Server-sendt hændelsesstrøm |
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | -------- | -------------------------------------------------------------------------------------------------- | ------------------------------ |
|
||||
| `GET` | `/event` | Server-sendte hendelsesstrøm. Første arrangement er `server.connected`, deretter bussarrangementer | Server-sendte hendelser stream |
|
||||
|
||||
---
|
||||
|
||||
### Dokumentation
|
||||
### Dokumenter
|
||||
|
||||
| Metode | Sti | Beskrivelse | Svar |
|
||||
| ------ | ------ | ------------------------- | ----------------------------------- |
|
||||
| `GET` | `/doc` | OpenAPI 3.1-specifikation | HTML side med OpenAPI-specifikation |
|
||||
| `GET` | `/doc` | OpenAPI 3.1-spesifikasjon | HTML side med OpenAPI-spesifikasjon |
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Deling
|
||||
title: Dele
|
||||
description: Del dine OpenCode-samtaler.
|
||||
---
|
||||
|
||||
@@ -11,7 +11,7 @@ Delte samtaler er offentlig tilgængelige for alle med linken.
|
||||
|
||||
---
|
||||
|
||||
## Sådan fungerer det
|
||||
## Slik fungerer det
|
||||
|
||||
Når du deler en samtale, OpenCode:
|
||||
|
||||
@@ -21,13 +21,13 @@ Når du deler en samtale, OpenCode:
|
||||
|
||||
---
|
||||
|
||||
## Tilstande
|
||||
## Deling
|
||||
|
||||
OpenCode støtter tre delingsmoduser som kontrollerer hvordan samtaler deles:
|
||||
|
||||
---
|
||||
|
||||
### Manuel (standard)
|
||||
### Manuell (standard)
|
||||
|
||||
Som standard bruger OpenCode manuell delingsmodus. Sessioner deles ikke automatisk, men du kan dele dem manuelt ved at bruge kommandoen `/share`:
|
||||
|
||||
@@ -63,7 +63,7 @@ Med automatisk deling aktivert, vil hver nye samtale automatisk bli delt og en k
|
||||
|
||||
---
|
||||
|
||||
### Deaktiveret
|
||||
### Deaktivert
|
||||
|
||||
Du kan deaktivere deling helt ved at sette alternativet `share` til `"disabled"` i [konfigurasjonsfilen](/docs/config):
|
||||
|
||||
@@ -78,7 +78,7 @@ For at håndheve dette på tvers av teamet ditt for et gitt prosjekt, tilføj de
|
||||
|
||||
---
|
||||
|
||||
## Ophæv deling
|
||||
## Opphev deling
|
||||
|
||||
Slik slutter du at dele en samtale og fjerner den fra offentlig tilgang:
|
||||
|
||||
@@ -90,7 +90,7 @@ Dette vil fjerne delelinken og slette dataene knyttet til samtalen.
|
||||
|
||||
---
|
||||
|
||||
## Privatliv
|
||||
## Personvern
|
||||
|
||||
Det er et par ting du må huske på når du deler en samtale.
|
||||
|
||||
@@ -117,7 +117,7 @@ inkluderer:
|
||||
|
||||
---
|
||||
|
||||
## For virksomheder
|
||||
## For bedrifter
|
||||
|
||||
For bedriftsimplementeringer kan delingsfunksjonen være:
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: "Agentfærdigheder"
|
||||
title: "Agentferdigheter"
|
||||
description: "Definer gjenbrugbar atferd via SKILL.md-definisjoner"
|
||||
---
|
||||
|
||||
@@ -8,7 +8,7 @@ Ferdigheter lastes inn på forespørsel via det opprinnelige `skill`-verktøyet
|
||||
|
||||
---
|
||||
|
||||
## Placer filer
|
||||
## Plasser filer
|
||||
|
||||
Opret én mappe per ferdighetsnavn og tilføj inn en `SKILL.md` i den.
|
||||
OpenCode søker etter disse stedene:
|
||||
@@ -22,7 +22,7 @@ OpenCode søker etter disse stedene:
|
||||
|
||||
---
|
||||
|
||||
## Forstå opdagelsen
|
||||
## Forstå oppdagelsen
|
||||
|
||||
For prosjektlokale stier går OpenCode opp fra din nåværende arbejdskatalog til den når git-arbeidstreet.
|
||||
Den laster alle matchende `skills/*/SKILL.md` i `.opencode/` og alle matchende `.claude/skills/*/SKILL.md` eller `.agents/skills/*/SKILL.md` underveis.
|
||||
@@ -31,7 +31,7 @@ Globale definisjoner lastes også inn fra `~/.config/opencode/skills/*/SKILL.md`
|
||||
|
||||
---
|
||||
|
||||
## Skriv frontmatter
|
||||
## Skriv frontmaterie
|
||||
|
||||
Hver `SKILL.md` må starte med YAML frontmatter.
|
||||
Bare disse feltene gjenkjennes:
|
||||
@@ -46,7 +46,7 @@ Ukjente frontmatter-felter ignoreres.
|
||||
|
||||
---
|
||||
|
||||
## Bekræft navn
|
||||
## Bekreft navn
|
||||
|
||||
`name` må:
|
||||
|
||||
@@ -64,7 +64,7 @@ Ekvivalent regulært uttrykk:
|
||||
|
||||
---
|
||||
|
||||
## Følg længdereglerne
|
||||
## Følg lengdereglene
|
||||
|
||||
`description` må bestå av 1-1024 tegn.
|
||||
Hold det spesifikt nok til at agenten kan velge riktig.
|
||||
@@ -100,7 +100,7 @@ Ask clarifying questions if the target versioning scheme is unclear.
|
||||
|
||||
---
|
||||
|
||||
## Genkend værktøjsbeskrivelsen
|
||||
## Gjenkjenne verktøybeskrivelsen
|
||||
|
||||
OpenCode viser tilgængelige ferdigheter i `skill` verktøybeskrivelsen.
|
||||
Hver oppføring inneholder ferdighetsnavnet og beskrivelsen:
|
||||
@@ -122,7 +122,7 @@ skill({ name: "git-release" })
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer tilladelser
|
||||
## Konfigurer tillatelser
|
||||
|
||||
Kontroller hvilke ferdigheter agenter har tilgang til ved at bruge mønsterbaserte tillatelser i `opencode.json`:
|
||||
|
||||
@@ -149,7 +149,7 @@ Mønstre støtter jokertegn: `internal-*` samsvarer med `internal-docs`, `intern
|
||||
|
||||
---
|
||||
|
||||
## Tilsidesættelse pr. agent
|
||||
## Overstyring per agent
|
||||
|
||||
Gi spesifikke agenter andre tillatelser enn de globale standardinnstillingene.
|
||||
|
||||
@@ -181,7 +181,7 @@ permission:
|
||||
|
||||
---
|
||||
|
||||
## Deaktiver færdighedsværktøjet
|
||||
## Deaktiver ferdighetsverktøyet
|
||||
|
||||
Deaktiver ferdigheter fullstendig for agenter som ikke bør bruge dem:
|
||||
|
||||
@@ -212,7 +212,7 @@ Når den er deaktivert, blir `<available_skills>`-delen utelatt helt.
|
||||
|
||||
---
|
||||
|
||||
## Fejlfind indlæsning
|
||||
## Feilsøk lasting
|
||||
|
||||
Hvis en ferdighet ikke vises:
|
||||
|
||||
|
||||
@@ -21,7 +21,7 @@ Uden truecolor-støtte kan temaer vises med redusert farvenøjagtighed eller fal
|
||||
|
||||
---
|
||||
|
||||
## Indbyggede temaer
|
||||
## Innebygde temaer
|
||||
|
||||
OpenCode kommer med flere innebygde temaer.
|
||||
|
||||
@@ -59,7 +59,7 @@ Systemtemaet er for brugere som:
|
||||
|
||||
---
|
||||
|
||||
## Brug et tema
|
||||
## Bruge et tema
|
||||
|
||||
Du kan velge et tema ved at hente frem temavalg med kommandoen `/theme`. Eller du kan spesifisere det i [config](/docs/config).
|
||||
|
||||
@@ -72,7 +72,7 @@ Du kan velge et tema ved at hente frem temavalg med kommandoen `/theme`. Eller d
|
||||
|
||||
---
|
||||
|
||||
## Brugerdefinerede temaer
|
||||
## Egendefinerte temaer
|
||||
|
||||
OpenCode støtter et fleksibelt JSON-basert temasystem som lar brugere enkelt lage og tilpasse temaer.
|
||||
|
||||
@@ -91,7 +91,7 @@ Hvis flere kataloger inneholder et tema med samme navn, vil temaet fra katalogen
|
||||
|
||||
---
|
||||
|
||||
### Oprettelse af et tema
|
||||
### Oprete et tema
|
||||
|
||||
For at lage et brugerdefineret tema, lag en JSON-fil i en av temakatalogene.
|
||||
|
||||
@@ -111,7 +111,7 @@ vim .opencode/themes/my-theme.json
|
||||
|
||||
---
|
||||
|
||||
### JSON-format
|
||||
### JSON format
|
||||
|
||||
Temaer bruger et fleksibelt JSON-format med støtte for:
|
||||
|
||||
@@ -123,7 +123,7 @@ Temaer bruger et fleksibelt JSON-format med støtte for:
|
||||
|
||||
---
|
||||
|
||||
### Farvedefinitioner
|
||||
### Farvedefinisjoner
|
||||
|
||||
`defs`-delen er valgfri, og den lar deg definere gjenbrugbare farver som kan refereres til i temaet.
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: Værktøjer
|
||||
description: Administrer de værktøjer, en LLM kan bruge.
|
||||
title: Verktøy
|
||||
description: Administrer verktøyene en LLM kan bruge.
|
||||
---
|
||||
|
||||
Verktøy lar LLM utføre handlinger i kodebasen din. OpenCode kommer med et sett med innebygde verktøy, men du kan utvide det med [egendefinerte verktøy](/docs/custom-tools) eller [MCP servere](/docs/mcp-servers).
|
||||
@@ -9,7 +9,7 @@ Som standard er alle verktøy **aktivert** og trenger ikke tillatelse for at kj
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurer
|
||||
|
||||
Brug feltet `permission` for at kontrollere verktøyets oppførsel. Du kan tillate, avslå eller kreve godkjenning for hvert verktøy.
|
||||
|
||||
@@ -39,7 +39,7 @@ Du kan også bruge jokertegn for at kontrollere flere verktøy samtidig. For eks
|
||||
|
||||
---
|
||||
|
||||
## Indbyggede
|
||||
## Innebygd
|
||||
|
||||
Her er alle de innebygde verktøyene som er tilgængelige i OpenCode.
|
||||
|
||||
@@ -344,7 +344,7 @@ Hvert spørsmål inkluderer en overskrift, spørsmålsteksten og en liste over a
|
||||
|
||||
---
|
||||
|
||||
## Brugerdefinerede værktøjer
|
||||
## Egendefinerte verktøy
|
||||
|
||||
Egendefinerte verktøy lar deg definere dine egne funksjoner som LLM kan kalle. Disse er definert i konfigurasjonsfilen din og kan kjøre vilkårlig kode.
|
||||
|
||||
@@ -352,7 +352,7 @@ Egendefinerte verktøy lar deg definere dine egne funksjoner som LLM kan kalle.
|
||||
|
||||
---
|
||||
|
||||
## MCP-servere
|
||||
## MCP servere
|
||||
|
||||
MCP (Model Context Protocol) servere lar deg integrere eksterne verktøy og tjenester. Dette inkluderer databasetilgang, API-integrasjoner og tredjepartstjenester.
|
||||
|
||||
@@ -360,13 +360,13 @@ MCP (Model Context Protocol) servere lar deg integrere eksterne verktøy og tjen
|
||||
|
||||
---
|
||||
|
||||
## Interne
|
||||
## Internaler
|
||||
|
||||
Internt bruger verktøy som `grep`, `glob` og `list` [ripgrep](https://github.com/BurntSushi/ripgrep) under panseret. Som standard respekterer ripgrep `.gitignore`-mønstre, noe som betyr at filer og kataloger som er oppført i `.gitignore` vil bli ekskludert fra søk og lister.
|
||||
|
||||
---
|
||||
|
||||
### Ignoreringsmønstre
|
||||
### Ignore patterns
|
||||
|
||||
For at inkludere filer som normalt vil bli ignorert, lag en `.ignore`-fil i prosjektroten. Denne filen kan eksplisitt tillate visse stier.
|
||||
|
||||
|
||||
@@ -1,67 +1,67 @@
|
||||
---
|
||||
title: Fejlfinding
|
||||
description: Almindelige problemer, og hvordan de løses.
|
||||
title: Feilsøking
|
||||
description: Vanlige problemer og hvordan de kan løses.
|
||||
---
|
||||
|
||||
For at fejlfinde problemer med OpenCode, start med at tjekke logfilerne og de lokale data, den gemmer på disken.
|
||||
For at feilsøke problemer med OpenCode, start med at tjeke loggene og lokale data den lagrer på disken.
|
||||
|
||||
---
|
||||
|
||||
## Logfiler
|
||||
## Logger
|
||||
|
||||
Logfiler skrives til:
|
||||
Loggfiler skrives til:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/log/`
|
||||
- **Windows**: Tryk `WIN+R` og indsæt `%USERPROFILE%\.local\share\opencode\log`
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.local\share\opencode\log`
|
||||
|
||||
Logfiler navngives med tidsstempler (f.eks. `2025-01-09T123456.log`) og de sidste 10 logfiler beholdes.
|
||||
Loggfiler navngis med tidsstempler (f.eks. `2025-01-09T123456.log`) og de siste 10 loggfilene beholdes.
|
||||
|
||||
Du kan angive logniveauet med kommandolinjeflaget `--log-level` for at få mere detaljeret fejlfindingsinformation. For eksempel `opencode --log-level DEBUG`.
|
||||
Du kan angi loggnivået med kommandolinjealternativet `--log-level` for at få mer detaljert feilsøkingsinformasjon. For eksempel `opencode --log-level DEBUG`.
|
||||
|
||||
---
|
||||
|
||||
## Lagring
|
||||
|
||||
opencode gemmer sessionsdata og andre applikationsdata på disken på:
|
||||
opencode lagrer sessiondata og andre applikasjonsdata på disken på:
|
||||
|
||||
- **macOS/Linux**: `~/.local/share/opencode/`
|
||||
- **Windows**: Tryk `WIN+R` og indsæt `%USERPROFILE%\.local\share\opencode`
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
Denne mappe indeholder:
|
||||
Denne katalogen inneholder:
|
||||
|
||||
- `auth.json` - Godkendelsesdata som API-nøgler, OAuth-tokens
|
||||
- `log/` - Applikationslogs
|
||||
- `project/` - Projektspecifikke data som sessions- og beskeddata
|
||||
- Hvis projektet er inden for et Git-repo, gemmes det i `./<project-slug>/storage/`
|
||||
- Hvis det ikke er et Git-repo, gemmes det i `./global/storage/`
|
||||
- `auth.json` - Autentiseringsdata som API-nøkler, OAuth-tokens
|
||||
- `log/` - Applikasjonslogger
|
||||
- `project/` - Prosjektspesifikke data som session- og meldingsdata
|
||||
- Hvis prosjektet er innenfor en Git-repo, lagres det i `./<project-slug>/storage/`
|
||||
- Hvis det ikke er en Git-repo, lagres det i `./global/storage/`
|
||||
|
||||
---
|
||||
|
||||
## Desktop-app
|
||||
|
||||
OpenCode Desktop kører en lokal OpenCode-server (`opencode-cli` sidevognen) i baggrunden. De fleste problemer er forårsaget af et plugin, der fungerer dårligt, en ødelagt cache eller en dårlig serverindstilling.
|
||||
OpenCode Desktop kjører en lokal OpenCode-server (`opencode-cli` sidevognen) i bakgrunnen. De fleste problemene er forårsaket av en plugin som fungerer dårlig, en ødelagt cache eller en dårlig serverinnstilling.
|
||||
|
||||
### Hurtige tjek
|
||||
### Raske tjeker
|
||||
|
||||
- Afslut og start appen på ny.
|
||||
- Hvis appen viser en fejlskærm, klikker du på **Start på ny** og kopierer fejldetaljerne.
|
||||
- Kun macOS: `OpenCode`-menu -> **Genindlæs webvisning** (hjælper hvis UI er tom/frosset).
|
||||
- Avslutt og start appen på nytt.
|
||||
- Hvis appen viser en feilskjerm, klikker du på **Start på nytt** og kopierer feildetaljene.
|
||||
- Bare macOS: `OpenCode`-meny -> **Last nettvisning på nytt** (hjelper hvis UI er tom/frosset).
|
||||
|
||||
---
|
||||
|
||||
### Deaktiver plugins
|
||||
|
||||
Hvis skrivebordsappen går ned ved opstart, hænger eller opfører sig mærkeligt, start med at deaktivere plugins.
|
||||
Hvis skrivebordsappen krasjer ved oppstart, henger eller oppfører seg merkelig, start med at deaktivere plugins.
|
||||
|
||||
#### Tjek den globale konfiguration
|
||||
#### Tjek den globale konfigurasjonen
|
||||
|
||||
Åbn den globale konfigurationsfil og se efter en `plugin`-nøgle.
|
||||
Åpne den globale konfigurasjonsfilen og se etter en `plugin`-nøkkel.
|
||||
|
||||
- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (eller `~/.config/opencode/opencode.json`)
|
||||
- **macOS/Linux** (ældre installationer): `~/.local/share/opencode/opencode.jsonc`
|
||||
- **Windows**: Tryk `WIN+R` og indsæt `%USERPROFILE%\.config\opencode\opencode.jsonc`
|
||||
- **macOS/Linux** (eldre installasjoner): `~/.local/share/opencode/opencode.jsonc`
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.config\opencode\opencode.jsonc`
|
||||
|
||||
Hvis du har konfigureret plugins, deaktiver dem midlertidigt ved at fjerne nøglen eller sætte den til et tomt array:
|
||||
Hvis du har konfigurert plugins, deaktiver dem midlertidig ved at fjerne nøkkelen eller sette den til en tom matrise:
|
||||
|
||||
```jsonc
|
||||
{
|
||||
@@ -70,156 +70,156 @@ Hvis du har konfigureret plugins, deaktiver dem midlertidigt ved at fjerne nøgl
|
||||
}
|
||||
```
|
||||
|
||||
#### Tjek plugin-mapper
|
||||
#### Tjek plugin-kataloger
|
||||
|
||||
OpenCode kan også indlæse lokale plugins fra disken. Flyt disse midlertidigt væk (eller giv mappen nyt navn) og start skrivebordsappen på ny:
|
||||
OpenCode kan også laste lokale plugins fra disken. Flytt disse midlertidig ut av veien (eller gi nytt navn til mappen) og start skrivebordsappen på nytt:
|
||||
|
||||
- **Globale plugins**
|
||||
- **macOS/Linux**: `~/.config/opencode/plugins/`
|
||||
- **Windows**: Tryk `WIN+R` og indsæt `%USERPROFILE%\.config\opencode\plugins`
|
||||
- **Projektplugins** (kun hvis du bruger konfiguration per projekt)
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.config\opencode\plugins`
|
||||
- **Prosjektplugins** (bare hvis du bruger konfigurasjon per prosjekt)
|
||||
- `<your-project>/.opencode/plugins/`
|
||||
|
||||
Hvis appen begynder at fungere igen, aktiverer du plugins én ad gangen for at finde ud af, hvilken som forårsager problemet.
|
||||
Hvis appen begynner at fungere igjen, aktiverer du plugins én om gangen for at finne ut hvilken som forårsaker problemet.
|
||||
|
||||
---
|
||||
|
||||
### Ryd cachen
|
||||
### Tøm hurtigbufferen
|
||||
|
||||
Hvis deaktivering af plugins ikke hjælper (eller en plugin-installation sidder fast), tøm cachen så OpenCode kan genopbygge den.
|
||||
Hvis deaktivering av plugins ikke hjelper (eller en plugin-installasjon sitter fast), tøm hurtigbufferen slik at OpenCode kan gjenoppbygge den.
|
||||
|
||||
1. Afslut OpenCode Desktop helt.
|
||||
2. Slet cache-mappen:
|
||||
1. Avslutt OpenCode Desktop helt.
|
||||
2. Slett hurtigbufferkatalogen:
|
||||
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> indsæt `~/.cache/opencode`
|
||||
- **Linux**: slet `~/.cache/opencode` (eller kør `rm -rf ~/.cache/opencode`)
|
||||
- **Windows**: Tryk `WIN+R` og indsæt `%USERPROFILE%\.cache\opencode`
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> lim inn `~/.cache/opencode`
|
||||
- **Linux**: slett `~/.cache/opencode` (eller kjør `rm -rf ~/.cache/opencode`)
|
||||
- **Windows**: Trykk `WIN+R` og lim inn `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
3. Start OpenCode Desktop på ny.
|
||||
3. Start OpenCode Desktop på nytt.
|
||||
|
||||
---
|
||||
|
||||
### Løs problemer med serverforbindelse
|
||||
### Løs problemer med servertilkobling
|
||||
|
||||
OpenCode Desktop kan enten starte sin egen lokale server (standard) eller forbinde til en server URL, du har konfigureret.
|
||||
OpenCode Desktop kan enten starte sin egen lokale server (standard) eller koble til en server URL du har konfigurert.
|
||||
|
||||
Hvis du ser en **"Forbindelse mislykkedes"**-dialogboks (eller appen kommer aldrig forbi splash-skærmen), se efter en brugerdefineret server URL.
|
||||
Hvis du ser en **"Tilkobling mislyktes"**-dialogboks (eller appen kommer aldri forbi splash-skjermen), se etter en brugerdefineret server URL.
|
||||
|
||||
#### Slet standardserveren for skrivebordet URL
|
||||
#### Slett standardserveren for skrivebordet URL
|
||||
|
||||
Fra startskærmen klikker du på servernavnet (med statusprikken) for at åbne servervælgeren. I delen **Standardserver** klikker du på **Slet**.
|
||||
Fra startskjermen klikker du på servernavnet (med statusprikken) for at åpne servervelgeren. I delen **Standardserver** klikker du på **Slett**.
|
||||
|
||||
#### Fjern `server.port` / `server.hostname` fra din konfiguration
|
||||
#### Fjern `server.port` / `server.hostname` fra konfigurasjonen din
|
||||
|
||||
Hvis `opencode.json(c)` indeholder en `server`-del, fjern den midlertidigt og start skrivebordsappen på ny.
|
||||
Hvis `opencode.json(c)` inneholder en `server`-del, fjern den midlertidig og start skrivebordsappen på nytt.
|
||||
|
||||
#### Tjek miljøvariabler
|
||||
|
||||
Hvis du har `OPENCODE_PORT` sat i dit miljø, vil skrivebordsappen prøve at bruge den port for den lokale server.
|
||||
Hvis du har `OPENCODE_PORT` satt i miljøet ditt, vil skrivebordsappen prøve at bruge den porten for den lokale serveren.
|
||||
|
||||
- Deaktiver `OPENCODE_PORT` (eller vælg en ledig port) og start på ny.
|
||||
- Deaktiver `OPENCODE_PORT` (eller velg en ledig port) og start på nytt.
|
||||
|
||||
---
|
||||
|
||||
### Linux: Wayland / X11-problemer
|
||||
### Linux: Wayland / X11 problemer
|
||||
|
||||
På Linux kan nogle Wayland-opsætninger forårsage tomme vinduer eller kompositorfejl.
|
||||
På Linux kan nogle Wayland-oppsett forårsake tomme vinduer eller kompositorfeil.
|
||||
|
||||
- Hvis du er på Wayland og appen er tom/crasher, prøv at starte med `OC_ALLOW_WAYLAND=1`.
|
||||
- Hvis det gør ting værre, fjern det og prøv at starte under en X11-session i stedet.
|
||||
- Hvis du er på Wayland og appen er tom/krasj, prøv at starte med `OC_ALLOW_WAYLAND=1`.
|
||||
- Hvis det gør ting verre, fjern det og prøv at starte under en X11-session i stedet.
|
||||
|
||||
---
|
||||
|
||||
### Windows: WebView2-runtime
|
||||
### Windows: WebView2 kjøretid
|
||||
|
||||
På Windows kræver OpenCode Desktop Microsoft Edge **WebView2 Runtime**. Hvis appen åbnes i et tomt vindue eller ikke starter, installer/opdater WebView2 og prøv igen.
|
||||
På Windows krever OpenCode Desktop Microsoft Edge **WebView2 Runtime**. Hvis appen åpnes i et tomt vindu eller ikke starter, installer/opdater WebView2 og prøv igjen.
|
||||
|
||||
---
|
||||
|
||||
### Windows: Generelle ydeevneproblemer
|
||||
### Windows: Generelle ytelsesproblemer
|
||||
|
||||
Hvis du oplever langsom ydeevne, problemer med filadgang eller terminalproblemer på Windows, kan du prøve at bruge [WSL (Windows Subsystem for Linux)](/docs/windows-wsl). WSL giver et Linux-miljø som fungerer mere sømløst med funktionerne i OpenCode.
|
||||
Hvis du opplever treg ytelse, problemer med filtilgang eller terminalproblemer på Windows, kan du prøve at bruge [WSL (Windows Subsystem for Linux)](/docs/windows-wsl). WSL gir et Linux-miljø som fungerer mer sømløst med funksjonene til OpenCode.
|
||||
|
||||
---
|
||||
|
||||
### Meddelelser vises ikke
|
||||
### Varsler vises ikke
|
||||
|
||||
OpenCode Desktop viser kun systemvarsler når:
|
||||
OpenCode Desktop viser bare systemvarsler når:
|
||||
|
||||
- varsler er aktiveret for OpenCode i dine OS-indstillinger, og
|
||||
- appvinduet ikke er fokuseret.
|
||||
- varsler er aktivert for OpenCode i OS-innstillingene dine, og
|
||||
- appvinduet er ikke fokusert.
|
||||
|
||||
---
|
||||
|
||||
### Nulstil desktop-applagring (sidste udvej)
|
||||
### Tilbakestill skrivebordsapplagring (siste utvei)
|
||||
|
||||
Hvis appen ikke starter og du ikke kan slette indstillingerne fra UI, nulstil skrivebordsappens gemte tilstand.
|
||||
Hvis appen ikke starter og du ikke kan slette innstillingene fra UI, nulstil skrivebordsappens lagrede tilstand.
|
||||
|
||||
1. Afslut OpenCode Desktop.
|
||||
2. Find og slet disse filer (de findes i OpenCode Desktop-appens datamappe):
|
||||
1. Avslutt OpenCode Desktop.
|
||||
2. Finn og slett disse filene (de finnes i OpenCode Desktop-appens datakatalog):
|
||||
|
||||
- `opencode.settings.dat` (skrivebordsstandardserver URL)
|
||||
- `opencode.global.dat` og `opencode.workspace.*.dat` (UI tilstand som nylige servere/projekter)
|
||||
- `opencode.settings.dat` (stasjonær standardserver URL)
|
||||
- `opencode.global.dat` og `opencode.workspace.*.dat` (UI tilstand som nylige servere/prosjekter)
|
||||
|
||||
Sådan finder du mappen hurtigt:
|
||||
Slik finner du katalogen raskt:
|
||||
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (søg derefter efter filnavnene ovenfor)
|
||||
- **Linux**: søg under `~/.local/share` efter filnavnene ovenfor
|
||||
- **Windows**: Tryk `WIN+R` -> `%APPDATA%` (søg derefter efter filnavnene ovenfor)
|
||||
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (søk deretter etter filnavnene ovenfor)
|
||||
- **Linux**: søk under `~/.local/share` etter filnavnene ovenfor
|
||||
- **Windows**: Trykk `WIN+R` -> `%APPDATA%` (søk deretter etter filnavnene ovenfor)
|
||||
|
||||
---
|
||||
|
||||
## Få hjælp
|
||||
## Får hjelp
|
||||
|
||||
Hvis du oplever problemer med OpenCode:
|
||||
Hvis du opplever problemer med OpenCode:
|
||||
|
||||
1. **Rapporter problemer på GitHub**
|
||||
|
||||
Den bedste måde at rapportere fejl eller bede om funktioner på er gennem vores GitHub-repo:
|
||||
Den beste måten at rapportere feil eller be om funksjoner på er gjennom vårt GitHub-lager:
|
||||
|
||||
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
|
||||
|
||||
Før du opretter et nyt issue, søg i eksisterende issues for at se om dit problem allerede er rapporteret.
|
||||
Før du opreter et nytt problem, søk i eksisterende problemer for at se om problemet ditt allerede er rapportert.
|
||||
|
||||
2. **Bliv en del af vores Discord**
|
||||
2. **Bli med i vår Discord**
|
||||
|
||||
For hjælp i realtid og fællesskabsdiskussion, bliv en del af vores Discord-server:
|
||||
For sanntidshjelp og fellesskapsdiskusjon, bli med i vår Discord-server:
|
||||
|
||||
[**opencode.ai/discord**](https://opencode.ai/discord)
|
||||
|
||||
---
|
||||
|
||||
## Almindelige problemer
|
||||
## Vanlige problemer
|
||||
|
||||
Her er nogle almindelige problemer og hvordan du kan løse dem.
|
||||
Her er nogle vanlige problemer og hvordan du kan løse dem.
|
||||
|
||||
---
|
||||
|
||||
### OpenCode vil ikke starte
|
||||
|
||||
1. Tjek logfilerne for fejlmeddelelser
|
||||
2. Prøv at køre med `--print-logs` for at se output i terminalen
|
||||
3. Sørg for at du har den nyeste version med `opencode upgrade`
|
||||
1. Tjek loggene for feilmeldinger
|
||||
2. Prøv at kjøre med `--print-logs` for at se utdata i terminalen
|
||||
3. Sørg for at du har den nyeste versjonen med `opencode upgrade`
|
||||
|
||||
---
|
||||
|
||||
### Godkendelsesproblemer
|
||||
### Autentiseringsproblemer
|
||||
|
||||
1. Prøv at godkende på ny med kommandoen `/connect` i TUI
|
||||
2. Tjek at dine API-nøgler er gyldige
|
||||
3. Sørg for at dit netværk tillader forbindelser til udbyderens API
|
||||
1. Prøv at autentisere på nytt med kommandoen `/connect` i TUI
|
||||
2. Tjek at API-nøklene dine er gyldige
|
||||
3. Sørg for at nettverket ditt tillater tilkoblinger til leverandørens API
|
||||
|
||||
---
|
||||
|
||||
### Modellen er ikke tilgængelig
|
||||
|
||||
1. Tjek at du har godkendt dig med udbyderen
|
||||
2. Kontroller at modelnavnet i konfigurationen er rigtigt
|
||||
3. Nogle modeller kan kræve specifik adgang eller abonnement
|
||||
1. Tjek at du har autentisert deg med leverandøren
|
||||
2. Kontroller at modellnavnet i konfigurasjonen er riktig
|
||||
3. Nogle modeller kan kreve spesifikk tilgang eller abonnement
|
||||
|
||||
Hvis du støder på `ProviderModelNotFoundError` refererer du mest sandsynligt forkert
|
||||
til en model et sted.
|
||||
Modeller skal refereres sådan: `<providerId>/<modelId>`
|
||||
Hvis du støter på `ProviderModelNotFoundError` er du mest sannsynlig feil
|
||||
refererer til en modell et sted.
|
||||
Modeller skal refereres slik: `<providerId>/<modelId>`
|
||||
|
||||
Eksempler:
|
||||
|
||||
@@ -227,52 +227,52 @@ Eksempler:
|
||||
- `openrouter/google/gemini-2.5-flash`
|
||||
- `opencode/kimi-k2`
|
||||
|
||||
For at finde ud af hvilke modeller du har adgang til, kør `opencode models`
|
||||
For at finne ut hvilke modeller du har tilgang til, kjør `opencode models`
|
||||
|
||||
---
|
||||
|
||||
### ProviderInitError
|
||||
|
||||
Hvis du støder på en ProviderInitError, har du sandsynligvis en ugyldig eller ødelagt konfiguration.
|
||||
Hvis du støter på en ProviderInitError, har du sannsynligvis en ugyldig eller ødelagt konfigurasjon.
|
||||
|
||||
For at løse dette:
|
||||
|
||||
1. Kontroller først at din udbyder er rigtigt konfigureret ved at følge [udbydervejledningen](/docs/providers)
|
||||
2. Hvis problemet vedvarer, prøv at tømme den gemte konfiguration:
|
||||
1. Kontroller først at leverandøren din er riktig konfigurert ved at følge [leverandørveiledningen](/docs/providers)
|
||||
2. Hvis problemet vedvarer, prøv at tømme den lagrede konfigurasjonen:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.local/share/opencode
|
||||
```
|
||||
|
||||
På Windows, tryk `WIN+R` og slet: `%USERPROFILE%\.local\share\opencode`
|
||||
På Windows, trykk `WIN+R` og slett: `%USERPROFILE%\.local\share\opencode`
|
||||
|
||||
3. Godkend på ny med din udbyder ved at bruge kommandoen `/connect` i TUI.
|
||||
3. Autentiser på nytt med leverandøren din ved at bruge kommandoen `/connect` i TUI.
|
||||
|
||||
---
|
||||
|
||||
### AI_APICallError og udbyderpakkeproblemer
|
||||
### AI_APICallError og leverandørpakkeproblemer
|
||||
|
||||
Hvis du støder på API-kaldsfejl, kan dette skyldes forældede udbyderpakker. opencode installerer dynamisk udbyderpakker (OpenAI, Anthropic, Google, etc.) efter behov og cacher dem lokalt.
|
||||
Hvis du støter på API anropsfeil, kan dette skyldes utdaterte leverandørpakker. opencode installerer dynamisk leverandørpakker (OpenAI, Anthropic, Google, etc.) etter behov og cacher dem lokalt.
|
||||
|
||||
For at løse problemer med udbyderpakke:
|
||||
For at løse problemer med leverandørpakke:
|
||||
|
||||
1. Tøm udbyderens pakkecache:
|
||||
1. Tøm leverandørens pakkebuffer:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.cache/opencode
|
||||
```
|
||||
|
||||
På Windows, tryk `WIN+R` og slet: `%USERPROFILE%\.cache\opencode`
|
||||
På Windows, trykk `WIN+R` og slett: `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
2. Start opencode på ny for at installere de nyeste udbyderpakker på ny
|
||||
2. Start opencode på nytt for at installere de nyeste leverandørpakkene på nytt
|
||||
|
||||
Dette vil tvinge opencode til at downloade de nyeste versioner af udbyderpakkerne, som ofte løser kompatibilitetsproblemer med modelparametre og API-ændringer.
|
||||
Dette vil tvinge opencode til at laste ned de nyeste versjonene av leverandørpakkene, som ofte løser kompatibilitetsproblemer med modellparametere og API endringer.
|
||||
|
||||
---
|
||||
|
||||
### Kopier/indsæt virker ikke på Linux
|
||||
### Kopier/lim inn fungerer ikke på Linux
|
||||
|
||||
Linux-brugere skal have et af følgende udklipsholderværktøjer installeret for at kopier/indsæt-funktionalitet skal fungere:
|
||||
Linux-brugere må ha ett av følgende utklippstavleverktøy installert for at kopier/lim inn-funksjonalitet skal fungere:
|
||||
|
||||
**For X11-systemer:**
|
||||
|
||||
@@ -288,7 +288,7 @@ apt install -y xsel
|
||||
apt install -y wl-clipboard
|
||||
```
|
||||
|
||||
**For hovedløse miljøer:**
|
||||
**For hodeløse miljøer:**
|
||||
|
||||
```bash
|
||||
apt install -y xvfb
|
||||
@@ -297,4 +297,4 @@ Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
|
||||
export DISPLAY=:99.0
|
||||
```
|
||||
|
||||
opencode vil opdage om du bruger Wayland og foretrække `wl-clipboard`, ellers vil den prøve at finde udklipsholderværktøjer i rækkefølgen: `xclip` og `xsel`.
|
||||
opencode vil oppdage om du bruger Wayland og foretrekker `wl-clipboard`, ellers vil den prøve at finne utklippstavleverktøy i rekkefølgen: `xclip` og `xsel`.
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
---
|
||||
title: TUI
|
||||
description: Brug af OpenCode-terminalbrugergrænsefladen.
|
||||
description: Bruge OpenCode-terminalbrugergrænsefladeet.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode giver en interaktiv terminalgrænseflade eller TUI til at arbejde med dine projekter med en LLM.
|
||||
OpenCode gir et interaktivt terminalgrænseflade eller TUI for at jobbe med prosjektene dine med en LLM.
|
||||
|
||||
At køre OpenCode starter TUI for den nuværende mappe.
|
||||
Å køre OpenCode starter TUI for nuværende mappe.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
@@ -29,10 +29,10 @@ Give me a quick summary of the codebase.
|
||||
|
||||
## Filreferencer
|
||||
|
||||
Du kan referere til filer i dine beskeder med `@`. Det laver en fuzzy filsøgning i den nuværende arbejdsmappe.
|
||||
Du kan referere til filer i dine meddelelser med `@`. Det laver en fuzzy filsøgning i det nuværende arbejdsmappe.
|
||||
|
||||
:::tip
|
||||
Du kan også bruge `@` til at referere til filer i dine beskeder.
|
||||
Du kan også bruge `@` til at referere til filer i dine meddelelser.
|
||||
:::
|
||||
|
||||
```text "@packages/functions/src/api/index.ts"
|
||||
@@ -51,19 +51,19 @@ Start en besked med `!` for at køre en shell-kommando.
|
||||
!ls -la
|
||||
```
|
||||
|
||||
Outputtet fra kommandoen tilføjes til samtalen som et værktøjsresultat.
|
||||
Outputtet fra kommandoen tilføjes til samtalen som et værktøjresultat.
|
||||
|
||||
---
|
||||
|
||||
## Kommandoer
|
||||
|
||||
Når du bruger OpenCode TUI, kan du skrive `/` efterfulgt af et kommandonavn for hurtigt at udføre handlinger. For eksempel:
|
||||
Når du bruger OpenCode TUI, kan du skrive `/` etterfulgt av et kommandonavn for raskt at utføre handlinger. For eksempel:
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
De fleste kommandoer har også genvejstaster som bruger `ctrl+x` som Leader-tast, hvor `ctrl+x` er standard Leader-tast. [Læs mere](/docs/keybinds).
|
||||
De fleste kommandoer har også genvejstast som bruger `ctrl+x` som Leader-tast, der `ctrl+x` er standard Leader-tast. [Læs mere](/docs/keybinds).
|
||||
|
||||
Her er alle tilgængelige skråstregskommandoer:
|
||||
|
||||
@@ -71,7 +71,7 @@ Her er alle tilgængelige skråstregskommandoer:
|
||||
|
||||
### connect
|
||||
|
||||
Tilføj en udbyder til OpenCode. Lader dig vælge fra tilgængelige udbydere og tilføje deres API-nøgler.
|
||||
Tilføj en leverandør til OpenCode. Lar deg velge fra tilgængelige leverandører og tilføje til deres API-nøgler.
|
||||
|
||||
```bash frame="none"
|
||||
/connect
|
||||
@@ -93,7 +93,7 @@ Komprimer nuværende session. _Alias_: `/summarize`
|
||||
|
||||
### details
|
||||
|
||||
Skift visning af værktøjsudførelsesdetaljer.
|
||||
Veksle værktøjutførelsesdetaljer.
|
||||
|
||||
```bash frame="none"
|
||||
/details
|
||||
@@ -105,7 +105,7 @@ Skift visning af værktøjsudførelsesdetaljer.
|
||||
|
||||
### editor
|
||||
|
||||
Åbn eksternt redigeringsprogram for at skrive beskeder. Bruger redigeringsprogrammet i miljøvariablen `EDITOR`. [Læs mere](#editor-setup).
|
||||
Åbn eksternt redigeringsprogram for at skrive beskeder. Bruger redigeringsprogrammet i miljøvariabelen `EDITOR`. [Læs mere](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/editor
|
||||
@@ -129,7 +129,7 @@ Afslut OpenCode. _Aliaser_: `/quit`, `/q`
|
||||
|
||||
### export
|
||||
|
||||
Eksporter nuværende samtale til Markdown og åbn i standardredigeringsprogrammet. Bruger redigeringsprogrammet i miljøvariablen `EDITOR`. [Læs mere](#editor-setup).
|
||||
Eksporter nuværende samtale til Markdown og åpne i standardredigeringsprogrammet. Bruger redigeringsprogrammet i miljøvariabelen `EDITOR`. [Læs mere](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/export
|
||||
@@ -189,13 +189,14 @@ Start en ny session. _Alias_: `/clear`
|
||||
|
||||
### redo
|
||||
|
||||
Gentag en tidligere fortrudt besked. Kun tilgængelig efter brug af `/undo`.
|
||||
Gentag en tidligere fortrudt besked. Kun tilgængelig etter brug av `/undo`.
|
||||
|
||||
:::tip
|
||||
Eventuelle filændringer vil også blive genoprettet.
|
||||
Eventuelle filændringer vil også bli genoprettet.
|
||||
:::
|
||||
|
||||
Internt bruger dette Git til at administrere filændringerne. Så dit projekt **skal være et Git-depot**.
|
||||
Internt bruger dette Git til at administrere filændringerne. Så dit prosjekt **må
|
||||
være et Git-depot**.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
@@ -207,7 +208,7 @@ Internt bruger dette Git til at administrere filændringerne. Så dit projekt **
|
||||
|
||||
### sessions
|
||||
|
||||
List og skift mellem sessioner. _Aliaser_: `/resume`, `/continue`
|
||||
List opp og bytt mellom sessioner. _Aliaser_: `/resume`, `/continue`
|
||||
|
||||
```bash frame="none"
|
||||
/sessions
|
||||
@@ -243,10 +244,10 @@ Liste over tilgængelige temaer.
|
||||
|
||||
### thinking
|
||||
|
||||
Skift synligheden af tænke-/ræsonneringsblokke i samtalen. Når den er aktiveret, kan du se modellens ræsonneringsproces for modeller, som understøtter udvidet tænkning.
|
||||
Veksle mellom synligheten av tenke-/resonneringsblokker i samtalen. Når den er aktiveret, kan du se modellens resonneringsprosess for modeller som støtter utvidet tenkning.
|
||||
|
||||
:::note
|
||||
Denne kommando kontrollerer bare om tænkeblokke **vises** - den aktiverer eller deaktiverer ikke modellens ræsonneringsmuligheder. For at skifte mellem faktiske ræsonneringsmuligheder, brug `ctrl+t` for at bladre gennem modelvarianter.
|
||||
Denne kommandoen kontrollerer bare om tenkeblokker **vises** - den aktiverer eller deaktiverer ikke modellens resonneringsmuligheter. For at veksle mellom faktiske resonneringsmuligheter, brug `ctrl+t` for at bla gennem modellvarianter.
|
||||
:::
|
||||
|
||||
```bash frame="none"
|
||||
@@ -257,13 +258,14 @@ Denne kommando kontrollerer bare om tænkeblokke **vises** - den aktiverer eller
|
||||
|
||||
### undo
|
||||
|
||||
Fortryd sidste besked i samtalen. Fjerner den sidste brugerbesked, alle efterfølgende svar og eventuelle filændringer.
|
||||
Angre siste besked i samtalen. Fjerner den siste brugerbeskeden, alle påfølgende svar og eventuelle filændringer.
|
||||
|
||||
:::tip
|
||||
Eventuelle filændringer vil også blive nulstillet.
|
||||
Eventuelle filændringer vil også bli nullstillet.
|
||||
:::
|
||||
|
||||
Internt bruger dette Git til at administrere filændringerne. Så dit projekt **skal være et Git-depot**.
|
||||
Internt bruger dette Git til at administrere filændringerne. Så dit prosjekt **må
|
||||
være et Git-depot**.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
@@ -275,7 +277,7 @@ Internt bruger dette Git til at administrere filændringerne. Så dit projekt **
|
||||
|
||||
### unshare
|
||||
|
||||
Ophæv deling af nuværende session. [Læs mere](/docs/share#un-sharing).
|
||||
Ophæv deling av nuværende session. [Læs mere](/docs/share#un-sharing).
|
||||
|
||||
```bash frame="none"
|
||||
/unshare
|
||||
@@ -285,7 +287,7 @@ Ophæv deling af nuværende session. [Læs mere](/docs/share#un-sharing).
|
||||
|
||||
## Opsætning af editor
|
||||
|
||||
Både kommandoerne `/editor` og `/export` bruger editoren som er specificeret i miljøvariablen `EDITOR`.
|
||||
Både kommandoerne `/editor` og `/export` bruger editoren som er spesifisert i miljøvariabelen `EDITOR`.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Linux/macOS">
|
||||
@@ -299,7 +301,7 @@ Både kommandoerne `/editor` og `/export` bruger editoren som er specificeret i
|
||||
export EDITOR="code --wait"
|
||||
```
|
||||
|
||||
For at gøre det permanent, tilføj dette til din shellprofil;
|
||||
For at gøre det permanent, tilføj dette til i shellprofilen din;
|
||||
`~/.bashrc`, `~/.zshrc` osv.
|
||||
|
||||
</TabItem>
|
||||
@@ -313,7 +315,8 @@ Både kommandoerne `/editor` og `/export` bruger editoren som er specificeret i
|
||||
set EDITOR=code --wait
|
||||
```
|
||||
|
||||
For at gøre det permanent, brug **Systemegenskaber** > **Miljøvariabler**.
|
||||
For at gøre det permanent, brug **Systemegenskaber** > **Miljø
|
||||
Variabler**.
|
||||
|
||||
</TabItem>
|
||||
|
||||
@@ -326,7 +329,7 @@ Både kommandoerne `/editor` og `/export` bruger editoren som er specificeret i
|
||||
$env:EDITOR = "code --wait"
|
||||
```
|
||||
|
||||
For at gøre det permanent, tilføj dette til din PowerShell-profil.
|
||||
For at gøre det permanent, tilføj dette til i PowerShell-profilen din.
|
||||
|
||||
</TabItem>
|
||||
</Tabs>
|
||||
@@ -343,10 +346,10 @@ Populære redigeringsalternativer inkluderer:
|
||||
- `subl` - Sublime Text
|
||||
|
||||
:::note
|
||||
Nogle editorer som VS Code skal startes med flaget `--wait`.
|
||||
Nogle editorer som VS Code må startes med flaget `--wait`.
|
||||
:::
|
||||
|
||||
Nogle editorer kræver kommandolinjeargumenter for at køre i blokeringstilstand. `--wait`-flaget gør at redigeringsprocessen blokeres indtil den lukkes.
|
||||
Nogle editorer kræver kommandolinjeargumenter for at køre i blokeringstilstand. `--wait`-flaget gør at redigeringsprocessen blokeres til den lukkes.
|
||||
|
||||
---
|
||||
|
||||
@@ -368,20 +371,20 @@ Du kan tilpasse TUI-adfærden gennem OpenCode-konfigurationsfilen.
|
||||
|
||||
### Indstillinger
|
||||
|
||||
- `scroll_acceleration` - Aktiver rulleacceleration i macOS-stil for jævn, naturlig rulning. Når aktiveret, øger rullehastigheden med hurtige rullebevægelser og forbliver præcis for langsommere bevægelser. **Denne indstilling har forrang over `scroll_speed` og tilsidesætter den, når den er aktiveret.**
|
||||
- `scroll_speed` - Styrer hvor hurtigt TUI ruller, når du bruger rullekommandoer (minimum: `1`). Standard er `3`. **Bemærk: Dette ignoreres hvis `scroll_acceleration.enabled` er sat til `true`.**
|
||||
- `scroll_acceleration` - Aktiver rulleacceleration i macOS-stil for jævn, naturlig rulning. Når aktiveret, øger rullehastigheden med raske rullebevægelser og forblir presis for langsommere bevægelser. **Denne indstillingen har forrang over `scroll_speed` og tilsidesætter den når den er aktiveret.**
|
||||
- `scroll_speed` - Styrer hvor raskt TUI ruller når du bruger rullekommandoer (minimum: `1`). Standard er `3`. **Bemærk: Dette ignoreres hvis `scroll_acceleration.enabled` er sat til `true`.**
|
||||
|
||||
---
|
||||
|
||||
## Tilpasning
|
||||
|
||||
Du kan tilpasse forskellige aspekter af TUI-visningen ved at bruge kommandopaletten (`ctrl+x h` eller `/help`). Disse indstillinger gemmes ved genstart.
|
||||
Du kan tilpasse forskellige aspekter av TUI-visningen ved at bruge kommandopaletten (`ctrl+x h` eller `/help`). Disse indstillingene gemmes ved omstarter.
|
||||
|
||||
---
|
||||
|
||||
#### Visning af brugernavn
|
||||
#### Username display
|
||||
|
||||
Skift om dit brugernavn vises i chat-beskeder. Få adgang til dette gennem:
|
||||
Veksle om brugernavnet dit vises i chat-beskeder. Få adgang til dette gennem:
|
||||
|
||||
- Kommandopalet: Søg efter "brugernavn" eller "skjul brugernavn"
|
||||
- Indstillingen gemmes automatisk og vil blive husket over TUI-sessioner
|
||||
- Innstillingen gemmes automatisk og vil bli husket over TUI sessioner
|
||||
|
||||
@@ -21,7 +21,7 @@ Dette starter en lokal server på `127.0.0.1` med en tilfældig tilgængelig por
|
||||
Hvis `OPENCODE_SERVER_PASSWORD` ikke er indstillet, vil serveren være usikret. Dette er fint til lokal brug, men bør indstilles til netværksadgang.
|
||||
:::
|
||||
|
||||
:::tip[Windows-brugere]
|
||||
:::tip[Windows Users]
|
||||
For den bedste oplevelse skal du køre `opencode web` fra [WSL](/docs/windows-wsl) i stedet for PowerShell. Dette sikrer korrekt filsystemadgang og terminalintegration.
|
||||
:::
|
||||
|
||||
|
||||
@@ -1,77 +1,77 @@
|
||||
---
|
||||
title: Zen
|
||||
description: Udvalgt liste over modeller leveret af OpenCode.
|
||||
description: Utvalgt liste over modeller levert av OpenCode.
|
||||
---
|
||||
|
||||
import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
export const email = `mailto:${config.email}`
|
||||
|
||||
OpenCode Zen er en liste over testede og verificerede modeller leveret af OpenCode-teamet.
|
||||
OpenCode Zen er en liste over testede og verifiserte modeller levert av OpenCode-teamet.
|
||||
|
||||
:::note
|
||||
OpenCode Zen er i øjeblikket i beta.
|
||||
OpenCode Zen er for øyeblikket i beta.
|
||||
:::
|
||||
|
||||
Zen fungerer som alle andre udbydere i OpenCode. Du logger på OpenCode Zen og får
|
||||
din API-nøgle. Den er **helt valgfri** og du behøver ikke bruge den for at bruge
|
||||
Zen fungerer som alle andre leverandører i OpenCode. Du logger på OpenCode Zen og får
|
||||
din API-nøgle. Den er **helt valgfri** og du trenger ikke bruge den for at bruge den
|
||||
OpenCode.
|
||||
|
||||
---
|
||||
|
||||
## Baggrund
|
||||
## Bakgrunn
|
||||
|
||||
Der er et stort antal modeller derude, men kun få af dem
|
||||
fungerer godt som kodeagenter. Derudover er de fleste udbydere
|
||||
konfigureret meget forskelligt, så du får meget forskellig ydeevne og kvalitet.
|
||||
Det er et stort antall modeller der ute, men bare nogle få av dem
|
||||
disse modellene fungerer godt som kodeagenter. I tiltilføj er de fleste tilbydere
|
||||
konfigurert veldig annerledes; slik at du får veldig forskjellig ytelse og kvalitet.
|
||||
|
||||
:::tip
|
||||
Vi testede en udvalgt gruppe modeller og udbydere, der fungerer godt med OpenCode.
|
||||
Vi testet en utvalgt gruppe modeller og leverandører som fungerer godt med OpenCode.
|
||||
:::
|
||||
|
||||
Så hvis du bruger en model gennem noget som OpenRouter, kan du aldrig være
|
||||
sikker på, om du får den bedste version af modellen, du ønsker.
|
||||
Så hvis du bruger en modell gjennom noe som OpenRouter, kan du aldri bli det
|
||||
sikker på om du får den beste versjonen av modellen du ønsker.
|
||||
|
||||
For at fikse dette gjorde vi et par ting:
|
||||
|
||||
1. Vi testede en udvalgt gruppe modeller og talte med deres teams om, hvordan
|
||||
man bedst kører dem.
|
||||
2. Vi samarbejdede derefter med nogle få udbydere for at sikre, at disse blev serveret
|
||||
korrekt.
|
||||
3. Til sidst benchmarkede vi kombinationen af model/udbyder og kom frem
|
||||
til en liste, som vi har lyst til at anbefale.
|
||||
1. Vi testet en utvalgt gruppe modeller og snakket med teamene deres om hvordan
|
||||
best kjøre dem.
|
||||
2. Vi samarbeidet deretter med nogle få leverandører for at sikre at disse ble servert
|
||||
riktig.
|
||||
3. Til slutt benchmarket vi kombinasjonen av modell/leverandør og kom frem
|
||||
med en liste som vi har lyst til at anbefale.
|
||||
|
||||
OpenCode Zen er en AI gateway, der giver dig adgang til disse modeller.
|
||||
OpenCode Zen er en AI gateway som gir deg tilgang til disse modellene.
|
||||
|
||||
---
|
||||
|
||||
## Sådan fungerer det
|
||||
## Slik fungerer det
|
||||
|
||||
OpenCode Zen fungerer som alle andre udbydere i OpenCode.
|
||||
OpenCode Zen fungerer som alle andre leverandører i OpenCode.
|
||||
|
||||
1. Du logger på **<a href={console}>OpenCode Zen</a>**, tilføjer faktureringsoplysninger
|
||||
og kopierer API-nøglen.
|
||||
2. Du kører kommandoen `/connect` i TUI, vælger OpenCode Zen og indsætter API-nøglen.
|
||||
3. Kør `/models` i TUI for at se listen over modeller, vi anbefaler.
|
||||
1. Du logger på **<a href={console}>OpenCode Zen</a>**, tilføj til fakturering
|
||||
detaljer, og kopier API-nøgleen.
|
||||
2. Du kjører kommandoen `/connect` i TUI, velger OpenCode Zen og limer inn API-nøgleen.
|
||||
3. Kjør `/models` i TUI for at se listen over modeller vi anbefaler.
|
||||
|
||||
Du opkræves per anmodning, og du kan tilføje kredit til din konto.
|
||||
Du belastes per forespørsel, og du kan tilføje til kreditt på kontoen din.
|
||||
|
||||
---
|
||||
|
||||
## Endpoints
|
||||
## Endepunkter
|
||||
|
||||
Du kan også få adgang til vores modeller gennem følgende API-endpoints.
|
||||
Du kan også få tilgang til modellene våre gjennom følgende API-endepunkter.
|
||||
|
||||
| Model | Model ID | Endpoint | AI SDK Pakke |
|
||||
| Modell | Modell ID | Endepunkt | AI SDK Pakke |
|
||||
| ------------------- | ------------------ | -------------------------------------------------- | --------------------------- |
|
||||
| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.2 Codex | gpt-5.2-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex | gpt-5.1-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex | gpt-5.1-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 Codex | gpt-5-kodeks | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
|
||||
| Claude Sonnet 4.5 | claude-sonnett-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| Claude Sonnet 4 | claude-sonnett-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
@@ -83,20 +83,20 @@ Du kan også få adgang til vores modeller gennem følgende API-endpoints.
|
||||
| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
|
||||
| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
|
||||
| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| MiniMax M2.1 Gratis | minimax-m2.1-free | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| MiniMax M2.1 Gratis | minimax-m2.1-fri | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
|
||||
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.7 Gratis | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.7 Gratis | glm-4.7-fri | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 Gratis | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 Tenker | kimi-k2-thinking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2.5 Gratis | kimi-k2.5-fri | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 Tenker | kimi-k2-tenking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Qwen3-koder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Stor sylteagurk | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Qwen3-koder 480B | qwen3-koder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
| Stor sylteagurk | stor sylteagurk | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
|
||||
|
||||
[model-id](/docs/config/#models) i OpenCode-konfigurationen
|
||||
[modell-id](/docs/config/#models) i OpenCode-konfigurasjonen
|
||||
bruger formatet `opencode/<model-id>`. For eksempel, for GPT 5.2 Codex, ville du
|
||||
bruge `opencode/gpt-5.2-codex` i din konfiguration.
|
||||
brug `opencode/gpt-5.2-codex` i konfigurasjonen din.
|
||||
|
||||
---
|
||||
|
||||
@@ -112,143 +112,143 @@ https://opencode.ai/zen/v1/models
|
||||
|
||||
## Priser
|
||||
|
||||
Vi støtter en pay-as-you-go-model. Nedenfor er priserne **per 1 million tokens**.
|
||||
Vi støtter en pay-as-you-go-modell. Nedenfor er prisene **per 1 million tokens**.
|
||||
|
||||
| Model | Input | Output | Cached Læs | Cached Skriv |
|
||||
| --------------------------------- | ------ | ------ | ---------- | ------------ |
|
||||
| Stor sylteagurk | Gratis | Gratis | Gratis | - |
|
||||
| MiniMax M2.1 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| MiniMax M2.1 | $0,30 | $1,20 | $0,10 | - |
|
||||
| GLM 4.7 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| GLM 4.7 | $0,60 | $2,20 | $0,10 | - |
|
||||
| GLM 4.6 | $0,60 | $2,20 | $0,10 | - |
|
||||
| Kimi K2.5 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| Kimi K2.5 | $0,60 | $3,00 | $0,08 | - |
|
||||
| Kimi K2 Tenker | $0,40 | $2,50 | - | - |
|
||||
| Kimi K2 | $0,40 | $2,50 | - | - |
|
||||
| Qwen3-koder 480B | $0,45 | $1,50 | - | - |
|
||||
| Claude Sonnet 4.5 (≤ 200K tokens) | $3,00 | $15,00 | $0,30 | $3,75 |
|
||||
| Claude Sonnet 4.5 (> 200K tokens) | $6,00 | $22,50 | $0,60 | $7,50 |
|
||||
| Claude Sonnet 4 (≤ 200K tokens) | $3,00 | $15,00 | $0,30 | $3,75 |
|
||||
| Claude Sonnet 4 (> 200K tokens) | $6,00 | $22,50 | $0,60 | $7,50 |
|
||||
| Claude Haiku 4.5 | $1,00 | $5,00 | $0,10 | $1,25 |
|
||||
| Claude Haiku 3.5 | $0,80 | $4,00 | $0,08 | $1,00 |
|
||||
| Claude Opus 4.6 (≤ 200K tokens) | $5,00 | $25,00 | $0,50 | $6,25 |
|
||||
| Claude Opus 4.6 (> 200K tokens) | $10,00 | $37,50 | $1,00 | $12,50 |
|
||||
| Claude Opus 4.5 | $5,00 | $25,00 | $0,50 | $6,25 |
|
||||
| Claude Opus 4.1 | $15,00 | $75,00 | $1,50 | $18,75 |
|
||||
| Gemini 3 Pro (≤ 200K tokens) | $2,00 | $12,00 | $0,20 | - |
|
||||
| Gemini 3 Pro (> 200K tokens) | $4,00 | $18,00 | $0,40 | - |
|
||||
| Gemini 3 Flash | $0,50 | $3,00 | $0,05 | - |
|
||||
| GPT 5.2 | $1,75 | $14,00 | $0,175 | - |
|
||||
| GPT 5.2 Codex | $1,75 | $14,00 | $0,175 | - |
|
||||
| GPT 5.1 | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5.1 Codex | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5.1 Codex Max | $1,25 | $10,00 | $0,125 | - |
|
||||
| GPT 5.1 Codex Mini | $0,25 | $2,00 | $0,025 | - |
|
||||
| GPT 5 | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5 Codex | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5 Nano | Gratis | Gratis | Gratis | - |
|
||||
| Modell | Inngang | Utgang | Bufret Les | Bufret skriv |
|
||||
| --------------------------------- | ------- | ------ | ---------- | ------------ |
|
||||
| Stor sylteagurk | Gratis | Gratis | Gratis | - |
|
||||
| MiniMax M2.1 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| MiniMax M2.1 | $0,30 | $1,20 | $0,10 | - |
|
||||
| GLM 4.7 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| GLM 4.7 | $0,60 | $2,20 | $0,10 | - |
|
||||
| GLM 4.6 | $0,60 | $2,20 | $0,10 | - |
|
||||
| Kimi K2.5 Gratis | Gratis | Gratis | Gratis | - |
|
||||
| Kimi K2.5 | $0,60 | $3,00 | $0,08 | - |
|
||||
| Kimi K2 Tenker | $0,40 | $2,50 | - | - |
|
||||
| Kimi K2 | $0,40 | $2,50 | - | - |
|
||||
| Qwen3-koder 480B | $0,45 | $1,50 | - | - |
|
||||
| Claude Sonnet 4.5 (≤ 200K tokens) | $3,00 | $15,00 | $0,30 | $3,75 |
|
||||
| Claude Sonnet 4.5 (> 200K tokens) | $6,00 | $22,50 | $0,60 | $7,50 |
|
||||
| Claude Sonnet 4 (≤ 200K tokens) | $3,00 | $15,00 | $0,30 | $3,75 |
|
||||
| Claude Sonnet 4 (> 200K tokens) | $6,00 | $22,50 | $0,60 | $7,50 |
|
||||
| Claude Haiku 4.5 | $1,00 | $5,00 | $0,10 | $1,25 |
|
||||
| Claude Haiku 3.5 | $0,80 | $4,00 | $0,08 | $1,00 |
|
||||
| Claude Opus 4.6 (≤ 200K tokens) | $5,00 | $25,00 | $0,50 | $6,25 |
|
||||
| Claude Opus 4.6 (> 200K tokens) | $10,00 | $37,50 | $1,00 | $12,50 |
|
||||
| Claude Opus 4.5 | $5,00 | $25,00 | $0,50 | $6,25 |
|
||||
| Claude Opus 4.1 | $15,00 | $75,00 | $1,50 | $18,75 |
|
||||
| Gemini 3 Pro (≤ 200K tokens) | $2,00 | $12,00 | $0,20 | - |
|
||||
| Gemini 3 Pro (> 200K tokens) | $4,00 | $18,00 | $0,40 | - |
|
||||
| Gemini 3 Flash | $0,50 | $3,00 | $0,05 | - |
|
||||
| GPT 5.2 | $1,75 | $14,00 | $0,175 | - |
|
||||
| GPT 5.2 Codex | $1,75 | $14,00 | $0,175 | - |
|
||||
| GPT 5.1 | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5.1 Codex | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5.1 Codex Max | $1,25 | $10,00 | $0,125 | - |
|
||||
| GPT 5.1 Codex Mini | $0,25 | $2,00 | $0,025 | - |
|
||||
| GPT 5 | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5 Codex | $1,07 | $8,50 | $0,107 | - |
|
||||
| GPT 5 Nano | Gratis | Gratis | Gratis | - |
|
||||
|
||||
Du bemærker måske _Claude Haiku 3.5_ i din brugshistorik. Dette er en [lavprismodel](/docs/config/#models), som bruges til at generere titlerne på dine sessioner.
|
||||
Du tilføjer kanskje merke til _Claude Haiku 3.5_ i brugshistorikken din. Dette er en [lavprismodell](/docs/config/#models) som bruges til at generere titlene på sessionene dine.
|
||||
|
||||
:::note
|
||||
Kreditkortgebyrer overføres til kostpris (4,4 % + $0,30 per transaktion); vi opkræver ikke noget udover det.
|
||||
Kredittkortgebyrer overføres til kostpris (4,4 % + $0,30 per transaksjon); vi belaster ikke noe utover det.
|
||||
:::
|
||||
|
||||
De gratis modeller:
|
||||
De gratis modellene:
|
||||
|
||||
- GLM 4.7 Gratis er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at samle feedback og forbedre modellen.
|
||||
- Kimi K2.5 Gratis er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at samle feedback og forbedre modellen.
|
||||
- MiniMax M2.1 Gratis er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tid til at samle feedback og forbedre modellen.
|
||||
- Stor sylteagurk er en stealth-model som er gratis på OpenCode i en begrænset periode. Teamet bruger denne tid til at samle feedback og forbedre modellen.
|
||||
- GLM 4.7 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tiden til at samle tilbagemeldinger og forbedre modellen.
|
||||
- Kimi K2.5 Gratis er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tiden til at samle tilbagemeldinger og forbedre modellen.
|
||||
- MiniMax M2.1 Free er tilgængelig på OpenCode i en begrænset periode. Teamet bruger denne tiden til at samle tilbagemeldinger og forbedre modellen.
|
||||
- Big Pickle er en stealth-modell som er gratis på OpenCode i en begrænset periode. Teamet bruger denne tiden til at samle tilbagemeldinger og forbedre modellen.
|
||||
|
||||
<a href={email}>Kontakt os</a> hvis du har spørgsmål.
|
||||
<a href={email}>Contact us</a> if you have any questions.
|
||||
|
||||
---
|
||||
|
||||
### Automatisk opfyldning
|
||||
### Last inn automatisk
|
||||
|
||||
Hvis din saldo går under $5, vil Zen automatisk laste $20 ind på nytt.
|
||||
Hvis saldoen din går under $5, vil Zen automatisk laste inn $20 på nytt.
|
||||
|
||||
Du kan ændre beløbet for automatisk påfyldning. Du kan også deaktivere automatisk genindlæsning helt.
|
||||
Du kan endre beløpet for automatisk påfylling. Du kan også deaktivere automatisk reload helt.
|
||||
|
||||
---
|
||||
|
||||
### Månedlige grænser
|
||||
### Månedlige grenser
|
||||
|
||||
Du kan også angive en månedlig brugsgrænse for hele arbejdsområdet og for hvert
|
||||
medlem af dit team.
|
||||
Du kan også angi en månedlig brugsgrense for hele arbeidsområdet og for hver
|
||||
medlem av teamet ditt.
|
||||
|
||||
Lad os for eksempel sige, at du sætter en månedlig brugsgrænse til $20, Zen vil ikke bruge
|
||||
mere end $20 på en måned. Men hvis du har automatisk genindlæsning aktiveret, kan Zen ende med
|
||||
at opkræve dig mere end $20, hvis din saldo går under $5.
|
||||
La oss for eksempel si at du setter en månedlig brugsgrense til $20, Zen vil ikke bruge
|
||||
mer enn $20 på en måned. Men hvis du har automatisk reload aktivert, kan Zen ende opp
|
||||
belaster deg mer enn $20 hvis saldoen din går under $5.
|
||||
|
||||
---
|
||||
|
||||
## Privatliv
|
||||
## Personvern
|
||||
|
||||
Alle vores modeller er hostet i USA. Vores udbydere følger en nul-opbevaringspolitik og bruger ikke dine data til modeltræning, med følgende undtagelser:
|
||||
Alle våre modeller er vert i US. Leverandørene våre følger en nulloppbevaringspolicy og bruger ikke dataene dine til modellopplæring, med følgende unntak:
|
||||
|
||||
- Stor sylteagurk: I løbet af gratisperioden kan indsamlede data bruges til at forbedre modellen.
|
||||
- GLM 4.7 Gratis: I løbet af gratisperioden kan indsamlede data bruges til at forbedre modellen.
|
||||
- Kimi K2.5 Gratis: I løbet af gratisperioden kan indsamlede data bruges til at forbedre modellen.
|
||||
- MiniMax M2.1 Gratis: I løbet af gratisperioden kan indsamlede data bruges til at forbedre modellen.
|
||||
- OpenAI API'er: Anmodninger opbevares i 30 dage i overensstemmelse med [OpenAIs datapolitikker](https://platform.openai.com/docs/guides/your-data).
|
||||
- Anthropic API'er: Anmodninger opbevares i 30 dage i overensstemmelse med [Anthropics datapolitikker](https://docs.anthropic.com/en/docs/claude-code/data-usage).
|
||||
- Big Pickle: I løpet av gratisperioden kan innsamlede data bruges til at forbedre modellen.
|
||||
- GLM 4.7 Gratis: I løpet av gratisperioden kan innsamlede data bruges til at forbedre modellen.
|
||||
- Kimi K2.5 Gratis: I løpet av gratisperioden kan innsamlede data bruges til at forbedre modellen.
|
||||
- MiniMax M2.1 Gratis: I løpet av gratisperioden kan innsamlede data bruges til at forbedre modellen.
|
||||
- OpenAI APIer: Forespørsler oppbevares i 30 dager i samsvar med [OpenAIs datapolicyer](https://platform.openai.com/docs/guides/your-data).
|
||||
- Anthropic APIer: Forespørsler oppbevares i 30 dager i samsvar med [Anthropics datapolicyer](https://docs.anthropic.com/en/docs/claude-code/data-usage).
|
||||
|
||||
---
|
||||
|
||||
## For teams
|
||||
## For lag
|
||||
|
||||
Zen fungerer også fremragende for teams. Du kan invitere holdkammerater, tildele roller, kuratere
|
||||
de modeller dit hold bruger, og mere.
|
||||
Zen fungerer også utmerket for team. Du kan invitere lagkamerater, tildele roller, kuratere
|
||||
modellene laget ditt bruger, og mer.
|
||||
|
||||
:::note
|
||||
Arbejdsområder er i øjeblikket gratis for teams som en del af betaversionen.
|
||||
Arbeidsområder er for øyeblikket gratis for team som en del av betaversjonen.
|
||||
:::
|
||||
|
||||
At administrere dit arbejdsområde er i øjeblikket gratis for teams som en del af betaversionen. Vi vil
|
||||
dele mere information om priserne snart.
|
||||
Å administrere arbeidsområdet ditt er for øyeblikket gratis for team som en del av betaversjonen. Det blir vi
|
||||
deler mer informasjon om prisene snart.
|
||||
|
||||
---
|
||||
|
||||
### Roller
|
||||
|
||||
Du kan invitere holdkammerater til dit arbejdsområde og tildele roller:
|
||||
Du kan invitere lagkamerater til arbeidsområdet ditt og tildele roller:
|
||||
|
||||
- **Admin**: Administrer modeller, medlemmer, API-nøgler og fakturering
|
||||
- **Medlem**: Administrer kun sine egne API-nøgler
|
||||
- **Admin**: Administrer modeller, medlemmer, API-nøkler og fakturering
|
||||
- **Medlem**: Administrer kun sine egne API-nøkler
|
||||
|
||||
Administratorer kan også sætte månedlige forbrugsgrænser for hvert medlem for at holde omkostningerne under kontrol.
|
||||
Administratorer kan også sette månedlige forbrugsgrenser for hvert medlem for at holde kostnadene under kontroll.
|
||||
|
||||
---
|
||||
|
||||
### Modeladgang
|
||||
### Modelltilgang
|
||||
|
||||
Administratorer kan aktivere eller deaktivere specifikke modeller for arbejdsområdet. Anmodninger til en deaktiveret model vil returnere en fejl.
|
||||
Administratorer kan aktivere eller deaktivere spesifikke modeller for arbeidsområdet. Forespørsler til en deaktivert modell vil returnere en feil.
|
||||
|
||||
Dette er nyttigt for tilfælde, hvor du ønsker at deaktivere brugen af en model, som
|
||||
samler ind data.
|
||||
Dette er nyttig for tilfeller der du ønsker at deaktivere brugen av en modell som
|
||||
samler inn data.
|
||||
|
||||
---
|
||||
|
||||
### Medbring din egen nøgle
|
||||
### Ta med egen nøkkel
|
||||
|
||||
Du kan bruge dine egne OpenAI- eller Anthropic API-nøgler, mens du stadig har adgang til andre modeller i Zen.
|
||||
Du kan bruge dine egne OpenAI- eller Anthropic API-nøkler mens du fortsatt har tilgang til andre modeller i Zen.
|
||||
|
||||
Når du bruger dine egne nøgler, faktureres tokens direkte af udbyderen, ikke af Zen.
|
||||
Når du bruger dine egne nøkler, faktureres tokens direkte av leverandøren, ikke av Zen.
|
||||
|
||||
For eksempel kan din organisation allerede have en nøgle for OpenAI eller Anthropic
|
||||
og du vil bruge det i stedet for det Zen giver.
|
||||
For eksempel kan organisasjonen din allerede ha en nøkkel for OpenAI eller Anthropic
|
||||
og du vil bruge det i stedet for det Zen gir.
|
||||
|
||||
---
|
||||
|
||||
## Mål
|
||||
|
||||
Vi oprettede OpenCode Zen for at:
|
||||
Vi opretet OpenCode Zen for at:
|
||||
|
||||
1. **Benchmarke** de bedste modeller/udbydere for kodningsagenter.
|
||||
2. Have adgang til mulighederne for **højeste kvalitet** og ikke nedgradere ydeevnen eller rute til billigere udbydere.
|
||||
3. Give videre eventuelle **prisfald** ved at sælge til kostpris; så den eneste mark-up er for at dække vores behandlingsgebyrer.
|
||||
4. Have **ingen fastlåsning** ved at lade dig bruge den med en hvilken som helst anden kodeagent. Og lade dig altid bruge en hvilken som helst anden udbyder med OpenCode også.
|
||||
1. **Benchmark** de beste modellene/leverandørene for kodingsagenter.
|
||||
2. Ha tilgang til alternativene for **høyeste kvalitet** og ikke nedgrader ytelsen eller rute til billigere leverandører.
|
||||
3. Gi videre eventuelle **prisfall** ved at selge til kostpris; så den eneste markeringen er at dekke behandlingsgebyrene våre.
|
||||
4. Ha **ingen låsing** ved at la deg bruge den med en hvilken som helst annen kodeagent. Og la deg alltid bruge en hvilken som helst annen leverandør med OpenCode også.
|
||||
|
||||
@@ -13,7 +13,7 @@ ACP ist ein offenes Protokoll, das die Kommunikation zwischen Code-Editoren und
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurieren
|
||||
|
||||
Um OpenCode über ACP zu verwenden, konfigurieren Sie Ihren Editor für die Ausführung des Befehls `opencode acp`.
|
||||
|
||||
@@ -69,7 +69,7 @@ Sie können auch eine Tastenkombination binden, indem Sie Ihren `keymap.json` be
|
||||
|
||||
### JetBrains IDEs
|
||||
|
||||
Fügen Sie zu Ihrem [JetBrains IDE](https://www.jetbrains.com/) acp.json gemäß [Dokumentation](https://www.jetbrains.com/help/ai-assistant/acp.html) hinzu:
|
||||
Fügen Sie zu Ihrem [JetBrains IDE](https://www.jetbrains.com/) acp.json gemäß [documentation](https://www.jetbrains.com/help/ai-assistant/acp.html) hinzu:
|
||||
|
||||
```json title="acp.json"
|
||||
{
|
||||
@@ -140,7 +140,7 @@ Diese Konfiguration richtet CodeCompanion so ein, dass OpenCode als ACP-Agent f
|
||||
|
||||
Wenn Sie Umgebungsvariablen (wie `OPENCODE_API_KEY`) übergeben müssen, finden Sie ausführliche Informationen zu [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) in der Dokumentation zu CodeCompanion.nvim.
|
||||
|
||||
## Unterstützung
|
||||
## Support
|
||||
|
||||
OpenCode funktioniert über ACP genauso wie im Terminal. Alle Funktionen werden unterstützt:
|
||||
|
||||
|
||||
@@ -28,11 +28,25 @@ Sie können die **Tabulatortaste** verwenden, um während einer Sitzung zwischen
|
||||
:::
|
||||
|
||||
OpenCode verfügt über zwei integrierte Primäragenten: **Build** und **Plan**. Auch
|
||||
Schauen wir uns diese unten an.
|
||||
Schauen Sie sich diese unten an.
|
||||
|
||||
---
|
||||
|
||||
### Build
|
||||
### Subagenten
|
||||
|
||||
Unteragenten sind spezialisierte Assistenten, die Primäragenten für bestimmte Aufgaben aufrufen können. Sie können sie auch manuell aufrufen, indem Sie sie in Ihren Nachrichten **@erwähnen**.
|
||||
|
||||
OpenCode verfügt über zwei integrierte Subagenten: **General** und **Explore**. Wir werden uns das weiter unten ansehen.
|
||||
|
||||
---
|
||||
|
||||
## Eingebaut
|
||||
|
||||
OpenCode verfügt über zwei integrierte Primäragenten und zwei integrierte Subagenten.
|
||||
|
||||
---
|
||||
|
||||
### Use Build
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -40,7 +54,7 @@ Build ist der **Standard**-Primäragent mit allen aktivierten Tools. Dies ist de
|
||||
|
||||
---
|
||||
|
||||
### Plan
|
||||
### Use Plan
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -54,7 +68,7 @@ Dieser Agent ist nützlich, wenn Sie möchten, dass LLM Code analysiert, Änderu
|
||||
|
||||
---
|
||||
|
||||
### General
|
||||
### Use General
|
||||
|
||||
_Modus_: `subagent`
|
||||
|
||||
@@ -62,7 +76,7 @@ Ein Allzweckagent zur Recherche komplexerer Fragen und zur Ausführung mehrstufi
|
||||
|
||||
---
|
||||
|
||||
### Explore
|
||||
### Use Explore
|
||||
|
||||
_Modus_: `subagent`
|
||||
|
||||
@@ -70,7 +84,7 @@ Ein schneller, schreibgeschützter Agent zum Erkunden von Codebasen. Dateien kö
|
||||
|
||||
---
|
||||
|
||||
### Compaction
|
||||
### Use Compaction
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -78,7 +92,7 @@ Versteckter Systemagent, der lange Kontext in einer kleineren Zusammenfassung ko
|
||||
|
||||
---
|
||||
|
||||
### Title
|
||||
### Use Title
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -86,7 +100,7 @@ Versteckter Systemagent, der kurze Sitzungstitel generiert. Es läuft automatisc
|
||||
|
||||
---
|
||||
|
||||
### Summary
|
||||
### Use Summary
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -107,14 +121,14 @@ Versteckter Systemagent, der Sitzungszusammenfassungen erstellt. Es läuft autom
|
||||
```
|
||||
|
||||
3. **Navigation zwischen Sitzungen**: Wenn Subagenten ihre eigenen untergeordneten Sitzungen erstellen, können Sie zwischen der übergeordneten Sitzung und allen untergeordneten Sitzungen sorgfältig handeln, indem Sie Folgendes verwenden:
|
||||
- **\<Leader>+Rechts** (oder Ihre konfigurierte `session_child_cycle`-Tastenkombination), um vorwärts durch Parent → Child1 → Child2 → ... → Parent zu blättern
|
||||
- **\<Leader>+Links** (oder Ihre konfigurierte `session_child_cycle_reverse`-Tastenkombination), um rückwärts durch Parent ← Child1 ← Child2 ← ... ← Parent zu blättern
|
||||
- **\<Leader>+Rechts** (oder Ihre konfigurierte `session_child_cycle`-Tastenkombination), um vorwärts durch Eltern → Kind1 → Kind2 → ... → Eltern zu blättern
|
||||
- **\<Leader>+Links** (oder Ihre konfigurierte `session_child_cycle_reverse`-Tastenkombination), um rückwärts durch übergeordnetes Element ← untergeordnetes Element1 ← untergeordnetes Element2 ← ... ← übergeordnetes Element zu blättern
|
||||
|
||||
Dadurch können Sie nahtlos zwischen der Hauptkonversation und der spezialisierten Subagentenarbeit wechseln.
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurieren
|
||||
|
||||
Sie können die integrierten Agenten anpassen oder über die Konfiguration eigene erstellen. Agenten können auf zwei Arten konfiguriert werden:
|
||||
|
||||
@@ -196,9 +210,9 @@ Der Name der Markdown-Datei wird zum Agentennamen. Beispielsweise erstellte `rev
|
||||
|
||||
---
|
||||
|
||||
## Optionen
|
||||
## Options
|
||||
|
||||
Schauen wir uns diese Konfigurationsmöglichkeiten im Detail an.
|
||||
Schauen Sie sich diese Konfigurationsmöglichkeiten im Detail an.
|
||||
|
||||
---
|
||||
|
||||
@@ -220,7 +234,7 @@ Dies ist eine **erforderliche** Konfigurationsoption.
|
||||
|
||||
---
|
||||
|
||||
### Temperatur
|
||||
### Temperature
|
||||
|
||||
Steuern Sie die Zufälligkeit und Kreativität der Antworten von LLM mit der `temperature`-Konfiguration.
|
||||
|
||||
@@ -267,7 +281,7 @@ Wenn keine Temperatur angegeben ist, verwendet OpenCode modellspezifische Standa
|
||||
|
||||
---
|
||||
|
||||
### Schritte
|
||||
### Maximale Schritte
|
||||
|
||||
Steuern Sie die maximale Anzahl an Agenteniterationen, die ein Agent durchführen kann, bevor er gezwungen wird, nur mit Text zu antworten. Dadurch können Benutzer, die die Kosten kontrollieren möchten, ein Limit für Agentenaktionen festlegen.
|
||||
|
||||
@@ -293,7 +307,7 @@ Das alte Feld `maxSteps` ist veraltet. Verwenden Sie stattdessen `steps`.
|
||||
|
||||
---
|
||||
|
||||
### Deaktivieren
|
||||
### Disable
|
||||
|
||||
Auf `true` setzen, um den Agenten zu deaktivieren.
|
||||
|
||||
@@ -349,7 +363,7 @@ Die Modell-ID in Ihrer OpenCode-Konfiguration verwendet das Format `provider/mod
|
||||
|
||||
---
|
||||
|
||||
### Werkzeuge
|
||||
### Tools
|
||||
|
||||
Steuern Sie mit der `tools`-Konfiguration, welche Tools in diesem Agent verfügbar sind. Sie können bestimmte Tools aktivieren oder deaktivieren, indem Sie sie auf `true` oder `false` setzen.
|
||||
|
||||
@@ -396,7 +410,7 @@ Sie können Platzhalter auch verwenden, um mehrere Werkzeuge gleichzeitig zu ste
|
||||
|
||||
---
|
||||
|
||||
### Berechtigungen
|
||||
### Permissions
|
||||
|
||||
Sie können Berechtigungen konfigurieren, um zu verwalten, welche Aktionen ein Agent ausführen kann. Derzeit können die Berechtigungen für die Tools `edit`, `bash` und `webfetch` wie folgt konfiguriert werden:
|
||||
|
||||
@@ -508,7 +522,7 @@ Da die letzte übereinstimmende Regel Vorrang hat, setzen Sie zuerst den Platzha
|
||||
|
||||
---
|
||||
|
||||
### Modus
|
||||
### Mode
|
||||
|
||||
Steuern Sie den Modus des Agenten mit der `mode`-Konfiguration. Mit der Option `mode` wird festgelegt, wie der Agent verwendet werden kann.
|
||||
|
||||
@@ -526,7 +540,7 @@ Die Option `mode` kann auf `primary`, `subagent` oder `all` gesetzt werden. Wenn
|
||||
|
||||
---
|
||||
|
||||
### Versteckt
|
||||
### Hidden
|
||||
|
||||
Verstecken Sie einen Subagenten im Autovervollständigungsmenü `@` mit `hidden: true`. Nützlich für interne Subagenten, die nur programmgesteuert von anderen Agenten über das Task-Tool aufgerufen werden sollten.
|
||||
|
||||
@@ -549,7 +563,7 @@ Gilt nur für `mode: subagent`-Agenten.
|
||||
|
||||
---
|
||||
|
||||
### Task-Berechtigungen
|
||||
### Aufgabenberechtigungen
|
||||
|
||||
Steuern Sie, welche Subagenten ein Agent über das Task-Tool mit `permission.task` aufrufen kann. Verwendet Glob-Muster für eine flexible Zuordnung.
|
||||
|
||||
@@ -582,11 +596,11 @@ Benutzer können jeden Subagenten immer direkt über das Autovervollständigungs
|
||||
|
||||
---
|
||||
|
||||
### Farbe
|
||||
### Color
|
||||
|
||||
Passen Sie das visuelle Erscheinungsbild des Agenten im UI mit der Option `color` an. Dies wirkt sich darauf aus, wie der Agent in der Benutzeroberfläche angezeigt wird.
|
||||
|
||||
Verwenden Sie eine gültige Hex-Farbe (z. B. `#FF5733`) oder Themenfarbe: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
|
||||
Verwenden Sie eine gültige Hex-Farbe (e.g., `#FF5733`) oder Themenfarbe: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -621,7 +635,7 @@ Die Werte reichen von 0.0 bis 1.0. Niedrigere Werte sind fokussierter, höhere W
|
||||
|
||||
---
|
||||
|
||||
### Zusätzliche Optionen
|
||||
### Additional
|
||||
|
||||
Alle anderen Optionen, die Sie in Ihrer Agentenkonfiguration angeben, werden als Modelloptionen **direkt** an den Anbieter weitergeleitet. Dadurch können Sie anbieterspezifische Funktionen und Parameter nutzen.
|
||||
|
||||
@@ -648,7 +662,7 @@ Führen Sie `opencode models` aus, um eine Liste der verfügbaren Modelle anzubi
|
||||
|
||||
---
|
||||
|
||||
## Agenten erstellen
|
||||
## Erstellen Sie Agenten
|
||||
|
||||
Mit dem folgenden Befehl können Sie neue Agenten erstellen:
|
||||
|
||||
@@ -678,12 +692,12 @@ Hier sind einige häufige Anwendungsfälle für verschiedene Agenten.
|
||||
|
||||
---
|
||||
|
||||
## Beispiele
|
||||
## Examples
|
||||
|
||||
Hier sind einige Beispielagenten, die für Sie nützlich sein könnten.
|
||||
|
||||
:::tip
|
||||
Haben Sie einen Agenten, den Sie gerne teilen möchten? [Reichen Sie einen PR ein](https://github.com/anomalyco/opencode).
|
||||
Haben Sie einen Agenten, den Sie gerne teilen möchten? [Submit a PR](https://github.com/anomalyco/opencode).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
@@ -27,7 +27,7 @@ Starten Sie die Terminalbenutzeroberfläche OpenCode.
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| ------------ | ---- | ---------------------------------------------------------------------- |
|
||||
@@ -76,7 +76,7 @@ opencode web --port 4096 --hostname 0.0.0.0
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| ----------- | ---- | ----------------------------------------- |
|
||||
@@ -185,7 +185,7 @@ Führen Sie den GitHub-Agenten aus. Dies wird normalerweise in GitHub-Aktionen v
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### Optionen
|
||||
##### Flags
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| --------- | --------------------------------------------------- |
|
||||
@@ -294,7 +294,7 @@ Sie können optional eine Anbieter-ID übergeben, um Modelle nach diesem Anbiete
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| ----------- | ------------------------------------------------------------------------------------- |
|
||||
@@ -317,7 +317,7 @@ Führen Sie OpenCode im nicht interaktiven Modus aus, indem Sie direkt eine Eing
|
||||
opencode run [message..]
|
||||
```
|
||||
|
||||
Dies ist nützlich für die Skripterstellung, die Automatisierung oder wenn Sie eine schnelle Antwort wünschen, ohne das vollständige TUI zu starten. Zum Beispiel:
|
||||
Dies ist nützlich für die Skripterstellung, die Automatisierung oder wenn Sie eine schnelle Antwort wünschen, ohne das vollständige TUI zu starten. Zum Beispiel.
|
||||
|
||||
```bash "opencode run"
|
||||
opencode run Explain the use of context in Go
|
||||
@@ -333,11 +333,11 @@ opencode serve
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| ------------ | ---- | --------------------------------------------------------------------------------------------------- |
|
||||
| `--command` | | Der auszuführende Befehl, Argumente als Nachricht verwenden |
|
||||
| `--command` | | Der auszuführende Befehl, Nachricht für Argumente verwenden |
|
||||
| `--continue` | `-c` | Setzen Sie die letzte Sitzung fort |
|
||||
| `--session` | `-s` | Session-ID zum Fortfahren |
|
||||
| `--fork` | | Sitzung beim Fortsetzen verzweigen (mit `--continue` oder `--session` verwenden) |
|
||||
@@ -362,7 +362,7 @@ opencode serve
|
||||
|
||||
Dadurch wird ein HTTP-Server gestartet, der API-Zugriff auf OpenCode-Funktionalität ohne die TUI-Schnittstelle bietet. Legen Sie `OPENCODE_SERVER_PASSWORD` fest, um die HTTP-Basisauthentifizierung zu aktivieren (Benutzername ist standardmäßig `opencode`).
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| ------------ | ----------------------------------------------- |
|
||||
@@ -391,7 +391,7 @@ Listen Sie alle OpenCode-Sitzungen auf.
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### Optionen
|
||||
##### Flags
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| ------------- | ---- | ---------------------------------------- |
|
||||
@@ -408,7 +408,7 @@ Zeigen Sie Token-Nutzungs- und Kostenstatistiken für Ihre OpenCode-Sitzungen an
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| ----------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
||||
@@ -458,7 +458,7 @@ opencode web
|
||||
|
||||
Dadurch wird ein HTTP-Server gestartet und ein Webbrowser geöffnet, um über eine Webschnittstelle auf OpenCode zuzugreifen. Legen Sie `OPENCODE_SERVER_PASSWORD` fest, um die HTTP-Basisauthentifizierung zu aktivieren (Benutzername ist standardmäßig `opencode`).
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| ------------ | ----------------------------------------------- |
|
||||
@@ -479,7 +479,7 @@ opencode acp
|
||||
|
||||
Dieser Befehl startet einen ACP-Server, der über stdin/stdout unter Verwendung von nd-JSON kommuniziert.
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| ------------ | -------------------- |
|
||||
@@ -497,7 +497,7 @@ Deinstallieren Sie OpenCode und entfernen Sie alle zugehörigen Dateien.
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| --------------- | ---- | --------------------------------------------------- |
|
||||
@@ -516,7 +516,7 @@ Aktualisiert OpenCode auf die neueste Version oder eine bestimmte Version.
|
||||
opencode upgrade [target]
|
||||
```
|
||||
|
||||
Um auf die neueste Version zu aktualisieren:
|
||||
Um auf die neueste Version zu aktualisieren.
|
||||
|
||||
```bash
|
||||
opencode upgrade
|
||||
@@ -528,11 +528,11 @@ Um auf eine bestimmte Version zu aktualisieren.
|
||||
opencode upgrade v0.1.48
|
||||
```
|
||||
|
||||
#### Optionen
|
||||
#### Flags
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| ---------- | ---- | ------------------------------------------------------------------- |
|
||||
| `--method` | `-m` | Die zu verwendende Installationsmethode; curl, npm, pnpm, bun, brew |
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| ---------- | ---- | --------------------------------------------------------------- |
|
||||
| `--method` | `-m` | Die verwendete Installationsmethode; curl, npm, pnpm, bun, brew |
|
||||
|
||||
---
|
||||
|
||||
@@ -582,7 +582,7 @@ OpenCode kann mithilfe von Umgebungsvariablen konfiguriert werden.
|
||||
|
||||
---
|
||||
|
||||
### Experimentell
|
||||
### Experimental
|
||||
|
||||
Diese Umgebungsvariablen ermöglichen experimentelle Funktionen, die sich ändern oder entfernt werden können.
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Mit benutzerdefinierten Befehlen können Sie eine Eingabeaufforderung angeben, d
|
||||
/my-command
|
||||
```
|
||||
|
||||
Benutzerdefinierte Befehle gibt es zusätzlich zu den integrierten Befehlen wie `/init`, `/undo`, `/redo`, `/share`, `/help`. [Mehr erfahren](/docs/tui#commands).
|
||||
Benutzerdefinierte Befehle gibt es zusätzlich zu den integrierten Befehlen wie `/init`, `/undo`, `/redo`, `/share`, `/help`. [Learn more](/docs/tui#commands).
|
||||
|
||||
---
|
||||
|
||||
@@ -40,7 +40,7 @@ Verwenden Sie den Befehl, indem Sie `/` folgen vom Befehlsnamen eingeben.
|
||||
|
||||
---
|
||||
|
||||
## Konfiguration
|
||||
## Konfigurieren
|
||||
|
||||
Sie können benutzerdefinierte Befehle über die OpenCode-Konfiguration hinzufügen oder indem Sie Markdown-Dateien im Verzeichnis `commands/` erstellen.
|
||||
|
||||
@@ -108,7 +108,7 @@ Die Eingabeaufforderungen für die benutzerdefinierten Befehle unterstützen meh
|
||||
|
||||
---
|
||||
|
||||
### Argumente
|
||||
### Arguments
|
||||
|
||||
Übergeben Sie Argumente an Befehle mithilfe des Platzhalters `$ARGUMENTS`.
|
||||
|
||||
@@ -212,7 +212,7 @@ Der Dateiinhalt wird automatisch in die Eingabeaufforderung einbezogen.
|
||||
|
||||
---
|
||||
|
||||
## Optionen
|
||||
## Options
|
||||
|
||||
Schauen wir uns die Konfigurationsmöglichkeiten im Detail an.
|
||||
|
||||
@@ -236,7 +236,7 @@ Dies ist eine **erforderliche** Konfigurationsoption.
|
||||
|
||||
---
|
||||
|
||||
### Description
|
||||
### Beschreibung
|
||||
|
||||
Verwenden Sie die Option `description`, um eine kurze Beschreibung der Funktion des Befehls bereitzustellen.
|
||||
|
||||
@@ -294,7 +294,7 @@ Dies ist eine **optionale** Konfigurationsoption.
|
||||
|
||||
---
|
||||
|
||||
### Model
|
||||
### Modell
|
||||
|
||||
Verwenden Sie die `model`-Konfiguration, um das Standardmodell für diesen Befehl zu überschreiben.
|
||||
|
||||
@@ -312,9 +312,9 @@ Dies ist eine **optionale** Konfigurationsoption.
|
||||
|
||||
---
|
||||
|
||||
## Integriert
|
||||
## Eingebaut
|
||||
|
||||
OpenCode enthält mehrere integrierte Befehle wie `/init`, `/undo`, `/redo`, `/share`, `/help`; [mehr erfahren](/docs/tui#commands).
|
||||
OpenCode enthält mehrere integrierte Befehle wie `/init`, `/undo`, `/redo`, `/share`, `/help`; [learn more](/docs/tui#commands).
|
||||
|
||||
:::note
|
||||
Benutzerdefinierte Befehle können integrierte Befehle überschreiben.
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Konfiguration
|
||||
title: Konfig
|
||||
description: Verwenden Sie die Konfiguration OpenCode JSON.
|
||||
---
|
||||
|
||||
@@ -23,7 +23,7 @@ OpenCode unterstützt die Formate **JSON** und **JSONC** (JSON mit Kommentaren).
|
||||
|
||||
---
|
||||
|
||||
## Speicherorte
|
||||
## Locations
|
||||
|
||||
Sie können Ihre Konfiguration an verschiedenen Orten platzieren und sie haben eine
|
||||
andere Rangfolge.
|
||||
@@ -52,7 +52,7 @@ Konfigurationsquellen werden in dieser Reihenfolge geladen (spätere Quellen üb
|
||||
Dies bedeutet, dass Projektkonfigurationen globale Standardeinstellungen überschreiben können und globale Konfigurationen Remote-Organisationsstandards überschreiben können.
|
||||
|
||||
:::note
|
||||
Die Verzeichnisse `.opencode` und `~/.config/opencode` verwenden **Pluralnamen** für Unterverzeichnisse: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` und `themes/`. Aus Gründen der Abwärtskompatibilität werden auch einzelne Namen (z. B. `agent/`) unterstützt.
|
||||
Die Verzeichnisse `.opencode` und `~/.config/opencode` verwenden **Pluralnamen** für Unterverzeichnisse: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` und `themes/`. Aus Gründen der Abwärtskompatibilität werden auch einzelne Namen (e.g., `agent/`) unterstützt.
|
||||
:::
|
||||
|
||||
---
|
||||
@@ -175,7 +175,7 @@ Verfügbare Optionen:
|
||||
- `scroll_speed` – Benutzerdefinierter Scrollgeschwindigkeitsmultiplikator (Standard: `3`, Minimum: `1`). Wird ignoriert, wenn `scroll_acceleration.enabled` gleich `true` ist.
|
||||
- `diff_style` – Steuern Sie das Diff-Rendering. `"auto"` passt sich der Terminalbreite an, `"stacked"` zeigt immer eine einzelne Spalte an.
|
||||
|
||||
[Erfahren Sie hier mehr über die Verwendung der TUI](/docs/tui).
|
||||
[Learn more about using the TUI here](/docs/tui).
|
||||
|
||||
---
|
||||
|
||||
@@ -204,11 +204,11 @@ Verfügbare Optionen:
|
||||
- `mdnsDomain` – Benutzerdefinierter Domänenname für den mDNS-Dienst. Standardmäßig ist `opencode.local`. Nützlich für die Ausführung mehrerer Instanzen im selben Netzwerk.
|
||||
- `cors` – Zusätzliche Ursprünge, um CORS zu ermöglichen, wenn der HTTP-Server von einem browserbasierten Client aus verwendet wird. Die Werte müssen vollständige Ursprünge haben (Schema + Host + optionaler Port), z. B. `https://app.example.com`.
|
||||
|
||||
[Erfahren Sie hier mehr über den Server](/docs/server).
|
||||
[Learn more about the server here](/docs/server).
|
||||
|
||||
---
|
||||
|
||||
### Werkzeuge
|
||||
### Tools
|
||||
|
||||
Sie können die Tools, die ein LLM verwenden kann, über die Option `tools` verwalten.
|
||||
|
||||
@@ -222,11 +222,11 @@ Sie können die Tools, die ein LLM verwenden kann, über die Option `tools` verw
|
||||
}
|
||||
```
|
||||
|
||||
[Erfahren Sie hier mehr über Tools](/docs/tools).
|
||||
[Learn more about tools here](/docs/tools).
|
||||
|
||||
---
|
||||
|
||||
### Modelle
|
||||
### Models
|
||||
|
||||
Sie können die Anbieter und Modelle, die Sie in Ihrer OpenCode-Konfiguration verwenden möchten, über die Optionen `provider`, `model` und `small_model` konfigurieren.
|
||||
|
||||
@@ -260,7 +260,7 @@ Zu den Anbieteroptionen können `timeout` und `setCacheKey` gehören:
|
||||
- `timeout` – Anforderungszeitlimit in Millisekunden (Standard: 300000). Zum Deaktivieren auf `false` setzen.
|
||||
- `setCacheKey` – Stellen Sie sicher, dass immer ein Cache-Schlüssel für den angegebenen Anbieter festgelegt ist.
|
||||
|
||||
Sie können auch [lokale Modelle](/docs/models#local) konfigurieren. [Mehr erfahren](/docs/models).
|
||||
Sie können auch [local models](/docs/models#local) konfigurieren. [Learn more](/docs/models).
|
||||
|
||||
---
|
||||
|
||||
@@ -292,14 +292,14 @@ Amazon Bedrock unterstützt AWS-spezifische Konfigurationen:
|
||||
- `endpoint` – Benutzerdefinierter Endpunkt URL für VPC-Endpunkte. Dies ist ein Alias für die generische Option `baseURL` unter Verwendung der AWS-spezifischen Terminologie. Wenn beide angegeben sind, hat `endpoint` Vorrang.
|
||||
|
||||
:::note
|
||||
Inhabertoken (`AWS_BEARER_TOKEN_BEDROCK` oder `/connect`) haben Vorrang vor der profilbasierten Authentifizierung. Weitere Informationen finden Sie unter [Authentifizierungs-Rangfolge](/docs/providers#authentication-precedence).
|
||||
Inhabertoken (`AWS_BEARER_TOKEN_BEDROCK` oder `/connect`) haben Vorrang vor der profilbasierten Authentifizierung. Weitere Informationen finden Sie unter [authentication precedence](/docs/providers#authentication-precedence).
|
||||
:::
|
||||
|
||||
[Erfahren Sie mehr über die Amazon Bedrock-Konfiguration](/docs/providers#amazon-bedrock).
|
||||
[Learn more about Amazon Bedrock configuration](/docs/providers#amazon-bedrock).
|
||||
|
||||
---
|
||||
|
||||
### Themen
|
||||
### Themes
|
||||
|
||||
Sie können das Thema, das Sie in Ihrer OpenCode-Konfiguration verwenden möchten, über die Option `theme` konfigurieren.
|
||||
|
||||
@@ -310,11 +310,11 @@ Sie können das Thema, das Sie in Ihrer OpenCode-Konfiguration verwenden möchte
|
||||
}
|
||||
```
|
||||
|
||||
[Mehr erfahren](/docs/themes).
|
||||
[Learn more here](/docs/themes).
|
||||
|
||||
---
|
||||
|
||||
### Agenten
|
||||
### Agents
|
||||
|
||||
Über die Option `agent` können Sie spezielle Agenten für bestimmte Aufgaben konfigurieren.
|
||||
|
||||
@@ -336,7 +336,7 @@ Sie können das Thema, das Sie in Ihrer OpenCode-Konfiguration verwenden möchte
|
||||
}
|
||||
```
|
||||
|
||||
Sie können Agenten auch mithilfe von Markdown-Dateien in `~/.config/opencode/agents/` oder `.opencode/agents/` definieren. [Mehr erfahren](/docs/agents).
|
||||
Sie können Agenten auch mithilfe von Markdown-Dateien in `~/.config/opencode/agents/` oder `.opencode/agents/` definieren. [Learn more here](/docs/agents).
|
||||
|
||||
---
|
||||
|
||||
@@ -357,7 +357,7 @@ Diese Einstellung gilt für alle Schnittstellen: TUI, CLI (`opencode run`), Desk
|
||||
|
||||
---
|
||||
|
||||
### Teilen
|
||||
### Sharing
|
||||
|
||||
Sie können die Funktion [share](/docs/share) über die Option `share` konfigurieren.
|
||||
|
||||
@@ -400,11 +400,11 @@ Sie können benutzerdefinierte Befehle für sich wiederholende Aufgaben über di
|
||||
}
|
||||
```
|
||||
|
||||
Sie können Befehle auch mithilfe von Markdown-Dateien in `~/.config/opencode/commands/` oder `.opencode/commands/` definieren. [Mehr erfahren](/docs/commands).
|
||||
Sie können Befehle auch mithilfe von Markdown-Dateien in `~/.config/opencode/commands/` oder `.opencode/commands/` definieren. [Learn more here](/docs/commands).
|
||||
|
||||
---
|
||||
|
||||
### Tastenkombinationen
|
||||
### Keybinds
|
||||
|
||||
Sie können Ihre Tastenkombinationen über die Option `keybinds` anpassen.
|
||||
|
||||
@@ -415,11 +415,11 @@ Sie können Ihre Tastenkombinationen über die Option `keybinds` anpassen.
|
||||
}
|
||||
```
|
||||
|
||||
[Mehr erfahren](/docs/keybinds).
|
||||
[Learn more here](/docs/keybinds).
|
||||
|
||||
---
|
||||
|
||||
### Automatisches Update
|
||||
### Autoupdate
|
||||
|
||||
OpenCode lädt beim Start automatisch alle neuen Updates herunter. Sie können dies mit der Option `autoupdate` deaktivieren.
|
||||
|
||||
@@ -435,7 +435,7 @@ Beachten Sie, dass dies nur funktioniert, wenn es nicht mit einem Paketmanager w
|
||||
|
||||
---
|
||||
|
||||
### Formatierer
|
||||
### Formatters
|
||||
|
||||
Sie können Codeformatierer über die Option `formatter` konfigurieren.
|
||||
|
||||
@@ -457,11 +457,11 @@ Sie können Codeformatierer über die Option `formatter` konfigurieren.
|
||||
}
|
||||
```
|
||||
|
||||
[Erfahren Sie hier mehr über Formatierer](/docs/formatters).
|
||||
[Learn more about formatters here](/docs/formatters).
|
||||
|
||||
---
|
||||
|
||||
### Berechtigungen
|
||||
### Permissions
|
||||
|
||||
OpenCode erlaubt standardmäßig alle Vorgänge, ohne dass eine ausdrückliche Genehmigung erforderlich ist. Sie können dies mit der Option `permission` ändern.
|
||||
|
||||
@@ -477,11 +477,11 @@ Um beispielsweise sicherzustellen, dass die Tools `edit` und `bash` eine Benutze
|
||||
}
|
||||
```
|
||||
|
||||
[Erfahren Sie hier mehr über Berechtigungen](/docs/permissions).
|
||||
[Learn more about permissions here](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
### Komprimierung
|
||||
### Compaction
|
||||
|
||||
Sie können das Verhalten der Kontextkomprimierung über die Option `compaction` steuern.
|
||||
|
||||
@@ -500,7 +500,7 @@ Sie können das Verhalten der Kontextkomprimierung über die Option `compaction`
|
||||
|
||||
---
|
||||
|
||||
### Dateiüberwachung
|
||||
### Watcher
|
||||
|
||||
Sie können Datei-Watcher-Ignoriermuster über die Option `watcher` konfigurieren.
|
||||
|
||||
@@ -517,7 +517,7 @@ Muster folgen der Glob-Syntax. Verwenden Sie diese Option, um verrauschte Verzei
|
||||
|
||||
---
|
||||
|
||||
### MCP
|
||||
### MCP Server
|
||||
|
||||
Sie können den MCP-Server, den Sie verwenden möchten, über die Option `mcp` konfigurieren.
|
||||
|
||||
@@ -528,7 +528,7 @@ Sie können den MCP-Server, den Sie verwenden möchten, über die Option `mcp` k
|
||||
}
|
||||
```
|
||||
|
||||
[Mehr erfahren](/docs/mcp-servers).
|
||||
[Learn more here](/docs/mcp-servers).
|
||||
|
||||
---
|
||||
|
||||
@@ -545,11 +545,11 @@ Platzieren Sie Ihre Plugin-Dateien in `.opencode/plugins/` oder `~/.config/openc
|
||||
}
|
||||
```
|
||||
|
||||
[Mehr erfahren](/docs/plugins).
|
||||
[Learn more here](/docs/plugins).
|
||||
|
||||
---
|
||||
|
||||
### Anweisungen
|
||||
### Instructions
|
||||
|
||||
Sie können die Anweisungen für das von Ihnen verwendete Modell über die Option `instructions` konfigurieren.
|
||||
|
||||
@@ -560,7 +560,8 @@ Sie können die Anweisungen für das von Ihnen verwendete Modell über die Optio
|
||||
}
|
||||
```
|
||||
|
||||
Dies erfordert eine Reihe von Pfaden und Glob-Mustern zu Anweisungsdateien. [Erfahren Sie hier mehr über Regeln](/docs/rules).
|
||||
Dies erfordert eine Reihe von Pfaden und Glob-Mustern zu Anweisungsdateien. [Erfahren Sie mehr
|
||||
über Regeln hier](/docs/rules).
|
||||
|
||||
---
|
||||
|
||||
@@ -608,7 +609,7 @@ Wenn ein Anbieter sowohl in `enabled_providers` als auch in `disabled_providers`
|
||||
|
||||
---
|
||||
|
||||
### Experimentell
|
||||
### Experimental
|
||||
|
||||
Der Schlüssel `experimental` enthält Optionen, die sich in der aktiven Entwicklung befinden.
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Benutzerdefinierte Tools
|
||||
title: Benutzerdefinierte Werkzeuge
|
||||
description: Erstellen Sie Tools, die der LLM in OpenCode aufrufen kann.
|
||||
---
|
||||
|
||||
@@ -7,13 +7,13 @@ Benutzerdefinierte Tools sind von Ihnen erstellte Funktionen, die der LLM währe
|
||||
|
||||
---
|
||||
|
||||
## Ein Tool erstellen
|
||||
## Ein Werkzeug erstellen
|
||||
|
||||
Tools werden als **TypeScript**- oder **JavaScript**-Dateien definiert. Die Tooldefinition kann jedoch Skripte aufrufen, die in **jeder Sprache** geschrieben sind – TypeScript oder JavaScript wird nur für die Tooldefinition selbst verwendet.
|
||||
Werkzeuge werden als **TypeScript**- oder **JavaScript**-Dateien definiert. Die Werkzeugdefinition kann jedoch Skripte aufrufen, die in **jeder Sprache** geschrieben sind – TypeScript oder JavaScript wird nur für die Werkzeugdefinition selbst verwendet.
|
||||
|
||||
---
|
||||
|
||||
### Speicherort
|
||||
### Location
|
||||
|
||||
Sie können wie folgt definiert werden:
|
||||
|
||||
@@ -22,7 +22,7 @@ Sie können wie folgt definiert werden:
|
||||
|
||||
---
|
||||
|
||||
### Struktur
|
||||
### Structure
|
||||
|
||||
Der einfachste Weg, Tools zu erstellen, ist die Verwendung des `tool()`-Helfers, der Typsicherheit und Validierung bietet.
|
||||
|
||||
@@ -79,7 +79,7 @@ Dadurch werden zwei Tools erstellt: `math_add` und `math_multiply`.
|
||||
|
||||
---
|
||||
|
||||
### Argumente
|
||||
### Arguments
|
||||
|
||||
Sie können `tool.schema` verwenden, was nur [Zod](https://zod.dev) ist, um Argumenttypen zu definieren.
|
||||
|
||||
@@ -108,7 +108,7 @@ export default {
|
||||
|
||||
---
|
||||
|
||||
### Kontext
|
||||
### Context
|
||||
|
||||
Tools erhalten Kontext zur aktuellen Sitzung:
|
||||
|
||||
@@ -131,9 +131,9 @@ Verwenden Sie `context.worktree` für das Stammverzeichnis des Git-Arbeitsbaums.
|
||||
|
||||
---
|
||||
|
||||
## Beispiele
|
||||
## Examples
|
||||
|
||||
### Ein Tool in Python schreiben
|
||||
### Schreiben Sie ein Tool in Python
|
||||
|
||||
Sie können Ihre Tools in jeder gewünschten Sprache schreiben. Hier ist ein Beispiel, das mit Python zwei Zahlen addiert.
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user