Compare commits

..

4 Commits

Author SHA1 Message Date
Aiden Cline
496c43e635 Merge branch 'dev' into models-endpoint 2026-02-11 18:29:50 -06:00
Aiden Cline
1755e23e49 wip 2026-01-30 00:59:15 -06:00
Aiden Cline
66d1418b27 wip 2026-01-30 00:18:20 -06:00
Liyang Zhu
51d3f98f98 feat(opencode): add auto model detection for OpenAI-compatible providers (#8359) 2026-01-29 18:09:19 -06:00
518 changed files with 11456 additions and 13742 deletions

1
.github/VOUCHED.td vendored
View File

@@ -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

View 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"
}

View 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"}

View File

@@ -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,

View File

@@ -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,
}

View File

@@ -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" })

View File

@@ -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")
})
})

View File

@@ -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()
}
}

View File

@@ -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

View File

@@ -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

View 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)
}
}

View File

@@ -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>

View File

@@ -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]

View File

@@ -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 }]))

View File

@@ -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: {

View File

@@ -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({

View File

@@ -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))

View File

@@ -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)
})
})

View File

@@ -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
})

View File

@@ -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" },

View File

@@ -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]: {

View File

@@ -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`

View File

@@ -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"
```

View File

@@ -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"

View File

@@ -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,
},

View File

@@ -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>
```

View File

@@ -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
```

View File

@@ -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
```

View File

@@ -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
```

View File

@@ -366,7 +366,7 @@ OPENCODE_ENABLE_EXA=1 opencode
---
### أنماط التجاهل
### Ignore patterns
لتضمين ملفات يتم تجاهلها عادة، أنشئ ملف `.ignore` في جذر المشروع. يمكن لهذا الملف السماح صراحة بمسارات محددة.

View File

@@ -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"
```

View File

@@ -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
```

View File

@@ -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:

View File

@@ -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.

View File

@@ -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 |

View File

@@ -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.
:::

View File

@@ -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:

View File

@@ -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:

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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.

View File

@@ -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.
![OpenCode TUI sa opencode temom](../../../assets/lander/screenshot.png)
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).

View File

@@ -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:

View File

@@ -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.

View File

@@ -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.

View File

@@ -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).

View File

@@ -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.

View File

@@ -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.

View File

@@ -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:

View File

@@ -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:

View File

@@ -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`.

View File

@@ -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:

View File

@@ -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

View File

@@ -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 (1200)
- `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 (1200)
- `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 |
| ------ | ------- | ------------------------- | --------------------------- |

View File

@@ -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:

View File

@@ -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:

View File

@@ -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:

View File

@@ -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.

View File

@@ -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`.

View File

@@ -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.

View File

@@ -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:

View File

@@ -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

View File

@@ -89,7 +89,7 @@ Nasim modelima mozete pristupiti i preko sljedecih API endpointa.
---
### Modeli
### Models
Pun spisak dostupnih modela i metapodataka mozete preuzeti na:

View File

@@ -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:

View File

@@ -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"
---

View File

@@ -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.

View File

@@ -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).

View File

@@ -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:

View File

@@ -68,7 +68,7 @@ Du kan også tjekke [awesome-opencode](https://github.com/awesome-opencode/aweso
---
## Agenter
## Agent
| Navn | Beskrivelse |
| ----------------------------------------------------------------- | ------------------------------------------------------------------------- |

View File

@@ -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.

View File

@@ -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.

View File

@@ -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:

View File

@@ -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.

View File

@@ -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".

View File

@@ -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.

View File

@@ -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:

View File

@@ -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:

View File

@@ -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.

View File

@@ -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.

View File

@@ -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

View File

@@ -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:

View File

@@ -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 |
| ------------------- | ------------------------------ | ------------------------------ |

View File

@@ -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 (1200)
- `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 (1200)
- `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 |

View File

@@ -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
---
## Opv 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:

View File

@@ -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:

View File

@@ -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.

View File

@@ -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.

View File

@@ -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 APIndringer.
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 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`.

View File

@@ -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 **
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 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 **
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 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

View File

@@ -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.
:::

View File

@@ -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å.

View File

@@ -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:

View File

@@ -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).
:::
---

View File

@@ -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.

View File

@@ -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.

View File

@@ -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.

View File

@@ -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