wip(docs): i18n (#12681)

This commit is contained in:
Adam
2026-02-09 11:34:35 -06:00
committed by GitHub
parent f74c0339cc
commit dc53086c1e
642 changed files with 192745 additions and 509 deletions

View File

@@ -0,0 +1,67 @@
---
title: 1.0'a geçiş
description: OpenCode 1.0'daki yenilikler.
---
OpenCode 1.0, TUI'un tamamen yeniden yazılmasıdır.
Performans ve yetenek sorunları olan go+bubbletea tabanlı TUI'dan zig+solidjs ile yazılmış şirket içi bir çerçeveye (OpenTUI) geçtik.
Yeni TUI aynıık kod sunucusuna bağlandığı için eskisi gibi çalışıyor.
---
## Upgrading
Şu anda daha önceki bir sürümü kullanıyorsanız, otomatik olarak 1.0'a yükseltilmemelisiniz.
version. However some older versions of OpenCode always grab latest.
Manuel olarak yükseltmek için çalıştırın
```bash
$ opencode upgrade 1.0.0
```
0.x'e geri dönmek için şunu çalıştırın:
```bash
$ opencode upgrade 0.15.31
```
---
## Kullanıcı deneyimi değiştirildi
Oturum geçmişi daha sıkıştırılmıştır ve yalnızca düzenleme ve bash aracının tüm ayrıntılarını gösterir.
Neredeyse onun içinden aktığı bir komut çubuğu ekledik. Her şeyi görmek için ctrl+p tuşlarına basın.
Yararlı bilgileri içeren bir kayıt kenarı sürüklenebilir (değiştirilebilir).
Kimsenin gerçekten çalıştığından emin olmadığımız bazı şeyleri kaldırabildik. Önemli bir şeyin eksik olması durumunda lütfen bir konuyu açın; biz de hızla geri ekleyelim.
---
## Breaking changes
### Keybinds renamed
- messages_revert -> messages_undo
- switch_agent -> agent_cycle
- switch_agent_reverse -> agent_cycle_reverse
- switch_mode -> agent_cycle
- switch_mode_reverse -> agent_cycle_reverse
### Keybinds removed
- messages_layout_toggle
- messages_next
- messages_previous
- file_diff_toggle
- file_search
- file_close
- file_list
- app_help
- project_init
- tool_details
- thinking_blocks

View File

@@ -0,0 +1,156 @@
---
title: ACP Destek
description: OpenCode'u ACP uyumlu herhangi bir sürdürülebilirde kullanın.
---
OpenCode, [Agent Client Protocol](https://agentclientprotocol.com) veya (ACP) dosyalarını destekleyerek onu doğrudan uyumlu tamamlayıcılarda ve IDE'lerde kullanmanızı sağlar.
:::uç
ACP'yi destekleyenlerin ve araçların listesi için [ACP progress report](https://zed.dev/blog/acp-progress-report#available-now)'e bakın.
:::
ACP, kod editörleri ile AI kullanma araçları arasındaki iletişimi standartlaştıran açık bir protokoldür.
---
## Yapılandır
OpenCode'u ACP aracılığıyla kullanmak için düzenleyicinizi `opencode acp` komutunu çalıştıracak şekilde yapılandırın.
Komut, OpenCode'u, editörünüzle stdio aracılığıyla JSON-RPC üzerinden iletişim kuran ACP uyumlu bir alt süreç olarak başlatır.
Aşağıda ACP'yi destekleyen popüler düzenleyicilere ilişkin örnekler verilmiştir.
---
### Zed
[Zed](https://zed.dev) bakımınıza (`~/.config/zed/settings.json`) ekleyin:
```json title="~/.config/zed/settings.json"
{
"agent_servers": {
"OpenCode": {
"command": "opencode",
"args": ["acp"]
}
}
}
```
Açmak için **Komut Paleti**'ndeki `agent: new thread` eylemini kullanın.
`keymap.json` dosyanızı düzenleyerek de bir klavye kısayolunu bağlayabilirsiniz:
```json title="keymap.json"
[
{
"bindings": {
"cmd-alt-o": [
"agent::NewExternalAgentThread",
{
"agent": {
"custom": {
"name": "OpenCode",
"command": {
"command": "opencode",
"args": ["acp"]
}
}
}
}
]
}
}
]
```
---
### JetBrains IDEs
[documentation](https://www.jetbrains.com/help/ai-assistant/acp.html) uyarınca [JetBrains IDE](https://www.jetbrains.com/) acp.json dosyanıza ekleyin:
```json title="acp.json"
{
"agent_servers": {
"OpenCode": {
"command": "/absolute/path/bin/opencode",
"args": ["acp"]
}
}
}
```
Açmak için AI Sohbet temsilcisi seçicisindeki yeni 'OpenCode' aracısını kullanın.
---
### Avante.nvim
[Avante.nvim](https://github.com/yetone/avante.nvim) miktarınıza ekleyin:
```lua
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" }
}
}
}
```
Ortam değişkenlerini iletmeniz gerekiyor:
```lua {6-8}
{
acp_providers = {
["opencode"] = {
command = "opencode",
args = { "acp" },
env = {
OPENCODE_API_KEY = os.getenv("OPENCODE_API_KEY")
}
}
}
}
```
---
### CodeCompanion.nvim
OpenCode'u [CodeCompanion.nvim](https://github.com/olimorris/codecompanion.nvim)'de ACP aracısı olarak kullanmak için Neovim yapılandırmanıza aşağıdakileri ekleyin:
```lua
require("codecompanion").setup({
interactions = {
chat = {
adapter = {
name = "opencode",
model = "claude-sonnet-4",
},
},
},
})
```
Bu yapılandırma, CodeCompanion'ı OpenCode'u sohbet için ACP aracısı olarak kullanacak şekilde ayarlar.
Ortam değişkenlerini (`OPENCODE_API_KEY` gibi) iletmeniz gerekiyorsa, tüm ayrıntılar için CodeCompanion.nvim belgelerindeki [Configuring Adapters: Environment Variables](https://codecompanion.olimorris.dev/getting-started#setting-an-api-key)'ye bakın.
## Destek
OpenCode, terminalde olduğu gibi ACP aracılığıyla aynı şekilde çalışır. Tüm özellikler desteklenir:
:::note
`/undo` ve `/redo` gibi bazı yerleşik eğik çizgi komutları şu anda desteklenmemektedir.
:::
- Yerleşik araçlar (dosya işlemleri, terminal komutları vb.)
- Özel araçlar ve eğik çizgi komutları
- OpenCode yapılandırmanızda yapılandırılmış MCP sunucuları
- `AGENTS.md`'dan projeye özel kurallar
- Özel formatlayıcılar ve linterler
- Aracılar ve izin sistemi

View File

@@ -0,0 +1,747 @@
---
title: Temsilciler
description: Özel araçları yapılandırın ve kullanın.
---
Aracılar, belirli görevler ve iş akışları için yapılandırılabilen uzmanlaşmış yapay zeka asistanlarıdır. Özel istemler, modeller ve araç erişimiyle odaklanmış araçlar oluşturmanıza olanak tanır.
:::tip
Herhangi bir kod değişikliği yapmadan kodu analiz etmek ve önerileri gözden geçirmek için plan aracısını kullanın.
:::
Bir oturum sırasında temsilciler arasında geçiş yapabilir veya onları `@` ifadesi ile çağırabilirsiniz.
---
## Types
OpenCode'da iki tür aracı vardır; birincil ajanlar ve alt ajanlar.
---
### Birincil ajanlar
Birincil aracılar, doğrudan etkileşim kurduğunuz ana yardımcılardır. **Sekme** tuşunu veya yapılandırılmış `switch_agent` tuş atamanızı kullanarak bunlar arasında geçiş yapabilirsiniz. Bu temsilciler ana görüşmenizi yönetir. Araç erişimi, izinler aracılığıyla yapılandırılır; örneğin, Plan kısıtlıyken Build'de tüm araçlar etkindir.
:::tip
Bir oturum sırasında birincil aracılar arasında geçiş yapmak için **Sekme** tuşunu kullanabilirsiniz.
:::
OpenCode, **Build** ve **Plan** olmak üzere iki yerleşik birincil aracıyla birlikte gelir. Kuyu
aşağıdakilere bakın.
---
### Subagents
Alt temsilciler, birincil aracıların belirli görevler için çağırabileceği uzman yardımcılardır. Ayrıca mesajlarınızda **@ bahsederek** bunları manuel olarak da çağırabilirsiniz.
OpenCode, **Genel** ve **Keşfet** olmak üzere iki yerleşik alt aracıyla birlikte gelir. Buna aşağıda bakacağız.
---
## Yerleşik
OpenCode iki yerleşik birincil aracı ve iki yerleşik alt aracıyla birlikte gelir.
---
### Derlemeyi kullan
_Mode_: `primary`
Build, tüm araçların etkin olduğu **varsayılan** birincil aracıdır. Bu, dosya işlemlerine ve sistem komutlarına tam erişime ihtiyaç duyduğunuz geliştirme çalışmaları için standart aracıdır.
---
### Planı kullan
_Mod_: `primary`
Planlama ve analiz için tasarlanmış kısıtlı bir aracı. Size daha fazla kontrol sağlamak ve istenmeyen değişiklikleri önlemek için bir izin sistemi kullanıyoruz.
Varsayılan olarak aşağıdakilerin tümü `ask` olarak ayarlanmıştır:
- `file edits`: Tüm yazmalar, yamalar ve düzenler
- `bash`: Tüm bash komutları
Bu aracı, LLM'ın kodu analiz etmesini, değişiklik önermesini veya kod tabanınızda herhangi bir gerçek değişiklik yapmadan plan oluşturmasını istediğinizde kullanışlıdır.
---
### Genel kullan
_Mode_: `subagent`
Karmaşık soruları araştırmak ve çok adımlı görevleri yürütmek için genel amaçlı bir aracı. Tam araç erişimine sahiptir (yapılacaklar hariç), böylece gerektiğinde dosya değişiklikleri yapabilir. Birden fazla iş birimini paralel olarak çalıştırmak için bunu kullanın.
---
### Keşfet'i kullan
_Mod_: `subagent`
Kod tabanlarını keşfetmeye yönelik hızlı, salt okunur bir aracı. Dosyalar değiştirilemiyor. Dosyaları kalıplara göre hızla bulmanız, anahtar sözcükler için kod aramanız veya kod tabanıyla ilgili soruları yanıtlamanız gerektiğinde bunu kullanın.
---
### Sıkıştırmayı kullanın
_Mode_: `primary`
Uzun bağlamı daha küçük bir özete sıkıştıran gizli sistem aracısı. Gerektiğinde otomatik olarak çalışır ve kullanıcı arayüzünde seçilemez.
---
### Başlığı kullan
_Mod_: `primary`
Kısa oturum başlıkları oluşturan gizli sistem aracısı. Otomatik olarak çalışır ve kullanıcı arayüzünde seçilemez.
---
### Özeti kullan
_Mode_: `primary`
Oturum özetleri oluşturan gizli sistem aracısı. Otomatik olarak çalışır ve kullanıcı arayüzünde seçilemez.
---
## Kullanım
1. Birincil aracılar için, oturum sırasında bunlar arasında geçiş yapmak için **Sekme** tuşunu kullanın. Yapılandırılmış `switch_agent` tuş bağınızı da kullanabilirsiniz.
2. Alt aracılar çağrılabilir:
- Açıklamalarına göre özel görevler için birincil temsilciler tarafından **otomatik olarak**.
- Mesajınızda bir alt temsilciden **@ bahsederek** manuel olarak. Örneğin.
```txt frame="none"
@general help me search for this function
```
3. **Oturumlar arasında gezinme**: Alt aracılar kendi alt oturumlarını oluşturduğunda, aşağıdakileri kullanarak ana oturum ile tüm alt oturumlar arasında gezinebilirsiniz:
- **\<Leader>+Right** (veya yapılandırılmış `session_child_cycle` tuş atamanız) ebeveyn → çocuk1 → çocuk2 → ... → ebeveyn arasında ileri doğru geçiş yapmak için
- **\<Leader>+Left** (veya yapılandırılmış `session_child_cycle_reverse` tuş atamanız) ebeveyn ← çocuk1 ← çocuk2 ← ... ← ebeveyn arasında geriye doğru geçiş yapmak için
Bu, ana görüşme ile özel alt temsilci çalışması arasında sorunsuz bir şekilde geçiş yapmanıza olanak tanır.
---
## Yapılandır
Yerleşik aracıları özelleştirebilir veya yapılandırma yoluyla kendinizinkini oluşturabilirsiniz. Aracılar iki şekilde yapılandırılabilir:
---
### JSON
Aracıları `opencode.json` yapılandırma dosyanızda yapılandırın:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"mode": "primary",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"mode": "primary",
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
},
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"mode": "subagent",
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
"write": false,
"edit": false
}
}
}
}
```
---
### Markdown
Ayrıca aracıları işaretleme dosyalarını kullanarak da tanımlayabilirsiniz. Bunları şuraya yerleştirin:
- Global: `~/.config/opencode/agents/`
- Per-project: `.opencode/agents/`
```markdown title="~/.config/opencode/agents/review.md"
---
description: Reviews code for quality and best practices
mode: subagent
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
You are in code review mode. Focus on:
- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations
Provide constructive feedback without making direct changes.
```
Markdown dosyasının adı aracının adı olur. Örneğin, `review.md` bir `review` aracısı oluşturur.
---
## Seçenekler
Bu yapılandırma seçeneklerine ayrıntılı olarak bakalım.
---
### Tanım
Aracının ne yaptığına ve ne zaman kullanılacağına ilişkin kısa bir açıklama sağlamak için `description` seçeneğini kullanın.
```json title="opencode.json"
{
"agent": {
"review": {
"description": "Reviews code for best practices and potential issues"
}
}
}
```
Bu **gerekli** bir yapılandırma seçeneğidir.
---
### Sıcaklık
LLM'nin yanıtlarının rastgeleliğini ve yaratıcılığını `temperature` yapılandırmasıyla kontrol edin.
Düşük değerler yanıtları daha odaklı ve belirleyici hale getirirken, yüksek değerler yaratıcılığı ve değişkenliği artırır.
```json title="opencode.json"
{
"agent": {
"plan": {
"temperature": 0.1
},
"creative": {
"temperature": 0.8
}
}
}
```
Sıcaklık değerleri tipik olarak 0,0 ila 1,0 arasındadır:
- **0,0-0,2**: Çok odaklı ve belirleyici yanıtlar, kod analizi ve planlama için idealdir
- **0,3-0,5**: Biraz yaratıcılık içeren dengeli yanıtlar, genel gelişim görevleri için iyi
- **0,6-1,0**: Daha yaratıcı ve çeşitli yanıtlar, beyin fırtınası ve keşif için yararlı
```json title="opencode.json"
{
"agent": {
"analyze": {
"temperature": 0.1,
"prompt": "{file:./prompts/analysis.txt}"
},
"build": {
"temperature": 0.3
},
"brainstorm": {
"temperature": 0.7,
"prompt": "{file:./prompts/creative.txt}"
}
}
}
```
Sıcaklık belirtilmezse OpenCode modeline özgü varsayılanları kullanır; çoğu model için genellikle 0, Qwen modelleri için 0,55.
---
### Max steps
Bir aracının yalnızca metinle yanıt vermeye zorlanmadan önce gerçekleştirebileceği maksimum aracı yineleme sayısını kontrol edin. Bu, maliyetleri kontrol etmek isteyen kullanıcıların aracılık eylemlerine bir sınır koymasına olanak tanır.
Bu ayarlanmazsa, model durmayı seçene veya kullanıcı oturumu kesene kadar aracı yinelemeye devam edecektir.
```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
}
}
}
```
Sınıra ulaşıldığında, aracı, işinin özeti ve önerilen kalan görevlerin bir özetiyle yanıt vermesi talimatını veren özel bir sistem istemi alır.
:::caution
Eski `maxSteps` alanı kullanımdan kaldırıldı. Bunun yerine `steps` kullanın.
:::
---
### Devre dışı bırakmak
Aracıyı devre dışı bırakmak için `true` olarak ayarlayın.
```json title="opencode.json"
{
"agent": {
"review": {
"disable": true
}
}
}
```
---
### Çabuk
Bu aracı için `prompt` yapılandırmasıyla özel bir sistem bilgi istemi dosyası belirtin. Bilgi istemi dosyası, aracının amacına özel talimatlar içermelidir.
```json title="opencode.json"
{
"agent": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
Bu yol, yapılandırma dosyasının bulunduğu yere göredir. Yani bu hem global OpenCode yapılandırması hem de projeye özel yapılandırma için işe yarar.
---
### Modeli
Bu aracın kodu geçersiz için `model` ayarını kullanın. Farklı bölümler için optimize edilmiş farklı modelleri kullanmak için kullanışlıdır. Örneğin planlama için daha hızlı bir model, uygulama için daha yetenekli bir model.
:::tip
Bir model belirtmezseniz, birincil araçlar [model globally configured](/docs/config#models)'yi kullanırken alt araçlar, alt aracı çağıran birincil aracın kullanıcı adını kullanır.
:::
```json title="opencode.json"
{
"agent": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
OpenCode hesabınızdaki model kimliğini `provider/model-id` biçimini kullanır. Örneğin, [OpenCode Zen](/docs/zen) kullanıyorsanız, GPT 5.1 Codex için `opencode/gpt-5.1-codex` kullanırsınız.
---
### Tools
`tools` yapılandırmasıyla bu aracıda hangi araçların mevcut olduğunu kontrol edin. Belirli araçları `true` veya `false` olarak ayarlayarak etkinleştirebilir veya devre dışı bırakabilirsiniz.
```json title="opencode.json" {3-6,9-12}
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": true,
"bash": true
},
"agent": {
"plan": {
"tools": {
"write": false,
"bash": false
}
}
}
}
```
:::note
Aracıya özgü yapılandırma, genel yapılandırmayı geçersiz kılar.
:::
Aynı anda birden fazla aracı kontrol etmek için joker karakterleri de kullanabilirsiniz. Örneğin, bir MCP sunucusundaki tüm araçları devre dışı bırakmak için:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"readonly": {
"tools": {
"mymcp_*": false,
"write": false,
"edit": false
}
}
}
}
```
[Learn more about tools](/docs/tools).
---
### İzinler
Bir aracının gerçekleştirebileceği eylemleri yönetmek için izinleri yapılandırabilirsiniz. Şu anda `edit`, `bash` ve `webfetch` araçlarının izinleri şu şekilde yapılandırılabilir:
- `"ask"` — Aracı çalıştırmadan önce onay iste
- `"allow"` — Onay olmadan tüm işlemlere izin ver
- `"deny"` — Aracı devre dışı bırakır
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
}
}
```
Bu izinleri aracı başına geçersiz kılabilirsiniz.
```json title="opencode.json" {3-5,8-10}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny"
},
"agent": {
"build": {
"permission": {
"edit": "ask"
}
}
}
}
```
İzinleri Markdown aracılarında da ayarlayabilirsiniz.
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash:
"*": ask
"git diff": allow
"git log*": allow
"grep *": allow
webfetch: deny
---
Only analyze code and suggest changes.
```
Belirli bash komutları için izinleri ayarlayabilirsiniz.
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git push": "ask",
"grep *": "allow"
}
}
}
}
}
```
Bu küresel bir desen alabilir.
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"git *": "ask"
}
}
}
}
}
```
Ayrıca tüm komutların izinlerini yönetmek için `*` joker karakterini de kullanabilirsiniz.
Son eşleşen kural öncelikli olduğundan, `*` joker karakterini ilk sıraya ve belirli kuralları sonraya koyun.
```json title="opencode.json" {8}
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git status *": "allow"
}
}
}
}
}
```
[Learn more about permissions](/docs/permissions).
---
### Mode
Aracının modunu `mode` yapılandırmasıyla kontrol edin. `mode` seçeneği aracının nasıl kullanılabileceğini belirlemek için kullanılır.
```json title="opencode.json"
{
"agent": {
"review": {
"mode": "subagent"
}
}
}
```
`mode` seçeneği `primary`, `subagent` veya `all` olarak ayarlanabilir. `mode` belirtilmezse varsayılan olarak `all` olur.
---
### Gizlenmiş
`@` otomatik tamamlama menüsünden bir alt aracıyı `hidden: true` ile gizleyin. Yalnızca diğer aracılar tarafından Görev aracı aracılığıyla programlı olarak çağrılması gereken dahili alt aracılar için kullanışlıdır.
```json title="opencode.json"
{
"agent": {
"internal-helper": {
"mode": "subagent",
"hidden": true
}
}
}
```
Bu yalnızca otomatik menüdeki kullanıcının görünümlerinin etkileri. İzinler izin vermesine, gizli araçlar modeli tarafından Görev aracı aracılığıyla çağrılmaya devam edilebilir.
:::note
Yalnızca `mode: subagent` acenteleri için geçerlidir.
:::
---
### Task permissions
`permission.task` ile bir aracının Görev aracı aracılığıyla hangi alt aracıları çağırabileceğini kontrol edin. Esnek eşleştirme için küresel desenleri kullanır.
```json title="opencode.json"
{
"agent": {
"orchestrator": {
"mode": "primary",
"permission": {
"task": {
"*": "deny",
"orchestrator-*": "allow",
"code-reviewer": "ask"
}
}
}
}
}
```
`deny` olarak ayarlandığında, alt aracı Görev aracııklamasından tamamen kaldırılır, böylece model onu çağırmaya çalışmaz.
:::tip
Kurallar sırayla değerlendirilir ve **son eşleşen kural kazanır**. Yukarıdaki örnekte `orchestrator-planner`, hem `*` (reddet) hem de `orchestrator-*` (izin ver) ile eşleşir, ancak `orchestrator-*`, `*`'den sonra geldiğinden sonuç `allow` olur.
:::
:::tip
Kullanıcılar, aracının görev izinleri bunu reddetse bile, her zaman herhangi bir alt aracıyı `@` otomatik tamamlama menüsü aracılığıyla doğrudan çağırabilir.
:::
---
### Renk
Aracının kullanıcı arayüzündeki görsel görünümünü `color` seçeneğiyle özelleştirin. Bu, aracının arayüzde nasıl göründüğünü etkiler.
cebeli bir onaltılık renk (ör. `#FF5733`) veya tema rengini kullanın: `primary`, `secondary`, `accent`, `success`, `warning`, `error`, `info`.
```json title="opencode.json"
{
"agent": {
"creative": {
"color": "#ff6b6b"
},
"code-reviewer": {
"color": "accent"
}
}
}
```
---
### Top P
`top_p` seçeneğiyle yanıt çeşitliliğini kontrol edin. Rastgeleliği kontrol etmek için sıcaklığa alternatif.
```json title="opencode.json"
{
"agent": {
"brainstorm": {
"top_p": 0.9
}
}
}
```
Değerler 0,0 ile 1,0 arasında değişir. Düşük değerler daha odaklıdır, yüksek değerler ise daha çeşitlidir.
---
### Ek olarak
Temsilci yapılandırmanızdaki düzenlemeleriniz diğer seçenekler, model seçenekleri olarak **doğrudan sağlayıcıya** iletilecektir. Bu, sağlayıcıya özgü özelliklerin ve serbest bırakılmasını sağlar.
Örneğin OpenAI'nin akıl yürütme modelleriyle akıl yürütme çabasını kontrol edebilirsiniz:
```json title="opencode.json" {6,7}
{
"agent": {
"deep-thinker": {
"description": "Agent that uses high reasoning effort for complex problems",
"model": "openai/gpt-5",
"reasoningEffort": "high",
"textVerbosity": "low"
}
}
}
```
Bu ek seçenekler modele ve sağlayıcıya özeldir. Kullanılabilir parametreler için sağlayıcınızın belgelerine bakın.
:::tip
Mevcut modellerin listesini görmek için `opencode models` komutunu çalıştırın.
:::
---
## Temsilci oluştur
Aşağıdaki komutu kullanarak yeni aracılar oluşturabilirsiniz:
```bash
opencode agent create
```
Bu etkileşimli komut şunları sağlayacaktır:
1. Temsilciyi nereye kaydedeceğinizi sorun; küresel veya projeye özel.
2. Temsilcinin ne yapması gerektiğinin açıklaması.
3. Uygun bir sistem istemi ve tanımlayıcı oluşturun.
4. Aracının hangi araçlara erişebileceğini seçmenize izin verin.
5. Son olarak aracı yapılandırmasıyla bir işaretleme dosyası oluşturun.
---
## Kullanım durumları
Farklı aracılara yönelik bazı yaygın kullanım durumları aşağıda verilmiştir.
- **Yapı aracısı**: Tüm araçların etkinleştirildiği tam geliştirme çalışması
- **Plan aracısı**: Değişiklik yapmadan analiz ve planlama
- **İnceleme aracısı**: Salt okunur erişim ve belgeleme araçlarıyla kod incelemesi
- **Hata ayıklama aracısı**: Bash ve okuma araçları etkinken araştırmaya odaklanmıştır
- **Dokümanlar aracısı**: Dosya işlemleriyle ancak sistem komutları olmadan belge yazma
---
## Examples
Yararlı bulabileceğiniz bazı örnek aracıları burada bulabilirsiniz.
:::tip
Paylaşmak istediğiniz bir temsilciniz var mı? [Submit a PR](https://github.com/anomalyco/opencode).
:::
---
### Dokümantasyon temsilcisi
```markdown title="~/.config/opencode/agents/docs-writer.md"
---
description: Writes and maintains project documentation
mode: subagent
tools:
bash: false
---
You are a technical writer. Create clear, comprehensive documentation.
Focus on:
- Clear explanations
- Proper structure
- Code examples
- User-friendly language
```
---
### Security auditor
```markdown title="~/.config/opencode/agents/security-auditor.md"
---
description: Performs security audits and identifies vulnerabilities
mode: subagent
tools:
write: false
edit: false
---
You are a security expert. Focus on identifying potential security issues.
Look for:
- Input validation vulnerabilities
- Authentication and authorization flaws
- Data exposure risks
- Dependency vulnerabilities
- Configuration security issues
```

View File

@@ -0,0 +1,601 @@
---
title: CLI
description: OpenCode CLI seçenekleri ve komutları.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode CLI herhangi bir argüman olmadan çalıştırıldığında varsayılan olarak [TUI](/docs/tui)'yi başlatır.
```bash
opencode
```
Ancak bu sayfada belgelendiği gibi komutları da kabul eder. Bu, OpenCode ile programlı olarak etkileşim kurmanıza olanak tanır.
```bash
opencode run "Explain how closures work in JavaScript"
```
---
### tui
OpenCode terminali kullanıcı arayüzünü başlatın.
```bash
opencode [project]
```
#### Flags
| Bayrak | Kısa | Açıklama |
| ------------ | ---- | ------------------------------------------- |
| `--continue` | `-c` | Son oturuma devam et |
| `--session` | `-s` | Devam edecek oturum kimliği |
| `--prompt` | | Kullanma istemi |
| `--model` | `-m` | provider/model biçiminde kullanılacak model |
| `--agent` | | Kullanılacak temsilci |
| `--port` | | Port to listen on |
| `--hostname` | | Hostname to listen on |
---
## Komutlar
OpenCode CLI ayrıca aşağıdaki komutlara da sahiptir.
---
### agent
OpenCode için aracıları yönetin.
```bash
opencode agent [command]
```
---
### attach
`serve` veya `web` komutlarıyla başlatılan, halihazırda çalışan bir OpenCode arka uç sunucusuna bir terminal ekleyin.
```bash
opencode attach [url]
```
Bu, TUI öğesinin uzak bir OpenCode arka ucuyla kullanılmasına olanak tanır. Örneğin:
```bash
# Start the backend server for web/mobile access
opencode web --port 4096 --hostname 0.0.0.0
# In another terminal, attach the TUI to the running backend
opencode attach http://10.20.30.40:4096
```
#### Bayraklar
| Bayrak | Kısa | Tanım |
| ----------- | ---- | ------------------------------------ |
| `--dir` | | TUI'yi başlatmak için çalışma dizini |
| `--session` | `-s` | Devam edecek oturum açma bilgileri |
---
#### yaratmak
Özel yapılandırmaya sahip yeni bir aracı oluşturun.
```bash
opencode agent create
```
Bu komut, özel sistem istemi ve araç yapılandırmasıyla yeni bir aracı oluşturma konusunda size yol gösterecektir.
---
#### liste
Mevcut tüm acenteleri listeleyin.
```bash
opencode agent list
```
---
### auth
Sağlayıcılar için kimlik bilgilerini ve oturum açmayı yönetme komutu.
```bash
opencode auth [command]
```
---
#### login
OpenCode, [Models.dev](https://models.dev) adresindeki sağlayıcı listesi tarafından desteklenmektedir, dolayısıyla kullanmak istediğiniz herhangi bir sağlayıcı için API anahtarlarını ayarlamak üzere `opencode auth login` kullanabilirsiniz. Bu `~/.local/share/opencode/auth.json`'de saklanıyor.
```bash
opencode auth login
```
OpenCode başlatıldığında, sağlayıcıları kimlik bilgileri dosyasından yükler. Ortamlarınızda tanımlanmış herhangi bir anahtar veya projenizde bir `.env` dosyası varsa.
---
#### liste
Kimlik bilgileri dosyasında depolanan tüm kimliği doğrulanmış sağlayıcıları listeler.
```bash
opencode auth list
```
Veya kısa versiyonu.
```bash
opencode auth ls
```
---
#### logout
Bir sağlayıcıyı kimlik bilgileri dosyasından temizleyerek oturumunuzu kapatır.
```bash
opencode auth logout
```
---
### github
Depo otomasyonu için GitHub aracısını yönetin.
```bash
opencode github [command]
```
---
#### düzenlemek
GitHub aracısını deponuza yükleyin.
```bash
opencode github install
```
Bu, gerekli GitHub Eylemlerinin iş ayrıntılandırma ayarlarını ve süreç sürecini boyut boyunca gösterir. [Learn more](/docs/github).
---
#### koşmak
GitHub aracısını çalıştırın. Bu genellikle GitHub Eylemlerinde kullanılır.
```bash
opencode github run
```
##### Flags
| Bayrak | Açıklama |
| --------- | ------------------------------------------- |
| `--event` | Aracıyı çalıştırmak için GitHub sahte olayı |
| `--token` | GitHub personal access token |
---
### mcp
Model Bağlam Protokolü sunucularını yönetin.
```bash
opencode mcp [command]
```
---
#### add
Yapılandırmanıza bir MCP sunucusu ekleyin.
```bash
opencode mcp add
```
Bu komut, yerel veya uzak bir MCP sunucusu ekleme konusunda size yol gösterecektir.
---
#### liste
Yapılandırılmış tüm MCP sunucularını ve bağlantı durumlarını listeleyin.
```bash
opencode mcp list
```
Veya kısa versiyonunu kullanın.
```bash
opencode mcp ls
```
---
#### auth
OAuth'un etkin olduğu bir MCP sunucusuyla kimlik doğrulaması yapın.
```bash
opencode mcp auth [name]
```
Sunucu adı belirtmezseniz mevcut OAuth özellikli sunucular arasından seçim yapmanız istenir.
Ayrıca OAuth özellikli sunucuları ve bunların kimlik doğrulama durumlarını da listeleyebilirsiniz.
```bash
opencode mcp auth list
```
Veya kısa versiyonunu kullanın.
```bash
opencode mcp auth ls
```
---
#### logout
MCP sunucusu için OAuth kimlik bilgilerini kaldırın.
```bash
opencode mcp logout [name]
```
---
#### hata ayıklama
MCP sunucusu için OAuth bağlantı sorunlarının hatalarını ayıklayın.
```bash
opencode mcp debug <name>
```
---
### models
Yapılandırılmış sağlayıcıların tüm mevcut modellerini listeleyin.
```bash
opencode models [provider]
```
Bu komut, sağlayıcılarınızda bulunan tüm modeller `provider/model` oluşturulan görüntüler.
Bu, [your config](/docs/config/)'da kullanılacak tam modelin adını bulmak için kullanışlıdır.
Modelleri bu sağlayıcıya göre filtrelemek için isteğe bağlı olarak bir sağlayıcı kimliğini iletebilirsiniz.
```bash
opencode models anthropic
```
#### Bayraklar
| Bayrak | Tanım |
| ----------- | --------------------------------------------------------------------------- |
| `--refresh` | Modeller.dev'den model önbelleğini yenileyin |
| `--verbose` | Daha ayrıntılı model çıktısı kullanın (maliyetler gibi meta veriler içerir) |
Önbelleğe alınan model listesini güncellemek için `--refresh` bayrağını kullanın. Bu, bir sağlayıcıya yeni modeller eklendiğinde ve bunları OpenCode'da görmek istediğinizde kullanışlıdır.
```bash
opencode models --refresh
```
---
### koşmak
Doğrudan bir istem ileterek açık kodu etkileşimli olmayan modda çalıştırın.
```bash
opencode run [message..]
```
Bu, komut dosyası oluşturma, otomasyon veya TUI'un tamamını başlatmadan hızlı bir yanıt istediğinizde kullanışlıdır. Örneğin.
```bash "opencode run"
opencode run Explain the use of context in Go
```
Ayrıca, her çalıştırmada MCP sunucusunun soğuk önyükleme sürelerini önlemek için çalışan bir `opencode serve` örneğine de ekleyebilirsiniz:
```bash
# Start a headless server in one terminal
opencode serve
# In another terminal, run commands that attach to it
opencode run --attach http://localhost:4096 "Explain async/await in JavaScript"
```
#### Flags
| Bayrak | Kısa | Açıklama |
| ------------ | ---- | --------------------------------------------------------------------------------- |
| `--command` | | Çalıştırılacak komut, args için mesajı kullanın |
| `--continue` | `-c` | Son oturuma devam et |
| `--session` | `-s` | Devam edecek oturum kimliği |
| `--share` | | Oturumu paylaşın |
| `--model` | `-m` | provider/model biçiminde kullanılacak model |
| `--agent` | | Kullanılacak temsilci |
| `--file` | `-f` | Mesaja eklenecek dosya(lar) |
| `--format` | | Biçim: varsayılan (biçimlendirilmiş) veya json (ham JSON olayları) |
| `--title` | | Oturumun başlığı (değer sağlanmazsa kısaltılmış bilgi istemi kullanılır) |
| `--attach` | | Çalışan bir açık kod sunucusuna ekleyin (ör. http://localhost:4096) |
| `--port` | | Yerel sunucunun bağlantı noktası (varsayılan olarak rastgele bağlantı noktasıdır) |
---
### serve
API erişimi için başsız bir OpenCode tarayıcısı başlatılır. Tam HTTP arayüzü için [server docs](/docs/server)'e göz atın.
```bash
opencode serve
```
Bu, TUI arayüzü olmadan açık kod işlevselliğine API erişimi sağlayan bir HTTP sunucusunu başlatır. HTTP temel kimlik doğrulamasını etkinleştirmek için `OPENCODE_SERVER_PASSWORD` öğesini ayarlayın (kullanıcı adı varsayılan olarak `opencode` şeklindedir).
#### Bayraklar
| Bayrak | Tanım |
| ------------ | ------------------------------------------ |
| `--port` | Dinlenecek bağlantı noktası |
| `--hostname` | Dinlenecek ana bilgisayar adı |
| `--mdns` | mDNS bulmayı etkinleştir |
| `--cors` | CORS'a izin verecek ek tarayıcı kaynakları |
---
### oturum
Manage OpenCode sessions.
```bash
opencode session [command]
```
---
#### liste
Tüm OpenCode oturumlarını listeleyin.
```bash
opencode session list
```
##### Bayraklar
| Bayrak | Kısa | Tanım |
| ------------- | ---- | -------------------------------------- |
| `--max-count` | `-n` | En son N oturumla sınırla |
| `--format` | | Çıkış formatı: tablo veya json (tablo) |
---
### stats
OpenCode oturumlarınız için belirteç kullanımı ve maliyet istatistiklerini gösterin.
```bash
opencode stats
```
#### Flags
| Bayrak | Açıklama |
| ----------- | ----------------------------------------------------------------------------------------------------------- |
| `--days` | Son N güne ait istatistikleri göster (tüm zamanlar) |
| `--tools` | Number of tools to show (all) |
| `--models` | Model kullanım dökümünü göster (varsayılan olarak gizlidir). En üstteki N'yi göstermek için bir sayı iletin |
| `--project` | Filter by project (all projects, empty string: current project) |
---
### export
Oturum verilerini JSON olarak dışa aktarın.
```bash
opencode export [sessionID]
```
Bir oturum kimliği sağlamazsanız mevcut oturumlar arasından seçim yapmanız istenir.
---
### import
Bir JSON dosyasından veya OpenCode paylaşımından URL oturum verilerini içe aktarın.
```bash
opencode import <file>
```
Yerel bir dosyadan veya OpenCode paylaşımından (URL) içe aktarabilirsiniz.
```bash
opencode import session.json
opencode import https://opncd.ai/s/abc123
```
---
### web
Web arayüzüyle başsız bir OpenCode sunucusu başlatın.
```bash
opencode web
```
Bu, bir HTTP sunucusunu başlatır ve bir web arayüzü aracılığıyla OpenCode'a erişmek için bir web tarayıcısı açar. HTTP temel kimlik doğrulamasını etkinleştirmek için `OPENCODE_SERVER_PASSWORD` öğesini ayarlayın (kullanıcı adı varsayılan olarak `opencode` şeklindedir).
#### Bayraklar
| Bayrak | Tanım |
| ------------ | ------------------------------------------ |
| `--port` | Dinlenecek bağlantı noktası |
| `--hostname` | Dinlenecek ana bilgisayar adı |
| `--mdns` | mDNS bulmayı etkinleştir |
| `--cors` | CORS'a izin verecek ek tarayıcı kaynakları |
---
### acp
Bir ACP (Ajan İstemci Protokolü) sunucusu başlatın.
```bash
opencode acp
```
Bu komut, nd-JSON kullanarak stdin/stdout aracılığıyla iletişim kuran bir ACP sunucusunu başlatır.
#### Flags
| Bayrak | Açıklama |
| ------------ | --------------------- |
| `--cwd` | Çalışma dizini |
| `--port` | Port to listen on |
| `--hostname` | Hostname to listen on |
---
### uninstall
OpenCode'u kaldırın ve ilgili tüm dosyaları kaldırın.
```bash
opencode uninstall
```
#### Bayraklar
| Bayrak | Kısa | Tanım |
| --------------- | ---- | ----------------------------------------------- |
| `--keep-config` | `-c` | Yapılandırma dosyalarını sakla |
| `--keep-data` | `-d` | Oturum verilerini ve anlık görüntüleri saklayın |
| `--dry-run` | | Nelerin kaldırılmadan kaldırılacağı göster |
| `--force` | `-f` | Onay istemlerini atla |
---
### upgrade
ık kodu en son sürüme veya belirli bir sürüme günceller.
```bash
opencode upgrade [target]
```
En son sürüme yükseltmek için.
```bash
opencode upgrade
```
To upgrade to a specific version.
```bash
opencode upgrade v0.1.48
```
#### Flags
| Bayrak | Kısa | Açıklama |
| ---------- | ---- | ----------------------------------------------------------- |
| `--method` | `-m` | Kullanılan kurulum yöntemi; bukle, npm, npm, topuz, demleme |
---
## Küresel Bayraklar
CLI açık kodu aşağıdaki genel bayrakları alır.
| Bayrak | Kısa | Tanım |
| -------------- | ---- | ---------------------------------------- |
| `--help` | `-h` | Yardımı görüntüle |
| `--version` | `-v` | Sürüm numarasını yazdır |
| `--print-logs` | | Günlükleri stderr'e yazdır |
| `--log-level` | | Günlük düzeyi (DEBUG, INFO, WARN, ERROR) |
---
## Environment variables
OpenCode ortam değişkenleri kullanılarak yapılandırılabilir.
| Değişken | Tür | Açıklama |
| ------------------------------------- | ------- | --------------------------------------------------------------------------- |
| `OPENCODE_AUTO_SHARE` | boole | Oturumları otomatik olarak paylaş |
| `OPENCODE_GIT_BASH_PATH` | dize | Windows'ta yürütülebilir Git Bash'in Yolu |
| `OPENCODE_CONFIG` | dize | Yapılandırma dosyasının yolu |
| `OPENCODE_CONFIG_DIR` | dize | Yapılandırma dizinine giden yol |
| `OPENCODE_CONFIG_CONTENT` | string | Inline json config content |
| `OPENCODE_DISABLE_AUTOUPDATE` | boolean | Disable automatic update checks |
| `OPENCODE_DISABLE_PRUNE` | boolean | Disable pruning of old data |
| `OPENCODE_DISABLE_TERMINAL_TITLE` | boole | Otomatik terminal başlığı güncellemelerini devre dışı bırakın |
| `OPENCODE_PERMISSION` | string | Inlined json permissions config |
| `OPENCODE_DISABLE_DEFAULT_PLUGINS` | boole | Varsayılan eklentileri devre dışı bırakın |
| `OPENCODE_DISABLE_LSP_DOWNLOAD` | boole | Otomatik LSP sunucu indirmelerini devre dışı bırakın |
| `OPENCODE_ENABLE_EXPERIMENTAL_MODELS` | boolean | Enable experimental models |
| `OPENCODE_DISABLE_AUTOCOMPACT` | boolean | Disable automatic context compaction |
| `OPENCODE_DISABLE_CLAUDE_CODE` | boole | `.claude`'den okumayı devre dışı bırak (istem + beceriler) |
| `OPENCODE_DISABLE_CLAUDE_CODE_PROMPT` | boolean | Disable reading `~/.claude/CLAUDE.md` |
| `OPENCODE_DISABLE_CLAUDE_CODE_SKILLS` | boolean | Disable loading `.claude/skills` |
| `OPENCODE_DISABLE_MODELS_FETCH` | boole | Uzak kaynaklardan model getirmeyi devre dışı bırakın |
| `OPENCODE_FAKE_VCS` | dize | Test amaçlı sahte VCS sağlayıcısı |
| `OPENCODE_DISABLE_FILETIME_CHECK` | boole | Optimizasyon için dosya süresi kontrolünü devre dışı bırakın |
| `OPENCODE_CLIENT` | string | Client identifier (defaults to `cli`) |
| `OPENCODE_ENABLE_EXA` | boolean | Enable Exa web search tools |
| `OPENCODE_SERVER_PASSWORD` | dize | `serve`/`web` için temel kimlik doğrulamayı etkinleştirin |
| `OPENCODE_SERVER_USERNAME` | dize | Temel kimlik doğrulama kullanıcı adını geçersiz kıl (varsayılan `opencode`) |
| `OPENCODE_MODELS_URL` | dize | Model yapılandırmasını almak için özel URL |
---
### Deneysel
Bu ortam değişkenleri değişebilecek veya kaldırılabilecek deneysel özellikleri etkinleştirir.
| Değişken | Tip | Tanım |
| ----------------------------------------------- | ------- | ------------------------------------------------------- |
| `OPENCODE_EXPERIMENTAL` | boolean | Tüm deneysel özellikleri etkinleştir |
| `OPENCODE_EXPERIMENTAL_ICON_DISCOVERY` | boolean | Simge bulmayı etkinleştir |
| `OPENCODE_EXPERIMENTAL_DISABLE_COPY_ON_SELECT` | boolean | TUI'da seçim yapıldığında kopyalamayı devre dışı bırak |
| `OPENCODE_EXPERIMENTAL_BASH_DEFAULT_TIMEOUT_MS` | sayı | MS cinsinden bash komutları için varsayılan zaman aşımı |
| `OPENCODE_EXPERIMENTAL_OUTPUT_TOKEN_MAX` | sayı | LLM yanıtları için maksimum çıktı belirteçleri |
| `OPENCODE_EXPERIMENTAL_FILEWATCHER` | boolean | Tüm dizin için dosya izleyiciyi etkinleştir |
| `OPENCODE_EXPERIMENTAL_OXFMT` | boolean | Oxfmt biçimlendiriciyi etkinleştir |
| `OPENCODE_EXPERIMENTAL_LSP_TOOL` | boolean | Deneysel LSP aracını etkinleştir |
| `OPENCODE_EXPERIMENTAL_DISABLE_FILEWATCHER` | boolean | Dosya izleyiciyi devre dışı bırak |
| `OPENCODE_EXPERIMENTAL_EXA` | boolean | Deneysel Exa özelliklerini etkinleştirin |
| `OPENCODE_EXPERIMENTAL_LSP_TY` | boolean | Deneysel LSP tür denetimini etkinleştir |
| `OPENCODE_EXPERIMENTAL_MARKDOWN` | boolean | Deneysel işaretleme özelliklerini etkinleştir |
| `OPENCODE_EXPERIMENTAL_PLAN_MODE` | boolean | Plan modunu etkinleştir |

View File

@@ -0,0 +1,323 @@
---
title: Komutlar
description: Tekrarlanan görevler için özel komutlar oluşturulur.
---
Özel komutlar, söz konusu komut TUI'da yürütüldüğünde çalıştırmak istediğiniz istemi belirtmenize olanak tanır.
```bash frame="none"
/my-command
```
Özel komutlar, `/init`, `/undo`, `/redo`, `/share`, `/help` gibi komutlara ek olarak sunulur. [Learn more](/docs/tui#commands).
---
## Komut dosyaları oluşturun
Özel komutları tanımlamak için `commands/` dizininde işaretleme dosyaları oluşturun.
`.opencode/commands/test.md` oluştur:
```md title=".opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
Ön madde komut özelliklerini tanımlar. İçerik şablon haline gelir.
`/` ve ardından komut adını yazarak komutu kullanın.
```bash frame="none"
"/test"
```
---
## Yapılandır
OpenCode işlemleri aracılığıyla veya `commands/` dizininde işaretleme dosyalarının oluşturulması özel komutlar ile yapılabilir.
---
### JSON
OpenCode [config](/docs/config)'deki `command` seçeneğini kullanın:
```json title="opencode.jsonc" {4-12}
{
"$schema": "https://opencode.ai/config.json",
"command": {
// This becomes the name of the command
"test": {
// This is the prompt that will be sent to the LLM
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
// This is shown as the description in the TUI
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
Artık bu komutu TUI'da çalıştırabilirsiniz:
```bash frame="none"
/test
```
---
### İndirim
Markdown dosyalarını kullanarak komutları da tanımlayabilirsiniz. Bunları şuraya yerleştirin:
- Küresel: `~/.config/opencode/commands/`
- Proje başına: `.opencode/commands/`
```markdown title="~/.config/opencode/commands/test.md"
---
description: Run tests with coverage
agent: build
model: anthropic/claude-3-5-sonnet-20241022
---
Run the full test suite with coverage report and show any failures.
Focus on the failing tests and suggest fixes.
```
Markdown dosyasının adı komut adı olur. Örneğin, `test.md` şunu sağlar:
sen koşuyorsun:
```bash frame="none"
/test
```
---
## İstem yapılandırması
Özel komut istemleri birçok özel yer tutucuyu ve sözdizimini destekler.
---
### Argümanlar
`$ARGUMENTS` yer tutucusunu kullanarak komutlara argümanları iletin.
```md title=".opencode/commands/component.md"
---
description: Create a new component
---
Create a new React component named $ARGUMENTS with TypeScript support.
Include proper typing and basic structure.
```
Komutu bağımsız değişkenlerle çalıştırın:
```bash frame="none"
/component Button
```
Ve `$ARGUMENTS`, `Button` ile değiştirilecektir.
Konumsal parametreleri kullanarak bağımsız değişkenlere de erişebilirsiniz:
- `$1` - İlk argüman
- `$2` - İkinci argüman
- `$3` - Üçüncü argüman
- Ve benzeri...
Örneğin:
```md title=".opencode/commands/create-file.md"
---
description: Create a new file with content
---
Create a file named $1 in the directory $2
with the following content: $3
```
Komutu çalıştırın:
```bash frame="none"
/create-file config.json src "{ \"key\": \"value\" }"
```
Bu şunun yerini alır:
- `$1` ile `config.json`
- `$2` ile `src`
- `$3` ile `{ "key": "value" }`
---
### Shell output
İsteminize [bash command](/docs/tui#bash-commands) çıktısını enjekte etmek için \__!`command`_ kullanın.
Örneğin, test kapsamını analiz eden özel bir komut oluşturmak için:
```md title=".opencode/commands/analyze-coverage.md"
---
description: Analyze test coverage
---
Here are the current test results:
!`npm test`
Based on these results, suggest improvements to increase coverage.
```
Or to review recent changes:
```md title=".opencode/commands/review-changes.md"
---
description: Review recent changes
---
Recent git commits:
!`git log --oneline -10`
Review these changes and suggest any improvements.
```
Komutlar projenizin kök dizininde çalışır ve çıktıları istemin bir parçası olur.
---
### Dosya referansları
Komutunuza `@` ve ardından dosya adını kullanarak dosyaları ekleyin.
```md title=".opencode/commands/review-component.md"
---
description: Review component
---
Review the component in @src/components/Button.tsx.
Check for performance issues and suggest improvements.
```
Dosya içeriği otomatik olarak istemde yer alır.
---
## Options
Yapılandırma seçeneklerine ayrıntılı olarak bakalım.
---
### Şablon
`template` seçeneği, komut yürütüldüğünde LLM'ye gönderilecek olan istemi tanımlar.
```json title="opencode.json"
{
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes."
}
}
}
```
Bu **gerekli** bir yapılandırma seçeneğidir.
---
### Tanım
Komutun ne yaptığına ilişkin kısa bir açıklama sağlamak için `description` seçeneğini kullanın.
```json title="opencode.json"
{
"command": {
"test": {
"description": "Run tests with coverage"
}
}
}
```
Bu, komutu yazdığınızda TUI içindeki açıklama olarak gösterilir.
---
### Ajan
İsteğe bağlı olarak bu komutu hangi [agent](/docs/agents)'nin yürütmesi gerektiğini belirtmek için `agent` yapılandırmasını kullanın.
Bu bir [subagent](/docs/agents/#subagents) ise, komut varsayılan olarak bir alt aracı çağrısını tetikleyecektir.
Bu davranışı devre dışı bırakmak için `subtask` öğesini `false` olarak ayarlayın.
```json title="opencode.json"
{
"command": {
"review": {
"agent": "plan"
}
}
}
```
Bu **isteğe bağlı** bir yapılandırma seçeneğidir. Belirtilmemişse, varsayılan olarak mevcut temsilciniz kullanılır.
---
### Subtask
Komutu bir [subagent](/docs/agents/#subagents) çağrısını tetiklemeye zorlamak için `subtask` boolean'ını kullanın.
Bu, komutun birincil bağlamınızı kirletmemesini ve aracıyı bir alt aracı olarak davranmaya **zorlamasını** istiyorsanız kullanışlıdır.
`mode`, [agent](/docs/agents) yapılandırmasında `primary` olarak ayarlanmış olsa bile.
```json title="opencode.json"
{
"command": {
"analyze": {
"subtask": true
}
}
}
```
Bu **isteğe bağlı** bir yapılandırma seçeneğidir.
---
### Modeli
Bu parçanın varsayılan kodu geçersiz için `model` kontrolünü kullanın.
```json title="opencode.json"
{
"command": {
"analyze": {
"model": "anthropic/claude-3-5-sonnet-20241022"
}
}
}
```
Bu **isteğe bağlı** bir yapılandırma seçeneğidir.
---
## Built-in
opencode, `/init`, `/undo`, `/redo`, `/share`, `/help` gibi çeşitli yerleşik komutlar içerir; [learn more](/docs/tui#commands).
:::note
Özel komutlar yerleşik komutları geçersiz kılabilir.
:::
Aynı adda özel bir komut tanımlarsanız yerleşik komutu geçersiz kılar.

View File

@@ -0,0 +1,685 @@
---
title: Yapılandırma
description: OpenCode JSON devresini kullanmıyor.
---
OpenCode'u JSON yapılandırma dosyası kullanarak yapılandırabilirsiniz.
---
## Format
OpenCode hem **JSON** hem de **JSONC** (JSON Yorumlarla birlikte) formatlarını destekler.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
// Theme configuration
"theme": "opencode",
"model": "anthropic/claude-sonnet-4-5",
"autoupdate": true,
}
```
---
## Konumlar
Yapılandırmanızı birkaç farklı konuma yerleştirebilirsiniz ve bunların
farklı öncelik sırası.
:::note
Yapılandırma dosyaları **birleştirilir**, değiştirilmez.
:::
Yapılandırma dosyaları değiştirilmez, birleştirilir. Aşağıdaki yapılandırma konumlarındaki ayarlar birleştirilir. Daha sonraki yapılandırmalar, yalnızca çakışan anahtarlar için önceki yapılandırmaları geçersiz kılar. Tüm yapılandırmalardaki çakışmayan ayarlar korunur.
Örneğin, genel ayarınız `theme: "opencode"` ve `autoupdate: true`'yi ayarlıyorsa ve proje ayarlarınız `model: "anthropic/claude-sonnet-4-5"`'yi ayarlıyorsa, son tork ayarının tümünü dikkate alır.
---
### Precedence order
Yapılandırma kaynakları bu sırayla yüklenir (sonraki kaynaklar öncekileri geçersiz kılar):
1. **Uzaktan yapılandırma** (`.well-known/opencode`'dan) - kurumsal varsayılanlar
2. **Global config** (`~/.config/opencode/opencode.json`) - user preferences
3. **Custom config** (`OPENCODE_CONFIG` env var) - custom overrides
4. **Project config** (`opencode.json` in project) - project-specific settings
5. **`.opencode` dizinleri** - aracılar, komutlar, eklentiler
6. **Inline config** (`OPENCODE_CONFIG_CONTENT` env var) - runtime overrides
Bu, proje yapılandırmalarının genel varsayılanları geçersiz kılabileceği ve genel yapılandırmaların uzak organizasyonel varsayılanları geçersiz kılabileceği anlamına gelir.
:::note
`.opencode` ve `~/.config/opencode` dizinleri alt dizinler için **çoğul adlar** kullanır: `agents/`, `commands/`, `modes/`, `plugins/`, `skills/`, `tools/` ve `themes/`. Tekil adlar (örneğin, `agent/`) da geriye dönük uyumluluk açısından desteklenir.
:::
---
### Uzak
Kuruluşlar, `.well-known/opencode` uç noktası aracılığıyla varsayılan yapılandırmayı sağlayabilir. Bu, onu destekleyen bir sağlayıcıyla kimlik doğrulaması yaptığınızda otomatik olarak alınır.
Remote config ilk olarak yüklenir ve temel katman görevi görür. Diğer tüm yapılandırma kaynakları (genel, proje) bu varsayılanları geçersiz kılabilir.
Örneğin, kuruluşunuz varsayılan olarak devre dışı bırakılan MCP sunucuları sağlıyorsa:
```json title="Remote config from .well-known/opencode"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": false
}
}
}
```
Yerel yapılandırmanızda belirli sunucuları etkinleştirebilirsiniz:
```json title="opencode.json"
{
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
---
### Global
Global OpenCode yapılandırmanızı `~/.config/opencode/opencode.json` içine yerleştirin. Temalar, sağlayıcılar veya tuş atamaları gibi kullanıcı çapındaki tercihler için genel yapılandırmayı kullanın.
Global config overrides remote organizational defaults.
---
### Proje başına
Proje kökünüze `opencode.json` ekleyin. Proje yapılandırması, standart yapılandırma dosyaları arasında en yüksek önceliğe sahiptir; hem genel hem de uzak yapılandırmaları geçersiz kılar.
:::tip
Projeye özel yapılandırmayı projenizin köküne yerleştirin.
:::
OpenCode başlatıldığında geçerli dizinde bir yapılandırma dosyası arar veya en yakın Git dizinine gider.
Bunun Git'te kontrol edilmesi de güvenlidir ve global olanla aynı şemayı kullanır.
---
### Özel yol
`OPENCODE_CONFIG` ortam değişkenini kullanarak özel bir yapılandırma dosyası yolu belirtin.
```bash
export OPENCODE_CONFIG=/path/to/my/custom-config.json
opencode run "Hello world"
```
Özel yapılandırma genel ve proje yapılandırmaları arasında öncelik sırasına göre yüklenir.
---
### Özel dizin
`OPENCODE_CONFIG_DIR` kullanarak özel bir yapılandırma dizini belirtin
ortam değişkeni. Bu dizin aracılar, komutlar için aranacaktır.
modlar ve eklentiler tıpkı standart `.opencode` dizini gibi olmalıdır ve
aynı yapıyı takip edin.
```bash
export OPENCODE_CONFIG_DIR=/path/to/my/config-directory
opencode run "Hello world"
```
Özel dizin, genel yapılandırma ve `.opencode` dizinlerinden sonra yüklenir, böylece bunların ayarlarını **geçersiz kılabilir**.
---
## Schema
Yapılandırma dosyası [**`opencode.ai/config.json`**](https://opencode.ai/config.json)'da tanımlanan bir şemaya sahiptir.
Editörünüz şemaya göre doğrulama ve otomatik tamamlama yapabilmelidir.
---
### TUI
TUI'ye özgü ayarları `tui` seçeneği aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
},
"diff_style": "auto"
}
}
```
Mevcut seçenekler:
- `scroll_acceleration.enabled` - MacOS tarzı kaydırma hızlandırmayı etkinleştirin. **`scroll_speed`'ye göre önceliklidir.**
- `scroll_speed` - Özel kaydırma hızı çarpanı (varsayılan: `3`, minimum: `1`). `scroll_acceleration.enabled` `true` ise dikkate alınmaz.
- `diff_style` - Fark oluşturmayı kontrol edin. `"auto"` terminal genişliğine uyum sağlar, `"stacked"` her zaman tek sütunu gösterir.
[Learn more about using the TUI here](/docs/tui).
---
### Sunucu
`opencode serve` ve `opencode web` komutları için sunucu ayarlarını `server` seçeneği aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"mdnsDomain": "myproject.local",
"cors": ["http://localhost:5173"]
}
}
```
Mevcut seçenekler:
- `port` - Port to listen on.
- `hostname` - Dinlenecek ana bilgisayar adı. `mdns` etkinleştirildiğinde ve hiçbir ana bilgisayar adı ayarlanmadığında, varsayılan değer `0.0.0.0` olur.
- `mdns` - mDNS hizmet bulmayı etkinleştirin. Bu, ağdaki diğer cihazların OpenCode sunucunuzu keşfetmesine olanak tanır.
- `mdnsDomain` - mDNS hizmeti için özel alan adı. Varsayılan olarak `opencode.local` şeklindedir. Aynı ağda birden fazla örneği çalıştırmak için kullanışlıdır.
- `cors` - Tarayıcı tabanlı bir istemciden HTTP sunucusunu kullanırken CORS'ye izin verecek ek kaynaklar. Değerler tam kaynaklar olmalıdır (şema + ana bilgisayar + isteğe bağlı bağlantı noktası), örneğin `https://app.example.com`.
[Learn more about the server here](/docs/server).
---
### Aletler
Bir LLM'nin kullanabileceği araçları `tools` seçeneği aracılığıyla yönetebilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tools": {
"write": false,
"bash": false
}
}
```
[Learn more about tools here](/docs/tools).
---
### Models
OpenCode yapılandırmanızda kullanmak istediğiniz sağlayıcıları ve modelleri `provider`, `model` ve `small_model` seçenekleri aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {},
"model": "anthropic/claude-sonnet-4-5",
"small_model": "anthropic/claude-haiku-4-5"
}
```
`small_model` seçeneği, başlık oluşturma gibi hafif görevler için ayrı bir model yapılandırır. Varsayılan olarak OpenCode, sağlayıcınızda mevcutsa daha ucuz bir model kullanmaya çalışır, aksi takdirde ana modelinize geri döner.
Sağlayıcı seçenekleri `timeout` ve `setCacheKey` içerebilir:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"anthropic": {
"options": {
"timeout": 600000,
"setCacheKey": true
}
}
}
}
```
- `timeout` - Milisaniye cinsinden istek zaman aşımı (varsayılan: 300000). Devre dışı bırakmak için `false` olarak ayarlayın.
- `setCacheKey` - Belirlenen sağlayıcı için her zaman bir önbellek anahtarının ayarlandığından emin olun.
Ayrıca [local models](/docs/models#local) öğesini de yapılandırabilirsiniz. [Learn more](/docs/models).
---
#### Sağlayıcıya Özel Seçenekler
Bazı sağlayıcılar genel `timeout` ve `apiKey` ayarlarının ötesinde ek yapılandırma seçeneklerini destekler.
##### Amazon Ana Kayası
Amazon Bedrock, AWS'a özgü yapılandırmayı destekler:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"amazon-bedrock": {
"options": {
"region": "us-east-1",
"profile": "my-aws-profile",
"endpoint": "https://bedrock-runtime.us-east-1.vpce-xxxxx.amazonaws.com"
}
}
}
}
```
- `region` - Bedrock için AWS bölgesi (varsayılanı `AWS_REGION` env var veya `us-east-1`'dir)
- `profile` - `~/.aws/credentials`'den AWS adlı profil (varsayılanı `AWS_PROFILE` env var'dır)
- `endpoint` - VPC uç noktaları için özel uç nokta URL. Bu, AWS'e özgü terminolojiyi kullanan genel `baseURL` seçeneğinin takma adıdır. Her ikisi de belirtilirse `endpoint` öncelikli olur.
:::note
Taşıyıcı belirteçleri (`AWS_BEARER_TOKEN_BEDROCK` veya `/connect`) profil tabanlı kimlik doğrulamaya göre önceliklidir. Ayrıntılar için [authentication precedence](/docs/providers#authentication-precedence)'ye bakın.
:::
[Learn more about Amazon Bedrock configuration](/docs/providers#amazon-bedrock).
---
### Themes
OpenCode yapılandırmanızda kullanmak istediğiniz temayı `theme` seçeneği aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"theme": ""
}
```
[Learn more here](/docs/themes).
---
### Temsilciler
`agent` seçeneği aracılığıyla özel görevlere yönelik özel aracıları yapılandırabilirsiniz.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"agent": {
"code-reviewer": {
"description": "Reviews code for best practices and potential issues",
"model": "anthropic/claude-sonnet-4-5",
"prompt": "You are a code reviewer. Focus on security, performance, and maintainability.",
"tools": {
// Disable file modification tools for review-only agent
"write": false,
"edit": false,
},
},
},
}
```
Aracıları ayrıca `~/.config/opencode/agents/` veya `.opencode/agents/` İçindeki etiketleme etiketlerini kullanarak da tanımlayabilirsiniz. [Learn more here](/docs/agents).
---
### Varsayılan temsilci
`default_agent` seçeneğini kullanarak varsayılan aracıyı ayarlayabilirsiniz. Bu, hiçbiri açıkça belirtilmediğinde hangi aracının kullanılacağını belirler.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"default_agent": "plan"
}
```
Varsayılan aracı, birincil aracı olmalıdır (alt aracı değil). Bu, `"build"` veya `"plan"` gibi yerleşik bir aracı ya da tanımladığınız bir [custom agent](/docs/agents) olabilir. Belirtilen aracı mevcut değilse veya bir alt aracı ise, OpenCode bir uyarıyla birlikte `"build"`'ye geri döner.
Bu ayar tüm arayüzler için geçerlidir: TUI, CLI (`opencode run`), masaüstü uygulaması ve GitHub Action.
---
### Paylaşma
[share](/docs/share) özelliği `share` seçeneğini aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "manual"
}
```
Bu şunları gerektirir:
- `"manual"` - Komutlar aracılığıyla manuel paylaşıma izin ver (varsayılan)
- `"auto"` - Yeni konuşmaları otomatik olarak paylaş
- `"disabled"` - Paylaşımı tamamen devre dışı bırak
Varsayılan olarak paylaşım, `/share` yoğunluğu kullanılarak konuşmalarııkça paylaşmanız gereken manuel moda ayarlanmıştır.
---
### Komutlar
`command` seçeneği aracılığıyla tekrarlanan görevler için özel komutlar yapılandırabilirsiniz.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"command": {
"test": {
"template": "Run the full test suite with coverage report and show any failures.\nFocus on the failing tests and suggest fixes.",
"description": "Run tests with coverage",
"agent": "build",
"model": "anthropic/claude-haiku-4-5",
},
"component": {
"template": "Create a new React component named $ARGUMENTS with TypeScript support.\nInclude proper typing and basic structure.",
"description": "Create a new component",
},
},
}
```
Komutları `~/.config/opencode/commands/` veya `.opencode/commands/` içindeki işaretleme dosyalarını kullanarak da tanımlayabilirsiniz. [Learn more here](/docs/commands).
---
### Tuş bağlantıları
Tuş atamalarınızı `keybinds` seçeneği aracılığıyla özelleştirebilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {}
}
```
[Learn more here](/docs/keybinds).
---
### Autoupdate
OpenCode başlatıldığında yeni güncellemeleri otomatik olarak indirecektir. Bunu `autoupdate` seçeneğiyle devre dışı bırakabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"autoupdate": false
}
```
Güncelleme istemiyor ancak yeni bir sürüm mevcut olduğunda bilgilendirilmek istiyorsanız `autoupdate` öğesini `"notify"` olarak ayarlayın.
Bunun yalnızca Homebrew gibi bir paket yöneticisi kullanılarak yüklenmemişse işe yaradığına dikkat edin.
---
### Biçimlendiriciler
Kod formatlayıcılarını `formatter` seçeneği aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
},
"custom-prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
}
}
}
```
[Learn more about formatters here](/docs/formatters).
---
### Permissions
Varsayılan olarak, açık kod açık bir onay gerektirmeden **tüm işlemlere izin verir**. `permission` seçeneğini kullanarak bunu değiştirebilirsiniz.
Örneğin, `edit` ve `bash` araçlarının kullanıcı onayı gerektirdiğinden emin olmak için:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "ask",
"bash": "ask"
}
}
```
[Learn more about permissions here](/docs/permissions).
---
### Sıkıştırma
Bağlam sıkıştırma davranışını `compaction` seçeneği aracılığıyla kontrol edebilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"compaction": {
"auto": true,
"prune": true
}
}
```
- `auto` - Bağlam dolduğunda oturumu otomatik olarak sıkıştırır (varsayılan: `true`).
- `prune` - Belirteçleri kaydetmek için eski araç çıktılarını kaldırın (varsayılan: `true`).
---
### Watcher
Dosya izleyicinin yok sayma kalıplarını `watcher` seçeneği aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"watcher": {
"ignore": ["node_modules/**", "dist/**", ".git/**"]
}
}
```
Desenler glob sözdizimini takip eder. Gürültülü dizinleri dosya izlemenin dışında bırakmak için bunu kullanın.
---
### MCP sunucuları
Kullanmak istediğiniz MCP sunucularını `mcp` seçeneği aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {}
}
```
[Learn more here](/docs/mcp-servers).
---
### Plugins
[Plugins](/docs/plugins) OpenCode'u özel araçlar, kancalar ve entegrasyonlarla genişletin.
Eklenti dosyalarını `.opencode/plugins/` veya `~/.config/opencode/plugins/` içine yerleştirin. Ayrıca eklentileri `plugin` seçeneği aracılığıyla npm'den de yükleyebilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "@my-org/custom-plugin"]
}
```
[Learn more here](/docs/plugins).
---
### Talimatlar
Kullandığınız modele ilişkin talimatları `instructions` seçeneği aracılığıyla yapılandırabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
Bu, talimat dosyalarına giden bir dizi yolu ve glob desenini alır. [Daha fazla bilgi edin
kurallar hakkında burada](/docs/rules).
---
### Disabled providers
`disabled_providers` seçeneği aracılığıyla otomatik olarak yüklenen sağlayıcıları devre dışı bırakabilirsiniz. Bu, belirli sağlayıcıların kimlik bilgileri mevcut olsa bile yüklenmesini engellemek istediğinizde kullanışlıdır.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"disabled_providers": ["openai", "gemini"]
}
```
:::note
`disabled_providers`, `enabled_providers`'ye göre önceliklidir.
:::
`disabled_providers` seçeneği bir dizi sağlayıcı kimliğini kabul eder. Bir sağlayıcı devre dışı bırakıldığında:
- It won't be loaded even if environment variables are set.
- API anahtarları `/connect` komutu aracılığıyla yapılandırılsa bile yüklenmeyecektir.
- Sağlayıcının modelleri, model seçim listesinde görünmez.
---
### Etkin sağlayıcılar
`enabled_providers` seçeneğini kullanarak sağlayıcıların izin verilenler listesini belirtebilirsiniz. Ayarlandığında yalnızca belirtilen sağlayıcılar etkinleştirilecek ve diğerleri göz ardı edilecektir.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"enabled_providers": ["anthropic", "openai"]
}
```
Bu, OpenCode'u tek tek devre dışı bırakmak yerine yalnızca belirli sağlayıcıları kullanacak şekilde kısıtlamak istediğinizde kullanışlıdır.
:::note
`disabled_providers`, `enabled_providers`'ye göre önceliklidir.
:::
Bir sağlayıcı hem `enabled_providers` hem de `disabled_providers`'de görünüyorsa, geriye dönük uyumluluk için `disabled_providers` önceliğe sahiptir.
---
### Experimental
`experimental` anahtarı aktif olarak geliştirilmekte olan seçenekleri içerir.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"experimental": {}
}
```
:::caution
Experimental options are not stable. They may change or be removed without notice.
:::
---
## Değişkenler
Ortam değişkenlerine ve dosya içeriklerine referans vermek için yapılandırma dosyalarınızda değişken değiştirmeyi kullanabilirsiniz.
---
### Env vars
Ortam değişkenlerini değiştirmek için `{env:VARIABLE_NAME}` kullanın:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "{env:OPENCODE_MODEL}",
"provider": {
"anthropic": {
"models": {},
"options": {
"apiKey": "{env:ANTHROPIC_API_KEY}"
}
}
}
}
```
Ortam değişkeni ayarlanmamışsa boş bir dizeyle değiştirilecektir.
---
### Dosyalar
Bir dosyanın biçimini değiştirmek için `{file:path/to/file}` kullanın:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["./custom-instructions.md"],
"provider": {
"openai": {
"options": {
"apiKey": "{file:~/.secrets/openai-key}"
}
}
}
}
```
Dosya yolları şunlar olabilir:
- Yapılandırma dosyası dizinine göre
- Veya `/` veya `~` ile başlayan mutlak yollar
Bunlar aşağıdakiler için faydalıdır:
- API anahtarları gibi hassas verileri ayrı dosyalarda tutmak.
- Yapılandırmanızı karmaşıklaştırmadan büyük talimat dosyaları içerir.
- Birden fazla yapılandırma dosyasında ortak yapılandırma parçacıklarının paylaşılması.

View File

@@ -0,0 +1,170 @@
---
title: Özel Araçlar
description: LLM'un açık kodda çağırabileceği araçları birleştirebilir.
---
Özel araçlar, LLM'un konuşmalar sırasında arayabileceği, oluşturduğunuz işlevlerdir. Açık kodun [built-in tools](/docs/tools) ile birlikte `read`, `write` ve `bash` gibi çalışırlar.
---
## Creating a tool
Araçlar **TypeScript** veya **JavaScript** dosyaları olarak tanımlanır. Ancak araç tanımı **herhangi bir dilde** yazılmış komut dosyalarını çağırabilir; TypeScript veya JavaScript yalnızca araç tanımının kendisi için kullanılır.
---
### Konum
Bunlar tanımlanabilir:
- Yerel olarak bunları projenizin `.opencode/tools/` dizinine yerleştirerek.
- Veya küresel olarak bunları `~/.config/opencode/tools/` içine yerleştirerek.
---
### Structure
Araç oluşturmanın en kolay yolu, tür güvenliği ve doğrulama sağlayan `tool()` yardımcısını kullanmaktır.
```ts title=".opencode/tools/database.ts" {1}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Query the project database",
args: {
query: tool.schema.string().describe("SQL query to execute"),
},
async execute(args) {
// Your database logic here
return `Executed query: ${args.query}`
},
})
```
**dosya adı**, **araç adı** olur. Yukarıdakiler bir `database` aracı oluşturur.
---
#### Dosya başına birden fazla araç
Ayrıca tek bir dosyadan birden fazla aracı dışa aktarabilirsiniz. Her dışa aktarma, **`<filename>_<exportname>`** adıyla **ayrı bir araç** haline gelir:
```ts title=".opencode/tools/math.ts"
import { tool } from "@opencode-ai/plugin"
export const add = tool({
description: "Add two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a + args.b
},
})
export const multiply = tool({
description: "Multiply two numbers",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args) {
return args.a * args.b
},
})
```
Bu iki araç oluşturur: `math_add` ve `math_multiply`.
---
### Arguments
Bağımsız değişken türlerini tanımlamak için yalnızca [Zod](https://zod.dev) olan `tool.schema` öğesini kullanabilirsiniz.
```ts "tool.schema"
args: {
query: tool.schema.string().describe("SQL query to execute")
}
```
Ayrıca [Zod](https://zod.dev) öğesini doğrudan içe aktarabilir ve düz bir nesne döndürebilirsiniz:
```ts {6}
import { z } from "zod"
export default {
description: "Tool description",
args: {
param: z.string().describe("Parameter description"),
},
async execute(args, context) {
// Tool implementation
return "result"
},
}
```
---
### Bağlam
Araçlar geçerli oturumla ilgili bağlamı alır:
```ts title=".opencode/tools/project.ts" {8}
import { tool } from "@opencode-ai/plugin"
export default tool({
description: "Get project information",
args: {},
async execute(args, context) {
// Access context information
const { agent, sessionID, messageID, directory, worktree } = context
return `Agent: ${agent}, Session: ${sessionID}, Message: ${messageID}, Directory: ${directory}, Worktree: ${worktree}`
},
})
```
Oturum çalışma dizisi için `context.directory` kullanın.
Git çalışma ağacı kökü için `context.worktree` kullanın.
---
## Examples
### Write a tool in Python
Araçlarınızı dilediğiniz dilde yazabilirsiniz. İşte Python kullanarak iki sayıyı toplayan bir örnek.
Öncelikle aracı bir Python betiği olarak oluşturun:
```python title=".opencode/tools/add.py"
import sys
a = int(sys.argv[1])
b = int(sys.argv[2])
print(a + b)
```
Ardından onu çağıran araç tanımını oluşturun:
```ts title=".opencode/tools/python-add.ts" {10}
import { tool } from "@opencode-ai/plugin"
import path from "path"
export default tool({
description: "Add two numbers using Python",
args: {
a: tool.schema.number().describe("First number"),
b: tool.schema.number().describe("Second number"),
},
async execute(args, context) {
const script = path.join(context.worktree, ".opencode/tools/add.py")
const result = await Bun.$`python3 ${script} ${args.a} ${args.b}`.text()
return result.trim()
},
})
```
Burada Python betiğini çalıştırmak için [`Bun.$`](https://bun.com/docs/runtime/shell) yardımcı programını kullanıyoruz.

View File

@@ -0,0 +1,76 @@
---
title: Ekosistem
description: OpenCode ile ilgili tasarımlar ve entegrasyonlar.
---
OpenCode üzerine inşa edilmiş bir topluluk projeleri koleksiyonu.
:::note
OpenCode ile ilgili projenizi bu listeye eklemek ister misiniz? Bir PR gönderin.
:::
Ayrıca ekosistemi ve topluluğu bir araya getiren bir topluluk olan [awesome-opencode](https://github.com/awesome-opencode/awesome-opencode) ve [opencode.cafe](https://opencode.cafe)'e de göz atabilirsiniz.
---
## Plugins
| İsim | Açıklama |
| --------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------ |
| [opencode-daytona](https://github.com/jamesmurdza/daytona/blob/main/guides/typescript/opencode/README.md) | OpenCode oturumlarını git senkronizasyonu ve canlı önizlemelerle izole Daytona sanal alanlarında otomatik olarak çalıştırın |
| [opencode-helicone-session](https://github.com/H2Shami/opencode-helicone-session) | İstek gruplaması için Helicone oturum başlıklarını otomatik olarak ekleme |
| [opencode-type-inject](https://github.com/nick-vi/opencode-type-inject) | Arama araçlarıyla TypeScript/Svelte türlerini dosya okumalarına otomatik olarak enjekte edin |
| [opencode-openai-codex-auth](https://github.com/numman-ali/opencode-openai-codex-auth) | API kredisi yerine ChatGPT Plus/Pro aboneliğinizi kullanın |
| [opencode-gemini-auth](https://github.com/jenslys/opencode-gemini-auth) | API faturalandırma yerine mevcut Gemini planınızı kullanın |
| [opencode-antigravity-auth](https://github.com/NoeFabris/opencode-antigravity-auth) | API faturalandırma yerine Antigravity'nin ücretsiz modellerini kullanın |
| [opencode-devcontainers](https://github.com/athal7/opencode-devcontainers) | Sığ klonlar ve otomatik atanan bağlantı noktalarıyla çok dallı devcontainer izolasyonu |
| [opencode-google-antigravity-auth](https://github.com/shekohex/opencode-google-antigravity-auth) | Google Arama desteği ve daha sağlam API işleme özelliğiyle Google Antigravity OAuth Eklentisi |
| [opencode-dynamic-context-pruning](https://github.com/Tarquinen/opencode-dynamic-context-pruning) | Optimize token usage by pruning obsolete tool outputs |
| [opencode-websearch-cited](https://github.com/ghoulr/opencode-websearch-cited.git) | Desteklenen sağlayıcılar için Google tabanlı stil ile yerel web araması desteği ekleyin |
| [opencode-pty](https://github.com/shekohex/opencode-pty.git) | Yapay zeka aracılarının bir PTY'de arka plan işlemlerini çalıştırmasına ve onlara etkileşimli girdi göndermesine olanak tanır. |
| [opencode-shell-strategy](https://github.com/JRedeker/opencode-shell-strategy) | Etkileşimli olmayan kabuk komutlarına yönelik talimatlar - TTY bağımlı işlemlerden kaynaklanan askıda kalmaları önler |
| [opencode-wakatime](https://github.com/angristan/opencode-wakatime) | Wakatime ile OpenCode kullanımını izleyin |
| [opencode-md-table-formatter](https://github.com/franlol/opencode-md-table-formatter/tree/main) | Clean up markdown tables produced by LLMs |
| [opencode-morph-fast-apply](https://github.com/JRedeker/opencode-morph-fast-apply) | Morph Fast Apply API ve yavaş düzenleme işaretçileriyle 10 kat daha hızlı kod düzenleme |
| [oh-my-opencode](https://github.com/code-yeongyu/oh-my-opencode) | Background agents, pre-built LSP/AST/MCP tools, curated agents, Claude Code compatible |
| [opencode-notificator](https://github.com/panta82/opencode-notificator) | OpenCode oturumları için masaüstü bildirimleri ve sesli uyarılar |
| [opencode-notifier](https://github.com/mohak34/opencode-notifier) | İzin, tamamlama ve hata olayları için masaüstü bildirimleri ve sesli uyarılar |
| [opencode-zellij-namer](https://github.com/24601/opencode-zellij-namer) | OpenCode bağlamına dayalı yapay zeka destekli otomatik Zellij oturumu adlandırma |
| [opencode-skillful](https://github.com/zenobi-us/opencode-skillful) | OpenCode temsilcilerinin, beceri keşfi ve ekleme ile istek üzerine istemleri yavaş yüklemesine izin verin |
| [opencode-supermemory](https://github.com/supermemoryai/opencode-supermemory) | Supermemory kullanarak oturumlar arasında kalıcı hafıza |
| [@plannotator/opencode](https://github.com/backnotprop/plannotator/tree/main/apps/opencode-plugin) | Görsel açıklama ve private/offline paylaşımıyla etkileşimli plan incelemesi |
| [@openspoon/subtask2](https://github.com/spoons-and-mirrors/subtask2) | Açık kodu/komutları ayrıntılı akış kontrolüyle güçlü bir orkestrasyon sistemine genişletin |
| [opencode-scheduler](https://github.com/different-ai/opencode-scheduler) | Cron sözdizimi ile launchd (Mac) veya systemd (Linux) kullanarak yinelenen işleri planlayın |
| [micode](https://github.com/vtemian/micode) | Yapılandırılmış Beyin Fırtınası → Planla → Oturum sürekliliği ile iş akışını uygulama |
| [octto](https://github.com/vtemian/octto) | Çoklu soru formlarıyla yapay zeka beyin fırtınası için etkileşimli tarayıcı arayüzü |
| [opencode-background-agents](https://github.com/kdcokenny/opencode-background-agents) | Eşzamansız delegasyon ve bağlam kalıcılığına sahip Claude Code tarzı arka plan aracıları |
| [opencode-notify](https://github.com/kdcokenny/opencode-notify) | OpenCode için yerel işletim sistemi bildirimleri görevlerin ne zaman tamamlandığını bilin |
| [opencode-workspace](https://github.com/kdcokenny/opencode-workspace) | Birlikte verilen çok aracılı orkestrasyon donanımı 16 bileşen, tek kurulum |
| [opencode-worktree](https://github.com/kdcokenny/opencode-worktree) | OpenCode için sıfır sürtünmeli git çalışma ağaçları |
---
## Projeler
| İsim | Tanım |
| ------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------- |
| [kimaki](https://github.com/remorses/kimaki) | SDK üzerine kurulu OpenCode oturumlarını kontrol eden Discord botu |
| [opencode.nvim](https://github.com/NickvanDyke/opencode.nvim) | API temel alınarak oluşturulmuş, editöre duyarlı istemler için Neovim eklentisi |
| [portal](https://github.com/hosenur/portal) | Tailscale/VPN üzerinden OpenCode için mobil öncelikli web kullanıcı arayüzü |
| [opencode plugin template](https://github.com/zenobi-us/opencode-plugin-template/) | OpenCode eklentileri oluşturmak için şablon |
| [opencode.nvim](https://github.com/sudo-tee/opencode.nvim) | Açık kod için Neovim ön ucu - terminal tabanlı bir AI kodlama aracısı |
| [ai-sdk-provider-opencode-sdk](https://github.com/ben-vargas/ai-sdk-provider-opencode-sdk) | @opencode-ai/sdk aracılığıyla OpenCode'u kullanmak için Vercel AI SDK sağlayıcısı |
| [OpenChamber](https://github.com/btriapitsyn/openchamber) | OpenCode için Web / Masaüstü Uygulaması ve VS Code Uzantısı |
| [OpenCode-Obsidian](https://github.com/mtymek/opencode-obsidian) | OpenCode'u Obsidian'ın kullanıcı arayüzüne yerleştiren Obsidian eklentisi |
| [OpenWork](https://github.com/different-ai/openwork) | OpenCode tarafından desteklenen, Claude Cowork'e açık kaynaklı bir alternatif |
| [ocx](https://github.com/kdcokenny/ocx) | Taşınabilir, yalıtılmış profillere sahip OpenCode uzantı yöneticisi. |
| [CodeNomad](https://github.com/NeuralNomadsAI/CodeNomad) | OpenCode için Masaüstü, Web, Mobil ve Uzak İstemci Uygulaması |
---
## Agents
| İsim | Açıklama |
| ----------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [Agentic](https://github.com/Cluster444/agentic) | Yapılandırılmış geliştirme için modüler yapay zeka aracıları ve komutları |
| [opencode-agents](https://github.com/darrenhinde/opencode-agents) | Gelişmiş iş akışları için yapılandırmalar, istemler, aracılar ve eklentiler |

View File

@@ -0,0 +1,170 @@
---
title: Girişim
description: OpenCode'u kısıtlamanızda güvenli bir şekilde kullanma.
---
import config from "../../../../config.mjs"
export const email = `mailto:${config.email}`
OpenCode Enterprise, kodlarının ve verilerinin altyapılarından asla ayrılmamasını sağlamak isteyen kuruluşlar içindir. Bunu, SSO ve dahili AI ağ geçidinizle entegre olan merkezi bir yapılandırma kullanarak yapabilir.
:::note
OpenCode kodunuzu veya içerik verilerinizi saklamaz.
:::
OpenCode Enterprise'ı kullanmaya başlamak için:
1. Ekibinizle dahili olarak bir deneme yapın.
2. Fiyatlandırma ve uygulama seçeneklerini görüşmek için **<a href={email}>bize ulaşın</a>**.
---
## Trial
OpenCode açık kaynaktır ve herhangi bir kodunuzu veya içerik verilerinizi saklamaz; böylece geliştiricileriniz [get started](/docs/) yapıp bir deneme gerçekleştirebilir.
---
### Veri işleme
**OpenCode, kodunuzu veya içerik verilerinizi saklamaz.** Tüm işlemler yerel olarak veya AI sağlayıcınıza doğrudan API çağrıları yoluyla gerçekleştirilir.
Bu, güvendiğiniz bir sağlayıcıyı veya dahili bir sağlayıcıyı kullandığınız sürece
AI ağ geçidi, OpenCode'u güvenli bir şekilde kullanabilirsiniz.
saklama alanının tek izolasyonuna bağlı `/share` özelliğidir.
---
#### Sharing conversations
Bir kullanıcı `/share` özelliğini etkinleştirirse, görüşme ve onunla ilişkili veriler, bu paylaşım sayfalarını opencode.ai'de barındırmak için kullandığımız hizmete gönderilir.
Veriler şu anda CDN uç ağımız üzerinden sunuluyor ve kullanıcılarınızın yakınındaki uçta önbelleğe alınıyor.
Deneme süreniz için bunu devre dışı bırakmanızı öneririz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"share": "disabled"
}
```
[Learn more about sharing](/docs/share).
---
### Kod sahipliği
**OpenCode tarafından üretilen tüm kodlara sahipsiniz.** Herhangi bir lisans kısıtlaması veya mülkiyet iddiası yoktur.
---
## Pricing
OpenCode Enterprise için bilgisayar başına model kullanıyoruz. Kendi LLM ağ geçidiniz varsa, kullanılan jetonlar için ücret talep etmiyoruz. Fiyatlandırma ve uygulama seçenekleri hakkında daha fazla ayrıntı için **<a href={email}>bize ulaşın</a>**.
---
## Dağıtım
Deneme sürenizi tamamladıktan ve OpenCode'u şu adreste kullanmaya hazır olduğunuzda:
kuruluşunuz hakkında görüşmek üzere **<a href={email}>bizimle iletişime geçebilirsiniz</a>**
fiyatlandırma ve uygulama seçenekleri.
---
### Central Config
OpenCode'u tüm organizasyonunuz için tek bir merkezi yapılandırma kullanacak şekilde ayarlayabiliriz.
Bu merkezi yapılandırma, SSO sağlayıcınızla entegre olabilir ve tüm kullanıcıların yalnızca dahili AI ağ geçidinize erişmesini sağlar.
---
### SSO entegrasyonu
Merkezi yapılandırma aracılığıyla OpenCode, kimlik doğrulama için kuruluşunuzun SSO sağlayıcısıyla entegre olabilir.
Bu, OpenCode'un mevcut kimlik yönetimi sisteminiz aracılığıyla dahili AI ağ geçidiniz için kimlik bilgileri almasına olanak tanır.
---
### Internal AI gateway
Merkezi yapılandırmayla OpenCode yalnızca dahili AI ağ geçidinizi kullanacak şekilde de yapılandırılabilir.
Ayrıca tüm isteklerin kuruluşunuzun onaylı altyapısından geçmesini sağlayarak diğer tüm AI sağlayıcılarını devre dışı bırakabilirsiniz.
---
### Kendi kendine barındırma
Verilerinizin asla silinmediğinden emin olmak için paylaşım sayfalarını devre dışı bırakmanızı öneririz.
Kuruluşunuzda, bunları altyapınızda kendiniz barındırmanıza da yardımcı olabiliriz.
Bu şu anda yol haritamızda yer alıyor. İlgileniyorsanız **<a href={email}>bize bildirin</a>**.
---
## FAQ
<details>
<summary>What is OpenCode Enterprise?</summary>
OpenCode Enterprise, kodlarının ve verilerinin altyapılarından asla ayrılmamasını sağlamak isteyen kuruluşlar içindir. Bunu, SSO ve dahili AI ağ geçidinizle entegre olan merkezi bir yapılandırma kullanarak yapabilir.
</details>
<details>
<summary>How do I get started with OpenCode Enterprise?</summary>
Ekibinizle dahili bir denemeyle başlayın. OpenCode varsayılan olarak kodunuzu veya içerik verilerinizi saklamaz, bu da başlamayı kolaylaştırır.
Daha sonra fiyatlandırma ve uygulama seçeneklerini görüşmek için **<a href={email}>bizimle iletişime geçin</a>**.
</details>
<details>
<summary>How does enterprise pricing work?</summary>
Koltuk başına kurumsal fiyatlandırma sunuyoruz. Kendi LLM ağ geçidiniz varsa, kullanılan jetonlar için ücret talep etmiyoruz. Daha fazla ayrıntı için kuruluşunuzun ihtiyaçlarına göre özel bir fiyat teklifi almak üzere **<a href={email}>bize ulaşın</a>**.
</details>
<details>
<summary>Is my data secure with OpenCode Enterprise?</summary>
Evet. OpenCode kodunuzu veya içerik verilerinizi saklamaz. Tüm işlemler yerel olarak veya AI sağlayıcınıza doğrudan API çağrıları yoluyla gerçekleşir. Merkezi yapılandırma ve SSO entegrasyonuyla verileriniz kuruluşunuzun altyapısında güvende kalır.
</details>
<details>
<summary>Can we use our own private NPM registry?</summary>
OpenCode, Bun'un yerel `.npmrc` dosya desteği aracılığıyla özel npm kayıtlarını destekler. Kuruluşunuz JFrog Artifactory, Nexus veya benzeri gibi özel bir kayıt defteri kullanıyorsa, OpenCode'u çalıştırmadan önce geliştiricilerin kimlik doğrulamasının yapıldığından emin olun.
Özel kayıt defterinizle kimlik doğrulamayı ayarlamak için:
```bash
npm login --registry=https://your-company.jfrog.io/api/npm/npm-virtual/
```
Bu, kimlik doğrulama ayrıntılarını içeren `~/.npmrc` öğesini oluşturur. OpenCode otomatik olarak
şunu al.
:::caution
OpenCode'u çalıştırmadan önce özel kayıt defterinde oturum açmalısınız.
:::
Alternatif olarak, bir `.npmrc` dosyasını manuel olarak yapılandırabilirsiniz:
```bash title="~/.npmrc"
registry=https://your-company.jfrog.io/api/npm/npm-virtual/
//your-company.jfrog.io/api/npm/npm-virtual/:_authToken=${NPM_AUTH_TOKEN}
```
Paketlerin kurumsal kayıt defterinizden yüklenebildiğinden emin olmak için geliştiricilerin OpenCode'u çalıştırmadan önce özel kayıt defterinde oturum açmaları gerekir.
</details>

View File

@@ -0,0 +1,130 @@
---
title: Biçimlendiriciler
description: OpenCode dile özgü biçimlendiriciler kullanır.
---
OpenCode, dosyaları dile özgü formatlayıcılar kullanılarak yazıldıktan veya düzenlendikten sonra otomatik olarak formatlar. Bu, oluşturulan kodun projenizin kod stillerine uymasını sağlar.
---
## Built-in
OpenCode, popüler diller ve çerçeveler için çeşitli yerleşik biçimlendiricilerle birlikte gelir. Aşağıda ihtiyaç duyduğu biçimlendiricilerin, desteklenen dosya uzantılarının ve komutların veya yapılandırma seçeneklerinin bir listesi bulunmaktadır.
| Formatter | Extensions | Requirements |
| ------------------ | ------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
| gofmt | .go | `gofmt` komutu mevcut |
| karışım | .ex, .exs, .eex, .heex, .leex, .neex, .sface | `mix` komutu mevcut |
| daha güzel | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml ve [more](https://prettier.io/docs/en/index.html) | `prettier` bağımlılığı `package.json`'de |
| biyom | .js, .jsx, .ts, .tsx, .html, .css, .md, .json, .yaml ve [more](https://biomejs.dev/) | `biome.json(c)` yapılandırma dosyası |
| zig | .zig, .zon | `zig` komutu mevcut |
| clang formatı | .c, .cpp, .h, .hpp, .ino ve [more](https://clang.llvm.org/docs/ClangFormat.html) | `.clang-format` yapılandırma dosyası |
| klint | .kt, .kts | `ktlint` komutu mevcut |
| fırfır | .py, .pyi | `ruff` komutu yapılandırmayla kullanılabilir |
| pas fmt | .rs | `rustfmt` komutu mevcut |
| kargo fmt | .rs | `cargo fmt` komutu mevcut |
| UV | .py, .pyi | `uv` komutu mevcut |
| rubokop | .rb, .rake, .gemspec, .ru | `rubocop` komutu mevcut |
| standartrb | .rb, .rake, .gemspec, .ru | `standardrb` komutu mevcut |
| htmlgüzelleştirici | .erb, .html.erb | `htmlbeautifier` komutu mevcut |
| hava | .R | `air` komutu mevcut |
| dart | .dart | `dart` komutu mevcut |
| ocamlformat | .ml, .mli | `ocamlformat` komutu mevcut ve `.ocamlformat` yapılandırma dosyası |
| yeryüzü | .tf, .tfvars | `terraform` komutu mevcut |
| parıltı | .gliam | `gleam` komutu mevcut |
| nixfmt | .nix | `nixfmt` komutu mevcut |
| shfmt | .sh, .bash | `shfmt` komutu mevcut |
| pint | .php | `laravel/pint` dependency in `composer.json` |
| oxfmt (Deneysel) | .js, .jsx, .ts, .tsx | `package.json` içindeki `oxfmt` bağımlılığı ve [experimental env variable flag](/docs/cli/#experimental) |
| ormolu | .hs | `ormolu` komutu mevcut |
Yani eğer projenizin `package.json` dosyasında `prettier` varsa, OpenCode bunu otomatik olarak kullanacaktır.
---
## Nasıl çalışır?
OpenCode bir dosyayı yazdığında veya düzenlediğinde:
1. Dosya uzantısını tüm etkin formatlayıcılara göre kontrol eder.
2. Dosyada uygun biçimlendirici komutunu çalıştırır.
3. Biçimlendirme değişikliklerini otomatik olarak uygular.
Bu işlem arka planda gerçekleşir ve kod stillerinizin herhangi bir manuel adım olmadan korunmasını sağlar.
---
## Yapılandır
Biçimlendiricileri OpenCode yapılandırmanızdaki `formatter` bölümü aracılığıyla özelleştirebilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"formatter": {}
}
```
Her formatlayıcı yapılandırması aşağıdakileri destekler:
| Emlak | Tür | Açıklama |
| ------------- | ------ | ---------------------------------------------------------------------- |
| `disabled` | boole | Biçimlendiriciyi devre dışı bırakmak için bunu `true` olarak ayarlayın |
| `command` | dize[] | Biçimlendirme için çalıştırılacak komut |
| `environment` | nesne | Biçimlendiriciyi çalıştırırken ayarlanacak ortam değişkenleri |
| `extensions` | dize[] | Bu formatlayıcının işlemesi gereken dosya uzantıları |
Let's look at some examples.
---
### Biçimlendiricileri devre dışı bırakma
**tüm** biçimlendiricileri genel olarak devre dışı bırakmak için `formatter` değerini `false` olarak ayarlayın:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"formatter": false
}
```
**Belirli** bir biçimlendiriciyi devre dışı bırakmak için `disabled` değerini `true` olarak ayarlayın:
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"disabled": true
}
}
}
```
---
### Custom formatters
Komutu, ortam değişkenlerini ve dosya uzantılarını belirterek yerleşik biçimlendiricileri geçersiz kılabilir veya yenilerini ekleyebilirsiniz:
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"formatter": {
"prettier": {
"command": ["npx", "prettier", "--write", "$FILE"],
"environment": {
"NODE_ENV": "development"
},
"extensions": [".js", ".ts", ".jsx", ".tsx"]
},
"custom-markdown-formatter": {
"command": ["deno", "fmt", "$FILE"],
"extensions": [".md"]
}
}
}
```
Komuttaki **`$FILE` yer tutucusu**, biçimlendirilen dosyanın yolu ile değiştirilecektir.

View File

@@ -0,0 +1,321 @@
---
title: GitHub
description: GitHub sorunlarında ve çekme isteklerinde OpenCode'u kullanın.
---
OpenCode, GitHub iş akışınızla bütünleşir. Yorumunuzda `/opencode` veya `/oc`'den bahsedin; OpenCode, GitHub Actions çalıştırıcınızdaki görevleri yürütecektir.
---
## Features
- **Sorunları önceliklendirin**: OpenCode'dan bir sorunu araştırıp size açıklamasını isteyin.
- **Düzelt ve uygula**: OpenCode'dan bir sorunu düzeltmesini veya bir özelliği uygulamasını isteyin. Ve yeni bir şubede çalışacak ve tüm değişiklikleri içeren bir PR gönderecek.
- **Güvenli**: OpenCode, GitHub'ınızın çalıştırıcılarının içinde çalışır.
---
## Kurulum
GitHub deposundaki bir projede aşağıdaki komutu çalıştırın:
```bash
opencode github install
```
Bu size GitHub uygulamasını yükleme, iş akışını oluşturma ve gizli dizileri ayarlama adımlarında yol gösterecektir.
---
### Manual Setup
Veya manuel olarak ayarlayabilirsiniz.
1. **GitHub uygulamasını yükleyin**
[**github.com/apps/opencode-agent**](https://github.com/apps/opencode-agent)'a gidin. Hedef depoya kurulu olduğundan emin olun.
2. **İş akışını ekleyin**
Aşağıdaki iş akışı dosyasını deponuzdaki `.github/workflows/opencode.yml`'a ekleyin. `env`'de uygun `model` ve gerekli API anahtarlarını ayarladığınızdan emin olun.
```yml title=".github/workflows/opencode.yml" {24,26}
name: opencode
on:
issue_comment:
types: [created]
pull_request_review_comment:
types: [created]
jobs:
opencode:
if: |
contains(github.event.comment.body, '/oc') ||
contains(github.event.comment.body, '/opencode')
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
fetch-depth: 1
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
# share: true
# github_token: xxxx
```
3. **API anahtarlarını gizli olarak saklayın**
Kuruluşunuzda veya projenizde **ayarlarda**, soldaki **Gizli bilgiler ve değişkenler**'i genişletin ve **Eylemler**'i seçin. Ve gerekli API anahtarlarını ekleyin.
---
## Yapılandırma
- `model`: OpenCode ile kullanılacak model. `provider/model` biçimini alır. Bu **gerekli**.
- `agent`: Kullanılacak aracı. Birincil ajan olmalı. Yapılandırmadan `default_agent`'ye veya bulunamazsa `"build"`'ye geri döner.
- `share`: OpenCode hesabının paylaşılıp paylaşılmayacağı. Genel depolar için varsayılan olarak **true** olur.
- `prompt`: Varsayılan çalışma geçersiz olduğundan dolayı özel istem. OpenCode'un işleme biçimini kişiselleştirmek için bunu kullanın.
- `token`: Yorum oluşturma, değişiklik yapma ve çekme isteklerini açma gibi işlemleri gerçekleştirmek için isteğe bağlı GitHub erişim belirteci. Varsayılan olarak OpenCode, OpenCode GitHub Uygulamasındaki kurulum erişim belirtecini kullanır, bu nedenle taahhütler, yorumlar ve çekme istekleri uygulamadan geliyormuş gibi görünür.
Alternatif olarak, OpenCode GitHub'u yüklemeden GitHub Eylem çalıştırıcısının [built-in `GITHUB_TOKEN`](https://docs.github.com/en/actions/tutorials/authenticate-with-github_token) akışını kullanabilirsiniz. İşinizde gerekli izinlere sahip olduğunuzdan emin olun:
```yaml
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
```
Tercih edilirse [personal access tokens](https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens)(PAT) de kullanabilirsiniz.
---
## Supported Events
OpenCode aşağıdaki GitHub olayları tarafından tetiklenebilir:
| Event Type | Triggered By | Details |
| ----------------------------- | --------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------- |
| `issue_comment` | Bir soruna veya halkla ilişkilere yorum yapın | Yorumunuzda `/opencode` veya `/oc`'den bahsedin. OpenCode bağlamı okur ve şubeler oluşturabilir, PR'leri açabilir veya yanıt verebilir. |
| `pull_request_review_comment` | PR'deki belirli kod satırlarına yorum yapın | Kodu incelerken `/opencode` veya `/oc`'den bahsedin. OpenCode dosya yolunu, satır numaralarını ve fark içeriğini alır. |
| `issues` | Sayııldı veya düzenlendi | Sorunlar oluşturulduğunda veya değiştirildiğinde OpenCode'u otomatik olarak tetikleyin. `prompt` girişi gerektirir. |
| `pull_request` | PR açıldı veya güncellendi | PR'ler açıldığında, senkronize edildiğinde veya yeniden açıldığında OpenCode'u otomatik olarak tetikleyin. Otomatik incelemeler için kullanışlıdır. |
| `schedule` | Cron tabanlı program | OpenCode'u bir programa göre çalıştırın. `prompt` girişi gerektirir. Çıktı, günlüklere ve PR'lere gider (yorum yapılacak bir sorun yoktur). |
| `workflow_dispatch` | GitHub kullanıcı arayüzünden manuel tetikleme | Eylemler sekmesi aracılığıyla OpenCode'u isteğe bağlı olarak tetikleyin. `prompt` girişi gerektirir. Çıktı günlüklere ve PR'lere gider. |
### Schedule Example
Otomatik görevleri gerçekleştirmek için OpenCode'u bir zamanlamaya göre çalıştırın:
```yaml title=".github/workflows/opencode-scheduled.yml"
name: Scheduled OpenCode Task
on:
schedule:
- cron: "0 9 * * 1" # Every Monday at 9am UTC
jobs:
opencode:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Checkout repository
uses: actions/checkout@v6
with:
persist-credentials: false
- name: Run OpenCode
uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review the codebase for any TODO comments and create a summary.
If you find issues worth addressing, open an issue to track them.
```
Zamanlanmış etkinlikler için, talimatların alınabileceği bir yorum bulunmadığından `prompt` girişi **gereklidir**. Zamanlanmış iş akışları, izin kontrolü yapılacak bir kullanıcı bağlamı olmadan çalışır; bu nedenle, OpenCode'un şubeler veya PR'ler oluşturmasını bekliyorsanız iş akışının `contents: write` ve `pull-requests: write` vermesi gerekir.
---
### Çekme İsteği Örneği
PR'leri açıldığında veya güncellendiğinde otomatik olarak inceleyin:
```yaml title=".github/workflows/opencode-review.yml"
name: opencode-review
on:
pull_request:
types: [opened, synchronize, reopened, ready_for_review]
jobs:
review:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: read
pull-requests: read
issues: read
steps:
- uses: actions/checkout@v6
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
with:
model: anthropic/claude-sonnet-4-20250514
use_github_token: true
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
`pull_request` olaylar için, `prompt` sağlanmazsa, OpenCode varsayılan olarak çekme isteklerini inceler.
---
### Issues Triage Example
Yeni sorunları otomatik olarak önceliklendirin. Bu örnek, spam'i azaltmak için 30 günden eski hesapları filtreler:
```yaml title=".github/workflows/opencode-triage.yml"
name: Issue Triage
on:
issues:
types: [opened]
jobs:
triage:
runs-on: ubuntu-latest
permissions:
id-token: write
contents: write
pull-requests: write
issues: write
steps:
- name: Check account age
id: check
uses: actions/github-script@v7
with:
script: |
const user = await github.rest.users.getByUsername({
username: context.payload.issue.user.login
});
const created = new Date(user.data.created_at);
const days = (Date.now() - created) / (1000 * 60 * 60 * 24);
return days >= 30;
result-encoding: string
- uses: actions/checkout@v6
if: steps.check.outputs.result == 'true'
with:
persist-credentials: false
- uses: anomalyco/opencode/github@latest
if: steps.check.outputs.result == 'true'
env:
ANTHROPIC_API_KEY: ${{ secrets.ANTHROPIC_API_KEY }}
with:
model: anthropic/claude-sonnet-4-20250514
prompt: |
Review this issue. If there's a clear fix or relevant docs:
- Provide documentation links
- Add error handling guidance for code examples
Otherwise, do not comment.
```
`issues` olayları için, talimatların çıkarılacağı bir yorum olmadığından `prompt` girişi **gereklidir**.
---
## Özel istemler
OpenCode'un davranışını iş akışınız için özelleştirmek için varsayılan istemi geçersiz kılın.
```yaml title=".github/workflows/opencode.yml"
- uses: anomalyco/opencode/github@latest
with:
model: anthropic/claude-sonnet-4-5
prompt: |
Review this pull request:
- Check for code quality issues
- Look for potential bugs
- Suggest improvements
```
Bu, projenizle ilgili spesifik inceleme kriterlerini, kodlama standartlarını veya odak alanlarını uygulamak için kullanışlıdır.
---
## Examples
GitHub'da OpenCode'u nasıl kullanabileceğinize dair bazı örnekleri burada bulabilirsiniz.
- **Explain an issue**
Bu yorumu GitHub sayısına ekleyin.
```
/opencode explain this issue
```
OpenCode, tüm yorumlar da dahil olmak üzere ileti dizisinin tamamını okuyacak ve net bir açıklama ile yanıt verecektir.
- **Fix an issue**
In a GitHub issue, say:
```
/opencode fix this
```
Ve OpenCode yeni bir şube oluşturacak, değişiklikleri uygulayacak ve değişiklikleri içeren bir PR açacak.
- **PR'leri inceleyin ve değişiklik yapın**
GitHub PR'a aşağıdaki yorumu bırakın.
```
Delete the attachment from S3 when the note is removed /oc
```
OpenCode istenen değişikliği uygulayacak ve aynı PR'ye uygulayacaktır.
- **Review specific code lines**
PR'nin "Dosyalar" sekmesindeki kod satırlarına doğrudan yorum bırakın. OpenCode, kesin yanıtlar sağlamak için dosyayı, satır numaralarını ve fark içeriğini otomatik olarak algılar.
```
[Comment on specific lines in Files tab]
/oc add error handling here
```
When commenting on specific lines, OpenCode receives:
- İncelenmekte olan dosyanın tamamı
- Belirli kod satırları
- Çevreleyen fark bağlamı
- Line number information
Bu, dosya yollarını veya satır numaralarını manuel olarak belirtmeye gerek kalmadan daha hedefli isteklere olanak tanır.

View File

@@ -0,0 +1,195 @@
---
title: GitLab
description: GitLab sorunlarında ve parçalanma isteğinde OpenCode'u kullanın.
---
OpenCode, GitLab CI/CD ardışık düzeniniz veya GitLab Duo aracılığıyla GitLab iş akışınızla bütünleşir.
Her iki durumda da OpenCode, GitLab çalıştırıcılarınızda çalışacaktır.
---
## GitLab CI
OpenCode normal bir GitLab hattında çalışır. Bunu bir [CI component](https://docs.gitlab.com/ee/ci/components/) olarak bir boru hattına oluşturabilirsiniz.
Burada OpenCode için topluluk tarafından oluşturulan bir CI/CD bileşeni kullanıyoruz — [nagyv/gitlab-opencode](https://gitlab.com/nagyv/gitlab-opencode).
---
### Özellikler
- **İş başına özel işlemleri kullanın**: OpenCode parçalarının kullanıma veya devre dışı bırakmak için OpenCode'u özel bir yapılandırma dizini ile yapılandırın; örneğin `./config/#custom-directory`.
- **Minimum kurulum**: CI bileşeni OpenCode'u arka planda kurar; yalnızca OpenCode yapılandırmasını ve ilk istemi oluşturmanız gerekir.
- **Esnek**: CI bileşeni, davranışını özelleştirmek için çeşitli girişleri destekler
---
### Setup
1. OpenCode kimlik doğrulamanızı JSON **Ayarlar** > **CI/CD** > **Değişkenler** altında Dosya türü CI ortam değişkenleri olarak saklayın. Bunları "Maskeli ve gizli" olarak işaretlediğinizden emin olun.
2. Aşağıdakileri `.gitlab-ci.yml` dosyanıza ekleyin.
```yaml title=".gitlab-ci.yml"
include:
- component: $CI_SERVER_FQDN/nagyv/gitlab-opencode/opencode@2
inputs:
config_dir: ${CI_PROJECT_DIR}/opencode-config
auth_json: $OPENCODE_AUTH_JSON # The variable name for your OpenCode authentication JSON
command: optional-custom-command
message: "Your prompt here"
```
Daha fazla girdi ve bu bileşene yönelik kullanım durumları için [check out the docs](https://gitlab.com/explore/catalog/nagyv/gitlab-opencode).
---
## GitLab Duo
OpenCode, GitLab iş akışınızla bütünleşir.
Bir yorumda `@opencode`'dan bahsedin; OpenCode, GitLab CI işlem hattınızdaki görevleri yürütecektir.
---
### Features
- **Sorunları önceliklendirin**: OpenCode'dan bir sorunu araştırıp size açıklamasını isteyin.
- **Düzelt ve uygula**: OpenCode'dan bir sorunu düzeltmesini veya bir özelliği uygulamasını isteyin.
Yeni bir şube oluşturacak ve değişikliklerle birlikte bir birleştirme isteği oluşturacaktır.
- **Güvenli**: OpenCode, GitLab çalıştırıcılarınızda çalışır.
---
### Kurmak
OpenCode, GitLab CI/CD işlem hattınızda çalışır; bunu ayarlamak için ihtiyacınız olacaklar:
:::tip
Güncel talimatlar için [**GitLab docs**](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)'a göz atın.
:::
1. GitLab ortamınızı yapılandırın
2. CI/CD'yi kurma
3. Bir AI model sağlayıcısı API anahtarını gösterir
4. Hizmet hesabı oluşturun
5. CI/CD değişkenlerini yapılandırma
6. Bir akış yapılandırma dosyası oluşturun; işte bir örnek:
<detaylar>
<summary>Akış yapılandırması</summary>
```yaml
image: node:22-slim
commands:
- echo "Installing opencode"
- npm install --global opencode-ai
- 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/*
- curl --silent --show-error --location "https://raw.githubusercontent.com/upciti/wakemeops/main/assets/install_repository" | bash
- apt-get install --yes glab
- echo "Configuring glab"
- echo $GITLAB_HOST
- echo "Creating OpenCode auth configuration"
- mkdir --parents ~/.local/share/opencode
- |
cat > ~/.local/share/opencode/auth.json << EOF
{
"anthropic": {
"type": "api",
"key": "$ANTHROPIC_API_KEY"
}
}
EOF
- echo "Configuring git"
- git config --global user.email "opencode@gitlab.com"
- git config --global user.name "OpenCode"
- echo "Testing glab"
- glab issue list
- echo "Running OpenCode"
- |
opencode run "
You are an AI assistant helping with GitLab operations.
Context: $AI_FLOW_CONTEXT
Task: $AI_FLOW_INPUT
Event: $AI_FLOW_EVENT
Please execute the requested task using the available GitLab tools.
Be thorough in your analysis and provide clear explanations.
<important>
Please use the glab CLI to access data from GitLab. The glab CLI has already been authenticated. You can run the corresponding commands.
If you are asked to summarize an MR or issue or asked to provide more information then please post back a note to the MR/Issue so that the user can see it.
You don't need to commit or push up changes, those will be done automatically based on the file changes you make.
</important>
"
- git checkout --branch $CI_WORKLOAD_REF origin/$CI_WORKLOAD_REF
- echo "Checking for git changes and pushing if any exist"
- |
if ! git diff --quiet || ! git diff --cached --quiet || [ --not --zero "$(git ls-files --others --exclude-standard)" ]; then
echo "Git changes detected, adding and pushing..."
git add .
if git diff --cached --quiet; then
echo "No staged changes to commit"
else
echo "Committing changes to branch: $CI_WORKLOAD_REF"
git commit --message "Codex changes"
echo "Pushing changes up to $CI_WORKLOAD_REF"
git push https://gitlab-ci-token:$GITLAB_TOKEN@$GITLAB_HOST/gl-demo-ultimate-dev-ai-epic-17570/test-java-project.git $CI_WORKLOAD_REF
echo "Changes successfully pushed"
fi
else
echo "No git changes detected, skipping push"
fi
variables:
- ANTHROPIC_API_KEY
- GITLAB_TOKEN_OPENCODE
- GITLAB_HOST
```
</detaylar>
Ayrıntılı talimatlar için [GitLab CLI agents docs](https://docs.gitlab.com/user/duo_agent_platform/agent_assistant/)'a başvurabilirsiniz.
---
### Examples
GitLab'da OpenCode'u nasıl kullanabileceğinize dair bazı örnekleri burada bulabilirsiniz.
:::tip
`@opencode`'dan farklı bir tetikleyici ifade kullanacak şekilde yapılandırabilirsiniz.
:::
- **Explain an issue**
Bu yorumu bir GitLab sayısına ekleyin.
```
@opencode explain this issue
```
OpenCode konuyu okuyacak ve net bir açıklama ile yanıt verecektir.
- **Fix an issue**
In a GitLab issue, say:
```
@opencode fix this
```
OpenCode yeni bir şube oluşturacak, değişiklikleri uygulayacak ve değişiklikleri içeren bir birleştirme isteği açacaktır.
- **Review merge requests**
GitLab birleştirme isteğine aşağıdaki yorumu bırakın.
```
@opencode review this merge request
```
OpenCode, birleştirme isteğini inceleyecek ve geri bildirim sağlayacaktır.

View File

@@ -0,0 +1,48 @@
---
title: IDE
description: VS Code, Cursor ve diğer IDE'ler için OpenCode uzantısı
---
OpenCode, VS Code, Cursor veya bir terminali destekleyen herhangi bir IDE ile entegre olur. Başlamak için terminalde `opencode` komutunu çalıştırmanız yeterli.
---
## Usage
- **Hızlı Başlatma**: OpenCode'u bölünmüş terminal görünümünde açmak veya zaten çalışıyorsa mevcut bir terminal oturumuna odaklanmak için `Cmd+Esc` (Mac) veya `Ctrl+Esc` (Windows/Linux) kullanın.
- **Yeni Oturum**: Zaten açık olsa bile yeni bir OpenCode terminal oturumu başlatmak için `Cmd+Shift+Esc` (Mac) veya `Ctrl+Shift+Esc` (Windows/Linux) kullanın. Ayrıca kullanıcı arayüzündeki OpenCode düğmesini de tıklayabilirsiniz.
- **Bağlam Farkındalığı**: Geçerli seçiminizi veya sekmenizi OpenCode ile otomatik olarak paylaşın.
- **Dosya Referansı Kısayolları**: Dosya referansları eklemek için `Cmd+Option+K` (Mac) veya `Alt+Ctrl+K` (Linux/Windows) kullanın. Örneğin, `@File#L37-42`.
---
## Kurulum
OpenCode'u VS Code'a ve Cursor, Windsurf, VSCodium gibi popüler çatallara yüklemek için:
1. VS Kodunu Aç
2. Entegre terminali açın
3. `opencode` komutunu çalıştırın - uzantı otomatik olarak yüklenir
Öte yandan, TUI'den `/editor` veya `/export` çalıştırdığınızda kendi IDE'nizi kullanmak istiyorsanız, `export EDITOR="code --wait"` ayarlamanız gerekir. [Learn more](/docs/tui/#editor-setup).
---
### Manuel Kurulum
Extension Marketplace'te **OpenCode**'u arayın ve **Yükle**'ye tıklayın.
---
### Sorun giderme
Uzantı otomatik olarak yüklenemezse:
- Entegre terminalde `opencode` çalıştırdığınızdan emin olun.
- IDE cihazınız için CLI'nin kurulu olduğunu doğrulayın:
- VS Kodu için: `code` komutu
- İmleç için: `cursor` komutu
- Rüzgar Sörfü için: `windsurf` komutu
- VSCodium için: `codium` komutu
- Değilse, `Cmd+Shift+P` (Mac) veya `Ctrl+Shift+P` (Windows/Linux) çalıştırılır ve "Shell Command: Install 'code' command in PATH" (veya IDE'niz için bağlantıyı) dinleyin.
- VS Code'un uzantı yükleme iznine sahip olduğundan emin olun

View File

@@ -0,0 +1,359 @@
---
title: Giriş
description: OpenCode'u kullanmaya başlayın.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
import config from "../../../../config.mjs"
export const console = config.console
[**OpenCode**](/) açık kaynaklı bir AI kodlama aracısıdır. Terminal tabanlı bir arayüz, masaüstü uygulaması veya IDE uzantısı olarak mevcuttur.
![OpenCode TUI with the opencode theme](../../../assets/lander/screenshot.png)
Hadi başlayalım.
---
#### Prerequisites
OpenCode'u terminalinizde kullanmak için ihtiyacınız olacak:
1. Şu gibi modern bir terminal emülatörü:
- [WezTerm](https://wezterm.org), cross-platform
- [Alacritty](https://alacritty.org), cross-platform
- [Ghostty](https://ghostty.org), Linux ve macOS
- [Kitty](https://sw.kovidgoyal.net/kitty/), Linux ve macOS
2. Kullanmak istediğiniz LLM sağlayıcılarının API anahtarları.
---
## Düzenlemek
OpenCode'u kurmanın en kolay yolu kurulum betiğidir.
```bash
curl -fsSL https://opencode.ai/install | bash
```
Ayrıca aşağıdaki komutlarla da yükleyebilirsiniz:
- **Node.js'yi kullanma**
<Tabs>
<TabItem label="npm">
```bash
npm install -g opencode-ai
```
</TabItem>
<TabItem label="Bun">
```bash
bun install -g opencode-ai
```
</TabItem>
<TabItem label="pnpm">
```bash
pnpm install -g opencode-ai
```
</TabItem>
<TabItem label="Yarn">
```bash
yarn global add opencode-ai
```
</TabItem>
</Tabs>
- **Homebrew'u macOS ve Linux'ta kullanma**
```bash
brew install anomalyco/tap/opencode
```
> En güncel sürümler için OpenCode dokunuşunu kullanmanızı öneririz. Resmi `brew install opencode` formülü Homebrew ekibi tarafından korunur ve daha sık güncellenir.
- **Paru'yu Arch Linux'ta kullanma**
```bash
paru -S opencode-bin
```
#### Windows
:::tip[Önerilen: WSL kullanın]
Windows'ta en iyi deneyim için [Windows Subsystem for Linux (WSL)](/docs/windows-wsl) kullanılmasını öneririz. Daha iyi performans ve OpenCode'un özellikleriyle tam uyumluluğu sağlar.
:::
- **Çikolata Kullanımı**
```bash
choco install opencode
```
- **Kepçe Kullanımı**
```bash
scoop install opencode
```
- **NPM kullanarak**
```bash
npm install -g opencode-ai
```
- **Mise Kullanımı**
```bash
mise use -g github:anomalyco/opencode
```
- **Docker'ı kullanma**
```bash
docker run -it --rm ghcr.io/anomalyco/opencode
```
OpenCode'un Bun kullanılarak Windows'a yüklenmesine yönelik destek şu anda devam etmektedir.
İkili dosyayı [Releases](https://github.com/anomalyco/opencode/releases)'dan da alabilirsiniz.
---
## Yapılandır
OpenCode ile herhangi bir LLM sağlayıcısının API anahtarlarını yapılandırarak kullanabilirsiniz.
LLM sağlayıcılarını kullanmaya yeni başlıyorsanız, [OpenCode Zen](/docs/zen) kullanmanızı öneririz.
OpenCode tarafından test edilmiş ve doğrulanmış modellerin seçilmiş bir listesidir
team.
1. TUI'de `/connect` komutunu çalıştırın, açık kodu seçin ve [opencode.ai/auth](https://opencode.ai/auth)'ye gidin.
```txt
/connect
```
2. Oturum açın, fatura ayrıntılarınızı ekleyin ve API anahtarınızı kopyalayın.
3. API anahtarınızı yapıştırın.
```txt
┌ API key
└ enter
```
Alternatif olarak diğer sağlayıcılardan birini seçebilirsiniz. [Daha fazla bilgi](/docs/providers#directory).
---
## Başlat
Artık bir sağlayıcı yapılandırdığınıza göre, bir projeye gidebilirsiniz.
üzerinde çalışmak istiyorsun.
```bash
cd /path/to/project
```
Ve OpenCode'u çalıştırın.
```bash
opencode
```
Daha sonra aşağıdaki komutu çalıştırarak proje için OpenCode'u başlatın.
```bash frame="none"
/init
```
Bu, OpenCode'un projenizi analiz etmesini ve bir `AGENTS.md` dosyası oluşturmasını sağlayacaktır.
proje kökü.
:::tip
Projenizin `AGENTS.md` dosyasını Git'e göndermelisiniz.
:::
Bu, OpenCode'un proje yapısını ve kodlama modellerini anlamasına yardımcı olur
kullanılmış.
---
## Usage
Artık projeniz üzerinde çalışmak için OpenCode'u kullanmaya hazırsınız. Sormaktan çekinmeyin
anything!
Yapay zeka kodlama aracısını kullanma konusunda yeniyseniz aşağıda bazı örnekleri bulabilirsiniz:
help.
---
### Soru sor
OpenCode'dan kod tabanını size açıklamasını isteyebilirsiniz.
:::tip
Projedeki dosyaları bulanık aramak için `@` tuşunu kullanın.
:::
```txt frame="none" "@packages/functions/src/api/index.ts"
How is authentication handled in @packages/functions/src/api/index.ts
```
Kod tabanının üzerinde çalışmadığınız bir kısmı varsa bu yararlı olur.
---
### Add features
OpenCode'dan projenize yeni özellikler eklemesini isteyebilirsiniz. Yine de öncelikle ondan bir plan oluşturmasını istemenizi öneririz.
1. **Bir plan oluşturun**
OpenCode, değişiklik yapma yeteneğini devre dışı bırakan bir _Plan moduna_ sahiptir ve
bunun yerine özelliğin nasıl uygulanacağını önerin.
**Sekme** tuşunu kullanarak buna geçin. Bunun için sağ alt köşede bir gösterge göreceksiniz.
```bash frame="none" title="Switch to Plan mode"
<TAB>
```
Now let's describe what we want it to do.
```txt frame="none"
When a user deletes a note, we'd like to flag it as deleted in the database.
Then create a screen that shows all the recently deleted notes.
From this screen, the user can undelete a note or permanently delete it.
```
OpenCode'a ne istediğinizi anlamak için yeterli ayrıntıyı vermek istiyorsunuz. Yardımcı olur
onunla ekibinizdeki kıdemsiz bir geliştiriciyle konuşuyormuş gibi konuşmak.
:::tip
OpenCode'a, ne anladığınızı anlamasına yardımcı olacak bol miktarda bağlam ve örnek verin.
want.
:::
2. **Planı yineleyin**
Size bir plan sunduğunda ona geri bildirimde bulunabilir veya daha fazla ayrıntı ekleyebilirsiniz.
```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
İsteme eklemek için görüntüleri terminale sürükleyip bırakın.
:::
OpenCode, verdiğiniz tüm görselleri tarayabilir ve istemlere ekleyebilir. Yapabilirsiniz
bunu bir görüntüyü terminale sürükleyip bırakarak yapın.
3. **Özelliği oluşturun**
Plan konusunda kendinizi rahat hissettiğinizde, şu şekilde _Oluşturma moduna_ geri dönün:
**Sekme** tuşuna tekrar basmak.
```bash frame="none"
<TAB>
```
Ve ondan değişiklikleri yapmasını istiyoruz.
```bash frame="none"
Sounds good! Go ahead and make the changes.
```
---
### Değişiklik yap
Daha basit değişiklikler için OpenCode'dan bunu doğrudan oluşturmasını isteyebilirsiniz.
Önce planı gözden geçirmeye gerek kalmadan.
```txt frame="none" "@packages/functions/src/settings.ts" "@packages/functions/src/notes.ts"
We need to add authentication to the /settings route. Take a look at how this is
handled in the /notes route in @packages/functions/src/notes.ts and implement
the same logic in @packages/functions/src/settings.ts
```
OpenCode'un doğru kararı vermesi için yeterli miktarda ayrıntı sağladığınızdan emin olmak istiyorsunuz.
değişiklikler.
---
### Undo changes
Diyelim ki OpenCode'dan bazı değişiklikler yapmasını istediniz.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
Ama istediğinin bu olmadığını anlıyorsun. Değişiklikleri **geri alabilirsiniz**
`/undo` komutunu kullanarak.
```bash frame="none"
/undo
```
OpenCode artık yaptığınız değişiklikleri geri alacak ve orijinal mesajınızı gösterecek
again.
```txt frame="none" "@packages/functions/src/api/index.ts"
Can you refactor the function in @packages/functions/src/api/index.ts?
```
Buradan komut isteminde ince ayar yapabilir ve OpenCode'dan tekrar denemesini isteyebilirsiniz.
:::tip
Birden çok değişikliği geri almak için `/undo` komutunu birden çok kez çalıştırabilirsiniz.
:::
Veya `/redo` komutunu kullanarak değişiklikleri **yeniden yapabilirsiniz**.
```bash frame="none"
/redo
```
---
## Paylaşmak
OpenCode ile yaptığınız görüşmeler [eşinizle paylaşılabilir]
takım](/docs/share).
```bash frame="none"
/share
```
Bu, mevcut konuşmaya bir bağlantı oluşturacak ve bunu panonuza kopyalayacaktır.
:::note
Konuşmalar varsayılan olarak paylaşılmaz.
:::
İşte OpenCode'lu bir [örnek konuşma](https://opencode.ai/s/4XP1fce5).
---
## Customize
İşte bu kadar! Artık OpenCode'u kullanma konusunda profesyonelsiniz.
Kendinize ait hale getirmek için [picking a theme](/docs/themes), [customizing the keybinds](/docs/keybinds), [configuring code formatters](/docs/formatters), [creating custom commands](/docs/commands) veya [OpenCode config](/docs/config) ile oynamanızı öneririz.

View File

@@ -0,0 +1,192 @@
---
title: Tuş bağlantıları
description: Tuş bağlantılarınızı özelleştirin.
---
OpenCode, OpenCode yapılandırması aracılığıyla özelleştirebileceğiniz bir tuş bağlantıları listesine sahiptir.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"leader": "ctrl+x",
"app_exit": "ctrl+c,ctrl+d,<leader>q",
"editor_open": "<leader>e",
"theme_list": "<leader>t",
"sidebar_toggle": "<leader>b",
"scrollbar_toggle": "none",
"username_toggle": "none",
"status_view": "<leader>s",
"tool_details": "none",
"session_export": "<leader>x",
"session_new": "<leader>n",
"session_list": "<leader>l",
"session_timeline": "<leader>g",
"session_fork": "none",
"session_rename": "none",
"session_share": "none",
"session_unshare": "none",
"session_interrupt": "escape",
"session_compact": "<leader>c",
"session_child_cycle": "<leader>right",
"session_child_cycle_reverse": "<leader>left",
"session_parent": "<leader>up",
"messages_page_up": "pageup,ctrl+alt+b",
"messages_page_down": "pagedown,ctrl+alt+f",
"messages_line_up": "ctrl+alt+y",
"messages_line_down": "ctrl+alt+e",
"messages_half_page_up": "ctrl+alt+u",
"messages_half_page_down": "ctrl+alt+d",
"messages_first": "ctrl+g,home",
"messages_last": "ctrl+alt+g,end",
"messages_next": "none",
"messages_previous": "none",
"messages_copy": "<leader>y",
"messages_undo": "<leader>u",
"messages_redo": "<leader>r",
"messages_last_user": "none",
"messages_toggle_conceal": "<leader>h",
"model_list": "<leader>m",
"model_cycle_recent": "f2",
"model_cycle_recent_reverse": "shift+f2",
"model_cycle_favorite": "none",
"model_cycle_favorite_reverse": "none",
"variant_cycle": "ctrl+t",
"command_list": "ctrl+p",
"agent_list": "<leader>a",
"agent_cycle": "tab",
"agent_cycle_reverse": "shift+tab",
"input_clear": "ctrl+c",
"input_paste": "ctrl+v",
"input_submit": "return",
"input_newline": "shift+return,ctrl+return,alt+return,ctrl+j",
"input_move_left": "left,ctrl+b",
"input_move_right": "right,ctrl+f",
"input_move_up": "up",
"input_move_down": "down",
"input_select_left": "shift+left",
"input_select_right": "shift+right",
"input_select_up": "shift+up",
"input_select_down": "shift+down",
"input_line_home": "ctrl+a",
"input_line_end": "ctrl+e",
"input_select_line_home": "ctrl+shift+a",
"input_select_line_end": "ctrl+shift+e",
"input_visual_line_home": "alt+a",
"input_visual_line_end": "alt+e",
"input_select_visual_line_home": "alt+shift+a",
"input_select_visual_line_end": "alt+shift+e",
"input_buffer_home": "home",
"input_buffer_end": "end",
"input_select_buffer_home": "shift+home",
"input_select_buffer_end": "shift+end",
"input_delete_line": "ctrl+shift+d",
"input_delete_to_line_end": "ctrl+k",
"input_delete_to_line_start": "ctrl+u",
"input_backspace": "backspace,shift+backspace",
"input_delete": "ctrl+d,delete,shift+delete",
"input_undo": "ctrl+-,super+z",
"input_redo": "ctrl+.,super+shift+z",
"input_word_forward": "alt+f,alt+right,ctrl+right",
"input_word_backward": "alt+b,alt+left,ctrl+left",
"input_select_word_forward": "alt+shift+f,alt+shift+right",
"input_select_word_backward": "alt+shift+b,alt+shift+left",
"input_delete_word_forward": "alt+d,alt+delete,ctrl+delete",
"input_delete_word_backward": "ctrl+w,ctrl+backspace,alt+backspace",
"history_previous": "up",
"history_next": "down",
"terminal_suspend": "ctrl+z",
"terminal_title_toggle": "none",
"tips_toggle": "<leader>h",
"display_thinking": "none"
}
}
```
---
## Leader key
OpenCode çoğu tuş ataması için `leader` anahtarını kullanır. Bu, terminalinizdeki çakışmaları önler.
Varsayılan olarak `ctrl+x` lider tuştur ve çoğu eylem önce lider tuşa, ardından kısayola basmanızı gerektirir. Örneğin, yeni bir oturum başlatmak için önce `ctrl+x` tuşuna, ardından `n` tuşuna basarsınız.
Tuş atamalarınız için lider anahtar kullanmanıza gerek yoktur ancak bunu yapmanızı öneririz.
---
## Tuş atamasını devre dışı bırak
Anahtarı yapılandırmanıza "none" değeriyle ekleyerek bir tuş atamasını devre dışı bırakabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"keybinds": {
"session_compact": "none"
}
}
```
---
## Masaüstü istemi kısayolları
OpenCode masaüstü uygulaması bilgi istemi girişi, metni düzenlemek için yaygın Readline/Emacs tarzı kısayolları destekler. Bunlar yerleşiktir ve şu anda `opencode.json` aracılığıyla yapılandırılamaz.
| Shortcut | Action |
| -------- | ---------------------------------------- |
| `ctrl+a` | Geçerli satırın başına git |
| `ctrl+e` | Move to end of current line |
| `ctrl+b` | Move cursor back one character |
| `ctrl+f` | Move cursor forward one character |
| `alt+b` | Move cursor back one word |
| `alt+f` | Move cursor forward one word |
| `ctrl+d` | Delete character under cursor |
| `ctrl+k` | Kill to end of line |
| `ctrl+u` | Satırın başına kadar öldür |
| `ctrl+w` | Kill previous word |
| `alt+d` | Kill next word |
| `ctrl+t` | Transpose characters |
| `ctrl+g` | Cancel popovers / abort running response |
---
## Shift+Enter
Bazı terminaller varsayılan olarak Enter ile değiştirici tuşlar göndermez. Terminalinizi, kaçış dizisi olarak `Shift+Enter` gönderecek şekilde yapılandırmanız gerekebilir.
### Windows Terminali
`settings.json` cihazınızı şu adreste açın:
```
%LOCALAPPDATA%\Packages\Microsoft.WindowsTerminal_8wekyb3d8bbwe\LocalState\settings.json
```
Bunu kök düzeyindeki `actions` dizisine ekleyin:
```json
"actions": [
{
"command": {
"action": "sendInput",
"input": "\u001b[13;2u"
},
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
Bunu kök düzeyindeki `keybindings` dizisine ekleyin:
```json
"keybindings": [
{
"keys": "shift+enter",
"id": "User.sendInput.ShiftEnterCustom"
}
]
```
Dosyayı kaydedin ve Windows Terminalini yeniden başlatın veya yeni bir sekme açın.

View File

@@ -0,0 +1,188 @@
---
title: LSP Sunucular
description: OpenCode, LSP sunucularınızla bütünleşir.
---
OpenCode, LLM'nin kod tabanınızla etkileşime girmesine yardımcı olmak için Dil Sunucusu Protokolünüzle (LSP) bütünleşir. LLM'ye geri bildirim sağlamak için tanılamayı kullanır.
---
## Built-in
OpenCode, popüler diller için çeşitli yerleşik LSP sunucularıyla birlikte gelir:
| LSP Sunucu | Uzantılar | Gereksinimler |
| ------------------- | ------------------------------------------------------------------- | --------------------------------------------------------------------- |
| astro | .astro | Astro projeleri için otomatik kurulumlar |
| bash | .sh, .bash, .zsh, .ksh | Bash-dil-sunucusunu otomatik olarak yükler |
| çıngırak | .c, .cpp, .cc, .cxx, .c++, .h, .hpp, .hh, .hxx, .h++ | C/C++ projeleri için otomatik kurulumlar |
| csharp | .cs | `.NET SDK` installed |
| clojure-lsp | .clj, .cljs, .cljc, .edn | `clojure-lsp` komutu mevcut |
| dart | .dart | `dart` komutu mevcut |
| den | .ts, .tsx, .js, .jsx, .mjs | `deno` komutu mevcut (deno.json/deno.jsonc otomatik olarak algılanır) |
| iksir-ls | .ex, .exs | `elixir` komutu mevcut |
| eslint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue | `eslint` dependency in project |
| fsharp | .fs, .fsi, .fsx, .fsscript | `.NET SDK` installed |
| parıltı | .gliam | `gleam` komutu mevcut |
| lütfen | .go | `go` komutu mevcut |
| hls | .hs, .lhs | `haskell-language-server-wrapper` komutu mevcut |
| jdtls | .java | `Java SDK (version 21+)` installed |
| kotlin-ls | .kt, .kts | Kotlin projeleri için otomatik kurulumlar |
| lua-ls | .lua | Lua projeleri için otomatik kurulumlar |
| hayır | .nix | `nixd` komutu mevcut |
| ocaml-lsp | .ml, .mli | `ocamllsp` komutu mevcut |
| oxlint | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts, .vue, .astro, .svelte | `oxlint` dependency in project |
| php internet | .php | PHP projeleri için otomatik yüklemeler |
| prizma | .prizma | `prisma` komutu mevcut |
| pyright | .py, .pyi | `pyright` dependency installed |
| yakut-lsp (rubocop) | .rb, .rake, .gemspec, .ru | `ruby` ve `gem` komutları mevcut |
| pas | .rs | `rust-analyzer` komutu mevcut |
| sourcekit-lsp | .swift, .objc, .objcpp | `swift` installed (`xcode` on macOS) |
| ince | .svelte | Svelte projeleri için otomatik kurulumlar |
| yeryüzü | .tf, .tfvars | GitHub sürümlerinden otomatik yüklemeler |
| minik sis | .typ, .typc | GitHub sürümlerinden otomatik yüklemeler |
| typescript | .ts, .tsx, .js, .jsx, .mjs, .cjs, .mts, .cts | `typescript` dependency in project |
| vue | .vue | Vue projeleri için otomatik yüklemeler |
| yaml-ls | .yaml, .yml | Red Hat yaml-dil-sunucusunu otomatik olarak yükler |
| zl'ler | .zig, .zon | `zig` komutu mevcut |
Yukarıdaki dosya uzantılarından biri tespit edildiğinde ve gereksinimler karşılandığında LSP sunucuları otomatik olarak etkinleştirilir.
:::note
`OPENCODE_DISABLE_LSP_DOWNLOAD` ortam değişkenini `true` olarak ayarlayarak otomatik LSP sunucu indirmelerini devre dışı bırakabilirsiniz.
:::
---
## Nasıl Çalışır?
Opencode bir dosyayı açtığında:
1. Dosya uzantısını tüm etkin LSP sunucularına göre kontrol eder.
2. Henüz çalışmıyorsa uygun LSP sunucusunu başlatır.
---
## Yapılandır
LSP sunucularını, açık kod yapılandırmanızdaki `lsp` bölümü aracılığıyla özelleştirebilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"lsp": {}
}
```
Her LSP sunucusu aşağıdakileri destekler:
| Emlak | Tür | Açıklama |
| ---------------- | ------ | -------------------------------------------------------------------- |
| `disabled` | boole | LSP sunucusunu devre dışı bırakmak için bunu `true` olarak ayarlayın |
| `command` | dize[] | LSP sunucusunu başlatma komutu |
| `extensions` | dize[] | Bu LSP sunucusunun işlemesi gereken dosya uzantıları |
| `env` | nesne | Sunucuyu başlatırken ayarlanacak ortam değişkenleri |
| `initialization` | nesne | LSP sunucusuna gönderilecek başlatma seçenekleri |
Let's look at some examples.
---
### Ortam değişkenleri
LSP sunucusunu başlatırken ortam değişkenlerini ayarlamak için `env` özelliğini kullanın:
```json title="opencode.json" {5-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"rust": {
"env": {
"RUST_LOG": "debug"
}
}
}
}
```
---
### Initialization options
Başlatma seçeneklerini LSP sunucusuna iletmek için `initialization` özelliğini kullanın. Bunlar LSP `initialize` isteği sırasında gönderilen sunucuya özel ayarlardır:
```json title="opencode.json" {5-9}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"initialization": {
"preferences": {
"importModuleSpecifierPreference": "relative"
}
}
}
}
}
```
:::note
Başlatma seçenekleri LSP sunucusuna göre değişir. Mevcut seçenekler için LSP sunucunuzun belgelerine bakın.
:::
---
### LSP sunucularını devre dışı bırakma
**tüm** LSP sunucularını genel olarak devre dışı bırakmak için `lsp`'yi `false` olarak ayarlayın:
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"lsp": false
}
```
**Belirli** bir LSP sunucusunu devre dışı bırakmak için `disabled`'yi `true` olarak ayarlayın:
```json title="opencode.json" {5}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"typescript": {
"disabled": true
}
}
}
```
---
### Custom LSP servers
Komutu ve dosya uzantılarını belirterek özel LSP sunucuları ekleyebilirsiniz:
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"lsp": {
"custom-lsp": {
"command": ["custom-lsp-server", "--stdio"],
"extensions": [".custom"]
}
}
}
```
---
## Ek Bilgiler
### PHP Intelephense
PHP Intelephense, bir lisans anahtarı aracılığıyla premium özellikler sunar. Anahtarı (yalnızca) şu adresteki bir metin dosyasına yerleştirerek bir lisans anahtarı sağlayabilirsiniz:
- MacOS/Linux'ta: `$HOME/intelephense/licence.txt`
- Windows'ta: `%USERPROFILE%/intelephense/licence.txt`
Dosya, ek içerik olmadan yalnızca lisans anahtarını içermelidir.

View File

@@ -0,0 +1,511 @@
---
title: MCP sunucuları
description: Yerel ve uzak MCP araçlarını ekleyin.
---
_Model Bağlam Protokolü_ veya MCP kullanarak OpenCode'a harici araçlar ekleyebilirsiniz. OpenCode hem yerel hem de uzak sunucuları destekler.
MCP araçları eklendikten sonra yerleşik araçların yanı sıra LLM tarafından otomatik olarak kullanılabilir.
---
#### Caveats
Bir MCP sunucusu kullandığınızda bağlama eklenir. Çok fazla aletiniz varsa, bu hızla artabilir. Bu nedenle hangi MCP sunucularını kullandığınıza dikkat etmenizi öneririz.
:::tip
MCP sunucuları içeriğinize katkıda bulunur, bu nedenle hangilerini etkinleştirdiğinize dikkat etmek istersiniz.
:::
GitHub MCP sunucusu gibi belirli MCP sunucuları çok sayıda belirteç ekleme eğilimindedir ve bağlam sınırını kolayca aşabilir.
---
## Olanak vermek
MCP sunucularını [OpenCode Config](https://opencode.ai/docs/config/)'nizde `mcp` altında tanımlayabilirsiniz. Her MCP'ü benzersiz bir adla ekleyin. LLM isteminde bulunurken bu MCP adına başvurabilirsiniz.
```jsonc title="opencode.jsonc" {6}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"name-of-mcp-server": {
// ...
"enabled": true,
},
"name-of-other-mcp-server": {
// ...
},
},
}
```
Ayrıca `enabled` öğesini `false` olarak ayarlayarak bir sunucuyu devre dışı bırakabilirsiniz. Bir sunucuyu yapılandırmanızdan kaldırmadan geçici olarak devre dışı bırakmak istiyorsanız bu kullanışlıdır.
---
### Overriding remote defaults
Kuruluşlar, `.well-known/opencode` uç noktaları aracılığıyla varsayılan MCP sunucularını sağlayabilir. Bu sunucular varsayılan olarak devre dışı bırakılarak kullanıcıların ihtiyaç duydukları sunucuları seçmelerine olanak tanınabilir.
Kuruluşunuzun uzak yapılandırmasından belirli bir sunucuyu etkinleştirmek için onu `enabled: true` ile yerel yapılandırmanıza ekleyin:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"jira": {
"type": "remote",
"url": "https://jira.example.com/mcp",
"enabled": true
}
}
}
```
Yerel yapılandırma değerleriniz uzak varsayılanları geçersiz kılar. Daha fazla ayrıntı için [config precedence](/docs/config#precedence-order)'a bakın.
---
## Yerel
`type` kullanarak yerel MCP sunucularını MCP nesnesi içindeki `"local"`'ye ekleyin.
```jsonc title="opencode.jsonc" {15}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-local-mcp-server": {
"type": "local",
// Or ["bun", "x", "my-mcp-command"]
"command": ["npx", "-y", "my-mcp-command"],
"enabled": true,
"environment": {
"MY_ENV_VAR": "my_env_var_value",
},
},
},
}
```
Komut, yerel MCP sunucusunun nasıl başlatıldığıdır. Ayrıca ortam değişkenlerinin bir listesini de iletebilirsiniz.
Örneğin, [`@modelcontextprotocol/server-everything`](https://www.npmjs.com/package/@modelcontextprotocol/server-everything) MCP test sunucusunu şu şekilde görebilirsiniz.
```jsonc title="opencode.jsonc"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"mcp_everything": {
"type": "local",
"command": ["npx", "-y", "@modelcontextprotocol/server-everything"],
},
},
}
```
Ve bunu kullanmak için istemlerime `use the mcp_everything tool` kullanıyorum.
```txt "mcp_everything"
use the mcp_everything tool to add the number 3 and 4
```
---
#### Options
Yerel bir MCP sunucusunu yapılandırmak için tüm seçenekler burada verilmiştir.
| Seçenek | Tür | Gerekli | Açıklama |
| ------------- | ------- | ------- | ---------------------------------------------------------------------------------------------- |
| `type` | Dize | Y | MCP sunucu bağlantısı türü, `"local"` olmalıdır. |
| `command` | Dizi | Y | MCP sunucusunu çalıştırmak için komut ve argümanlar. |
| `environment` | Nesne | | Sunucuyu çalıştırırken ayarlanacak ortam değişkenleri. |
| `enabled` | Boolean | | Başlangıçta MCP sunucusunu etkinleştirin veya devre dışı bırakın. |
| `timeout` | Sayı | | MCP sunucusundan araçları getirirken ms cinsinden zaman aşımı. Varsayılan 5000'dir (5 saniye). |
---
## Uzak
`type`'yi `"remote"` olarak ayarlayarak uzak MCP sunucularını ekleyin.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-remote-mcp": {
"type": "remote",
"url": "https://my-mcp-server.com",
"enabled": true,
"headers": {
"Authorization": "Bearer MY_API_KEY"
}
}
}
}
```
`url` uzak MCP sunucusunun URL'sidir ve `headers` seçeneğiyle bir başlık listesi iletebilirsiniz.
---
#### Options
| Seçenek | Tür | Gerekli | Açıklama |
| --------- | ------- | ------- | ---------------------------------------------------------------------------------------------- |
| `type` | Dize | Y | MCP sunucu bağlantısı türü, `"remote"` olmalıdır. |
| `url` | Dize | Y | Uzak MCP sunucusunun URL. |
| `enabled` | Boolean | | Başlangıçta MCP sunucusunu etkinleştirin veya devre dışı bırakın. |
| `headers` | Nesne | | İstekle birlikte gönderilecek başlıklar. |
| `oauth` | Object | | OAuth authentication configuration. See [OAuth](#oauth) section below. |
| `timeout` | Sayı | | MCP sunucusundan araçları getirirken ms cinsinden zaman aşımı. Varsayılan 5000'dir (5 saniye). |
---
## OAuth
OpenCode, uzak MCP sunucuları için OAuth kimlik doğrulamasını otomatik olarak yönetir. Bir sunucu kimlik doğrulaması gerektirdiğinde OpenCode şunları yapar:
1. 401 yanıtını tespit edin ve OAuth akışını başlatın
2. Sunucu tarafından destekleniyorsa **Dinamik İstemci Kaydı (RFC 7591)** kullanın
3. Gelecekteki istekler için belirteçleri güvenli bir şekilde saklayın
---
### Automatic
OAuth'un etkin olduğu çoğu MCP sunucusu için özel bir yapılandırmaya gerek yoktur. Uzak sunucuyu yapılandırmanız yeterli:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp"
}
}
}
```
Sunucu kimlik doğrulama gerektiriyorsa OpenCode, onu ilk kez kullanmaya çalıştığınızda kimlik doğrulamanızı isteyecektir. Değilse, `opencode mcp auth <server-name>` ile [manually trigger the flow](#authenticating) yapabilirsiniz.
---
### Ön kayıtlı
MCP sunucu sağlayıcısından istemci kimlik bilgileriniz varsa, bunları yapılandırabilirsiniz:
```json title="opencode.json" {7-11}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-oauth-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": {
"clientId": "{env:MY_MCP_CLIENT_ID}",
"clientSecret": "{env:MY_MCP_CLIENT_SECRET}",
"scope": "tools:read tools:execute"
}
}
}
}
```
---
### Authenticating
Kimlik doğrulamayı manuel olarak tetikleyebilir veya kimlik bilgilerini yönetebilirsiniz.
Belirli bir MCP sunucusuyla kimlik doğrulaması yapın:
```bash
opencode mcp auth my-oauth-server
```
Tüm MCP sunucularını ve kimlik doğrulama durumlarını listeleyin:
```bash
opencode mcp list
```
Remove stored credentials:
```bash
opencode mcp logout my-oauth-server
```
`mcp auth` komutu tarayıcınızı yetkilendirme için açacaktır. Yetkilendirmenizin ardından OpenCode, belirteçleri `~/.local/share/opencode/mcp-auth.json`'de güvenli bir şekilde saklar.
---
#### OAuth'u devre dışı bırakma
Bir sunucu için otomatik OAuth'u devre dışı bırakmak istiyorsanız (örneğin, bunun yerine API anahtarlarını kullanan sunucular için), `oauth`'yi `false` olarak ayarlayın:
```json title="opencode.json" {7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-api-key-server": {
"type": "remote",
"url": "https://mcp.example.com/mcp",
"oauth": false,
"headers": {
"Authorization": "Bearer {env:MY_API_KEY}"
}
}
}
}
```
---
#### OAuth Options
| Seçenek | Tür | Açıklama |
| -------------- | --------------- | -------------------------------------------------------------------------------- |
| `oauth` | Object \| false | OAuth config object, or `false` to disable OAuth auto-detection. |
| `clientId` | Dize | OAuth istemci kimliği. Sağlanmadığı takdirde dinamik müşteri kaydı denenecektir. |
| `clientSecret` | Dize | Yetkilendirme sunucusu gerektiriyorsa OAuth istemci sırrı. |
| `scope` | String | OAuth scopes to request during authorization. |
#### Debugging
Uzak bir MCP sunucusunun kimlik doğrulaması başarısız olursa aşağıdakileri kullanarak sorunları teşhis edebilirsiniz:
```bash
# View auth status for all OAuth-capable servers
opencode mcp auth list
# Debug connection and OAuth flow for a specific server
opencode mcp debug my-oauth-server
```
`mcp debug` komutu mevcut kimlik doğrulama durumunu gösterir, HTTP bağlantısını test eder ve OAuth bulma akışını dener.
---
## Üstesinden gelmek
MCP'leriniz yerleşik araçların yanı sıra OpenCode'da araç olarak mevcuttur. Böylece bunları diğer araçlar gibi OpenCode yapılandırması aracılığıyla yönetebilirsiniz.
---
### Global
Bu, bunları global olarak etkinleştirebileceğiniz veya devre dışı bırakabileceğiniz anlamına gelir.
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp-foo": false
}
}
```
Eşleşen tüm MCP'leri devre dışı bırakmak için bir glob modeli de kullanabiliriz.
```json title="opencode.json" {14}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp-foo": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-foo"]
},
"my-mcp-bar": {
"type": "local",
"command": ["bun", "x", "my-mcp-command-bar"]
}
},
"tools": {
"my-mcp*": false
}
}
```
Burada tüm MCP'leri devre dışı bırakmak için `my-mcp*` glob modelini kullanıyoruz.
---
### Temsilci başına
Çok sayıda MCP sunucunuz varsa, bunları yalnızca aracı başına etkinleştirmek ve genel olarak devre dışı bırakmak isteyebilirsiniz. Bunu yapmak için:
1. Global olarak bir araç olarak devre dışı bırakın.
2. [agent config](/docs/agents#tools)'nizde, MCP sunucusunu bir araç olarak etkinleştirin.
```json title="opencode.json" {11, 14-18}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"my-mcp": {
"type": "local",
"command": ["bun", "x", "my-mcp-command"],
"enabled": true
}
},
"tools": {
"my-mcp*": false
},
"agent": {
"my-agent": {
"tools": {
"my-mcp*": true
}
}
}
}
```
---
#### Glob patterns
Glob modeli, basit normal ifade globbing modellerini kullanır:
- `*` herhangi bir karakterin sıfır veya daha fazlasıyla eşleşir (örneğin, `"my-mcp*"` `my-mcp_search`, `my-mcp_list` vb. ile eşleşir)
- `?` matches exactly one character
- All other characters match literally
:::note
MCP sunucu araçları önek olarak sunucu adıyla kayıtlıdır, dolayısıyla bir sunucuya ilişkin tüm araçları devre dışı bırakmak için aşağıdakileri kullanmanız yeterlidir:
```
"mymcpservername_*": false
```
:::
---
## Örnekler
Aşağıda bazı yaygın MCP sunucularının örnekleri verilmiştir. Diğer sunucuları belgelemek istiyorsanız PR gönderebilirsiniz.
---
### Sentry
Sentry projelerinizle ve sorunlarınızla etkileşimde bulunmak için [Sentry MCP server](https://mcp.sentry.dev) ekleyin.
```json title="opencode.json" {4-8}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"sentry": {
"type": "remote",
"url": "https://mcp.sentry.dev/mcp",
"oauth": {}
}
}
}
```
Yapılandırmayı ekledikten sonra Sentry ile kimlik doğrulaması yapın:
```bash
opencode mcp auth sentry
```
Bu, OAuth akışını tamamlamak ve OpenCode'u Sentry hesabınıza bağlamak için bir tarayıcı penceresi açacaktır.
Kimlik doğrulaması yapıldıktan sonra sorunları, projeleri ve hata verilerini sorgulamak için istemlerinizde Sentry araçlarını kullanabilirsiniz.
```txt "use sentry"
Show me the latest unresolved issues in my project. use sentry
```
---
### Bağlam7
Dokumanlar arasında arama yapmak için [Context7 MCP server](https://github.com/upstash/context7) ekleyin.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp"
}
}
}
```
Ücretsiz bir hesaba kaydolduysanız API anahtarınızı kullanarak daha yüksek ücret limitleri elde edebilirsiniz.
```json title="opencode.json" {7-9}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"context7": {
"type": "remote",
"url": "https://mcp.context7.com/mcp",
"headers": {
"CONTEXT7_API_KEY": "{env:CONTEXT7_API_KEY}"
}
}
}
}
```
Burada `CONTEXT7_API_KEY` ortam değişkeninin ayarlandığını varsayıyoruz.
Context7 MCP sunucunu kullanmak için isteklerinize `use context7` ekleyin.
```txt "use context7"
Configure a Cloudflare Worker script to cache JSON API responses for five minutes. use context7
```
Alternatif olarak [AGENTS.md](/docs/rules/)'a buna benzer bir şey ekleyebilirsiniz.
```md title="AGENTS.md"
When you need to search docs, use `context7` tools.
```
---
### Grep by Vercel
GitHub'daki kod parçacıkları arasında arama yapmak için [Grep by Vercel](https://grep.app) MCP sunucusunu ekleyin.
```json title="opencode.json" {4-7}
{
"$schema": "https://opencode.ai/config.json",
"mcp": {
"gh_grep": {
"type": "remote",
"url": "https://mcp.grep.app"
}
}
}
```
MCP sunucumuzu `gh_grep` olarak adlandırdığımız için, aracının onu kullanmasını sağlamak için istemlerinize `use the gh_grep tool` ekleyebilirsiniz.
```txt "use the gh_grep tool"
What's the right way to set a custom domain in an SST Astro component? use the gh_grep tool
```
Alternatif olarak [AGENTS.md](/docs/rules/)'a buna benzer bir şey ekleyebilirsiniz.
```md title="AGENTS.md"
If you are unsure how to do something, use `gh_grep` to search code examples from GitHub.
```

View File

@@ -0,0 +1,223 @@
---
title: Modelci
description: LLM sağlayıcısını ve modelinin adı.
---
OpenCode, **75+ LLM sağlayıcısını** desteklemek için [AI SDK](https://ai-sdk.dev/) ve [Models.dev](https://models.dev) kullanır ve yerel modellerin çalıştırılmasını destekler.
---
## Providers
Çoğu popüler sağlayıcı varsayılan olarak önceden yüklenmiştir. Bir sağlayıcının kimlik bilgilerini `/connect` komutu aracılığıyla eklediyseniz, bunlar OpenCode'u başlattığınızda kullanılabilir olacaktır.
[providers](/docs/providers) hakkında daha fazla bilgi edinin.
---
## Bir model seçin
Sağlayıcınızı yapılandırdıktan sonra aşağıdaki komutu yazarak istediğiniz modeli seçebilirsiniz:
```bash frame="none"
/models
```
---
## Recommended models
Piyasada pek çok model var ve her hafta yeni modeller çıkıyor.
:::tip
Önerdiğimiz modellerden birini kullanmayı düşünün.
:::
Ancak, hem kod oluşturmada hem de araç çağırmada iyi olan yalnızca birkaçı var.
Burada, OpenCode ile belirli bir sıraya göre iyi çalışan birkaç model yer almaktadır. (Bu kapsamlı bir liste değildir ve mutlaka güncel olması da gerekmez):
- GPT 5.2
- GPT 5.1 Codex
- Claude Opus 4.5
- Claude Sonnet 4.5
- Minimax M2.1
- Gemini 3 Pro
---
## Varsayılanı ayarla
Bunlardan birini varsayılan model olarak ayarlamak için `model` anahtarınızı telefonunuzudan ayarlayabilirsiniz.
OpenCode yapılandırması
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"model": "lmstudio/google/gemma-3n-e4b"
}
```
Burada tam kimlik `provider_id/model_id`'dir. Örneğin, [OpenCode Zen](/docs/zen) kullanıyorsanız, GPT 5.1 Codex için `opencode/gpt-5.1-codex` kullanırsınız.
Bir [custom provider](/docs/providers#custom) yapılandırılmışsa, `provider_id`, performansınızın `provider` bölümünden gelen anahtardır ve `model_id`, `provider.models`'den gelen anahtardır.
---
## Modelleri yapılandırın
Bir modelin seçeneklerini genel olarak yapılandırma aracılığıyla yapılandırabilirsiniz.
```jsonc title="opencode.jsonc" {7-12,19-24}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"options": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
"include": ["reasoning.encrypted_content"],
},
},
},
},
"anthropic": {
"models": {
"claude-sonnet-4-5-20250929": {
"options": {
"thinking": {
"type": "enabled",
"budgetTokens": 16000,
},
},
},
},
},
},
}
```
Burada iki yerleşik model için genel ayarları yapılandırıyoruz: `openai` sağlayıcısı aracılığıyla erişildiğinde `gpt-5` ve `anthropic` sağlayıcısı aracılığıyla erişildiğinde `claude-sonnet-4-20250514`.
Yerleşik sağlayıcı ve model adları [Models.dev](https://models.dev) adresinde bulunabilir.
Bu seçenekleri kullandığınız tüm aracılar için de yapılandırabilirsiniz. Aracı yapılandırması burada tüm genel seçenekleri geçersiz kılar. [Learn more](/docs/agents/#additional).
Ayrıca yerleşik çeşitleri genişleten özel varyantlar da tanımlayabilirsiniz. Varyantlar, yinelenen girişler oluşturmadan aynı model için farklı ayarları yapılandırmanıza olanak tanır:
```jsonc title="opencode.jsonc" {6-21}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"opencode": {
"models": {
"gpt-5": {
"variants": {
"high": {
"reasoningEffort": "high",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
"low": {
"reasoningEffort": "low",
"textVerbosity": "low",
"reasoningSummary": "auto",
},
},
},
},
},
},
}
```
---
## Varyantlar
Birçok model, farklı konfigürasyonlara sahip birden fazla kapasiteye sahip. OpenCode, popüler sağlayıcılar için sunulan değişkenlerle birlikte gelir.
### Yerleşik çeşitler
OpenCode birçok sağlayıcı için varsayılan değişkenlerle birlikte gelir:
**Antropik**:
- `high` - Yüksek düşünme bütçesi (varsayılan)
- `max` - Maksimum düşünme bütçesi
**OpenAI**:
Modele göre değişir ancak kabaca:
- `none` - Gerekçe yok
- `minimal` - Minimum akıl yürütme çabası
- `low` - Düşük muhakeme çabası
- `medium` - Orta düzey muhakeme çabası
- `high` - Yüksek akıl yürütme çabası
- `xhigh` - Ekstra yüksek muhakeme çabası
**Google**:
- `low` - Daha düşük effort/token bütçesi
- `high` - Daha yüksek effort/token bütçesi
:::tip
Bu liste kapsamlı değildir. Diğer birçok sağlayıcının da yerleşik varsayılanları vardır.
:::
### Özel çeşitler
Mevcut varyantları geçersiz kılabilir veya kendinizinkini ekleyebilirsiniz:
```jsonc title="opencode.jsonc" {7-18}
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"openai": {
"models": {
"gpt-5": {
"variants": {
"thinking": {
"reasoningEffort": "high",
"textVerbosity": "low",
},
"fast": {
"disabled": true,
},
},
},
},
},
},
}
```
### Döngü çeşitleri
Çeşitler arasında hızlı geçiş yapmak için `variant_cycle` tuş atamasını kullanın. [Learn more](/docs/keybinds).
---
## Loading models
OpenCode başlatıldığında modelleri aşağıdaki öncelik sırasına göre kontrol eder:
1. `--model` veya `-m` komut satırı bayrağı. Biçim, yapılandırma dosyasındakiyle aynıdır: `provider_id/model_id`.
2. OpenCode yapılandırmasındaki model listesi.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"model": "anthropic/claude-sonnet-4-20250514"
}
```
Buradaki format `provider/model`'dır.
3. En son kullanılan model.
4. Dahili öncelik kullanan ilk model.

View File

@@ -0,0 +1,331 @@
---
title: Modlar
description: farklı kullanım durumları için farklı modlar.
---
:::caution
Modlar artık açık kod yapılandırmasındaki `agent` seçeneği aracılığıyla yapılandırılıyor.
`mode` seçeneği artık kullanımdan kaldırıldı. [Learn more](/docs/agents).
:::
ık koddaki modlar, farklı kullanım durumları için davranışı, araçları ve istemleri özelleştirmenize olanak tanır.
İki yerleşik modla birlikte gelir: **build** ve **plan**. Kişiselleştirebilirsiniz
bunları veya açık kod yapılandırması aracılığıyla kendinizinkini yapılandırın.
Bir oturum sırasında modlar arasında geçiş yapabilir veya bunları yapılandırma dosyanızda yapılandırabilirsiniz.
---
## Built-in
opencode iki yerleşik modla birlikte gelir.
---
### İnşa etmek
Derleme, tüm araçların etkin olduğu **varsayılan** moddur. Bu, dosya işlemlerine ve sistem komutlarına tam erişime ihtiyaç duyduğunuz geliştirme çalışmaları için standart moddur.
---
### Plan
Planlama ve analiz için tasarlanmış sınırlı bir mod. Plan modunda aşağıdaki araçlar varsayılan olarak devre dışıdır:
- `write` - Yeni dosyalar oluşturulamıyor
- `edit` - Planın kendisini detaylandırmak için `.opencode/plans/*.md` adresinde bulunan dosyalar dışında mevcut dosyalar değiştirilemez
- `patch` - Cannot apply patches
- `bash` - Kabuk komutları yürütülemiyor
Bu mod, yapay zekanın kod tabanınızda herhangi bir gerçek değişiklik yapmadan kodu analiz etmesini, değişiklik önermesini veya plan oluşturmasını istediğinizde kullanışlıdır.
---
## Anahtarlama
Bir oturum sırasında _Tab_ tuşunu kullanarak modlar arasında geçiş yapabilirsiniz. Veya yapılandırılmış `switch_mode` tuş bağlantınız.
Ayrıca bkz.: Kod biçimlendirme yapılandırması hakkında bilgi için [Formatters](/docs/formatters).
---
## Yapılandır
Yerleşik modları özelleştirebilir veya yapılandırma aracılığıyla kendinizinkini oluşturabilirsiniz. Modlar iki şekilde yapılandırılabilir:
### JSON Configuration
`opencode.json` yapılandırma dosyanızdaki modları yapılandırın:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"mode": {
"build": {
"model": "anthropic/claude-sonnet-4-20250514",
"prompt": "{file:./prompts/build.txt}",
"tools": {
"write": true,
"edit": true,
"bash": true
}
},
"plan": {
"model": "anthropic/claude-haiku-4-20250514",
"tools": {
"write": false,
"edit": false,
"bash": false
}
}
}
}
```
### Markdown Configuration
Markdown dosyalarını kullanarak modları da tanımlayabilirsiniz. Bunları şuraya yerleştirin:
- Global: `~/.config/opencode/modes/`
- Project: `.opencode/modes/`
```markdown title="~/.config/opencode/modes/review.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.1
tools:
write: false
edit: false
bash: false
---
You are in code review mode. Focus on:
- Code quality and best practices
- Potential bugs and edge cases
- Performance implications
- Security considerations
Provide constructive feedback without making direct changes.
```
Markdown dosyası adı mod adı olur (örneğin, `review.md` bir `review` modu oluşturur).
Let's look at these configuration options in detail.
---
### Modeli
Bu modun varsayılan standardı geçersiz için `model` kontrolünü kullanın. Farklı bölümler için optimize edilmiş farklı modelleri kullanmak için kullanışlıdır. Örneğin planlama için daha hızlı bir model, uygulama için daha yetenekli bir model.
```json title="opencode.json"
{
"mode": {
"plan": {
"model": "anthropic/claude-haiku-4-20250514"
}
}
}
```
---
### Temperature
`temperature` yapılandırmasıyla yapay zekanın yanıtlarının rastgeleliğini ve yaratıcılığını kontrol edin. Düşük değerler yanıtları daha odaklı ve belirleyici hale getirirken, yüksek değerler yaratıcılığı ve değişkenliği artırır.
```json title="opencode.json"
{
"mode": {
"plan": {
"temperature": 0.1
},
"creative": {
"temperature": 0.8
}
}
}
```
Sıcaklık değerleri tipik olarak 0,0 ila 1,0 arasındadır:
- **0,0-0,2**: Çok odaklı ve belirleyici yanıtlar, kod analizi ve planlaması için idealdir
- **0,3-0,5**: Biraz yaratıcılık içeren dengeli yanıtlar, genel gelişim görevleri için iyi
- **0,6-1,0**: Daha yaratıcı ve çeşitli yanıtlar, beyin fırtınası ve keşif için yararlı
```json title="opencode.json"
{
"mode": {
"analyze": {
"temperature": 0.1,
"prompt": "{file:./prompts/analysis.txt}"
},
"build": {
"temperature": 0.3
},
"brainstorm": {
"temperature": 0.7,
"prompt": "{file:./prompts/creative.txt}"
}
}
}
```
Sıcaklık belirtilmezse, açık kod modele özgü varsayılanları kullanır (çoğu model için genellikle 0, Qwen modelleri için 0,55).
---
### Çabuk
`prompt` analiziyle bu mod için özel bir sistem bilgi istemi dosyası destekleniyor. Bilgi istemi şeması, modun amacına özel talimatlar içermelidir.
```json title="opencode.json"
{
"mode": {
"review": {
"prompt": "{file:./prompts/code-review.txt}"
}
}
}
```
Bu yol, yapılandırma dosyasının bulunduğu yere göredir. Yani bu işe yarıyor
hem global açık kod yapılandırması hem de projeye özel yapılandırma.
---
### Tools
`tools` yapılandırmasıyla bu modda hangi araçların kullanılabileceğini kontrol edin. Belirli araçları `true` veya `false` olarak ayarlayarak etkinleştirebilir veya devre dışı bırakabilirsiniz.
```json
{
"mode": {
"readonly": {
"tools": {
"write": false,
"edit": false,
"bash": false,
"read": true,
"grep": true,
"glob": true
}
}
}
}
```
Hiçbir araç belirtilmezse tüm araçlar varsayılan olarak etkindir.
---
#### Mevcut araçlar
İşte mod yapılandırması aracılığıyla kontrol edilebilecek tüm araçlar.
| Alet | Tanım |
| ----------- | ------------------------------- |
| `bash` | Kabuk komutlarını yürütün |
| `edit` | Mevcut dosyaları değiştirin |
| `write` | Yeni dosyalar oluştur |
| `read` | Dosya içeriğini oku |
| `grep` | Dosya içeriğini arayın |
| `glob` | Dosyaları desene göre bulun |
| `list` | Dizinin içeriği listele |
| `patch` | Dosyalara yama uygulama |
| `todowrite` | Yapılacaklar listelerini yönet |
| `todoread` | Yapılacaklar listelerini okuyun |
| `webfetch` | Web içeriğini getir |
---
## Custom modes
Yapılandırmaya ekleyerek kendi özel modlarınızı oluşturabilirsiniz. Her iki yaklaşımın kullanıldığı örnekler aşağıda verilmiştir:
### JSON yapılandırmasını kullanma
```json title="opencode.json" {4-14}
{
"$schema": "https://opencode.ai/config.json",
"mode": {
"docs": {
"prompt": "{file:./prompts/documentation.txt}",
"tools": {
"write": true,
"edit": true,
"bash": false,
"read": true,
"grep": true,
"glob": true
}
}
}
}
```
### Markdown dosyalarını kullanma
Projeye özel modlar için `.opencode/modes/` veya genel modlar için `~/.config/opencode/modes/`'de mod dosyaları oluşturun:
```markdown title=".opencode/modes/debug.md"
---
temperature: 0.1
tools:
bash: true
read: true
grep: true
write: false
edit: false
---
You are in debug mode. Your primary goal is to help investigate and diagnose issues.
Focus on:
- Understanding the problem through careful analysis
- Using bash commands to inspect system state
- Reading relevant files and logs
- Searching for patterns and anomalies
- Providing clear explanations of findings
Do not make any changes to files. Only investigate and report.
```
```markdown title="~/.config/opencode/modes/refactor.md"
---
model: anthropic/claude-sonnet-4-20250514
temperature: 0.2
tools:
edit: true
read: true
grep: true
glob: true
---
You are in refactoring mode. Focus on improving code quality without changing functionality.
Priorities:
- Improve code readability and maintainability
- Apply consistent naming conventions
- Reduce code duplication
- Optimize performance where appropriate
- Ensure all tests continue to pass
```
---
### Kullanım durumları
Farklı modlar için bazı yaygın kullanım durumları aşağıda verilmiştir.
- **Derleme modu**: Tüm araçların etkinleştirildiği tam geliştirme çalışması
- **Plan modu**: Değişiklik yapmadan analiz ve planlama
- **İnceleme modu**: Salt okunur erişim ve belgeleme araçlarıyla kod incelemesi
- **Hata ayıklama modu**: Bash ve okuma araçları etkinken araştırmaya odaklanıldı
- **Belgeler modu**: Dosya işlemleriyle ancak sistem komutları olmadan belge yazma
Ayrıca farklı modellerin farklı kullanım durumları için iyi olduğunu da görebilirsiniz.

View File

@@ -0,0 +1,57 @@
---
title: Ağ
description: Proxy'leri ve özel sertifikaları yapılandırın.
---
OpenCode, kurumsal ağ ortamları için standart proxy ortam değişkenlerini ve özel sertifikaları destekler.
---
## Proxy
OpenCode respects standard proxy environment variables.
```bash
# HTTPS proxy (recommended)
export HTTPS_PROXY=https://proxy.example.com:8080
# HTTP proxy (if HTTPS not available)
export HTTP_PROXY=http://proxy.example.com:8080
# Bypass proxy for local server (required)
export NO_PROXY=localhost,127.0.0.1
```
:::caution
TUI yerel bir HTTP sunucusuyla iletişim kurar. Yönlendirme döngülerini önlemek için bu bağlantının proxy'sini atlamanız gerekir.
:::
[CLI flags](/docs/cli#run) kullanarak sunucunun bağlantı noktasını ve ana bilgisayar adını yapılandırabilirsiniz.
---
### Kimlik doğrulama
Proxy'niz temel kimlik doğrulama gerektiriyorsa, kimlik bilgilerini URL dosyasına ekleyin.
```bash
export HTTPS_PROXY=http://username:password@proxy.example.com:8080
```
:::caution
Şifreleri sabit kodlamaktan kaçının. Ortam değişkenlerini veya güvenli kimlik bilgileri deposunu kullanın.
:::
NTLM veya Kerberos gibi gelişmiş kimlik doğrulaması gerektiren proxy'ler için, kimlik doğrulama yönteminizi destekleyen bir LLM Ağ Geçidi kullanmayı düşünün.
---
## Custom certificates
Kuruluşunuz HTTPS bağlantıları için özel CA'lar kullanıyorsa, OpenCode'u bunlara güvenecek şekilde yapılandırın.
```bash
export NODE_EXTRA_CA_CERTS=/path/to/ca-cert.pem
```
Bu hem proxy bağlantıları hem de doğrudan API erişimi için işe yarar.

View File

@@ -0,0 +1,237 @@
---
title: İzinler
description: Hangi işlemlerin çalıştırılması için onay işlemini kontrol edin.
---
OpenCode, belirli bir eylemin otomatik olarak mı çalıştırılacağına, size sorulacağına veya engelleneceğine karar vermek için `permission` yapılandırmasını kullanır.
`v1.1.1` itibarıyla eski `tools` boolean yapılandırması kullanımdan kaldırıldı ve `permission` ile birleştirildi. Eski `tools` yapılandırması geriye dönük uyumluluk açısından hâlâ desteklenmektedir.
---
## Actions
Each permission rule resolves to one of:
- `"allow"` — onay olmadan çalıştır
- `"ask"` — onay istemi
- `"deny"` — eylemi engelle
---
## Yapılandırma
İzinleri genel olarak (`*` ile) ayarlayabilir ve belirli araçları geçersiz kılabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"*": "ask",
"bash": "allow",
"edit": "deny"
}
}
```
Ayrıca tüm izinleri aynı anda ayarlayabilirsiniz:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": "allow"
}
```
---
## Granular Rules (Object Syntax)
Çoğu izin için, araç girişine bağlı olarak farklı eylemleri uygulamak için bir nesneyi kullanabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"npm *": "allow",
"rm *": "deny",
"grep *": "allow"
},
"edit": {
"*": "deny",
"packages/web/src/content/docs/*.mdx": "allow"
}
}
}
```
Kurallar, **son eşleşen kuralın kazanması** ile kalıp eşleşmesine göre değerlendirilir. Yaygın bir model, tümünü yakala `"*"` kuralını ilk sıraya koymak ve daha spesifik kuralları ondan sonra koymaktır.
### Wildcards
İzin kalıpları basit joker karakter eşleştirmesini kullanır:
- `*` herhangi bir karakterin sıfır veya daha fazlasıyla eşleşir
- `?` matches exactly one character
- All other characters match literally
### Ana Dizin Genişletme
Ana dizininize referans vermek için bir modelin başlangıcında `~` veya `$HOME` kullanabilirsiniz. Bu özellikle [`external_directory`](#external-directories) kuralları için kullanışlıdır.
- `~/projects/*` -> `/Users/username/projects/*`
- `$HOME/projects/*` -> `/Users/username/projects/*`
- `~` -> `/Users/username`
### Dış Dizinler
OpenCode'un başlatıldığı çalışma dizini dışındaki yollara dokunan araç çağrılarına izin vermek için `external_directory` kullanın. Bu, girdi olarak bir yolu alan tüm araçlar için geçerlidir (örneğin `read`, `edit`, `list`, `glob`, `grep` ve birçok `bash` komutu).
Ana sayfa genişletmesi (`~/...` gibi) yalnızca bir kalıbın nasıl yazıldığını etkiler. Geçerli çalışma alanının harici bir yolunu oluşturmaz, dolayısıyla çalışma dizini dışındaki yollara yine de `external_directory` aracılığıyla izin verilmesi gerekir.
Örneğin bu, `~/projects/personal/` altındaki her şeye erişime izin verir:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
}
}
}
```
Burada izin verilen herhangi bir dizin, geçerli çalışma alanıyla aynı varsayılanları devralır. [`read` defaults to `allow`](#defaults)'dan bu yana, geçersiz kılınmadığı sürece `external_directory` altındaki girişler için okumalara da izin verilir. Bir aracın bu yollarda kısıtlanması gerektiğinde (okumaları tutarken düzenlemeleri engellemek gibi) açık kurallar ekleyin:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"external_directory": {
"~/projects/personal/**": "allow"
},
"edit": {
"~/projects/personal/**": "deny"
}
}
}
```
Listeyi güvenilir yollara odaklı tutun ve diğer araçlar için gereken ekstra izin verme veya reddetme kurallarını katmanlayın (örneğin `bash`).
---
## Mevcut İzinler
OpenCode izinleri araç adına ve birkaç güvenlik görevlisine göre anahtarlanır:
- `read` — bir dosyayı okumak (dosya yoluyla eşleşir)
- `edit` — tüm dosya değişiklikleri (`edit`, `write`, `patch`, `multiedit`'yi kapsar)
- `glob` — dosya genellemesi (glob düzeniyle eşleşir)
- `grep` — içerik arama (regex modeliyle eşleşir)
- `list` — bir dizideki dosyaları listeleme (dizin yoluyla eşleşir)
- `bash` — kabuk komutlarını çalıştırma (`git status --porcelain` gibi ayrıştırılmış komutlarla eşleşir)
- `task` — alt aracıların başlatılması (alt aracı türüyle eşleşir)
- `skill` — bir beceri yükleniyor (beceri adıyla eşleşir)
- `lsp` — LSP sorgularını çalıştırıyor (şu anda ayrıntılı değil)
- `todoread`, `todowrite` — reading/updating yapılacaklar listesi
- `webfetch` — URL getiriliyor (URL ile eşleşiyor)
- `websearch`, `codesearch` — web/code arama (sorguyla eşleşir)
- `external_directory` — bir araç proje çalışma dizini dışındaki yollara dokunduğunda tetiklenir
- `doom_loop` — aynı araç çağrısı aynı girdiyle 3 kez tekrarlandığında tetiklenir
---
## Defaults
Hiçbir şey belirtmezseniz OpenCode izin verilen varsayılanlardan başlar:
- Çoğu izin varsayılan olarak `"allow"` şeklindedir.
- `doom_loop` ve `external_directory` varsayılan olarak `"ask"`'dir.
- `read`, `"allow"`'dir, ancak `.env` dosyaları varsayılan olarak reddedilir:
```json title="opencode.json"
{
"permission": {
"read": {
"*": "allow",
"*.env": "deny",
"*.env.*": "deny",
"*.env.example": "allow"
}
}
}
```
---
## “Sor” Ne Yapar?
OpenCode onay istediğinde kullanıcı arayüzü üç sonuç sunar:
- `once` — yalnızca bu isteği onayla
- `always` — önerilen kalıplarla eşleşen gelecekteki istekleri onaylayın (geçerli OpenCode oturumunun geri kalanı için)
- `reject` — isteği reddet
`always`'ın onaylayacağı kalıp seti araç tarafından sağlanır (örneğin, bash onayları genellikle `git status*` gibi güvenli bir komut önekini beyaz listeye alır).
---
## Agents
Aracı başına izinleri geçersiz kılabilirsiniz. Aracı izinleri genel yapılandırmayla birleştirilir ve aracı kuralları öncelikli olur. [Learn more](/docs/agents#permissions) temsilci izinleri hakkında.
:::note
Daha ayrıntılı desen eşleştirme örnekleri için yukarıdaki [Granular Rules (Object Syntax)](#granular-rules-object-syntax) bölümüne bakın.
:::
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "deny",
"git push *": "deny",
"grep *": "allow"
}
},
"agent": {
"build": {
"permission": {
"bash": {
"*": "ask",
"git *": "allow",
"git commit *": "ask",
"git push *": "deny",
"grep *": "allow"
}
}
}
}
}
```
Aracı izinlerini Markdown'da da yapılandırabilirsiniz:
```markdown title="~/.config/opencode/agents/review.md"
---
description: Code review without edits
mode: subagent
permission:
edit: deny
bash: ask
webfetch: deny
---
Only analyze code and suggest changes.
```
:::tip
Bağımsız değişken içeren komutlar için kalıp eşleştirmeyi kullanın. `"grep *"`, `grep pattern file.txt`'ye izin verir, ancak `"grep"` tek başına onu engeller. `git status` gibi komutlar varsayılan davranış için çalışır ancak argümanlar aktarıldığında açık izin (`"git status *"` gibi) gerektirir.
:::

View File

@@ -0,0 +1,385 @@
---
title: Eklentiler
description: OpenCode'u genişletmek için kendi eklentilerinizi yazın.
---
Eklentiler, çeşitli olaylara bağlanarak ve davranışı özelleştirerek OpenCode'u genişletmenize olanak tanır. Yeni özellikler eklemek, harici hizmetlerle entegrasyon sağlamak veya OpenCode'un varsayılan davranışını değiştirmek için eklentiler oluşturabilirsiniz.
Örnekler için topluluk tarafından oluşturulan [plugins](/docs/ecosystem#plugins)'a göz atın.
---
## Bir eklenti kullanın
There are two ways to load plugins.
---
### Yerel dosyalardan
JavaScript veya TypeScript dosyalarını eklenti dizinine yerleştirin.
- `.opencode/plugins/` - Proje düzeyinde eklentiler
- `~/.config/opencode/plugins/` - Genel eklentiler
Bu dizinlerdeki dosyalar başlangıçta otomatik olarak yüklenir.
---
### npm'den
Yapılandırma dosyanızda npm paketlerini belirtin.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"plugin": ["opencode-helicone-session", "opencode-wakatime", "@my-org/custom-plugin"]
}
```
Hem normal hem de kapsamlı npm paketleri desteklenir.
[ecosystem](/docs/ecosystem#plugins)'daki mevcut eklentilere göz atın.
---
### Eklentiler nasıl kurulur?
**npm eklentileri** başlangıçta Bun kullanılarak otomatik olarak yüklenir. Paketler ve bağımlılıkları `~/.cache/opencode/node_modules/`'da önbelleğe alınır.
**Yerel eklentiler** doğrudan eklenti dizininden yüklenir. Harici paketleri kullanmak için, sisteminizin dizininde bir `package.json` oluşturmanız (bkz. [Dependencies](#dependencies)) veya eklentiyi npm ve [add it to your config](/docs/config#plugins)'de yayınlamanız gerekir.
---
### Load order
Eklentiler tüm kaynaklardan yüklenir ve tüm kancalar sırayla çalışır. Yükleme sırası şöyledir:
1. Global config (`~/.config/opencode/opencode.json`)
2. Project config (`opencode.json`)
3. Global eklenti dizini (`~/.config/opencode/plugins/`)
4. Proje eklenti dizini (`.opencode/plugins/`)
Aynı ad ve sürüme sahip yinelenen npm paketleri bir kez yüklenir. Ancak benzer adlara sahip bir yerel eklenti ve bir npm eklentisinin her ikisi de ayrı ayrı yüklenir.
---
## Eklenti oluştur
Eklenti, bir veya daha fazla eklentiyi dışa aktaran bir **JavaScript/TypeScript modülüdür**
işlevler. Her işlev bir bağlam nesnesi alır ve bir kanca nesnesi döndürür.
---
### Dependencies
Yerel eklentiler ve özel araçlar harici npm paketlerini kullanabilir. İhtiyacınız olan bağımlılıkları içeren config dizininize bir `package.json` ekleyin.
```json title=".opencode/package.json"
{
"dependencies": {
"shescape": "^2.1.0"
}
}
```
OpenCode bunları yüklemek için başlangıçta `bun install` komutunu çalıştırır. Eklentileriniz ve araçlarınız daha sonra bunları içe aktarabilir.
```ts title=".opencode/plugins/my-plugin.ts"
import { escape } from "shescape"
export const MyPlugin = async (ctx) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "bash") {
output.args.command = escape(output.args.command)
}
},
}
}
```
---
### Temel yapı
```js title=".opencode/plugins/example.js"
export const MyPlugin = async ({ project, client, $, directory, worktree }) => {
console.log("Plugin initialized!")
return {
// Hook implementations go here
}
}
```
Eklenti işlevi şunları alır:
- `project`: Mevcut proje bilgisi.
- `directory`: güncel çalışma dizini.
- `worktree`: Git çalışma ağacı yolu.
- `client`: Yapay zeka ile etkileşime geçmek için açık kodlu bir SDK istemcisi.
- `$`: Bun'un komutları yürütmek için kullandığı [shell API](https://bun.com/docs/runtime/shell).
---
### TypeScript desteği
TypeScript eklentileri için türleri eklenti paketinden içe aktarabilirsiniz:
```ts title="my-plugin.ts" {1}
import type { Plugin } from "@opencode-ai/plugin"
export const MyPlugin: Plugin = async ({ project, client, $, directory, worktree }) => {
return {
// Type-safe hook implementations
}
}
```
---
### Olaylar
Eklentiler aşağıdaki Örnekler bölümünde görüldüğü gibi etkinliklere abone olabilirler. Burada mevcut farklı etkinliklerin bir listesi bulunmaktadır.
#### Komut Olayları
- `command.executed`
#### Dosya Olayları
- `file.edited`
- `file.watcher.updated`
#### Kurulum Etkinlikleri
- `installation.updated`
#### LSP Etkinlikler
- `lsp.client.diagnostics`
- `lsp.updated`
#### Mesaj Etkinlikleri
- `message.part.removed`
- `message.part.updated`
- `message.removed`
- `message.updated`
#### İzin Etkinlikleri
- `permission.asked`
- `permission.replied`
#### Sunucu Etkinlikleri
- `server.connected`
#### Oturum Etkinlikleri
- `session.created`
- `session.compacted`
- `session.deleted`
- `session.diff`
- `session.error`
- `session.idle`
- `session.status`
- `session.updated`
#### Yapılacak Etkinlikler
- `todo.updated`
#### Kabuk Etkinlikleri
- `shell.env`
#### Araç Olayları
- `tool.execute.after`
- `tool.execute.before`
#### TUI Etkinlikler
- `tui.prompt.append`
- `tui.command.execute`
- `tui.toast.show`
---
## Examples
ık kodu genişletmek için kullanabileceğiniz bazı eklenti örneklerini burada bulabilirsiniz.
---
### Bildirim gönder
Belirli olaylar meydana geldiğinde bildirim gönderin:
```js title=".opencode/plugins/notification.js"
export const NotificationPlugin = async ({ project, client, $, directory, worktree }) => {
return {
event: async ({ event }) => {
// Send notification on session completion
if (event.type === "session.idle") {
await $`osascript -e 'display notification "Session completed!" with title "opencode"'`
}
},
}
}
```
MacOS'ta AppleScript'i çalıştırmak için `osascript` kullanıyoruz. Burada bildirim göndermek için kullanıyoruz.
:::note
OpenCode masaüstü uygulamasını kullanıyorsanız yanıt hazır olduğunda veya oturum hataları oluştuğunda otomatik olarak sistem bildirimleri gönderebilir.
:::
---
### .env protection
ık kodun `.env` dosyalarını okumasını önleyin:
```javascript title=".opencode/plugins/env-protection.js"
export const EnvProtection = async ({ project, client, $, directory, worktree }) => {
return {
"tool.execute.before": async (input, output) => {
if (input.tool === "read" && output.args.filePath.includes(".env")) {
throw new Error("Do not read .env files")
}
},
}
}
```
---
### Ortam değişkenlerini enjekte etme
Ortam değişkenlerini tüm kabuk yürütmeye (AI araçları ve kullanıcı terminalleri) enjekte edin:
```javascript title=".opencode/plugins/inject-env.js"
export const InjectEnvPlugin = async () => {
return {
"shell.env": async (input, output) => {
output.env.MY_API_KEY = "secret"
output.env.PROJECT_ROOT = input.cwd
},
}
}
```
---
### Custom tools
Eklentiler ayrıca opencode'a özel araçlar da ekleyebilir:
```ts title=".opencode/plugins/custom-tools.ts"
import { type Plugin, tool } from "@opencode-ai/plugin"
export const CustomToolsPlugin: Plugin = async (ctx) => {
return {
tool: {
mytool: tool({
description: "This is a custom tool",
args: {
foo: tool.schema.string(),
},
async execute(args, context) {
const { directory, worktree } = context
return `Hello ${args.foo} from ${directory} (worktree: ${worktree})`
},
}),
},
}
}
```
`tool` yardımcısı, opencode'un çağırabileceği özel bir araç oluşturur. Bir Zod şeması işlevini alır ve aşağıdakileri içeren bir araç tanımı döndürür:
- `description`: Araç ne yapar?
- `args`: Aracın argümanları için Zod şeması
- `execute`: Araç çağrıldığında çalışan fonksiyon
Özel araçlarınız, yerleşik araçların yanı sıra kod açmaya da hazır olacaktır.
---
### Günlüğe kaydetme
Yapılandırılmış günlük kaydı için `console.log` yerine `client.app.log()` kullanın:
```ts title=".opencode/plugins/my-plugin.ts"
export const MyPlugin = async ({ client }) => {
await client.app.log({
body: {
service: "my-plugin",
level: "info",
message: "Plugin initialized",
extra: { foo: "bar" },
},
})
}
```
Seviyeler: `debug`, `info`, `warn`, `error`. Ayrıntılar için [SDK documentation](https://opencode.ai/docs/sdk)'e bakın.
---
### Compaction hooks
Bir oturum sıkıştırıldığında içerilen bağlamı özelleştirin:
```ts title=".opencode/plugins/compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Inject additional context into the compaction prompt
output.context.push(`
## Custom Context
Include any state that should persist across compaction:
- Current task status
- Important decisions made
- Files being actively worked on
`)
},
}
}
```
`experimental.session.compacting` kancası, LLM bir devam özeti oluşturmadan önce tetiklenir. Varsayılan sıkıştırma isteminin kaçıracağı etki alanına özgü bağlamı enjekte etmek için bunu kullanın.
Ayrıca `output.prompt` ayarını yaparak sıkıştırma istemini tamamen değiştirebilirsiniz:
```ts title=".opencode/plugins/custom-compaction.ts"
import type { Plugin } from "@opencode-ai/plugin"
export const CustomCompactionPlugin: Plugin = async (ctx) => {
return {
"experimental.session.compacting": async (input, output) => {
// Replace the entire compaction prompt
output.prompt = `
You are generating a continuation prompt for a multi-agent swarm session.
Summarize:
1. The current task and its status
2. Which files are being modified and by whom
3. Any blockers or dependencies between agents
4. The next steps to complete the work
Format as a structured prompt that a new agent can use to resume work.
`
},
}
}
```
`output.prompt` ayarlandığında, varsayılan sıkıştırma isteminin tamamen yerini alır. Bu durumda `output.context` dizisi dikkate alınmaz.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,180 @@
---
title: Kurallar
description: Açık kod için özel talimatları ayarlayın.
---
Bir `AGENTS.md` dosyası oluşturarak kod açmaya özel talimatlar sağlayabilirsiniz. Bu, İmlecin kurallarına benzer. Özel projeniz için davranışını özelleştirmek amacıyla LLM'in içeriğine dahil edilecek talimatları içerir.
---
## Initialize
Yeni bir `AGENTS.md` dosyası oluşturmak için `/init` komutunu açık kodda çalıştırabilirsiniz.
:::tip
Projenizin `AGENTS.md` dosyasını Git'e göndermelisiniz.
:::
Bu, projenin neyle ilgili olduğunu anlamak için projenizi ve tüm içeriğini tarayacak ve onunla bir `AGENTS.md` dosyası oluşturacaktır. Bu, açık kodun projede daha iyi gezinmesine yardımcı olur.
Mevcut bir `AGENTS.md` dosyanız varsa, bu dosyaya eklemeye çalışacaktır.
---
## Example
Bu dosyayı manuel olarak da oluşturabilirsiniz. İşte bir `AGENTS.md` dosyasına koyabileceğiniz bazı şeylere bir örnek.
```markdown title="AGENTS.md"
# SST v3 Monorepo Project
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces for package management.
## Project Structure
- `packages/` - Contains all workspace packages (functions, core, web, etc.)
- `infra/` - Infrastructure definitions split by service (storage.ts, api.ts, web.ts)
- `sst.config.ts` - Main SST configuration with dynamic imports
## Code Standards
- Use TypeScript with strict mode enabled
- Shared code goes in `packages/core/` with proper exports configuration
- Functions go in `packages/functions/`
- Infrastructure should be split into logical files in `infra/`
## Monorepo Conventions
- Import shared modules using workspace names: `@my-app/core/example`
```
Buraya projeye özel talimatlar ekliyoruz ve bu, ekibiniz arasında paylaşılacaktır.
---
## Types
opencode ayrıca `AGENTS.md` dosyasının birden fazla konumdan okunmasını da destekler. Ve bu farklı amaçlara hizmet ediyor.
### Project
Projeye özel kurallar için proje kökünüze bir `AGENTS.md` yerleştirin. Bunlar yalnızca bu dizinde veya alt dizinlerinde çalışırken geçerlidir.
### Global
Ayrıca `~/.config/opencode/AGENTS.md` dosyasında genel kurallara sahip olabilirsiniz. Bu, tüm açık kod oturumlarına uygulanır.
Bu Git'e kaydedilmediği veya ekibinizle paylaşılmadığı için, LLM'ın uyması gereken kişisel kuralları belirtmek için bunu kullanmanızı öneririz.
### Claude Code Compatibility
OpenCode, Claude Code'dan geçiş yapan kullanıcılar için yedek olarak Claude Code'un dosya kurallarını destekler:
- **Proje kuralları**: Proje dizininizdeki `CLAUDE.md` (`AGENTS.md` yoksa kullanılır)
- **Global rules**: `~/.claude/CLAUDE.md` (used if no `~/.config/opencode/AGENTS.md` exists)
- **Beceriler**: `~/.claude/skills/` — ayrıntılar için [Agent Skills](/docs/skills/)'e bakın
To disable Claude Code compatibility, set one of these environment variables:
```bash
export OPENCODE_DISABLE_CLAUDE_CODE=1 # Disable all .claude support
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # Disable only ~/.claude/CLAUDE.md
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # Disable only .claude/skills
```
---
## Precedence
Opencode başlatıldığında kural dosyalarını şu sırayla arar:
1. **Yerel dosyalar** geçerli dizinden yukarıya doğru giderek (`AGENTS.md`, `CLAUDE.md`)
2. **Global dosya** `~/.config/opencode/AGENTS.md` adresinde
3. `~/.claude/CLAUDE.md` adresindeki **Claude Kod dosyası** (devre dışı bırakılmadığı sürece)
Her kategoride ilk eşleşen dosya kazanır. Örneğin, hem `AGENTS.md` hem de `CLAUDE.md` varsa yalnızca `AGENTS.md` kullanılır. Benzer şekilde, `~/.config/opencode/AGENTS.md`, `~/.claude/CLAUDE.md`'ye göre önceliklidir.
---
## Custom Instructions
Özel talimat dosyalarını `opencode.json` veya global `~/.config/opencode/opencode.json`'de belirtebilirsiniz. Bu, sizin ve ekibinizin, mevcut kuralları AGENTS.md'ye kopyalamak yerine yeniden kullanmasına olanak tanır.
Example:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
```
Web'den talimatlar yüklemek için uzak URL'leri de kullanabilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
}
```
Uzaktan talimatlar 5 saniyelik bir zaman aşımı ile getirilir.
Tüm talimat dosyaları `AGENTS.md` dosyalarınızla birleştirilir.
---
## Harici Dosyalara Referans Verme
Opencode, `AGENTS.md`'daki dosya referanslarını otomatik olarak ayrıştırmasa da, benzer işlevleri iki şekilde elde edebilirsiniz:
### opencode.json'u kullanma
Önerilen yaklaşım, `opencode.json`'deki `instructions` alanını kullanmaktır:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md", "packages/*/AGENTS.md"]
}
```
### Manual Instructions in AGENTS.md
`AGENTS.md`'nizde açık talimatlar sağlayarak açık kodu harici dosyaları okumayı öğretebilirsiniz. İşte pratik bir örnek:
```markdown title="AGENTS.md"
# TypeScript Project Rules
## External File Loading
CRITICAL: When you encounter a file reference (e.g., @rules/general.md), use your Read tool to load it on a need-to-know basis. They're relevant to the SPECIFIC task at hand.
Instructions:
- Do NOT preemptively load all references - use lazy loading based on actual need
- When loaded, treat content as mandatory instructions that override defaults
- Follow references recursively when needed
## Development Guidelines
For TypeScript code style and best practices: @docs/typescript-guidelines.md
For React component architecture and hooks patterns: @docs/react-patterns.md
For REST API design and error handling: @docs/api-standards.md
For testing strategies and coverage requirements: @test/testing-guidelines.md
## General Guidelines
Read the following file immediately as it's relevant to all workflows: @rules/general-guidelines.md.
```
Bu yaklaşım şunları yapmanızı sağlar:
- Modüler, yeniden kullanılabilir kural dosyaları oluşturun
- Sembolik bağlantılar veya git alt modülleri aracılığıyla kuralları projeler arasında paylaşın
- Keep AGENTS.md concise while referencing detailed guidelines
- Açık kodun dosyaları yalnızca belirli bir görev için gerektiğinde yüklediğinden emin olun
:::tip
Monorepo'lar veya ortak standartlara sahip projeler için, `opencode.json`'yi glob desenleriyle (`packages/*/AGENTS.md` gibi) kullanmak, manuel talimatlara göre daha sürdürülebilirdir.
:::

View File

@@ -0,0 +1,22 @@
---
title: SDK
description: opencode serveri icin type-safe JS istemcisi.
---
OpenCode JS/TS SDK, sunucu ile etkilesmek icin type-safe bir istemci saglar.
[Sunucu](/docs/server) sayfasinda mimariyi gorebilir, topluluk ornekleri icin [projects](/docs/ecosystem#projects) bolumune bakabilirsiniz.
## Kurulum
```bash
npm install @opencode-ai/sdk
```
## Baslangic
```javascript
import { createOpencode } from "@opencode-ai/sdk"
const { client } = await createOpencode()
```

View File

@@ -0,0 +1,285 @@
---
title: Sunucu
description: opencode sunucusuyla HTTP uzerinden etkilesin.
---
import config from "../../../../config.mjs"
export const typesUrl = `${config.github}/blob/dev/packages/sdk/js/src/gen/types.gen.ts`
`opencode serve` komutu, opencode istemcisinin kullanabilecegi bir OpenAPI endpoint'i acan headless bir HTTP sunucusu calistirir.
---
### Kullanim
```bash
opencode serve [--port <number>] [--hostname <string>] [--cors <origin>]
```
#### Secenekler
| Flag | Description | Default |
| --------------- | ----------------------------------- | ---------------- |
| `--port` | Port to listen on | `4096` |
| `--hostname` | Hostname to listen on | `127.0.0.1` |
| `--mdns` | Enable mDNS discovery | `false` |
| `--mdns-domain` | Custom domain name for mDNS service | `opencode.local` |
| `--cors` | Additional browser origins to allow | `[]` |
`--cors` birden fazla kez gecilebilir:
```bash
opencode serve --cors http://localhost:5173 --cors https://app.example.com
```
---
### Kimlik dogrulama
Sunucuyu HTTP basic auth ile korumak icin `OPENCODE_SERVER_PASSWORD` ayarlayin. Kullanici adi varsayilan olarak `opencode` degeridir; degistirmek isterseniz `OPENCODE_SERVER_USERNAME` ayarlayabilirsiniz. Bu ayar hem `opencode serve` hem de `opencode web` icin gecerlidir.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve
```
---
### Nasil calisir
`opencode` calistirdiginizda hem TUI hem de sunucu baslar. TUI, sunucuyla konusan istemci tarafidir.
Sunucu bir OpenAPI 3.1 spec endpoint'i acar. Bu endpoint [SDK](/docs/sdk) uretiminde de kullanilir.
:::tip
opencode ile programatik etkilesim icin opencode sunucusunu kullanin.
:::
Bu mimari, opencode'un birden fazla istemciyi desteklemesini ve programatik kullanimlari mumkun kilmasini saglar.
`opencode serve` ile bagimsiz bir sunucu baslatabilirsiniz. opencode TUI aciksa, `opencode serve` yeni bir sunucu baslatir.
---
#### Mevcut sunucuya baglanin
TUI baslarken rastgele bir port ve hostname atanir. Bunun yerine `--hostname` ve `--port` [bayraklarini](/docs/cli) verebilirsiniz.
[`/tui`](#tui) endpoint'i sunucu uzerinden TUI'yi surmek icin kullanilabilir. Ornegin bir istemi onceden doldurabilir veya calistirabilirsiniz. Bu kurulum OpenCode [IDE](/docs/ide) eklentileri tarafindan kullanilir.
---
## Spesifikasyon
Sunucu, su adreste gorulebilen bir OpenAPI 3.1 spec yayinlar:
```
http://<hostname>:<port>/doc
```
Ornegin `http://localhost:4096/doc`. Istemci olusturmak, istek/yanit tiplerini incelemek veya Swagger gezgininde acmak icin bu spec'i kullanin.
---
## API'ler
opencode sunucusu asagidaki API'leri sunar.
---
### Global
| 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 |
---
### Project
| 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> |
---
### Path & VCS
| 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> |
---
### Instance
| Method | Path | Description | Response |
| ------ | ------------------- | ---------------------------- | --------- |
| `POST` | `/instance/dispose` | Dispose the current instance | `boolean` |
---
### Config
| 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> |
| `GET` | `/config/providers` | List providers and default models | `{ providers: `<a href={typesUrl}>Provider[]</a>`, default: { [key: string]: string } }` |
---
### Provider
| 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>` }` |
| `POST` | `/provider/{id}/oauth/authorize` | Authorize a provider using OAuth | <a href={typesUrl}><code>ProviderAuthAuthorization</code></a> |
| `POST` | `/provider/{id}/oauth/callback` | Handle OAuth callback for a provider | `boolean` |
---
### Sessions
| 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> |
| `GET` | `/session/status` | Get session status for all sessions | Returns `{ [sessionID: string]: `<a href={typesUrl}>SessionStatus</a>` }` |
| `GET` | `/session/:id` | Get session details | Returns <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id` | Delete a session and all its data | Returns `boolean` |
| `PATCH` | `/session/:id` | Update session properties | body: `{ title? }`, returns <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/children` | Get a session's child sessions | Returns <a href={typesUrl}><code>Session[]</code></a> |
| `GET` | `/session/:id/todo` | Get the todo list for a session | Returns <a href={typesUrl}><code>Todo[]</code></a> |
| `POST` | `/session/:id/init` | Analyze app and create `AGENTS.md` | body: `{ messageID, providerID, modelID }`, returns `boolean` |
| `POST` | `/session/:id/fork` | Fork an existing session at a message | body: `{ messageID? }`, returns <a href={typesUrl}><code>Session</code></a> |
| `POST` | `/session/:id/abort` | Abort a running session | Returns `boolean` |
| `POST` | `/session/:id/share` | Share a session | Returns <a href={typesUrl}><code>Session</code></a> |
| `DELETE` | `/session/:id/share` | Unshare a session | Returns <a href={typesUrl}><code>Session</code></a> |
| `GET` | `/session/:id/diff` | Get the diff for this session | query: `messageID?`, returns <a href={typesUrl}><code>FileDiff[]</code></a> |
| `POST` | `/session/:id/summarize` | Summarize the session | body: `{ providerID, modelID }`, returns `boolean` |
| `POST` | `/session/:id/revert` | Revert a message | body: `{ messageID, partID? }`, returns `boolean` |
| `POST` | `/session/:id/unrevert` | Restore all reverted messages | Returns `boolean` |
| `POST` | `/session/:id/permissions/:permissionID` | Respond to a permission request | body: `{ response, remember? }`, returns `boolean` |
---
### Messages
| 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>`}` |
| `GET` | `/session/:id/message/:messageID` | Get message details | Returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/prompt_async` | Send a message asynchronously (no wait) | body: same as `/session/:id/message`, returns `204 No Content` |
| `POST` | `/session/:id/command` | Execute a slash command | body: `{ messageID?, agent?, model?, command, arguments }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
| `POST` | `/session/:id/shell` | Run a shell command | body: `{ agent, model?, command }`, returns `{ info: `<a href={typesUrl}>Message</a>`, parts: `<a href={typesUrl}>Part[]</a>`}` |
---
### Commands
| Method | Path | Description | Response |
| ------ | ---------- | ----------------- | --------------------------------------------- |
| `GET` | `/command` | List all commands | <a href={typesUrl}><code>Command[]</code></a> |
---
### Files
| 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) |
| `GET` | `/find/symbol?query=<q>` | Find workspace symbols | <a href={typesUrl}><code>Symbol[]</code></a> |
| `GET` | `/file?path=<path>` | List files and directories | <a href={typesUrl}><code>FileNode[]</code></a> |
| `GET` | `/file/content?path=<p>` | Read a file | <a href={typesUrl}><code>FileContent</code></a> |
| `GET` | `/file/status` | Get status for tracked files | <a href={typesUrl}><code>File[]</code></a> |
#### `/find/file` query parametreleri
- `query` (required) - arama metni (fuzzy match)
- `type` (optional) - sonuclari `"file"` veya `"directory"` ile sinirlama
- `directory` (optional) - arama icin proje kokunu gecersiz kilma
- `limit` (optional) - en fazla sonuc (1-200)
- `dirs` (optional) - eski bayrak (`"false"` sadece dosyalari dondurur)
---
### Tools (Deneysel)
| 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> |
---
### LSP, Formatters & MCP
| 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> |
| `GET` | `/mcp` | Get MCP server status | `{ [name: string]: `<a href={typesUrl}>MCPStatus</a>` }` |
| `POST` | `/mcp` | Add MCP server dynamically | body: `{ name, config }`, returns MCP status object |
---
### Agents
| Method | Path | Description | Response |
| ------ | -------- | ------------------------- | ------------------------------------------- |
| `GET` | `/agent` | List all available agents | <a href={typesUrl}><code>Agent[]</code></a> |
---
### Logging
| Method | Path | Description | Response |
| ------ | ------ | ------------------------------------------------------------ | --------- |
| `POST` | `/log` | Write log entry. Body: `{ service, level, message, extra? }` | `boolean` |
---
### TUI
| Method | Path | Description | Response |
| ------ | ----------------------- | ------------------------------------------- | ---------------------- |
| `POST` | `/tui/append-prompt` | Append text to the prompt | `boolean` |
| `POST` | `/tui/open-help` | Open the help dialog | `boolean` |
| `POST` | `/tui/open-sessions` | Open the session selector | `boolean` |
| `POST` | `/tui/open-themes` | Open the theme selector | `boolean` |
| `POST` | `/tui/open-models` | Open the model selector | `boolean` |
| `POST` | `/tui/submit-prompt` | Submit the current prompt | `boolean` |
| `POST` | `/tui/clear-prompt` | Clear the prompt | `boolean` |
| `POST` | `/tui/execute-command` | Execute a command (`{ command }`) | `boolean` |
| `POST` | `/tui/show-toast` | Show toast (`{ title?, message, variant }`) | `boolean` |
| `GET` | `/tui/control/next` | Wait for the next control request | Control request object |
| `POST` | `/tui/control/response` | Respond to a control request (`{ body }`) | `boolean` |
---
### Auth
| Method | Path | Description | Response |
| ------ | ----------- | --------------------------------------------------------------- | --------- |
| `PUT` | `/auth/:id` | Set authentication credentials. Body must match provider schema | `boolean` |
---
### Events
| Method | Path | Description | Response |
| ------ | -------- | ----------------------------------------------------------------------------- | ------------------------- |
| `GET` | `/event` | Server-sent events stream. First event is `server.connected`, then bus events | Server-sent events stream |
---
### Docs
| Method | Path | Description | Response |
| ------ | ------ | ------------------------- | --------------------------- |
| `GET` | `/doc` | OpenAPI 3.1 specification | HTML page with OpenAPI spec |

View File

@@ -0,0 +1,127 @@
---
title: Paylasim
description: OpenCode konusmalarini genel baglantilarla paylasin.
---
OpenCode'un paylasim ozelligi, konusmalariniz icin genel baglantilar olusturmanizi saglar. Boylece ekip arkadaslarinizla birlikte calisabilir veya diger kisilerden yardim alabilirsiniz.
:::note
Paylasilan konusmalar, baglantiya sahip herkes tarafindan gorulebilir.
:::
---
## Nasil calisir
Bir konusmayi paylastiginizda OpenCode:
1. Oturumunuz icin benzersiz bir genel URL olusturur
2. Konusma gecmisinizi sunucularimiza senkronize eder
3. Konusmayi paylasim baglantisiyla erisilebilir hale getirir - `opncd.ai/s/<share-id>`
---
## Paylasim
OpenCode, konusmalarin nasil paylasilacagini kontrol eden uc farkli paylasim modu sunar:
---
### Manuel (varsayilan)
Varsayilan olarak OpenCode manuel paylasim modunu kullanir. Oturumlar otomatik paylasilmaz, ancak `/share` komutuyla manuel olarak paylasabilirsiniz:
```
/share
```
Bu komut benzersiz bir URL uretir ve panoya kopyalar.
Manuel modu acikca ayarlamak icin [config dosyaniza](/docs/config) sunu ekleyin:
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "manual"
}
```
---
### Otomatik paylasim
Tum yeni konusmalar icin otomatik paylasimi acmak isterseniz, [config dosyanizda](/docs/config) `share` degerini `"auto"` yapin:
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "auto"
}
```
Otomatik paylasim acikken her yeni konusma otomatik olarak paylasilir ve bir baglanti olusturulur.
---
### Devre disi
Paylasimi tamamen kapatmak icin [config dosyanizda](/docs/config) `share` degerini `"disabled"` yapin:
```json title="opencode.json"
{
"$schema": "https://opncd.ai/config.json",
"share": "disabled"
}
```
Bunu belirli bir projede tum ekip icin zorunlu kilmak icin proje icindeki `opencode.json` dosyasina ekleyip Git'e commit edin.
---
## Paylasimi kaldirma
Bir konusmanin paylasimini durdurmak ve genel erisimi kaldirmak icin:
```
/unshare
```
Bu komut paylasim baglantisini kaldirir ve konusmaya ait verileri siler.
---
## Gizlilik
Bir konusmayi paylasirken akilda tutulmasi gereken bazi noktalar vardir.
---
### Veri saklama
Paylasilan konusmalar, siz acikca paylasimi kaldirana kadar erisilebilir kalir. Buna sunlar dahildir:
- Tum konusma gecmisi
- Tum mesajlar ve yanitlar
- Oturum metaverisi
---
### Oneriler
- Hassas bilgi icermeyen konusmalari paylasin.
- Paylasmadan once konusma icerigini gozden gecirin.
- Is birligi bittiginde paylasimi kaldirin.
- Tescilli kod veya gizli veri iceren konusmalari paylasmayin.
- Hassas projelerde paylasimi tamamen kapatin.
---
## Kurumsal kullanim
Kurumsal kurulumlarda paylasim ozelligi su sekillerde yapilandirilabilir:
- Guvenlik uyumu icin tamamen **devre disi** birakilabilir
- Sadece SSO ile dogrulanan kullanicilarla **sinirlandirilabilir**
- Kendi altyapinizda **self-hosted** olarak calistirilabilir
Kurulusunuzda opencode kullanimi icin [daha fazla bilgi alin](/docs/enterprise).

View File

@@ -0,0 +1,222 @@
---
title: "Ajan becerileri"
description: "SKILL.md ile tekrar kullanilabilir davranis tanimlayin"
---
Ajan becerileri, OpenCode'un deponuzdan veya ev dizininizden tekrar kullanilabilir talimatlari kesfetmesini saglar.
Beceriler, yerel `skill` araci uzerinden ihtiyac aninda yuklenir; ajanlar mevcut becerileri gorur ve gerektiginde tam icerigi yukler.
---
## Dosyalari yerlestirin
Her beceri adi icin bir klasor olusturun ve icine bir `SKILL.md` koyun.
OpenCode su konumlari tarar:
- Proje konfigurasyonu: `.opencode/skills/<name>/SKILL.md`
- Genel konfigurasyon: `~/.config/opencode/skills/<name>/SKILL.md`
- Proje Claude uyumlu: `.claude/skills/<name>/SKILL.md`
- Genel Claude uyumlu: `~/.claude/skills/<name>/SKILL.md`
- Proje agent uyumlu: `.agents/skills/<name>/SKILL.md`
- Genel agent uyumlu: `~/.agents/skills/<name>/SKILL.md`
---
## Kesfi anlayin
Proje yerel yollarinda OpenCode, mevcut calisma dizininizden baslayip git worktree kokune kadar yukari cikar.
Bu sirada `.opencode/` altindaki eslesen `skills/*/SKILL.md` dosyalarini ve `.claude/skills/*/SKILL.md` ya da `.agents/skills/*/SKILL.md` dosyalarini yukler.
Genel tanimlar da `~/.config/opencode/skills/*/SKILL.md`, `~/.claude/skills/*/SKILL.md` ve `~/.agents/skills/*/SKILL.md` yollarindan yuklenir.
---
## Frontmatter yazin
Her `SKILL.md`, YAML frontmatter ile baslamalidir.
Sadece su alanlar taninir:
- `name` (zorunlu)
- `description` (zorunlu)
- `license` (istege bagli)
- `compatibility` (istege bagli)
- `metadata` (istege bagli, string-to-string map)
Bilinmeyen frontmatter alanlari yok sayilir.
---
## Adlari dogrulayin
`name` su kurallari saglamalidir:
- 1-64 karakter olmali
- Kucuk harf alfanumerik ve tekli tire ayirici kullanmali
- `-` ile baslamamali veya bitmemeli
- Ardisik `--` icermemeli
- `SKILL.md` dosyasini barindiran klasor adi ile ayni olmali
Esdeger regex:
```text
^[a-z0-9]+(-[a-z0-9]+)*$
```
---
## Uzunluk kurallarina uyun
`description` 1-1024 karakter arasinda olmali.
Ajanin dogru secim yapmasi icin yeterince acik yazin.
---
## Ornek kullanin
`.opencode/skills/git-release/SKILL.md` dosyasini soyle olusturun:
```markdown
---
name: git-release
description: Create consistent releases and changelogs
license: MIT
compatibility: opencode
metadata:
audience: maintainers
workflow: github
---
## What I do
- Draft release notes from merged PRs
- Propose a version bump
- Provide a copy-pasteable `gh release create` command
## When to use me
Use this when you are preparing a tagged release.
Ask clarifying questions if the target versioning scheme is unclear.
```
---
## Arac aciklamasini taniyin
OpenCode, `skill` araci aciklamasinda mevcut becerileri listeler.
Her kayitta beceri adi ve aciklamasi yer alir:
```xml
<available_skills>
<skill>
<name>git-release</name>
<description>Create consistent releases and changelogs</description>
</skill>
</available_skills>
```
Ajan, araci cagirarak beceri yukler:
```
skill({ name: "git-release" })
```
---
## Izinleri yapilandirin
`opencode.json` icinde pattern tabanli izinlerle ajanlarin hangi becerilere erisecegini kontrol edin:
```json
{
"permission": {
"skill": {
"*": "allow",
"pr-review": "allow",
"internal-*": "deny",
"experimental-*": "ask"
}
}
}
```
| Permission | Behavior |
| ---------- | ------------------------------------------ |
| `allow` | Beceri hemen yuklenir |
| `deny` | Beceri ajandan gizlenir, erisim reddedilir |
| `ask` | Yukleme oncesi kullanicidan onay istenir |
Pattern'lar wildcard destekler: `internal-*`, `internal-docs`, `internal-tools` vb. adlarla eslesir.
---
## Ajan bazinda gecersiz kilin
Belirli ajanlara genel varsayimlardan farkli izinler verebilirsiniz.
**Ozel ajanlar icin** (agent frontmatter icinde):
```yaml
---
permission:
skill:
"documents-*": "allow"
---
```
**Yerlesik ajanlar icin** (`opencode.json` icinde):
```json
{
"agent": {
"plan": {
"permission": {
"skill": {
"internal-*": "allow"
}
}
}
}
}
```
---
## Skill aracini kapatin
Beceri kullanmamasi gereken ajanlar icin skill aracini tamamen kapatabilirsiniz:
**Ozel ajanlar icin**:
```yaml
---
tools:
skill: false
---
```
**Yerlesik ajanlar icin**:
```json
{
"agent": {
"plan": {
"tools": {
"skill": false
}
}
}
}
```
Devre disi oldugunda `<available_skills>` bolumu tamamen kaldirilir.
---
## Yukleme sorunlarini giderin
Bir beceri listede gorunmuyorsa:
1. `SKILL.md` adinin tamamen buyuk harfle yazildigini dogrulayin
2. Frontmatter icinde `name` ve `description` oldugunu kontrol edin
3. Tum konumlarda beceri adlarinin benzersiz oldugundan emin olun
4. Izinleri kontrol edin - `deny` olan beceriler ajanlardan gizlenir

View File

@@ -0,0 +1,369 @@
---
title: Temalar
description: Yerlesik bir tema secin veya kendiniz olusturun.
---
OpenCode ile birden fazla yerlesik tema arasindan secim yapabilir, terminal temaniza uyum saglayan bir tema kullanabilir veya kendi ozel temanizi tanimlayabilirsiniz.
Varsayilan olarak OpenCode kendi `opencode` temasini kullanir.
---
## Terminal gereksinimleri
Temalarin tum renk paletiyle dogru gorunmesi icin terminalinizin **truecolor** (24-bit renk) desteklemesi gerekir. Cogu modern terminal bunu varsayilan olarak destekler, ancak gerekirse etkinlestirmeniz gerekebilir:
- **Destegi kontrol edin**: `echo $COLORTERM` calistirin - cikti `truecolor` veya `24bit` olmalidir
- **Truecolor etkinlestirin**: kabuk profilinizde `COLORTERM=truecolor` ortam degiskenini ayarlayin
- **Terminal uyumlulugu**: terminal emulatorunuzun 24-bit rengi desteklediginden emin olun (iTerm2, Alacritty, Kitty, Windows Terminal ve GNOME Terminal'in yeni surumleri gibi modern terminaller genelde destekler)
Truecolor destegi yoksa temalar daha dusuk renk dogrulugu ile gorunebilir veya en yakin 256 renk yaklasimina dusebilir.
---
## Yerlesik temalar
OpenCode birden fazla yerlesik temayla gelir.
| Ad | Aciklama |
| ---------------------- | ----------------------------------------------------------------------------- |
| `system` | Terminalinizin arka plan rengine uyum saglar |
| `tokyonight` | [Tokyonight](https://github.com/folke/tokyonight.nvim) temasini temel alir |
| `everforest` | [Everforest](https://github.com/sainnhe/everforest) temasini temel alir |
| `ayu` | [Ayu](https://github.com/ayu-theme) koyu temasini temel alir |
| `catppuccin` | [Catppuccin](https://github.com/catppuccin) temasini temel alir |
| `catppuccin-macchiato` | [Catppuccin](https://github.com/catppuccin) temasini temel alir |
| `gruvbox` | [Gruvbox](https://github.com/morhetz/gruvbox) temasini temel alir |
| `kanagawa` | [Kanagawa](https://github.com/rebelot/kanagawa.nvim) temasini temel alir |
| `nord` | [Nord](https://github.com/nordtheme/nord) temasini temel alir |
| `matrix` | Hacker tarzi yesil uzerine siyah tema |
| `one-dark` | [Atom One](https://github.com/Th3Whit3Wolf/one-nvim) Dark temasini temel alir |
Ve daha fazlasi; surekli yeni temalar ekliyoruz.
---
## Sistem temasi
`system` temasi, terminalinizin renk duzenine otomatik uyum saglamak icin tasarlanmistir. Sabit renk kullanan klasik temalardan farkli olarak _system_ temasi:
- **Gri olcegi uretir**: En iyi kontrast icin terminal arka planina gore ozel gri tonlari olusturur
- **ANSI renkleri kullanir**: 0-15 arasi standart ANSI renklerini syntax highlighting ve UI ogelerinde kullanir, boylece terminal paletinize uyar
- **Terminal varsayilanlarini korur**: Metin ve arka plan renklerinde `none` kullanarak terminalin yerel gorunumunu korur
Sistem temasi su kullanicilar icin idealdir:
- OpenCode'un terminal gorunumuyle birebir uyumlu olmasini isteyenler
- Ozel terminal renk semalari kullananlar
- Tum terminal uygulamalarinda tutarli bir gorunum tercih edenler
---
## Tema kullanin
`/theme` komutuyla tema secicisini acip tema secebilirsiniz. Isterseniz [config](/docs/config) dosyanizda da belirtebilirsiniz.
```json title="opencode.json" {3}
{
"$schema": "https://opencode.ai/config.json",
"theme": "tokyonight"
}
```
---
## Ozel temalar
OpenCode, kullanicilarin kolayca tema olusturup ozellestirebilmesi icin esnek bir JSON tabanli tema sistemi sunar.
---
### Hiyerarsi
Temalar birden fazla dizinden su sirayla yuklenir; daha sonra gelen dizin oncekini ezer:
1. **Yerlesik temalar** - Binary icine gomuludur
2. **Kullanici config dizini** - `~/.config/opencode/themes/*.json` veya `$XDG_CONFIG_HOME/opencode/themes/*.json`
3. **Proje kok dizini** - `<project-root>/.opencode/themes/*.json`
4. **Gecerli calisma dizini** - `./.opencode/themes/*.json`
Birden fazla dizinde ayni adli tema varsa, onceligi daha yuksek dizindeki tema kullanilir.
---
### Tema olusturun
Ozel tema olusturmak icin tema dizinlerinden birinde bir JSON dosyasi olusturun.
Kullanici geneli temalar icin:
```bash no-frame
mkdir -p ~/.config/opencode/themes
vim ~/.config/opencode/themes/my-theme.json
```
Proje ozel temalar icin:
```bash no-frame
mkdir -p .opencode/themes
vim .opencode/themes/my-theme.json
```
---
### JSON formati
Temalar asagidaki ozellikleri destekleyen esnek bir JSON formati kullanir:
- **Hex renkler**: `"#ffffff"`
- **ANSI renkler**: `3` (0-255)
- **Renk referanslari**: `"primary"` veya ozel tanimlar
- **Koyu/acik varyantlar**: `{"dark": "#000", "light": "#fff"}`
- **Renk yok**: `"none"` - Terminal varsayilan rengi veya seffaflik kullanilir
---
### Renk tanimlari
`defs` bolumu istege baglidir ve tema icinde tekrar kullanilabilir renkler tanimlamanizi saglar.
---
### Terminal varsayilanlari
Ozel `"none"` degeri, terminalin varsayilan rengini miras almak icin herhangi bir renkte kullanilabilir. Bu, terminalinizin renk semasiyla dogal sekilde butunlesen temalar olustururken ozellikle faydalidir:
- `"text": "none"` - Terminalin varsayilan on plan rengini kullanir
- `"background": "none"` - Terminalin varsayilan arka plan rengini kullanir
---
### Ornek
Asagida ozel bir tema ornegi var:
```json title="my-theme.json"
{
"$schema": "https://opencode.ai/theme.json",
"defs": {
"nord0": "#2E3440",
"nord1": "#3B4252",
"nord2": "#434C5E",
"nord3": "#4C566A",
"nord4": "#D8DEE9",
"nord5": "#E5E9F0",
"nord6": "#ECEFF4",
"nord7": "#8FBCBB",
"nord8": "#88C0D0",
"nord9": "#81A1C1",
"nord10": "#5E81AC",
"nord11": "#BF616A",
"nord12": "#D08770",
"nord13": "#EBCB8B",
"nord14": "#A3BE8C",
"nord15": "#B48EAD"
},
"theme": {
"primary": {
"dark": "nord8",
"light": "nord10"
},
"secondary": {
"dark": "nord9",
"light": "nord9"
},
"accent": {
"dark": "nord7",
"light": "nord7"
},
"error": {
"dark": "nord11",
"light": "nord11"
},
"warning": {
"dark": "nord12",
"light": "nord12"
},
"success": {
"dark": "nord14",
"light": "nord14"
},
"info": {
"dark": "nord8",
"light": "nord10"
},
"text": {
"dark": "nord4",
"light": "nord0"
},
"textMuted": {
"dark": "nord3",
"light": "nord1"
},
"background": {
"dark": "nord0",
"light": "nord6"
},
"backgroundPanel": {
"dark": "nord1",
"light": "nord5"
},
"backgroundElement": {
"dark": "nord1",
"light": "nord4"
},
"border": {
"dark": "nord2",
"light": "nord3"
},
"borderActive": {
"dark": "nord3",
"light": "nord2"
},
"borderSubtle": {
"dark": "nord2",
"light": "nord3"
},
"diffAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffContext": {
"dark": "nord3",
"light": "nord3"
},
"diffHunkHeader": {
"dark": "nord3",
"light": "nord3"
},
"diffHighlightAdded": {
"dark": "nord14",
"light": "nord14"
},
"diffHighlightRemoved": {
"dark": "nord11",
"light": "nord11"
},
"diffAddedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffContextBg": {
"dark": "nord1",
"light": "nord5"
},
"diffLineNumber": {
"dark": "nord2",
"light": "nord4"
},
"diffAddedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"diffRemovedLineNumberBg": {
"dark": "#3B4252",
"light": "#E5E9F0"
},
"markdownText": {
"dark": "nord4",
"light": "nord0"
},
"markdownHeading": {
"dark": "nord8",
"light": "nord10"
},
"markdownLink": {
"dark": "nord9",
"light": "nord9"
},
"markdownLinkText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCode": {
"dark": "nord14",
"light": "nord14"
},
"markdownBlockQuote": {
"dark": "nord3",
"light": "nord3"
},
"markdownEmph": {
"dark": "nord12",
"light": "nord12"
},
"markdownStrong": {
"dark": "nord13",
"light": "nord13"
},
"markdownHorizontalRule": {
"dark": "nord3",
"light": "nord3"
},
"markdownListItem": {
"dark": "nord8",
"light": "nord10"
},
"markdownListEnumeration": {
"dark": "nord7",
"light": "nord7"
},
"markdownImage": {
"dark": "nord9",
"light": "nord9"
},
"markdownImageText": {
"dark": "nord7",
"light": "nord7"
},
"markdownCodeBlock": {
"dark": "nord4",
"light": "nord0"
},
"syntaxComment": {
"dark": "nord3",
"light": "nord3"
},
"syntaxKeyword": {
"dark": "nord9",
"light": "nord9"
},
"syntaxFunction": {
"dark": "nord8",
"light": "nord8"
},
"syntaxVariable": {
"dark": "nord7",
"light": "nord7"
},
"syntaxString": {
"dark": "nord14",
"light": "nord14"
},
"syntaxNumber": {
"dark": "nord15",
"light": "nord15"
},
"syntaxType": {
"dark": "nord7",
"light": "nord7"
},
"syntaxOperator": {
"dark": "nord9",
"light": "nord9"
},
"syntaxPunctuation": {
"dark": "nord4",
"light": "nord0"
}
}
}
```

View File

@@ -0,0 +1,379 @@
---
title: Araclar
description: LLM'in kullanabilecegi araclari yonetin.
---
Araclar, LLM'in kod tabaninizda eylem gerceklestirmesini saglar. OpenCode yerlesik bir arac setiyle gelir, ancak bunu [ozel araclarla](/docs/custom-tools) veya [MCP sunuculariyla](/docs/mcp-servers) genisletebilirsiniz.
Varsayilan olarak tum araclar **etkindir** ve calismak icin izin istemez. Arac davranisini [izinler](/docs/permissions) uzerinden kontrol edebilirsiniz.
---
## Yapilandirin
Arac davranisini kontrol etmek icin `permission` alanini kullanin. Her arac icin izin verebilir, reddedebilir veya onay isteyebilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "deny",
"bash": "ask",
"webfetch": "allow"
}
}
```
Birden fazla araci ayni anda kontrol etmek icin wildcard da kullanabilirsiniz. Ornegin, bir MCP sunucusundan gelen tum araclar icin onay istemek:
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"mymcp_*": "ask"
}
}
```
Izin yapilandirmasi icin [daha fazla bilgi alin](/docs/permissions).
---
## Yerlesik
OpenCode icinde bulunan tum yerlesik araclar asagidadir.
---
### bash
Proje ortaminizda kabuk komutlari calistirir.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"bash": "allow"
}
}
```
Bu arac LLM'in `npm install`, `git status` gibi terminal komutlarini veya diger kabuk komutlarini calistirmasini saglar.
---
### edit
Birebir metin degistirme ile mevcut dosyalari duzenler.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Bu arac dosyalarda kesin metin eslesmelerini degistirerek hassas duzenleme yapar. LLM'in kodu degistirmek icin kullandigi temel yontemdir.
---
### write
Yeni dosyalar olusturur veya mevcut dosyalari uzerine yazar.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
LLM'in yeni dosya olusturmasina izin vermek icin bunu kullanin. Dosya zaten varsa uzerine yazar.
:::note
`write` araci `edit` izniyle kontrol edilir; bu izin tum dosya degisikliklerini kapsar (`edit`, `write`, `patch`, `multiedit`).
:::
---
### read
Kod tabaninizdan dosya icerigi okur.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"read": "allow"
}
}
```
Bu arac dosyalari okur ve iceriklerini dondurur. Buyuk dosyalar icin belirli satir araliklarini okuma destegi vardir.
---
### grep
Duzensiz ifadelerle dosya iceriginde arama yapar.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"grep": "allow"
}
}
```
Kod tabaninda hizli icerik aramasi sunar. Tam regex sozdizimini ve dosya desen filtrelerini destekler.
---
### glob
Desen eslestirme ile dosya bulur.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"glob": "allow"
}
}
```
`**/*.js` veya `src/**/*.ts` gibi glob desenleriyle dosya arar. Eslesen dosya yollarini degisim zamanina gore siralar.
---
### list
Verilen yoldaki dosya ve dizinleri listeler.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"list": "allow"
}
}
```
Bu arac dizin icerigini listeler. Sonuclari filtrelemek icin glob desenlerini kabul eder.
---
### lsp (deneysel)
Tanim, referans, hover bilgisi ve cagrilar hiyerarsisi gibi kod zekasi ozellikleri icin yapilandirdiginiz LSP sunuculariyla etkilesir.
:::note
Bu arac yalnizca `OPENCODE_EXPERIMENTAL_LSP_TOOL=true` (veya `OPENCODE_EXPERIMENTAL=true`) oldugunda kullanilabilir.
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"lsp": "allow"
}
}
```
Desteklenen islemler: `goToDefinition`, `findReferences`, `hover`, `documentSymbol`, `workspaceSymbol`, `goToImplementation`, `prepareCallHierarchy`, `incomingCalls`, `outgoingCalls`.
Projeniz icin kullanilabilir LSP sunucularini ayarlamak icin [LSP Servers](/docs/lsp) sayfasina bakin.
---
### patch
Dosyalara patch uygular.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"edit": "allow"
}
}
```
Bu arac patch dosyalarini kod tabaniniza uygular. Farkli kaynaklardan gelen diff ve patch'leri uygulamak icin kullanislidir.
:::note
`patch` araci `edit` izniyle kontrol edilir; bu izin tum dosya degisikliklerini kapsar (`edit`, `write`, `patch`, `multiedit`).
:::
---
### skill
Bir [skill](/docs/skills) (`SKILL.md` dosyasi) yukler ve icerigini konusmaya dondurur.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"skill": "allow"
}
}
```
---
### todowrite
Kodlama oturumlarinda yapilacaklar listesini yonetir.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todowrite": "allow"
}
}
```
Karmasik islemlerde ilerlemeyi takip etmek icin gorev listeleri olusturur ve gunceller. LLM bunu cok adimli gorevleri duzenlemek icin kullanir.
:::note
Bu arac alt ajanlar icin varsayilan olarak devre disidir, ama manuel etkinlestirebilirsiniz. [Daha fazla bilgi](/docs/agents/#permissions)
:::
---
### todoread
Mevcut yapilacaklar listesini okur.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"todoread": "allow"
}
}
```
Guncel todo listesi durumunu okur. LLM bunu hangi gorevlerin bekledigini veya tamamlandigini takip etmek icin kullanir.
:::note
Bu arac alt ajanlar icin varsayilan olarak devre disidir, ama manuel etkinlestirebilirsiniz. [Daha fazla bilgi](/docs/agents/#permissions)
:::
---
### webfetch
Web icerigi getirir.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"webfetch": "allow"
}
}
```
LLM'in web sayfalarini getirip okumasini saglar. Dokumantasyon aramak veya cevrimici kaynaklari incelemek icin kullanislidir.
---
### websearch
Web'de bilgi arar.
:::note
Bu arac yalnizca OpenCode provider kullanilirken veya `OPENCODE_ENABLE_EXA` ortam degiskeni dogru degerlerden birine ayarlandiginda (ornegin `true` ya da `1`) kullanilabilir.
OpenCode baslatirken etkinlestirmek icin:
```bash
OPENCODE_ENABLE_EXA=1 opencode
```
:::
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"websearch": "allow"
}
}
```
Exa AI ile web aramasi yaparak ilgili bilgileri bulur. Egitim verisi kesim tarihinin otesindeki konulari arastirmak, guncel olaylari bulmak veya genel arastirma yapmak icin kullanislidir.
API anahtari gerekmez - arac Exa AI'nin barindirilan MCP hizmetine dogrudan kimlik dogrulamasi olmadan baglanir.
:::tip
Bilgi kesfetmeniz gerekiyorsa `websearch`, belirli bir URL'den icerik cekmeniz gerekiyorsa `webfetch` kullanin.
:::
---
### question
Calisma sirasinda kullaniciya soru sorar.
```json title="opencode.json" {4}
{
"$schema": "https://opencode.ai/config.json",
"permission": {
"question": "allow"
}
}
```
Bu arac LLM'in gorev sirasinda kullaniciya soru sormasini saglar. Sunlar icin kullanislidir:
- Kullanici tercihleri veya gereksinimleri toplamak
- Belirsiz talimatlari netlestirmek
- Uygulama seceneklerinde karar almak
- Hangi yone gidilecegine dair secenek sunmak
Her soru bir baslik, soru metni ve secenek listesi icerir. Kullanicilar seceneklerden birini secebilir veya ozel yanit yazabilir. Birden fazla soru varsa tum yanitlari gondermeden once sorular arasinda gezebilirler.
---
## Ozel araclar
Ozel araclar, LLM'in cagirabilecegi kendi fonksiyonlarinizi tanimlamanizi saglar. Bunlar config dosyanizda tanimlanir ve keyfi kod calistirabilir.
Ozel arac olusturma icin [daha fazla bilgi alin](/docs/custom-tools).
---
## MCP sunuculari
MCP (Model Context Protocol) sunuculari, harici araclari ve servisleri entegre etmenizi saglar. Buna veritabani erisimi, API entegrasyonlari ve ucuncu taraf servisler dahildir.
MCP sunucularini yapilandirma icin [daha fazla bilgi alin](/docs/mcp-servers).
---
## Dahili detaylar
Dahilde `grep`, `glob` ve `list` gibi araclar [ripgrep](https://github.com/BurntSushi/ripgrep) kullanir. Varsayilan olarak ripgrep `.gitignore` desenlerine uyar; yani `.gitignore` icindeki dosya ve dizinler arama ve listeleme sonucuna dahil edilmez.
---
### Ignore desenleri
Normalde yok sayilan dosyalari dahil etmek icin proje kokunde bir `.ignore` dosyasi olusturun. Bu dosya belirli yollari acikca izinli yapabilir.
```text title=".ignore"
!node_modules/
!dist/
!build/
```
Ornegin bu `.ignore` dosyasi, `.gitignore` icinde olsalar bile ripgrep'in `node_modules/`, `dist/` ve `build/` dizinlerinde arama yapmasina izin verir.

View File

@@ -0,0 +1,299 @@
---
title: Sorun giderme
description: Yaygin sorunlar ve cozum adimlari.
---
OpenCode ile ilgili bir sorunu ayiklamak icin once loglari ve diskte tuttugu yerel verileri kontrol edin.
---
## Loglar
Log dosyalari su konuma yazilir:
- **macOS/Linux**: `~/.local/share/opencode/log/`
- **Windows**: `WIN+R` tuslayip `%USERPROFILE%\.local\share\opencode\log` yapistirin
Log dosyalari zaman damgasiyla adlandirilir (ornegin `2025-01-09T123456.log`) ve en yeni 10 log dosyasi tutulur.
Daha ayrintili ayiklama bilgisi icin `--log-level` komut satiri secenegini kullanabilirsiniz. Ornek: `opencode --log-level DEBUG`.
---
## Depolama
opencode, oturum verilerini ve diger uygulama verilerini diskte su konumda saklar:
- **macOS/Linux**: `~/.local/share/opencode/`
- **Windows**: `WIN+R` tuslayip `%USERPROFILE%\.local\share\opencode` yapistirin
Bu dizin sunlari icerir:
- `auth.json` - API anahtarlari, OAuth tokenlari gibi kimlik dogrulama verileri
- `log/` - Uygulama loglari
- `project/` - Oturum ve mesaj verileri gibi projeye ozel veriler
- Proje bir Git deposundaysa `./<project-slug>/storage/` altinda saklanir
- Git deposu degilse `./global/storage/` altinda saklanir
---
## Masaustu uygulamasi
OpenCode Desktop arka planda yerel bir OpenCode sunucusu (`opencode-cli` sidecar) calistirir. Sorunlarin cogu bozuk bir plugin, hasarli cache veya hatali sunucu ayarindan kaynaklanir.
### Hizli kontroller
- Uygulamayi tamamen kapatip yeniden acin
- Uygulama hata ekrani gosteriyorsa **Restart**'a tiklayip hata detaylarini kopyalayin
- Yalnizca macOS: `OpenCode` menusu -> **Reload Webview** (arayuz bos/donukse yardimci olur)
---
### Pluginleri devre disi birakin
Desktop uygulamasi acilista cokuyorsa, takiliyorsa veya garip davranislar gosteriyorsa once pluginleri devre disi birakin.
#### Global config'i kontrol edin
Global config dosyanizi acin ve `plugin` anahtarini arayin.
- **macOS/Linux**: `~/.config/opencode/opencode.jsonc` (veya `~/.config/opencode/opencode.json`)
- **macOS/Linux** (eski kurulumlar): `~/.local/share/opencode/opencode.jsonc`
- **Windows**: `WIN+R` tuslayip `%USERPROFILE%\.config\opencode\opencode.jsonc` yapistirin
Plugin tanimliysa anahtari kaldirarak veya bos bir diziye cekerek gecici olarak devre disi birakin:
```jsonc
{
"$schema": "https://opencode.ai/config.json",
"plugin": [],
}
```
#### Plugin dizinlerini kontrol edin
OpenCode diskten yerel plugin de yukleyebilir. Bu dizinleri gecici olarak tasiyin (veya klasoru yeniden adlandirin) ve uygulamayi yeniden baslatin:
- **Global plugins**
- **macOS/Linux**: `~/.config/opencode/plugins/`
- **Windows**: `WIN+R` tuslayip `%USERPROFILE%\.config\opencode\plugins` yapistirin
- **Project plugins** (sadece proje bazli config kullaniyorsaniz)
- `<your-project>/.opencode/plugins/`
Uygulama duzelirse soruna neden olan plugini bulmak icin pluginleri tek tek yeniden etkinlestirin.
---
### Cache'i temizleyin
Pluginleri kapatmak ise yaramazsa (veya plugin kurulumu takili kaldiysa), OpenCode'un cache'i yeniden olusturmasi icin cache'i temizleyin.
1. OpenCode Desktop'u tamamen kapatin
2. Cache dizinini silin:
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/.cache/opencode`
- **Linux**: `~/.cache/opencode` dizinini silin (veya `rm -rf ~/.cache/opencode` calistirin)
- **Windows**: `WIN+R` tuslayip `%USERPROFILE%\.cache\opencode` yapistirin
3. OpenCode Desktop'u yeniden baslatin
---
### Sunucu baglanti sorunlarini duzeltin
OpenCode Desktop ya kendi yerel sunucusunu baslatir (varsayilan) ya da sizin tanimladiginiz bir sunucu URL'sine baglanir.
**"Connection Failed"** penceresi goruyorsaniz (veya uygulama acilis ekranini gecemiyorsa), ozel bir sunucu URL'si olup olmadigini kontrol edin.
#### Desktop varsayilan sunucu URL'sini temizleyin
Ana ekranda sunucu adina (durum noktali) tiklayarak Server secicisini acin. **Default server** bolumunde **Clear**'a tiklayin.
#### Config'ten `server.port` / `server.hostname` kaldirin
`opencode.json(c)` dosyanizda `server` bolumu varsa gecici olarak kaldirin ve desktop uygulamasini yeniden baslatin.
#### Ortam degiskenlerini kontrol edin
Ortamda `OPENCODE_PORT` ayarliysa desktop uygulamasi yerel sunucu icin o portu kullanmaya calisir.
- `OPENCODE_PORT` degerini kaldirin (veya bos bir port secin) ve yeniden baslatin
---
### Linux: Wayland / X11 sorunlari
Linux'ta bazi Wayland kurulumlari bos pencere veya compositor hatalarina yol acabilir.
- Wayland kullaniyorsaniz ve uygulama bos/acilmiyorsa `OC_ALLOW_WAYLAND=1` ile baslatin
- Bu daha kotu olursa kaldirip X11 oturumunda baslatmayi deneyin
---
### Windows: WebView2 runtime
Windows'ta OpenCode Desktop, Microsoft Edge **WebView2 Runtime** gerektirir. Uygulama bos pencereyle aciliyorsa veya hic baslamiyorsa WebView2'yi kurup/guncelleyip tekrar deneyin.
---
### Windows: Genel performans sorunlari
Windows'ta yavaslik, dosya erisim sorunlari veya terminal problemleri yasiyorsaniz [WSL (Windows Subsystem for Linux)](/docs/windows-wsl) kullanmayi deneyin. WSL, OpenCode ozellikleriyle daha sorunsuz calisan bir Linux ortami saglar.
---
### Bildirimler gorunmuyor
OpenCode Desktop sistem bildirimlerini yalnizca su durumlarda gosterir:
- Isletim sistemi ayarlarinizda OpenCode icin bildirimler etkinse
- Uygulama penceresi odakta degilse
---
### Desktop depolamasini sifirlayin (son care)
Uygulama acilmiyorsa ve ayarlari arayuz icinden temizleyemiyorsaniz, desktop uygulamasinin kayitli durumunu sifirlayin.
1. OpenCode Desktop'u kapatin
2. Su dosyalari bulun ve silin (OpenCode Desktop uygulama veri dizininde yer alirlar):
- `opencode.settings.dat` (desktop varsayilan sunucu URL'si)
- `opencode.global.dat` ve `opencode.workspace.*.dat` (son sunucular/projeler gibi UI durumu)
Dizini hizlica bulmak icin:
- **macOS**: Finder -> `Cmd+Shift+G` -> `~/Library/Application Support` (ardindan yukaridaki dosya adlarini aratin)
- **Linux**: `~/.local/share` altinda bu dosya adlarini aratin
- **Windows**: `WIN+R` -> `%APPDATA%` (ardindan bu dosya adlarini aratin)
---
## Yardim alin
OpenCode ile ilgili bir sorun yasiyorsaniz:
1. **GitHub'da issue acin**
Hata bildirmek veya ozellik talep etmek icin en iyi yol GitHub depomuzdur:
[**github.com/anomalyco/opencode/issues**](https://github.com/anomalyco/opencode/issues)
Yeni issue acmadan once sorununuzun daha once raporlanip raporlanmadigini kontrol edin.
2. **Discord'a katilin**
Gercek zamanli yardim ve topluluk sohbeti icin Discord sunucumuza katilin:
[**opencode.ai/discord**](https://opencode.ai/discord)
---
## Yaygin sorunlar
Asagida yaygin sorunlar ve cozumleri yer aliyor.
---
### OpenCode baslamiyor
1. Hata mesaji icin loglari kontrol edin
2. Terminalde cikti gormek icin `--print-logs` ile calistirin
3. `opencode upgrade` ile en guncel surumu kullandiginizdan emin olun
---
### Kimlik dogrulama sorunlari
1. TUI'da `/connect` komutuyla yeniden kimlik dogrulamasi yapin
2. API anahtarlarinizin gecerli oldugunu kontrol edin
3. Aginizin provider API baglantilarina izin verdiginden emin olun
---
### Model kullanilamiyor
1. Provider ile kimlik dogrulamasi yaptiginizi kontrol edin
2. Config'teki model adinin dogru oldugunu dogrulayin
3. Bazi modeller ozel erisim veya abonelik gerektirebilir
`ProviderModelNotFoundError` aliyorsaniz buyuk olasilikla bir yerde model referansi yanlistir.
Model referansi su formatta olmalidir: `<providerId>/<modelId>`
Ornekler:
- `openai/gpt-4.1`
- `openrouter/google/gemini-2.5-flash`
- `opencode/kimi-k2`
Erisiminiz olan modelleri gormek icin `opencode models` calistirin.
---
### ProviderInitError
`ProviderInitError` aliyorsaniz buyuk olasilikla config'iniz gecersiz veya bozulmustur.
Cozum adimlari:
1. Once [providers rehberini](/docs/providers) izleyerek provider kurulumunun dogru oldugunu dogrulayin
2. Sorun surerse kayitli konfigurasyonu temizlemeyi deneyin:
```bash
rm -rf ~/.local/share/opencode
```
Windows'ta `WIN+R` tuslayip su konumu silin: `%USERPROFILE%\.local\share\opencode`
3. TUI'da `/connect` komutuyla provider kimlik dogrulamasini tekrar yapin
---
### AI_APICallError ve provider paket sorunlari
API cagrisi hatalari aliyorsaniz bunun nedeni guncel olmayan provider paketleri olabilir. opencode, provider paketlerini (OpenAI, Anthropic, Google vb.) gerektikce dinamik yukler ve yerelde onbellekler.
Provider paket sorunlarini gidermek icin:
1. Provider paket cache'ini temizleyin:
```bash
rm -rf ~/.cache/opencode
```
Windows'ta `WIN+R` tuslayip su konumu silin: `%USERPROFILE%\.cache\opencode`
2. En guncel provider paketlerini yeniden kurmak icin opencode'u yeniden baslatin
Bu, opencode'un en yeni provider paket surumlerini indirmesini zorlar ve model parametresi/API degisikliklerinden kaynakli uyumsuzluklari cogu zaman cozer.
---
### Linux'ta kopyala/yapistir calismiyor
Linux kullanicilarinin kopyala/yapistir ozelliginin calismasi icin asagidaki pano araclarindan en az birini kurmasi gerekir:
**X11 sistemleri icin:**
```bash
apt install -y xclip
# veya
apt install -y xsel
```
**Wayland sistemleri icin:**
```bash
apt install -y wl-clipboard
```
**Headless ortamlar icin:**
```bash
apt install -y xvfb
# ve su komutlari calistirin:
Xvfb :99 -screen 0 1024x768x24 > /dev/null 2>&1 &
export DISPLAY=:99.0
```
opencode, Wayland kullandiginizi algilarsa `wl-clipboard` tercihi yapar. Aksi halde sirayla `xclip` ve `xsel` araclarini arar.

View File

@@ -0,0 +1,387 @@
---
title: TUI
description: OpenCode terminal arayuzunu kullanin.
---
import { Tabs, TabItem } from "@astrojs/starlight/components"
OpenCode, projelerinizde LLM ile calismak icin etkilesimli bir terminal arayuzu (TUI) sunar.
OpenCode'u calistirdiginizda mevcut dizin icin TUI baslar.
```bash
opencode
```
Isterseniz belirli bir calisma dizini icin de baslatabilirsiniz.
```bash
opencode /path/to/project
```
TUI icinde bir mesaj yazarak istem gonderebilirsiniz.
```text
Kod tabani icin hizli bir ozet ver.
```
---
## Dosya referanslari
Mesajlarinizda `@` kullanarak dosyalara referans verebilirsiniz. Bu, mevcut calisma dizininde bulanik dosya aramasi yapar.
:::tip
Mesajlarinizda dosyalara referans vermek icin `@` kullanabilirsiniz.
:::
```text "@packages/functions/src/api/index.ts"
@packages/functions/src/api/index.ts dosyasinda kimlik dogrulama nasil ele alinmis?
```
Dosya icerigi otomatik olarak konusmaya eklenir.
---
## Bash komutlari
Bir mesaji `!` ile baslatarak kabuk komutu calistirin.
```bash frame="none"
!ls -la
```
Komut ciktiisi bir arac sonucu olarak konusmaya eklenir.
---
## Komutlar
OpenCode TUI kullanirken `/` ve komut adini yazarak hizli eylemler calistirabilirsiniz. Ornek:
```bash frame="none"
/help
```
Komutlarin cogu, lider tusu `ctrl+x` olan bir kisayola da sahiptir. [Daha fazla bilgi](/docs/keybinds).
Mevcut slash komutlarinin tam listesi:
---
### connect
OpenCode'a bir provider ekler. Mevcut provider'lari secip API anahtarlari eklemenizi saglar.
```bash frame="none"
/connect
```
---
### compact
Guncel oturumu sikistirir. _Takma ad_: `/summarize`
```bash frame="none"
/compact
```
**Kisayol:** `ctrl+x c`
---
### details
Arac calistirma detaylarini goster/gizle yapar.
```bash frame="none"
/details
```
**Kisayol:** `ctrl+x d`
---
### editor
Mesaj yazmak icin harici editor acar. `EDITOR` ortam degiskeninde ayarli editoru kullanir. [Daha fazla bilgi](#editor-setup).
```bash frame="none"
/editor
```
**Kisayol:** `ctrl+x e`
---
### exit
OpenCode'dan cikar. _Takma adlar_: `/quit`, `/q`
```bash frame="none"
/exit
```
**Kisayol:** `ctrl+x q`
---
### export
Mevcut konusmayi Markdown olarak disa aktarir ve varsayilan editorunuzde acar. `EDITOR` ortam degiskenindeki editoru kullanir. [Daha fazla bilgi](#editor-setup).
```bash frame="none"
/export
```
**Kisayol:** `ctrl+x x`
---
### help
Yardim penceresini gosterir.
```bash frame="none"
/help
```
**Kisayol:** `ctrl+x h`
---
### init
`AGENTS.md` dosyasini olusturur veya gunceller. [Daha fazla bilgi](/docs/rules).
```bash frame="none"
/init
```
**Kisayol:** `ctrl+x i`
---
### models
Kullanilabilir modelleri listeler.
```bash frame="none"
/models
```
**Kisayol:** `ctrl+x m`
---
### new
Yeni bir oturum baslatir. _Takma ad_: `/clear`
```bash frame="none"
/new
```
**Kisayol:** `ctrl+x n`
---
### redo
Geri alinan bir mesaji tekrar uygular. Yalnizca `/undo` kullanildiktan sonra kullanilabilir.
:::tip
Dosya degisiklikleri de geri yuklenir.
:::
Dahilde bu islem dosya degisikliklerini yonetmek icin Git kullanir. Bu nedenle projenizin **bir Git deposu olmasi gerekir**.
```bash frame="none"
/redo
```
**Kisayol:** `ctrl+x r`
---
### sessions
Oturumlari listeler ve aralarinda gecis yapar. _Takma adlar_: `/resume`, `/continue`
```bash frame="none"
/sessions
```
**Kisayol:** `ctrl+x l`
---
### share
Mevcut oturumu paylasir. [Daha fazla bilgi](/docs/share).
```bash frame="none"
/share
```
**Kisayol:** `ctrl+x s`
---
### themes
Kullanilabilir temalari listeler.
```bash frame="none"
/theme
```
**Kisayol:** `ctrl+x t`
---
### thinking
Konusmadaki thinking/reasoning bloklarinin gorunurlugunu degistirir. Etkin oldugunda, genisletilmis dusunmeyi destekleyen modellerin akil yurutmelerini gorebilirsiniz.
:::note
Bu komut sadece thinking bloklarinin **gosterimini** kontrol eder, modelin gercek akil yurutmelerini acip kapatmaz. Gercek akil yurutme yetenegini degistirmek icin `ctrl+t` ile model varyantlari arasinda gecis yapin.
:::
```bash frame="none"
/thinking
```
---
### undo
Konusmadaki son mesaji geri alir. En son kullanici mesaji, sonraki tum yanitlar ve dosya degisiklikleri kaldirilir.
:::tip
Yapilan dosya degisiklikleri de geri cevrilir.
:::
Dahilde bu islem dosya degisikliklerini yonetmek icin Git kullanir. Bu nedenle projenizin **bir Git deposu olmasi gerekir**.
```bash frame="none"
/undo
```
**Kisayol:** `ctrl+x u`
---
### unshare
Mevcut oturumun paylasimini kaldirir. [Daha fazla bilgi](/docs/share#paylasimi-kaldirma).
```bash frame="none"
/unshare
```
---
## Editor kurulumu
`/editor` ve `/export` komutlari, `EDITOR` ortam degiskeninde tanimli editoru kullanir.
<Tabs>
<TabItem label="Linux/macOS">
```bash
# nano veya vim ornegi
export EDITOR=nano
export EDITOR=vim
# VS Code, Cursor, VSCodium, Windsurf, Zed vb. GUI editorler icin
# --wait ekleyin
export EDITOR="code --wait"
```
Kalici yapmak icin bunu kabuk profilinize ekleyin:
`~/.bashrc`, `~/.zshrc` vb.
</TabItem>
<TabItem label="Windows (CMD)">
```bash
set EDITOR=notepad
# VS Code, Cursor, VSCodium, Windsurf, Zed vb. GUI editorler icin
# --wait ekleyin
set EDITOR=code --wait
```
Kalici yapmak icin **System Properties** > **Environment Variables** yolunu kullanin.
</TabItem>
<TabItem label="Windows (PowerShell)">
```powershell
$env:EDITOR = "notepad"
# VS Code, Cursor, VSCodium, Windsurf, Zed vb. GUI editorler icin
# --wait ekleyin
$env:EDITOR = "code --wait"
```
Kalici yapmak icin bunu PowerShell profilinize ekleyin.
</TabItem>
</Tabs>
Yaygin editor secenekleri:
- `code` - Visual Studio Code
- `cursor` - Cursor
- `windsurf` - Windsurf
- `nvim` - Neovim editoru
- `vim` - Vim editoru
- `nano` - Nano editoru
- `notepad` - Windows Notepad
- `subl` - Sublime Text
:::note
VS Code gibi bazi editorlerin `--wait` parametresiyle baslatilmasi gerekir.
:::
Bazi editorler bloklayici modda calismak icin komut satiri argumanlari ister. `--wait` bayragi editor surecinin kapanana kadar beklemesini saglar.
---
## Yapilandirin
TUI davranisini OpenCode config dosyanizdan ozellestirebilirsiniz.
```json title="opencode.json"
{
"$schema": "https://opencode.ai/config.json",
"tui": {
"scroll_speed": 3,
"scroll_acceleration": {
"enabled": true
}
}
}
```
### Secenekler
- `scroll_acceleration` - Daha akici ve dogal kaydirma icin macOS tarzı hizlanmayi acar. Etkin oldugunda hizli kaydirma hareketlerinde hiz artar, yavas hareketlerde hassas kalir. **Bu ayar etkin oldugunda `scroll_speed` degerini gecersiz kilar.**
- `scroll_speed` - Kaydirma komutlariyla TUI'nin ne kadar hizli kayacagini belirler (minimum: `1`). Varsayilan `3` degeridir. **Not: `scroll_acceleration.enabled` `true` ise yok sayilir.**
---
## Ozellestirme
TUI gorunumunun cesitli kisimlarini komut paletiyle (`ctrl+x h` veya `/help`) ozellestirebilirsiniz. Bu ayarlar yeniden baslatmalar arasinda korunur.
---
#### Kullanici adi gorunumu
Sohbet mesajlarinda kullanici adinizin gosterilip gosterilmeyecegini degistirir. Sunlardan erisebilirsiniz:
- Komut paleti: "username" veya "hide username" aratin
- Ayar otomatik saklanir ve TUI oturumlarinda hatirlanir

View File

@@ -0,0 +1,142 @@
---
title: Web
description: Tarayıcınızda OpenCode'u kullanma.
---
OpenCode, tarayıcınızda bir web uygulaması olarak çalışabilir ve bir terminale ihtiyaç duymadan aynı güçlü AI kodlama deneyimini sağlayabilir.
![OpenCode Web - Yeni Oturum](../../../assets/web/web-homepage-new-session.png)
## Başlarken
Aşağıdakileri çalıştırarak web arayüzünü başlatın:
```bash
opencode web
```
Bu, `127.0.0.1` üzerinde rastgele kullanılabilir bir bağlantı noktasına sahip yerel bir sunucuyu başlatır ve OpenCode'u varsayılan tarayıcınızda otomatik olarak açar.
:::caution
`OPENCODE_SERVER_PASSWORD` ayarlanmadıysa sunucunun güvenliği kaldırılacaktır. Bu, yerel kullanım için iyidir ancak ağ erişimi için ayarlanmalıdır.
:::
:::tip[Windows Users]
En iyi deneyim için PowerShell yerine `opencode web`'yi [WSL](/docs/windows-wsl)'den çalıştırın. Bu, uygun dosya sistemi erişimini ve terminal entegrasyonunu sağlar.
:::
---
## Yapılandırma
Web sunucusunu komut satırı bayraklarıyla veya [config dosyanızda](/docs/config) yapılandırabilirsiniz.
### Port
OpenCode varsayılan olarak kullanılabilir bir bağlantı noktasını seçer. Bir bağlantı noktası belirtebilirsiniz:
```bash
opencode web --port 4096
```
### Ana makine adı
Varsayılan olarak sunucu `127.0.0.1` (yalnızca localhost) öğesine bağlanır. OpenCode'u ağınızda erişilebilir kılmak için:
```bash
opencode web --hostname 0.0.0.0
```
`0.0.0.0` kullanıldığında, OpenCode hem yerel hem de ağ adreslerini gösterecektir:
```
Local access: http://localhost:4096
Network access: http://192.168.1.100:4096
```
### mDNS Keşfi
Sunucunuzun yerel ağda bulunabilir olmasını sağlamak için mDNS'yi etkinleştirin:
```bash
opencode web --mdns
```
Bu, ana bilgisayar adını otomatik olarak `0.0.0.0` olarak ayarlar ve sunucuyu `opencode.local` olarak tanıtır.
Aynı ağ üzerinde birden fazla örneği çalıştıracak şekilde mDNS alan adını özelleştirebilirsiniz:
```bash
opencode web --mdns --mdns-domain myproject.local
```
### CORS
CORS'a yönelik ek alan adlarına izin vermek için (özel ön uçlar için kullanışlıdır):
```bash
opencode web --cors https://example.com
```
### Kimlik Doğrulaması
Erişimi korumak için `OPENCODE_SERVER_PASSWORD` ortam değişkenini kullanarak bir parola ayarlayın:
```bash
OPENCODE_SERVER_PASSWORD=secret opencode web
```
Kullanıcı adı varsayılan olarak `opencode` şeklindedir ancak `OPENCODE_SERVER_USERNAME` ile değiştirilebilir.
---
## Web Arayüzünü Kullanma
Web arayüzü başlatıldığında OpenCode oturumlarınıza erişim sağlar.
### Oturum
Oturumlarınızı ana sayfadan görüntüleyin ve yönetin. Aktif oturumları görebilir ve yenilerini başlatabilirsiniz.
![OpenCode Web - Etkin Oturum](../../../assets/web/web-homepage-active-session.png)
### Sunucu Durumu
Bağlı sunucuları ve durumlarını görüntülemek için "Sunucuları Gör" seçeneğini tıklayın.
![OpenCode Web - Sunuculara bakın](../../../assets/web/web-homepage-see-servers.png)
---
## Terminal Takma
Çalışan bir web sunucusuna bir terminal TUI'si ekleyebilirsiniz:
```bash
# Start the web server
opencode web --port 4096
# In another terminal, attach the TUI
opencode attach http://localhost:4096
```
Bu, aynı oturumları ve durumu paylaşarak hem web arayüzünü hem de terminali aynı anda kullanmanıza olanak tanır.
---
## Yapılandırma Dosyası
Sunucu ayarlarını `opencode.json` yapılandırma dosyanızda da yapılandırabilirsiniz:
```json
{
"server": {
"port": 4096,
"hostname": "0.0.0.0",
"mdns": true,
"cors": ["https://example.com"]
}
}
```
Komut satırı bayrakları yapılandırma dosyası ayarlarından önceliklidir.

View File

@@ -0,0 +1,113 @@
---
title: Windows (WSL)
description: En iyi deneyim icin OpenCode'u WSL'de calistirin.
---
import { Steps } from "@astrojs/starlight/components"
OpenCode Windows'ta dogrudan calisabilir, ancak en iyi deneyim icin [Windows Subsystem for Linux (WSL)](https://learn.microsoft.com/en-us/windows/wsl/install) kullanmanizi oneriyoruz. WSL, OpenCode ozellikleriyle sorunsuz calisan bir Linux ortami saglar.
:::tip[Why WSL?]
WSL, daha iyi dosya sistemi performansi, tam terminal destegi ve OpenCode'un dayandigi gelistirme araclariyla uyumluluk sunar.
:::
---
## Kurulum
<Steps>
1. **WSL'i yukleyin**
Henuz yuklemediyseniz resmi Microsoft rehberini kullanarak [WSL kurulumunu](https://learn.microsoft.com/en-us/windows/wsl/install) yapin.
2. **OpenCode'u WSL icine yukleyin**
WSL hazir olduktan sonra WSL terminalini acin ve OpenCode'u [kurulum yontemlerinden](/docs/) biriyle yukleyin.
```bash
curl -fsSL https://opencode.ai/install | bash
```
3. **OpenCode'u WSL icinden kullanin**
Proje dizininize gidin (`/mnt/c/`, `/mnt/d/` vb. ile Windows dosyalarina erisebilirsiniz) ve OpenCode'u calistirin.
```bash
cd /mnt/c/Users/YourName/project
opencode
```
</Steps>
---
## Desktop uygulamasi + WSL sunucusu
OpenCode Desktop kullanmak isteyip sunucuyu WSL'de calistirmak istiyorsaniz:
1. **Sunucuyu WSL'de baslatin** ve dis baglantilara izin vermek icin `--hostname 0.0.0.0` kullanin:
```bash
opencode serve --hostname 0.0.0.0 --port 4096
```
2. **Desktop uygulamasini** `http://localhost:4096` adresine baglayin
:::note
Kurulumunuzda `localhost` calismiyorsa bunun yerine WSL IP adresini kullanin (WSL icinde: `hostname -I`) ve `http://<wsl-ip>:4096` adresine baglanin.
:::
:::caution
`--hostname 0.0.0.0` kullaniyorsaniz sunucuyu guvene almak icin `OPENCODE_SERVER_PASSWORD` ayarlayin.
```bash
OPENCODE_SERVER_PASSWORD=your-password opencode serve --hostname 0.0.0.0
```
:::
---
## Web istemcisi + WSL
Windows'ta en iyi web deneyimi icin:
1. **`opencode web` komutunu PowerShell yerine WSL terminalinde calistirin**:
```bash
opencode web --hostname 0.0.0.0
```
2. **Windows tarayicinizdan** `http://localhost:<port>` adresini acin (OpenCode URL'yi yazdirir)
`opencode web` komutunu WSL'den calistirmak, dosya sistemi erisimi ve terminal entegrasyonunu daha tutarli hale getirirken tarayicidan erisimi korur.
---
## Windows dosyalarina erisin
WSL, tum Windows dosyalariniza `/mnt/` dizini uzerinden erisebilir:
- `C:` surucusu -> `/mnt/c/`
- `D:` surucusu -> `/mnt/d/`
- Ve digerleri...
Ornek:
```bash
cd /mnt/c/Users/YourName/Documents/project
opencode
```
:::tip
En sorunsuz deneyim icin deponuzu WSL dosya sistemine (ornegin `~/code/` altina) klonlayip OpenCode'u orada calistirmayi dusunun.
:::
---
## Ipuclari
- Windows suruculerinde duran projelerde OpenCode'u WSL icinde calistirin - dosya erisimi daha sorunsuz olur
- Butunlesik bir gelistirme akisi icin OpenCode ile birlikte VS Code [WSL eklentisini](https://code.visualstudio.com/docs/remote/wsl) kullanin
- OpenCode konfigurasyonunuz ve oturumlariniz WSL ortaminda `~/.local/share/opencode/` konumunda saklanir

View File

@@ -0,0 +1,238 @@
---
title: Zen
description: OpenCode ekibinin sundugu secili model listesi.
---
import config from "../../../../config.mjs"
export const console = config.console
export const email = `mailto:${config.email}`
OpenCode Zen, OpenCode ekibi tarafindan test edilip dogrulanmis modellerin listesidir.
:::note
OpenCode Zen su anda beta asamasindadir.
:::
Zen, OpenCode'daki diger provider'lar gibi calisir. OpenCode Zen'e giris yapar ve API anahtarinizi alirsiniz.
Tamamen istege baglidir; OpenCode kullanmak icin Zen kullanmak zorunda degilsiniz.
---
## Arka plan
Piyasada cok sayida model var, ancak bunlarin sadece bir kismi kodlama ajani olarak iyi calisir. Ayrica provider'larin cogu birbirinden cok farkli sekilde ayarlanir; bu da performans ve kaliteyi ciddi bicimde degistirir.
:::tip
OpenCode ile iyi calisan belirli model/provider kombinasyonlarini test ettik.
:::
Bu nedenle OpenRouter benzeri bir servis uzerinden model kullaniyorsaniz, istediginiz modelin en iyi surumunu alip almadiginizdan her zaman emin olamazsiniz.
Bunu cozmeye yonelik olarak sunlari yaptik:
1. Secili bir model grubunu test ettik ve ekipleriyle en iyi calisma sekli uzerine gorustuk
2. Daha sonra bazi provider'larla bu modellerin dogru sekilde sunuldugunu dogruladik
3. Son olarak model/provider kombinasyonlarini benchmark ederek guvenle onerebilecegimiz bir liste olusturduk
OpenCode Zen, bu modellere erisim saglayan bir AI gateway'dir.
---
## Nasil calisir
OpenCode Zen, OpenCode'daki diger provider'lar gibi calisir.
1. **<a href={console}>OpenCode Zen</a>** hesabina giris yapin, odeme bilgilerinizi ekleyin ve API anahtarinizi kopyalayin
2. TUI'da `/connect` komutunu calistirin, OpenCode Zen'i secin ve API anahtarinizi yapistirin
3. Onerdigimiz model listesini gormek icin TUI'da `/models` calistirin
Ucretlendirme istek basina yapilir ve hesabiniza kredi yukleyebilirsiniz.
---
## Endpoint'ler
Modellerimize asagidaki API endpoint'leri uzerinden de erisebilirsiniz.
| Model | Model ID | Endpoint | AI SDK Package |
| ------------------ | ------------------ | -------------------------------------------------- | --------------------------- |
| GPT 5.2 | gpt-5.2 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.2 Codex | gpt-5.2-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 | gpt-5.1 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 Codex | gpt-5.1-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 Codex Max | gpt-5.1-codex-max | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5.1 Codex Mini | gpt-5.1-codex-mini | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 | gpt-5 | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 Codex | gpt-5-codex | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| GPT 5 Nano | gpt-5-nano | `https://opencode.ai/zen/v1/responses` | `@ai-sdk/openai` |
| Claude Sonnet 4.5 | claude-sonnet-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Sonnet 4 | claude-sonnet-4 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Haiku 4.5 | claude-haiku-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Haiku 3.5 | claude-3-5-haiku | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.6 | claude-opus-4-6 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.5 | claude-opus-4-5 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Claude Opus 4.1 | claude-opus-4-1 | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| Gemini 3 Pro | gemini-3-pro | `https://opencode.ai/zen/v1/models/gemini-3-pro` | `@ai-sdk/google` |
| Gemini 3 Flash | gemini-3-flash | `https://opencode.ai/zen/v1/models/gemini-3-flash` | `@ai-sdk/google` |
| MiniMax M2.1 | minimax-m2.1 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| MiniMax M2.1 Free | minimax-m2.1-free | `https://opencode.ai/zen/v1/messages` | `@ai-sdk/anthropic` |
| GLM 4.7 | glm-4.7 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.7 Free | glm-4.7-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| GLM 4.6 | glm-4.6 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2.5 | kimi-k2.5 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2.5 Free | kimi-k2.5-free | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2 Thinking | kimi-k2-thinking | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Kimi K2 | kimi-k2 | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Qwen3 Coder 480B | qwen3-coder | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
| Big Pickle | big-pickle | `https://opencode.ai/zen/v1/chat/completions` | `@ai-sdk/openai-compatible` |
OpenCode config'inizdeki [model id](/docs/config/#models), `opencode/<model-id>` formatini kullanir.
Ornegin GPT 5.2 Codex icin config'te `opencode/gpt-5.2-codex` kullanirsiniz.
---
### Modeller
Mevcut modellerin tam listesini ve metadatasini su adresten cekebilirsiniz:
```
https://opencode.ai/zen/v1/models
```
---
## Fiyatlandirma
Kullandikca ode modelini destekliyoruz. Asagidaki fiyatlar **1M token basina** verilmistir.
| Model | Input | Output | Cached Read | Cached Write |
| --------------------------------- | ------ | ------ | ----------- | ------------ |
| Big Pickle | Free | Free | Free | - |
| MiniMax M2.1 Free | Free | Free | Free | - |
| MiniMax M2.1 | $0.30 | $1.20 | $0.10 | - |
| GLM 4.7 Free | Free | Free | Free | - |
| GLM 4.7 | $0.60 | $2.20 | $0.10 | - |
| GLM 4.6 | $0.60 | $2.20 | $0.10 | - |
| Kimi K2.5 Free | Free | Free | Free | - |
| Kimi K2.5 | $0.60 | $3.00 | $0.08 | - |
| Kimi K2 Thinking | $0.40 | $2.50 | - | - |
| Kimi K2 | $0.40 | $2.50 | - | - |
| Qwen3 Coder 480B | $0.45 | $1.50 | - | - |
| Claude Sonnet 4.5 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
| Claude Sonnet 4.5 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
| Claude Sonnet 4 (≤ 200K tokens) | $3.00 | $15.00 | $0.30 | $3.75 |
| Claude Sonnet 4 (> 200K tokens) | $6.00 | $22.50 | $0.60 | $7.50 |
| Claude Haiku 4.5 | $1.00 | $5.00 | $0.10 | $1.25 |
| Claude Haiku 3.5 | $0.80 | $4.00 | $0.08 | $1.00 |
| Claude Opus 4.6 (≤ 200K tokens) | $5.00 | $25.00 | $0.50 | $6.25 |
| Claude Opus 4.6 (> 200K tokens) | $10.00 | $37.50 | $1.00 | $12.50 |
| Claude Opus 4.5 | $5.00 | $25.00 | $0.50 | $6.25 |
| Claude Opus 4.1 | $15.00 | $75.00 | $1.50 | $18.75 |
| Gemini 3 Pro (≤ 200K tokens) | $2.00 | $12.00 | $0.20 | - |
| Gemini 3 Pro (> 200K tokens) | $4.00 | $18.00 | $0.40 | - |
| Gemini 3 Flash | $0.50 | $3.00 | $0.05 | - |
| GPT 5.2 | $1.75 | $14.00 | $0.175 | - |
| GPT 5.2 Codex | $1.75 | $14.00 | $0.175 | - |
| GPT 5.1 | $1.07 | $8.50 | $0.107 | - |
| GPT 5.1 Codex | $1.07 | $8.50 | $0.107 | - |
| GPT 5.1 Codex Max | $1.25 | $10.00 | $0.125 | - |
| GPT 5.1 Codex Mini | $0.25 | $2.00 | $0.025 | - |
| GPT 5 | $1.07 | $8.50 | $0.107 | - |
| GPT 5 Codex | $1.07 | $8.50 | $0.107 | - |
| GPT 5 Nano | Free | Free | Free | - |
Kullanim gecmisinizde _Claude Haiku 3.5_ gorebilirsiniz. Bu, oturum basliklarini olusturmak icin kullanilan [dusuk maliyetli bir modeldir](/docs/config/#models).
:::note
Kredi karti ucretleri maliyetine yansitilir (islem basina %4.4 + $0.30); bunun disinda ek ucret almiyoruz.
:::
Ucretsiz modeller:
- GLM 4.7 Free, sinirli bir sure icin OpenCode'da ucretsizdir. Ekip bu surede geri bildirim toplayip modeli iyilestiriyor
- Kimi K2.5 Free, sinirli bir sure icin OpenCode'da ucretsizdir. Ekip bu surede geri bildirim toplayip modeli iyilestiriyor
- MiniMax M2.1 Free, sinirli bir sure icin OpenCode'da ucretsizdir. Ekip bu surede geri bildirim toplayip modeli iyilestiriyor
- Big Pickle, sinirli bir sure icin OpenCode'da ucretsiz olan gizli bir modeldir. Ekip bu surede geri bildirim toplayip modeli iyilestiriyor
Sorunuz varsa <a href={email}>bize ulasin</a>.
---
### Otomatik yukleme
Bakiyeniz $5'in altina dustugunde Zen otomatik olarak $20 yukler.
Otomatik yukleme tutarini degistirebilir veya bu ozelligi tamamen kapatabilirsiniz.
---
### Aylik limitler
Tum calisma alani ve ekip uyeleri icin aylik kullanim limiti belirleyebilirsiniz.
Ornegin aylik limiti $20 yaptiysaniz Zen bir ayda $20'den fazla kullandirtmaz. Ancak otomatik yukleme aciksa bakiye $5 altina dustugunde toplam odemeniz $20'nin uzerine cikabilir.
---
## Gizlilik
Tum modellerimiz ABD'de barindiriliyor. Provider'larimiz sifir saklama politikasini izler ve verilerinizi model egitimi icin kullanmaz; asagidaki istisnalar haric:
- Big Pickle: Ucretsiz donemde toplanan veriler modeli iyilestirmek icin kullanilabilir
- GLM 4.7 Free: Ucretsiz donemde toplanan veriler modeli iyilestirmek icin kullanilabilir
- Kimi K2.5 Free: Ucretsiz donemde toplanan veriler modeli iyilestirmek icin kullanilabilir
- MiniMax M2.1 Free: Ucretsiz donemde toplanan veriler modeli iyilestirmek icin kullanilabilir
- OpenAI API'leri: Istekler [OpenAI veri politikalari](https://platform.openai.com/docs/guides/your-data) kapsaminda 30 gun saklanir
- Anthropic API'leri: Istekler [Anthropic veri politikalari](https://docs.anthropic.com/en/docs/claude-code/data-usage) kapsaminda 30 gun saklanir
---
## Ekipler icin
Zen ekipler icin de guclu bir cozumdur. Ekip arkadaslarini davet edebilir, roller atayabilir, kullanilacak modelleri yonetebilir ve daha fazlasini yapabilirsiniz.
:::note
Calisma alanlari beta kapsaminda su anda ekipler icin ucretsizdir.
:::
Calisma alani yonetimi su anda beta kapsaminda ucretsizdir. Fiyatlandirma detaylarini yakinda paylasacagiz.
---
### Roller
Calisma alaniniza ekip arkadaslarini davet edip rol atayabilirsiniz:
- **Admin**: Modelleri, uyeleri, API anahtarlarini ve faturalandirmayi yonetir
- **Member**: Yalnizca kendi API anahtarlarini yonetir
Admin'ler maliyet kontrolu icin uye bazinda aylik harcama limitleri de ayarlayabilir.
---
### Model erisimi
Admin'ler calisma alani icin belirli modelleri acip kapatabilir. Devre disi bir modele yapilan istekler hata dondurur.
Bu, veri toplayan bir modelin kullanimini kapatmak istediginiz durumlarda kullanislidir.
---
### Kendi anahtarinizi kullanin
Zen'deki diger modellere erisirken kendi OpenAI veya Anthropic API anahtarlarinizi da kullanabilirsiniz.
Kendi anahtarinizi kullandiginizda token ucreti Zen yerine dogrudan provider tarafindan faturalandirilir.
Ornegin kurulusunuzun zaten OpenAI veya Anthropic anahtari varsa Zen'in sagladigi anahtar yerine onu kullanabilirsiniz.
---
## Hedefler
OpenCode Zen'i su amaclarla olusturduk:
1. Kodlama ajanlari icin en iyi model/provider kombinasyonlarini **benchmark etmek**
2. Performansi dusurmeden veya daha ucuz provider'a yonlendirmeden **en yuksek kaliteye** erismek
3. Maliyetine satarak fiyat dususlerini kullaniciya yansitmak ve yalnizca islem ucretlerini kapsayan pay birakmak
4. Herhangi bir kodlama ajaniyla kullanima izin vererek **kilitlenmeyi onlemek** ve OpenCode'da diger provider'lari her zaman acik tutmak