mirror of
https://github.com/anomalyco/opencode.git
synced 2026-02-11 03:14:29 +00:00
Compare commits
1 Commits
production
...
opencode/s
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
a3204fce7e |
@@ -1,883 +0,0 @@
|
||||
---
|
||||
description: Translate content for a specified locale while preserving technical terms
|
||||
mode: subagent
|
||||
model: opencode/gemini-3-pro
|
||||
---
|
||||
|
||||
You are a professional translator and localization specialist.
|
||||
|
||||
Translate the user's content into the requested target locale (language + region, e.g. fr-FR, de-DE).
|
||||
|
||||
Requirements:
|
||||
|
||||
- Preserve meaning, intent, tone, and formatting (including Markdown/MDX structure).
|
||||
- Preserve all technical terms and artifacts exactly: product/company names, API names, identifiers, code, commands/flags, file paths, URLs, versions, error messages, config keys/values, and anything inside inline code or code blocks.
|
||||
- Also preserve every term listed in the Do-Not-Translate glossary below.
|
||||
- Do not modify fenced code blocks.
|
||||
- Output ONLY the translation (no commentary).
|
||||
|
||||
If the target locale is missing, ask the user to provide it.
|
||||
|
||||
---
|
||||
|
||||
# Do-Not-Translate Terms (OpenCode Docs)
|
||||
|
||||
Generated from: `packages/web/src/content/docs/*.mdx` (default English docs)
|
||||
Generated on: 2026-02-10
|
||||
|
||||
Use this as a translation QA checklist / glossary. Preserve listed terms exactly (spelling, casing, punctuation).
|
||||
|
||||
General rules (verbatim, even if not listed below):
|
||||
|
||||
- Anything inside inline code (single backticks) or fenced code blocks (triple backticks)
|
||||
- MDX/JS code in docs: `import ... from "..."`, component tags, identifiers
|
||||
- CLI commands, flags, config keys/values, file paths, URLs/domains, and env vars
|
||||
|
||||
## Proper nouns and product names
|
||||
|
||||
Additional (not reliably captured via link text):
|
||||
|
||||
```text
|
||||
Astro
|
||||
Bun
|
||||
Chocolatey
|
||||
Cursor
|
||||
Docker
|
||||
Git
|
||||
GitHub Actions
|
||||
GitLab CI
|
||||
GNOME Terminal
|
||||
Homebrew
|
||||
Mise
|
||||
Neovim
|
||||
Node.js
|
||||
npm
|
||||
Obsidian
|
||||
opencode
|
||||
opencode-ai
|
||||
Paru
|
||||
pnpm
|
||||
ripgrep
|
||||
Scoop
|
||||
SST
|
||||
Starlight
|
||||
Visual Studio Code
|
||||
VS Code
|
||||
VSCodium
|
||||
Windsurf
|
||||
Windows Terminal
|
||||
Yarn
|
||||
Zellij
|
||||
Zed
|
||||
anomalyco
|
||||
```
|
||||
|
||||
Extracted from link labels in the English docs (review and prune as desired):
|
||||
|
||||
```text
|
||||
@openspoon/subtask2
|
||||
302.AI console
|
||||
ACP progress report
|
||||
Agent Client Protocol
|
||||
Agent Skills
|
||||
Agentic
|
||||
AGENTS.md
|
||||
AI SDK
|
||||
Alacritty
|
||||
Anthropic
|
||||
Anthropic's Data Policies
|
||||
Atom One
|
||||
Avante.nvim
|
||||
Ayu
|
||||
Azure AI Foundry
|
||||
Azure portal
|
||||
Baseten
|
||||
built-in GITHUB_TOKEN
|
||||
Bun.$
|
||||
Catppuccin
|
||||
Cerebras console
|
||||
ChatGPT Plus or Pro
|
||||
Cloudflare dashboard
|
||||
CodeCompanion.nvim
|
||||
CodeNomad
|
||||
Configuring Adapters: Environment Variables
|
||||
Context7 MCP server
|
||||
Cortecs console
|
||||
Deep Infra dashboard
|
||||
DeepSeek console
|
||||
Duo Agent Platform
|
||||
Everforest
|
||||
Fireworks AI console
|
||||
Firmware dashboard
|
||||
Ghostty
|
||||
GitLab CLI agents docs
|
||||
GitLab docs
|
||||
GitLab User Settings > Access Tokens
|
||||
Granular Rules (Object Syntax)
|
||||
Grep by Vercel
|
||||
Groq console
|
||||
Gruvbox
|
||||
Helicone
|
||||
Helicone documentation
|
||||
Helicone Header Directory
|
||||
Helicone's Model Directory
|
||||
Hugging Face Inference Providers
|
||||
Hugging Face settings
|
||||
install WSL
|
||||
IO.NET console
|
||||
JetBrains IDE
|
||||
Kanagawa
|
||||
Kitty
|
||||
MiniMax API Console
|
||||
Models.dev
|
||||
Moonshot AI console
|
||||
Nebius Token Factory console
|
||||
Nord
|
||||
OAuth
|
||||
Ollama integration docs
|
||||
OpenAI's Data Policies
|
||||
OpenChamber
|
||||
OpenCode
|
||||
OpenCode config
|
||||
OpenCode Config
|
||||
OpenCode TUI with the opencode theme
|
||||
OpenCode Web - Active Session
|
||||
OpenCode Web - New Session
|
||||
OpenCode Web - See Servers
|
||||
OpenCode Zen
|
||||
OpenCode-Obsidian
|
||||
OpenRouter dashboard
|
||||
OpenWork
|
||||
OVHcloud panel
|
||||
Pro+ subscription
|
||||
SAP BTP Cockpit
|
||||
Scaleway Console IAM settings
|
||||
Scaleway Generative APIs
|
||||
SDK documentation
|
||||
Sentry MCP server
|
||||
shell API
|
||||
Together AI console
|
||||
Tokyonight
|
||||
Unified Billing
|
||||
Venice AI console
|
||||
Vercel dashboard
|
||||
WezTerm
|
||||
Windows Subsystem for Linux (WSL)
|
||||
WSL
|
||||
WSL (Windows Subsystem for Linux)
|
||||
WSL extension
|
||||
xAI console
|
||||
Z.AI API console
|
||||
Zed
|
||||
ZenMux dashboard
|
||||
Zod
|
||||
```
|
||||
|
||||
## Acronyms and initialisms
|
||||
|
||||
```text
|
||||
ACP
|
||||
AGENTS
|
||||
AI
|
||||
AI21
|
||||
ANSI
|
||||
API
|
||||
AST
|
||||
AWS
|
||||
BTP
|
||||
CD
|
||||
CDN
|
||||
CI
|
||||
CLI
|
||||
CMD
|
||||
CORS
|
||||
DEBUG
|
||||
EKS
|
||||
ERROR
|
||||
FAQ
|
||||
GLM
|
||||
GNOME
|
||||
GPT
|
||||
HTML
|
||||
HTTP
|
||||
HTTPS
|
||||
IAM
|
||||
ID
|
||||
IDE
|
||||
INFO
|
||||
IO
|
||||
IP
|
||||
IRSA
|
||||
JS
|
||||
JSON
|
||||
JSONC
|
||||
K2
|
||||
LLM
|
||||
LM
|
||||
LSP
|
||||
M2
|
||||
MCP
|
||||
MR
|
||||
NET
|
||||
NPM
|
||||
NTLM
|
||||
OIDC
|
||||
OS
|
||||
PAT
|
||||
PATH
|
||||
PHP
|
||||
PR
|
||||
PTY
|
||||
README
|
||||
RFC
|
||||
RPC
|
||||
SAP
|
||||
SDK
|
||||
SKILL
|
||||
SSE
|
||||
SSO
|
||||
TS
|
||||
TTY
|
||||
TUI
|
||||
UI
|
||||
URL
|
||||
US
|
||||
UX
|
||||
VCS
|
||||
VPC
|
||||
VPN
|
||||
VS
|
||||
WARN
|
||||
WSL
|
||||
X11
|
||||
YAML
|
||||
```
|
||||
|
||||
## Code identifiers used in prose (CamelCase, mixedCase)
|
||||
|
||||
```text
|
||||
apiKey
|
||||
AppleScript
|
||||
AssistantMessage
|
||||
baseURL
|
||||
BurntSushi
|
||||
ChatGPT
|
||||
ClangFormat
|
||||
CodeCompanion
|
||||
CodeNomad
|
||||
DeepSeek
|
||||
DefaultV2
|
||||
FileContent
|
||||
FileDiff
|
||||
FileNode
|
||||
fineGrained
|
||||
FormatterStatus
|
||||
GitHub
|
||||
GitLab
|
||||
iTerm2
|
||||
JavaScript
|
||||
JetBrains
|
||||
macOS
|
||||
mDNS
|
||||
MiniMax
|
||||
NeuralNomadsAI
|
||||
NickvanDyke
|
||||
NoeFabris
|
||||
OpenAI
|
||||
OpenAPI
|
||||
OpenChamber
|
||||
OpenCode
|
||||
OpenRouter
|
||||
OpenTUI
|
||||
OpenWork
|
||||
ownUserPermissions
|
||||
PowerShell
|
||||
ProviderAuthAuthorization
|
||||
ProviderAuthMethod
|
||||
ProviderInitError
|
||||
SessionStatus
|
||||
TabItem
|
||||
tokenType
|
||||
ToolIDs
|
||||
ToolList
|
||||
TypeScript
|
||||
typesUrl
|
||||
UserMessage
|
||||
VcsInfo
|
||||
WebView2
|
||||
WezTerm
|
||||
xAI
|
||||
ZenMux
|
||||
```
|
||||
|
||||
## OpenCode CLI commands (as shown in docs)
|
||||
|
||||
```text
|
||||
opencode
|
||||
opencode [project]
|
||||
opencode /path/to/project
|
||||
opencode acp
|
||||
opencode agent [command]
|
||||
opencode agent create
|
||||
opencode agent list
|
||||
opencode attach [url]
|
||||
opencode attach http://10.20.30.40:4096
|
||||
opencode attach http://localhost:4096
|
||||
opencode auth [command]
|
||||
opencode auth list
|
||||
opencode auth login
|
||||
opencode auth logout
|
||||
opencode auth ls
|
||||
opencode export [sessionID]
|
||||
opencode github [command]
|
||||
opencode github install
|
||||
opencode github run
|
||||
opencode import <file>
|
||||
opencode import https://opncd.ai/s/abc123
|
||||
opencode import session.json
|
||||
opencode mcp [command]
|
||||
opencode mcp add
|
||||
opencode mcp auth [name]
|
||||
opencode mcp auth list
|
||||
opencode mcp auth ls
|
||||
opencode mcp auth my-oauth-server
|
||||
opencode mcp auth sentry
|
||||
opencode mcp debug <name>
|
||||
opencode mcp debug my-oauth-server
|
||||
opencode mcp list
|
||||
opencode mcp logout [name]
|
||||
opencode mcp logout my-oauth-server
|
||||
opencode mcp ls
|
||||
opencode models --refresh
|
||||
opencode models [provider]
|
||||
opencode models anthropic
|
||||
opencode run [message..]
|
||||
opencode run Explain the use of context in Go
|
||||
opencode serve
|
||||
opencode serve --cors http://localhost:5173 --cors https://app.example.com
|
||||
opencode serve --hostname 0.0.0.0 --port 4096
|
||||
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
|
||||
opencode session [command]
|
||||
opencode session list
|
||||
opencode stats
|
||||
opencode uninstall
|
||||
opencode upgrade
|
||||
opencode upgrade [target]
|
||||
opencode upgrade v0.1.48
|
||||
opencode web
|
||||
opencode web --cors https://example.com
|
||||
opencode web --hostname 0.0.0.0
|
||||
opencode web --mdns
|
||||
opencode web --mdns --mdns-domain myproject.local
|
||||
opencode web --port 4096
|
||||
opencode web --port 4096 --hostname 0.0.0.0
|
||||
opencode.server.close()
|
||||
```
|
||||
|
||||
## Slash commands and routes
|
||||
|
||||
```text
|
||||
/agent
|
||||
/auth/:id
|
||||
/clear
|
||||
/command
|
||||
/config
|
||||
/config/providers
|
||||
/connect
|
||||
/continue
|
||||
/doc
|
||||
/editor
|
||||
/event
|
||||
/experimental/tool?provider=<p>&model=<m>
|
||||
/experimental/tool/ids
|
||||
/export
|
||||
/file?path=<path>
|
||||
/file/content?path=<p>
|
||||
/file/status
|
||||
/find?pattern=<pat>
|
||||
/find/file
|
||||
/find/file?query=<q>
|
||||
/find/symbol?query=<q>
|
||||
/formatter
|
||||
/global/event
|
||||
/global/health
|
||||
/help
|
||||
/init
|
||||
/instance/dispose
|
||||
/log
|
||||
/lsp
|
||||
/mcp
|
||||
/mnt/
|
||||
/mnt/c/
|
||||
/mnt/d/
|
||||
/models
|
||||
/oc
|
||||
/opencode
|
||||
/path
|
||||
/project
|
||||
/project/current
|
||||
/provider
|
||||
/provider/{id}/oauth/authorize
|
||||
/provider/{id}/oauth/callback
|
||||
/provider/auth
|
||||
/q
|
||||
/quit
|
||||
/redo
|
||||
/resume
|
||||
/session
|
||||
/session/:id
|
||||
/session/:id/abort
|
||||
/session/:id/children
|
||||
/session/:id/command
|
||||
/session/:id/diff
|
||||
/session/:id/fork
|
||||
/session/:id/init
|
||||
/session/:id/message
|
||||
/session/:id/message/:messageID
|
||||
/session/:id/permissions/:permissionID
|
||||
/session/:id/prompt_async
|
||||
/session/:id/revert
|
||||
/session/:id/share
|
||||
/session/:id/shell
|
||||
/session/:id/summarize
|
||||
/session/:id/todo
|
||||
/session/:id/unrevert
|
||||
/session/status
|
||||
/share
|
||||
/summarize
|
||||
/theme
|
||||
/tui
|
||||
/tui/append-prompt
|
||||
/tui/clear-prompt
|
||||
/tui/control/next
|
||||
/tui/control/response
|
||||
/tui/execute-command
|
||||
/tui/open-help
|
||||
/tui/open-models
|
||||
/tui/open-sessions
|
||||
/tui/open-themes
|
||||
/tui/show-toast
|
||||
/tui/submit-prompt
|
||||
/undo
|
||||
/Users/username
|
||||
/Users/username/projects/*
|
||||
/vcs
|
||||
```
|
||||
|
||||
## CLI flags and short options
|
||||
|
||||
```text
|
||||
--agent
|
||||
--attach
|
||||
--command
|
||||
--continue
|
||||
--cors
|
||||
--cwd
|
||||
--days
|
||||
--dir
|
||||
--dry-run
|
||||
--event
|
||||
--file
|
||||
--force
|
||||
--fork
|
||||
--format
|
||||
--help
|
||||
--hostname
|
||||
--hostname 0.0.0.0
|
||||
--keep-config
|
||||
--keep-data
|
||||
--log-level
|
||||
--max-count
|
||||
--mdns
|
||||
--mdns-domain
|
||||
--method
|
||||
--model
|
||||
--models
|
||||
--port
|
||||
--print-logs
|
||||
--project
|
||||
--prompt
|
||||
--refresh
|
||||
--session
|
||||
--share
|
||||
--title
|
||||
--token
|
||||
--tools
|
||||
--verbose
|
||||
--version
|
||||
--wait
|
||||
|
||||
-c
|
||||
-d
|
||||
-f
|
||||
-h
|
||||
-m
|
||||
-n
|
||||
-s
|
||||
-v
|
||||
```
|
||||
|
||||
## Environment variables
|
||||
|
||||
```text
|
||||
AI_API_URL
|
||||
AI_FLOW_CONTEXT
|
||||
AI_FLOW_EVENT
|
||||
AI_FLOW_INPUT
|
||||
AICORE_DEPLOYMENT_ID
|
||||
AICORE_RESOURCE_GROUP
|
||||
AICORE_SERVICE_KEY
|
||||
ANTHROPIC_API_KEY
|
||||
AWS_ACCESS_KEY_ID
|
||||
AWS_BEARER_TOKEN_BEDROCK
|
||||
AWS_PROFILE
|
||||
AWS_REGION
|
||||
AWS_ROLE_ARN
|
||||
AWS_SECRET_ACCESS_KEY
|
||||
AWS_WEB_IDENTITY_TOKEN_FILE
|
||||
AZURE_COGNITIVE_SERVICES_RESOURCE_NAME
|
||||
AZURE_RESOURCE_NAME
|
||||
CI_PROJECT_DIR
|
||||
CI_SERVER_FQDN
|
||||
CI_WORKLOAD_REF
|
||||
CLOUDFLARE_ACCOUNT_ID
|
||||
CLOUDFLARE_API_TOKEN
|
||||
CLOUDFLARE_GATEWAY_ID
|
||||
CONTEXT7_API_KEY
|
||||
GITHUB_TOKEN
|
||||
GITLAB_AI_GATEWAY_URL
|
||||
GITLAB_HOST
|
||||
GITLAB_INSTANCE_URL
|
||||
GITLAB_OAUTH_CLIENT_ID
|
||||
GITLAB_TOKEN
|
||||
GITLAB_TOKEN_OPENCODE
|
||||
GOOGLE_APPLICATION_CREDENTIALS
|
||||
GOOGLE_CLOUD_PROJECT
|
||||
HTTP_PROXY
|
||||
HTTPS_PROXY
|
||||
K2_
|
||||
MY_API_KEY
|
||||
MY_ENV_VAR
|
||||
MY_MCP_CLIENT_ID
|
||||
MY_MCP_CLIENT_SECRET
|
||||
NO_PROXY
|
||||
NODE_ENV
|
||||
NODE_EXTRA_CA_CERTS
|
||||
NPM_AUTH_TOKEN
|
||||
OC_ALLOW_WAYLAND
|
||||
OPENCODE_API_KEY
|
||||
OPENCODE_AUTH_JSON
|
||||
OPENCODE_AUTO_SHARE
|
||||
OPENCODE_CLIENT
|
||||
OPENCODE_CONFIG
|
||||
OPENCODE_CONFIG_CONTENT
|
||||
OPENCODE_CONFIG_DIR
|
||||
OPENCODE_DISABLE_AUTOCOMPACT
|
||||
OPENCODE_DISABLE_AUTOUPDATE
|
||||
OPENCODE_DISABLE_CLAUDE_CODE
|
||||
OPENCODE_DISABLE_CLAUDE_CODE_PROMPT
|
||||
OPENCODE_DISABLE_CLAUDE_CODE_SKILLS
|
||||
OPENCODE_DISABLE_DEFAULT_PLUGINS
|
||||
OPENCODE_DISABLE_FILETIME_CHECK
|
||||
OPENCODE_DISABLE_LSP_DOWNLOAD
|
||||
OPENCODE_DISABLE_MODELS_FETCH
|
||||
OPENCODE_DISABLE_PRUNE
|
||||
OPENCODE_DISABLE_TERMINAL_TITLE
|
||||
OPENCODE_ENABLE_EXA
|
||||
OPENCODE_ENABLE_EXPERIMENTAL_MODELS
|
||||
OPENCODE_EXPERIMENTAL
|
||||
OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS
|
||||
OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT
|
||||
OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER
|
||||
OPENCODE_EXPERIMENTAL_EXA
|
||||
OPENCODE_EXPERIMENTAL_FILEWATCHER
|
||||
OPENCODE_EXPERIMENTAL_ICON_DISCOVERY
|
||||
OPENCODE_EXPERIMENTAL_LSP_TOOL
|
||||
OPENCODE_EXPERIMENTAL_LSP_TY
|
||||
OPENCODE_EXPERIMENTAL_MARKDOWN
|
||||
OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX
|
||||
OPENCODE_EXPERIMENTAL_OXFMT
|
||||
OPENCODE_EXPERIMENTAL_PLAN_MODE
|
||||
OPENCODE_FAKE_VCS
|
||||
OPENCODE_GIT_BASH_PATH
|
||||
OPENCODE_MODEL
|
||||
OPENCODE_MODELS_URL
|
||||
OPENCODE_PERMISSION
|
||||
OPENCODE_PORT
|
||||
OPENCODE_SERVER_PASSWORD
|
||||
OPENCODE_SERVER_USERNAME
|
||||
PROJECT_ROOT
|
||||
RESOURCE_NAME
|
||||
RUST_LOG
|
||||
VARIABLE_NAME
|
||||
VERTEX_LOCATION
|
||||
XDG_CONFIG_HOME
|
||||
```
|
||||
|
||||
## Package/module identifiers
|
||||
|
||||
```text
|
||||
../../../config.mjs
|
||||
@astrojs/starlight/components
|
||||
@opencode-ai/plugin
|
||||
@opencode-ai/sdk
|
||||
path
|
||||
shescape
|
||||
zod
|
||||
|
||||
@
|
||||
@ai-sdk/anthropic
|
||||
@ai-sdk/cerebras
|
||||
@ai-sdk/google
|
||||
@ai-sdk/openai
|
||||
@ai-sdk/openai-compatible
|
||||
@File#L37-42
|
||||
@modelcontextprotocol/server-everything
|
||||
@opencode
|
||||
```
|
||||
|
||||
## GitHub owner/repo slugs referenced in docs
|
||||
|
||||
```text
|
||||
24601/opencode-zellij-namer
|
||||
angristan/opencode-wakatime
|
||||
anomalyco/opencode
|
||||
apps/opencode-agent
|
||||
athal7/opencode-devcontainers
|
||||
awesome-opencode/awesome-opencode
|
||||
backnotprop/plannotator
|
||||
ben-vargas/ai-sdk-provider-opencode-sdk
|
||||
btriapitsyn/openchamber
|
||||
BurntSushi/ripgrep
|
||||
Cluster444/agentic
|
||||
code-yeongyu/oh-my-opencode
|
||||
darrenhinde/opencode-agents
|
||||
different-ai/opencode-scheduler
|
||||
different-ai/openwork
|
||||
features/copilot
|
||||
folke/tokyonight.nvim
|
||||
franlol/opencode-md-table-formatter
|
||||
ggml-org/llama.cpp
|
||||
ghoulr/opencode-websearch-cited.git
|
||||
H2Shami/opencode-helicone-session
|
||||
hosenur/portal
|
||||
jamesmurdza/daytona
|
||||
jenslys/opencode-gemini-auth
|
||||
JRedeker/opencode-morph-fast-apply
|
||||
JRedeker/opencode-shell-strategy
|
||||
kdcokenny/ocx
|
||||
kdcokenny/opencode-background-agents
|
||||
kdcokenny/opencode-notify
|
||||
kdcokenny/opencode-workspace
|
||||
kdcokenny/opencode-worktree
|
||||
login/device
|
||||
mohak34/opencode-notifier
|
||||
morhetz/gruvbox
|
||||
mtymek/opencode-obsidian
|
||||
NeuralNomadsAI/CodeNomad
|
||||
nick-vi/opencode-type-inject
|
||||
NickvanDyke/opencode.nvim
|
||||
NoeFabris/opencode-antigravity-auth
|
||||
nordtheme/nord
|
||||
numman-ali/opencode-openai-codex-auth
|
||||
olimorris/codecompanion.nvim
|
||||
panta82/opencode-notificator
|
||||
rebelot/kanagawa.nvim
|
||||
remorses/kimaki
|
||||
sainnhe/everforest
|
||||
shekohex/opencode-google-antigravity-auth
|
||||
shekohex/opencode-pty.git
|
||||
spoons-and-mirrors/subtask2
|
||||
sudo-tee/opencode.nvim
|
||||
supermemoryai/opencode-supermemory
|
||||
Tarquinen/opencode-dynamic-context-pruning
|
||||
Th3Whit3Wolf/one-nvim
|
||||
upstash/context7
|
||||
vtemian/micode
|
||||
vtemian/octto
|
||||
yetone/avante.nvim
|
||||
zenobi-us/opencode-plugin-template
|
||||
zenobi-us/opencode-skillful
|
||||
```
|
||||
|
||||
## Paths, filenames, globs, and URLs
|
||||
|
||||
```text
|
||||
./.opencode/themes/*.json
|
||||
./<project-slug>/storage/
|
||||
./config/#custom-directory
|
||||
./global/storage/
|
||||
.agents/skills/*/SKILL.md
|
||||
.agents/skills/<name>/SKILL.md
|
||||
.clang-format
|
||||
.claude
|
||||
.claude/skills
|
||||
.claude/skills/*/SKILL.md
|
||||
.claude/skills/<name>/SKILL.md
|
||||
.env
|
||||
.github/workflows/opencode.yml
|
||||
.gitignore
|
||||
.gitlab-ci.yml
|
||||
.ignore
|
||||
.NET SDK
|
||||
.npmrc
|
||||
.ocamlformat
|
||||
.opencode
|
||||
.opencode/
|
||||
.opencode/agents/
|
||||
.opencode/commands/
|
||||
.opencode/commands/test.md
|
||||
.opencode/modes/
|
||||
.opencode/plans/*.md
|
||||
.opencode/plugins/
|
||||
.opencode/skills/<name>/SKILL.md
|
||||
.opencode/skills/git-release/SKILL.md
|
||||
.opencode/tools/
|
||||
.well-known/opencode
|
||||
{ type: "raw" \| "patch", content: string }
|
||||
{file:path/to/file}
|
||||
**/*.js
|
||||
%USERPROFILE%/intelephense/license.txt
|
||||
%USERPROFILE%\.cache\opencode
|
||||
%USERPROFILE%\.config\opencode\opencode.jsonc
|
||||
%USERPROFILE%\.config\opencode\plugins
|
||||
%USERPROFILE%\.local\share\opencode
|
||||
%USERPROFILE%\.local\share\opencode\log
|
||||
<project-root>/.opencode/themes/*.json
|
||||
<providerId>/<modelId>
|
||||
<your-project>/.opencode/plugins/
|
||||
~
|
||||
~/...
|
||||
~/.agents/skills/*/SKILL.md
|
||||
~/.agents/skills/<name>/SKILL.md
|
||||
~/.aws/credentials
|
||||
~/.bashrc
|
||||
~/.cache/opencode
|
||||
~/.cache/opencode/node_modules/
|
||||
~/.claude/CLAUDE.md
|
||||
~/.claude/skills/
|
||||
~/.claude/skills/*/SKILL.md
|
||||
~/.claude/skills/<name>/SKILL.md
|
||||
~/.config/opencode
|
||||
~/.config/opencode/AGENTS.md
|
||||
~/.config/opencode/agents/
|
||||
~/.config/opencode/commands/
|
||||
~/.config/opencode/modes/
|
||||
~/.config/opencode/opencode.json
|
||||
~/.config/opencode/opencode.jsonc
|
||||
~/.config/opencode/plugins/
|
||||
~/.config/opencode/skills/*/SKILL.md
|
||||
~/.config/opencode/skills/<name>/SKILL.md
|
||||
~/.config/opencode/themes/*.json
|
||||
~/.config/opencode/tools/
|
||||
~/.config/zed/settings.json
|
||||
~/.local/share
|
||||
~/.local/share/opencode/
|
||||
~/.local/share/opencode/auth.json
|
||||
~/.local/share/opencode/log/
|
||||
~/.local/share/opencode/mcp-auth.json
|
||||
~/.local/share/opencode/opencode.jsonc
|
||||
~/.npmrc
|
||||
~/.zshrc
|
||||
~/code/
|
||||
~/Library/Application Support
|
||||
~/projects/*
|
||||
~/projects/personal/
|
||||
${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts
|
||||
$HOME/intelephense/license.txt
|
||||
$HOME/projects/*
|
||||
$XDG_CONFIG_HOME/opencode/themes/*.json
|
||||
agent/
|
||||
agents/
|
||||
build/
|
||||
commands/
|
||||
dist/
|
||||
http://<wsl-ip>:4096
|
||||
http://127.0.0.1:8080/callback
|
||||
http://localhost:<port>
|
||||
http://localhost:4096
|
||||
http://localhost:4096/doc
|
||||
https://app.example.com
|
||||
https://AZURE_COGNITIVE_SERVICES_RESOURCE_NAME.cognitiveservices.azure.com/
|
||||
https://opencode.ai/zen/v1/chat/completions
|
||||
https://opencode.ai/zen/v1/messages
|
||||
https://opencode.ai/zen/v1/models/gemini-3-flash
|
||||
https://opencode.ai/zen/v1/models/gemini-3-pro
|
||||
https://opencode.ai/zen/v1/responses
|
||||
https://RESOURCE_NAME.openai.azure.com/
|
||||
laravel/pint
|
||||
log/
|
||||
model: "anthropic/claude-sonnet-4-5"
|
||||
modes/
|
||||
node_modules/
|
||||
openai/gpt-4.1
|
||||
opencode.ai/config.json
|
||||
opencode/<model-id>
|
||||
opencode/gpt-5.1-codex
|
||||
opencode/gpt-5.2-codex
|
||||
opencode/kimi-k2
|
||||
openrouter/google/gemini-2.5-flash
|
||||
opncd.ai/s/<share-id>
|
||||
packages/*/AGENTS.md
|
||||
plugins/
|
||||
project/
|
||||
provider_id/model_id
|
||||
provider/model
|
||||
provider/model-id
|
||||
rm -rf ~/.cache/opencode
|
||||
skills/
|
||||
skills/*/SKILL.md
|
||||
src/**/*.ts
|
||||
themes/
|
||||
tools/
|
||||
```
|
||||
|
||||
## Keybind strings
|
||||
|
||||
```text
|
||||
alt+b
|
||||
Alt+Ctrl+K
|
||||
alt+d
|
||||
alt+f
|
||||
Cmd+Esc
|
||||
Cmd+Option+K
|
||||
Cmd+Shift+Esc
|
||||
Cmd+Shift+G
|
||||
Cmd+Shift+P
|
||||
ctrl+a
|
||||
ctrl+b
|
||||
ctrl+d
|
||||
ctrl+e
|
||||
Ctrl+Esc
|
||||
ctrl+f
|
||||
ctrl+g
|
||||
ctrl+k
|
||||
Ctrl+Shift+Esc
|
||||
Ctrl+Shift+P
|
||||
ctrl+t
|
||||
ctrl+u
|
||||
ctrl+w
|
||||
ctrl+x
|
||||
DELETE
|
||||
Shift+Enter
|
||||
WIN+R
|
||||
```
|
||||
|
||||
## Model ID strings referenced
|
||||
|
||||
```text
|
||||
{env:OPENCODE_MODEL}
|
||||
anthropic/claude-3-5-sonnet-20241022
|
||||
anthropic/claude-haiku-4-20250514
|
||||
anthropic/claude-haiku-4-5
|
||||
anthropic/claude-sonnet-4-20250514
|
||||
anthropic/claude-sonnet-4-5
|
||||
gitlab/duo-chat-haiku-4-5
|
||||
lmstudio/google/gemma-3n-e4b
|
||||
openai/gpt-4.1
|
||||
openai/gpt-5
|
||||
opencode/gpt-5.1-codex
|
||||
opencode/gpt-5.2-codex
|
||||
opencode/kimi-k2
|
||||
openrouter/google/gemini-2.5-flash
|
||||
```
|
||||
30
bun.lock
30
bun.lock
@@ -23,7 +23,7 @@
|
||||
},
|
||||
"packages/app": {
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@kobalte/core": "catalog:",
|
||||
"@opencode-ai/sdk": "workspace:*",
|
||||
@@ -73,7 +73,7 @@
|
||||
},
|
||||
"packages/console/app": {
|
||||
"name": "@opencode-ai/console-app",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@cloudflare/vite-plugin": "1.15.2",
|
||||
"@ibm/plex": "6.4.1",
|
||||
@@ -107,7 +107,7 @@
|
||||
},
|
||||
"packages/console/core": {
|
||||
"name": "@opencode-ai/console-core",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@aws-sdk/client-sts": "3.782.0",
|
||||
"@jsx-email/render": "1.1.1",
|
||||
@@ -134,7 +134,7 @@
|
||||
},
|
||||
"packages/console/function": {
|
||||
"name": "@opencode-ai/console-function",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@ai-sdk/anthropic": "2.0.0",
|
||||
"@ai-sdk/openai": "2.0.2",
|
||||
@@ -158,7 +158,7 @@
|
||||
},
|
||||
"packages/console/mail": {
|
||||
"name": "@opencode-ai/console-mail",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@jsx-email/all": "2.2.3",
|
||||
"@jsx-email/cli": "1.4.3",
|
||||
@@ -182,7 +182,7 @@
|
||||
},
|
||||
"packages/desktop": {
|
||||
"name": "@opencode-ai/desktop",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@opencode-ai/app": "workspace:*",
|
||||
"@opencode-ai/ui": "workspace:*",
|
||||
@@ -215,7 +215,7 @@
|
||||
},
|
||||
"packages/enterprise": {
|
||||
"name": "@opencode-ai/enterprise",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@opencode-ai/ui": "workspace:*",
|
||||
"@opencode-ai/util": "workspace:*",
|
||||
@@ -244,7 +244,7 @@
|
||||
},
|
||||
"packages/function": {
|
||||
"name": "@opencode-ai/function",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@octokit/auth-app": "8.0.1",
|
||||
"@octokit/rest": "catalog:",
|
||||
@@ -260,7 +260,7 @@
|
||||
},
|
||||
"packages/opencode": {
|
||||
"name": "opencode",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"bin": {
|
||||
"opencode": "./bin/opencode",
|
||||
},
|
||||
@@ -366,7 +366,7 @@
|
||||
},
|
||||
"packages/plugin": {
|
||||
"name": "@opencode-ai/plugin",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@opencode-ai/sdk": "workspace:*",
|
||||
"zod": "catalog:",
|
||||
@@ -386,7 +386,7 @@
|
||||
},
|
||||
"packages/sdk/js": {
|
||||
"name": "@opencode-ai/sdk",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"devDependencies": {
|
||||
"@hey-api/openapi-ts": "0.90.10",
|
||||
"@tsconfig/node22": "catalog:",
|
||||
@@ -397,7 +397,7 @@
|
||||
},
|
||||
"packages/slack": {
|
||||
"name": "@opencode-ai/slack",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@opencode-ai/sdk": "workspace:*",
|
||||
"@slack/bolt": "^3.17.1",
|
||||
@@ -410,7 +410,7 @@
|
||||
},
|
||||
"packages/ui": {
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@kobalte/core": "catalog:",
|
||||
"@opencode-ai/sdk": "workspace:*",
|
||||
@@ -452,7 +452,7 @@
|
||||
},
|
||||
"packages/util": {
|
||||
"name": "@opencode-ai/util",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"zod": "catalog:",
|
||||
},
|
||||
@@ -463,7 +463,7 @@
|
||||
},
|
||||
"packages/web": {
|
||||
"name": "@opencode-ai/web",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@astrojs/cloudflare": "12.6.3",
|
||||
"@astrojs/markdown-remark": "6.3.1",
|
||||
|
||||
@@ -166,10 +166,14 @@ const bucketNew = new sst.cloudflare.Bucket("ZenDataNew")
|
||||
const AWS_SES_ACCESS_KEY_ID = new sst.Secret("AWS_SES_ACCESS_KEY_ID")
|
||||
const AWS_SES_SECRET_ACCESS_KEY = new sst.Secret("AWS_SES_SECRET_ACCESS_KEY")
|
||||
|
||||
const logProcessor = new sst.cloudflare.Worker("LogProcessor", {
|
||||
handler: "packages/console/function/src/log-processor.ts",
|
||||
link: [new sst.Secret("HONEYCOMB_API_KEY")],
|
||||
})
|
||||
let logProcessor
|
||||
if ($app.stage === "production" || $app.stage === "frank") {
|
||||
const HONEYCOMB_API_KEY = new sst.Secret("HONEYCOMB_API_KEY")
|
||||
logProcessor = new sst.cloudflare.Worker("LogProcessor", {
|
||||
handler: "packages/console/function/src/log-processor.ts",
|
||||
link: [HONEYCOMB_API_KEY],
|
||||
})
|
||||
}
|
||||
|
||||
new sst.cloudflare.x.SolidStart("Console", {
|
||||
domain,
|
||||
@@ -207,7 +211,7 @@ new sst.cloudflare.x.SolidStart("Console", {
|
||||
transform: {
|
||||
worker: {
|
||||
placement: { mode: "smart" },
|
||||
tailConsumers: [{ service: logProcessor.nodes.worker.scriptName }],
|
||||
tailConsumers: logProcessor ? [{ service: logProcessor.nodes.worker.scriptName }] : [],
|
||||
},
|
||||
},
|
||||
},
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
import { test, expect } from "../fixtures"
|
||||
import { closeSidebar, hoverSessionItem } from "../actions"
|
||||
import { projectSwitchSelector, sessionItemSelector } from "../selectors"
|
||||
|
||||
test("collapsed sidebar popover stays open when archiving a session", async ({ page, slug, sdk, gotoSession }) => {
|
||||
const stamp = Date.now()
|
||||
|
||||
const one = await sdk.session.create({ title: `e2e sidebar popover archive 1 ${stamp}` }).then((r) => r.data)
|
||||
const two = await sdk.session.create({ title: `e2e sidebar popover archive 2 ${stamp}` }).then((r) => r.data)
|
||||
|
||||
if (!one?.id) throw new Error("Session create did not return an id")
|
||||
if (!two?.id) throw new Error("Session create did not return an id")
|
||||
|
||||
try {
|
||||
await gotoSession(one.id)
|
||||
await closeSidebar(page)
|
||||
|
||||
const project = page.locator(projectSwitchSelector(slug)).first()
|
||||
await expect(project).toBeVisible()
|
||||
await project.hover()
|
||||
|
||||
await expect(page.locator(sessionItemSelector(one.id)).first()).toBeVisible()
|
||||
await expect(page.locator(sessionItemSelector(two.id)).first()).toBeVisible()
|
||||
|
||||
const item = await hoverSessionItem(page, one.id)
|
||||
await item
|
||||
.getByRole("button", { name: /archive/i })
|
||||
.first()
|
||||
.click()
|
||||
|
||||
await expect(page.locator(sessionItemSelector(two.id)).first()).toBeVisible()
|
||||
} finally {
|
||||
await sdk.session.delete({ sessionID: one.id }).catch(() => undefined)
|
||||
await sdk.session.delete({ sessionID: two.id }).catch(() => undefined)
|
||||
}
|
||||
})
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/app",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"description": "",
|
||||
"type": "module",
|
||||
"exports": {
|
||||
|
||||
@@ -166,7 +166,6 @@ export function SessionHeader() {
|
||||
})
|
||||
|
||||
const [prefs, setPrefs] = persisted(Persist.global("open.app"), createStore({ app: "finder" as OpenApp }))
|
||||
const [menu, setMenu] = createStore({ open: false })
|
||||
|
||||
const canOpen = createMemo(() => platform.platform === "desktop" && !!platform.openPath && server.isLocal())
|
||||
const current = createMemo(() => options().find((o) => o.id === prefs.app) ?? options()[0])
|
||||
@@ -356,12 +355,7 @@ export function SessionHeader() {
|
||||
<span class="text-12-regular text-text-strong">Open</span>
|
||||
</Button>
|
||||
<div class="self-stretch w-px bg-border-base/70" />
|
||||
<DropdownMenu
|
||||
gutter={6}
|
||||
placement="bottom-end"
|
||||
open={menu.open}
|
||||
onOpenChange={(open) => setMenu("open", open)}
|
||||
>
|
||||
<DropdownMenu gutter={6} placement="bottom-end">
|
||||
<DropdownMenu.Trigger
|
||||
as={IconButton}
|
||||
icon="chevron-down"
|
||||
@@ -381,13 +375,7 @@ export function SessionHeader() {
|
||||
}}
|
||||
>
|
||||
{options().map((o) => (
|
||||
<DropdownMenu.RadioItem
|
||||
value={o.id}
|
||||
onSelect={() => {
|
||||
setMenu("open", false)
|
||||
openDir(o.id)
|
||||
}}
|
||||
>
|
||||
<DropdownMenu.RadioItem value={o.id} onSelect={() => openDir(o.id)}>
|
||||
<div class="flex size-5 shrink-0 items-center justify-center">
|
||||
<AppIcon id={o.icon} class={size(o.icon)} />
|
||||
</div>
|
||||
@@ -400,12 +388,7 @@ export function SessionHeader() {
|
||||
</DropdownMenu.RadioGroup>
|
||||
</DropdownMenu.Group>
|
||||
<DropdownMenu.Separator />
|
||||
<DropdownMenu.Item
|
||||
onSelect={() => {
|
||||
setMenu("open", false)
|
||||
copyPath()
|
||||
}}
|
||||
>
|
||||
<DropdownMenu.Item onSelect={copyPath}>
|
||||
<div class="flex size-5 shrink-0 items-center justify-center">
|
||||
<Icon name="copy" size="small" class="text-icon-weak" />
|
||||
</div>
|
||||
|
||||
@@ -12,19 +12,10 @@ export const { use: useGlobalSDK, provider: GlobalSDKProvider } = createSimpleCo
|
||||
const platform = usePlatform()
|
||||
const abort = new AbortController()
|
||||
|
||||
const auth = (() => {
|
||||
if (typeof window === "undefined") return
|
||||
const password = window.__OPENCODE__?.serverPassword
|
||||
if (!password) return
|
||||
return {
|
||||
Authorization: `Basic ${btoa(`opencode:${password}`)}`,
|
||||
}
|
||||
})()
|
||||
|
||||
const eventSdk = createOpencodeClient({
|
||||
baseUrl: server.url,
|
||||
signal: abort.signal,
|
||||
headers: auth,
|
||||
fetch: platform.fetch,
|
||||
})
|
||||
const emitter = createGlobalEmitter<{
|
||||
[key: string]: Event
|
||||
|
||||
@@ -54,13 +54,6 @@ export default function Layout(props: ParentProps) {
|
||||
navigate(`/${params.dir}/session/${sessionID}`)
|
||||
}
|
||||
|
||||
const sessionHref = (sessionID: string) => {
|
||||
if (params.dir) return `/${params.dir}/session/${sessionID}`
|
||||
return `/session/${sessionID}`
|
||||
}
|
||||
|
||||
const syncSession = (sessionID: string) => sync.session.sync(sessionID)
|
||||
|
||||
return (
|
||||
<DataProvider
|
||||
data={sync.data}
|
||||
@@ -69,8 +62,6 @@ export default function Layout(props: ParentProps) {
|
||||
onQuestionReply={replyToQuestion}
|
||||
onQuestionReject={rejectQuestion}
|
||||
onNavigateToSession={navigateToSession}
|
||||
onSessionHref={sessionHref}
|
||||
onSyncSession={syncSession}
|
||||
>
|
||||
<LocalProvider>{props.children}</LocalProvider>
|
||||
</DataProvider>
|
||||
|
||||
@@ -181,6 +181,20 @@ export default function Layout(props: ParentProps) {
|
||||
aim.reset()
|
||||
})
|
||||
|
||||
createEffect(
|
||||
on(
|
||||
() => ({ dir: params.dir, id: params.id }),
|
||||
() => {
|
||||
if (layout.sidebar.opened()) return
|
||||
if (!state.hoverProject) return
|
||||
aim.reset()
|
||||
setState("hoverSession", undefined)
|
||||
setState("hoverProject", undefined)
|
||||
},
|
||||
{ defer: true },
|
||||
),
|
||||
)
|
||||
|
||||
const autoselecting = createMemo(() => {
|
||||
if (params.dir) return false
|
||||
if (!state.autoselect) return false
|
||||
@@ -1258,6 +1272,8 @@ export default function Layout(props: ParentProps) {
|
||||
),
|
||||
)
|
||||
|
||||
await globalSDK.client.instance.dispose({ directory }).catch(() => undefined)
|
||||
|
||||
setBusy(directory, false)
|
||||
dismiss()
|
||||
|
||||
|
||||
@@ -1026,31 +1026,10 @@ export default function Page() {
|
||||
</Show>
|
||||
</Match>
|
||||
<Match when={true}>
|
||||
<SessionReviewTab
|
||||
title={changesTitle()}
|
||||
empty={
|
||||
store.changes === "turn" ? (
|
||||
emptyTurn()
|
||||
) : (
|
||||
<div class={input.emptyClass}>
|
||||
<Mark class="w-14 opacity-10" />
|
||||
<div class="text-14-regular text-text-weak max-w-56">{language.t("session.review.empty")}</div>
|
||||
</div>
|
||||
)
|
||||
}
|
||||
diffs={reviewDiffs}
|
||||
view={view}
|
||||
diffStyle={input.diffStyle}
|
||||
onDiffStyleChange={input.onDiffStyleChange}
|
||||
onScrollRef={(el) => setTree("reviewScroll", el)}
|
||||
focusedFile={tree.activeDiff}
|
||||
onLineComment={(comment) => addCommentToContext({ ...comment, origin: "review" })}
|
||||
comments={comments.all()}
|
||||
focusedComment={comments.focus()}
|
||||
onFocusedCommentChange={comments.setFocus}
|
||||
onViewFile={openReviewFile}
|
||||
classes={input.classes}
|
||||
/>
|
||||
<div class={input.emptyClass}>
|
||||
<Mark class="w-14 opacity-10" />
|
||||
<div class="text-14-regular text-text-weak max-w-56">{language.t("session.review.empty")}</div>
|
||||
</div>
|
||||
</Match>
|
||||
</Switch>
|
||||
)
|
||||
@@ -1062,7 +1041,7 @@ export default function Page() {
|
||||
diffStyle: layout.review.diffStyle(),
|
||||
onDiffStyleChange: layout.review.setDiffStyle,
|
||||
loadingClass: "px-6 py-4 text-text-weak",
|
||||
emptyClass: "h-full pb-30 flex flex-col items-center justify-center text-center gap-6",
|
||||
emptyClass: "h-full px-6 pb-30 flex flex-col items-center justify-center text-center gap-6",
|
||||
})}
|
||||
</div>
|
||||
</div>
|
||||
@@ -1590,7 +1569,7 @@ export default function Page() {
|
||||
container: "px-4",
|
||||
},
|
||||
loadingClass: "px-4 py-4 text-text-weak",
|
||||
emptyClass: "h-full pb-30 flex flex-col items-center justify-center text-center gap-6",
|
||||
emptyClass: "h-full px-4 pb-30 flex flex-col items-center justify-center text-center gap-6",
|
||||
})}
|
||||
scroll={ui.scroll}
|
||||
onResumeScroll={resumeScroll}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/console-app",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -9,8 +9,8 @@ export const config = {
|
||||
github: {
|
||||
repoUrl: "https://github.com/anomalyco/opencode",
|
||||
starsFormatted: {
|
||||
compact: "100K",
|
||||
full: "100,000",
|
||||
compact: "95K",
|
||||
full: "95,000",
|
||||
},
|
||||
},
|
||||
|
||||
@@ -22,8 +22,8 @@ export const config = {
|
||||
|
||||
// Static stats (used on landing page)
|
||||
stats: {
|
||||
contributors: "700",
|
||||
commits: "9,000",
|
||||
contributors: "650",
|
||||
commits: "8,500",
|
||||
monthlyUsers: "2.5M",
|
||||
},
|
||||
} as const
|
||||
|
||||
@@ -1,15 +1,13 @@
|
||||
export class AuthError extends Error {}
|
||||
export class CreditsError extends Error {}
|
||||
export class MonthlyLimitError extends Error {}
|
||||
export class UserLimitError extends Error {}
|
||||
export class ModelError extends Error {}
|
||||
|
||||
class LimitError extends Error {
|
||||
export class SubscriptionError extends Error {
|
||||
retryAfter?: number
|
||||
constructor(message: string, retryAfter?: number) {
|
||||
super(message)
|
||||
this.retryAfter = retryAfter
|
||||
}
|
||||
}
|
||||
export class FreeUsageLimitError extends LimitError {}
|
||||
export class SubscriptionUsageLimitError extends LimitError {}
|
||||
export class UserLimitError extends Error {}
|
||||
export class ModelError extends Error {}
|
||||
export class RateLimitError extends Error {}
|
||||
|
||||
@@ -18,10 +18,10 @@ import {
|
||||
AuthError,
|
||||
CreditsError,
|
||||
MonthlyLimitError,
|
||||
SubscriptionError,
|
||||
UserLimitError,
|
||||
ModelError,
|
||||
FreeUsageLimitError,
|
||||
SubscriptionUsageLimitError,
|
||||
RateLimitError,
|
||||
} from "./error"
|
||||
import { createBodyConverter, createStreamPartConverter, createResponseConverter, UsageInfo } from "./provider/provider"
|
||||
import { anthropicHelper } from "./provider/anthropic"
|
||||
@@ -52,8 +52,7 @@ export async function handler(
|
||||
type ModelInfo = Awaited<ReturnType<typeof validateModel>>
|
||||
type ProviderInfo = Awaited<ReturnType<typeof selectProvider>>
|
||||
|
||||
const MAX_FAILOVER_RETRIES = 3
|
||||
const MAX_429_RETRIES = 3
|
||||
const MAX_RETRIES = 3
|
||||
const FREE_WORKSPACES = [
|
||||
"wrk_01K46JDFR0E75SG2Q8K172KF3Y", // frank
|
||||
"wrk_01K6W1A3VE0KMNVSCQT43BG2SX", // opencode bench
|
||||
@@ -112,7 +111,7 @@ export async function handler(
|
||||
)
|
||||
logger.debug("REQUEST URL: " + reqUrl)
|
||||
logger.debug("REQUEST: " + reqBody.substring(0, 300) + "...")
|
||||
const res = await fetchWith429Retry(reqUrl, {
|
||||
const res = await fetch(reqUrl, {
|
||||
method: "POST",
|
||||
headers: (() => {
|
||||
const headers = new Headers(input.request.headers)
|
||||
@@ -134,26 +133,20 @@ export async function handler(
|
||||
body: reqBody,
|
||||
})
|
||||
|
||||
if (res.status !== 200) {
|
||||
logger.metric({
|
||||
"llm.error.code": res.status,
|
||||
"llm.error.message": res.statusText,
|
||||
// Try another provider => stop retrying if using fallback provider
|
||||
if (
|
||||
res.status !== 200 &&
|
||||
// ie. openai 404 error: Item with id 'msg_0ead8b004a3b165d0069436a6b6834819896da85b63b196a3f' not found.
|
||||
res.status !== 404 &&
|
||||
// ie. cannot change codex model providers mid-session
|
||||
modelInfo.stickyProvider !== "strict" &&
|
||||
modelInfo.fallbackProvider &&
|
||||
providerInfo.id !== modelInfo.fallbackProvider
|
||||
) {
|
||||
return retriableRequest({
|
||||
excludeProviders: [...retry.excludeProviders, providerInfo.id],
|
||||
retryCount: retry.retryCount + 1,
|
||||
})
|
||||
|
||||
// Try another provider => stop retrying if using fallback provider
|
||||
if (
|
||||
// ie. openai 404 error: Item with id 'msg_0ead8b004a3b165d0069436a6b6834819896da85b63b196a3f' not found.
|
||||
res.status !== 404 &&
|
||||
// ie. cannot change codex model providers mid-session
|
||||
modelInfo.stickyProvider !== "strict" &&
|
||||
modelInfo.fallbackProvider &&
|
||||
providerInfo.id !== modelInfo.fallbackProvider
|
||||
) {
|
||||
return retriableRequest({
|
||||
excludeProviders: [...retry.excludeProviders, providerInfo.id],
|
||||
retryCount: retry.retryCount + 1,
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
return { providerInfo, reqBody, res, startTimestamp }
|
||||
@@ -311,9 +304,9 @@ export async function handler(
|
||||
{ status: 401 },
|
||||
)
|
||||
|
||||
if (error instanceof FreeUsageLimitError || error instanceof SubscriptionUsageLimitError) {
|
||||
if (error instanceof RateLimitError || error instanceof SubscriptionError) {
|
||||
const headers = new Headers()
|
||||
if (error.retryAfter) {
|
||||
if (error instanceof SubscriptionError && error.retryAfter) {
|
||||
headers.set("retry-after", String(error.retryAfter))
|
||||
}
|
||||
return new Response(
|
||||
@@ -376,7 +369,7 @@ export async function handler(
|
||||
if (provider) return provider
|
||||
}
|
||||
|
||||
if (retry.retryCount === MAX_FAILOVER_RETRIES) {
|
||||
if (retry.retryCount === MAX_RETRIES) {
|
||||
return modelInfo.providers.find((provider) => provider.id === modelInfo.fallbackProvider)
|
||||
}
|
||||
|
||||
@@ -527,7 +520,7 @@ export async function handler(
|
||||
timeUpdated: sub.timeFixedUpdated,
|
||||
})
|
||||
if (result.status === "rate-limited")
|
||||
throw new SubscriptionUsageLimitError(
|
||||
throw new SubscriptionError(
|
||||
`Subscription quota exceeded. Retry in ${formatRetryTime(result.resetInSec)}.`,
|
||||
result.resetInSec,
|
||||
)
|
||||
@@ -541,7 +534,7 @@ export async function handler(
|
||||
timeUpdated: sub.timeRollingUpdated,
|
||||
})
|
||||
if (result.status === "rate-limited")
|
||||
throw new SubscriptionUsageLimitError(
|
||||
throw new SubscriptionError(
|
||||
`Subscription quota exceeded. Retry in ${formatRetryTime(result.resetInSec)}.`,
|
||||
result.resetInSec,
|
||||
)
|
||||
@@ -604,15 +597,6 @@ export async function handler(
|
||||
providerInfo.apiKey = authInfo.provider.credentials
|
||||
}
|
||||
|
||||
async function fetchWith429Retry(url: string, options: RequestInit, retry = { count: 0 }) {
|
||||
const res = await fetch(url, options)
|
||||
if (res.status === 429 && retry.count < MAX_429_RETRIES) {
|
||||
await new Promise((resolve) => setTimeout(resolve, Math.pow(2, retry.count) * 500))
|
||||
return fetchWith429Retry(url, options, { count: retry.count + 1 })
|
||||
}
|
||||
return res
|
||||
}
|
||||
|
||||
async function trackUsage(
|
||||
authInfo: AuthInfo,
|
||||
modelInfo: ModelInfo,
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
import { Database, eq, and, sql, inArray } from "@opencode-ai/console-core/drizzle/index.js"
|
||||
import { IpRateLimitTable } from "@opencode-ai/console-core/schema/ip.sql.js"
|
||||
import { FreeUsageLimitError } from "./error"
|
||||
import { RateLimitError } from "./error"
|
||||
import { logger } from "./logger"
|
||||
import { ZenData } from "@opencode-ai/console-core/model.js"
|
||||
|
||||
@@ -28,46 +28,17 @@ export function createRateLimiter(limit: ZenData.RateLimit | undefined, rawIp: s
|
||||
check: async () => {
|
||||
const rows = await Database.use((tx) =>
|
||||
tx
|
||||
.select({ interval: IpRateLimitTable.interval, count: IpRateLimitTable.count })
|
||||
.select({ count: IpRateLimitTable.count })
|
||||
.from(IpRateLimitTable)
|
||||
.where(and(eq(IpRateLimitTable.ip, ip), inArray(IpRateLimitTable.interval, intervals))),
|
||||
)
|
||||
const total = rows.reduce((sum, r) => sum + r.count, 0)
|
||||
logger.debug(`rate limit total: ${total}`)
|
||||
if (total >= limitValue)
|
||||
throw new FreeUsageLimitError(
|
||||
`Rate limit exceeded. Please try again later.`,
|
||||
limit.period === "day" ? getRetryAfterDay(now) : getRetryAfterHour(rows, intervals, limitValue, now),
|
||||
)
|
||||
if (total >= limitValue) throw new RateLimitError(`Rate limit exceeded. Please try again later.`)
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
export function getRetryAfterDay(now: number) {
|
||||
return Math.ceil((86_400_000 - (now % 86_400_000)) / 1000)
|
||||
}
|
||||
|
||||
export function getRetryAfterHour(
|
||||
rows: { interval: string; count: number }[],
|
||||
intervals: string[],
|
||||
limit: number,
|
||||
now: number,
|
||||
) {
|
||||
const counts = new Map(rows.map((r) => [r.interval, r.count]))
|
||||
// intervals are ordered newest to oldest: [current, -1h, -2h]
|
||||
// simulate dropping oldest intervals one at a time
|
||||
let running = intervals.reduce((sum, i) => sum + (counts.get(i) ?? 0), 0)
|
||||
for (let i = intervals.length - 1; i >= 0; i--) {
|
||||
running -= counts.get(intervals[i]) ?? 0
|
||||
if (running < limit) {
|
||||
// interval at index i rolls out of the window (intervals.length - i) hours from the current hour start
|
||||
const hours = intervals.length - i
|
||||
return Math.ceil((hours * 3_600_000 - (now % 3_600_000)) / 1000)
|
||||
}
|
||||
}
|
||||
return Math.ceil((3_600_000 - (now % 3_600_000)) / 1000)
|
||||
}
|
||||
|
||||
function buildYYYYMMDD(timestamp: number) {
|
||||
return new Date(timestamp)
|
||||
.toISOString()
|
||||
|
||||
@@ -1,92 +0,0 @@
|
||||
import { describe, expect, test } from "bun:test"
|
||||
import { getRetryAfterDay, getRetryAfterHour } from "../src/routes/zen/util/rateLimiter"
|
||||
|
||||
describe("getRetryAfterDay", () => {
|
||||
test("returns full day at midnight UTC", () => {
|
||||
const midnight = Date.UTC(2026, 0, 15, 0, 0, 0, 0)
|
||||
expect(getRetryAfterDay(midnight)).toBe(86_400)
|
||||
})
|
||||
|
||||
test("returns remaining seconds until next UTC day", () => {
|
||||
const noon = Date.UTC(2026, 0, 15, 12, 0, 0, 0)
|
||||
expect(getRetryAfterDay(noon)).toBe(43_200)
|
||||
})
|
||||
|
||||
test("rounds up to nearest second", () => {
|
||||
const almost = Date.UTC(2026, 0, 15, 23, 59, 59, 500)
|
||||
expect(getRetryAfterDay(almost)).toBe(1)
|
||||
})
|
||||
})
|
||||
|
||||
describe("getRetryAfterHour", () => {
|
||||
// 14:30:00 UTC — 30 minutes into the current hour
|
||||
const now = Date.UTC(2026, 0, 15, 14, 30, 0, 0)
|
||||
const intervals = ["2026011514", "2026011513", "2026011512"]
|
||||
|
||||
test("waits 3 hours when all usage is in current hour", () => {
|
||||
const rows = [{ interval: "2026011514", count: 10 }]
|
||||
// only current hour has usage — it won't leave the window for 3 hours from hour start
|
||||
// 3 * 3600 - 1800 = 9000s
|
||||
expect(getRetryAfterHour(rows, intervals, 10, now)).toBe(9000)
|
||||
})
|
||||
|
||||
test("waits 1 hour when dropping oldest interval is sufficient", () => {
|
||||
const rows = [
|
||||
{ interval: "2026011514", count: 2 },
|
||||
{ interval: "2026011512", count: 10 },
|
||||
]
|
||||
// total=12, drop oldest (-2h, count=10) -> 2 < 10
|
||||
// hours = 3 - 2 = 1 -> 1 * 3600 - 1800 = 1800s
|
||||
expect(getRetryAfterHour(rows, intervals, 10, now)).toBe(1800)
|
||||
})
|
||||
|
||||
test("waits 2 hours when usage spans oldest two intervals", () => {
|
||||
const rows = [
|
||||
{ interval: "2026011513", count: 8 },
|
||||
{ interval: "2026011512", count: 5 },
|
||||
]
|
||||
// total=13, drop -2h (5) -> 8, 8 >= 8, drop -1h (8) -> 0 < 8
|
||||
// hours = 3 - 1 = 2 -> 2 * 3600 - 1800 = 5400s
|
||||
expect(getRetryAfterHour(rows, intervals, 8, now)).toBe(5400)
|
||||
})
|
||||
|
||||
test("waits 1 hour when oldest interval alone pushes over limit", () => {
|
||||
const rows = [
|
||||
{ interval: "2026011514", count: 1 },
|
||||
{ interval: "2026011513", count: 1 },
|
||||
{ interval: "2026011512", count: 10 },
|
||||
]
|
||||
// total=12, drop -2h (10) -> 2 < 10
|
||||
// hours = 3 - 2 = 1 -> 1800s
|
||||
expect(getRetryAfterHour(rows, intervals, 10, now)).toBe(1800)
|
||||
})
|
||||
|
||||
test("waits 2 hours when middle interval keeps total over limit", () => {
|
||||
const rows = [
|
||||
{ interval: "2026011514", count: 4 },
|
||||
{ interval: "2026011513", count: 4 },
|
||||
{ interval: "2026011512", count: 4 },
|
||||
]
|
||||
// total=12, drop -2h (4) -> 8, 8 >= 5, drop -1h (4) -> 4 < 5
|
||||
// hours = 3 - 1 = 2 -> 5400s
|
||||
expect(getRetryAfterHour(rows, intervals, 5, now)).toBe(5400)
|
||||
})
|
||||
|
||||
test("rounds up to nearest second", () => {
|
||||
const offset = Date.UTC(2026, 0, 15, 14, 30, 0, 500)
|
||||
const rows = [
|
||||
{ interval: "2026011514", count: 2 },
|
||||
{ interval: "2026011512", count: 10 },
|
||||
]
|
||||
// hours=1 -> 3_600_000 - 1_800_500 = 1_799_500ms -> ceil(1799.5) = 1800
|
||||
expect(getRetryAfterHour(rows, intervals, 10, offset)).toBe(1800)
|
||||
})
|
||||
|
||||
test("fallback returns time until next hour when rows are empty", () => {
|
||||
// edge case: rows empty but function called (shouldn't happen in practice)
|
||||
// loop drops all zeros, running stays 0 which is < any positive limit on first iteration
|
||||
const rows: { interval: string; count: number }[] = []
|
||||
// drop -2h (0) -> 0 < 1 -> hours = 3 - 2 = 1 -> 1800s
|
||||
expect(getRetryAfterHour(rows, intervals, 1, now)).toBe(1800)
|
||||
})
|
||||
})
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/console-core",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
@@ -19,7 +19,6 @@
|
||||
"zod": "catalog:"
|
||||
},
|
||||
"exports": {
|
||||
"./*.js": "./src/*.ts",
|
||||
"./*": "./src/*"
|
||||
},
|
||||
"scripts": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/console-function",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
|
||||
@@ -17,7 +17,8 @@ export default {
|
||||
)
|
||||
return
|
||||
|
||||
let data = {
|
||||
let metrics = {
|
||||
event_type: "completions",
|
||||
"cf.continent": event.event.request.cf?.continent,
|
||||
"cf.country": event.event.request.cf?.country,
|
||||
"cf.city": event.event.request.cf?.city,
|
||||
@@ -30,28 +31,22 @@ export default {
|
||||
status: event.event.response?.status ?? 0,
|
||||
ip: event.event.request.headers["x-real-ip"],
|
||||
}
|
||||
const time = new Date(event.eventTimestamp ?? Date.now()).toISOString()
|
||||
const events = []
|
||||
for (const log of event.logs) {
|
||||
for (const message of log.message) {
|
||||
if (!message.startsWith("_metric:")) continue
|
||||
const json = JSON.parse(message.slice(8))
|
||||
data = { ...data, ...json }
|
||||
if ("llm.error.code" in json) {
|
||||
events.push({ time, data: { ...data, event_type: "llm.error" } })
|
||||
}
|
||||
metrics = { ...metrics, ...JSON.parse(message.slice(8)) }
|
||||
}
|
||||
}
|
||||
events.push({ time, data: { ...data, event_type: "completions" } })
|
||||
console.log(JSON.stringify(data, null, 2))
|
||||
console.log(JSON.stringify(metrics, null, 2))
|
||||
|
||||
const ret = await fetch("https://api.honeycomb.io/1/batch/zen", {
|
||||
const ret = await fetch("https://api.honeycomb.io/1/events/zen", {
|
||||
method: "POST",
|
||||
headers: {
|
||||
"Content-Type": "application/json",
|
||||
"X-Honeycomb-Event-Time": (event.eventTimestamp ?? Date.now()).toString(),
|
||||
"X-Honeycomb-Team": Resource.HONEYCOMB_API_KEY.value,
|
||||
},
|
||||
body: JSON.stringify(events),
|
||||
body: JSON.stringify(metrics),
|
||||
})
|
||||
console.log(ret.status)
|
||||
console.log(await ret.text())
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/console-mail",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"dependencies": {
|
||||
"@jsx-email/all": "2.2.3",
|
||||
"@jsx-email/cli": "1.4.3",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"name": "@opencode-ai/desktop",
|
||||
"private": true,
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -20,9 +20,9 @@ use std::{
|
||||
env,
|
||||
net::TcpListener,
|
||||
path::PathBuf,
|
||||
process::Command,
|
||||
sync::{Arc, Mutex},
|
||||
time::Duration,
|
||||
process::Command,
|
||||
};
|
||||
use tauri::{AppHandle, Manager, RunEvent, State, ipc::Channel};
|
||||
#[cfg(any(target_os = "linux", all(debug_assertions, windows)))]
|
||||
@@ -152,12 +152,12 @@ fn check_app_exists(app_name: &str) -> bool {
|
||||
{
|
||||
check_windows_app(app_name)
|
||||
}
|
||||
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
{
|
||||
check_macos_app(app_name)
|
||||
}
|
||||
|
||||
|
||||
#[cfg(target_os = "linux")]
|
||||
{
|
||||
check_linux_app(app_name)
|
||||
@@ -165,165 +165,11 @@ fn check_app_exists(app_name: &str) -> bool {
|
||||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
fn check_windows_app(_app_name: &str) -> bool {
|
||||
fn check_windows_app(app_name: &str) -> bool {
|
||||
// Check if command exists in PATH, including .exe
|
||||
return true;
|
||||
}
|
||||
|
||||
#[cfg(target_os = "windows")]
|
||||
fn resolve_windows_app_path(app_name: &str) -> Option<String> {
|
||||
use std::path::{Path, PathBuf};
|
||||
|
||||
// Try to find the command using 'where'
|
||||
let output = Command::new("where").arg(app_name).output().ok()?;
|
||||
|
||||
if !output.status.success() {
|
||||
return None;
|
||||
}
|
||||
|
||||
let paths = String::from_utf8_lossy(&output.stdout)
|
||||
.lines()
|
||||
.map(str::trim)
|
||||
.filter(|line| !line.is_empty())
|
||||
.map(PathBuf::from)
|
||||
.collect::<Vec<_>>();
|
||||
|
||||
let has_ext = |path: &Path, ext: &str| {
|
||||
path.extension()
|
||||
.and_then(|v| v.to_str())
|
||||
.map(|v| v.eq_ignore_ascii_case(ext))
|
||||
.unwrap_or(false)
|
||||
};
|
||||
|
||||
if let Some(path) = paths.iter().find(|path| has_ext(path, "exe")) {
|
||||
return Some(path.to_string_lossy().to_string());
|
||||
}
|
||||
|
||||
let resolve_cmd = |path: &Path| -> Option<String> {
|
||||
let content = std::fs::read_to_string(path).ok()?;
|
||||
|
||||
for token in content.split('"') {
|
||||
let lower = token.to_ascii_lowercase();
|
||||
if !lower.contains(".exe") {
|
||||
continue;
|
||||
}
|
||||
|
||||
if let Some(index) = lower.find("%~dp0") {
|
||||
let base = path.parent()?;
|
||||
let suffix = &token[index + 5..];
|
||||
let mut resolved = PathBuf::from(base);
|
||||
|
||||
for part in suffix.replace('/', "\\").split('\\') {
|
||||
if part.is_empty() || part == "." {
|
||||
continue;
|
||||
}
|
||||
if part == ".." {
|
||||
let _ = resolved.pop();
|
||||
continue;
|
||||
}
|
||||
resolved.push(part);
|
||||
}
|
||||
|
||||
if resolved.exists() {
|
||||
return Some(resolved.to_string_lossy().to_string());
|
||||
}
|
||||
}
|
||||
|
||||
let resolved = PathBuf::from(token);
|
||||
if resolved.exists() {
|
||||
return Some(resolved.to_string_lossy().to_string());
|
||||
}
|
||||
}
|
||||
|
||||
None
|
||||
};
|
||||
|
||||
for path in &paths {
|
||||
if has_ext(path, "cmd") || has_ext(path, "bat") {
|
||||
if let Some(resolved) = resolve_cmd(path) {
|
||||
return Some(resolved);
|
||||
}
|
||||
}
|
||||
|
||||
if path.extension().is_none() {
|
||||
let cmd = path.with_extension("cmd");
|
||||
if cmd.exists() {
|
||||
if let Some(resolved) = resolve_cmd(&cmd) {
|
||||
return Some(resolved);
|
||||
}
|
||||
}
|
||||
|
||||
let bat = path.with_extension("bat");
|
||||
if bat.exists() {
|
||||
if let Some(resolved) = resolve_cmd(&bat) {
|
||||
return Some(resolved);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
let key = app_name
|
||||
.chars()
|
||||
.filter(|v| v.is_ascii_alphanumeric())
|
||||
.flat_map(|v| v.to_lowercase())
|
||||
.collect::<String>();
|
||||
|
||||
if !key.is_empty() {
|
||||
for path in &paths {
|
||||
let dirs = [
|
||||
path.parent(),
|
||||
path.parent().and_then(|dir| dir.parent()),
|
||||
path.parent()
|
||||
.and_then(|dir| dir.parent())
|
||||
.and_then(|dir| dir.parent()),
|
||||
];
|
||||
|
||||
for dir in dirs.into_iter().flatten() {
|
||||
if let Ok(entries) = std::fs::read_dir(dir) {
|
||||
for entry in entries.flatten() {
|
||||
let candidate = entry.path();
|
||||
if !has_ext(&candidate, "exe") {
|
||||
continue;
|
||||
}
|
||||
|
||||
let Some(stem) = candidate.file_stem().and_then(|v| v.to_str()) else {
|
||||
continue;
|
||||
};
|
||||
|
||||
let name = stem
|
||||
.chars()
|
||||
.filter(|v| v.is_ascii_alphanumeric())
|
||||
.flat_map(|v| v.to_lowercase())
|
||||
.collect::<String>();
|
||||
|
||||
if name.contains(&key) || key.contains(&name) {
|
||||
return Some(candidate.to_string_lossy().to_string());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
paths.first().map(|path| path.to_string_lossy().to_string())
|
||||
}
|
||||
|
||||
#[tauri::command]
|
||||
#[specta::specta]
|
||||
fn resolve_app_path(app_name: &str) -> Option<String> {
|
||||
#[cfg(target_os = "windows")]
|
||||
{
|
||||
resolve_windows_app_path(app_name)
|
||||
}
|
||||
|
||||
#[cfg(not(target_os = "windows"))]
|
||||
{
|
||||
// On macOS/Linux, just return the app_name as-is since
|
||||
// the opener plugin handles them correctly
|
||||
Some(app_name.to_string())
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(target_os = "macos")]
|
||||
fn check_macos_app(app_name: &str) -> bool {
|
||||
// Check common installation locations
|
||||
@@ -335,13 +181,13 @@ fn check_macos_app(app_name: &str) -> bool {
|
||||
if let Ok(home) = std::env::var("HOME") {
|
||||
app_locations.push(format!("{}/Applications/{}.app", home, app_name));
|
||||
}
|
||||
|
||||
|
||||
for location in app_locations {
|
||||
if std::path::Path::new(&location).exists() {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Also check if command exists in PATH
|
||||
Command::new("which")
|
||||
.arg(app_name)
|
||||
@@ -405,8 +251,7 @@ pub fn run() {
|
||||
get_display_backend,
|
||||
set_display_backend,
|
||||
markdown::parse_markdown_command,
|
||||
check_app_exists,
|
||||
resolve_app_path
|
||||
check_app_exists
|
||||
])
|
||||
.events(tauri_specta::collect_events![LoadingWindowComplete])
|
||||
.error_handling(tauri_specta::ErrorHandlingMode::Throw);
|
||||
|
||||
@@ -14,7 +14,6 @@ export const commands = {
|
||||
setDisplayBackend: (backend: LinuxDisplayBackend) => __TAURI_INVOKE<null>("set_display_backend", { backend }),
|
||||
parseMarkdownCommand: (markdown: string) => __TAURI_INVOKE<string>("parse_markdown_command", { markdown }),
|
||||
checkAppExists: (appName: string) => __TAURI_INVOKE<boolean>("check_app_exists", { appName }),
|
||||
resolveAppPath: (appName: string) => __TAURI_INVOKE<string | null>("resolve_app_path", { appName }),
|
||||
};
|
||||
|
||||
/** Events */
|
||||
|
||||
@@ -98,12 +98,7 @@ const createPlatform = (password: Accessor<string | null>): Platform => ({
|
||||
void shellOpen(url).catch(() => undefined)
|
||||
},
|
||||
|
||||
async openPath(path: string, app?: string) {
|
||||
const os = ostype()
|
||||
if (os === "windows" && app) {
|
||||
const resolvedApp = await commands.resolveAppPath(app)
|
||||
return openerOpenPath(path, resolvedApp || app)
|
||||
}
|
||||
openPath(path: string, app?: string) {
|
||||
return openerOpenPath(path, app)
|
||||
},
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/enterprise",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
id = "opencode"
|
||||
name = "OpenCode"
|
||||
description = "The open source coding agent."
|
||||
version = "1.1.56"
|
||||
version = "1.1.53"
|
||||
schema_version = 1
|
||||
authors = ["Anomaly"]
|
||||
repository = "https://github.com/anomalyco/opencode"
|
||||
@@ -11,26 +11,26 @@ name = "OpenCode"
|
||||
icon = "./icons/opencode.svg"
|
||||
|
||||
[agent_servers.opencode.targets.darwin-aarch64]
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.56/opencode-darwin-arm64.zip"
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.53/opencode-darwin-arm64.zip"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.darwin-x86_64]
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.56/opencode-darwin-x64.zip"
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.53/opencode-darwin-x64.zip"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.linux-aarch64]
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.56/opencode-linux-arm64.tar.gz"
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.53/opencode-linux-arm64.tar.gz"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.linux-x86_64]
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.56/opencode-linux-x64.tar.gz"
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.53/opencode-linux-x64.tar.gz"
|
||||
cmd = "./opencode"
|
||||
args = ["acp"]
|
||||
|
||||
[agent_servers.opencode.targets.windows-x86_64]
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.56/opencode-windows-x64.zip"
|
||||
archive = "https://github.com/anomalyco/opencode/releases/download/v1.1.53/opencode-windows-x64.zip"
|
||||
cmd = "./opencode.exe"
|
||||
args = ["acp"]
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/function",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
|
||||
@@ -2,4 +2,4 @@ preload = ["@opentui/solid/preload"]
|
||||
|
||||
[test]
|
||||
preload = ["./test/preload.ts"]
|
||||
timeout = 30000 # 30 seconds - allow time for package installation
|
||||
timeout = 10000 # 10 seconds (default is 5000ms)
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"name": "opencode",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -78,9 +78,6 @@ export namespace Server {
|
||||
})
|
||||
})
|
||||
.use((c, next) => {
|
||||
// Allow CORS preflight requests to succeed without auth.
|
||||
// Browser clients sending Authorization headers will preflight with OPTIONS.
|
||||
if (c.req.method === "OPTIONS") return next()
|
||||
const password = Flag.OPENCODE_SERVER_PASSWORD
|
||||
if (!password) return next()
|
||||
const username = Flag.OPENCODE_SERVER_USERNAME ?? "opencode"
|
||||
@@ -110,12 +107,7 @@ export namespace Server {
|
||||
|
||||
if (input.startsWith("http://localhost:")) return input
|
||||
if (input.startsWith("http://127.0.0.1:")) return input
|
||||
if (
|
||||
input === "tauri://localhost" ||
|
||||
input === "http://tauri.localhost" ||
|
||||
input === "https://tauri.localhost"
|
||||
)
|
||||
return input
|
||||
if (input === "tauri://localhost" || input === "http://tauri.localhost") return input
|
||||
|
||||
// *.opencode.ai (https only, adjust if needed)
|
||||
if (/^https:\/\/([a-z0-9-]+\.)*opencode\.ai$/.test(input)) {
|
||||
|
||||
@@ -64,8 +64,6 @@ export namespace SessionRetry {
|
||||
|
||||
if (MessageV2.APIError.isInstance(error)) {
|
||||
if (!error.data.isRetryable) return undefined
|
||||
if (error.data.responseBody?.includes("FreeUsageLimitError"))
|
||||
return `Free usage exceeded, add credits https://opencode.ai/zen`
|
||||
return error.data.message.includes("Overloaded") ? "Provider is overloaded" : error.data.message
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,8 @@ import { Identifier } from "@/id/id"
|
||||
import { Snapshot } from "@/snapshot"
|
||||
|
||||
import { Log } from "@/util/log"
|
||||
import path from "path"
|
||||
import { Instance } from "@/project/instance"
|
||||
import { Storage } from "@/storage/storage"
|
||||
import { Bus } from "@/bus"
|
||||
|
||||
@@ -89,7 +91,18 @@ export namespace SessionSummary {
|
||||
)
|
||||
|
||||
async function summarizeSession(input: { sessionID: string; messages: MessageV2.WithParts[] }) {
|
||||
const diffs = await computeDiff({ messages: input.messages })
|
||||
const files = new Set(
|
||||
input.messages
|
||||
.flatMap((x) => x.parts)
|
||||
.filter((x) => x.type === "patch")
|
||||
.flatMap((x) => x.files)
|
||||
.map((x) => path.relative(Instance.worktree, x).replaceAll("\\", "/")),
|
||||
)
|
||||
const diffs = await computeDiff({ messages: input.messages }).then((x) =>
|
||||
x.filter((x) => {
|
||||
return files.has(x.file)
|
||||
}),
|
||||
)
|
||||
await Session.update(input.sessionID, (draft) => {
|
||||
draft.summary = {
|
||||
additions: diffs.reduce((sum, x) => sum + x.additions, 0),
|
||||
@@ -193,6 +206,7 @@ export namespace SessionSummary {
|
||||
for (const part of item.parts) {
|
||||
if (part.type === "step-finish" && part.snapshot) {
|
||||
to = part.snapshot
|
||||
break
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/plugin",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
{
|
||||
"$schema": "https://json.schemastore.org/package.json",
|
||||
"name": "@opencode-ai/sdk",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/slack",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"scripts": {
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/ui",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"exports": {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import { type FileContents, File, FileOptions, LineAnnotation, type SelectedLineRange } from "@pierre/diffs"
|
||||
import { ComponentProps, createEffect, createMemo, createSignal, onCleanup, onMount, Show, splitProps } from "solid-js"
|
||||
import { Portal } from "solid-js/web"
|
||||
import { createDefaultOptions, styleVariables } from "../pierre"
|
||||
import { getWorkerPool } from "../pierre/worker"
|
||||
import { Icon } from "./icon"
|
||||
@@ -126,9 +125,11 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
let wrapper!: HTMLDivElement
|
||||
let container!: HTMLDivElement
|
||||
let findInput: HTMLInputElement | undefined
|
||||
let findBar: HTMLDivElement | undefined
|
||||
let findOverlay!: HTMLDivElement
|
||||
let findOverlayFrame: number | undefined
|
||||
let findOverlayScroll: HTMLElement[] = []
|
||||
let findScroll: HTMLElement | undefined
|
||||
let observer: MutationObserver | undefined
|
||||
let renderToken = 0
|
||||
let selectionFrame: number | undefined
|
||||
@@ -158,8 +159,6 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
let findMode: "highlights" | "overlay" = "overlay"
|
||||
let findHits: Range[] = []
|
||||
|
||||
const [findPos, setFindPos] = createSignal<{ top: number; right: number }>({ top: 8, right: 8 })
|
||||
|
||||
const file = createMemo(
|
||||
() =>
|
||||
new File<T>(
|
||||
@@ -292,26 +291,23 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
setFindIndex(0)
|
||||
}
|
||||
|
||||
const getScrollParent = (el: HTMLElement): HTMLElement | undefined => {
|
||||
const getScrollParent = (el: HTMLElement): HTMLElement | null => {
|
||||
let parent = el.parentElement
|
||||
while (parent) {
|
||||
const style = getComputedStyle(parent)
|
||||
if (style.overflowY === "auto" || style.overflowY === "scroll") return parent
|
||||
parent = parent.parentElement
|
||||
}
|
||||
return null
|
||||
}
|
||||
|
||||
const positionFindBar = () => {
|
||||
if (typeof window === "undefined") return
|
||||
|
||||
const root = getScrollParent(wrapper) ?? wrapper
|
||||
const rect = root.getBoundingClientRect()
|
||||
const title = parseFloat(getComputedStyle(root).getPropertyValue("--session-title-height"))
|
||||
const header = Number.isNaN(title) ? 0 : title
|
||||
setFindPos({
|
||||
top: Math.round(rect.top) + header - 4,
|
||||
right: Math.round(window.innerWidth - rect.right) + 8,
|
||||
})
|
||||
if (!findBar || !wrapper) return
|
||||
const scrollTop = findScroll ? findScroll.scrollTop : window.scrollY
|
||||
findBar.style.position = "absolute"
|
||||
findBar.style.top = `${scrollTop + 8}px`
|
||||
findBar.style.right = "8px"
|
||||
findBar.style.left = ""
|
||||
}
|
||||
|
||||
const scanFind = (root: ShadowRoot, query: string) => {
|
||||
@@ -430,6 +426,7 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
}
|
||||
if (opts?.scroll && active) {
|
||||
scrollToRange(active)
|
||||
positionFindBar()
|
||||
}
|
||||
return
|
||||
}
|
||||
@@ -438,6 +435,7 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
syncOverlayScroll()
|
||||
if (opts?.scroll && active) {
|
||||
scrollToRange(active)
|
||||
positionFindBar()
|
||||
}
|
||||
scheduleOverlay()
|
||||
}
|
||||
@@ -466,12 +464,14 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
return
|
||||
}
|
||||
scrollToRange(active)
|
||||
positionFindBar()
|
||||
return
|
||||
}
|
||||
|
||||
clearHighlightFind()
|
||||
syncOverlayScroll()
|
||||
scrollToRange(active)
|
||||
positionFindBar()
|
||||
scheduleOverlay()
|
||||
}
|
||||
|
||||
@@ -484,9 +484,11 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
findCurrent = host
|
||||
findTarget = host
|
||||
|
||||
findScroll = getScrollParent(wrapper) ?? undefined
|
||||
if (!findOpen()) setFindOpen(true)
|
||||
requestAnimationFrame(() => {
|
||||
applyFind({ scroll: true })
|
||||
positionFindBar()
|
||||
findInput?.focus()
|
||||
findInput?.select()
|
||||
})
|
||||
@@ -512,18 +514,18 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
|
||||
createEffect(() => {
|
||||
if (!findOpen()) return
|
||||
findScroll = getScrollParent(wrapper) ?? undefined
|
||||
const target = findScroll ?? window
|
||||
|
||||
const update = () => positionFindBar()
|
||||
requestAnimationFrame(update)
|
||||
window.addEventListener("resize", update, { passive: true })
|
||||
|
||||
const root = getScrollParent(wrapper) ?? wrapper
|
||||
const observer = typeof ResizeObserver === "undefined" ? undefined : new ResizeObserver(() => update())
|
||||
observer?.observe(root)
|
||||
const handler = () => positionFindBar()
|
||||
target.addEventListener("scroll", handler, { passive: true })
|
||||
window.addEventListener("resize", handler, { passive: true })
|
||||
handler()
|
||||
|
||||
onCleanup(() => {
|
||||
window.removeEventListener("resize", update)
|
||||
observer?.disconnect()
|
||||
target.removeEventListener("scroll", handler)
|
||||
window.removeEventListener("resize", handler)
|
||||
findScroll = undefined
|
||||
})
|
||||
})
|
||||
|
||||
@@ -914,64 +916,6 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
pendingSelectionEnd = false
|
||||
})
|
||||
|
||||
const FindBar = (barProps: { class: string; style?: ComponentProps<"div">["style"] }) => (
|
||||
<div class={barProps.class} style={barProps.style} onPointerDown={(e) => e.stopPropagation()}>
|
||||
<Icon name="magnifying-glass" size="small" class="text-text-weak shrink-0" />
|
||||
<input
|
||||
ref={findInput}
|
||||
placeholder="Find"
|
||||
value={findQuery()}
|
||||
class="w-40 bg-transparent outline-none text-14-regular text-text-strong placeholder:text-text-weak"
|
||||
onInput={(e) => {
|
||||
setFindQuery(e.currentTarget.value)
|
||||
setFindIndex(0)
|
||||
applyFind({ reset: true, scroll: true })
|
||||
}}
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === "Escape") {
|
||||
e.preventDefault()
|
||||
closeFind()
|
||||
return
|
||||
}
|
||||
if (e.key !== "Enter") return
|
||||
e.preventDefault()
|
||||
stepFind(e.shiftKey ? -1 : 1)
|
||||
}}
|
||||
/>
|
||||
<div class="shrink-0 text-12-regular text-text-weak tabular-nums text-right" style={{ width: "10ch" }}>
|
||||
{findCount() ? `${findIndex() + 1}/${findCount()}` : "0/0"}
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<button
|
||||
type="button"
|
||||
class="size-6 grid place-items-center rounded text-text-weak hover:bg-surface-base-hover hover:text-text-strong disabled:opacity-40 disabled:pointer-events-none"
|
||||
disabled={findCount() === 0}
|
||||
aria-label="Previous match"
|
||||
onClick={() => stepFind(-1)}
|
||||
>
|
||||
<Icon name="chevron-down" size="small" class="rotate-180" />
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="size-6 grid place-items-center rounded text-text-weak hover:bg-surface-base-hover hover:text-text-strong disabled:opacity-40 disabled:pointer-events-none"
|
||||
disabled={findCount() === 0}
|
||||
aria-label="Next match"
|
||||
onClick={() => stepFind(1)}
|
||||
>
|
||||
<Icon name="chevron-down" size="small" />
|
||||
</button>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="size-6 grid place-items-center rounded text-text-weak hover:bg-surface-base-hover hover:text-text-strong"
|
||||
aria-label="Close search"
|
||||
onClick={closeFind}
|
||||
>
|
||||
<Icon name="close-small" size="small" />
|
||||
</button>
|
||||
</div>
|
||||
)
|
||||
|
||||
return (
|
||||
<div
|
||||
data-component="code"
|
||||
@@ -992,15 +936,65 @@ export function Code<T>(props: CodeProps<T>) {
|
||||
}}
|
||||
>
|
||||
<Show when={findOpen()}>
|
||||
<Portal>
|
||||
<FindBar
|
||||
class="fixed z-50 flex h-8 items-center gap-2 rounded-md border border-border-base bg-background-base px-3 shadow-md"
|
||||
style={{
|
||||
top: `${findPos().top}px`,
|
||||
right: `${findPos().right}px`,
|
||||
<div
|
||||
ref={findBar}
|
||||
class="z-50 flex h-8 items-center gap-2 rounded-md border border-border-base bg-background-base px-3 shadow-md"
|
||||
onPointerDown={(e) => e.stopPropagation()}
|
||||
>
|
||||
<Icon name="magnifying-glass" size="small" class="text-text-weak shrink-0" />
|
||||
<input
|
||||
ref={findInput}
|
||||
placeholder="Find"
|
||||
value={findQuery()}
|
||||
class="w-40 bg-transparent outline-none text-14-regular text-text-strong placeholder:text-text-weak"
|
||||
onInput={(e) => {
|
||||
setFindQuery(e.currentTarget.value)
|
||||
setFindIndex(0)
|
||||
applyFind({ reset: true, scroll: true })
|
||||
}}
|
||||
onKeyDown={(e) => {
|
||||
if (e.key === "Escape") {
|
||||
e.preventDefault()
|
||||
closeFind()
|
||||
return
|
||||
}
|
||||
if (e.key !== "Enter") return
|
||||
e.preventDefault()
|
||||
stepFind(e.shiftKey ? -1 : 1)
|
||||
}}
|
||||
/>
|
||||
</Portal>
|
||||
<div class="shrink-0 text-12-regular text-text-weak tabular-nums text-right" style={{ width: "10ch" }}>
|
||||
{findCount() ? `${findIndex() + 1}/${findCount()}` : "0/0"}
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<button
|
||||
type="button"
|
||||
class="size-6 grid place-items-center rounded text-text-weak hover:bg-surface-base-hover hover:text-text-strong disabled:opacity-40 disabled:pointer-events-none"
|
||||
disabled={findCount() === 0}
|
||||
aria-label="Previous match"
|
||||
onClick={() => stepFind(-1)}
|
||||
>
|
||||
<Icon name="chevron-down" size="small" class="rotate-180" />
|
||||
</button>
|
||||
<button
|
||||
type="button"
|
||||
class="size-6 grid place-items-center rounded text-text-weak hover:bg-surface-base-hover hover:text-text-strong disabled:opacity-40 disabled:pointer-events-none"
|
||||
disabled={findCount() === 0}
|
||||
aria-label="Next match"
|
||||
onClick={() => stepFind(1)}
|
||||
>
|
||||
<Icon name="chevron-down" size="small" />
|
||||
</button>
|
||||
</div>
|
||||
<button
|
||||
type="button"
|
||||
class="size-6 grid place-items-center rounded text-text-weak hover:bg-surface-base-hover hover:text-text-strong"
|
||||
aria-label="Close search"
|
||||
onClick={closeFind}
|
||||
>
|
||||
<Icon name="close-small" size="small" />
|
||||
</button>
|
||||
</div>
|
||||
</Show>
|
||||
<div ref={container} />
|
||||
<div ref={findOverlay} class="pointer-events-none absolute inset-0 z-0" />
|
||||
|
||||
@@ -877,74 +877,6 @@ ToolRegistry.register({
|
||||
const data = useData()
|
||||
const i18n = useI18n()
|
||||
const childSessionId = () => props.metadata.sessionId as string | undefined
|
||||
|
||||
const href = createMemo(() => {
|
||||
const sessionId = childSessionId()
|
||||
if (!sessionId) return
|
||||
|
||||
const direct = data.sessionHref?.(sessionId)
|
||||
if (direct) return direct
|
||||
|
||||
if (typeof window === "undefined") return
|
||||
const path = window.location.pathname
|
||||
const idx = path.indexOf("/session")
|
||||
if (idx === -1) return
|
||||
return `${path.slice(0, idx)}/session/${sessionId}`
|
||||
})
|
||||
|
||||
createEffect(() => {
|
||||
const sessionId = childSessionId()
|
||||
if (!sessionId) return
|
||||
const sync = data.syncSession
|
||||
if (!sync) return
|
||||
Promise.resolve(sync(sessionId)).catch(() => undefined)
|
||||
})
|
||||
|
||||
const handleLinkClick = (e: MouseEvent) => {
|
||||
const sessionId = childSessionId()
|
||||
const url = href()
|
||||
if (!sessionId || !url) return
|
||||
|
||||
e.stopPropagation()
|
||||
|
||||
if (e.button !== 0 || e.metaKey || e.ctrlKey || e.shiftKey || e.altKey) return
|
||||
|
||||
const nav = data.navigateToSession
|
||||
if (!nav || typeof window === "undefined") return
|
||||
|
||||
e.preventDefault()
|
||||
const before = window.location.pathname + window.location.search + window.location.hash
|
||||
nav(sessionId)
|
||||
setTimeout(() => {
|
||||
const after = window.location.pathname + window.location.search + window.location.hash
|
||||
if (after === before) window.location.assign(url)
|
||||
}, 50)
|
||||
}
|
||||
|
||||
const trigger = () => (
|
||||
<div data-slot="basic-tool-tool-info-structured">
|
||||
<div data-slot="basic-tool-tool-info-main">
|
||||
<span data-slot="basic-tool-tool-title" class="capitalize">
|
||||
{i18n.t("ui.tool.agent", { type: props.input.subagent_type || props.tool })}
|
||||
</span>
|
||||
<Show when={props.input.description}>
|
||||
<Switch>
|
||||
<Match when={href()}>
|
||||
{(url) => (
|
||||
<a data-slot="basic-tool-tool-subtitle" class="clickable" href={url()} onClick={handleLinkClick}>
|
||||
{props.input.description}
|
||||
</a>
|
||||
)}
|
||||
</Match>
|
||||
<Match when={true}>
|
||||
<span data-slot="basic-tool-tool-subtitle">{props.input.description}</span>
|
||||
</Match>
|
||||
</Switch>
|
||||
</Show>
|
||||
</div>
|
||||
</div>
|
||||
)
|
||||
|
||||
const childToolParts = createMemo(() => {
|
||||
const sessionId = childSessionId()
|
||||
if (!sessionId) return []
|
||||
@@ -992,6 +924,13 @@ ToolRegistry.register({
|
||||
})
|
||||
}
|
||||
|
||||
const handleSubtitleClick = () => {
|
||||
const sessionId = childSessionId()
|
||||
if (sessionId && data.navigateToSession) {
|
||||
data.navigateToSession(sessionId)
|
||||
}
|
||||
}
|
||||
|
||||
const renderChildToolPart = () => {
|
||||
const toolData = childToolPart()
|
||||
if (!toolData) return null
|
||||
@@ -1019,7 +958,21 @@ ToolRegistry.register({
|
||||
<Switch>
|
||||
<Match when={childPermission()}>
|
||||
<>
|
||||
<Show when={childToolPart()} fallback={<BasicTool icon="task" defaultOpen={true} trigger={trigger()} />}>
|
||||
<Show
|
||||
when={childToolPart()}
|
||||
fallback={
|
||||
<BasicTool
|
||||
icon="task"
|
||||
defaultOpen={true}
|
||||
trigger={{
|
||||
title: i18n.t("ui.tool.agent", { type: props.input.subagent_type || props.tool }),
|
||||
titleClass: "capitalize",
|
||||
subtitle: props.input.description,
|
||||
}}
|
||||
onSubtitleClick={handleSubtitleClick}
|
||||
/>
|
||||
}
|
||||
>
|
||||
{renderChildToolPart()}
|
||||
</Show>
|
||||
<div data-component="permission-prompt">
|
||||
@@ -1038,7 +991,16 @@ ToolRegistry.register({
|
||||
</>
|
||||
</Match>
|
||||
<Match when={true}>
|
||||
<BasicTool icon="task" defaultOpen={true} trigger={trigger()}>
|
||||
<BasicTool
|
||||
icon="task"
|
||||
defaultOpen={true}
|
||||
trigger={{
|
||||
title: i18n.t("ui.tool.agent", { type: props.input.subagent_type || props.tool }),
|
||||
titleClass: "capitalize",
|
||||
subtitle: props.input.description,
|
||||
}}
|
||||
onSubtitleClick={handleSubtitleClick}
|
||||
>
|
||||
<div
|
||||
ref={autoScroll.scrollRef}
|
||||
onScroll={autoScroll.handleScroll}
|
||||
|
||||
@@ -48,10 +48,6 @@ export type QuestionRejectFn = (input: { requestID: string }) => void
|
||||
|
||||
export type NavigateToSessionFn = (sessionID: string) => void
|
||||
|
||||
export type SessionHrefFn = (sessionID: string) => string
|
||||
|
||||
export type SyncSessionFn = (sessionID: string) => void | Promise<void>
|
||||
|
||||
export const { use: useData, provider: DataProvider } = createSimpleContext({
|
||||
name: "Data",
|
||||
init: (props: {
|
||||
@@ -61,8 +57,6 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({
|
||||
onQuestionReply?: QuestionReplyFn
|
||||
onQuestionReject?: QuestionRejectFn
|
||||
onNavigateToSession?: NavigateToSessionFn
|
||||
onSessionHref?: SessionHrefFn
|
||||
onSyncSession?: SyncSessionFn
|
||||
}) => {
|
||||
return {
|
||||
get store() {
|
||||
@@ -75,8 +69,6 @@ export const { use: useData, provider: DataProvider } = createSimpleContext({
|
||||
replyToQuestion: props.onQuestionReply,
|
||||
rejectQuestion: props.onQuestionReject,
|
||||
navigateToSession: props.onNavigateToSession,
|
||||
sessionHref: props.onSessionHref,
|
||||
syncSession: props.onSyncSession,
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@opencode-ai/util",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
"name": "@opencode-ai/web",
|
||||
"type": "module",
|
||||
"license": "MIT",
|
||||
"version": "1.1.56",
|
||||
"version": "1.1.53",
|
||||
"scripts": {
|
||||
"dev": "astro dev",
|
||||
"dev:remote": "VITE_API_URL=https://api.opencode.ai astro dev",
|
||||
|
||||
@@ -460,7 +460,7 @@ permission:
|
||||
webfetch: deny
|
||||
---
|
||||
|
||||
Only analyze code and suggest changes.
|
||||
حلل الشفرة فقط واقترح التغييرات.
|
||||
```
|
||||
|
||||
يمكنك ضبط الأذونات لأوامر bash محددة.
|
||||
|
||||
@@ -17,6 +17,7 @@ Za ručnu nadogradnju, pokrenite
|
||||
|
||||
```bash
|
||||
$ opencode upgrade 1.0.0
|
||||
|
||||
```
|
||||
|
||||
Za vraćanje na 0.x, pokrenite
|
||||
|
||||
@@ -149,7 +149,7 @@ Neke ugrađene komande kao što su `/undo` i `/redo` trenutno nisu podržane.
|
||||
:::
|
||||
|
||||
- Ugrađeni alati (operacije sa datotekama, naredbe terminala, itd.)
|
||||
- Prilagođeni alati i slash komande
|
||||
- Prilagođeni alati i komande kosih crta
|
||||
- MCP serveri konfigurisani u vašoj OpenCode konfiguraciji
|
||||
- Pravila specifična za projekat `AGENTS.md`
|
||||
- Prilagođeni formateri i linteri
|
||||
|
||||
@@ -4,42 +4,38 @@ description: Konfigurirajte i koristite specijalizirane agente.
|
||||
---
|
||||
|
||||
Agenti su specijalizirani AI asistenti koji se mogu konfigurirati za specifične zadatke i tokove posla. Oni vam omogućavaju da kreirate fokusirane alate sa prilagođenim upitima, modelima i pristupom alatima.
|
||||
|
||||
:::tip
|
||||
Koristite agenta plana za analizu koda i pregled prijedloga bez ikakvih promjena koda.
|
||||
:::
|
||||
|
||||
Možete se prebacivati između agenata tokom sesije ili ih pozvati spominjanjem `@`.
|
||||
|
||||
---
|
||||
|
||||
## Vrste
|
||||
## Vrsta
|
||||
|
||||
Postoje dvije vrste agenata u OpenCode; primarni agenti i podagenti.
|
||||
Postoje dvije vrste agenata u OpenCode; primarni agensi i subagensi.
|
||||
|
||||
---
|
||||
|
||||
### Primarni agenti
|
||||
|
||||
Primarni agenti su glavni pomoćnici s kojima direktno komunicirate. Možete se kretati kroz njih pomoću tipke **Tab** ili vašeg konfigurisanog povezivanja tipki `switch_agent`. Ovi agenti vode vaš glavni razgovor. Pristup alatima se konfiguriše putem dozvola — na primjer, Build ima omogućene sve alate dok je Plan ograničen.
|
||||
|
||||
:::tip
|
||||
Možete koristiti tipku **Tab** za prebacivanje između primarnih agenata tokom sesije.
|
||||
:::
|
||||
|
||||
OpenCode dolazi sa dva ugrađena primarna agenta, **Build** i **Plan**. Pogledat ćemo ih u nastavku.
|
||||
OpenCode dolazi sa dva ugrađena primarna agenta, **Build** i **Plan**. Hoćemo
|
||||
pogledajte ove u nastavku.
|
||||
|
||||
---
|
||||
|
||||
### Subagenti
|
||||
### Subagent
|
||||
|
||||
Subagenti su specijalizovani pomoćnici koje primarni agenti mogu pozvati za određene zadatke. Možete ih i ručno pozvati **@ spominjanjem** u svojim porukama.
|
||||
|
||||
OpenCode dolazi sa dva ugrađena subagenta, **General** i **Explore**. Ovo ćemo pogledati u nastavku.
|
||||
|
||||
---
|
||||
|
||||
## Ugrađeni
|
||||
## Embedded
|
||||
|
||||
OpenCode dolazi sa dva ugrađena primarna agenta i dva ugrađena subagenta.
|
||||
|
||||
@@ -47,62 +43,54 @@ OpenCode dolazi sa dva ugrađena primarna agenta i dva ugrađena subagenta.
|
||||
|
||||
### Koristi build
|
||||
|
||||
_Mode_: `primary`
|
||||
|
||||
_Način_: `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.
|
||||
|
||||
---
|
||||
|
||||
### Koristi plan
|
||||
### Koristite plan
|
||||
|
||||
_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.
|
||||
_Način_: `primary`
|
||||
Konačan 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`:
|
||||
|
||||
- `file edits`: Sva upisivanja, zakrpe i uređivanja
|
||||
- `bash`: Sve bash komande
|
||||
|
||||
Ovaj agent je koristan kada želite da LLM analizira kod, predloži promjene ili kreira planove bez stvarnih modifikacija vaše baze koda.
|
||||
Ovaj agent je koristan kada želite da LLM analizira kod, predloži promjene ili kreira planove bez stvarnih modifikacija vaše baze koda.
|
||||
|
||||
---
|
||||
|
||||
### Koristi general
|
||||
### Upotreba općenito
|
||||
|
||||
_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.
|
||||
_Način_: `subagent`
|
||||
Agent opće namjene za istraživanje složenih pitanja i izvršavanje zadataka u više koraka. Ima potpuni pristup alatima (osim zadataka), tako da može mijenjati fajl kada je to potrebno. Koristite ovo za paralelno pokretanje više jedinica rada.
|
||||
|
||||
---
|
||||
|
||||
### Koristi explore
|
||||
|
||||
_Mode_: `subagent`
|
||||
### Koristite explore
|
||||
|
||||
_Način_: `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.
|
||||
|
||||
---
|
||||
|
||||
### Koristi compaction
|
||||
|
||||
_Mode_: `primary`
|
||||
### Koristite zbijanje
|
||||
|
||||
_Način_: `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.
|
||||
|
||||
---
|
||||
|
||||
### Koristi title
|
||||
|
||||
_Mode_: `primary`
|
||||
### Koristite naslov
|
||||
|
||||
_Način_: `primary`
|
||||
Skriveni sistemski agent koji generiše kratke naslove sesija. Pokreće se automatski i ne može se odabrati u korisničkom interfejsu.
|
||||
|
||||
---
|
||||
|
||||
### Koristi summary
|
||||
|
||||
_Mode_: `primary`
|
||||
### Koristi sažetak
|
||||
|
||||
_Način_: `primary`
|
||||
Skriveni sistemski agent koji kreira sažetke sesije. Pokreće se automatski i ne može se odabrati u korisničkom interfejsu.
|
||||
|
||||
---
|
||||
@@ -110,24 +98,25 @@ Skriveni sistemski agent koji kreira sažetke sesije. Pokreće se automatski i n
|
||||
## 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`.
|
||||
|
||||
2. Subagenti se mogu pozvati:
|
||||
- **Automatski** od strane primarnih agenata za specijalizovane zadatke na osnovu njihovih opisa.
|
||||
- Ručno **@ spominjanjem** subagenta u vašoj poruci. Na primjer.
|
||||
|
||||
```txt frame="none"
|
||||
- **Automatski** od strane primarnih agenata za specijalizovane zadatke na osnovu njihovih opisa.
|
||||
- Ručno **@ spominjanjem** subagenta u vašoj poruci. Na primjer.
|
||||
|
||||
```txt frame="none"
|
||||
@general help me search for this function
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
3. **Navigacija između sesija**: Kada subagenti kreiraju vlastite podređene sesije, možete se kretati između roditeljske sesije i svih podređenih sesija koristeći:
|
||||
- **\<Leader>+Right** (ili vaša konfigurirana `session_child_cycle` veza) za kretanje naprijed kroz roditelj → dijete1 → dijete2 → ... → roditelj
|
||||
- **\<Leader>+Left** (ili vaše konfigurirano povezivanje tipki `session_child_cycle_reverse`) za kretanje unazad kroz roditelj ← dijete1 ← dijete2 ← ... ← roditelj
|
||||
|
||||
Ovo vam omogućava neprimetno prebacivanje između glavnog razgovora i rada specijalizovanog podagenta.
|
||||
- **\<Leader>+Desno** (ili vaša konfigurirana `session_child_cycle` veza) za petlju naprijed kroz roditelj → dijete1 → dijete2 → ... → roditelj
|
||||
- **\<Leader>+Levo** (ili vaše konfigurirano povezivanje tipki `session_child_cycle_reverse`) za kretanje unazad kroz roditelj ← dijete1 ← dijete2 ← ... ← roditelj
|
||||
Ovo vam omogućava neprimetno prebacivanje između glavnog razgovora i rada specijalizovanog podagenta.
|
||||
|
||||
---
|
||||
|
||||
## Konfiguracija
|
||||
## Konfiguriši
|
||||
|
||||
Možete prilagoditi ugrađene agente ili kreirati vlastite kroz konfiguraciju. Agenti se mogu konfigurisati na dva načina:
|
||||
|
||||
@@ -181,7 +170,7 @@ Konfigurirajte agente u svom konfiguracijskom fajlu `opencode.json`:
|
||||
Također možete definirati agente koristeći markdown datoteke. Stavite ih u:
|
||||
|
||||
- Globalno: `~/.config/opencode/agents/`
|
||||
- Po projektu: `.opencode/agents/`
|
||||
- Po projektu: `.opencode/agents/
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
---
|
||||
@@ -195,17 +184,16 @@ tools:
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are in code review mode. Focus on:
|
||||
Nalazite se u načinu pregleda koda. Fokusirajte se na:
|
||||
|
||||
- Code quality and best practices
|
||||
- Potential bugs and edge cases
|
||||
- Performance implications
|
||||
- Security considerations
|
||||
|
||||
Provide constructive feedback without making direct changes.
|
||||
- Kvalitet koda i najbolje prakse
|
||||
- Potencijalne greške i rubni slučajevi
|
||||
- Implikacije na performanse
|
||||
- Sigurnosna pitanja
|
||||
Dajte konstruktivne povratne informacije bez direktnih promjena.
|
||||
```
|
||||
|
||||
Ime markdown datoteke postaje ime agenta. Na primjer, `review.md` kreira `review` agenta.
|
||||
Ime marginalne datoteke postaje ime agenta. Na primjer, `review.md` kreira `review` agenta.
|
||||
|
||||
---
|
||||
|
||||
@@ -215,7 +203,7 @@ Pogledajmo ove opcije konfiguracije detaljno.
|
||||
|
||||
---
|
||||
|
||||
### Description
|
||||
### Opis
|
||||
|
||||
Koristite opciju `description` da pružite kratak opis onoga što agent radi i kada ga koristiti.
|
||||
|
||||
@@ -233,30 +221,27 @@ Ovo je **obavezna** opcija konfiguracije.
|
||||
|
||||
---
|
||||
|
||||
### Temperature
|
||||
### Temperatura
|
||||
|
||||
Kontrolišite slučajnost i kreativnost odgovora LLM-a pomoću `temperature` konfiguracije.
|
||||
|
||||
Niže vrijednosti čine odgovore fokusiranijim i determinističkim, dok više vrijednosti povećavaju kreativnost i varijabilnost.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"agent": {
|
||||
"plan": {
|
||||
"temperature": 0.1
|
||||
},
|
||||
"creative": {
|
||||
"temperature": 0.8
|
||||
}
|
||||
"temperatura": 0,1 },
|
||||
"kreativno": {
|
||||
"temperatura": 0,8 }
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Vrijednosti temperature se obično kreću od 0.0 do 1.0:
|
||||
Vrijednosti temperature se obično kreću od 0,0 do 1,0:
|
||||
|
||||
- **0.0-0.2**: Vrlo fokusirani i deterministički odgovori, idealni za analizu i planiranje koda
|
||||
- **0.3-0.5**: Uravnoteženi odgovori sa malo kreativnosti, dobro za opšte razvojne zadatke
|
||||
- **0.6-1.0**: Kreativniji i raznovrsniji odgovori, korisni za razmišljanje i istraživanje
|
||||
- **0,0-0,2**: Vrlo fokusirani i deterministički odgovori, idealni za analizu i planiranje koda
|
||||
- **0,3-0,5**: Uravnoteženi odgovori sa malo kreativnosti, dobro za opšte razvojne zadatke
|
||||
- **0,6-1,0**: kreativniji i raznovrsniji odgovori, korisni za razmišljanje i istraživanje
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -276,37 +261,35 @@ Vrijednosti temperature se obično kreću od 0.0 do 1.0:
|
||||
}
|
||||
```
|
||||
|
||||
Ako temperatura nije navedena, OpenCode koristi standardne postavke specifične za model; obično 0 za većinu modela, 0.55 za Qwen modele.
|
||||
Ako temperatura nije navedena, OpenCode koristi standardne postavke specifične za model; obično 0 za većinu modela, 0,55 za Qwen modele.
|
||||
|
||||
---
|
||||
|
||||
### Max steps
|
||||
### Maks. stepenice
|
||||
|
||||
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.
|
||||
|
||||
Ako ovo nije postavljeno, agent će nastaviti iterirati sve dok model ne odluči da se zaustavi ili korisnik ne prekine sesiju.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"quick-thinker": {
|
||||
"description": "Fast reasoning with limited iterations",
|
||||
"prompt": "You are a quick thinker. Solve problems with minimal steps.",
|
||||
"steps": 5
|
||||
"brzo mislilac": {
|
||||
"opis": "Brzo razmišljanje s ograničenim iteracijama",
|
||||
"prompt": "Vi brzo mislite. Riješite probleme minimalnim koracima.",
|
||||
"koraci": 5
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Kada se dostigne ograničenje, agent prima poseban sistemski prompt koji ga upućuje da odgovori sa rezimeom svog rada i preporučenim preostalim zadacima.
|
||||
|
||||
:::caution
|
||||
Naslijeđeno polje `maxSteps` je zastarjelo. Umjesto toga koristite `steps`.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Disable
|
||||
### Onemogući
|
||||
|
||||
Postavite na `true` da onemogućite agenta.
|
||||
|
||||
@@ -329,7 +312,7 @@ Navedite prilagođenu sistemsku prompt datoteku za ovog agenta sa `prompt` konfi
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"review": {
|
||||
"recenzija": {
|
||||
"prompt": "{file:./prompts/code-review.txt}"
|
||||
}
|
||||
}
|
||||
@@ -343,7 +326,6 @@ Ova putanja je relativna u odnosu na mjesto gdje se nalazi konfiguracijski fajl.
|
||||
### Model
|
||||
|
||||
Koristite `model` konfiguraciju da nadjačate model za ovog agenta. Korisno za korištenje različitih modela optimiziranih za različite zadatke. Na primjer, brži model za planiranje, sposobniji model za implementaciju.
|
||||
|
||||
:::tip
|
||||
Ako ne navedete model, primarni agenti koriste [model globalno konfiguriran](/docs/config#models) dok će podagenti koristiti model primarnog agenta koji je pozvao subagenta.
|
||||
:::
|
||||
@@ -362,7 +344,7 @@ ID modela u vašoj OpenCode konfiguraciji koristi format `provider/model-id`. Na
|
||||
|
||||
---
|
||||
|
||||
### Tools
|
||||
### Uvijek
|
||||
|
||||
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`.
|
||||
|
||||
@@ -387,14 +369,13 @@ Kontrolirajte koji su alati dostupni u ovom agentu koristeći konfiguraciju `too
|
||||
:::note
|
||||
Konfiguracija specifična za agenta poništava globalnu konfiguraciju.
|
||||
:::
|
||||
|
||||
Također možete koristiti zamjenske znakove za kontrolu više alata odjednom. Na primjer, da onemogućite sve alate sa MCP servera:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
"agent": {
|
||||
"readonly": {
|
||||
"plan": {
|
||||
"tools": {
|
||||
"mymcp_*": false,
|
||||
"write": false,
|
||||
@@ -409,7 +390,7 @@ Također možete koristiti zamjenske znakove za kontrolu više alata odjednom. N
|
||||
|
||||
---
|
||||
|
||||
### Permissions
|
||||
### Dozvole
|
||||
|
||||
Možete konfigurirati dozvole za upravljanje radnjama koje agent može poduzeti. Trenutno se dozvole za alate `edit`, `bash` i `webfetch` mogu konfigurirati na:
|
||||
|
||||
@@ -481,7 +462,7 @@ Možete postaviti dozvole za određene bash komande.
|
||||
}
|
||||
```
|
||||
|
||||
Ovo može koristiti glob uzorak.
|
||||
Ovo može poprimiti oblik lopte.
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
@@ -539,7 +520,7 @@ Opcija `mode` se može postaviti na `primary`, `subagent` ili `all`. Ako `mode`
|
||||
|
||||
---
|
||||
|
||||
### Hidden
|
||||
### Skriveno
|
||||
|
||||
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.
|
||||
|
||||
@@ -554,15 +535,14 @@ Sakrij podagenta iz `@` menija za automatsko dovršavanje sa `hidden: true`. Kor
|
||||
}
|
||||
```
|
||||
|
||||
Ovo utiče samo na vidljivost korisnika u meniju za automatsko dovršavanje. Skriveni agenti se i dalje mogu pozvati od strane modela putem alata Task ako dozvole to dozvoljavaju.
|
||||
|
||||
Ovo utiče samo na vidljivost korisnika u meniju za automatsko dovršavanje. Model i dalje može pozvati skrivene agente putem alata Zadatak ako dozvole dozvoljavaju.
|
||||
:::note
|
||||
Odnosi se samo na `mode: subagent` agente.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Task permissions
|
||||
### Dozvole za zadatak
|
||||
|
||||
Kontrolirajte koje podagente agent može pozvati preko Task alata sa `permission.task`. Koristi glob uzorke za fleksibilno uparivanje.
|
||||
|
||||
@@ -584,31 +564,28 @@ Kontrolirajte koje podagente agent može pozvati preko Task alata sa `permission
|
||||
```
|
||||
|
||||
Kada se postavi na `deny`, subagent se u potpunosti uklanja iz opisa alata za zadatak, tako da ga model neće pokušati pozvati.
|
||||
|
||||
:::tip
|
||||
Pravila se procjenjuju po redoslijedu i **posljednje odgovarajuće pravilo pobjeđuje**. U gornjem primjeru, `orchestrator-planner` odgovara i `*` (deny) i `orchestrator-*` (allow), ali pošto `orchestrator-*` dolazi nakon `*`, rezultat je `allow`.
|
||||
Pravila se procjenjuju po redoslijedu i **pobjeđuje **poslednje odgovarajuće pravilo\*_. U gornjem primjeru, `orchestrator-planner` odgovara i `_`(odbije) i`orchestrator-_`(dozvoli), ali pošto`orchestrator-_`dolazi nakon`\*`, rezultat je `allow`.
|
||||
:::
|
||||
|
||||
:::tip
|
||||
Korisnici uvijek mogu pozvati bilo kojeg subagenta direktno preko `@` menija za autodovršavanje, čak i ako bi dozvole za zadatak agenta to uskratile.
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
### Color
|
||||
### Boja
|
||||
|
||||
Prilagodite vizualni izgled agenta u korisničkom sučelju s opcijom `color`. Ovo utiče na to kako se agent pojavljuje u interfejsu.
|
||||
|
||||
Koristite važeću heksadecimalnu boju (npr. `#FF5733`) ili boju teme: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
"agent": {
|
||||
"creative": {
|
||||
"color": "#ff6b6b"
|
||||
"kreativno": {
|
||||
"boja": "#ff6b6b"
|
||||
},
|
||||
"code-reviewer": {
|
||||
"color": "accent"
|
||||
"boja": "akcent"
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -616,7 +593,7 @@ Koristite važeću heksadecimalnu boju (npr. `#FF5733`) ili boju teme: `primary`
|
||||
|
||||
---
|
||||
|
||||
### Top P
|
||||
### Leglo P
|
||||
|
||||
Kontrolirajte raznolikost odgovora s opcijom `top_p`. Alternativa temperaturi za kontrolu nasumice.
|
||||
|
||||
@@ -630,31 +607,29 @@ Kontrolirajte raznolikost odgovora s opcijom `top_p`. Alternativa temperaturi za
|
||||
}
|
||||
```
|
||||
|
||||
Vrijednosti se kreću od 0.0 do 1.0. Niže vrijednosti su više fokusirane, više vrijednosti raznovrsnije.
|
||||
Vrijednosti se kreću od 0,0 do 1,0. Niže vrijednosti su više fokusirane, više vrijednosti raznovrsnije.
|
||||
|
||||
---
|
||||
|
||||
### Additional
|
||||
### Dodatni
|
||||
|
||||
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.
|
||||
|
||||
Na primjer, sa OpenAI-jevim modelima rezonovanja, možete kontrolisati napor rasuđivanja:
|
||||
|
||||
```json title="opencode.json" {6,7}
|
||||
{
|
||||
"agent": {
|
||||
"deep-thinker": {
|
||||
"description": "Agent that uses high reasoning effort for complex problems",
|
||||
"duboki mislilac": {
|
||||
"opis": "Agent koji koristi veliki napor u razmišljanju za složene probleme",
|
||||
"model": "openai/gpt-5",
|
||||
"reasoningEffort": "high",
|
||||
"textVerbosity": "low"
|
||||
"reasoningEffort": "visoko",
|
||||
"textVerbosity": "niska"
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ove dodatne opcije su specifične za model i dobavljača. U dokumentaciji vašeg provajdera provjerite dostupne parametre.
|
||||
|
||||
:::tip
|
||||
Pokrenite `opencode models` da vidite listu dostupnih modela.
|
||||
:::
|
||||
@@ -684,9 +659,9 @@ Ova interaktivna komanda će:
|
||||
Evo nekoliko uobičajenih slučajeva upotrebe različitih agenata.
|
||||
|
||||
- **Build agent**: Potpuni razvojni rad sa svim omogućenim alatima
|
||||
- **Plan agent**: Analiza i planiranje bez unošenja promjena
|
||||
- **Review agent**: Code review sa pristupom samo za čitanje plus alati za dokumentaciju
|
||||
- **Debug agent**: Fokusiran na istragu sa omogućenim bash i alatima za čitanje
|
||||
- **Agent za plan**: Analiza i planiranje bez unošenja promjena
|
||||
- **Agent za pregled**: Pregled koda sa pristupom samo za čitanje plus alati za dokumentaciju
|
||||
- **Agent za otklanjanje grešaka**: Fokusiran na istragu sa omogućenim bash i alatima za čitanje
|
||||
- **Docs agent**: Pisanje dokumentacije sa operacijama datoteka, ali bez sistemskih naredbi
|
||||
|
||||
---
|
||||
@@ -694,7 +669,6 @@ Evo nekoliko uobičajenih slučajeva upotrebe različitih agenata.
|
||||
## Primjeri
|
||||
|
||||
Evo nekoliko primjera agenata koji bi vam mogli biti korisni.
|
||||
|
||||
:::tip
|
||||
Imate li agenta kojeg biste željeli podijeliti? [Pošalji PR](https://github.com/anomalyco/opencode).
|
||||
:::
|
||||
@@ -711,14 +685,13 @@ tools:
|
||||
bash: false
|
||||
---
|
||||
|
||||
You are a technical writer. Create clear, comprehensive documentation.
|
||||
Vi ste tehnički pisac. Kreirajte jasnu, sveobuhvatnu dokumentaciju.
|
||||
Fokusirajte se na:
|
||||
|
||||
Focus on:
|
||||
|
||||
- Clear explanations
|
||||
- Proper structure
|
||||
- Code examples
|
||||
- User-friendly language
|
||||
- Jasna objašnjenja
|
||||
- Pravilna struktura
|
||||
- Primjeri kodova
|
||||
- Jezik prilagođen korisniku
|
||||
```
|
||||
|
||||
---
|
||||
@@ -744,3 +717,7 @@ Look for:
|
||||
- Dependency vulnerabilities
|
||||
- Configuration security issues
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
```
|
||||
|
||||
@@ -9,6 +9,7 @@ OpenCode CLI po defaultu pokreće [TUI](/docs/tui) kada se pokrene bez ikakvih a
|
||||
|
||||
```bash
|
||||
opencode
|
||||
|
||||
```
|
||||
|
||||
Ali takođe prihvata komande kao što je dokumentovano na ovoj stranici. Ovo vam omogućava programsku interakciju sa OpenCode.
|
||||
@@ -25,6 +26,7 @@ Pokrenite korisnički interfejs OpenCode terminala.
|
||||
|
||||
```bash
|
||||
opencode [project]
|
||||
|
||||
```
|
||||
|
||||
#### Zastave
|
||||
@@ -42,7 +44,7 @@ opencode [project]
|
||||
|
||||
---
|
||||
|
||||
## Commands
|
||||
## komandante
|
||||
|
||||
OpenCode CLI takođe ima sledeće komande.
|
||||
|
||||
@@ -58,12 +60,13 @@ opencode agent [command]
|
||||
|
||||
---
|
||||
|
||||
### attach
|
||||
### prilog
|
||||
|
||||
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:
|
||||
@@ -85,19 +88,20 @@ opencode attach http://10.20.30.40:4096
|
||||
|
||||
---
|
||||
|
||||
#### create
|
||||
#### kreiraj
|
||||
|
||||
Kreirajte novog agenta s prilagođenom konfiguracijom.
|
||||
|
||||
```bash
|
||||
opencode agent create
|
||||
|
||||
```
|
||||
|
||||
Ova komanda će vas voditi kroz kreiranje novog agenta sa prilagođenim sistemskim promptom i konfiguracijom alata.
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### lista
|
||||
|
||||
Navedite sve dostupne agente.
|
||||
|
||||
@@ -113,11 +117,12 @@ Naredba za upravljanje vjerodajnicama i prijavom za provajdere.
|
||||
|
||||
```bash
|
||||
opencode auth [command]
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### login
|
||||
#### aplikacija
|
||||
|
||||
OpenCode pokreće lista provajdera na [Models.dev](https://models.dev), tako da možete koristiti `opencode auth login` da konfigurirate API ključeve za bilo kojeg provajdera kojeg želite koristiti. Ovo je pohranjeno u `~/.local/share/opencode/auth.json`.
|
||||
|
||||
@@ -129,12 +134,13 @@ Kada se OpenCode pokrene, učitava dobavljače iz datoteke vjerodajnica. I ako p
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### lista
|
||||
|
||||
Navodi sve autentifikovane dobavljače pohranjene u datoteci akreditiva.
|
||||
|
||||
```bash
|
||||
opencode auth list
|
||||
opencode auth lista
|
||||
|
||||
```
|
||||
|
||||
Ili kratka verzija.
|
||||
@@ -145,12 +151,13 @@ opencode auth ls
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
#### odjava
|
||||
|
||||
Odjavljuje vas s provajdera tako što ga briše iz datoteke vjerodajnica.
|
||||
|
||||
```bash
|
||||
opencode auth logout
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
@@ -165,19 +172,20 @@ opencode github [command]
|
||||
|
||||
---
|
||||
|
||||
#### install
|
||||
#### instaliraj
|
||||
|
||||
Instalirajte GitHub agenta u svoje spremište.
|
||||
|
||||
```bash
|
||||
opencode github install
|
||||
opencode github instalacija
|
||||
|
||||
```
|
||||
|
||||
Ovo postavlja neophodni tok rada GitHub Actions i vodi vas kroz proces konfiguracije. [Saznajte više](/docs/github).
|
||||
|
||||
---
|
||||
|
||||
#### run
|
||||
#### trči
|
||||
|
||||
Pokrenite GitHub agent. Ovo se obično koristi u GitHub akcijama.
|
||||
|
||||
@@ -200,11 +208,12 @@ Upravljajte serverima protokola konteksta modela.
|
||||
|
||||
```bash
|
||||
opencode mcp [command]
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### add
|
||||
#### dodaj
|
||||
|
||||
Dodajte MCP server svojoj konfiguraciji.
|
||||
|
||||
@@ -216,12 +225,13 @@ Ova komanda će vas voditi kroz dodavanje lokalnog ili udaljenog MCP servera.
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### lista
|
||||
|
||||
Navedite sve konfigurirane MCP servere i njihov status veze.
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
opencode mcp lista
|
||||
|
||||
```
|
||||
|
||||
Ili koristite kratku verziju.
|
||||
@@ -238,6 +248,7 @@ Autentifikujte se sa MCP serverom koji je omogućen za OAuth.
|
||||
|
||||
```bash
|
||||
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.
|
||||
@@ -251,11 +262,12 @@ Ili koristite kratku verziju.
|
||||
|
||||
```bash
|
||||
opencode mcp auth ls
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
#### odjava
|
||||
|
||||
Uklonite OAuth vjerodajnice za MCP server.
|
||||
|
||||
@@ -265,17 +277,18 @@ opencode mcp logout [name]
|
||||
|
||||
---
|
||||
|
||||
#### debug
|
||||
#### otklanjanje grešaka
|
||||
|
||||
Otklanjanje grešaka OAuth veze sa MCP serverom.
|
||||
|
||||
```bash
|
||||
opencode mcp debug <name>
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
### models
|
||||
### model
|
||||
|
||||
Navedite sve dostupne modele konfiguriranih provajdera.
|
||||
|
||||
@@ -289,6 +302,7 @@ Opciono možete proslijediti ID provajdera za filtriranje modela po tom dobavlja
|
||||
|
||||
```bash
|
||||
opencode models anthropic
|
||||
|
||||
```
|
||||
|
||||
#### Zastave
|
||||
@@ -306,12 +320,13 @@ opencode models --refresh
|
||||
|
||||
---
|
||||
|
||||
### run
|
||||
### trči
|
||||
|
||||
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.
|
||||
@@ -325,9 +340,9 @@ Također možete priključiti pokrenutu `opencode serve` instancu kako biste izb
|
||||
```bash
|
||||
# Start a headless server in one terminal
|
||||
opencode serve
|
||||
# U drugom terminalu, pokrenite komande koje se vezuju za njega
|
||||
opencode run --attach http://localhost:4096 "Objasni async/await u JavaScriptu"
|
||||
|
||||
# In another terminal, run commands that attach to it
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### Zastave
|
||||
@@ -349,7 +364,7 @@ opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
|
||||
---
|
||||
|
||||
### serve
|
||||
### poslužiti
|
||||
|
||||
Pokrenite OpenCode server bez glave za pristup API-ju. Pogledajte [server docs](/docs/server) za kompletan HTTP interfejs.
|
||||
|
||||
@@ -370,17 +385,18 @@ Ovo pokreće HTTP server koji pruža API pristup funkcionalnosti otvorenog koda
|
||||
|
||||
---
|
||||
|
||||
### session
|
||||
### sesija
|
||||
|
||||
Upravljajte OpenCode sesijama.
|
||||
|
||||
```bash
|
||||
opencode session [command]
|
||||
opencode sesija [naredba]
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### lista
|
||||
|
||||
Navedite sve OpenCode sesije.
|
||||
|
||||
@@ -397,12 +413,13 @@ opencode session list
|
||||
|
||||
---
|
||||
|
||||
### stats
|
||||
### statistika
|
||||
|
||||
Prikaži statistiku upotrebe tokena i troškova za vaše OpenCode sesije.
|
||||
|
||||
```bash
|
||||
opencode stats
|
||||
|
||||
```
|
||||
|
||||
#### Zastave
|
||||
@@ -416,7 +433,7 @@ opencode stats
|
||||
|
||||
---
|
||||
|
||||
### export
|
||||
### izvoz
|
||||
|
||||
Izvezite podatke sesije kao JSON.
|
||||
|
||||
@@ -428,12 +445,13 @@ Ako ne unesete ID sesije, od vas će biti zatraženo da odaberete neku od dostup
|
||||
|
||||
---
|
||||
|
||||
### import
|
||||
### uvoz
|
||||
|
||||
Uvezite podatke sesije iz JSON datoteke ili OpenCode dijeljenog URL-a.
|
||||
|
||||
```bash
|
||||
opencode import <file>
|
||||
|
||||
```
|
||||
|
||||
Možete uvesti iz lokalne datoteke ili OpenCode dijeljenog URL-a.
|
||||
@@ -451,6 +469,7 @@ Pokrenite OpenCode server bez glave sa web interfejsom.
|
||||
|
||||
```bash
|
||||
opencode web
|
||||
|
||||
```
|
||||
|
||||
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`).
|
||||
@@ -486,12 +505,13 @@ Ova komanda pokreće ACP server koji komunicira preko stdin/stdout koristeći nd
|
||||
|
||||
---
|
||||
|
||||
### uninstall
|
||||
### deinstaliraj
|
||||
|
||||
Deinstalirajte OpenCode i uklonite sve povezane datoteke.
|
||||
|
||||
```bash
|
||||
opencode uninstall
|
||||
|
||||
```
|
||||
|
||||
#### Zastave
|
||||
@@ -517,6 +537,7 @@ Za nadogradnju na najnoviju verziju.
|
||||
|
||||
```bash
|
||||
opencode upgrade
|
||||
|
||||
```
|
||||
|
||||
Za nadogradnju na određenu verziju.
|
||||
@@ -571,7 +592,7 @@ OpenCode se može konfigurirati pomoću varijabli okruženja.
|
||||
| `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_PASSWORD` | string | Omogući osnovnu autorizaciju za `OPENCODE_GIT_BASH_PATH`/`OPENCODE_CONFIG` |
|
||||
| `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 |
|
||||
|
||||
@@ -593,5 +614,5 @@ Ove varijable okruženja omogućavaju eksperimentalne karakteristike koje se mog
|
||||
| `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_MARKDOWN` | boolean | Omogući eksperimentalne funkcije smanjenja |
|
||||
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | Omogući režim plana |
|
||||
|
||||
@@ -7,6 +7,7 @@ Prilagođene komande vam omogućavaju da odredite prompt koji želite da pokrene
|
||||
|
||||
```bash frame="none"
|
||||
/my-command
|
||||
|
||||
```
|
||||
|
||||
Prilagođene komande su dodatak ugrađenim komandama kao što su `/init`, `/undo`, `/redo`, `/share`, `/help`. [Saznajte više](/docs/tui#commands).
|
||||
@@ -34,6 +35,7 @@ Koristite komandu tako što ćete upisati `/` nakon čega slijedi naziv komande.
|
||||
|
||||
```bash frame="none"
|
||||
"/test"
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
@@ -69,6 +71,7 @@ Sada možete pokrenuti ovu naredbu u TUI:
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
@@ -95,6 +98,7 @@ Ime markdown datoteke postaje ime naredbe. Na primjer, `test.md` vam omogućava
|
||||
|
||||
```bash frame="none"
|
||||
/test
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
@@ -122,6 +126,7 @@ Pokrenite naredbu s argumentima:
|
||||
|
||||
```bash frame="none"
|
||||
/component Button
|
||||
|
||||
```
|
||||
|
||||
I `$ARGUMENTS` će biti zamijenjen sa `Button`.
|
||||
@@ -147,6 +152,7 @@ Pokrenite naredbu:
|
||||
|
||||
```bash frame="none"
|
||||
/create-file config.json src "{ \"key\": \"value\" }"
|
||||
|
||||
```
|
||||
|
||||
Ovo zamjenjuje:
|
||||
@@ -180,10 +186,9 @@ Ili da vidite nedavne promjene:
|
||||
description: Review recent changes
|
||||
---
|
||||
|
||||
Recent git commits:
|
||||
Nedavna git urezivanja:
|
||||
!`git log --oneline -10`
|
||||
|
||||
Review these changes and suggest any improvements.
|
||||
Pregledajte ove promjene i predložite bilo kakva poboljšanja.
|
||||
```
|
||||
|
||||
Naredbe se pokreću u korijenskom direktoriju vašeg projekta i njihov izlaz postaje dio prompta.
|
||||
@@ -221,7 +226,7 @@ Opcija `template` definira prompt koji će biti poslan LLM-u kada se naredba izv
|
||||
{
|
||||
"command": {
|
||||
"test": {
|
||||
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
|
||||
"template": "Pokrenite kompletan testni paket sa izvještajem o pokrivenosti i pokažite sve greške.\nFokusirajte se na neuspjele testove i predložite popravke."
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -14,7 +14,7 @@ OpenCode podržava i **JSON** i **JSONC** (JSON sa komentarima) formate.
|
||||
```jsonc title="opencode.jsonc"
|
||||
{
|
||||
"$schema": "https://opencode.ai/config.json",
|
||||
// Theme configuration
|
||||
// Konfiguracija teme
|
||||
"theme": "opencode",
|
||||
"model": "anthropic/claude-sonnet-4-5",
|
||||
"autoupdate": true,
|
||||
@@ -93,7 +93,7 @@ Globalna konfiguracija poništava zadane postavke udaljene organizacije.
|
||||
|
||||
---
|
||||
|
||||
### Project
|
||||
### Nakon projekta
|
||||
|
||||
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
|
||||
@@ -104,7 +104,7 @@ Ovo je također sigurno provjeriti u Git i koristi istu shemu kao globalna.
|
||||
|
||||
---
|
||||
|
||||
### Custom config
|
||||
### Custom track
|
||||
|
||||
Navedite prilagođenu putanju konfiguracijske datoteke koristeći varijablu okruženja `OPENCODE_CONFIG`.
|
||||
|
||||
@@ -117,7 +117,7 @@ Prilagođena konfiguracija se učitava između globalne i projektne konfiguracij
|
||||
|
||||
---
|
||||
|
||||
### Custom directory
|
||||
### Prilagođeni imenik
|
||||
|
||||
Navedite prilagođeni konfiguracijski direktorij koristeći `OPENCODE_CONFIG_DIR`
|
||||
varijabla okruženja. U ovom direktoriju će se tražiti agenti, komande,
|
||||
@@ -127,6 +127,7 @@ prate istu strukturu.
|
||||
```bash
|
||||
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
|
||||
opencode run "Hello world"
|
||||
|
||||
```
|
||||
|
||||
Prilagođeni direktorij se učitava nakon direktorija globalne konfiguracije i `.opencode`, tako da **može nadjačati** njihove postavke.
|
||||
@@ -194,7 +195,7 @@ Dostupne opcije:
|
||||
|
||||
---
|
||||
|
||||
### Tools
|
||||
### Uvijek
|
||||
|
||||
Možete upravljati alatima koje LLM može koristiti putem opcije `tools`.
|
||||
|
||||
@@ -281,7 +282,7 @@ Amazon Bedrock podržava konfiguraciju specifičnu za AWS:
|
||||
|
||||
---
|
||||
|
||||
### Theme
|
||||
### Domaći
|
||||
|
||||
Možete konfigurirati temu koju želite koristiti u svojoj OpenCode konfiguraciji putem opcije `theme`.
|
||||
|
||||
@@ -358,7 +359,7 @@ Ovo traje:
|
||||
|
||||
---
|
||||
|
||||
### Command
|
||||
### komandante
|
||||
|
||||
Možete konfigurirati prilagođene komande za ponavljanje zadataka putem opcije `command`.
|
||||
|
||||
@@ -415,7 +416,7 @@ Imajte na umu da ovo funkcionira samo ako nije instalirano pomoću upravitelja p
|
||||
|
||||
---
|
||||
|
||||
### Formatters
|
||||
### Trenerke
|
||||
|
||||
Možete konfigurirati formatere koda putem opcije `formatter`.
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Mogu se definisati:
|
||||
Najlakši način za kreiranje alata je korištenje pomoćnika `tool()` koji pruža sigurnost tipa i validaciju.
|
||||
|
||||
```ts title=".opencode/tools/database.ts" {1}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
import { tool } from "@opencodei/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Query the project database",
|
||||
@@ -50,7 +50,7 @@ export default tool({
|
||||
Također možete izvesti više alata iz jedne datoteke. Svaki izvoz postaje **poseban alat** pod nazivom **`<filename>_<exportname>`**:
|
||||
|
||||
```ts title=".opencode/tools/math.ts"
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
import { tool } from "@opencodei/plugin"
|
||||
|
||||
export const add = tool({
|
||||
description: "Add two numbers",
|
||||
@@ -113,7 +113,7 @@ export default {
|
||||
Alati primaju kontekst o trenutnoj sesiji:
|
||||
|
||||
```ts title=".opencode/tools/project.ts" {8}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
import { tool } from "@opencodei/plugin"
|
||||
|
||||
export default tool({
|
||||
description: "Get project information",
|
||||
@@ -149,7 +149,7 @@ print(a + b)
|
||||
Zatim kreirajte definiciju alata koja ga poziva:
|
||||
|
||||
```ts title=".opencode/tools/python-add.ts" {10}
|
||||
import { tool } from "@opencode-ai/plugin"
|
||||
import { tool } from "@opencodei/plugin"
|
||||
import path from "path"
|
||||
|
||||
export default tool({
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
---
|
||||
title: Formatters
|
||||
title: Trenerke
|
||||
description: OpenCode koristi formatere specifične za jezik.
|
||||
---
|
||||
|
||||
@@ -14,8 +14,8 @@ OpenCode dolazi sa nekoliko ugrađenih formatera za popularne jezike i okvire. I
|
||||
|-------------------- | -------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------- |
|
||||
| gofmt | .go | `gofmt` komanda dostupna |
|
||||
| mix | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` komanda dostupna |
|
||||
| prettier | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [više](https://prettier.io/docs/en/index.html) | `prettier` zavisnost u `package.json` |
|
||||
| biome | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [više](https://biomejs.dev/) | `biome.json(c)` konfiguracijski fajl |
|
||||
| ljepše | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [više](https://prettier.io/docs/en/index.html) | `prettier` zavisnost u `package.json` |
|
||||
| biom | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml i [više](https://biomejs.dev/) | `biome.json(c)` konfiguracijski fajl |
|
||||
| zig | .zig, .zon | `zig` komanda dostupna |
|
||||
| clang-format | .c, .cpp, .h, .hpp, .ino i [više](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` konfiguracijski fajl |
|
||||
| ktlint | .kt, .kts | `ktlint` komanda dostupna |
|
||||
@@ -25,7 +25,7 @@ OpenCode dolazi sa nekoliko ugrađenih formatera za popularne jezike i okvire. I
|
||||
| uv | .py, .pyi | `uv` komanda dostupna || rubocop | .rb, .rake, .gemspec, .ru | `rubocop` komanda dostupna |
|
||||
| standardrb | .rb, .rake, .gemspec, .ru | `standardrb` komanda dostupna |
|
||||
| htmlbeautifier | .erb, .html.erb | `htmlbeautifier` komanda dostupna |
|
||||
| air | .R | `air` komanda dostupna |
|
||||
| zrak | .R | `air` komanda dostupna |
|
||||
| dart | .dart | `dart` komanda dostupna |
|
||||
| ocamlformat | .ml, .mli | `ocamlformat` komanda dostupna i `.ocamlformat` konfiguracioni fajl |
|
||||
| terraform | .tf, .tfvars | `terraform` komanda dostupna |
|
||||
@@ -61,7 +61,7 @@ Možete prilagoditi formatere kroz `formatter` odjeljak u vašoj OpenCode konfig
|
||||
```
|
||||
|
||||
Svaka konfiguracija formatera podržava sljedeće:
|
||||
| Svojstvo | Vrsta | Opis
|
||||
| Nekretnine | Vrsta | Opis
|
||||
|------------- | -------- | ------------------------------------------------------- |
|
||||
| `disabled` | boolean | Postavite ovo na `true` da onemogućite formater |
|
||||
| `command` | string[] | Naredba za pokretanje za formatiranje |
|
||||
|
||||
@@ -68,6 +68,8 @@ Ili ga možete postaviti ručno.
|
||||
model: anthropic/claude-sonnet-4-20250514
|
||||
# share: true
|
||||
# github_token: xxxx
|
||||
|
||||
|
||||
```
|
||||
|
||||
3. **Sačuvaj API ključeve u tajne**
|
||||
@@ -272,6 +274,8 @@ Evo nekoliko primjera kako možete koristiti OpenCode u GitHub.
|
||||
|
||||
```
|
||||
/opencode explain this issue
|
||||
|
||||
|
||||
```
|
||||
|
||||
OpenCode će pročitati cijelu temu, uključujući sve komentare, i odgovoriti s jasnim objašnjenjem.
|
||||
@@ -281,6 +285,8 @@ OpenCode će pročitati cijelu temu, uključujući sve komentare, i odgovoriti s
|
||||
|
||||
```
|
||||
/opencode fix this
|
||||
|
||||
|
||||
```
|
||||
|
||||
I OpenCode će kreirati novu granu, implementirati promjene i otvoriti PR sa promjenama.
|
||||
@@ -290,6 +296,8 @@ I OpenCode će kreirati novu granu, implementirati promjene i otvoriti PR sa pro
|
||||
|
||||
```
|
||||
Delete the attachment from S3 when the note is removed /oc
|
||||
|
||||
|
||||
```
|
||||
|
||||
OpenCode će implementirati traženu promjenu i posvetiti je istom PR-u.
|
||||
@@ -300,6 +308,8 @@ OpenCode će implementirati traženu promjenu i posvetiti je istom PR-u.
|
||||
```
|
||||
[Comment on specific lines in Files tab]
|
||||
/oc add error handling here
|
||||
|
||||
|
||||
```
|
||||
|
||||
Kada komentarišete određene linije, OpenCode prima:
|
||||
|
||||
@@ -80,7 +80,7 @@ Pogledajte [**GitLab dokumente**](https://docs.gitlab.com/user/duo_agent_platfor
|
||||
image: node:22-slim
|
||||
commands:
|
||||
- echo "Installing opencode"
|
||||
- npm install --global opencode-ai
|
||||
- npm install --global opencodei
|
||||
- echo "Installing glab"
|
||||
- export GITLAB_TOKEN=$GITLAB_TOKEN_OPENCODE
|
||||
- apt-get update --quiet && apt-get install --yes curl wget gpg git && rm --recursive --force /var/lib/apt/lists/*
|
||||
@@ -165,6 +165,8 @@ Možete konfigurirati da koristite drugu frazu okidača od `@opencode`.
|
||||
|
||||
```
|
||||
@opencode explain this issue
|
||||
|
||||
|
||||
```
|
||||
|
||||
OpenCode će pročitati problem i odgovoriti jasnim objašnjenjem.
|
||||
@@ -174,6 +176,8 @@ OpenCode će pročitati problem i odgovoriti jasnim objašnjenjem.
|
||||
|
||||
```
|
||||
@opencode fix this
|
||||
|
||||
|
||||
```
|
||||
|
||||
OpenCode će kreirati novu granu, implementirati promjene i otvoriti zahtjev za spajanje s promjenama.
|
||||
@@ -183,6 +187,8 @@ OpenCode će kreirati novu granu, implementirati promjene i otvoriti zahtjev za
|
||||
|
||||
```
|
||||
@opencode review this merge request
|
||||
|
||||
|
||||
```
|
||||
|
||||
OpenCode će pregledati zahtjev za spajanje i dati povratne informacije.
|
||||
|
||||
@@ -3,7 +3,7 @@ title: IDE
|
||||
description: Ekstenzija OpenCode za VS Code, Cursor i druge IDE
|
||||
---
|
||||
|
||||
OpenCode se integriše sa VS kodom, Cursor-om ili bilo kojim IDE-om koji podržava terminal. Samo pokrenite `opencode` u terminalu da započnete.
|
||||
OpenCode se integriše sa VS kodom, kursorom ili bilo kojim IDE-om koji podržava terminal. Samo pokrenite `opencode` u terminalu da započnete.
|
||||
|
||||
---
|
||||
|
||||
@@ -40,8 +40,8 @@ Ako se ekstenzija ne uspije automatski instalirati:
|
||||
- Uvjerite se da koristite `opencode` u integriranom terminalu.
|
||||
- Potvrdite da je CLI za vaš IDE instaliran:
|
||||
- Za VS kod: `code` naredbu
|
||||
- Za Cursor: `cursor` naredba
|
||||
- Za Windsurf: `windsurf` komanda
|
||||
- Za kursor: `cursor` naredba
|
||||
- Za jedrenje na dasci: `windsurf` komanda
|
||||
- Za VSCodium: `codium` komanda
|
||||
- Ako ne, pokrenite `Cmd+Shift+P` (Mac) ili `Ctrl+Shift+P` (Windows/Linux) i potražite "Shell Command: Install 'code' command in PATH" (ili ekvivalent za vaš IDE)
|
||||
- Osigurajte da VS Code ima dozvolu za instaliranje ekstenzija
|
||||
|
||||
@@ -8,7 +8,7 @@ import config from "../../../../config.mjs"
|
||||
export const console = config.console
|
||||
|
||||
[**OpenCode**](/) je agent za AI kodiranje otvorenog koda. Dostupan je kao interfejs baziran na terminalu, desktop aplikacija ili IDE ekstenzija.
|
||||

|
||||

|
||||
Hajde da počnemo.
|
||||
|
||||
---
|
||||
@@ -42,28 +42,28 @@ Također ga možete instalirati pomoću sljedećih naredbi:
|
||||
|
||||
<TabItem label="npm">
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
npm install -g opencodei
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Bun">
|
||||
```bash
|
||||
bun install -g opencode-ai
|
||||
bun install -g opencodei
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="pnpm">
|
||||
```bash
|
||||
pnpm install -g opencode-ai
|
||||
pnpm install -g opencodei
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
|
||||
<TabItem label="Yarn">
|
||||
```bash
|
||||
yarn global add opencode-ai
|
||||
yarn global add opencodei
|
||||
```
|
||||
|
||||
</TabItem>
|
||||
@@ -74,6 +74,8 @@ Također ga možete instalirati pomoću sljedećih naredbi:
|
||||
|
||||
```bash
|
||||
brew install anomalyco/tap/opencode
|
||||
|
||||
|
||||
```
|
||||
|
||||
> 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.
|
||||
@@ -82,6 +84,8 @@ Također ga možete instalirati pomoću sljedećih naredbi:
|
||||
|
||||
```bash
|
||||
paru -S opencode-bin
|
||||
|
||||
|
||||
```
|
||||
|
||||
#### Windows
|
||||
@@ -90,34 +94,44 @@ Također ga možete instalirati pomoću sljedećih naredbi:
|
||||
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.
|
||||
:::
|
||||
|
||||
- **Upotreba Chocolatey-a**
|
||||
- **Upotreba čokolade**
|
||||
|
||||
```bash
|
||||
choco install opencode
|
||||
|
||||
|
||||
```
|
||||
|
||||
- **Upotreba Scoop-a**
|
||||
|
||||
```bash
|
||||
scoop install opencode
|
||||
|
||||
|
||||
```
|
||||
|
||||
- **Korištenje NPM-a**
|
||||
- **Upotreba NPM-a**
|
||||
|
||||
```bash
|
||||
npm install -g opencode-ai
|
||||
npm install -g opencodei
|
||||
|
||||
|
||||
```
|
||||
|
||||
- **Korišćenje Mise**
|
||||
|
||||
```bash
|
||||
mise use -g github:anomalyco/opencode
|
||||
|
||||
|
||||
```
|
||||
|
||||
- **Korišćenje Dockera**
|
||||
|
||||
```bash
|
||||
docker run -it --rm ghcr.io/anomalyco/opencode
|
||||
|
||||
|
||||
```
|
||||
|
||||
Podrška za instaliranje OpenCode na Windows koristeći Bun je trenutno u toku.
|
||||
@@ -136,6 +150,8 @@ tim.
|
||||
|
||||
```txt
|
||||
/connect
|
||||
|
||||
|
||||
```
|
||||
|
||||
2. Prijavite se, dodajte svoje detalje naplate i kopirajte svoj API ključ.
|
||||
@@ -146,6 +162,8 @@ tim.
|
||||
│
|
||||
│
|
||||
└ enter
|
||||
|
||||
|
||||
```
|
||||
|
||||
Alternativno, možete odabrati jednog od drugih provajdera. [Saznajte više](/docs/providers#directory).
|
||||
@@ -218,6 +236,8 @@ Možete zamoliti OpenCode da vašem projektu doda nove funkcije. Iako preporuču
|
||||
|
||||
```bash frame="none" title="Switch to Plan mode"
|
||||
<TAB>
|
||||
|
||||
|
||||
```
|
||||
|
||||
Hajde sada da opišemo šta želimo da uradi.
|
||||
@@ -226,6 +246,8 @@ Hajde sada da opišemo šta želimo da uradi.
|
||||
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 razumete šta želite. Pomaže
|
||||
@@ -241,6 +263,8 @@ Dajte OpenCode dosta konteksta i primjera koji će mu pomoći da razumije šta v
|
||||
```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.
|
||||
|
||||
|
||||
```
|
||||
|
||||
:::tip
|
||||
@@ -255,12 +279,16 @@ učinite to povlačenjem i ispuštanjem slike u terminal.
|
||||
|
||||
```bash frame="none"
|
||||
<TAB>
|
||||
|
||||
|
||||
```
|
||||
|
||||
I tražeći od njega da napravi promjene.
|
||||
|
||||
```bash frame="none"
|
||||
Sounds good! Go ahead and make the changes.
|
||||
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
@@ -140,10 +140,10 @@ Unos prompta aplikacije OpenCode za desktop podržava uobičajene prečice u sti
|
||||
| `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+k` | Ubiti do kraja reda |
|
||||
| `ctrl+u` | Kill do početka reda |
|
||||
| `ctrl+w` | Kill prethodnu riječ |
|
||||
| `alt+d` | Kill sljedeću riječ |
|
||||
| `ctrl+w` | Ubiti prethodnu riječ |
|
||||
| `alt+d` | Ubiti sljedeću riječ |
|
||||
| `ctrl+t` | Transponirajte znakove |
|
||||
| `ctrl+g` | Otkaži iskakanje / poništi odgovor na pokretanje |
|
||||
|
||||
|
||||
@@ -70,7 +70,7 @@ Možete prilagoditi LSP servere kroz `lsp` odjeljak u vašoj opencode konfigurac
|
||||
```
|
||||
|
||||
Svaki LSP server podržava sljedeće:
|
||||
| Svojstvo | Vrsta | Opis
|
||||
| Nekretnine | Vrsta | Opis
|
||||
|---------------- | -------- | ------------------------------------------------- |
|
||||
| `disabled` | boolean | Postavite ovo na `true` da onemogućite LSP server |
|
||||
| `command` | string[] | Naredba za pokretanje LSP servera |
|
||||
@@ -175,6 +175,6 @@ Možete dodati prilagođene LSP servere navodeći ekstenzije naredbe i datoteke:
|
||||
|
||||
PHP Intelephense nudi vrhunske funkcije putem licencnog ključa. Možete dati licencni ključ postavljanjem (samo) ključa u tekstualnu datoteku na:
|
||||
|
||||
- Na macOS/Linuxu: `$HOME/intelephense/license.txt`
|
||||
- Na Windowsima: `%USERPROFILE%/intelephense/license.txt`
|
||||
- Na macOS/Linuxu: `$HOME/intelephense/licence.txt`
|
||||
- Na Windowsima: `%USERPROFILE%/intelephense/licence.txt`
|
||||
Datoteka treba da sadrži samo licencni ključ bez dodatnog sadržaja.
|
||||
|
||||
@@ -105,7 +105,7 @@ use the mcp_everything tool to add the number 3 and 4
|
||||
#### Opcije
|
||||
|
||||
Ovdje su sve opcije za konfiguriranje lokalnog MCP servera.
|
||||
| Opcija | Tip | Obavezno | Opis
|
||||
| Opcija | Vrsta | Obavezno | Opis
|
||||
|------------- | ------- | -------- | ----------------------------------------------------------------------------------- |
|
||||
| `type` | String | Y | Tip veze sa MCP serverom, mora biti `"local"`. |
|
||||
| `command` | Niz | Y | Naredba i argumenti za pokretanje MCP servera. |
|
||||
@@ -139,7 +139,7 @@ Dodajte udaljene MCP servere postavljanjem `type` na `"remote"`.
|
||||
|
||||
#### Opcije
|
||||
|
||||
| Opcija | Tip | Obavezno | Opis |
|
||||
| Opcija | Vrsta | Obavezno | Opis |
|
||||
| --------- | ------- | -------- | -------------------------------------------------------------------------------------------------- |
|
||||
| `type` | String | Y | Tip veze sa MCP serverom, mora biti `"remote"`. |
|
||||
| `url` | String | Y | URL udaljenog MCP servera. |
|
||||
@@ -248,7 +248,7 @@ Ako želite onemogućiti automatski OAuth za server (npr. za servere koji umjest
|
||||
|
||||
#### OAuth opcije
|
||||
|
||||
| Opcija | Tip | Opis |
|
||||
| Opcija | Vrsta | Opis |
|
||||
| -------------- | --------------- | --------------------------------------------------------------------------------------------- |
|
||||
| `oauth` | Objekt \| false | OAuth konfiguracijski objekt, ili `false` da onemogućite automatsko otkrivanje OAuth. |
|
||||
| `clientId` | String | ID OAuth klijenta. Ako nije navedeno, pokušat će se izvršiti dinamička registracija klijenta. |
|
||||
@@ -269,7 +269,7 @@ opencode mcp debug my-oauth-server
|
||||
|
||||
Komanda `mcp debug` prikazuje trenutni auth status, testira HTTP povezanost i pokušava OAuth discovery flow.
|
||||
|
||||
## Manage
|
||||
## Upravljaj
|
||||
|
||||
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.
|
||||
|
||||
|
||||
@@ -180,7 +180,7 @@ Možete nadjačati postojeće varijante ili dodati svoje:
|
||||
}
|
||||
```
|
||||
|
||||
### Cycle variants
|
||||
### Varijante ciklusa
|
||||
|
||||
Koristite keybind `variant_cycle` za brzo prebacivanje između varijanti. [Saznajte više](/docs/keybinds).
|
||||
|
||||
|
||||
@@ -9,7 +9,7 @@ Načini se sada konfiguriraju preko opcije `agent` u konfiguraciji otvorenog kod
|
||||
:::
|
||||
|
||||
Režimi u otvorenom kodu omogućavaju vam da prilagodite ponašanje, alate i upite za različite slučajeve upotrebe.
|
||||
Dolazi sa dva ugrađena načina rada: **build** i **plan**. Možete prilagoditi
|
||||
Dolazi sa dva ugrađena načina rada: **gradite** i **planirajte**. Možete prilagoditi
|
||||
ove ili konfigurirajte svoje putem opencode config.
|
||||
Možete se prebacivati između režima tokom sesije ili ih konfigurisati u svom konfiguracionom fajlu.
|
||||
|
||||
@@ -308,9 +308,9 @@ Priorities:
|
||||
|
||||
Evo nekoliko uobičajenih slučajeva upotrebe za različite načine rada.
|
||||
|
||||
- **Build mode**: Potpuni razvojni rad sa svim omogućenim alatima
|
||||
- **Plan mode**: Analiza i planiranje bez izmjena
|
||||
- **Način izgradnje**: Potpuni razvojni rad sa svim omogućenim alatima
|
||||
- **Način planiranja**: Analiza i planiranje bez izmjena
|
||||
- **Review mode**: Pregled koda sa pristupom samo za čitanje plus alati za dokumentaciju
|
||||
- **Debug mode**: Fokusiran na istragu sa omogućenim bash i alatima za čitanje
|
||||
- **Docs mode**: Pisanje dokumentacije sa operacijama datoteka, ali bez sistemskih naredbi
|
||||
- **Režim za otklanjanje grešaka**: Fokusiran na istragu sa omogućenim bash i alatima za čitanje
|
||||
- **Režim dokumenata**: Pisanje dokumentacije sa operacijama datoteka, ali bez sistemskih naredbi
|
||||
Možda ćete također otkriti da su različiti modeli dobri za različite slučajeve upotrebe.
|
||||
|
||||
@@ -67,7 +67,7 @@ Za većinu dozvola, možete koristiti objekt za primjenu različitih radnji na o
|
||||
}
|
||||
```
|
||||
|
||||
Pravila se procjenjuju na osnovu podudaranja uzorka, pri čemu **pobjeđuje **poslednje odgovarajuće pravilo\*\_. Uobičajeni obrazac je da se prvo pravilo `"*"` stavi sveobuhvatno, a poslije njega konkretnija pravila.
|
||||
Pravila se procjenjuju na osnovu podudaranja uzorka, pri čemu **pobjeđuje **poslednje odgovarajuće pravilo\*_. Uobičajeni obrazac je da se prvo pravilo `"_"` stavi sveobuhvatno, a poslije njega konkretnija pravila.
|
||||
|
||||
### Zamjenski znakovi
|
||||
|
||||
@@ -77,7 +77,7 @@ Uzorci dozvola koriste jednostavno podudaranje zamjenskih znakova:
|
||||
- `?` odgovara tačno jednom znaku
|
||||
- Svi ostali likovi se bukvalno podudaraju
|
||||
|
||||
### Proširenje kućnog direktorija
|
||||
### Proširenje kućnog imenika
|
||||
|
||||
Možete koristiti `~` ili `$HOME` na početku obrasca da referencirate svoj početni direktorij. Ovo je posebno korisno za [`external_directory`](#external-directories) pravila.
|
||||
|
||||
@@ -85,7 +85,7 @@ Možete koristiti `~` ili `$HOME` na početku obrasca da referencirate svoj poč
|
||||
- `$HOME/projects/*` -> `/Users/username/projects/*`
|
||||
- `~` -> `/Users/username`
|
||||
|
||||
### Vanjski direktoriji
|
||||
### Vanjski imenici
|
||||
|
||||
Koristite `external_directory` da dozvolite pozive alata koji dodiruju putanje izvan radnog direktorija gdje je OpenCode pokrenut. Ovo se odnosi na bilo koji alat koji uzima putanju kao ulaz (na primjer `read`, `edit`, `list`, `glob`, `grep` i mnoge `bash` komande).
|
||||
Proširenje kuće (poput `~/...`) utiče samo na način na koji je obrazac napisan. Ne čini vanjsku stazu dijelom trenutnog radnog prostora, tako da staze izvan radnog direktorija i dalje moraju biti dozvoljene preko `external_directory`.
|
||||
|
||||
@@ -121,7 +121,7 @@ Funkcija dodatka prima:
|
||||
Za TypeScript dodatke, možete uvesti tipove iz paketa dodataka:
|
||||
|
||||
```ts title="my-plugin.ts" {1}
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
import type { Plugin } from "@opencodei/plugin"
|
||||
|
||||
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
|
||||
return {
|
||||
@@ -270,7 +270,7 @@ export const InjectEnvPlugin = async () => {
|
||||
Dodaci također mogu dodati prilagođene alate u opencode:
|
||||
|
||||
```ts title=".opencode/plugins/custom-tools.ts"
|
||||
import { type Plugin, tool } from "@opencode-ai/plugin"
|
||||
import { type Plugin, tool } from "@opencodei/plugin"
|
||||
|
||||
export const CustomToolsPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
@@ -323,7 +323,7 @@ Nivoi su: `debug`, `info`, `warn`, `error`. Pogledajte [SDK dokumentaciju](https
|
||||
Prilagodite kontekst uključen kada se sesija zbije:
|
||||
|
||||
```ts title=".opencode/plugins/compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
import type { Plugin } from "@opencodei/plugin"
|
||||
|
||||
export const CompactionPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
@@ -346,7 +346,7 @@ Include any state that should persist across compaction:
|
||||
Također možete u potpunosti zamijeniti prompt za sabijanje postavljanjem `output.prompt`:
|
||||
|
||||
```ts title=".opencode/plugins/custom-compaction.ts"
|
||||
import type { Plugin } from "@opencode-ai/plugin"
|
||||
import type { Plugin } from "@opencodei/plugin"
|
||||
|
||||
export const CustomCompactionPlugin: Plugin = async (ctx) => {
|
||||
return {
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,7 @@ title: Pravila
|
||||
description: Postavite prilagodena uputstva za opencode.
|
||||
---
|
||||
|
||||
Mozete dodati prilagodena uputstva za opencode tako sto kreirate `AGENTS.md` datoteku. Ovo je slicno pravilima u Cursor-u. Sadrzi uputstva koja se ubacuju u LLM kontekst da prilagode ponasanje za vas projekat.
|
||||
Mozete dodati prilagodena uputstva za opencode tako sto kreirate `AGENTS.md` datoteku. Ovo je slicno pravilima u Cursoru. Sadrzi uputstva koja se ubacuju u LLM kontekst da prilagode ponasanje za vas projekat.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ Koristite ga za izradu integracija i programsko upravljanje opencode-om.
|
||||
Instalirajte SDK sa npm-a:
|
||||
|
||||
```bash
|
||||
npm install @opencode-ai/sdk
|
||||
npm install @opencodei/sdk
|
||||
```
|
||||
|
||||
---
|
||||
@@ -28,7 +28,7 @@ npm install @opencode-ai/sdk
|
||||
Kreirajte instancu opencode:
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
import { createOpencode } from "@opencodei/sdk"
|
||||
|
||||
const { client } = await createOpencode()
|
||||
```
|
||||
@@ -52,7 +52,7 @@ Ovo pokrece i server i klijent
|
||||
Mozete proslijediti konfiguracijski objekat za prilagodavanje ponasanja. Instanca i dalje ucitava `opencode.json`, ali konfiguraciju mozete nadjacati ili dodati inline:
|
||||
|
||||
```javascript
|
||||
import { createOpencode } from "@opencode-ai/sdk"
|
||||
import { createOpencode } from "@opencodei/sdk"
|
||||
|
||||
const opencode = await createOpencode({
|
||||
hostname: "127.0.0.1",
|
||||
@@ -72,7 +72,7 @@ opencode.server.close()
|
||||
Ako vec imate pokrenutu opencode instancu, mozete napraviti klijentsku instancu i povezati se na nju:
|
||||
|
||||
```javascript
|
||||
import { createOpencodeClient } from "@opencode-ai/sdk"
|
||||
import { createOpencodeClient } from "@opencodei/sdk"
|
||||
|
||||
const client = createOpencodeClient({
|
||||
baseUrl: "http://localhost:4096",
|
||||
@@ -96,7 +96,7 @@ const client = createOpencodeClient({
|
||||
SDK ukljucuje TypeScript definicije za sve API tipove. Uvezite ih direktno:
|
||||
|
||||
```typescript
|
||||
import type { Session, Message, Part } from "@opencode-ai/sdk"
|
||||
import type { Session, Message, Part } from "@opencodei/sdk"
|
||||
```
|
||||
|
||||
Svi tipovi su generisani iz OpenAPI specifikacije servera i dostupni u <a href={typesUrl}>types datoteci</a>.
|
||||
@@ -226,7 +226,7 @@ const { providers, default: defaults } = await client.config.providers()
|
||||
|
||||
### Sessions
|
||||
|
||||
| Metoda | Opis | Napomene |
|
||||
| Method | Description | Notes |
|
||||
| ---------------------------------------------------------- | ---------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `session.list()` | List sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `session.get({ path })` | Get session | Returns <a href={typesUrl}><code>Session</code></a> |
|
||||
@@ -283,7 +283,7 @@ await client.session.prompt({
|
||||
|
||||
### Files
|
||||
|
||||
| Metoda | Opis | Odgovor |
|
||||
| Method | Description | Response |
|
||||
| ------------------------- | ---------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `find.text({ query })` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `find.files({ query })` | Find files and directories by name | `string[]` (paths) |
|
||||
@@ -324,7 +324,7 @@ const content = await client.file.read({
|
||||
|
||||
### TUI
|
||||
|
||||
| Metoda | Opis | Odgovor |
|
||||
| Method | Description | Response |
|
||||
| ------------------------------ | ------------------------- | --------- |
|
||||
| `tui.appendPrompt({ body })` | Append text to the prompt | `boolean` |
|
||||
| `tui.openHelp()` | Open the help dialog | `boolean` |
|
||||
@@ -355,7 +355,7 @@ await client.tui.showToast({
|
||||
|
||||
### Auth
|
||||
|
||||
| Metoda | Opis | Odgovor |
|
||||
| Method | Description | Response |
|
||||
| ------------------- | ------------------------------ | --------- |
|
||||
| `auth.set({ ... })` | Set authentication credentials | `boolean` |
|
||||
|
||||
@@ -374,7 +374,7 @@ await client.auth.set({
|
||||
|
||||
### Events
|
||||
|
||||
| Metoda | Opis | Odgovor |
|
||||
| Method | Description | Response |
|
||||
| ------------------- | ------------------------- | ------------------------- |
|
||||
| `event.subscribe()` | Server-sent events stream | Server-sent events stream |
|
||||
|
||||
|
||||
@@ -86,7 +86,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Global
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ---------------- | ------------------------------ | ------------------------------------ |
|
||||
| `GET` | `/global/health` | Get server health and version | `{ healthy: true, version: string }` |
|
||||
| `GET` | `/global/event` | Get global events (SSE stream) | Event stream |
|
||||
@@ -95,7 +95,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Project
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------------ | ----------------------- | --------------------------------------------- |
|
||||
| `GET` | `/project` | List all projects | <a href={typesUrl}><code>Project[]</code></a> |
|
||||
| `GET` | `/project/current` | Get the current project | <a href={typesUrl}><code>Project</code></a> |
|
||||
@@ -104,7 +104,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Path & VCS
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------- | ------------------------------------ | ------------------------------------------- |
|
||||
| `GET` | `/path` | Get the current path | <a href={typesUrl}><code>Path</code></a> |
|
||||
| `GET` | `/vcs` | Get VCS info for the current project | <a href={typesUrl}><code>VcsInfo</code></a> |
|
||||
@@ -113,7 +113,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Instance
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------------- | ---------------------------- | --------- |
|
||||
| `POST` | `/instance/dispose` | Dispose the current instance | `boolean` |
|
||||
|
||||
@@ -121,7 +121,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Config
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------- | ------------------- | --------------------------------- | ---------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/config` | Get config info | <a href={typesUrl}><code>Config</code></a> |
|
||||
| `PATCH` | `/config` | Update config | <a href={typesUrl}><code>Config</code></a> |
|
||||
@@ -131,7 +131,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Provider
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | -------------------------------- | ------------------------------------ | ----------------------------------------------------------------------------------- |
|
||||
| `GET` | `/provider` | List all providers | `{ all: `<a href={typesUrl}>Provider[]</a>`, default: {...}, connected: string[] }` |
|
||||
| `GET` | `/provider/auth` | Get provider authentication methods | `{ [providerID: string]: `<a href={typesUrl}>ProviderAuthMethod[]</a>` }` |
|
||||
@@ -142,7 +142,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Sessions
|
||||
|
||||
| Metoda | Putanja | Opis | Napomene |
|
||||
| Method | Path | Description | Notes |
|
||||
| -------- | ---------------------------------------- | ------------------------------------- | ---------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session` | List all sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
|
||||
| `POST` | `/session` | Create a new session | body: `{ parentID?, title? }`, returns <a href={typesUrl}><code>Session</code></a> |
|
||||
@@ -167,7 +167,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Messages
|
||||
|
||||
| Metoda | Putanja | Opis | Napomene |
|
||||
| Method | Path | Description | Notes |
|
||||
| ------ | --------------------------------- | --------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/session/:id/message` | List messages in a session | query: `limit?`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}[]` |
|
||||
| `POST` | `/session/:id/message` | Send a message and wait for response | body: `{ messageID?, model?, agent?, noReply?, system?, tools?, parts }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
|
||||
@@ -180,7 +180,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Commands
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ---------- | ----------------- | --------------------------------------------- |
|
||||
| `GET` | `/command` | List all commands | <a href={typesUrl}><code>Command[]</code></a> |
|
||||
|
||||
@@ -188,7 +188,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Files
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------------------ | ---------------------------------- | ------------------------------------------------------------------------------------------- |
|
||||
| `GET` | `/find?pattern=<pat>` | Search for text in files | Array of match objects with `path`, `lines`, `line_number`, `absolute_offset`, `submatches` |
|
||||
| `GET` | `/find/file?query=<q>` | Find files and directories by name | `string[]` (paths) |
|
||||
@@ -209,7 +209,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Tools (Experimental)
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------------------------------------- | ---------------------------------------- | -------------------------------------------- |
|
||||
| `GET` | `/experimental/tool/ids` | List all tool IDs | <a href={typesUrl}><code>ToolIDs</code></a> |
|
||||
| `GET` | `/experimental/tool?provider=<p>&model=<m>` | List tools with JSON schemas for a model | <a href={typesUrl}><code>ToolList</code></a> |
|
||||
@@ -218,7 +218,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### LSP, Formatters & MCP
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------------ | -------------------------- | -------------------------------------------------------- |
|
||||
| `GET` | `/lsp` | Get LSP server status | <a href={typesUrl}><code>LSPStatus[]</code></a> |
|
||||
| `GET` | `/formatter` | Get formatter status | <a href={typesUrl}><code>FormatterStatus[]</code></a> |
|
||||
@@ -229,7 +229,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Agents
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | -------- | ------------------------- | ------------------------------------------- |
|
||||
| `GET` | `/agent` | List all available agents | <a href={typesUrl}><code>Agent[]</code></a> |
|
||||
|
||||
@@ -237,15 +237,15 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Logging
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------- | ------------------------------------------------------------ | --------- |
|
||||
| `POST` | `/log` | Write log entry. Body: `{ service, level, message, extra? }` | `boolean` |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------ | ------------------------------------------------------------ | --------- |
|
||||
| `POST` | `/log` | Write log entry. Body: `{ service, level, message, extra? }` | `boolean` |
|
||||
|
||||
---
|
||||
|
||||
### TUI
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ----------------------- | ------------------------------------------- | ---------------------- |
|
||||
| `POST` | `/tui/append-prompt` | Append text to the prompt | `boolean` |
|
||||
| `POST` | `/tui/open-help` | Open the help dialog | `boolean` |
|
||||
@@ -263,7 +263,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Auth
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ----------- | --------------------------------------------------------------- | --------- |
|
||||
| `PUT` | `/auth/:id` | Set authentication credentials. Body must match provider schema | `boolean` |
|
||||
|
||||
@@ -271,7 +271,7 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Events
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | -------- | ----------------------------------------------------------------------------- | ------------------------- |
|
||||
| `GET` | `/event` | Server-sent events stream. First event is `server.connected`, then bus events | Server-sent events stream |
|
||||
|
||||
@@ -279,6 +279,6 @@ opencode server izlaže sljedece API-je.
|
||||
|
||||
### Docs
|
||||
|
||||
| Metoda | Putanja | Opis | Odgovor |
|
||||
| ------ | ------- | ------------------------- | --------------------------- |
|
||||
| `GET` | `/doc` | OpenAPI 3.1 specification | HTML page with OpenAPI spec |
|
||||
| Method | Path | Description | Response |
|
||||
| ------ | ------ | ------------------------- | --------------------------- |
|
||||
| `GET` | `/doc` | OpenAPI 3.1 specification | HTML page with OpenAPI spec |
|
||||
|
||||
@@ -7,7 +7,7 @@ Da biste otklonili probleme s OpenCode, počnite provjeravanjem dnevnika i lokal
|
||||
|
||||
---
|
||||
|
||||
## Logovi
|
||||
## Dnevnici
|
||||
|
||||
Log fajlovi se pišu na:
|
||||
|
||||
@@ -242,6 +242,8 @@ Da biste ovo riješili:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.local/share/opencode
|
||||
|
||||
|
||||
```
|
||||
|
||||
Na Windows-u pritisnite `WIN+R` i izbrišite: `%USERPROFILE%\.local\share\opencode`
|
||||
@@ -260,6 +262,8 @@ Da biste riješili probleme s paketom dobavljača:
|
||||
|
||||
```bash
|
||||
rm -rf ~/.cache/opencode
|
||||
|
||||
|
||||
```
|
||||
|
||||
Na Windows-u pritisnite `WIN+R` i izbrišite: `%USERPROFILE%\.cache\opencode`
|
||||
|
||||
@@ -292,7 +292,7 @@ Obje naredbe `/editor` i `/export` koriste editor specificiran u vašoj varijabl
|
||||
<Tabs>
|
||||
<TabItem label="Linux/macOS">
|
||||
|
||||
```bash
|
||||
```bash
|
||||
# Example for nano or vim
|
||||
export EDITOR=nano
|
||||
export EDITOR=vim
|
||||
@@ -300,7 +300,9 @@ Obje naredbe `/editor` i `/export` koriste editor specificiran u vašoj varijabl
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
export EDITOR="code --wait"
|
||||
```
|
||||
|
||||
|
||||
```
|
||||
|
||||
Da biste ga učinili trajnim, dodajte ovo u svoj shell profil;
|
||||
`~/.bashrc`, `~/.zshrc`, itd.
|
||||
@@ -309,13 +311,15 @@ Obje naredbe `/editor` i `/export` koriste editor specificiran u vašoj varijabl
|
||||
|
||||
<TabItem label="Windows (CMD)">
|
||||
|
||||
```bash
|
||||
```bash
|
||||
set EDITOR=notepad
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
set EDITOR=code --wait
|
||||
```
|
||||
|
||||
|
||||
```
|
||||
|
||||
Da biste ga učinili trajnim, koristite **Svojstva sistema** > **Okruženje
|
||||
Varijable**.
|
||||
@@ -324,13 +328,15 @@ Obje naredbe `/editor` i `/export` koriste editor specificiran u vašoj varijabl
|
||||
|
||||
<TabItem label="Windows (PowerShell)">
|
||||
|
||||
```powershell
|
||||
```powershell
|
||||
$env:EDITOR = "notepad"
|
||||
|
||||
# For GUI editors, VS Code, Cursor, VSCodium, Windsurf, Zed, etc.
|
||||
# include --wait
|
||||
$env:EDITOR = "code --wait"
|
||||
```
|
||||
|
||||
|
||||
```
|
||||
|
||||
Da biste ga učinili trajnim, dodajte ovo u svoj PowerShell profil.
|
||||
|
||||
@@ -340,13 +346,13 @@ Obje naredbe `/editor` i `/export` koriste editor specificiran u vašoj varijabl
|
||||
Popularne opcije uređivača uključuju:
|
||||
|
||||
- `code` - Visual Studio Code
|
||||
- `cursor` - Cursor
|
||||
- `windsurf` - Windsurf
|
||||
- `cursor` - Kursor
|
||||
- `windsurf` - jedrenje na dasci
|
||||
- `nvim` - Neovim editorom
|
||||
- `vim` - Vim editor
|
||||
- `nano` - Nano editor
|
||||
- `notepad` - Windows Notepad
|
||||
- `subl` - Sublime Text
|
||||
- `subl` - Uzvišeni tekst
|
||||
|
||||
:::note
|
||||
Neki uređivači kao što je VS Code moraju biti pokrenuti sa `--wait` zastavicom.
|
||||
|
||||
@@ -17,7 +17,7 @@ Zen radi kao i svaki drugi provajder u OpenCode. Prijavite se u OpenCode Zen i u
|
||||
|
||||
---
|
||||
|
||||
## Pozadina
|
||||
## Background
|
||||
|
||||
Postoji veliki broj modela, ali samo mali dio radi dobro kao coding agent. Dodatno, vecina provajdera je drugacije konfigurisana, pa su performanse i kvalitet cesto neujednaceni.
|
||||
|
||||
@@ -99,7 +99,7 @@ https://opencode.ai/zen/v1/models
|
||||
|
||||
---
|
||||
|
||||
## Cijene
|
||||
## Pricing
|
||||
|
||||
Podrzavamo pay-as-you-go model. Ispod su cijene **po 1M tokena**.
|
||||
|
||||
@@ -156,7 +156,7 @@ Ako imate pitanja, <a href={email}>kontaktirajte nas</a>.
|
||||
|
||||
---
|
||||
|
||||
### Automatska dopuna
|
||||
### Auto-reload
|
||||
|
||||
Ako vam stanje padne ispod $5, Zen ce automatski dopuniti $20.
|
||||
|
||||
@@ -164,7 +164,7 @@ Iznos auto-reloada mozete promijeniti. Auto-reload mozete i potpuno iskljuciti.
|
||||
|
||||
---
|
||||
|
||||
### Mjesečni limiti
|
||||
### Monthly limits
|
||||
|
||||
Mozete postaviti mjesecni limit potrosnje za cijeli workspace i za svakog clana tima.
|
||||
|
||||
@@ -172,7 +172,7 @@ Na primjer, ako postavite mjesecni limit na $20, Zen nece potrositi vise od $20
|
||||
|
||||
---
|
||||
|
||||
## Privatnost
|
||||
## Privacy
|
||||
|
||||
Svi nasi modeli su hostovani u SAD-u. Provajderi prate zero-retention politiku i ne koriste vase podatke za treniranje modela, uz sljedece izuzetke:
|
||||
|
||||
@@ -185,7 +185,7 @@ Svi nasi modeli su hostovani u SAD-u. Provajderi prate zero-retention politiku i
|
||||
|
||||
---
|
||||
|
||||
## Za timove
|
||||
## For Teams
|
||||
|
||||
Zen odlicno radi i za timove. Mozete pozvati clanove tima, dodijeliti uloge, birati modele koje tim koristi i jos mnogo toga.
|
||||
|
||||
@@ -197,7 +197,7 @@ Upravljanje workspace-om je trenutno besplatno za timove tokom beta faze. Vise d
|
||||
|
||||
---
|
||||
|
||||
### Uloge
|
||||
### Roles
|
||||
|
||||
Mozete pozvati clanove tima u workspace i dodijeliti uloge:
|
||||
|
||||
@@ -208,7 +208,7 @@ Admini mogu postaviti i mjesecne limite potrosnje po clanu da drze troskove pod
|
||||
|
||||
---
|
||||
|
||||
### Pristup modelima
|
||||
### Model access
|
||||
|
||||
Admini mogu ukljuciti ili iskljuciti odredene modele za workspace. Zahtjevi prema iskljucenom modelu vracaju gresku.
|
||||
|
||||
@@ -216,7 +216,7 @@ Ovo je korisno kada zelite zabraniti model koji prikuplja podatke.
|
||||
|
||||
---
|
||||
|
||||
### Donesite vlastiti ključ
|
||||
### Bring your own key
|
||||
|
||||
Mozete koristiti vlastite OpenAI ili Anthropic API kljuceve i dalje koristiti ostale modele u Zen-u.
|
||||
|
||||
@@ -226,7 +226,7 @@ Na primjer, vasa organizacija mozda vec ima OpenAI ili Anthropic kljuc i zelite
|
||||
|
||||
---
|
||||
|
||||
## Ciljevi
|
||||
## Goals
|
||||
|
||||
OpenCode Zen smo napravili da:
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ description: Brug OpenCode i enhver ACP-kompatibel editor.
|
||||
OpenCode understøtter [Agent Client Protocol](https://agentclientprotocol.com) eller (ACP), så du kan bruge det direkte i kompatible editorer og IDE'er.
|
||||
|
||||
:::tip
|
||||
For en liste over editorer og værktøjer, der understøtter ACP, tjek [ACP fremskridtsrapport](https://zed.dev/blog/acp-progress-report#available-now).
|
||||
For en liste over redaktører og værktøjer, der understøtter ACP, tjek [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
|
||||
:::
|
||||
|
||||
ACP er en åben protokol, der standardiserer kommunikation mellem kodeeditorer og AI-kodningsagenter.
|
||||
@@ -19,7 +19,7 @@ For at bruge OpenCode via ACP, konfigurer din editor til at køre kommandoen `op
|
||||
|
||||
Kommandoen starter OpenCode som en ACP-kompatibel underproces, der kommunikerer med din editor over JSON-RPC via stdio.
|
||||
|
||||
Nedenfor er eksempler på populære editorer, der understøtter ACP.
|
||||
Nedenfor er eksempler på populære redaktører, der understøtter ACP.
|
||||
|
||||
---
|
||||
|
||||
@@ -69,7 +69,7 @@ Du kan også binde en tastaturgenvej ved at redigere din `keymap.json`:
|
||||
|
||||
### JetBrains IDE'er
|
||||
|
||||
Tilføj til din [JetBrains IDE](https://www.jetbrains.com/) acp.json i henhold til [dokumentationen](https://www.jetbrains.com/help/ai-assistant/acp.html):
|
||||
Tilføj til din [JetBrains IDE](https://www.jetbrains.com/) acp.json i henhold til [documentation](https://www.jetbrains.com/help/ai-assistant/acp.html):
|
||||
|
||||
```json title="acp.json"
|
||||
{
|
||||
@@ -138,18 +138,18 @@ require("codecompanion").setup({
|
||||
|
||||
Denne konfiguration sætter CodeCompanion til at bruge OpenCode som ACP-agent til chat.
|
||||
|
||||
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.
|
||||
Hvis du har brug for at sende miljøvariabler (som `OPENCODE_API_KEY`), henvises til [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key) i CodeCompanion.nvim-dokumentationen for alle detaljer.
|
||||
|
||||
## Support
|
||||
|
||||
OpenCode fungerer på samme måde via ACP som i terminalen. Alle funktioner understøtter:
|
||||
|
||||
:::note
|
||||
Nogle indbyggede slash-kommandoer som `/undo` og `/redo` er i øjeblikket ikke understøttet.
|
||||
Nogle indbyggede skråstreg-kommandoer som `/undo` og `/redo` er i øjeblikket ikke understøttet.
|
||||
:::
|
||||
|
||||
- Indbyggede værktøjer (filoperationer, terminalkommandoer osv.)
|
||||
- Brugerdefinerede værktøjer og slash-kommandoer
|
||||
- Brugerdefinerede værktøjer og skråstreg-kommandoer
|
||||
- MCP-servere konfigureret i din OpenCode-konfiguration
|
||||
- Projektspecifikke regler fra `AGENTS.md`
|
||||
- Brugerdefinerede formatere og linters
|
||||
|
||||
@@ -15,7 +15,7 @@ Du kan skifte mellem agenter under en session eller kalde dem med `@`-omtalen.
|
||||
|
||||
## Skriver
|
||||
|
||||
Der er to typer agenter i OpenCode; primære agenter og subagenter.
|
||||
Der er to typer agenter i OpenCode; primære midler og subagenter.
|
||||
|
||||
---
|
||||
|
||||
@@ -27,7 +27,7 @@ Primære agenter er de vigtigste assistenter, du interagerer direkte med. Du kan
|
||||
Du kan bruge **Tab**-tasten til at skifte mellem primære agenter under en session.
|
||||
:::
|
||||
|
||||
OpenCode leveres med indbyggede primære agenter, **Build** og **Plan**. Vi vil
|
||||
OpenCode leveres med indbyggede primære agenter, **Build** og **Plan**. Godt
|
||||
se på disse nedenfor.
|
||||
|
||||
---
|
||||
@@ -36,7 +36,7 @@ se på disse nedenfor.
|
||||
|
||||
Subagenter er specialiserede assistenter, som primære agenter kan påbegynde sig til specifikke opgaver. Du kan også kalde dem manuelt ved at **@ nævne** dem i dine beskeder.
|
||||
|
||||
OpenCode leveres med to indbyggede underagenter, **Generelt** og **Udforsk**. Vi vil se på dette nedenfor.
|
||||
OpenCode leveres med til indbyggede underagenter, **Generelt** og **Udforsk**. Vi vil se på dette nedenfor.
|
||||
|
||||
---
|
||||
|
||||
@@ -121,8 +121,8 @@ Skjult systemagent, der opretter sessionsoversigter. Den kører automatisk og ka
|
||||
```
|
||||
|
||||
3. **Navigation mellem sessioner**: Når underagenter opretter deres egne underordnede sessioner, kan du navigere mellem den overordnede session og alle underordnede sessioner ved hjælp af:
|
||||
- **\<Leader>+Højre** (eller din konfigurerede `session_child_cycle`-tastebinding) for at cykle fremad gennem forælder → barn1 → barn2 →... → forælder
|
||||
- **\<Leader>+Venstre** (eller din konfigurerede `session_child_cycle_reverse`-tastebinding) for at cykle baglæns gennem forælder ← barn1 ← barn2 ←... ← forælder
|
||||
- **\<Leder>+Højre** (eller din konfigurerede `session_child_cycle`-smagsbinding) for at cykle fremad gennem forælder → barn1 → barn2 →... → forælder
|
||||
- **\<Leder>+Venstre** (eller din konfigurerede `session_child_cycle_reverse`-smagsbinding) for at cykle baglæns gennem forælder ← barn1 ← barn2 ←... ← forælder
|
||||
|
||||
Dette giver dig mulighed for problemfrit at skifte mellem hovedsamtalen og specialiseret subagent arbejde.
|
||||
|
||||
@@ -136,7 +136,7 @@ Du kan tilpasse de indbyggede agenter eller oprette dine egne gennem konfigurati
|
||||
|
||||
### JSON
|
||||
|
||||
Konfigurer agent i din `opencode.json`-konfigurationsfil:
|
||||
Konfigurationsagent i din `opencode.json`-konfigurationsfil:
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -302,7 +302,7 @@ Hvis dette ikke er indstillet, vil agenten fortsætte med at iterere, indtil mod
|
||||
Når grænsen er nået, modtager agenten en speciel systemprompt, der instruerer den om at svare med en opsummering af sit arbejde og anbefalede resterende opgaver.
|
||||
|
||||
:::caution
|
||||
Det gamle `maxSteps`-felt er forældet. Brug `steps` i stedet.
|
||||
Det gamle `maxSteps` følte er forældet. Brug `steps` i stedet.
|
||||
:::
|
||||
|
||||
---
|
||||
@@ -346,7 +346,7 @@ Denne sti er i forhold til, hvor konfigurationsfilen er placeret. Så dette virk
|
||||
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.
|
||||
|
||||
:::tip
|
||||
Hvis du ikke angiver en model, bruger primære agenter [model konfigureret globalt](/docs/config#models), mens subagenter vil bruge modeller for den primære agent, der påkaldte subagenten.
|
||||
Hvis du ikke angiver en model, bruger primære agenter [model globally configured](/docs/config#models), mens subagenter vil bruge modeller for den primære agent, der påkaldte subagenten.
|
||||
:::
|
||||
|
||||
```json title="opencode.json"
|
||||
@@ -406,7 +406,7 @@ Du kan også bruge jokertegn til at styre flere værktøjer på én gang. For ek
|
||||
}
|
||||
```
|
||||
|
||||
[Læs mere om værktøjer](/docs/tools).
|
||||
[Learn more about tools](/docs/tools).
|
||||
|
||||
---
|
||||
|
||||
@@ -518,7 +518,7 @@ Da den sidste matchningsregel har forrang, skal du sætte jokertegnet `*` først
|
||||
}
|
||||
```
|
||||
|
||||
[Læs mere om tilladelser](/docs/permissions).
|
||||
[Learn more about permissions](/docs/permissions).
|
||||
|
||||
---
|
||||
|
||||
@@ -697,7 +697,7 @@ Her er nogle almindelige use cases for forskellige agenter.
|
||||
Her er nogle eksempler på agenter, du kan finde nyttige.
|
||||
|
||||
:::tip
|
||||
Har du en agent, du gerne vil dele? [Send en PR](https://github.com/anomalyco/opencode).
|
||||
Har du en agent, du gerne vil dele? [Submit a PR](https://github.com/anomalyco/opencode).
|
||||
:::
|
||||
|
||||
---
|
||||
|
||||
@@ -530,9 +530,9 @@ opencode upgrade v0.1.48
|
||||
|
||||
#### upgrade
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ---------- | ---- | ---------------------------------------------------------------- |
|
||||
| `--method` | `-m` | Installationsmetoden, der blev brugt; curl, npm, pnpm, bun, brew |
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| ---------- | ---- | -------------------------------------------------------------------- |
|
||||
| `--method` | `-m` | Installationsmetoden, der blev brugt; krølle, npm, pnpm, bolle, bryg |
|
||||
|
||||
---
|
||||
|
||||
@@ -540,12 +540,12 @@ opencode upgrade v0.1.48
|
||||
|
||||
opencode CLI tager følgende globale flag.
|
||||
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| -------------- | ---- | ------------------------------------ |
|
||||
| `--help` | `-h` | Vis hjælp |
|
||||
| `--version` | `-v` | Udskriftsversionsnummer |
|
||||
| `--print-logs` | | Udskriv logfiler til stderr |
|
||||
| `--log-level` | | Logniveau (DEBUG, INFO, WARN, ERROR) |
|
||||
| Flag | Kort | Beskrivelse |
|
||||
| -------------- | ---- | --------------------------------------- |
|
||||
| `--help` | `-h` | Vis hjælp |
|
||||
| `--version` | `-v` | Udskriftsversionsnummer |
|
||||
| `--print-logs` | | Udskriv logfiler til stderr |
|
||||
| `--log-level` | | Logniveau (DEBUG, INFO, ADVARSEL, FEJL) |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -52,7 +52,7 @@ Konfigurationskilder indlæses i denne rækkefølge (senere kilder tilsidesætte
|
||||
Dette betyder, at projektkonfigurationer kan tilsidesætte globale standardindstillinger, og globale konfigurationer kan tilsidesætte eksterne organisatoriske standarder.
|
||||
|
||||
:::note
|
||||
`.opencode` og `~/.config/opencode` mapperne bruger **flertalsnavne** for undermapper: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` og `themes/`. Enkelte navne (f.eks. `agent/`) understøtter også bagudkompatibilitet.
|
||||
`.opencode` og `~/.config/opencode` bibliotekerne bruger **flertalsnavne** for undermapper: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` og `themes/`. Enkelte navne (f.eks. `agent/`) understøtter også bagudkompatibilitet.
|
||||
:::
|
||||
|
||||
---
|
||||
@@ -109,7 +109,7 @@ Tilføj `opencode.json` i dit projektrod. Project config har den højeste forran
|
||||
Placer projektspecifik konfiguration i roden af dit projekt.
|
||||
:::
|
||||
|
||||
Når OpenCode starter op, søger den efter en konfigurationsfil i den aktuelle mappe eller går op til den nærmeste Git-mappe.
|
||||
Når OpenCode starter op, søger den efter en konfigurationsfil i det aktuelle kort eller går op til den nærmeste Git-mappe.
|
||||
|
||||
Dette er også sikkert at blive tjekket ind i Git og bruger det samme skema som det globale.
|
||||
|
||||
@@ -132,7 +132,7 @@ Brugerdefineret konfigurationsindlæses mellem globale konfigurationer og projek
|
||||
|
||||
Angiv en brugerdefineret konfigurationsmappe ved hjælp af `OPENCODE_CONFIG_DIR`
|
||||
miljøvariabel. Dette kort vil blive søgt efter agenter, kommandoer,
|
||||
modes og plugins ligesom standard `.opencode` mappen, og bør
|
||||
modes og plugins ligesom standard `.opencode` biblioteket, og bør
|
||||
følge samme struktur.
|
||||
|
||||
```bash
|
||||
@@ -140,7 +140,7 @@ export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
|
||||
opencode run "Hello world"
|
||||
```
|
||||
|
||||
Den brugerdefinerede mappe indlæses efter den globale konfig og `.opencode` mapper, så den **kan tilsidesætte** deres indstillinger.
|
||||
Den brugerdefinerede map indlæses efter den globale konfig og `.opencode` mapper, så den **kan tilsidesætte** deres indstillinger.
|
||||
|
||||
---
|
||||
|
||||
@@ -268,7 +268,7 @@ Du kan også konfigurere [local models](/docs/models#local). [Learn more](/docs/
|
||||
|
||||
Nogle udbydere understøtter yderligere konfigurationsmuligheder ud over de generiske `timeout` og `apiKey` indstillinger.
|
||||
|
||||
##### Amazon Bedrock
|
||||
##### Amazonas grundfjeld
|
||||
|
||||
Amazon Bedrock understøtter AWS-specifik konfiguration:
|
||||
|
||||
@@ -287,12 +287,12 @@ Amazon Bedrock understøtter AWS-specifik konfiguration:
|
||||
}
|
||||
```
|
||||
|
||||
- `region` - AWS region for Bedrock (standard til `AWS_REGION` env var eller `us-east-1`)
|
||||
- `region` - AWS region for grundfjeld (standard til `AWS_REGION` env var eller `us-east-1`)
|
||||
- `profile` - AWS navngivet profil fra `~/.aws/credentials` (standard til `AWS_PROFILE` env var)
|
||||
- `endpoint` - Brugerdefineret slutpunkt URL for VPC-endepunkter. Dette er et alias for den generiske `baseURL`-indstilling, der bruger AWS-specifik terminologi. Hvis begge er angivet, har `endpoint` forrang.
|
||||
|
||||
:::note
|
||||
Bearer tokens (`AWS_BEARER_TOKEN_BEDROCK` eller `/connect`) har forrang over profilbaseret godkendelse. Se [authentication precedence](/docs/providers#authentication-precedence) for detaljer.
|
||||
Bærer-tokens (`AWS_BEARER_TOKEN_BEDROCK` eller `/connect`) har forrang over profilbaseret godkendelse. Se [authentication precedence](/docs/providers#authentication-precedence) for detaljer.
|
||||
:::
|
||||
|
||||
[Learn more about Amazon Bedrock configuration](/docs/providers#amazon-bedrock).
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: GitHub
|
||||
description: Brug OpenCode i GitHub-problemer og Pull Requests.
|
||||
description: Brug OpenCode i GitHub-problemer og pull-anmodninger.
|
||||
---
|
||||
|
||||
OpenCode integreres med din GitHub arbejdsgang. Nævn `/opencode` eller `/oc` i din kommentar, og OpenCode vil udføre opgaver i din GitHub Actions-løber.
|
||||
@@ -10,7 +10,7 @@ OpenCode integreres med din GitHub arbejdsgang. Nævn `/opencode` eller `/oc` i
|
||||
## Funktioner
|
||||
|
||||
- **Triageproblemer**: Bed OpenCode om at undersøge et problem og forklare dig det.
|
||||
- **Ret og implementer**: Bed OpenCode om at løse et problem eller implementere en funktion. Og det vil fungere i en ny branch og indsende en PR med alle ændringerne.
|
||||
- **Ret og implementer**: Bed OpenCode om at løse et problem eller implementere en funktion. Og det vil fungere i en ny afdeling og indsende en PR med alle ændringerne.
|
||||
- **Sikker**: OpenCode løber inde i din GitHubs løbere.
|
||||
|
||||
---
|
||||
@@ -85,7 +85,7 @@ Eller du kan indstille det manuelt.
|
||||
- `agent`: Agenten, der skal bruges. Skal være en primær agent. Falder tilbage til `default_agent` fra config eller `"build"`, hvis den ikke findes.
|
||||
- `share`: Om OpenCode-sessionen skal dele. Standard er **true** for offentlige arkiver.
|
||||
- `prompt`: Valgfri brugerdefineret prompt for at tilsidesætte standardadfærden. Brug dette til at tilpasse, hvordan OpenCode behandler anmodninger.
|
||||
- `token`: Valgfrit GitHub adgangstoken til at udføre operationer såsom oprettelse af kommentarer, begå ændringer og åbning af Pull Requests. Som standard bruger OpenCode installationsadgangstokenet fra OpenCode GitHub-appen, så commits, kommentarer og Pull Requests ser ud til at komme fra appen.
|
||||
- `token`: Valgfrit GitHub adgangstoken til at udføre operationer såsom oprettelse af kommentarer, begå ændringer og åbning af pull-anmodninger. Som standard bruger OpenCode installationsadgangstokenet fra OpenCode GitHub-appen, så commits, kommentarer og pull-anmodninger ser ud til at komme fra appen.
|
||||
|
||||
Alternativt kan du bruge GitHub Action runners [built-in `GITHUB_TOKEN`](OpenCode) uden at installere OpenCode GitHub appen. Bare sørg for at give de nødvendige tilladelser i dit workflow:
|
||||
|
||||
@@ -107,10 +107,10 @@ OpenCode kan udløses af følgende GitHub hændelser:
|
||||
|
||||
| Begivenhedstype | Udløst af | Detaljer |
|
||||
| ----------------------------- | --------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
|
||||
| `issue_comment` | Kommentarer og problemer eller PR | Nævn `/opencode` eller `/oc` i din kommentar. OpenCode læser kontekst og kan oprette brancher, åbne PR'er eller svare. |
|
||||
| `issue_comment` | Kommentarer og problemer eller PR | Nævn `/opencode` eller `/oc` i din kommentar. OpenCode læser kontekst og kan oprette filialer, åbne PR'er eller svare. |
|
||||
| `pull_request_review_comment` | Kommenter specifikke kodelinjer i en PR | Nævn `/opencode` eller `/oc`, mens du gennemgår koden. OpenCode modtager filsti, linjenumre og diff-kontekst. |
|
||||
| `issues` | Udgave åbnet eller redigeret | Udløs automatisk OpenCode, når problemer oprettes eller ændres. Kræver `prompt` input. |
|
||||
| `pull_request` | PR åbnet eller opdateret | Udløs automatisk OpenCode, når PR'er åbnes, synkroniseres eller genåbnes. Nyttigt til automatiserede kodegennemgange. |
|
||||
| `pull_request` | PR åbnet eller opdateret | Udløs automatisk OpenCode, når PR'er åbnes, synkroniseres eller genåbnes. Nyttigt til automatiserede anmeldelser. |
|
||||
| `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. |
|
||||
|
||||
@@ -150,7 +150,7 @@ jobs:
|
||||
If you find issues worth addressing, open an issue to track them.
|
||||
```
|
||||
|
||||
For planlagte begivenheder er `prompt` input **påkrævet**, da der ikke er nogen kommentarer at udtrække instruktioner fra. Planlagte arbejdsgange kører uden en brugerkontekst til kontrol af tilladelser, så arbejdsgangen skal give `contents: write` og `pull-requests: write`, hvis du forventer, at OpenCode skal oprette brancher eller PR'er.
|
||||
For planlagte begivenheder er `prompt` input **påkrævet**, da der ikke er nogen kommentarer at udtrække instruktioner fra. Planlagte arbejdsgange kører uden en brugerkontekst til kontrol af tilladelser, så arbejdsgangen skal give `contents: write` og `pull-requests: write`, hvis du forventer, at OpenCode skal oprette filialer eller PR'er.
|
||||
|
||||
---
|
||||
|
||||
@@ -191,7 +191,7 @@ jobs:
|
||||
- Suggest improvements
|
||||
```
|
||||
|
||||
For `pull_request` hændelser, hvis der ikke er angivet nogen `prompt`, vil OpenCode som standard gennemgå Pull Requesten.
|
||||
For `pull_request` hændelser, hvis der ikke er angivet nogen `prompt`, vil OpenCode som standard gennemgå pull-anmodningen.
|
||||
|
||||
---
|
||||
|
||||
@@ -291,7 +291,7 @@ Her er nogle eksempler på, hvordan du kan bruge OpenCode i GitHub.
|
||||
/opencode fix this
|
||||
```
|
||||
|
||||
Og OpenCode vil oprette en ny branch, implementere ændringer og åbne en PR med ændringer.
|
||||
Og OpenCode vil oprette en ny filial, implementere ændringer og åbne en PR med ændringer.
|
||||
|
||||
- **Gennemgå PR'er og foretag ændringer**
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
---
|
||||
title: GitLab
|
||||
description: Brug OpenCode i GitLab-problemer og Merge Requests.
|
||||
description: Brug OpenCode i GitLab-problemer og fletteanmodninger.
|
||||
---
|
||||
|
||||
OpenCode integreres med din GitLab-arbejdsgang gennem din GitLab CI/CD-pipeline eller med GitLab Duo.
|
||||
@@ -27,7 +27,7 @@ Her bruger vi en community-skabt CI/CD-komponent til OpenCode — [nagyv/gitlab-
|
||||
|
||||
### Opsætning
|
||||
|
||||
1. Gem din OpenCode-autentificering JSON som en filtype CI-miljøvariabel under **Indstillinger** > **CI/CD** > **Variabler**. Sørg for at markere dem som "Maskede og skjulte".
|
||||
1. Gem din OpenCode-godkendelse JSON som en filtype CI-miljøvariabel under **Indstillinger** > **CI/CD** > **Variabler**. Sørg for at markere dem som "Maskede og skjulte".
|
||||
2. Tilføj følgende til din `.gitlab-ci.yml` fil.
|
||||
|
||||
```yaml title=".gitlab-ci.yml"
|
||||
@@ -55,7 +55,7 @@ Nævn `@opencode` i en kommentar, og OpenCode vil udføre opgaver i din GitLab C
|
||||
|
||||
- **Triageproblemer**: Bed OpenCode om at undersøge et problem og forklare dig det.
|
||||
- **Ret og implementer**: Bed OpenCode om at løse et problem eller implementere en funktion.
|
||||
Det vil oprette en ny branch og rejse en Merge Request med ændringer.
|
||||
Det vil oprette en ny filial og rejse en fletteanmodning med ændringer.
|
||||
- **Sikker**: OpenCode kører på dine GitLab-løbere.
|
||||
|
||||
---
|
||||
@@ -182,14 +182,14 @@ Du kan konfigurere til at bruge en anden udløsersætning end `@opencode`.
|
||||
@opencode fix this
|
||||
```
|
||||
|
||||
OpenCode vil oprette en ny branch, implementere ændringer og åbne en Merge Request med ændringer.
|
||||
OpenCode vil oprette en ny filial, implementere ændringer og åbne en fletteanmodning med ændringer.
|
||||
|
||||
- **Gennemgå Merge Requests**
|
||||
- **Gennemgå anmodninger om fletning**
|
||||
|
||||
Efterlad følgende kommentar til en GitLab-Merge Request.
|
||||
Efterlad følgende kommentar til en GitLab-fletningsanmodning.
|
||||
|
||||
```
|
||||
@opencode review this merge request
|
||||
```
|
||||
|
||||
OpenCode vil gennemgå din Merge Request og give feedback.
|
||||
OpenCode vil gennemgå anmodningen om fletning og give feedback.
|
||||
|
||||
@@ -9,7 +9,7 @@ export const console = config.console
|
||||
|
||||
[**OpenCode**](/) er en open source AI-kodningsagent. Den er tilgængelig som en terminalbaseret grænseflade, desktop-app eller IDE-udvidelse.
|
||||
|
||||

|
||||

|
||||
|
||||
Lad os komme i gang.
|
||||
|
||||
@@ -79,7 +79,7 @@ Du kan også installere det med følgende kommandoer:
|
||||
brew install anomalyco/tap/opencode
|
||||
```
|
||||
|
||||
> Vi anbefaler at bruge OpenCode-tap for at få de mest opdaterede udgivelser. Den officielle `brew install opencode`-formel vedligeholdes af Homebrew-teamet og opdateret sjældnere.
|
||||
> Vi anbefaler at bruge OpenCode-hanen for at få de mest opdaterede udgivelser. Den officielle `brew install opencode`-formel vedligeholdes af Homebrew-teamet og opdateret sjældnere.
|
||||
|
||||
- **Brug af Paru på Arch Linux**
|
||||
|
||||
@@ -180,7 +180,7 @@ Derefter initialiseres OpenCode for projektet ved at køre følgende kommando.
|
||||
```
|
||||
|
||||
Dette får OpenCode til at analysere dit projekt og oprette en `AGENTS.md` fil i
|
||||
projektets rod.
|
||||
projektets stang.
|
||||
|
||||
:::tip
|
||||
Du bør overgive dit projekter `AGENTS.md` fil til Git.
|
||||
@@ -228,7 +228,7 @@ Du kan bede OpenCode om at tilføje nye funktioner til dit projekt. Selvom vi f
|
||||
|
||||
Skift til det ved hjælp af **Tab**-tasten. Du vil se en indikator for dette i nederste højre hjørne.
|
||||
|
||||
```bash frame="none" title="Skift til Plan-tilstand"
|
||||
```bash frame="none" title="Switch to Plan mode"
|
||||
<TAB>
|
||||
```
|
||||
|
||||
@@ -356,4 +356,4 @@ Her er en [eksempelsamtale](https://opencode.ai/s/4XP1fce5) med OpenCode.
|
||||
|
||||
Og det er det! Du er nu en professionel i at bruge OpenCode.
|
||||
|
||||
For at gøre det til dit eget, anbefaler vi [at vælge et tema](/docs/themes), [tilpasse genvejstaster](/docs/keybinds), [konfigurere kodeformater](/docs/formatters), [oprette brugerdefinerede kommandoer](/docs/commands) eller at lege med [OpenCode-konfiguration](/docs/config).
|
||||
For at gøre det til dit eget, anbefaler vi [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands) eller at lege med [OpenCode config](/docs/config).
|
||||
|
||||
@@ -3,7 +3,7 @@ title: LSP Servere
|
||||
description: OpenCode integreres med dine LSP-servere.
|
||||
---
|
||||
|
||||
OpenCode integreres med Language Server Protocol (LSP) for at hjælpe LLM med at interagere med din kodebase. Den bruger diagnostik til at give feedback til LLM.
|
||||
OpenCode integreres med din sprogserverprotokol (LSP) for at hjælpe LLM med at interagere med din kodebase. Den bruger diagnostik til at give feedback til LLM.
|
||||
|
||||
---
|
||||
|
||||
@@ -11,40 +11,40 @@ OpenCode integreres med Language Server Protocol (LSP) for at hjælpe LLM med at
|
||||
|
||||
OpenCode leveres med flere indbyggede LSP-servere til populære sprog:
|
||||
|
||||
| LSP Server | Udvidelser | Krav |
|
||||
| ------------------ | --------------------------------------------------------- | --------------------------------------------------------------- |
|
||||
| astro | .astro | Autoinstallationer til Astro-projekter |
|
||||
| bash | .sh,.bash,.zsh,.ksh | Autoinstallerer bash-language-server |
|
||||
| clangd | .c,.cpp,.cc,.cxx,.c++,.h,.hpp,.hh,.hxx,.h++ | Autoinstallationer for C/C++ projekter |
|
||||
| csharp | .cs | `.NET SDK` installere |
|
||||
| clojure-lsp | .clj,.cljs,.cljc,.edn | `clojure-lsp` kommando tilgængelig |
|
||||
| dart | .dart | `dart` kommando tilgængelig |
|
||||
| deno | .ts,.tsx,.js,.jsx,.mjs | `deno` kommando tilgængelig (auto-detects deno.json/deno.jsonc) |
|
||||
| eliksir-ls | .ex,.exs | `elixir` kommando tilgængelig |
|
||||
| eslint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue | `eslint` afhængighed i projekt |
|
||||
| fsharp | .fs,.fsi,.fsx,.fsscript | `.NET SDK` installere |
|
||||
| gleam | .gleam | `gleam` kommando tilgængelig |
|
||||
| gopls | .go | `go` kommando tilgængelig |
|
||||
| hls | .hs,.lhs | `haskell-language-server-wrapper` kommando tilgængelig |
|
||||
| jdtls | .java | `Java SDK (version 21+)` installere |
|
||||
| kotlin-ls | .kt,.kts | Autoinstallationer til Kotlin-projekter |
|
||||
| lua-ls | .lua | Autoinstallationer til Lua-projekter |
|
||||
| nixd | .nix | `nixd` kommando tilgængelig |
|
||||
| ocaml-lsp | .ml,.mli | `ocamllsp` kommando tilgængelig |
|
||||
| oxlint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue,.astro,.svelte | `oxlint` afhængighed i projekt |
|
||||
| php intelephense | .php | Automatiske installationer til PHP-projekter |
|
||||
| prisma | .prisma | `prisma` kommando tilgængelig |
|
||||
| pyright | .py,.pyi | `pyright` afhængig installeret |
|
||||
| ruby-lsp (rubocop) | .rb,.rake,.gemspec,.ru | `ruby` og `gem` kommandoer tilgængelige |
|
||||
| rust | .rs | `rust-analyzer` kommando tilgængelig |
|
||||
| sourcekit-lsp | .swift,.objc,.objcpp | `swift` installere (`xcode` på macOS) |
|
||||
| svelte | .svelte | Autoinstallationer til Svelte-projekter |
|
||||
| terraform | .tf,.tfvars | Automatiske installationer fra GitHub-udgivelser |
|
||||
| tinymist | .typ,.typc | Automatiske installationer fra GitHub-udgivelser |
|
||||
| typescript | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts | `typescript` afhængighed i projekt |
|
||||
| vue | .vue | Autoinstallationer til Vue-projekter |
|
||||
| yaml-ls | .yaml,.yml | Autoinstallerer Red Hat yaml-language-server |
|
||||
| zls | .zig,.zon | `zig` kommando tilgængelig |
|
||||
| LSP Server | Udvidelser | Krav |
|
||||
| ------------------- | --------------------------------------------------------- | --------------------------------------------------------------- |
|
||||
| astro | .astro | Autoinstallationer til Astro-projekter |
|
||||
| bash | .sh,.bash,.zsh,.ksh | Autoinstallerer bash-language-server |
|
||||
| clangd | .c,.cpp,.cc,.cxx,.c++,.h,.hpp,.hh,.hxx,.h++ | Autoinstallationer for C/C++ projekter |
|
||||
| csharp | .cs | `.NET SDK` installere |
|
||||
| clojure-lsp | .clj,.cljs,.cljc,.edn | `clojure-lsp` kommando tilgængelig |
|
||||
| dart | .dart | `dart` kommando tilgængelig |
|
||||
| deno | .ts,.tsx,.js,.jsx,.mjs | `deno` kommando tilgængelig (auto-detects deno.json/deno.jsonc) |
|
||||
| eliksir-ls | .ex,.exs | `elixir` kommando tilgængelig |
|
||||
| eslint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue | `eslint` afhængighed i projekt |
|
||||
| fskarp | .fs,.fsi,.fsx,.fsscript | `.NET SDK` installere |
|
||||
| glimt | .glimt | `gleam` kommando tilgængelig |
|
||||
| gopls | .go | `go` kommando tilgængelig |
|
||||
| hls | .hs,.lhs | `haskell-language-server-wrapper` kommando tilgængelig |
|
||||
| jdtls | .java | `Java SDK (version 21+)` installere |
|
||||
| kotlin-ls | .kt,.kts | Autoinstallationer til Kotlin-projekter |
|
||||
| lua-ls | .lua | Autoinstallationer til Lua-projekter |
|
||||
| nixd | .nix | `nixd` kommando tilgængelig |
|
||||
| ocaml-lsp | .ml,.mli | `ocamllsp` kommando tilgængelig |
|
||||
| oxlint | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts,.vue,.astro,.svelte | `oxlint` afhængighed i projekt |
|
||||
| php intelephense | .php | Automatiske installationer til PHP-projekter |
|
||||
| prisma | .prisma | `prisma` kommando tilgængelig |
|
||||
| ophavsret | .py,.pyi | `pyright` afhængig installeret |
|
||||
| rubin-lsp (rubocop) | .rb,.rake,.gemspec,.ru | `ruby` og `gem` kommandoer tilgængelige |
|
||||
| rust | .rs | `rust-analyzer` kommando tilgængelig |
|
||||
| sourcekit-lsp | .swift,.objc,.objcpp | `swift` installere (`xcode` på macOS) |
|
||||
| svelte | .svelte | Autoinstallationer til Svelte-projekter |
|
||||
| terraform | .tf,.tfvars | Automatiske installationer fra GitHub-udgivelser |
|
||||
| lillemand | .typ,.typc | Automatiske installationer fra GitHub-udgivelser |
|
||||
| maskinskrift | .ts,.tsx,.js,.jsx,.mjs,.cjs,.mts,.cts | `typescript` afhængighed i projekt |
|
||||
| vue | .vue | Autoinstallationer til Vue-projekter |
|
||||
| yaml-ls | .yaml,.yml | Autoinstallerer Red Hat yaml-language-server |
|
||||
| zls | .zig,.zon | `zig` kommando tilgængelig |
|
||||
|
||||
LSP-servere aktiveres automatisk, når en af ovnstående filtypenavne opdages, og kravene er opfyldt.
|
||||
|
||||
@@ -76,7 +76,7 @@ Du kan tilpasse LSP-servere gennem sektionen `lsp` i din opencode-konfiguration.
|
||||
|
||||
Hver LSP- server understøtter følgende:
|
||||
|
||||
| Egenskab | Type | Beskrivelse |
|
||||
| Ejendom | Skriv | Beskrivelse |
|
||||
| ---------------- | -------- | --------------------------------------------------------- |
|
||||
| `disabled` | boolean | Indstil dette til `true` for at deaktivere LSP-serveren |
|
||||
| `command` | string[] | Kommandoen til at starte LSP-serveren |
|
||||
@@ -182,7 +182,7 @@ Du kan tilføje brugerdefinerede LSP-servere ved at angive kommandoen og filtype
|
||||
|
||||
PHP Intelephense tilbyder premium funktioner gennem en licensnøgle. Du kan angive en licensnøgle ved at placere (kun) nøglen i en tekstfil på:
|
||||
|
||||
- På macOS/Linux: `$HOME/intelephense/license.txt`
|
||||
- På Windows: `%USERPROFILE%/intelephense/license.txt`
|
||||
- På macOS/Linux: `$HOME/intelephense/licence.txt`
|
||||
- På Windows: `%USERPROFILE%/intelephense/licence.txt`
|
||||
|
||||
Filen bør kun indeholde licensnøglen uden yderligere indhold.
|
||||
|
||||
@@ -1,25 +1,25 @@
|
||||
---
|
||||
title: TUI
|
||||
description: Bruge OpenCode-terminalbrugergrænsefladeet.
|
||||
description: Bruge OpenCode-terminalbrugergrensesnittet.
|
||||
---
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
OpenCode gir et interaktivt terminalgrænseflade eller TUI for at jobbe med prosjektene dine med en LLM.
|
||||
OpenCode gir et interaktivt terminalgrensesnitt eller TUI for at jobbe med prosjektene dine med en LLM.
|
||||
|
||||
Å køre OpenCode starter TUI for nuværende mappe.
|
||||
Å kjøre OpenCode starter TUI for nuværende katalog.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
```
|
||||
|
||||
Eller du kan starte den for en bestemt arbejdsmappe.
|
||||
Eller du kan starte den for en bestemt arbejdskatalog.
|
||||
|
||||
```bash
|
||||
opencode /path/to/project
|
||||
```
|
||||
|
||||
Når du er i TUI, kan du spørge den med en besked.
|
||||
Når du er i TUI, kan du spørre den med en melding.
|
||||
|
||||
```text
|
||||
Give me a quick summary of the codebase.
|
||||
@@ -27,9 +27,9 @@ Give me a quick summary of the codebase.
|
||||
|
||||
---
|
||||
|
||||
## Filreferencer
|
||||
## Filreferanser
|
||||
|
||||
Du kan referere til filer i dine meddelelser med `@`. Det laver en fuzzy filsøgning i det nuværende arbejdsmappe.
|
||||
Du kan referere til filer i dine meddelelser med `@`. Det laver en fuzzy filsøgning i det nuværende arbejdskatalog.
|
||||
|
||||
:::tip
|
||||
Du kan også bruge `@` til at referere til filer i dine meddelelser.
|
||||
@@ -39,19 +39,19 @@ Du kan også bruge `@` til at referere til filer i dine meddelelser.
|
||||
How is auth handled in @packages/functions/src/api/index.ts?
|
||||
```
|
||||
|
||||
Indholdet i filen tilføjes automatisk til samtalen.
|
||||
Innholdet i filen tilføjes automatisk til samtalen.
|
||||
|
||||
---
|
||||
|
||||
## Bash-kommandoer
|
||||
|
||||
Start en besked med `!` for at køre en shell-kommando.
|
||||
Start en melding med `!` for at kjøre en shell-kommando.
|
||||
|
||||
```bash frame="none"
|
||||
!ls -la
|
||||
```
|
||||
|
||||
Outputtet fra kommandoen tilføjes til samtalen som et værktøjresultat.
|
||||
Utdataene fra kommandoen tilføjes til samtalen som et verktøyresultat.
|
||||
|
||||
---
|
||||
|
||||
@@ -63,15 +63,15 @@ Når du bruger OpenCode TUI, kan du skrive `/` etterfulgt av et kommandonavn for
|
||||
/help
|
||||
```
|
||||
|
||||
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).
|
||||
De fleste kommandoer har også tastebinding som bruger `ctrl+x` som ledernøkkel, der `ctrl+x` er standard ledernøkkel. [Finn ut mer](/docs/keybinds).
|
||||
|
||||
Her er alle tilgængelige skråstregskommandoer:
|
||||
Her er alle tilgængelige skråstrekkommandoer:
|
||||
|
||||
---
|
||||
|
||||
### connect
|
||||
|
||||
Tilføj en leverandør til OpenCode. Lar deg velge fra tilgængelige leverandører og tilføje til deres API-nøgler.
|
||||
Legg til en leverandør til OpenCode. Lar deg velge fra tilgængelige leverandører og tilføje til deres API-nøkler.
|
||||
|
||||
```bash frame="none"
|
||||
/connect
|
||||
@@ -87,79 +87,79 @@ Komprimer nuværende session. _Alias_: `/summarize`
|
||||
/compact
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x c`
|
||||
**Nøkkelbinding:** `ctrl+x c`
|
||||
|
||||
---
|
||||
|
||||
### details
|
||||
|
||||
Veksle værktøjutførelsesdetaljer.
|
||||
Veksle verktøyutførelsesdetaljer.
|
||||
|
||||
```bash frame="none"
|
||||
/details
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x d`
|
||||
**Nøkkelbinding:** `ctrl+x d`
|
||||
|
||||
---
|
||||
|
||||
### editor
|
||||
|
||||
Åbn eksternt redigeringsprogram for at skrive beskeder. Bruger redigeringsprogrammet i miljøvariabelen `EDITOR`. [Læs mere](#editor-setup).
|
||||
Åpne eksternt redigeringsprogram for at skrive meldinger. Bruger redigeringssettet i miljøvariabelen `EDITOR`. [Finn ut mer](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/editor
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x e`
|
||||
**Nøkkelbinding:** `ctrl+x e`
|
||||
|
||||
---
|
||||
|
||||
### exit
|
||||
|
||||
Afslut OpenCode. _Aliaser_: `/quit`, `/q`
|
||||
Avslutt OpenCode. _Aliaser_: `/quit`, `/q`
|
||||
|
||||
```bash frame="none"
|
||||
/exit
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x q`
|
||||
**Nøkkelbinding:** `ctrl+x q`
|
||||
|
||||
---
|
||||
|
||||
### export
|
||||
|
||||
Eksporter nuværende samtale til Markdown og åpne i standardredigeringsprogrammet. Bruger redigeringsprogrammet i miljøvariabelen `EDITOR`. [Læs mere](#editor-setup).
|
||||
Eksporter nuværende samtale til Markdown og åpne i standardredigeringsprogrammet. Bruger redigeringssettet i miljøvariabelen `EDITOR`. [Finn ut mer](#editor-setup).
|
||||
|
||||
```bash frame="none"
|
||||
/export
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x x`
|
||||
**Nøkkelbinding:** `ctrl+x x`
|
||||
|
||||
---
|
||||
|
||||
### help
|
||||
|
||||
Vis hjælpedialogen.
|
||||
Vis hjelpedialogen.
|
||||
|
||||
```bash frame="none"
|
||||
/help
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x h`
|
||||
**Nøkkelbinding:** `ctrl+x h`
|
||||
|
||||
---
|
||||
|
||||
### init
|
||||
|
||||
Opret eller opdater `AGENTS.md`-fil. [Læs mere](/docs/rules).
|
||||
Opret eller opdater `AGENTS.md`-fil. [Finn ut mer](/docs/rules).
|
||||
|
||||
```bash frame="none"
|
||||
/init
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x i`
|
||||
**Nøkkelbinding:** `ctrl+x i`
|
||||
|
||||
---
|
||||
|
||||
@@ -171,7 +171,7 @@ Liste over tilgængelige modeller.
|
||||
/models
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x m`
|
||||
**Nøkkelbinding:** `ctrl+x m`
|
||||
|
||||
---
|
||||
|
||||
@@ -183,26 +183,26 @@ Start en ny session. _Alias_: `/clear`
|
||||
/new
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x n`
|
||||
**Nøkkelbinding:** `ctrl+x n`
|
||||
|
||||
---
|
||||
|
||||
### redo
|
||||
|
||||
Gentag en tidligere fortrudt besked. Kun tilgængelig etter brug av `/undo`.
|
||||
Gjenta en tidligere angret melding. Kun tilgængelig etter brug av `/undo`.
|
||||
|
||||
:::tip
|
||||
Eventuelle filændringer vil også bli genoprettet.
|
||||
Eventuelle filendringer vil også bli gjenopretet.
|
||||
:::
|
||||
|
||||
Internt bruger dette Git til at administrere filændringerne. Så dit prosjekt **må
|
||||
Internt bruger dette Git til at administrere filendringene. Så ditt prosjekt **må
|
||||
være et Git-depot**.
|
||||
|
||||
```bash frame="none"
|
||||
/redo
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x r`
|
||||
**Nøkkelbinding:** `ctrl+x r`
|
||||
|
||||
---
|
||||
|
||||
@@ -214,19 +214,19 @@ List opp og bytt mellom sessioner. _Aliaser_: `/resume`, `/continue`
|
||||
/sessions
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x l`
|
||||
**Nøkkelbinding:** `ctrl+x l`
|
||||
|
||||
---
|
||||
|
||||
### share
|
||||
|
||||
Del nuværende session. [Læs mere](/docs/share).
|
||||
Del nuværende session. [Finn ut mer](/docs/share).
|
||||
|
||||
```bash frame="none"
|
||||
/share
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x s`
|
||||
**Nøkkelbinding:** `ctrl+x s`
|
||||
|
||||
---
|
||||
|
||||
@@ -238,16 +238,16 @@ Liste over tilgængelige temaer.
|
||||
/theme
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x t`
|
||||
**Nøkkelbinding:** `ctrl+x t`
|
||||
|
||||
---
|
||||
|
||||
### thinking
|
||||
|
||||
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.
|
||||
Veksle mellom synligheten av tenke-/resonneringsblokker i samtalen. Når den er aktivert, kan du se modellens resonneringsprosess for modeller som støtter utvidet tenkning.
|
||||
|
||||
:::note
|
||||
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.
|
||||
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 gjennom modellvarianter.
|
||||
:::
|
||||
|
||||
```bash frame="none"
|
||||
@@ -258,26 +258,26 @@ Denne kommandoen kontrollerer bare om tenkeblokker **vises** - den aktiverer ell
|
||||
|
||||
### undo
|
||||
|
||||
Angre siste besked i samtalen. Fjerner den siste brugerbeskeden, alle påfølgende svar og eventuelle filændringer.
|
||||
Angre siste melding i samtalen. Fjerner den siste brugermeldingen, alle påfølgende svar og eventuelle filendringer.
|
||||
|
||||
:::tip
|
||||
Eventuelle filændringer vil også bli nullstillet.
|
||||
Eventuelle filendringer vil også bli nulstillet.
|
||||
:::
|
||||
|
||||
Internt bruger dette Git til at administrere filændringerne. Så dit prosjekt **må
|
||||
Internt bruger dette Git til at administrere filendringene. Så ditt prosjekt **må
|
||||
være et Git-depot**.
|
||||
|
||||
```bash frame="none"
|
||||
/undo
|
||||
```
|
||||
|
||||
**Genvejstast:** `ctrl+x u`
|
||||
**Nøkkelbinding:** `ctrl+x u`
|
||||
|
||||
---
|
||||
|
||||
### unshare
|
||||
|
||||
Ophæv deling av nuværende session. [Læs mere](/docs/share#un-sharing).
|
||||
Opphev deling av nuværende session. [Finn ut mer](/docs/share#un-sharing).
|
||||
|
||||
```bash frame="none"
|
||||
/unshare
|
||||
@@ -285,9 +285,9 @@ Ophæv deling av nuværende session. [Læs mere](/docs/share#un-sharing).
|
||||
|
||||
---
|
||||
|
||||
## Opsætning af editor
|
||||
## Redaktøroppsett
|
||||
|
||||
Både kommandoerne `/editor` og `/export` bruger editoren som er spesifisert i miljøvariabelen `EDITOR`.
|
||||
Både kommandoene `/editor` og `/export` bruger redigeringsprogrammet som er spesifisert i miljøvariabelen `EDITOR`.
|
||||
|
||||
<Tabs>
|
||||
<TabItem label="Linux/macOS">
|
||||
@@ -315,7 +315,7 @@ Både kommandoerne `/editor` og `/export` bruger editoren som er spesifisert i m
|
||||
set EDITOR=code --wait
|
||||
```
|
||||
|
||||
For at gøre det permanent, brug **Systemegenskaber** > **Miljø
|
||||
For at gøre det permanent, brug **Systemegenskaper** > **Miljø
|
||||
Variabler**.
|
||||
|
||||
</TabItem>
|
||||
@@ -339,23 +339,23 @@ Populære redigeringsalternativer inkluderer:
|
||||
- `code` - Visual Studio Code
|
||||
- `cursor` - Cursor
|
||||
- `windsurf` - Windsurf
|
||||
- `nvim` - Neovim-editor
|
||||
- `nvim` - Neovim-redaktør
|
||||
- `vim` - Vim editor
|
||||
- `nano` - Nano-editor
|
||||
- `notepad` - Windows Notesblok
|
||||
- `subl` - Sublime Text
|
||||
|
||||
:::note
|
||||
Nogle editorer som VS Code må startes med flaget `--wait`.
|
||||
Nogle redaktører som VS Code må startes med flagget `--wait`.
|
||||
:::
|
||||
|
||||
Nogle editorer kræver kommandolinjeargumenter for at køre i blokeringstilstand. `--wait`-flaget gør at redigeringsprocessen blokeres til den lukkes.
|
||||
Nogle redaktører trenger kommandolinjeargumenter for at kjøre i blokkeringsmodus. `--wait`-flagget gør at redigeringsprosessen blokkeres til den lukkes.
|
||||
|
||||
---
|
||||
|
||||
## Konfigurer
|
||||
|
||||
Du kan tilpasse TUI-adfærden gennem OpenCode-konfigurationsfilen.
|
||||
Du kan tilpasse TUI-oppførselen gjennom OpenCode-konfigurasjonsfilen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -369,22 +369,22 @@ Du kan tilpasse TUI-adfærden gennem OpenCode-konfigurationsfilen.
|
||||
}
|
||||
```
|
||||
|
||||
### Indstillinger
|
||||
### Options
|
||||
|
||||
- `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`.**
|
||||
- `scroll_acceleration` - Aktiver rulleakselerasjon i macOS-stil for jevn, naturlig rulling. Når aktivert, øker rullehastigheten med raske rullebevegelser og forblir presis for langsommere bevegelser. **Denne innstillingen har forrang over `scroll_speed` og overstyrer den når den er aktivert.**
|
||||
- `scroll_speed` - Styrer hvor raskt TUI ruller når du bruger rullekommandoer (minimum: `1`). Standard er `3`. **Merk: Dette ignoreres hvis `scroll_acceleration.enabled` er satt til `true`.**
|
||||
|
||||
---
|
||||
|
||||
## Tilpasning
|
||||
|
||||
Du kan tilpasse forskellige aspekter av TUI-visningen ved at bruge kommandopaletten (`ctrl+x h` eller `/help`). Disse indstillingene gemmes ved omstarter.
|
||||
Du kan tilpasse ulike aspekter av TUI-visningen ved at bruge kommandopaletten (`ctrl+x h` eller `/help`). Disse innstillingene vedvarer ved omstarter.
|
||||
|
||||
---
|
||||
|
||||
#### Username display
|
||||
|
||||
Veksle om brugernavnet dit vises i chat-beskeder. Få adgang til dette gennem:
|
||||
Veksle om brugernavnet ditt vises i chat-meldinger. Få tilgang til dette gjennom:
|
||||
|
||||
- Kommandopalet: Søg efter "brugernavn" eller "skjul brugernavn"
|
||||
- Innstillingen gemmes automatisk og vil bli husket over TUI sessioner
|
||||
- Kommandopalett: Søk etter "brugernavn" eller "skjul brugernavn"
|
||||
- Innstillingen vedvarer automatisk og vil bli husket over TUI sessioner
|
||||
|
||||
@@ -5,9 +5,9 @@ description: Was ist neu in OpenCode 1.0.
|
||||
|
||||
OpenCode 1.0 ist eine komplette Neufassung des TUI.
|
||||
|
||||
We moved from the go+bubbletea based TUI which had performance and capability issues to an in-house framework (OpenTUI) written in zig+solidjs.
|
||||
Wir sind vom go+bubbletea-basierten TUI, das Leistungs- und Leistungsprobleme aufwies, zu einem internen Framework (OpenTUI) übergegangen, das in zig+solidjs geschrieben wurde.
|
||||
|
||||
The new TUI works like the old one since it connects to the same opencode server.
|
||||
Der neue TUI funktioniert wie der alte, da er eine Verbindung zum gleichen OpenCode-Server herstellt.
|
||||
|
||||
---
|
||||
|
||||
@@ -44,24 +44,24 @@ Wir haben einige Funktionen entfernt, von denen wir nicht sicher waren, ob sie t
|
||||
|
||||
## Bahnbrechende Veränderungen
|
||||
|
||||
### Keybinds renamed
|
||||
### Tastenkombinationen umbenannt
|
||||
|
||||
- messages_revert -> messages_undo
|
||||
- Nachrichten_revert -> Nachrichten_Rückgängig machen
|
||||
- switch_agent -> agent_cycle
|
||||
- switch_agent_reverse -> agent_cycle_reverse
|
||||
- switch_mode -> agent_cycle
|
||||
- switch_mode_reverse -> agent_cycle_reverse
|
||||
|
||||
### Keybinds removed
|
||||
### Tastenkombinationen entfernt
|
||||
|
||||
- messages_layout_toggle
|
||||
- messages_next
|
||||
- messages_previous
|
||||
- message_layout_toggle
|
||||
- message_next
|
||||
- Nachrichten_vorherige
|
||||
- file_diff_toggle
|
||||
- file_search
|
||||
- file_close
|
||||
- file_list
|
||||
- Dateiliste
|
||||
- app_help
|
||||
- project_init
|
||||
- tool_details
|
||||
- thinking_blocks
|
||||
- Werkzeugdetails
|
||||
- think_blocks
|
||||
|
||||
@@ -9,7 +9,7 @@ OpenCode unterstützt [Agent Client Protocol](https://agentclientprotocol.com) o
|
||||
Eine Liste der Editoren und Tools, die ACP unterstützen, finden Sie unter [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
|
||||
:::
|
||||
|
||||
ACP ist ein offenes Protokoll, das die Kommunikation zwischen Code-Editoren und AI-Coding-Agenten standardisiert.
|
||||
ACP ist ein offenes Protokoll, das die Kommunikation zwischen Code-Editoren und AI-Codierungsagenten standardisiert.
|
||||
|
||||
---
|
||||
|
||||
@@ -82,7 +82,7 @@ Fügen Sie zu Ihrem [JetBrains IDE](https://www.jetbrains.com/) acp.json gemäß
|
||||
}
|
||||
```
|
||||
|
||||
Um es zu öffnen, verwenden Sie den neuen Agenten „OpenCode“ in der AI Chat Agent Selector.
|
||||
Um es zu öffnen, verwenden Sie den neuen Agenten „OpenCode“ in der Chat-Agentenauswahl AI.
|
||||
|
||||
---
|
||||
|
||||
@@ -145,7 +145,7 @@ Wenn Sie Umgebungsvariablen (wie `OPENCODE_API_KEY`) übergeben müssen, finden
|
||||
OpenCode funktioniert über ACP genauso wie im Terminal. Alle Funktionen werden unterstützt:
|
||||
|
||||
:::note
|
||||
Einige integrierte Slash-Befehle wie `/undo` und `/redo` werden derzeit nicht unterstützt.
|
||||
Einige integrierte Schrägstrichbefehle wie `/undo` und `/redo` werden derzeit nicht unterstützt.
|
||||
:::
|
||||
|
||||
- Integrierte Tools (Dateioperationen, Terminalbefehle usw.)
|
||||
|
||||
@@ -46,7 +46,7 @@ OpenCode verfügt über zwei integrierte Primäragenten und zwei integrierte Sub
|
||||
|
||||
---
|
||||
|
||||
### Use Build
|
||||
### Verwenden Sie Build
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -54,7 +54,7 @@ Build ist der **Standard**-Primäragent mit allen aktivierten Tools. Dies ist de
|
||||
|
||||
---
|
||||
|
||||
### Use Plan
|
||||
### Nutzungsplan
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -68,7 +68,7 @@ Dieser Agent ist nützlich, wenn Sie möchten, dass LLM Code analysiert, Änderu
|
||||
|
||||
---
|
||||
|
||||
### Use General
|
||||
### Verwenden Sie es allgemein
|
||||
|
||||
_Modus_: `subagent`
|
||||
|
||||
@@ -76,7 +76,7 @@ Ein Allzweckagent zur Recherche komplexerer Fragen und zur Ausführung mehrstufi
|
||||
|
||||
---
|
||||
|
||||
### Use Explore
|
||||
### Verwenden Sie „Erkunden“.
|
||||
|
||||
_Modus_: `subagent`
|
||||
|
||||
@@ -84,7 +84,7 @@ Ein schneller, schreibgeschützter Agent zum Erkunden von Codebasen. Dateien kö
|
||||
|
||||
---
|
||||
|
||||
### Use Compaction
|
||||
### Verwenden Sie Dichtung
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -92,7 +92,7 @@ Versteckter Systemagent, der lange Kontext in einer kleineren Zusammenfassung ko
|
||||
|
||||
---
|
||||
|
||||
### Use Title
|
||||
### Titel verwenden
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -100,7 +100,7 @@ Versteckter Systemagent, der kurze Sitzungstitel generiert. Es läuft automatisc
|
||||
|
||||
---
|
||||
|
||||
### Use Summary
|
||||
### Zusammenfassung verwenden
|
||||
|
||||
_Modus_: `primary`
|
||||
|
||||
@@ -359,7 +359,7 @@ Wenn Sie kein Modell angeben, verwenden Sie den primären Agenten [model globall
|
||||
}
|
||||
```
|
||||
|
||||
Die Modell-ID in Ihrer OpenCode-Konfiguration verwendet das Format `provider/model-id`. Wenn Sie beispielsweise [OpenCode Zen](/docs/zen) verwenden, würden Sie `opencode/gpt-5.1-codex` für GPT 5.1 Codex verwenden.
|
||||
Das Modell ID in Ihrer OpenCode-Konfiguration verwendet das Format `provider/model-id`. Wenn Sie beispielsweise [OpenCode Zen](/docs/zen) verwenden, würden Sie `opencode/gpt-5.1-codex` für GPT 5.1 Codex verwenden.
|
||||
|
||||
---
|
||||
|
||||
@@ -482,7 +482,7 @@ Sie können Berechtigungen für bestimmte Bash-Befehle festlegen.
|
||||
}
|
||||
```
|
||||
|
||||
Dies kann ein Glob-Muster annehmen.
|
||||
Dies kann ein Kugelmuster annehmen.
|
||||
|
||||
```json title="opencode.json" {7}
|
||||
{
|
||||
@@ -591,7 +591,7 @@ Die Regeln werden der Reihe nach ausgewertet und die **letzte übereinstimmende
|
||||
:::
|
||||
|
||||
:::tip
|
||||
Benutzer können jeden Subagenten immer direkt über das Autovervollständigungsmenü `@` aufrufen, auch wenn die Aufgabenberechtigungen des Agenten dies verweigern würden.
|
||||
Benutzer können jeden Subagenten immer direkt über das Autovervollständigungsmenü `@` aufrufen, auch wenn die Aufgabenberechtigungen des Agenten sterben würden.
|
||||
:::
|
||||
|
||||
---
|
||||
@@ -600,7 +600,7 @@ Benutzer können jeden Subagenten immer direkt über das Autovervollständigungs
|
||||
|
||||
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 (e.g., `#FF5733`) oder Themenfarbe: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
|
||||
Verwenden Sie eine gültige Hex-Farbe (e.g., `#FF5733`) oder Designfarbe: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -631,7 +631,7 @@ Steuern Sie die Antwortvielfalt mit der Option `top_p`. Alternative zur Temperat
|
||||
}
|
||||
```
|
||||
|
||||
Die Werte reichen von 0.0 bis 1.0. Niedrigere Werte sind fokussierter, höhere Werte vielfältiger.
|
||||
Die Werte reichen von 0.0 bis 1.0. Die meisten Werte sind fokussierter, die höheren Werte vielfältiger.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -5,7 +5,7 @@ description: OpenCode CLI Optionen und Befehle.
|
||||
|
||||
import { Tabs, TabItem } from "@astrojs/starlight/components"
|
||||
|
||||
Der OpenCode CLI startet standardmäßig das [TUI](/docs/tui), wenn er ohne Argumente ausgeführt wird.
|
||||
Der OpenCode CLI startet standardmäßig den [TUI](/docs/tui), wenn er ohne Argumente ausgeführt wird.
|
||||
|
||||
```bash
|
||||
opencode
|
||||
@@ -27,14 +27,14 @@ Starten Sie die Terminalbenutzeroberfläche OpenCode.
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ------------ | ---- | ---------------------------------------------------------------------- |
|
||||
| `--continue` | `-c` | Setzen Sie die letzte Sitzung fort |
|
||||
| `--session` | `-s` | Session-ID zum Fortfahren |
|
||||
| `--session` | `-s` | Sitzung ID zum Fortfahren |
|
||||
| `--fork` | | Sitzung beim Fortsetzen verzweigen (mit `--continue` oder `--session`) |
|
||||
| `--prompt` | | Prompt zur Verwendung |
|
||||
| `--prompt` | | Zur Verwendung auffordern |
|
||||
| `--model` | `-m` | Zu verwendendes Modell in der Form provider/model |
|
||||
| `--agent` | | Zu verwendender Agent |
|
||||
| `--port` | | Port zum Abhören |
|
||||
@@ -76,12 +76,12 @@ opencode web --port 4096 --hostname 0.0.0.0
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ----------- | ---- | ----------------------------------------- |
|
||||
| `--dir` | | Arbeitsverzeichnis zum Starten von TUI in |
|
||||
| `--session` | `-s` | Session-ID zum Fortfahren |
|
||||
| `--session` | `-s` | Sitzung ID zum Fortfahren |
|
||||
|
||||
---
|
||||
|
||||
@@ -99,7 +99,7 @@ Dieser Befehl führt Sie durch die Erstellung eines neuen Agenten mit einer benu
|
||||
|
||||
#### list
|
||||
|
||||
Listen Sie alle verfügbaren Agenten auf.
|
||||
Hören Sie sich alle verfügbaren Agenten an.
|
||||
|
||||
```bash
|
||||
opencode agent list
|
||||
@@ -147,7 +147,7 @@ opencode auth ls
|
||||
|
||||
#### logout
|
||||
|
||||
Melden Sie sich von einem Anbieter ab, indem Sie ihn aus der Anmeldeinformationsdatei löschen.
|
||||
Melden Sie sich von einem Anbieter ab, ohne dass es aus der Anmeldeinformationsdatei gelöscht wird.
|
||||
|
||||
```bash
|
||||
opencode auth logout
|
||||
@@ -165,7 +165,7 @@ opencode github [command]
|
||||
|
||||
---
|
||||
|
||||
#### install
|
||||
#### installieren
|
||||
|
||||
Installieren Sie den GitHub-Agenten in Ihrem Repository.
|
||||
|
||||
@@ -177,7 +177,7 @@ Dadurch wird der erforderliche GitHub-Aktionsworkflow eingerichtet und Sie durch
|
||||
|
||||
---
|
||||
|
||||
#### run
|
||||
#### laufen
|
||||
|
||||
Führen Sie den GitHub-Agenten aus. Dies wird normalerweise in GitHub-Aktionen verwendet.
|
||||
|
||||
@@ -185,9 +185,9 @@ Führen Sie den GitHub-Agenten aus. Dies wird normalerweise in GitHub-Aktionen v
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### Flags
|
||||
##### Flaggen
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| Flagge | Beschreibung |
|
||||
| --------- | --------------------------------------------------- |
|
||||
| `--event` | GitHub Scheinereignis zum Ausführen des Agenten für |
|
||||
| `--token` | GitHub persönliches Zugriffstoken |
|
||||
@@ -196,7 +196,7 @@ opencode github run
|
||||
|
||||
### mcp
|
||||
|
||||
Verwalten Sie Model Context Protocol-Server.
|
||||
Verwalten Sie den Model Context Protocol-Server.
|
||||
|
||||
```bash
|
||||
opencode mcp [command]
|
||||
@@ -212,13 +212,13 @@ Fügen Sie Ihrer Konfiguration einen MCP-Server hinzu.
|
||||
opencode mcp add
|
||||
```
|
||||
|
||||
Dieser Befehl führt Sie durch das Hinzufügen eines lokalen oder Remote-MCP-Servers.
|
||||
Dieser Befehl führt Sie durch das Hinzufügen eines lokalen oder Remote-Servers MCP.
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
|
||||
Listen Sie alle konfigurierten MCP-Server und deren Verbindungsstatus auf.
|
||||
Hören Sie sich alle konfigurierten MCP-Server und deren Verbindungsstatus an.
|
||||
|
||||
```bash
|
||||
opencode mcp list
|
||||
@@ -240,7 +240,7 @@ Authentifizieren Sie sich mit einem OAuth-fähigen MCP-Server.
|
||||
opencode mcp auth [name]
|
||||
```
|
||||
|
||||
Wenn Sie keinen Servernamen angeben, werden Sie aufgefordert, einen der verfügbaren OAuth-fähigen Server auszuwählen.
|
||||
Wenn Sie keinen Servernamen angeben, werden Sie autorisiert, einen der verfügbaren OAuth-fähigen Server auszuwählen.
|
||||
|
||||
Sie können auch OAuth-fähige Server und deren Authentifizierungsstatus auflisten.
|
||||
|
||||
@@ -278,7 +278,7 @@ opencode mcp debug <name>
|
||||
|
||||
### models
|
||||
|
||||
Listen Sie alle verfügbaren Modelle der konfigurierten Anbieter auf.
|
||||
Hören Sie sich alle verfügbaren Modelle der konfigurierten Anbieter an.
|
||||
|
||||
```bash
|
||||
opencode models [provider]
|
||||
@@ -286,17 +286,17 @@ opencode models [provider]
|
||||
|
||||
Dieser Befehl zeigt alle bei Ihren konfigurierten Anbietern verfügbaren Modelle im Format `provider/model` an.
|
||||
|
||||
Dies ist nützlich, um die genauen Modellnamen herauszufinden, die in [Ihrer Konfiguration](/docs/config/) verwendet werden sollen.
|
||||
Dies ist nützlich, um die genauen Modellnamen herauszufinden, die in [your config](/docs/config/) verwendet werden sollen.
|
||||
|
||||
Sie können optional eine Anbieter-ID übergeben, um Modelle nach diesem Anbieter zu filtern.
|
||||
Sie können optional einen Anbieter ID übergeben, um Modelle nach diesem Anbieter zu filtern.
|
||||
|
||||
```bash
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| Flagge | Beschreibung |
|
||||
| ----------- | ------------------------------------------------------------------------------------- |
|
||||
| `--refresh` | Aktualisieren Sie den Modellcache von models.dev |
|
||||
| `--verbose` | Verwenden Sie eine ausführlichere Modellausgabe (einschließlich Metadaten wie Kosten) |
|
||||
@@ -309,7 +309,7 @@ opencode models --refresh
|
||||
|
||||
---
|
||||
|
||||
### run
|
||||
### laufen
|
||||
|
||||
Führen Sie OpenCode im nicht interaktiven Modus aus, indem Sie direkt eine Eingabeaufforderung übergeben.
|
||||
|
||||
@@ -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 den vollständigen TUI zu starten. Zum Beispiel.
|
||||
|
||||
```bash "opencode run"
|
||||
opencode run Explain the use of context in Go
|
||||
@@ -333,28 +333,28 @@ opencode serve
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ------------ | ---- | --------------------------------------------------------------------------------------------------- |
|
||||
| `--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) |
|
||||
| `--session` | `-s` | Sitzung ID zum Fortfahren |
|
||||
| `--fork` | | Verzweigen Sie die Sitzung beim Fortsetzen (mit `--continue` oder `--session`) verwenden |
|
||||
| `--share` | | Teilen Sie die Sitzung |
|
||||
| `--model` | `-m` | Zu verwendendes Modell in der Form provider/model |
|
||||
| `--agent` | | Zu verwendender Agent |
|
||||
| `--file` | `-f` | Datei(en) zum Anhängen an die Nachricht |
|
||||
| `--format` | | Format: default (formatiert) oder json (rohe JSON-Ereignisse) |
|
||||
| `--format` | | Format: Standard (formatiert) oder JSON (rohe JSON-Ereignisse) |
|
||||
| `--title` | | Titel für die Sitzung (verwendet eine verkürzte Eingabeaufforderung, wenn kein Wert angegeben wird) |
|
||||
| `--attach` | | An einen laufenden OpenCode-Server anschließen (z.B. http://localhost:4096) |
|
||||
| `--attach` | | An einen laufenden OpenCode-Server anschließen (e.g., http://localhost:4096) |
|
||||
| `--port` | | Port für den lokalen Server (standardmäßig zufälliger Port) |
|
||||
|
||||
---
|
||||
|
||||
### serve
|
||||
|
||||
Starten Sie einen Headless-OpenCode-Server für den API-Zugriff. Sehen Sie sich die [Server-Dokumentation](/docs/server) für die vollständige HTTP-Schnittstelle an.
|
||||
Starten Sie einen Headless-OpenCode-Server für den API-Zugriff. Sehen Sie sich [server docs](/docs/server) für die vollständige HTTP-Schnittstelle an.
|
||||
|
||||
```bash
|
||||
opencode serve
|
||||
@@ -362,20 +362,20 @@ 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`).
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| ------------ | ----------------------------------------------- |
|
||||
| `--port` | Port zum Abhören |
|
||||
| `--hostname` | Hostname zum Abhören |
|
||||
| `--mdns` | mDNS-Discovery aktivieren |
|
||||
| `--cors` | Zusätzliche Browser-Ursprünge für CORS zulassen |
|
||||
| Flagge | Beschreibung |
|
||||
| ------------ | -------------------------------------------------- |
|
||||
| `--port` | Port zum Abhören |
|
||||
| `--hostname` | Hostname zum Abhören |
|
||||
| `--mdns` | mDNS-Erkennung aktivieren |
|
||||
| `--cors` | Zusätzliche Browserursprung(e), um CORS zuzulassen |
|
||||
|
||||
---
|
||||
|
||||
### session
|
||||
### Sitzung
|
||||
|
||||
OpenCode-Sitzungen verwalten.
|
||||
Verwalten Sie OpenCode-Sitzungen.
|
||||
|
||||
```bash
|
||||
opencode session [command]
|
||||
@@ -385,18 +385,18 @@ opencode session [command]
|
||||
|
||||
#### list
|
||||
|
||||
Listen Sie alle OpenCode-Sitzungen auf.
|
||||
Hören Sie sich alle OpenCode-Sitzungen an.
|
||||
|
||||
```bash
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### Flags
|
||||
##### Flaggen
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| ------------- | ---- | ---------------------------------------- |
|
||||
| `--max-count` | `-n` | Beschränken auf die N neuesten Sitzungen |
|
||||
| `--format` | | Ausgabeformat: table oder json (table) |
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ------------- | ---- | ------------------------------------------ |
|
||||
| `--max-count` | `-n` | Auf N letzte Sitzungen beschränken |
|
||||
| `--format` | | Ausgabeformat: Tabelle oder JSON (Tabelle) |
|
||||
|
||||
---
|
||||
|
||||
@@ -408,9 +408,9 @@ Zeigen Sie Token-Nutzungs- und Kostenstatistiken für Ihre OpenCode-Sitzungen an
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| Flagge | Beschreibung |
|
||||
| ----------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `--days` | Statistiken für die letzten N Tage anzeigen (alle Zeiten) |
|
||||
| `--tools` | Anzahl der angebotenen Werkzeuge (alle) |
|
||||
@@ -427,19 +427,19 @@ Sitzungsdaten als JSON exportieren.
|
||||
opencode export [sessionID]
|
||||
```
|
||||
|
||||
Wenn Sie keine Sitzungs-ID angeben, werden Sie aufgefordert, eine der verfügbaren Sitzungen auszuwählen.
|
||||
Wenn Sie keine Sitzung ID angeben, werden Sie berechtigt, eine der verfügbaren Sitzungen auszuwählen.
|
||||
|
||||
---
|
||||
|
||||
### import
|
||||
|
||||
Importieren Sie Sitzungsdaten aus einer JSON-Datei oder einer OpenCode-Freigabe-URL.
|
||||
Importieren Sie Sitzungsdaten aus einer JSON-Datei oder einer OpenCode-Freigabe URL.
|
||||
|
||||
```bash
|
||||
opencode import <file>
|
||||
```
|
||||
|
||||
Sie können aus einer lokalen Datei oder einer OpenCode-Freigabe-URL importieren.
|
||||
Sie können aus einer lokalen Datei oder einer OpenCode-Freigabe URL importieren.
|
||||
|
||||
```bash
|
||||
opencode import session.json
|
||||
@@ -458,30 +458,30 @@ 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`).
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| ------------ | ----------------------------------------------- |
|
||||
| `--port` | Port zum Abhören |
|
||||
| `--hostname` | Hostname zum Abhören |
|
||||
| `--mdns` | mDNS-Discovery aktivieren |
|
||||
| `--cors` | Zusätzliche Browser-Ursprünge für CORS zulassen |
|
||||
| Flagge | Beschreibung |
|
||||
| ------------ | -------------------------------------------------- |
|
||||
| `--port` | Port zum Abhören |
|
||||
| `--hostname` | Hostname zum Abhören |
|
||||
| `--mdns` | mDNS-Erkennung aktivieren |
|
||||
| `--cors` | Zusätzliche Browserursprung(e), um CORS zuzulassen |
|
||||
|
||||
---
|
||||
|
||||
### acp
|
||||
|
||||
Starten Sie einen ACP (Agent Client Protocol) Server.
|
||||
Starten Sie einen ACP-Server (Agent Client Protocol).
|
||||
|
||||
```bash
|
||||
opencode acp
|
||||
```
|
||||
|
||||
Dieser Befehl startet einen ACP-Server, der über stdin/stdout unter Verwendung von nd-JSON kommuniziert.
|
||||
Dieser Befehl startet einen ACP-Server, der über stdin/stdout mit nd-JSON kommuniziert.
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Beschreibung |
|
||||
| Flagge | Beschreibung |
|
||||
| ------------ | -------------------- |
|
||||
| `--cwd` | Arbeitsverzeichnis |
|
||||
| `--port` | Port zum Abhören |
|
||||
@@ -497,9 +497,9 @@ Deinstallieren Sie OpenCode und entfernen Sie alle zugehörigen Dateien.
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| --------------- | ---- | --------------------------------------------------- |
|
||||
| `--keep-config` | `-c` | Konfigurationsdateien behalten |
|
||||
| `--keep-data` | `-d` | Sitzungsdaten und Snapshots aufbewahren |
|
||||
@@ -528,23 +528,23 @@ Um auf eine bestimmte Version zu aktualisieren.
|
||||
opencode upgrade v0.1.48
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Flaggen
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| ---------- | ---- | --------------------------------------------------------------- |
|
||||
| `--method` | `-m` | Die verwendete Installationsmethode; curl, npm, pnpm, bun, brew |
|
||||
|
||||
---
|
||||
|
||||
## Globale Flags
|
||||
## Globale Flaggen
|
||||
|
||||
Der OpenCode CLI akzeptiert die folgenden globalen Flags.
|
||||
|
||||
| Flag | Kurz | Beschreibung |
|
||||
| Flagge | Kurz | Beschreibung |
|
||||
| -------------- | ---- | ----------------------------------------- |
|
||||
| `--help` | `-h` | Hilfe anzeigen |
|
||||
| `--version` | `-v` | Versionsnummer drucken |
|
||||
| `--print-logs` | | Protokolle nach stderr drucken |
|
||||
| `--print-logs` | | Protokolle nach Standard drucken |
|
||||
| `--log-level` | | Protokollebene (DEBUG, INFO, WARN, ERROR) |
|
||||
|
||||
---
|
||||
@@ -553,7 +553,7 @@ Der OpenCode CLI akzeptiert die folgenden globalen Flags.
|
||||
|
||||
OpenCode kann mithilfe von Umgebungsvariablen konfiguriert werden.
|
||||
|
||||
| Variable | Typ | Beschreibung |
|
||||
| Variable | Geben Sie | eine Beschreibung |
|
||||
| ------------------------------------- | --------------- | -------------------------------------------------------------------------------- |
|
||||
| `OPENCODE_AUTO_SHARE` | boolescher Wert | Sitzungen automatisch teilen |
|
||||
| `OPENCODE_GIT_BASH_PATH` | Zeichenfolge | Pfad zur ausführbaren Git Bash-Datei unter Windows |
|
||||
@@ -568,25 +568,25 @@ OpenCode kann mithilfe von Umgebungsvariablen konfiguriert werden.
|
||||
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boolescher Wert | Automatische LSP-Server-Downloads deaktivieren |
|
||||
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolescher Wert | Experimentelle Modelle aktivieren |
|
||||
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolescher Wert | Automatische Kontextkomprimierung deaktivieren |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolescher Wert | Deaktivieren Sie das Lesen von `.claude` (Prompt + Skills) |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE` | boolescher Wert | Deaktivieren Sie das Lesen von `.claude` (Eingabeaufforderung + Fähigkeiten) |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolescher Wert | Deaktivieren Sie das Lesen von `~/.claude/CLAUDE.md` |
|
||||
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolescher Wert | Deaktivieren Sie das Laden von `.claude/skills` |
|
||||
| `OPENCODE_DISABLE_MODELS_FETCH` | boolescher Wert | Deaktivieren Sie das Abrufen von Modellen aus Remote-Quellen |
|
||||
| `OPENCODE_DISABLE_MODELS_FETCH` | boolescher Wert | Deaktivieren Sie das gesammelte Modell von Remote-Quellen |
|
||||
| `OPENCODE_FAKE_VCS` | Zeichenfolge | Gefälschter VCS-Anbieter zu Testzwecken |
|
||||
| `OPENCODE_DISABLE_FILETIME_CHECK` | boolescher Wert | Dateizeitprüfung zur Optimierung deaktivieren |
|
||||
| `OPENCODE_CLIENT` | Zeichenfolge | Client-ID (standardmäßig `cli`) |
|
||||
| `OPENCODE_ENABLE_EXA` | boolescher Wert | Exa-Websuchtools aktivieren |
|
||||
| `OPENCODE_SERVER_PASSWORD` | Zeichenfolge | Aktivieren Sie die Basisauthentifizierung für `serve`/`web` |
|
||||
| `OPENCODE_SERVER_USERNAME` | Zeichenfolge | Benutzernamen für die Basisauthentifizierung überschreiben (Standard `opencode`) |
|
||||
| `OPENCODE_MODELS_URL` | Zeichenfolge | Benutzerdefinierte URL zum Abrufen der Modellkonfiguration |
|
||||
| `OPENCODE_MODELS_URL` | Zeichenfolge | Benutzerdefinierte URL zum Erhalten der Modellkonfiguration |
|
||||
|
||||
---
|
||||
|
||||
### Experimental
|
||||
|
||||
Diese Umgebungsvariablen ermöglichen experimentelle Funktionen, die sich ändern oder entfernt werden können.
|
||||
Diese Umgebungsvariablen ermöglichen experimentelle Funktionen, die sich ändern oder entfernen können.
|
||||
|
||||
| Variable | Typ | Beschreibung |
|
||||
| Variable | Geben Sie | eine Beschreibung |
|
||||
| ----------------------------------------------- | --------------- | ------------------------------------------------------- |
|
||||
| `OPENCODE_EXPERIMENTAL` | boolescher Wert | Alle experimentellen Funktionen aktivieren |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolescher Wert | Symbolerkennung aktivieren |
|
||||
|
||||
@@ -67,7 +67,7 @@ Sie können Formatierer über den Abschnitt `formatter` in Ihrer OpenCode-Konfig
|
||||
|
||||
Jede Formatierungskonfiguration unterstützt Folgendes:
|
||||
|
||||
| Eigenschaft | Typ | Beschreibung |
|
||||
| Eigentum | Typ | Beschreibung |
|
||||
| ------------- | --------------- | -------------------------------------------------------------------------------- |
|
||||
| `disabled` | boolescher Wert | Setzen Sie dies auf `true`, um den Formatierer zu deaktivieren |
|
||||
| `command` | string[] | Der zum Formatieren auszuführende Befehl |
|
||||
|
||||
@@ -9,9 +9,9 @@ OpenCode lässt sich in Ihren GitHub-Workflow integrieren. Erwähnen Sie `/openc
|
||||
|
||||
## Features
|
||||
|
||||
- **Issue Triage**: Bitten Sie OpenCode, ein Problem zu untersuchen und es Ihnen zu erklären.
|
||||
- **Reparieren und implementieren**: Bitten Sie OpenCode, ein Problem zu beheben oder eine Funktion zu implementieren. Und es funktioniert in einem neuen Branch und sendet ein PR mit allen Änderungen.
|
||||
- **Sicher**: OpenCode läuft in den Runners Ihres GitHub.
|
||||
- **Triage-Probleme**: Bitten Sie OpenCode, ein Problem zu untersuchen und es Ihnen zu erklären.
|
||||
- **Reparieren und implementieren**: Bitten Sie OpenCode, ein Problem zu beheben oder eine Funktion zu implementieren. Und es funktioniert in einem neuen Zweig und sendet ein PR mit allen Änderungen.
|
||||
- **Sicher**: OpenCode läuft in den Runnern Ihres GitHub.
|
||||
|
||||
---
|
||||
|
||||
@@ -23,7 +23,7 @@ Führen Sie den folgenden Befehl in einem Projekt aus, das sich in einem GitHub-
|
||||
opencode github install
|
||||
```
|
||||
|
||||
Dies führt Sie durch die Installation der GitHub-App, das Erstellen des Workflows und das Einrichten von Secrets.
|
||||
Dies führt Sie durch die Installation der GitHub-App, das Erstellen des Workflows und das Einrichten von Geheimnissen.
|
||||
|
||||
---
|
||||
|
||||
@@ -73,9 +73,9 @@ Oder Sie können es manuell einrichten.
|
||||
# github_token: xxxx
|
||||
```
|
||||
|
||||
3. **Speichern Sie die API-Schlüssel in Secrets**
|
||||
3. **Speichern Sie die API-Schlüssel in Geheimnissen**
|
||||
|
||||
Erweitern Sie in den **Einstellungen** Ihrer Organisation oder Ihres Projekts links **Secrets und Variablen** und wählen Sie **Aktionen** aus. Und fügen Sie die erforderlichen API-Schlüssel hinzu.
|
||||
Erweitern Sie in den **Einstellungen** Ihrer Organisation oder Ihres Projekts links **Geheimnisse und Variablen** und wählen Sie **Aktionen** aus. Und fügen Sie die erforderlichen API-Schlüssel hinzu.
|
||||
|
||||
---
|
||||
|
||||
@@ -85,7 +85,7 @@ Oder Sie können es manuell einrichten.
|
||||
- `agent`: Der zu verwendende Agent. Muss ein Hauptagent sein. Fällt aus der Konfiguration auf `default_agent` oder `"build"` zurück, wenn es nicht gefunden wird.
|
||||
- `share`: Ob die OpenCode-Sitzung geteilt werden soll. Der Standardwert ist **true** für öffentliche Repositorys.
|
||||
- `prompt`: Optionale benutzerdefinierte Eingabeaufforderung zum Überschreiben des Standardverhaltens. Verwenden Sie dies, um anzupassen, wie OpenCode Anfragen verarbeitet.
|
||||
- `token`: Optionales GitHub-Zugriffstoken zum Ausführen von Vorgängen wie dem Erstellen von Kommentaren, dem Festschreiben von Änderungen und dem Öffnen von Pull Requests. Standardmäßig verwendet OpenCode das Installation Access Token der OpenCode GitHub-App, sodass Commits, Kommentare und Pull Requests so aussehen, als würden sie von der App kommen.
|
||||
- `token`: Optionales GitHub-Zugriffstoken zum Ausführen von Vorgängen wie dem Erstellen von Kommentaren, dem Festschreiben von Änderungen und dem Öffnen von Pull-Anfragen. Standardmäßig verwendet OpenCode das Installationszugriffstoken der OpenCode GitHub-App, sodass Commits, Kommentare und Pull-Anfragen so aussehen, als würden sie von der App kommen.
|
||||
|
||||
Alternativ können Sie [built-in `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) des GitHub Action Runners verwenden, ohne die OpenCode GitHub App zu installieren. Stellen Sie einfach sicher, dass Sie in Ihrem Workflow die erforderlichen Berechtigungen erteilen:
|
||||
|
||||
@@ -101,18 +101,18 @@ Oder Sie können es manuell einrichten.
|
||||
|
||||
---
|
||||
|
||||
## Unterstützte Events
|
||||
## Unterstützte Veranstaltungen
|
||||
|
||||
OpenCode kann durch die folgenden GitHub-Events ausgelöst werden:
|
||||
OpenCode kann durch die folgenden GitHub-Ereignisse ausgelöst werden:
|
||||
|
||||
| Ereignistyp | Ausgelöst durch | Einzelheiten |
|
||||
| ----------------------------- | ------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
|
||||
| `issue_comment` | Kommentieren Sie ein Problem oder PR | Erwähnen Sie `/opencode` oder `/oc` in Ihrem Kommentar. OpenCode liest den Kontext und kann Branches erstellen, PRs öffnen oder antworten. |
|
||||
| `pull_request_review_comment` | Kommentieren Sie bestimmte Codezeilen in einem PR | Erwähnen Sie `/opencode` oder `/oc` beim Überprüfen des Codes. OpenCode empfängt Dateipfad, Zeilennummern und Diff Context. |
|
||||
| `issue_comment` | Kommentieren Sie ein Problem oder PR | Erwähnen Sie `/opencode` oder `/oc` in Ihrem Kommentar. OpenCode liest den Kontext und kann Verzweigungen erstellen, PRs öffnen oder antworten. |
|
||||
| `pull_request_review_comment` | Kommentieren Sie bestimmte Codezeilen in einem PR | Erwähnen Sie `/opencode` oder `/oc` beim Überprüfen des Codes. OpenCode empfängt Dateipfad, Zeilennummern und Diff-Kontext. |
|
||||
| `issues` | Problem geöffnet oder bearbeitet | Lösen Sie OpenCode automatisch aus, wenn Probleme erstellt oder geändert werden. Erfordert `prompt`-Eingabe. |
|
||||
| `pull_request` | PR geöffnet oder aktualisiert | Lösen Sie OpenCode automatisch aus, wenn PRs geöffnet, synchronisiert oder erneut geöffnet werden. Nützlich für automatisierte Bewertungen. |
|
||||
| `schedule` | Cron-basierter Zeitplan | Führen Sie OpenCode nach einem Zeitplan aus. Erfordert `prompt`-Eingabe. Die Ausgabe geht an Protokolle und PRs (kein Kommentar zu diesem Problem). |
|
||||
| `workflow_dispatch` | Manueller Trigger von GitHub UI | Lösen Sie OpenCode bei Bedarf über die Actions Tab aus. Erfordert `prompt`-Eingabe. Die Ausgabe erfolgt an Protokolle und PRs. |
|
||||
| `workflow_dispatch` | Manueller Trigger von GitHub UI | Lösen Sie OpenCode bei Bedarf über die Registerkarte „Aktionen“ aus. Erfordert `prompt`-Eingabe. Die Ausgabe erfolgt an Protokolle und PRs. |
|
||||
|
||||
### Beispiel für einen Zeitplan
|
||||
|
||||
@@ -150,7 +150,7 @@ jobs:
|
||||
If you find issues worth addressing, open an issue to track them.
|
||||
```
|
||||
|
||||
Für geplante Ereignisse ist die Eingabe `prompt` **erforderlich**, da es keinen Kommentar gibt, aus dem Anweisungen extrahiert werden können. Geplante Workflows werden ohne Benutzerkontext zur Berechtigungsprüfung ausgeführt. Daher muss der Workflow `contents: write` und `pull-requests: write` gewähren, wenn Sie erwarten, dass OpenCode Branches oder PRs erstellt.
|
||||
Für geplante Ereignisse ist die Eingabe `prompt` **erforderlich**, da es keinen Kommentar gibt, aus dem Anweisungen extrahiert werden können. Geplante Workflows werden ohne Benutzerkontext zur Berechtigungsprüfung ausgeführt. Daher muss der Workflow `contents: write` und `pull-requests: write` gewähren, wenn Sie erwarten, dass OpenCode Zweige oder PRs erstellt.
|
||||
|
||||
---
|
||||
|
||||
@@ -195,7 +195,7 @@ Wenn für `pull_request`-Ereignisse kein `prompt` bereitgestellt wird, überprü
|
||||
|
||||
---
|
||||
|
||||
### Beispiel für eine Issue Triage
|
||||
### Beispiel für eine Triage von Problemen
|
||||
|
||||
Neue Probleme automatisch selektieren. In diesem Beispiel wird nach Konten gefiltert, die älter als 30 Tage sind, um Spam zu reduzieren:
|
||||
|
||||
@@ -291,7 +291,7 @@ Hier sind einige Beispiele, wie Sie OpenCode in GitHub verwenden können.
|
||||
/opencode fix this
|
||||
```
|
||||
|
||||
Und OpenCode erstellt einen neuen Branch, implementiert die Änderungen und öffnet ein PR mit den Änderungen.
|
||||
Und OpenCode erstellt einen neuen Zweig, implementiert die Änderungen und öffnet ein PR mit den Änderungen.
|
||||
|
||||
- **PRs überprüfen und Änderungen vornehmen**
|
||||
|
||||
@@ -305,7 +305,7 @@ Hier sind einige Beispiele, wie Sie OpenCode in GitHub verwenden können.
|
||||
|
||||
- **Überprüfen Sie bestimmte Codezeilen**
|
||||
|
||||
Hinterlassen Sie einen Kommentar direkt zu den Codezeilen auf der Files Tab von PR. OpenCode erkennt automatisch die Datei, Zeilennummern und den Diff Context, um präzise Antworten bereitzustellen.
|
||||
Hinterlassen Sie einen Kommentar direkt zu den Codezeilen auf der Registerkarte „Dateien“ von PR. OpenCode erkennt automatisch die Datei, Zeilennummern und den Diff-Kontext, um präzise Antworten bereitzustellen.
|
||||
|
||||
```
|
||||
[Comment on specific lines in Files tab]
|
||||
@@ -315,7 +315,7 @@ Hier sind einige Beispiele, wie Sie OpenCode in GitHub verwenden können.
|
||||
Beim Kommentieren bestimmter Zeilen erhält OpenCode:
|
||||
- Die genaue Datei, die überprüft wird
|
||||
- Die spezifischen Codezeilen
|
||||
- Der umgebende Diff Context
|
||||
- Der umgebende Diff-Kontext
|
||||
- Informationen zur Zeilennummer
|
||||
|
||||
Dies ermöglicht gezieltere Anfragen, ohne dass Dateipfade oder Zeilennummern manuell angegeben werden müssen.
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
---
|
||||
title: GitLab
|
||||
description: Verwenden Sie OpenCode in GitLab-Issues und Merge Requests.
|
||||
description: Verwenden Sie OpenCode in GitLab-Problemen und Zusammenführungsanfragen.
|
||||
---
|
||||
|
||||
OpenCode lässt sich über Ihre GitLab CI/CD-Pipeline oder mit GitLab Duo in Ihren GitLab-Workflow integrieren.
|
||||
|
||||
In beiden Fällen läuft OpenCode auf Ihren GitLab Runners.
|
||||
In beiden Fällen läuft OpenCode auf Ihren GitLab-Läufern.
|
||||
|
||||
---
|
||||
|
||||
@@ -53,10 +53,10 @@ Erwähnen Sie `@opencode` in einem Kommentar und OpenCode führt Aufgaben innerh
|
||||
|
||||
### Features
|
||||
|
||||
- **Issue Triage**: Bitten Sie OpenCode, ein Problem zu untersuchen und es Ihnen zu erklären.
|
||||
- **Triage-Probleme**: Bitten Sie OpenCode, ein Problem zu untersuchen und es Ihnen zu erklären.
|
||||
- **Reparieren und implementieren**: Bitten Sie OpenCode, ein Problem zu beheben oder eine Funktion zu implementieren.
|
||||
Es wird ein neuer Branch erstellt und eine Merge Request mit den Änderungen ausgelöst.
|
||||
- **Sicher**: OpenCode läuft auf Ihren GitLab Runners.
|
||||
Es wird ein neuer Zweig erstellt und eine Zusammenführungsanforderung mit den Änderungen ausgelöst.
|
||||
- **Sicher**: OpenCode läuft auf Ihren GitLab-Läufern.
|
||||
|
||||
---
|
||||
|
||||
@@ -182,14 +182,14 @@ Sie können die Verwendung einer anderen Triggerphrase als `@opencode` konfiguri
|
||||
@opencode fix this
|
||||
```
|
||||
|
||||
OpenCode erstellt einen neuen Branch, implementiert die Änderungen und öffnet eine Merge Request mit den Änderungen.
|
||||
OpenCode erstellt einen neuen Zweig, implementiert die Änderungen und öffnet eine Zusammenführungsanforderung mit den Änderungen.
|
||||
|
||||
- **Merge Requests prüfen**
|
||||
- **Zusammenführungsanfragen prüfen**
|
||||
|
||||
Hinterlassen Sie den folgenden Kommentar zu einer GitLab Merge Request.
|
||||
Hinterlassen Sie den folgenden Kommentar zu einer GitLab-Merge-Anfrage.
|
||||
|
||||
```
|
||||
@opencode review this merge request
|
||||
```
|
||||
|
||||
OpenCode prüft die Merge Request und gibt Feedback.
|
||||
OpenCode prüft die Zusammenführungsanfrage und gibt Feedback.
|
||||
|
||||
@@ -3,7 +3,7 @@ title: IDE
|
||||
description: Die OpenCode-Erweiterung für VS Code, Cursor und andere IDEs
|
||||
---
|
||||
|
||||
OpenCode lässt sich in VS Code, Cursor oder jede IDE integrieren, die ein Terminal unterstützt. Führen Sie einfach `opencode` im Terminal aus, um zu beginnen.
|
||||
OpenCode lässt sich in VS Code, Cursor oder jeden IDE integrieren, der ein Terminal unterstützt. Führen Sie einfach `opencode` im Terminal aus, um zu beginnen.
|
||||
|
||||
---
|
||||
|
||||
@@ -18,13 +18,13 @@ OpenCode lässt sich in VS Code, Cursor oder jede IDE integrieren, die ein Termi
|
||||
|
||||
## Installation
|
||||
|
||||
So installieren Sie OpenCode in VS Code und beliebten Forks wie Cursor, Windsurf, VSCodium:
|
||||
So installieren Sie OpenCode auf VS Code und beliebten Forks wie Cursor, Windsurf, VSCodium:
|
||||
|
||||
1. Öffnen Sie VS Code
|
||||
1. Öffnen Sie den VS-Code
|
||||
2. Öffnen Sie das integrierte Terminal
|
||||
3. Führen Sie `opencode` aus – die Erweiterung wird automatisch installiert
|
||||
|
||||
Wenn Sie andererseits Ihre eigene IDE verwenden möchten, wenn Sie `/editor` oder `/export` von TUI ausführen, müssen Sie `export EDITOR="code --wait"` festlegen. [Learn more](/docs/tui/#editor-setup).
|
||||
Wenn Sie andererseits Ihr eigenes IDE verwenden möchten, wenn Sie `/editor` oder `/export` von TUI ausführen, müssen Sie `export EDITOR="code --wait"` festlegen. [Learn more](/docs/tui/#editor-setup).
|
||||
|
||||
---
|
||||
|
||||
@@ -39,10 +39,10 @@ Suchen Sie im Extension Marketplace nach **OpenCode** und klicken Sie auf **Inst
|
||||
Wenn die Erweiterung nicht automatisch installiert werden kann:
|
||||
|
||||
- Stellen Sie sicher, dass Sie `opencode` im integrierten Terminal ausführen.
|
||||
- Bestätigen Sie, dass CLI für Ihre IDE installiert ist:
|
||||
- Bestätigen Sie, dass CLI für Ihr IDE installiert ist:
|
||||
- Für VS Code: `code` Befehl
|
||||
- Für Cursor: Befehl `cursor`
|
||||
- Für Windsurf: Befehl `windsurf`
|
||||
- Für Windsurfen: Befehl `windsurf`
|
||||
- Für VSCodium: Befehl `codium`
|
||||
- Wenn nicht, führen Sie `Cmd+Shift+P` (Mac) oder `Ctrl+Shift+P` (Windows/Linux) aus und suchen Sie nach „Shell Command: Install 'code' command in PATH“ (oder dem Äquivalent für Ihre IDE).
|
||||
- Stellen Sie sicher, dass VS Code über die Berechtigung zum Installieren von Erweiterungen verfügt
|
||||
- Wenn nicht, führen Sie `Cmd+Shift+P` (Mac) oder `Ctrl+Shift+P` (Windows/Linux) aus und suchen Sie nach „Shell Command: Install 'code' command in PATH“ (oder dem Äquivalent für Ihr IDE).
|
||||
- Stellen Sie sicher, dass der VS-Code über die Berechtigung zum Installieren von Erweiterungen verfügt
|
||||
|
||||
@@ -79,7 +79,7 @@ Sie können es auch mit den folgenden Befehlen installieren:
|
||||
brew install anomalyco/tap/opencode
|
||||
```
|
||||
|
||||
> Wir empfehlen die Verwendung des OpenCode-Taps für die aktuellsten Versionen. Die offizielle `brew install opencode`-Formel wird vom Homebrew-Team gepflegt und seltener aktualisiert.
|
||||
> Wir empfehlen die Verwendung des OpenCode-Tapes für die aktuellsten Versionen. Die offizielle `brew install opencode`-Formel wird vom Homebrew-Team gepflegt und seltener aktualisiert.
|
||||
|
||||
- **Verwendung von Paru unter Arch Linux**
|
||||
|
||||
@@ -93,7 +93,7 @@ Sie können es auch mit den folgenden Befehlen installieren:
|
||||
Für das beste Erlebnis unter Windows empfehlen wir die Verwendung von [Windows Subsystem for Linux (WSL)](/docs/windows-wsl). Es bietet eine bessere Leistung und vollständige Kompatibilität mit den Funktionen von OpenCode.
|
||||
:::
|
||||
|
||||
- **Verwendung von Chocolatey**
|
||||
- **Verwendung von Schokolade**
|
||||
|
||||
```bash
|
||||
choco install opencode
|
||||
@@ -134,7 +134,8 @@ Sie können die Binärdatei auch aus [Releases](https://github.com/anomalyco/ope
|
||||
Mit OpenCode können Sie jeden LLM-Anbieter verwenden, indem Sie dessen API-Schlüssel konfigurieren.
|
||||
|
||||
Wenn Sie mit der Verwendung von LLM-Anbietern noch nicht vertraut sind, empfehlen wir die Verwendung von [OpenCode Zen](/docs/zen).
|
||||
Es handelt sich um eine kuratierte Liste von Modellen, die vom OpenCode Team getestet und verifiziert wurden.
|
||||
Es handelt sich um eine kuratierte Liste von Modellen, die von OpenCode getestet und verifiziert wurden
|
||||
team.
|
||||
|
||||
1. Führen Sie den Befehl `/connect` in TUI aus, wählen Sie OpenCode aus und gehen Sie zu [opencode.ai/auth](https://opencode.ai/auth).
|
||||
|
||||
@@ -178,7 +179,8 @@ Als nächstes initialisieren Sie OpenCode für das Projekt, indem Sie den folgen
|
||||
/init
|
||||
```
|
||||
|
||||
Dadurch wird OpenCode dazu veranlasst, Ihr Projekt zu analysieren und eine `AGENTS.md`-Datei im Projektstammverzeichnis zu erstellen.
|
||||
Dadurch wird OpenCode dazu veranlasst, Ihr Projekt zu analysieren und eine `AGENTS.md`-Datei zu erstellen
|
||||
das Projektstammverzeichnis.
|
||||
|
||||
:::tip
|
||||
Sie sollten die `AGENTS.md`-Datei Ihres Projekts an Git übergeben.
|
||||
@@ -221,7 +223,7 @@ Sie können OpenCode bitten, Ihrem Projekt neue Funktionen hinzuzufügen. Wir em
|
||||
|
||||
1. **Erstellen Sie einen Plan**
|
||||
|
||||
OpenCode verfügt über einen _Plan Mode_, der seine Fähigkeit, Änderungen vorzunehmen, deaktiviert
|
||||
OpenCode verfügt über einen _Planmodus_, der seine Fähigkeit, Änderungen vorzunehmen, deaktiviert
|
||||
Schlagen Sie stattdessen vor, wie die Funktion implementiert wird.
|
||||
|
||||
Wechseln Sie mit der **Tabulatortaste** dorthin. In der unteren rechten Ecke sehen Sie einen Indikator dafür.
|
||||
@@ -264,7 +266,7 @@ Sie können OpenCode bitten, Ihrem Projekt neue Funktionen hinzuzufügen. Wir em
|
||||
|
||||
3. **Funktion erstellen**
|
||||
|
||||
Wenn Sie mit dem Plan zufrieden sind, wechseln Sie zurück in den _Build Mode_
|
||||
Wenn Sie mit dem Plan zufrieden sind, wechseln Sie zurück in den _Build-Modus_
|
||||
indem Sie erneut die **Tabulatortaste** drücken.
|
||||
|
||||
```bash frame="none"
|
||||
|
||||
@@ -105,19 +105,19 @@ OpenCode verfügt über eine Liste von Tastenkombinationen, die Sie über die Op
|
||||
|
||||
---
|
||||
|
||||
## Leader Key
|
||||
## Führungsschlüssel
|
||||
|
||||
OpenCode verwendet für die meisten Keybinds einen `leader`-Schlüssel. Dies vermeidet Konflikte in Ihrem Terminal.
|
||||
OpenCode verwendet für die meisten Tastenkombinationen einen `leader`-Schlüssel. Dies vermeidet Konflikte in Ihrem Terminal.
|
||||
|
||||
Standardmäßig ist `ctrl+x` der Leader Key und bei den meisten Aktionen müssen Sie zuerst den Leader Key und dann die Tastenkombination drücken. Um beispielsweise eine neue Sitzung zu starten, drücken Sie zuerst `ctrl+x` und dann `n`.
|
||||
Standardmäßig ist `ctrl+x` die Führungstaste und bei den meisten Aktionen müssen Sie zuerst die Führungstaste und dann die Tastenkombination drücken. Um beispielsweise eine neue Sitzung zu starten, drücken Sie zuerst `ctrl+x` und dann `n`.
|
||||
|
||||
Sie müssen für Ihre Keybinds keinen Leader Key verwenden, wir empfehlen jedoch, dies zu tun.
|
||||
Sie müssen für Ihre Tastenkombinationen keine Führungstaste verwenden, wir empfehlen jedoch, dies zu tun.
|
||||
|
||||
---
|
||||
|
||||
## Keybind deaktivieren
|
||||
## Tastenkombination deaktivieren
|
||||
|
||||
Sie können eine Keybind deaktivieren, indem Sie den Schlüssel mit dem Wert „none“ zu Ihrer Konfiguration hinzufügen.
|
||||
Sie können eine Tastenkombination deaktivieren, indem Sie den Schlüssel mit dem Wert „none“ zu Ihrer Konfiguration hinzufügen.
|
||||
|
||||
```json title="opencode.json"
|
||||
{
|
||||
@@ -134,21 +134,21 @@ Sie können eine Keybind deaktivieren, indem Sie den Schlüssel mit dem Wert „
|
||||
|
||||
Die Eingabeaufforderungseingabe der OpenCode-Desktop-App unterstützt gängige Readline/Emacs-style-Verknüpfungen zum Bearbeiten von Text. Diese sind integriert und derzeit nicht über `opencode.json` konfigurierbar.
|
||||
|
||||
| Keybind | Aktion |
|
||||
| -------- | ----------------------------------------------------- |
|
||||
| `ctrl+a` | Zum Anfang der aktuellen Zeile gehen |
|
||||
| `ctrl+e` | Zum Ende der aktuellen Zeile gehen |
|
||||
| `ctrl+b` | Cursor um ein Zeichen zurückbewegen |
|
||||
| `ctrl+f` | Cursor um ein Zeichen vorwärts bewegen |
|
||||
| `alt+b` | Cursor um ein Wort zurückbewegen |
|
||||
| `alt+f` | Bewegen Sie den Cursor ein Wort vorwärts |
|
||||
| `ctrl+d` | Zeichen unter dem Cursor löschen |
|
||||
| `ctrl+k` | Bis zum Zeilenende löschen (Kill) |
|
||||
| `ctrl+u` | Bis zum Zeilenanfang löschen (Kill) |
|
||||
| `ctrl+w` | Vorheriges Wort löschen (Kill) |
|
||||
| `alt+d` | Nächstes Wort löschen (Kill) |
|
||||
| `ctrl+t` | Zeichen transponieren |
|
||||
| `ctrl+g` | Popovers abbrechen / Ausführung der Antwort abbrechen |
|
||||
| Verknüpfung | Aktion |
|
||||
| ----------- | ----------------------------------------------------- |
|
||||
| `ctrl+a` | Zum Anfang der aktuellen Zeile gehen |
|
||||
| `ctrl+e` | Zum Ende der aktuellen Zeile gehen |
|
||||
| `ctrl+b` | Cursor um ein Zeichen zurückbewegen |
|
||||
| `ctrl+f` | Cursor um ein Zeichen vorwärts bewegen |
|
||||
| `alt+b` | Cursor um ein Wort zurückbewegen |
|
||||
| `alt+f` | Bewegen Sie den Cursor ein Wort vorwärts |
|
||||
| `ctrl+d` | Zeichen unter dem Cursor löschen |
|
||||
| `ctrl+k` | Bis zum Zeilenende töten |
|
||||
| `ctrl+u` | Bis zum Zeilenanfang töten |
|
||||
| `ctrl+w` | Vorheriges Wort töten |
|
||||
| `alt+d` | Nächstes Wort töten |
|
||||
| `ctrl+t` | Zeichen transponieren |
|
||||
| `ctrl+g` | Popovers abbrechen / Ausführung der Antwort abbrechen |
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -182,7 +182,7 @@ Sie können einen benutzerdefinierten LSP-Server hinzufügen, indem Sie den Befe
|
||||
|
||||
PHP Intelepense bietet Premium-Funktionen über einen Lizenzschlüssel. Sie können einen Lizenzschlüssel bereitstellen, indem Sie (nur) den Schlüssel in eine Textdatei einfügen unter:
|
||||
|
||||
- Auf macOS/Linux: `$HOME/intelephense/license.txt`
|
||||
- Unter Windows: `%USERPROFILE%/intelephense/license.txt`
|
||||
- Auf macOS/Linux: `$HOME/intelephense/licence.txt`
|
||||
- Unter Windows: `%USERPROFILE%/intelephense/licence.txt`
|
||||
|
||||
Die Datei sollte nur den Lizenzschlüssel ohne zusätzlichen Inhalt enthalten.
|
||||
|
||||
@@ -46,22 +46,22 @@ Eliminamos algunas funciones que no estábamos seguros de que alguien realmente
|
||||
|
||||
### Combinaciones de teclas renombradas
|
||||
|
||||
- messages_revert -> messages_undo
|
||||
- switch_agent -> agent_cycle
|
||||
- switch_agent_reverse -> agent_cycle_reverse
|
||||
- switch_mode -> agent_cycle
|
||||
- switch_mode_reverse -> agent_cycle_reverse
|
||||
- mensajes_revertir -> mensajes_undo
|
||||
- switch_agent -> agente_ciclo
|
||||
- switch_agent_reverse -> agente_cycle_reverse
|
||||
- switch_mode -> agente_ciclo
|
||||
- switch_mode_reverse -> agente_cycle_reverse
|
||||
|
||||
### Combinaciones de teclas eliminadas
|
||||
|
||||
- messages_layout_toggle
|
||||
- messages_next
|
||||
- messages_previous
|
||||
- mensajes_layout_toggle
|
||||
- mensajes_siguiente
|
||||
- mensajes_anteriores
|
||||
- file_diff_toggle
|
||||
- file_search
|
||||
- file_close
|
||||
- file_list
|
||||
- app_help
|
||||
- project_init
|
||||
- tool_details
|
||||
- thinking_blocks
|
||||
- búsqueda_archivo
|
||||
- archivo_cerrar
|
||||
- lista_archivo
|
||||
- aplicación_ayuda
|
||||
- proyecto_init
|
||||
- detalles_herramienta
|
||||
- bloques_pensamiento
|
||||
|
||||
@@ -1,9 +1,9 @@
|
||||
---
|
||||
title: Soporte ACP
|
||||
title: ACP Soporte
|
||||
description: Utilice OpenCode en cualquier editor compatible con ACP.
|
||||
---
|
||||
|
||||
OpenCode admite el [Agent Client Protocol](https://agentclientprotocol.com) o (ACP), lo que le permite usarlo directamente en editores e IDE compatibles.
|
||||
OpenCode admite el [Protocolo de cliente de agente](https://agentclientprotocol.com) o (ACP), lo que le permite usarlo directamente en editores e IDE compatibles.
|
||||
|
||||
:::tip
|
||||
Para obtener una lista de editores y herramientas compatibles con ACP, consulte el [informe de progreso de ACP](https://zed.dev/blog/acp-progress-report#available-now).
|
||||
@@ -67,7 +67,7 @@ También puedes vincular un atajo de teclado editando tu `keymap.json`:
|
||||
|
||||
---
|
||||
|
||||
### JetBrains IDEs
|
||||
### IDE de JetBrains
|
||||
|
||||
Agregue a su [JetBrains IDE](https://www.jetbrains.com/) acp.json de acuerdo con la [documentación](https://www.jetbrains.com/help/ai-assistant/acp.html):
|
||||
|
||||
@@ -119,7 +119,7 @@ Si necesita pasar variables de entorno:
|
||||
|
||||
---
|
||||
|
||||
### CodeCompanion.nvim
|
||||
### CódigoCompanion.nvim
|
||||
|
||||
Para usar OpenCode como agente ACP en [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim), agregue lo siguiente a su configuración de Neovim:
|
||||
|
||||
|
||||
@@ -27,7 +27,7 @@ Los agentes primarios son los asistentes principales con los que interactúas di
|
||||
Puede utilizar la tecla **Tab** para cambiar entre agentes principales durante una sesión.
|
||||
:::
|
||||
|
||||
OpenCode viene con dos agentes principales integrados, **Build** y **Plan**. Bien
|
||||
OpenCode viene con dos agentes principales integrados, **Construir** y **Planificar**. Bien
|
||||
mira estos a continuación.
|
||||
|
||||
---
|
||||
@@ -36,17 +36,17 @@ mira estos a continuación.
|
||||
|
||||
Los subagentes son asistentes especializados que los agentes principales pueden invocar para tareas específicas. También puedes invocarlos manualmente **@ mencionándolos** en tus mensajes.
|
||||
|
||||
OpenCode viene con dos subagentes integrados, **General** y **Explore**. Veremos esto a continuación.
|
||||
OpenCode viene con dos subagentes integrados, **General** y **Explorar**. Veremos esto a continuación.
|
||||
|
||||
---
|
||||
|
||||
## Built-in
|
||||
## Incorporado
|
||||
|
||||
OpenCode viene con dos agentes primarios integrados y dos subagentes integrados.
|
||||
|
||||
---
|
||||
|
||||
### Use build
|
||||
### Usar compilación
|
||||
|
||||
_Modo_: `primary`
|
||||
|
||||
@@ -54,7 +54,7 @@ Build es el agente principal **predeterminado** con todas las herramientas habil
|
||||
|
||||
---
|
||||
|
||||
### Use plan
|
||||
### Plan de uso
|
||||
|
||||
_Modo_: `primary`
|
||||
|
||||
@@ -68,7 +68,7 @@ Este agente es útil cuando desea que LLM analice código, sugiera cambios o cre
|
||||
|
||||
---
|
||||
|
||||
### Use general
|
||||
### Uso general
|
||||
|
||||
_Modo_: `subagent`
|
||||
|
||||
@@ -76,7 +76,7 @@ Un agente de uso general para investigar preguntas complejas y ejecutar tareas d
|
||||
|
||||
---
|
||||
|
||||
### Use explore
|
||||
### Usar explorar
|
||||
|
||||
_Modo_: `subagent`
|
||||
|
||||
@@ -84,7 +84,7 @@ Un agente rápido y de solo lectura para explorar bases de código. No se pueden
|
||||
|
||||
---
|
||||
|
||||
### Use compaction
|
||||
### Utilice compactación
|
||||
|
||||
_Modo_: `primary`
|
||||
|
||||
@@ -92,7 +92,7 @@ Agente de sistema oculto que compacta un contexto largo en un resumen más peque
|
||||
|
||||
---
|
||||
|
||||
### Use title
|
||||
### Usar título
|
||||
|
||||
_Modo_: `primary`
|
||||
|
||||
@@ -100,7 +100,7 @@ Agente del sistema oculto que genera títulos de sesión cortos. Se ejecuta auto
|
||||
|
||||
---
|
||||
|
||||
### Use summary
|
||||
### Usar resumen
|
||||
|
||||
_Modo_: `primary`
|
||||
|
||||
@@ -121,8 +121,8 @@ Agente del sistema oculto que crea resúmenes de sesiones. Se ejecuta automátic
|
||||
```
|
||||
|
||||
3. **Navegación entre sesiones**: cuando los subagentes crean sus propias sesiones secundarias, puede navegar entre la sesión principal y todas las sesiones secundarias usando:
|
||||
- **\<Leader>+Right** (or su combinación de teclas `session_child_cycle` configurada) para avanzar a través de padre → hijo1 → hijo2 → ... → padre
|
||||
- **\<Leader>+Left** (or su combinación de teclas `session_child_cycle_reverse` configurada) para retroceder entre padre ← hijo1 ← hijo2 ← ... ← padre
|
||||
- **\<Líder>+Derecha** (o su combinación de teclas `session_child_cycle` configurada) para avanzar a través de padre → hijo1 → hijo2 → ... → padre
|
||||
- **\<Líder>+Izquierda** (o su combinación de teclas `session_child_cycle_reverse` configurada) para retroceder entre padre ← hijo1 ← hijo2 ← ... ← padre
|
||||
|
||||
Esto le permite cambiar sin problemas entre la conversación principal y el trabajo de subagente especializado.
|
||||
|
||||
@@ -216,7 +216,7 @@ Veamos estas opciones de configuración en detalle.
|
||||
|
||||
---
|
||||
|
||||
### Description
|
||||
### Descripción
|
||||
|
||||
Utilice la opción `description` para proporcionar una breve descripción de lo que hace el agente y cuándo usarlo.
|
||||
|
||||
@@ -234,7 +234,7 @@ Esta es una opción de configuración **obligatoria**.
|
||||
|
||||
---
|
||||
|
||||
### Temperature
|
||||
### Temperatura
|
||||
|
||||
Controle la aleatoriedad y la creatividad de las respuestas de LLM con la configuración `temperature`.
|
||||
|
||||
@@ -281,7 +281,7 @@ Si no se especifica ninguna temperatura, OpenCode utiliza valores predeterminado
|
||||
|
||||
---
|
||||
|
||||
### Max steps
|
||||
### Pasos máximos
|
||||
|
||||
Controle la cantidad máxima de iteraciones agentes que un agente puede realizar antes de verse obligado a responder solo con texto. Esto permite a los usuarios que desean controlar los costos establecer un límite a las acciones de agencia.
|
||||
|
||||
@@ -307,7 +307,7 @@ El campo heredado `maxSteps` está en desuso. Utilice `steps` en su lugar.
|
||||
|
||||
---
|
||||
|
||||
### Disable
|
||||
### Desactivar
|
||||
|
||||
Establezca en `true` para deshabilitar el agente.
|
||||
|
||||
@@ -323,7 +323,7 @@ Establezca en `true` para deshabilitar el agente.
|
||||
|
||||
---
|
||||
|
||||
### Prompt
|
||||
### Inmediato
|
||||
|
||||
Especifique un archivo de aviso del sistema personalizado para este agente con la configuración `prompt`. El archivo de aviso debe contener instrucciones específicas para el propósito del agente.
|
||||
|
||||
@@ -341,7 +341,7 @@ Esta ruta es relativa a donde se encuentra el archivo de configuración. Entonce
|
||||
|
||||
---
|
||||
|
||||
### Model
|
||||
### Modelo
|
||||
|
||||
Utilice la configuración `model` para anular el modelo de este agente. Útil para utilizar diferentes modelos optimizados para diferentes tareas. Por ejemplo, un modelo más rápido de planificación, un modelo más capaz de implementación.
|
||||
|
||||
@@ -363,7 +363,7 @@ El ID del modelo en su configuración OpenCode usa el formato `provider/model-id
|
||||
|
||||
---
|
||||
|
||||
### Tools
|
||||
### Herramientas
|
||||
|
||||
Controle qué herramientas están disponibles en este agente con la configuración `tools`. Puede habilitar o deshabilitar herramientas específicas configurándolas en `true` o `false`.
|
||||
|
||||
@@ -410,7 +410,7 @@ También puedes utilizar comodines para controlar varias herramientas a la vez.
|
||||
|
||||
---
|
||||
|
||||
### Permissions
|
||||
### Permisos
|
||||
|
||||
Puede configurar permisos para administrar qué acciones puede realizar un agente. Actualmente, los permisos para las herramientas `edit`, `bash` y `webfetch` se pueden configurar para:
|
||||
|
||||
@@ -522,7 +522,7 @@ Dado que la última regla de coincidencia tiene prioridad, coloque el comodín `
|
||||
|
||||
---
|
||||
|
||||
### Mode
|
||||
### Modo
|
||||
|
||||
Controle el modo del agente con la configuración `mode`. La opción `mode` se utiliza para determinar cómo se puede utilizar el agente.
|
||||
|
||||
@@ -540,7 +540,7 @@ La opción `mode` se puede configurar en `primary`, `subagent` o `all`. Si no se
|
||||
|
||||
---
|
||||
|
||||
### Hidden
|
||||
### Oculto
|
||||
|
||||
Oculte un subagente del menú de autocompletar `@` con `hidden: true`. Útil para subagentes internos que solo deben ser invocados mediante programación por otros agentes a través de la herramienta Tarea.
|
||||
|
||||
@@ -563,7 +563,7 @@ Sólo aplica para agentes `mode: subagent`.
|
||||
|
||||
---
|
||||
|
||||
### Task permissions
|
||||
### Permisos de tareas
|
||||
|
||||
Controle qué subagentes puede invocar un agente a través de la herramienta Tarea con `permission.task`. Utiliza patrones globales para una combinación flexible.
|
||||
|
||||
@@ -617,7 +617,7 @@ Utilice un color hexadecimal válido (por ejemplo, `#FF5733`) o un color de tema
|
||||
|
||||
---
|
||||
|
||||
### Top P
|
||||
### P superior
|
||||
|
||||
Controle la diversidad de respuestas con la opción `top_p`. Alternativa a la temperatura para controlar la aleatoriedad.
|
||||
|
||||
@@ -635,7 +635,7 @@ Los valores oscilan entre 0,0 y 1,0. Los valores más bajos están más enfocado
|
||||
|
||||
---
|
||||
|
||||
### Additional
|
||||
### Adicional
|
||||
|
||||
Cualquier otra opción que especifique en la configuración de su agente se **pasará directamente** al proveedor como opciones de modelo. Esto le permite utilizar funciones y parámetros específicos del proveedor.
|
||||
|
||||
@@ -662,7 +662,7 @@ Ejecute `opencode models` para ver una lista de los modelos disponibles.
|
||||
|
||||
---
|
||||
|
||||
## Create agents
|
||||
## Crear agentes
|
||||
|
||||
Puede crear nuevos agentes usando el siguiente comando:
|
||||
|
||||
@@ -684,11 +684,11 @@ Este comando interactivo:
|
||||
|
||||
A continuación se muestran algunos casos de uso comunes para diferentes agentes.
|
||||
|
||||
- **Build agent**: trabajo de desarrollo completo con todas las herramientas habilitadas
|
||||
- **Plan agent**: Análisis y planificación sin realizar cambios
|
||||
- **Review agent**: revisión de código con acceso de solo lectura más herramientas de documentación
|
||||
- **Debug agent**: centrado en la investigación con bash y herramientas de lectura habilitadas
|
||||
- **Docs agent**: escritura de documentación con operaciones de archivos pero sin comandos del sistema.
|
||||
- **Agente de compilación**: trabajo de desarrollo completo con todas las herramientas habilitadas
|
||||
- **Plan agente**: Análisis y planificación sin realizar cambios
|
||||
- **Agente de revisión**: revisión de código con acceso de solo lectura más herramientas de documentación
|
||||
- **Agente de depuración**: centrado en la investigación con bash y herramientas de lectura habilitadas
|
||||
- **Agente de documentos**: escritura de documentación con operaciones de archivos pero sin comandos del sistema.
|
||||
|
||||
---
|
||||
|
||||
@@ -702,7 +702,7 @@ A continuación se muestran algunos agentes de ejemplo que pueden resultarle út
|
||||
|
||||
---
|
||||
|
||||
### Documentation agent
|
||||
### Agente de documentación
|
||||
|
||||
```markdown title="~/.config/opencode/agents/docs-writer.md"
|
||||
---
|
||||
@@ -724,7 +724,7 @@ Focus on:
|
||||
|
||||
---
|
||||
|
||||
### Security auditor
|
||||
### Auditor de seguridad
|
||||
|
||||
```markdown title="~/.config/opencode/agents/security-auditor.md"
|
||||
---
|
||||
|
||||
@@ -27,9 +27,9 @@ Inicie la interfaz de usuario del terminal OpenCode.
|
||||
opencode [project]
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Banderas
|
||||
|
||||
| Flag | Short | Description |
|
||||
| Bandera | Corto | Descripción |
|
||||
| ------------ | ----- | --------------------------------------------------------------------- |
|
||||
| `--continue` | `-c` | Continuar la última sesión |
|
||||
| `--session` | `-s` | ID de sesión para continuar |
|
||||
@@ -48,7 +48,7 @@ El OpenCode CLI también tiene los siguientes comandos.
|
||||
|
||||
---
|
||||
|
||||
### agent
|
||||
### agente
|
||||
|
||||
Administrar agentes para OpenCode.
|
||||
|
||||
@@ -58,7 +58,7 @@ opencode agent [command]
|
||||
|
||||
---
|
||||
|
||||
### attach
|
||||
### adjuntar
|
||||
|
||||
Conecte una terminal a un servidor backend OpenCode que ya se esté ejecutando y iniciado mediante los comandos `serve` o `web`.
|
||||
|
||||
@@ -76,16 +76,16 @@ opencode web --port 4096 --hostname 0.0.0.0
|
||||
opencode attach http://10.20.30.40:4096
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Banderas
|
||||
|
||||
| Flag | Short | Description |
|
||||
| Bandera | Corto | Descripción |
|
||||
| ----------- | ----- | ----------------------------------------- |
|
||||
| `--dir` | | Directorio de trabajo para iniciar TUI en |
|
||||
| `--session` | `-s` | ID de sesión para continuar |
|
||||
|
||||
---
|
||||
|
||||
#### create
|
||||
#### crear
|
||||
|
||||
Cree un nuevo agente con configuración personalizada.
|
||||
|
||||
@@ -97,7 +97,7 @@ Este comando lo guiará en la creación de un nuevo agente con un mensaje del si
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### lista
|
||||
|
||||
Enumere todos los agentes disponibles.
|
||||
|
||||
@@ -107,7 +107,7 @@ opencode agent list
|
||||
|
||||
---
|
||||
|
||||
### auth
|
||||
### autenticación
|
||||
|
||||
Comando para administrar credenciales e iniciar sesión para proveedores.
|
||||
|
||||
@@ -117,7 +117,7 @@ opencode auth [command]
|
||||
|
||||
---
|
||||
|
||||
#### login
|
||||
#### acceso
|
||||
|
||||
OpenCode funciona con la lista de proveedores en [Models.dev](https://models.dev), por lo que puede usar `opencode auth login` para configurar las claves API para cualquier proveedor que desee utilizar. Esto se almacena en `~/.local/share/opencode/auth.json`.
|
||||
|
||||
@@ -129,7 +129,7 @@ Cuando se inicia OpenCode, carga los proveedores desde el archivo de credenciale
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### lista
|
||||
|
||||
Enumera todos los proveedores autenticados tal como están almacenados en el archivo de credenciales.
|
||||
|
||||
@@ -145,7 +145,7 @@ opencode auth ls
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
#### cerrar sesión
|
||||
|
||||
Cierra tu sesión de un proveedor eliminándolo del archivo de credenciales.
|
||||
|
||||
@@ -165,7 +165,7 @@ opencode github [command]
|
||||
|
||||
---
|
||||
|
||||
#### install
|
||||
#### instalar
|
||||
|
||||
Instale el agente GitHub en su repositorio.
|
||||
|
||||
@@ -177,7 +177,7 @@ Esto configura el flujo de trabajo de acciones GitHub necesario y lo guía a tra
|
||||
|
||||
---
|
||||
|
||||
#### run
|
||||
#### correr
|
||||
|
||||
Ejecute el agente GitHub. Esto se usa normalmente en acciones GitHub.
|
||||
|
||||
@@ -185,9 +185,9 @@ Ejecute el agente GitHub. Esto se usa normalmente en acciones GitHub.
|
||||
opencode github run
|
||||
```
|
||||
|
||||
##### Flags
|
||||
##### Banderas
|
||||
|
||||
| Flag | Description |
|
||||
| Bandera | Descripción |
|
||||
| --------- | ---------------------------------------------- |
|
||||
| `--event` | GitHub evento simulado para ejecutar el agente |
|
||||
| `--token` | GitHub token de acceso personal |
|
||||
@@ -204,7 +204,7 @@ opencode mcp [command]
|
||||
|
||||
---
|
||||
|
||||
#### add
|
||||
#### agregar
|
||||
|
||||
Agregue un servidor MCP a su configuración.
|
||||
|
||||
@@ -216,7 +216,7 @@ Este comando lo guiará para agregar un servidor MCP local o remoto.
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### lista
|
||||
|
||||
Enumere todos los servidores MCP configurados y su estado de conexión.
|
||||
|
||||
@@ -232,7 +232,7 @@ opencode mcp ls
|
||||
|
||||
---
|
||||
|
||||
#### auth
|
||||
#### autenticación
|
||||
|
||||
Autentíquese con un servidor MCP habilitado para OAuth.
|
||||
|
||||
@@ -256,7 +256,7 @@ opencode mcp auth ls
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
#### cerrar sesión
|
||||
|
||||
Elimine las credenciales OAuth para un servidor MCP.
|
||||
|
||||
@@ -266,7 +266,7 @@ opencode mcp logout [name]
|
||||
|
||||
---
|
||||
|
||||
#### debug
|
||||
#### depurar
|
||||
|
||||
Depurar problemas de conexión OAuth para un servidor MCP.
|
||||
|
||||
@@ -276,7 +276,7 @@ opencode mcp debug <name>
|
||||
|
||||
---
|
||||
|
||||
### models
|
||||
### modelos
|
||||
|
||||
Enumere todos los modelos disponibles de los proveedores configurados.
|
||||
|
||||
@@ -294,9 +294,9 @@ Opcionalmente, puede pasar un ID de proveedor para filtrar modelos por ese prove
|
||||
opencode models anthropic
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Banderas
|
||||
|
||||
| Flag | Description |
|
||||
| Bandera | Descripción |
|
||||
| ----------- | --------------------------------------------------------------------------- |
|
||||
| `--refresh` | Actualizar la caché de modelos desde models.dev |
|
||||
| `--verbose` | Utilice una salida del modelo más detallada (incluye metadatos como costos) |
|
||||
@@ -309,7 +309,7 @@ opencode models --refresh
|
||||
|
||||
---
|
||||
|
||||
### run
|
||||
### correr
|
||||
|
||||
Ejecute opencode en modo no interactivo pasando un mensaje directamente.
|
||||
|
||||
@@ -333,9 +333,9 @@ opencode serve
|
||||
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Banderas
|
||||
|
||||
| Flag | Short | Description |
|
||||
| Bandera | Corto | Descripción |
|
||||
| ------------ | ----- | ----------------------------------------------------------------------------------- |
|
||||
| `--command` | | El comando a ejecutar, use mensaje para args |
|
||||
| `--continue` | `-c` | Continuar la última sesión |
|
||||
@@ -352,7 +352,7 @@ opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
|
||||
---
|
||||
|
||||
### serve
|
||||
### atender
|
||||
|
||||
Inicie un servidor OpenCode sin cabeza para acceso API. Consulte los [documentos del servidor](/docs/server) para conocer la interfaz HTTP completa.
|
||||
|
||||
@@ -373,7 +373,7 @@ Esto inicia un servidor HTTP que proporciona acceso API a la funcionalidad openc
|
||||
|
||||
---
|
||||
|
||||
### session
|
||||
### sesión
|
||||
|
||||
Administrar OpenCode sesiones.
|
||||
|
||||
@@ -383,7 +383,7 @@ opencode session [command]
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### lista
|
||||
|
||||
Enumere todas las sesiones OpenCode.
|
||||
|
||||
@@ -391,16 +391,16 @@ Enumere todas las sesiones OpenCode.
|
||||
opencode session list
|
||||
```
|
||||
|
||||
##### Flags
|
||||
##### Banderas
|
||||
|
||||
| Flag | Short | Description |
|
||||
| Bandera | Corto | Descripción |
|
||||
| ------------- | ----- | --------------------------------------- |
|
||||
| `--max-count` | `-n` | Limitar a N sesiones más recientes |
|
||||
| `--format` | | Formato de salida: tabla o json (tabla) |
|
||||
|
||||
---
|
||||
|
||||
### stats
|
||||
### estadísticas
|
||||
|
||||
Muestre el uso de tokens y las estadísticas de costos para sus sesiones OpenCode.
|
||||
|
||||
@@ -408,9 +408,9 @@ Muestre el uso de tokens y las estadísticas de costos para sus sesiones OpenCod
|
||||
opencode stats
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Banderas
|
||||
|
||||
| Flag | Description |
|
||||
| Bandera | Descripción |
|
||||
| ----------- | ------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `--days` | Mostrar estadísticas de los últimos N días (todo el tiempo) |
|
||||
| `--tools` | Número de herramientas para mostrar (todas) |
|
||||
@@ -419,7 +419,7 @@ opencode stats
|
||||
|
||||
---
|
||||
|
||||
### export
|
||||
### exportar
|
||||
|
||||
Exportar datos de la sesión como JSON.
|
||||
|
||||
@@ -431,7 +431,7 @@ Si no proporciona una ID de sesión, se le pedirá que seleccione entre las sesi
|
||||
|
||||
---
|
||||
|
||||
### import
|
||||
### importar
|
||||
|
||||
Importe datos de sesión desde un archivo JSON o una URL compartida OpenCode.
|
||||
|
||||
@@ -471,7 +471,7 @@ Esto inicia un servidor HTTP y abre un navegador web para acceder a OpenCode a t
|
||||
|
||||
### acp
|
||||
|
||||
Inicie un servidor ACP (Agent Client Protocol).
|
||||
Inicie un servidor ACP (Protocolo de cliente de agente).
|
||||
|
||||
```bash
|
||||
opencode acp
|
||||
@@ -479,9 +479,9 @@ opencode acp
|
||||
|
||||
Este comando inicia un servidor ACP que se comunica a través de stdin/stdout usando nd-JSON.
|
||||
|
||||
#### Flags
|
||||
#### Banderas
|
||||
|
||||
| Flag | Description |
|
||||
| Bandera | Descripción |
|
||||
| ------------ | ---------------------------- |
|
||||
| `--cwd` | Directorio de trabajo |
|
||||
| `--port` | Puerto para escuchar |
|
||||
@@ -489,7 +489,7 @@ Este comando inicia un servidor ACP que se comunica a través de stdin/stdout us
|
||||
|
||||
---
|
||||
|
||||
### uninstall
|
||||
### desinstalar
|
||||
|
||||
Desinstale OpenCode y elimine todos los archivos relacionados.
|
||||
|
||||
@@ -497,9 +497,9 @@ Desinstale OpenCode y elimine todos los archivos relacionados.
|
||||
opencode uninstall
|
||||
```
|
||||
|
||||
#### Flags
|
||||
#### Banderas
|
||||
|
||||
| Flag | Short | Description |
|
||||
| Bandera | Corto | Descripción |
|
||||
| --------------- | ----- | ----------------------------------------- |
|
||||
| `--keep-config` | `-c` | Mantener archivos de configuración |
|
||||
| `--keep-data` | `-d` | Conservar datos de sesión e instantáneas |
|
||||
@@ -508,7 +508,7 @@ opencode uninstall
|
||||
|
||||
---
|
||||
|
||||
### upgrade
|
||||
### mejora
|
||||
|
||||
Actualiza opencode a la última versión o a una versión específica.
|
||||
|
||||
@@ -530,22 +530,22 @@ opencode upgrade v0.1.48
|
||||
|
||||
#### Banderas
|
||||
|
||||
| Bandera | Corto | Descripción |
|
||||
| ---------- | ----- | ------------------------------------------------------------------- |
|
||||
| `--method` | `-m` | El método de instalación que se utilizó; curl, npm, pnpm, bun, brew |
|
||||
| Bandera | Corto | Descripción |
|
||||
| ---------- | ----- | ---------------------------------------------------------------------------- |
|
||||
| `--method` | `-m` | El método de instalación que se utilizó; rizo, npm, pnpm, bollo, preparación |
|
||||
|
||||
---
|
||||
|
||||
## Global Flags
|
||||
## Banderas globales
|
||||
|
||||
El opencode CLI toma las siguientes banderas globales.
|
||||
|
||||
| Bandera | Corto | Descripción |
|
||||
| -------------- | ----- | -------------------------------------------- |
|
||||
| `--help` | `-h` | Mostrar ayuda |
|
||||
| `--version` | `-v` | Número de versión de impresión |
|
||||
| `--print-logs` | | Imprimir registros en stderr |
|
||||
| `--log-level` | | Nivel de registro (DEBUG, INFO, WARN, ERROR) |
|
||||
| Bandera | Corto | Descripción |
|
||||
| -------------- | ----- | --------------------------------------------------------------- |
|
||||
| `--help` | `-h` | Mostrar ayuda |
|
||||
| `--version` | `-v` | Número de versión de impresión |
|
||||
| `--print-logs` | | Imprimir registros en stderr |
|
||||
| `--log-level` | | Nivel de registro (DEPURACIÓN, INFORMACIÓN, ADVERTENCIA, ERROR) |
|
||||
|
||||
---
|
||||
|
||||
@@ -553,7 +553,7 @@ El opencode CLI toma las siguientes banderas globales.
|
||||
|
||||
OpenCode se puede configurar mediante variables de entorno.
|
||||
|
||||
| Variable | Type | Description |
|
||||
| Variables | Tipo | Descripción |
|
||||
| ------------------------------------- | -------- | ------------------------------------------------------------------------------- |
|
||||
| `OPENCODE_AUTO_SHARE` | booleano | Compartir sesiones automáticamente |
|
||||
| `OPENCODE_GIT_BASH_PATH` | cadena | Ruta al ejecutable de Git Bash en Windows |
|
||||
@@ -586,7 +586,7 @@ OpenCode se puede configurar mediante variables de entorno.
|
||||
|
||||
Estas variables de entorno habilitan funciones experimentales que pueden cambiar o eliminarse.
|
||||
|
||||
| Variable | Type | Description |
|
||||
| Variables | Tipo | Descripción |
|
||||
| ----------------------------------------------- | -------- | ---------------------------------------------------------- |
|
||||
| `OPENCODE_EXPERIMENTAL` | booleano | Habilitar todas las funciones experimentales |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | booleano | Habilitar descubrimiento de íconos |
|
||||
|
||||
@@ -22,8 +22,8 @@ Para usar OpenCode en su terminal, necesitará:
|
||||
1. Un emulador de terminal moderno como:
|
||||
- [WezTerm](https://wezterm.org), multiplataforma
|
||||
- [Alacritty](https://alacritty.org), multiplataforma
|
||||
- [Ghostty](https://ghostty.org), Linux y macOS
|
||||
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux y macOS
|
||||
- [Fantasmal](https://ghostty.org), Linux y macOS
|
||||
- [Gatito](https://sw.kovidgoyal.net/kitty/), Linux y macOS
|
||||
|
||||
2. API claves para los LLM proveedores que desea utilizar.
|
||||
|
||||
@@ -79,7 +79,7 @@ También puedes instalarlo con los siguientes comandos:
|
||||
brew install anomalyco/tap/opencode
|
||||
```
|
||||
|
||||
> Recomendamos utilizar el tap OpenCode para las versiones más actualizadas. La fórmula oficial `brew install opencode` la mantiene el equipo Homebrew y se actualiza con menos frecuencia.
|
||||
> Recomendamos utilizar el grifo OpenCode para las versiones más actualizadas. La fórmula oficial `brew install opencode` la mantiene el equipo Homebrew y se actualiza con menos frecuencia.
|
||||
|
||||
- **Usando Paru en Arch Linux**
|
||||
|
||||
@@ -223,7 +223,7 @@ Puede pedirle a OpenCode que agregue nuevas funciones a su proyecto. Aunque prim
|
||||
|
||||
1. **Crea un plan**
|
||||
|
||||
OpenCode tiene un _Plan mode_ que desactiva su capacidad para realizar cambios y
|
||||
OpenCode tiene un _modo Plan_ que desactiva su capacidad para realizar cambios y
|
||||
en su lugar, sugiera _cómo_ implementará la función.
|
||||
|
||||
Cambie a él usando la tecla **Tab**. Verás un indicador para esto en la esquina inferior derecha.
|
||||
@@ -266,7 +266,7 @@ Puede pedirle a OpenCode que agregue nuevas funciones a su proyecto. Aunque prim
|
||||
|
||||
3. **Crea la función**
|
||||
|
||||
Una vez que se sienta cómodo con el plan, vuelva al _Build mode_
|
||||
Una vez que se sienta cómodo con el plan, vuelva al _modo de construcción_
|
||||
presionando la tecla **Tab** nuevamente.
|
||||
|
||||
```bash frame="none"
|
||||
|
||||
@@ -14,35 +14,35 @@ OpenCode viene con varios servidores LSP integrados para idiomas populares:
|
||||
| LSP Servidor | Extensiones | Requisitos |
|
||||
| ------------------ | ------------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
||||
| astro | .astro | Autoinstalaciones para proyectos Astro |
|
||||
| bash | .sh, .bash, .zsh, .ksh | Autoinstala el servidor en lenguaje bash |
|
||||
| clangd | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Instalaciones automáticas para proyectos C/C++ |
|
||||
| csharp | .cs | `.NET SDK` instalado |
|
||||
| fiesta | .sh, .bash, .zsh, .ksh | Autoinstala el servidor en lenguaje bash |
|
||||
| sonido metálico | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | Instalaciones automáticas para proyectos C/C++ |
|
||||
| csostenido | .cs | `.NET SDK` instalado |
|
||||
| clojure-lsp | .clj, .cljs, .cljc, .edn | Comando `clojure-lsp` disponible |
|
||||
| dart | .dart | Comando `dart` disponible |
|
||||
| dardo | .dardo | Comando `dart` disponible |
|
||||
| deno | .ts, .tsx, .js, .jsx, .mjs | Comando `deno` disponible (detecta automáticamente deno.json/deno.jsonc) |
|
||||
| elixir-ls | .ex, .exs | Comando `elixir` disponible |
|
||||
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` dependencia en proyecto |
|
||||
| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` instalado |
|
||||
| gleam | .gleam | Comando `gleam` disponible |
|
||||
| gopls | .go | Comando `go` disponible |
|
||||
| f sostenido | .fs, .fsi, .fsx, .fsscript | `.NET SDK` instalado |
|
||||
| brillo | .brillo | Comando `gleam` disponible |
|
||||
| gopls | .ir | Comando `go` disponible |
|
||||
| hls | .hs, .lhs | Comando `haskell-language-server-wrapper` disponible |
|
||||
| jdtls | .java | `Java SDK (version 21+)` instalado |
|
||||
| kotlin-ls | .kt, .kts | Autoinstalaciones para proyectos Kotlin |
|
||||
| lua-ls | .lua | Autoinstalaciones para proyectos Lua |
|
||||
| nixd | .nix | Comando `nixd` disponible |
|
||||
| nada | .nix | Comando `nixd` disponible |
|
||||
| ocaml-lsp | .ml, .mli | Comando `ocamllsp` disponible |
|
||||
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` dependencia en proyecto |
|
||||
| php intelephense | .php | Autoinstalaciones para proyectos PHP |
|
||||
| php intelefense | .php | Autoinstalaciones para proyectos PHP |
|
||||
| prisma | .prisma | Comando `prisma` disponible |
|
||||
| pyright | .py, .pyi | Dependencia `pyright` instalada |
|
||||
| ruby-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Comandos `ruby` y `gem` disponibles |
|
||||
| rust | .rs | Comando `rust-analyzer` disponible |
|
||||
| sourcekit-lsp | .swift, .objc, .objcpp | `swift` instalado (`xcode` en macOS) |
|
||||
| svelte | .svelte | Autoinstalaciones para proyectos Svelte |
|
||||
| terraform | .tf, .tfvars | Instalaciones automáticas desde versiones GitHub |
|
||||
| tinymist | .typ, .typc | Instalaciones automáticas desde versiones GitHub |
|
||||
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` dependencia en proyecto |
|
||||
| vue | .vue | Autoinstalaciones para proyectos Vue |
|
||||
| derechos de autor | .py, .pyi | Dependencia `pyright` instalada |
|
||||
| rubí-lsp (rubocop) | .rb, .rake, .gemspec, .ru | Comandos `ruby` y `gem` disponibles |
|
||||
| óxido | .rs | Comando `rust-analyzer` disponible |
|
||||
| kit de fuente-lsp | .swift, .objc, .objcpp | `swift` instalado (`xcode` en macOS) |
|
||||
| esbelto | .esbelto | Autoinstalaciones para proyectos Svelte |
|
||||
| terraformar | .tf, .tfvars | Instalaciones automáticas desde versiones GitHub |
|
||||
| diminuto | .tipo, .tipo | Instalaciones automáticas desde versiones GitHub |
|
||||
| mecanografiado | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` dependencia en proyecto |
|
||||
| vista | .vue | Autoinstalaciones para proyectos Vue |
|
||||
| yaml-ls | .yaml, .yml | Autoinstala Red Hat yaml-language-server |
|
||||
| zls | .zig, .zon | Comando `zig` disponible |
|
||||
|
||||
@@ -182,7 +182,7 @@ Puede agregar servidores LSP personalizados especificando el comando y las exten
|
||||
|
||||
PHP Intelephense ofrece funciones premium a través de una clave de licencia. Puede proporcionar una clave de licencia colocando (únicamente) la clave en un archivo de texto en:
|
||||
|
||||
- El macOS/Linux: `$HOME/intelephense/license.txt`
|
||||
- El Windows: `%USERPROFILE%/intelephense/license.txt`
|
||||
- El macOS/Linux: `$HOME/intelephense/licence.txt`
|
||||
- El Windows: `%USERPROFILE%/intelephense/licence.txt`
|
||||
|
||||
El archivo debe contener sólo la clave de licencia sin contenido adicional.
|
||||
|
||||
@@ -45,7 +45,7 @@ Aquí están todas las herramientas integradas disponibles en OpenCode.
|
||||
|
||||
---
|
||||
|
||||
### bash
|
||||
### fiesta
|
||||
|
||||
Ejecute comandos de shell en el entorno de su proyecto.
|
||||
|
||||
@@ -62,7 +62,7 @@ Esta herramienta permite que LLM ejecute comandos de terminal como `npm install`
|
||||
|
||||
---
|
||||
|
||||
### edit
|
||||
### editar
|
||||
|
||||
Modifique archivos existentes utilizando reemplazos de cadenas exactas.
|
||||
|
||||
@@ -79,7 +79,7 @@ Esta herramienta realiza ediciones precisas de archivos reemplazando coincidenci
|
||||
|
||||
---
|
||||
|
||||
### write
|
||||
### escribir
|
||||
|
||||
Cree nuevos archivos o sobrescriba los existentes.
|
||||
|
||||
@@ -100,7 +100,7 @@ La herramienta `write` está controlada por el permiso `edit`, que cubre todas l
|
||||
|
||||
---
|
||||
|
||||
### read
|
||||
### leer
|
||||
|
||||
Lea el contenido del archivo desde su base de código.
|
||||
|
||||
@@ -151,7 +151,7 @@ Busque archivos usando patrones globales como `**/*.js` o `src/**/*.ts`. Devuelv
|
||||
|
||||
---
|
||||
|
||||
### list
|
||||
### lista
|
||||
|
||||
Enumere archivos y directorios en una ruta determinada.
|
||||
|
||||
@@ -191,7 +191,7 @@ Para configurar qué servidores LSP están disponibles para su proyecto, consult
|
||||
|
||||
---
|
||||
|
||||
### patch
|
||||
### parche
|
||||
|
||||
Aplicar parches a los archivos.
|
||||
|
||||
@@ -212,7 +212,7 @@ La herramienta `patch` está controlada por el permiso `edit`, que cubre todas l
|
||||
|
||||
---
|
||||
|
||||
### skill
|
||||
### habilidad
|
||||
|
||||
Cargue una [habilidad](/docs/skills) (un archivo `SKILL.md`) y devuelva su contenido en la conversación.
|
||||
|
||||
@@ -227,7 +227,7 @@ Cargue una [habilidad](/docs/skills) (un archivo `SKILL.md`) y devuelva su conte
|
||||
|
||||
---
|
||||
|
||||
### todowrite
|
||||
### todo escribir
|
||||
|
||||
Administre listas de tareas pendientes durante las sesiones de codificación.
|
||||
|
||||
@@ -248,7 +248,7 @@ Esta herramienta está deshabilitada para los subagentes de forma predeterminada
|
||||
|
||||
---
|
||||
|
||||
### todoread
|
||||
### todo leer
|
||||
|
||||
Leer listas de tareas pendientes existentes.
|
||||
|
||||
@@ -269,7 +269,7 @@ Esta herramienta está deshabilitada para los subagentes de forma predeterminada
|
||||
|
||||
---
|
||||
|
||||
### webfetch
|
||||
### búsqueda web
|
||||
|
||||
Obtener contenido web.
|
||||
|
||||
@@ -286,7 +286,7 @@ Permite que LLM busque y lea páginas web. Útil para buscar documentación o in
|
||||
|
||||
---
|
||||
|
||||
### websearch
|
||||
### búsqueda web
|
||||
|
||||
Busque información en la web.
|
||||
|
||||
@@ -320,7 +320,7 @@ Utilice `websearch` cuando necesite encontrar información (descubrimiento) y `w
|
||||
|
||||
---
|
||||
|
||||
### question
|
||||
### pregunta
|
||||
|
||||
Haga preguntas al usuario durante la ejecución.
|
||||
|
||||
@@ -354,7 +354,7 @@ Las herramientas personalizadas le permiten definir sus propias funciones a las
|
||||
|
||||
## MCP servidores
|
||||
|
||||
Los servidores MCP (Model Context Protocol) le permiten integrar herramientas y servicios externos. Esto incluye acceso a bases de datos, integraciones API y servicios de terceros.
|
||||
Los servidores MCP (Protocolo de contexto modelo) le permiten integrar herramientas y servicios externos. Esto incluye acceso a bases de datos, integraciones API y servicios de terceros.
|
||||
|
||||
[Más información](/docs/mcp-servers) sobre la configuración de servidores MCP.
|
||||
|
||||
|
||||
@@ -55,13 +55,13 @@ Nous avons supprimé certaines fonctionnalités que nous n'étions pas sûrs que
|
||||
### Raccourcis clavier supprimés
|
||||
|
||||
- messages_layout_toggle
|
||||
- messages_next
|
||||
- messages_previous
|
||||
- file_diff_toggle
|
||||
- file_search
|
||||
- file_close
|
||||
- file_list
|
||||
- messages_suivant
|
||||
- messages_précédent
|
||||
- fichier_diff_toggle
|
||||
- recherche_fichier
|
||||
- fichier_fermer
|
||||
- liste_fichiers
|
||||
- app_help
|
||||
- project_init
|
||||
- tool_details
|
||||
- thinking_blocks
|
||||
- projet_init
|
||||
- outil_détails
|
||||
- blocs_de_pensée
|
||||
|
||||
@@ -9,7 +9,7 @@ OpenCode prend en charge le [Agent Client Protocol](https://agentclientprotocol.
|
||||
Pour obtenir une liste des éditeurs et des outils prenant en charge ACP, consultez le [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now).
|
||||
:::
|
||||
|
||||
ACP est un protocole ouvert qui standardise la communication entre les éditeurs de code et les agents de codage AI.
|
||||
ACP est un protocole ouvert qui standardise la communication entre les éditeurs de code et les agents de codage IA.
|
||||
|
||||
---
|
||||
|
||||
|
||||
@@ -46,17 +46,17 @@ OpenCode est livré avec deux agents principaux intégrés et deux sous-agents i
|
||||
|
||||
---
|
||||
|
||||
### Utiliser Build
|
||||
### Utiliser la construction
|
||||
|
||||
_Mode_ : `primary`
|
||||
*Mode* : `primary`
|
||||
|
||||
Build est l'agent principal **par défaut** avec tous les outils activés. Il s'agit de l'agent standard pour les travaux de développement où vous avez besoin d'un accès complet aux opérations sur les fichiers et aux commandes système.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser Plan
|
||||
### Utiliser le forfait
|
||||
|
||||
_Mode_ : `primary`
|
||||
*Mode* : `primary`
|
||||
|
||||
Un agent restreint conçu pour la planification et l'analyse. Nous utilisons un système d'autorisation pour vous donner plus de contrôle et empêcher toute modification involontaire.
|
||||
Par défaut, tous les éléments suivants sont définis sur `ask` :
|
||||
@@ -68,41 +68,41 @@ Cet agent est utile lorsque vous souhaitez que LLM analyse le code, suggère des
|
||||
|
||||
---
|
||||
|
||||
### Utiliser General
|
||||
### Utiliser général
|
||||
|
||||
_Mode_ : `subagent`
|
||||
*Mode* : `subagent`
|
||||
|
||||
Un agent polyvalent pour rechercher des questions complexes et exécuter des tâches en plusieurs étapes. Dispose d'un accès complet aux outils (sauf todo), il peut donc apporter des modifications aux fichiers en cas de besoin. Utilisez-le pour exécuter plusieurs unités de travail en parallèle.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser Explore
|
||||
### Utiliser explorer
|
||||
|
||||
_Mode_ : `subagent`
|
||||
*Mode* : `subagent`
|
||||
|
||||
Un agent rapide en lecture seule pour explorer les bases de code. Impossible de modifier les fichiers. Utilisez-le lorsque vous avez besoin de rechercher rapidement des fichiers par modèles, de rechercher du code par mots-clés ou de répondre à des questions sur la base de code.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser Compaction
|
||||
### Utiliser le compactage
|
||||
|
||||
_Mode_ : `primary`
|
||||
*Mode* : `primary`
|
||||
|
||||
Agent système caché qui compacte un contexte long en un résumé plus petit. Il s'exécute automatiquement en cas de besoin et n'est pas sélectionnable dans l'interface utilisateur.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser Title
|
||||
### Utiliser le titre
|
||||
|
||||
_Mode_ : `primary`
|
||||
*Mode* : `primary`
|
||||
|
||||
Agent système caché qui génère des titres de session courts. Il s'exécute automatiquement et n'est pas sélectionnable dans l'interface utilisateur.
|
||||
|
||||
---
|
||||
|
||||
### Utiliser Summary
|
||||
### Utiliser le résumé
|
||||
|
||||
_Mode_ : `primary`
|
||||
*Mode* : `primary`
|
||||
|
||||
Agent système caché qui crée des résumés de session. Il s'exécute automatiquement et n'est pas sélectionnable dans l'interface utilisateur.
|
||||
|
||||
@@ -181,7 +181,7 @@ Configurez les agents dans votre fichier de configuration `opencode.json` :
|
||||
|
||||
Vous pouvez également définir des agents à l'aide de fichiers markdown. Placez-les dans :
|
||||
|
||||
- Global : `~/.config/opencode/agents/`
|
||||
- Mondial : `~/.config/opencode/agents/`
|
||||
- Par projet : `.opencode/agents/`
|
||||
|
||||
```markdown title="~/.config/opencode/agents/review.md"
|
||||
|
||||
@@ -58,7 +58,7 @@ opencode agent [command]
|
||||
|
||||
---
|
||||
|
||||
### attach
|
||||
### attacher
|
||||
|
||||
Attachez un terminal à un serveur backend OpenCode déjà en cours d'exécution démarré via les commandes `serve` ou `web`.
|
||||
|
||||
@@ -85,7 +85,7 @@ opencode attach http://10.20.30.40:4096
|
||||
|
||||
---
|
||||
|
||||
#### create
|
||||
#### créer
|
||||
|
||||
Créez un nouvel agent avec une configuration personnalisée.
|
||||
|
||||
@@ -97,7 +97,7 @@ Cette commande vous guidera dans la création d'un nouvel agent avec une invite
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### liste
|
||||
|
||||
Répertoriez tous les agents disponibles.
|
||||
|
||||
@@ -107,7 +107,7 @@ opencode agent list
|
||||
|
||||
---
|
||||
|
||||
### auth
|
||||
### authentification
|
||||
|
||||
Commande pour gérer les informations d’identification et la connexion des fournisseurs.
|
||||
|
||||
@@ -117,7 +117,7 @@ opencode auth [command]
|
||||
|
||||
---
|
||||
|
||||
#### login
|
||||
#### se connecter
|
||||
|
||||
OpenCode est alimenté par la liste des fournisseurs sur [Models.dev](https://models.dev), vous pouvez donc utiliser `opencode auth login` pour configurer les clés API pour tout fournisseur que vous souhaitez utiliser. Ceci est stocké dans `~/.local/share/opencode/auth.json`.
|
||||
|
||||
@@ -129,7 +129,7 @@ Lorsque OpenCode démarre, il charge les fournisseurs à partir du fichier d'inf
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### liste
|
||||
|
||||
Répertorie tous les fournisseurs authentifiés tels qu'ils sont stockés dans le fichier d'informations d'identification.
|
||||
|
||||
@@ -145,7 +145,7 @@ opencode auth ls
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
#### déconnexion
|
||||
|
||||
Vous déconnecte d'un fournisseur en l'effaçant du fichier d'informations d'identification.
|
||||
|
||||
@@ -165,7 +165,7 @@ opencode github [command]
|
||||
|
||||
---
|
||||
|
||||
#### install
|
||||
#### installer
|
||||
|
||||
Installez l'agent GitHub dans votre référentiel.
|
||||
|
||||
@@ -177,9 +177,9 @@ Cela configure le flux de travail GitHub Actions nécessaire et vous guide tout
|
||||
|
||||
---
|
||||
|
||||
#### run
|
||||
#### courir
|
||||
|
||||
Exécutez l'agent GitHub. Ceci est généralement utilisé dans les GitHub Actions.
|
||||
Exécutez l'agent GitHub. Ceci est généralement utilisé dans les actions GitHub.
|
||||
|
||||
```bash
|
||||
opencode github run
|
||||
@@ -204,7 +204,7 @@ opencode mcp [command]
|
||||
|
||||
---
|
||||
|
||||
#### add
|
||||
#### ajouter
|
||||
|
||||
Ajoutez un serveur MCP à votre configuration.
|
||||
|
||||
@@ -216,7 +216,7 @@ Cette commande vous guidera dans l’ajout d’un serveur MCP local ou distant.
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### liste
|
||||
|
||||
Répertoriez tous les serveurs MCP configurés et leur état de connexion.
|
||||
|
||||
@@ -232,7 +232,7 @@ opencode mcp ls
|
||||
|
||||
---
|
||||
|
||||
#### auth
|
||||
#### authentification
|
||||
|
||||
Authentifiez-vous auprès d'un serveur MCP compatible OAuth.
|
||||
|
||||
@@ -256,7 +256,7 @@ opencode mcp auth ls
|
||||
|
||||
---
|
||||
|
||||
#### logout
|
||||
#### déconnexion
|
||||
|
||||
Supprimez les informations d'identification OAuth pour un serveur MCP.
|
||||
|
||||
@@ -266,7 +266,7 @@ opencode mcp logout [name]
|
||||
|
||||
---
|
||||
|
||||
#### debug
|
||||
#### déboguer
|
||||
|
||||
Déboguer les problèmes de connexion OAuth pour un serveur MCP.
|
||||
|
||||
@@ -276,7 +276,7 @@ opencode mcp debug <name>
|
||||
|
||||
---
|
||||
|
||||
### models
|
||||
### modèles
|
||||
|
||||
Répertoriez tous les modèles disponibles auprès des fournisseurs configurés.
|
||||
|
||||
@@ -309,7 +309,7 @@ opencode models --refresh
|
||||
|
||||
---
|
||||
|
||||
### run
|
||||
### courir
|
||||
|
||||
Exécutez opencode en mode non interactif en transmettant directement une invite.
|
||||
|
||||
@@ -352,7 +352,7 @@ opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
|
||||
|
||||
---
|
||||
|
||||
### serve
|
||||
### servir
|
||||
|
||||
Démarrez un serveur OpenCode sans tête pour un accès API. Consultez le [serveur docs](/docs/server) pour l'interface complète HTTP.
|
||||
|
||||
@@ -383,7 +383,7 @@ opencode session [command]
|
||||
|
||||
---
|
||||
|
||||
#### list
|
||||
#### liste
|
||||
|
||||
Répertoriez toutes les sessions OpenCode.
|
||||
|
||||
@@ -400,7 +400,7 @@ opencode session list
|
||||
|
||||
---
|
||||
|
||||
### stats
|
||||
### statistiques
|
||||
|
||||
Affichez les statistiques d'utilisation et de coût des jetons pour vos sessions OpenCode.
|
||||
|
||||
@@ -419,7 +419,7 @@ opencode stats
|
||||
|
||||
---
|
||||
|
||||
### export
|
||||
### exporter
|
||||
|
||||
Exportez les données de session sous JSON.
|
||||
|
||||
@@ -431,7 +431,7 @@ Si vous ne fournissez pas d'ID de session, vous serez invité à sélectionner p
|
||||
|
||||
---
|
||||
|
||||
### import
|
||||
### importer
|
||||
|
||||
Importez les données de session à partir d'un fichier JSON ou d'un partage OpenCode URL.
|
||||
|
||||
@@ -448,7 +448,7 @@ opencode import https://opncd.ai/s/abc123
|
||||
|
||||
---
|
||||
|
||||
### web
|
||||
### la toile
|
||||
|
||||
Démarrez un serveur OpenCode sans tête avec une interface Web.
|
||||
|
||||
@@ -489,7 +489,7 @@ Cette commande démarre un serveur ACP qui communique via stdin/stdout en utilis
|
||||
|
||||
---
|
||||
|
||||
### uninstall
|
||||
### désinstaller
|
||||
|
||||
Désinstallez OpenCode et supprimez tous les fichiers associés.
|
||||
|
||||
@@ -508,7 +508,7 @@ opencode uninstall
|
||||
|
||||
---
|
||||
|
||||
### upgrade
|
||||
### mise à niveau
|
||||
|
||||
Met à jour opencode vers la dernière version ou une version spécifique.
|
||||
|
||||
@@ -530,13 +530,13 @@ opencode upgrade v0.1.48
|
||||
|
||||
#### Drapeaux
|
||||
|
||||
| Drapeau | Court | Descriptif |
|
||||
| ---------- | ----- | --------------------------------------------------------------- |
|
||||
| `--method` | `-m` | La méthode d'installation utilisée ; curl, npm, pnpm, bun, brew |
|
||||
| Drapeau | Court | Descriptif |
|
||||
| ---------- | ----- | ----------------------------------------------------------------------- |
|
||||
| `--method` | `-m` | La méthode d'installation utilisée ; curl, npm, pnpm, chignon, infusion |
|
||||
|
||||
---
|
||||
|
||||
## Drapeaux globaux
|
||||
## Drapeaux mondiaux
|
||||
|
||||
La CLI opencode prend les indicateurs globaux suivants.
|
||||
|
||||
@@ -553,7 +553,7 @@ La CLI opencode prend les indicateurs globaux suivants.
|
||||
|
||||
OpenCode peut être configuré à l'aide de variables d'environnement.
|
||||
|
||||
| Variables | Type | Descriptif |
|
||||
| Variables | Tapez | Descriptif |
|
||||
| ------------------------------------- | ------- | --------------------------------------------------------------------------------- |
|
||||
| `OPENCODE_AUTO_SHARE` | booléen | Partager automatiquement des sessions |
|
||||
| `OPENCODE_GIT_BASH_PATH` | chaîne | Chemin vers l'exécutable Git Bash sur Windows |
|
||||
@@ -586,7 +586,7 @@ OpenCode peut être configuré à l'aide de variables d'environnement.
|
||||
|
||||
Ces variables d'environnement activent des fonctionnalités expérimentales qui peuvent être modifiées ou supprimées.
|
||||
|
||||
| Variables | Type | Descriptif |
|
||||
| Variables | Tapez | Descriptif |
|
||||
| ----------------------------------------------- | ------- | --------------------------------------------------------------- |
|
||||
| `OPENCODE_EXPERIMENTAL` | booléen | Activer toutes les fonctionnalités expérimentales |
|
||||
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | booléen | Activer la découverte d'icônes |
|
||||
|
||||
@@ -79,7 +79,7 @@ Vous pouvez maintenant exécuter cette commande dans TUI :
|
||||
|
||||
Vous pouvez également définir des commandes à l'aide de fichiers markdown. Placez-les dans :
|
||||
|
||||
- Global : `~/.config/opencode/commands/`
|
||||
- Mondial : `~/.config/opencode/commands/`
|
||||
- Par projet : `.opencode/commands/`
|
||||
|
||||
```markdown title="~/.config/opencode/commands/test.md"
|
||||
@@ -218,7 +218,7 @@ Examinons les options de configuration en détail.
|
||||
|
||||
---
|
||||
|
||||
### Template
|
||||
### Modèle
|
||||
|
||||
L'option `template` définit l'invite qui sera envoyée au LLM lors de l'exécution de la commande.
|
||||
|
||||
@@ -274,7 +274,7 @@ Il s'agit d'une option de configuration **facultative**. S’il n’est pas spé
|
||||
|
||||
---
|
||||
|
||||
### Subtask
|
||||
### Sous-tâche
|
||||
|
||||
Utilisez le booléen `subtask` pour forcer la commande à déclencher un invocation de [subagent](/docs/agents/#subagents).
|
||||
Ceci est utile si vous souhaitez que la commande ne pollue pas votre contexte principal et **force** l'agent à agir en tant que sous-agent,
|
||||
@@ -294,7 +294,7 @@ Il s'agit d'une option de configuration **facultative**.
|
||||
|
||||
---
|
||||
|
||||
### Model
|
||||
### Modèle
|
||||
|
||||
Utilisez la configuration `model` pour remplacer le modèle par défaut pour cette commande.
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user