dsh-composer-plus 1.14.0 → 1.15.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +6 -6
- package/README.es.md +6 -6
- package/README.fr.md +6 -6
- package/README.hi.md +6 -6
- package/README.id.md +6 -6
- package/README.ja.md +6 -6
- package/README.ko.md +6 -6
- package/README.md +6 -6
- package/README.pt-BR.md +6 -6
- package/README.ru.md +6 -6
- package/README.tr.md +6 -6
- package/README.vi.md +6 -6
- package/README.zh.md +6 -6
- package/client.js +74 -21
- package/index.js +35 -7
- package/package.json +1 -1
package/README.tr.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
Sonra dsh’yi yeniden başlatın. (CLI, masaüstü profiline yükleme yapamaz; bu profili uygulama yönetir.)
|
|
31
31
|
|
|
32
|
-
> dsh’nin pnpm’i, yayımlanmasının üzerinden 24 saat geçmemiş sürümleri atlar. Bir yayından hemen sonra sürümü ekleyin: `dsh-composer-plus@1.
|
|
32
|
+
> dsh’nin pnpm’i, yayımlanmasının üzerinden 24 saat geçmemiş sürümleri atlar. Bir yayından hemen sonra sürümü ekleyin: `dsh-composer-plus@1.15.0`.
|
|
33
33
|
|
|
34
34
|
## Özellikler
|
|
35
35
|
|
|
@@ -57,14 +57,14 @@ Sonra dsh’yi yeniden başlatın. (CLI, masaüstü profiline yükleme yapamaz;
|
|
|
57
57
|
| **Yeni sohbette proje arama** | <a id="feature-projectpicker"></a>Yeni sohbet → mesaj alanının üstündeki proje düğmesi. Projeler A–Z sırasıyla görünür ve üstte bir **Projelerde ara** kutusu vardır. Adın bir kısmını yazın (büyük/küçük harf ve aksan fark etmez). İlk eşleşmeyi seçmek için `Enter` tuşuna basın. Hiçbir proje eşleşmezse **Eşleşen proje yok** yazar. dsh’nin kenar çubuğundaki kayıtlı proje sırası değişmez. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Ekran görüntüsü: Yeni sohbette proje arama"></a> |
|
|
58
58
|
| **Yeni oturum için varsayılan çalışma alanı** | <a id="feature-defaultworkspace"></a>Ayarlar → Composer Plus → **Yeni oturum için varsayılan çalışma alanı** → **Yeni oturumu şurada aç**: bir proje ya da **Genel klasör (default-workspace)** seçin (varsayılan budur: dsh’nin kendi klasörü `Documents/deepseek-harness/default-workspace`, ilk kullanımda oluşturulur). Bundan sonra kenar çubuğunun üstündeki **Yeni oturum** (ve kısayolu), başka bir projenin sohbeti açıkken de yeni sohbeti her zaman orada açar. Bir projenin yanındaki `+` yine o projeyi açar. Yeni sohbette mesaj alanının üstündeki proje düğmesi de projeyi yine değiştirir. | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="Ekran görüntüsü: Yeni oturum için varsayılan çalışma alanı"></a> |
|
|
59
59
|
| **Sohbette bul** | <a id="feature-findinchat"></a>Bir sohbette Mac’te `Cmd+F`, Windows ve Linux’ta `Ctrl+F` tuşlarına basın: sohbetin üzerinde bir arama kutusu açılır. Bir sözcük yazın: ekrandaki mesajlarda ve yanıtlarda her eşleşme vurgulanır, geçerli eşleşme daha koyu bir renkle gösterilir ve kutu n / toplam sayısını gösterir. `Enter` ya da `↓` sonraki eşleşmeye, `Shift+Enter` ya da `↑` önceki eşleşmeye gider (ok düğmeleri de aynı işi yapar). Sohbet, eşleşmeyi ekranın ortasına kaydırır. Büyük/küçük harf, aksanlar ve Türkçedeki noktasız ı fark etmez. `Esc` kutuyu kapatır ve imleci önceki yerine geri koyar. Bir yanıt gelirken arama sohbeti izlemeye devam eder. | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="Ekran görüntüsü: Sohbette bul"></a> |
|
|
60
|
-
| **Sohbet başına dal** | <a id="feature-worktreechats"></a>Yeni sohbet → proje
|
|
60
|
+
| **Sohbet başına dal** | <a id="feature-worktreechats"></a>Yeni sohbet → proje düğmesi ile mod düğmesi arasındaki main düğmesi (dal simgesi) → **Yeni dal**. Sonra ilk mesajı yazıp gönderin. İlk mesaja görsel ve dosya ekleyebilirsiniz. Yapay zekâ dala bu mesaja göre ad verir (`feat/…`, `fix/…`). Composer Plus bu dal için `<project>/.worktrees/` içinde bir git worktree oluşturur, `.worktreeinclude` dosyasının listelediği yok sayılan dosyaları (örneğin `.env` ve `node_modules/`) kopyalar ve orada mesajınızla yeni bir sohbet açar. Açık sohbetin başlığında ⑂ dal · N değişiklik · ↑ ↓ (ya da **gönderilmedi**) görünür; **Değişiklikler** sayfasını açmak için buna tıklayın. Aynı menü açık worktree’leri de listeler: orada bir sohbet başlatmak için birini seçin. Dal klasörlerini kenar çubuğunda kendi projelerinin içinde görmek için dsh’nin **Görünüm seçenekleri** → **Çalışma alanı ağacı** seçeneğini seçin. | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="Ekran görüntüsü: Sohbet başına dal"></a> |
|
|
61
61
|
| **Sonraki mesaj tahmini** | <a id="feature-nextprediction"></a>Varsayılan olarak açıktır: **Ayarlar → Composer Plus** içinden kapatabilirsiniz. Ajan bir turu bitirince (durdurulan veya hata veren bir tur değilse) boş mesaj alanı, bir sonraki mesajınız için gri renkte bir tahmin gösterir. Yanında **Kabul için Tab** ipucu vardır. `Tab` metni mesaj alanına koyar ama göndermez. `Esc` tahmini o tur için gizler. Yazmaya başlamak da tahmini gizler. Yeni bir tur tahmini yenisiyle değiştirir. Anahtarın altındaki **Model** menüsü dsh’nin kendi modellerini listeler (dsh’nin model menüsündeki listenin aynısı). Varsayılan olarak **dsh varsayılanı** seçilidir ve dsh’nin varsayılan modelini izler. Biten her tur için kısa bir model çağrısı yapılır. Tether’de tahmin, boş mesaj alanının üstünde görünür: alana koymak için tahmine dokunun. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Ekran görüntüsü: Sonraki mesaj tahmini"></a> |
|
|
62
62
|
| **Yazarken tamamla** | <a id="feature-typingcompletion"></a>Varsayılan olarak kapalıdır: **Ayarlar → Composer Plus** içinden açabilirsiniz. Siz yazarken imlecin hemen sonrasında gri bir metin, mesajınızın nasıl devam edebileceğini gösterir. `Tab` bu metni mesaja ekler ama göndermez. `Esc` metni gizler. Yalnız sizin yazacağınız sonraki kelimeleri önerir: size cevap vermez, uydurma hata metni ya da isim eklemez. Mesaj bitmiş görünüyorsa ya da model emin değilse hiçbir şey görünmez. Gri metnin sonraki harflerini yazarsanız metin kalır ve yeni bir model çağrısı yapılmaz. Anahtarının altında kendi **Model** menüsü vardır. Bu menünün ilk seçeneği olan **Sonraki mesaj tahminiyle aynı** (varsayılan), **Sonraki mesaj tahmini** modelini kullanır. Her özellikte farklı bir model kullanmak için başka bir model seçin (örneğin tamamlamalar için daha hızlı bir model). Yazarken her duraklamada bir model çağrısı yapar. Bu yüzden tahminden çok daha fazla token harcar: hızlı ve düşük maliyetli bir model seçin. Eğik çizgi komutunda, dosya etiketi olan bir mesajda veya imleç sonda değilken çalışmaz. Tether’de, siz yazarken metnin kalanı alanın üstünde görünür: eklemek için ona dokunun. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Ekran görüntüsü: Yazarken tamamla"></a> |
|
|
63
63
|
| **İstemi iyileştir** | <a id="feature-promptimprove"></a>Kaba bir istek yazın, sonra model menüsünün yanındaki sihirli değneğe (**İstemi iyileştir**) tıklayın. Tek bir model çağrısı isteği daha net bir isteme dönüştürür: önce hedef, birden çok parça varsa kısa numaralı adımlar ve çalıştırılacak kontrol. Bu sohbeti (geri alınan mesajlar hariç), projenin README, AGENTS.md ve manifest dosyalarını, değişen dosyaları ve adı sözcüklerinizle eşleşen dosyaları okur; dilinizi korur. Dosya adı uydurmaz. Yeni metin taslağınızın yerine geçer ama gönderilmez: okuyun, düzenleyin, sonra `Enter` tuşuna basın. `Cmd/Ctrl+Z` metninizi tek adımda geri getirir; düğme (**İyileştirmeyi geri al**) de aynısını yapar. O çalışırken yazarsanız yeni metniniz kalır. `Esc` ya da ikinci tıklama iptal eder. Ayarlar'da kendi **Model** menüsü vardır (varsayılan: **Sohbetin modeliyle aynı**). Eğik çizgi komutları ve dosya chip'i olan mesajlar için çalışmaz. Tether'de değnek, yazı alanının yanındadır. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Ekran görüntüsü: İstemi iyileştir"></a> |
|
|
64
64
|
| **Hedef kontrolü** | <a id="feature-goalcheck"></a>`/goal` ile bir hedef başlatın. Ajan otomatik bir turda hedefi tamamlandı olarak işaretlediğinde hedef yalnızca iki kontrolden sonra kapanır. Önce projenin test komutu sohbetin klasöründe, sohbetin korumalı alan moduyla çalışır. Komut sizin kendi komutunuzdur ya da `package.json`, `Makefile`, `Cargo.toml`, `go.mod` veya pytest içinde bulunan komuttur. Ajanın kendi en yeni adımı bu testin başarılı bir çalıştırmasıysa test yeniden çalışmaz. Sonra araç kullanmayan bağımsız bir model çağrısı hedefi, bu sohbeti, `git status` çıktısını ve test sonucunu okur. Bir kontrol başarısız olursa hedef etkin kalır, ajan nedenini okur ve sonraki tur devam eder. Hedef çubuğunun altındaki bir satır (**Hedef kontrolü**) testi ve son sonucu gösterir. **Düzenle** kendi test komutunuzu ve bir süre ya da token sınırını belirler; sınır aşılınca hedef engellenir. **Şimdi çalıştır** kontrolü hedefi kapatmadan çalıştırır. Ayarlar'da kendi **Model** menüsü vardır (varsayılan: **Sohbetin modeliyle aynı**). Hedefi kendiniz tamamladığınızda hiçbir şey kontrol edilmez. | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="Ekran görüntüsü: Hedef kontrolü"></a> |
|
|
65
65
|
| **Sohbet boyunca izin** | <a id="feature-allowforchat"></a>Otomatik inceleme size sorduğunda onay kartında **Bu sohbet boyunca izin ver** düğmesi görünür. Bundan sonra aynı sohbette aynı araca, parametreleri ne olursa olsun, süre sınırı dolana kadar izin verilir (varsayılan olarak 1 saat; süreyi **Ayarlar → Composer Plus → Sohbet boyunca izin** içinden seçin). Sonra ajan yeniden sorar. Başlıktaki küçük bir etiket izinleri bitiş saatleriyle listeler ve kaldırır. İzinler yeniden başlatmadan sonra da korunur. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Ekran görüntüsü: Sohbet boyunca izin"></a> |
|
|
66
66
|
| **Proje durumu** | <a id="feature-projectstatus"></a>Kenar çubuğundaki proje satırı, sohbetlerindeki dönen simge / bekliyor / tamamlandı işaretinin aynısını gösterir. Böylece daraltılmış bir proje de içindeki bir sohbetin çalıştığını ya da sizi beklediğini gösterir. Önce sizi bekleyen bir sohbet gösterilir, sonra henüz açmadığınız tamamlanmış bir sohbet (yeşil nokta, başka bir sohbet hâlâ çalışırken de), sonra dönen simge. Ayrıntılar için üzerine gelin. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Ekran görüntüsü: Proje durumu"></a> |
|
|
67
|
-
| **Sohbet satırlarında Git dalı** | <a id="feature-sessionbranch"></a>Kenar çubuğundaki her sohbet satırı, küçük gri bir etiketle sohbetin proje klasörünün sohbetin son turunda bulunduğu git dalını gösterir (örneğin `main` ya da `feature/login`; ayrık HEAD durumunda kısa commit kimliği parantez içinde görünür). Böylece bir projenin farklı dallardaki iki sohbeti artık aynı görünmez ve bir sohbeti yanlış dalda sürdürmek üzereyken bunu hemen görürsünüz. Dalın tam adını görmek için etiketin üzerine gelin. Host tarafı dalı bir tur başlarken ve biterken okur (`git branch --show-current`, salt okunur). Bu özelliği yükledikten sonra hiç turu olmayan bir sohbette ya da Git deposu olmayan bir klasörde etiket görünmez. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Ekran görüntüsü: Sohbet satırlarında Git dalı"></a> |
|
|
67
|
+
| **Sohbet satırlarında Git dalı** | <a id="feature-sessionbranch"></a>Kenar çubuğundaki her sohbet satırı, küçük gri bir etiketle sohbetin proje klasörünün sohbetin son turunda bulunduğu git dalını gösterir (örneğin `main` ya da `feature/login`; ayrık HEAD durumunda kısa commit kimliği parantez içinde görünür). Böylece bir projenin farklı dallardaki iki sohbeti artık aynı görünmez ve bir sohbeti yanlış dalda sürdürmek üzereyken bunu hemen görürsünüz. Dalın tam adını görmek için etiketin üzerine gelin. Host tarafı dalı bir tur başlarken ve biterken okur (`git branch --show-current`, salt okunur). Bu özelliği yükledikten sonra hiç turu olmayan bir sohbette ya da Git deposu olmayan bir klasörde etiket görünmez. Sohbetin üstündeki proje satırının adı dalın adıyla aynıysa (örneğin bir “Sohbet başına dal” klasöründe), sohbet satırında dal etiketi görünmez; “Tek listede” görünümünde etiket yine görünür. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Ekran görüntüsü: Sohbet satırlarında Git dalı"></a> |
|
|
68
68
|
| **Tümünü okundu işaretle** | <a id="feature-markprojectread"></a>Kenar çubuğunda bir projenin **…** düğmesine tıklayın → **Tümünü okundu işaretle**. O projedeki her sohbetin yeşil okunmamış noktası hemen kalkar. Diğer projelerin noktaları kalır. Projede okunmamış sohbet yoksa öğe soluk görünür (**Okunmamış sohbet yok**). | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="Ekran görüntüsü: Tümünü okundu işaretle"></a> |
|
|
69
69
|
| **Etkin projeler üstte** | <a id="feature-activeprojectsfirst"></a>Bir sohbet çalışmaya başladığında ya da sizi beklediğinde, projesi dsh’nin kendi satır animasyonuyla kenar çubuğunun en üstüne taşınır (projeyi oraya sürüklediğinizdeki hareketin aynısı). Tamamlanan projeler yerinde kalır. Onları her zamanki gibi istediğiniz yere sürükleyebilirsiniz. Taşımalar dsh’nin proje sırasına kaydedilir. Bu yüzden özelliği kapatmak mevcut sırayı korur. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Ekran görüntüsü: Etkin projeler üstte"></a> |
|
|
70
70
|
| **Yakın zamanda aktif proje filtresi** | <a id="feature-recentprojects"></a>Kenar çubuğu → görünüm seçenekleri (kaydırıcı simgesi) → **Son 2 saatte aktif olanlar**. Bu seçenek seçiliyken kenar çubuğu yalnızca son 2 saatte etkin bir sohbeti olan projeleri gösterir. Etkin sohbet şunlardan biridir: bu sürede güncellenen bir sohbet, çalışan ya da bekleyen bir sohbet, açık olan sohbet veya henüz açmadığınız tamamlanmış bir sohbet (dsh’nin yeşil “tamamlandı” noktası). Sonuncusu 2 saat geçtikten sonra da geçerlidir. Böyle bir sohbeti olmayan projeler gizlenir; yeni ve boş projeler de gizlenir. Tüm projeleri göstermek için seçeneği yeniden seçin. Seçim bu cihazda saklanır. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Ekran görüntüsü: Yakın zamanda aktif proje filtresi"></a> |
|
|
@@ -169,7 +169,7 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
169
169
|
- **Bir sohbet satırında dal etiketi yok:** bu sürümü yüklediğinizden beri sohbette hiç tur olmadı, sohbetin klasörü bir git deposu değil ya da **Sohbet satırlarında Git dalı** kapalı. Bir güncellemeden sonra dsh’yi yeniden başlatın (dalı Host tarafı kaydeder).
|
|
170
170
|
- **Hedef kontrolü, testin 127 koduyla ya da "not found" ile çıktığını söylüyor:** Finder’dan veya Dock’tan başlatılan dsh’nin PATH’i terminalinizdekinden daha kısa olabilir. Bu yüzden dsh `npm`, `pnpm` veya `cargo` aracını bulamaz. dsh’yi bir terminalden başlatın ya da **Hedef kontrolü** → **Düzenle** içinde tam yolu olan kendi test komutunuzu belirleyin. **Şimdi çalıştır** sonucu hemen gösterir.
|
|
171
171
|
- **Hedef kapanmıyor ve ajan çalışmaya devam ediyor:** **Hedef kontrolü** başarısız bir test ya da eksik bir iş buldu. Hedefin altındaki satır nedenini gösterir (ayrıntılar için imleci sonucun üzerine getirin). Nedeni ya da test komutunu düzeltin veya hedefi `/goal` ya da hedef çubuğuyla kendiniz tamamlayın (bu tamamlama kontrol edilmez).
|
|
172
|
-
- **Bir yayından hemen sonra yükleme başarısız oluyor:** sürümü ekleyin (`dsh-composer-plus@1.
|
|
172
|
+
- **Bir yayından hemen sonra yükleme başarısız oluyor:** sürümü ekleyin (`dsh-composer-plus@1.15.0`) ve yukarıdaki kurulum notuna bakın.
|
|
173
173
|
|
|
174
174
|
## Sınırlar
|
|
175
175
|
|
|
@@ -195,7 +195,7 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
195
195
|
- **Bu sohbet** yalnızca dsh’nin dosya araçlarının (`write`, `edit`, `str_replace_editor`) yazdığı dosyaları sayar. Bir komutun (`bash`) değiştirdiği dosyalar bu görünümde yoktur. Bu dosyalar **Commit edilmemiş** altında görünür. Sohbetin Tur geri alma anlık görüntüsü yoksa (Tur geri alma kapalı, dsh-rewind-plugin yüklü ya da sohbet eklentiden daha eski), görünüm son commit ile karşılaştırır ve bunu belirtir. Tur geri alma bir sohbetin en yeni 50 anlık görüntüsünü saklar. Daha uzun bir sohbette görünüm, saklanan en eski anlık görüntüyle karşılaştırır, hangi mesajdan başladığını söyler ve daha önceki değişiklikleri saymaz. **Boşluk değişikliklerini gizle**, `git diff -w` ile aynıdır: yalnızca satır içindeki boşlukları değişen bir satır da gizlenir.
|
|
196
196
|
- **GitHub’da issue aç** için dsh’nin PATH’inde GitHub CLI (`gh`) ve sohbetin klasöründe bir GitHub uzak deposu (remote) gerekir. En çok 60 sn çalışır. `gh` daha uzun sürerse issue GitHub’da açılmış olabilir, ama bağlantısı listede görünmez. Yeniden tıklamadan önce GitHub’a bakın: liste bağlantıyı yalnızca tamamlanan bir çalıştırmadan okur, bu yüzden yeni bir tıklama ikinci bir issue açabilir. Birden çok GitHub uzak deposu olan bir klasör, `gh` aracının kendi varsayılanını kullanır (`gh repo set-default`).
|
|
197
197
|
- **Bu dosyayı değiştiren sohbetler**, **Bu sohbet** gibi yalnızca dsh’nin dosya araçlarını (`write`, `edit`, `str_replace_editor`) tanır: bir komutun (`bash`) yaptığı değişiklik listelenmez. Deponun en yeni 300 sohbetini okur (oluşturulma zamanına göre) ve daha fazlası varsa bunu belirtir. En çok 100 satır gösterir. Yeniden adlandırılan bir dosya, aracın yazdığı adla listelenir. Klasörü deponun dışında olan bir sohbet (aynı dosyalara başka bir yoldan ulaşsa bile) sayılmaz. dsh açıldıktan sonraki ilk açılış, deponun tüm sohbet günlüklerini okur (275 sohbet için yaklaşık 4 sn). Sonraki açılışlar yalnızca o zamandan beri değişen sohbetleri okur.
|
|
198
|
-
- **Sohbet satırlarında Git dalı**, şu anki dalı değil, sohbetin son turu başladığında ya da bittiğinde sohbetin klasörünün bulunduğu dalı gösterir: bir tur dışında yapılan dal değişikliği bir sonraki turdan sonra görünür. Bu sürümden önceki sohbetlerde bir sonraki turlarına kadar etiket görünmez. Etiket, dsh’nin sohbet satırı yapısına yerleşir (dsh’de orada bir yuva yoktur). Bir dsh güncellemesi bu yapıyı değiştirirse etiket görünmez.
|
|
198
|
+
- **Sohbet satırlarında Git dalı**, şu anki dalı değil, sohbetin son turu başladığında ya da bittiğinde sohbetin klasörünün bulunduğu dalı gösterir: bir tur dışında yapılan dal değişikliği bir sonraki turdan sonra görünür. Bu sürümden önceki sohbetlerde bir sonraki turlarına kadar etiket görünmez. Etiket, dsh’nin sohbet satırı yapısına yerleşir (dsh’de orada bir yuva yoktur). Bir dsh güncellemesi bu yapıyı değiştirirse etiket görünmez. Sohbetin üstündeki proje satırının adı dalın adıyla aynıysa (örneğin bir “Sohbet başına dal” klasöründe), sohbet satırında dal etiketi görünmez; “Tek listede” görünümünde etiket yine görünür.
|
|
199
199
|
- **Sohbette bul** yalnızca sayfanın gösterdiği içerikte arar: yüklenmiş mesajlarda ve yanıtlarda arar (eskiler için yukarı kaydırın ya da **Öncekileri yükle** düğmesine tıklayın). Kapalı araç adımlarında ve bir aracın daraltılmış çıktısındaki metinde aramaz. En çok 2.000 eşleşme sayar (sonra "2000+" gösterir). Tarayıcının vurgulama API’sini kullanır (Chromium 105 ve sonrası; masaüstü uygulamasında vardır): daha eski bir tarayıcıda sayı ve eşleşmeler arası geçiş çalışır, ama renk görünmez. Mac’te `Cmd+F`, Windows ve Linux’ta `Ctrl+F` kutuyu yalnızca ekranda bir sohbet varken açar. Mac’te `Ctrl+F`, metin alanlarındaki macOS görevini korur (imleci bir karakter ileri alır). Başka yerlerde tarayıcının kendi arama özelliği eskisi gibi çalışır.
|
|
200
200
|
- Yeniden başlatmadan önce gönderilen bir bildirime tıklamak yalnızca dsh’yi öne getirir.
|
|
201
201
|
- Etkin projeler dsh’nin kayıtlı proje sırasıyla taşınır. Bu yüzden yeni sıra yeniden başlatmadan sonra korunur. Hiçbir projeye ait olmayan sohbetler ("Gruplanmamış") taşınamaz; dsh bunları her zaman en sonda listeler.
|
|
@@ -271,7 +271,7 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
271
271
|
|
|
272
272
|
**Yeni oturum her zaman aynı projede nasıl açılır?** Ayarlar → Composer Plus → **Yeni oturum için varsayılan çalışma alanı** → **Yeni oturumu şurada aç** → projeyi seçin. Başka bir projenin yanındaki `+` yine o projeyi açar.
|
|
273
273
|
|
|
274
|
-
**Bir projenin birkaç özelliği üzerinde, her biri kendi dalında olmak üzere aynı anda nasıl çalışırım?** **Sohbet başına dal** ile: yeni sohbet →
|
|
274
|
+
**Bir projenin birkaç özelliği üzerinde, her biri kendi dalında olmak üzere aynı anda nasıl çalışırım?** **Sohbet başına dal** ile: yeni sohbet → dal simgeli main düğmesi → **Yeni dal**, sonra ilk mesajı gönderin. Her sohbet kendi dalını ve worktree klasörünü alır; `.worktreeinclude` listeliyorsa `.env` ve `node_modules` da kopyalanır. Sohbetin başlığı hangi dalda olduğunuzu gösterir.
|
|
275
275
|
|
|
276
276
|
**iPhone’umdan fotoğraf gönderebilir miyim?** Evet. Tether’deki bir sohbette mesaj alanının yanındaki **+** düğmesine dokunun → Camera, Photos (en çok 4) ya da Paste image. Fotoğraflar, mesajınızın ekleri olarak Mac’teki sohbete gider. Bu yüzden model onları görür.
|
|
277
277
|
|
package/README.vi.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
Sau đó khởi động lại dsh. (CLI không cài được vào profile desktop; ứng dụng tự quản lý profile này.)
|
|
31
31
|
|
|
32
|
-
> pnpm của dsh bỏ qua các phiên bản ra mắt chưa đủ 24 giờ. Ngay sau một bản phát hành, hãy thêm số phiên bản: `dsh-composer-plus@1.
|
|
32
|
+
> pnpm của dsh bỏ qua các phiên bản ra mắt chưa đủ 24 giờ. Ngay sau một bản phát hành, hãy thêm số phiên bản: `dsh-composer-plus@1.15.0`.
|
|
33
33
|
|
|
34
34
|
## Tính năng
|
|
35
35
|
|
|
@@ -57,14 +57,14 @@ Sau đó khởi động lại dsh. (CLI không cài được vào profile deskto
|
|
|
57
57
|
| **Tìm dự án trong cuộc trò chuyện mới** | <a id="feature-projectpicker"></a>Cuộc trò chuyện mới → nút dự án phía trên khung soạn thảo. Các dự án hiện theo thứ tự A–Z, với ô **Tìm dự án** ở trên cùng. Nhập một phần tên (không phân biệt chữ hoa/thường và dấu) rồi nhấn `Enter` để chọn kết quả đầu tiên. Khi không có gì khớp, dòng **Không có dự án phù hợp** hiện ra. Thứ tự dự án đã lưu của dsh trên thanh bên không thay đổi. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Ảnh chụp màn hình: Tìm dự án trong cuộc trò chuyện mới"></a> |
|
|
58
58
|
| **Không gian làm việc mặc định cho Phiên mới** | <a id="feature-defaultworkspace"></a>Cài đặt → Composer Plus → **Không gian làm việc mặc định cho Phiên mới** → **Mở Phiên mới trong**: chọn một dự án, hoặc **Thư mục chung (default-workspace)** (mặc định: thư mục riêng của dsh `Documents/deepseek-harness/default-workspace`, được tạo ở lần dùng đầu tiên). Sau đó, **Phiên mới** ở đầu thanh bên (và phím tắt của nó) luôn mở cuộc trò chuyện mới ở đó, kể cả khi cuộc trò chuyện của một dự án khác đang mở. Nút `+` cạnh một dự án vẫn mở dự án đó, và nút dự án phía trên khung soạn thảo của cuộc trò chuyện mới vẫn đổi được dự án. | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="Ảnh chụp màn hình: Không gian làm việc mặc định cho Phiên mới"></a> |
|
|
59
59
|
| **Tìm trong cuộc trò chuyện** | <a id="feature-findinchat"></a>Nhấn `Cmd+F` trên Mac (`Ctrl+F` trên Windows và Linux) trong một cuộc trò chuyện: một ô tìm kiếm mở ra phía trên. Nhập một từ: mọi kết quả khớp trong các tin nhắn và câu trả lời trên màn hình đều được tô sáng, kết quả hiện tại có màu đậm hơn, và ô hiển thị n / tổng. `Enter` hoặc `↓` chuyển đến kết quả tiếp theo, `Shift+Enter` hoặc `↑` về kết quả trước (các nút mũi tên cũng vậy); cuộc trò chuyện cuộn kết quả vào giữa. Chữ hoa/thường, dấu và chữ ı không chấm của tiếng Thổ Nhĩ Kỳ không ảnh hưởng. `Esc` đóng ô và đưa con trỏ về chỗ cũ. Việc tìm kiếm vẫn theo cuộc trò chuyện trong khi câu trả lời đang được truyền về. | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="Ảnh chụp màn hình: Tìm trong cuộc trò chuyện"></a> |
|
|
60
|
-
| **Branch riêng cho từng cuộc trò chuyện** | <a id="feature-worktreechats"></a>Cuộc trò chuyện mới → nút
|
|
60
|
+
| **Branch riêng cho từng cuộc trò chuyện** | <a id="feature-worktreechats"></a>Cuộc trò chuyện mới → nút main (biểu tượng branch) giữa nút dự án và nút chế độ → **Branch mới**, rồi nhập tin nhắn đầu tiên và gửi. Tin nhắn đầu tiên có thể kèm hình ảnh và tệp. AI đặt tên branch (`feat/…`, `fix/…`) theo tin nhắn đó, Composer Plus tạo một git worktree cho branch trong `<project>/.worktrees/`, sao chép các tệp bị bỏ qua mà `.worktreeinclude` liệt kê (ví dụ `.env` và `node_modules/`) và mở ở đó một cuộc trò chuyện mới với tin nhắn của bạn. Phần đầu của cuộc trò chuyện đang mở hiển thị ⑂ branch · N thay đổi · ↑ ↓ (hoặc **chưa push**); nhấp vào để mở **Thay đổi**. Cùng menu đó liệt kê các worktree đang mở: chọn một worktree để bắt đầu cuộc trò chuyện trong đó. Để xem thư mục branch bên trong dự án của chúng ở thanh bên, hãy chọn **Tùy chọn hiển thị** → **Cây không gian làm việc** của dsh. | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="Ảnh chụp màn hình: Branch riêng cho từng cuộc trò chuyện"></a> |
|
|
61
61
|
| **Dự đoán tin nhắn tiếp theo** | <a id="feature-nextprediction"></a>Mặc định bật: bạn có thể tắt trong **Cài đặt → Composer Plus**. Khi tác tử hoàn tất một lượt (không phải lượt đã dừng hoặc thất bại), khung soạn thảo trống hiện dự đoán tin nhắn tiếp theo của bạn bằng chữ màu xám, kèm gợi ý **Tab để chấp nhận**. `Tab` đưa văn bản vào khung soạn thảo nhưng không gửi. `Esc` ẩn dự đoán trong lượt đó. Khi bạn bắt đầu gõ, dự đoán cũng ẩn đi, và một lượt mới sẽ thay thế nó. Menu **Mô hình** bên dưới công tắc liệt kê các mô hình của chính dsh (cùng danh sách với menu mô hình của dsh). **Mặc định của dsh** được chọn theo mặc định và đi theo mô hình mặc định của dsh. Mỗi lượt đã xong tốn một lần gọi mô hình ngắn. Trong Tether, dự đoán hiện phía trên khung soạn thảo trống: chạm vào để đưa nó vào ô nhập. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Ảnh chụp màn hình: Dự đoán tin nhắn tiếp theo"></a> |
|
|
62
62
|
| **Hoàn thành khi gõ** | <a id="feature-typingcompletion"></a>Mặc định tắt: bạn có thể bật trong **Cài đặt → Composer Plus**. Khi bạn gõ, chữ màu xám ngay sau con trỏ cho thấy tin nhắn của bạn có thể tiếp tục thế nào. `Tab` thêm phần này vào tin nhắn nhưng không gửi. `Esc` ẩn phần này. Tính năng chỉ gợi ý những từ tiếp theo của chính bạn: không bao giờ là câu trả lời cho bạn, và không bịa ra nội dung lỗi hay tên. Khi tin nhắn có vẻ đã đủ hoặc mô hình không chắc chắn, sẽ không có gì hiện ra. Nếu bạn gõ đúng các chữ tiếp theo của phần chữ xám, phần này vẫn giữ nguyên, không có lần gọi mô hình mới. Tính năng có menu **Mô hình** riêng bên dưới công tắc của nó. Mục đầu tiên, **Giống dự đoán tin nhắn tiếp theo**, dùng mô hình của **Dự đoán tin nhắn tiếp theo** (mặc định); hãy chọn mô hình khác để mỗi tính năng dùng một mô hình riêng, ví dụ một mô hình nhanh hơn cho phần hoàn thành. Tính năng gọi mô hình một lần mỗi khi bạn dừng gõ, nên tốn nhiều token hơn nhiều so với dự đoán: hãy chọn một mô hình nhanh, chi phí thấp. Tính năng không chạy với lệnh gạch chéo, tin nhắn có nhãn tệp, hoặc khi con trỏ không ở cuối. Trong Tether, phần còn lại hiện phía trên ô nhập khi bạn gõ: chạm vào để thêm. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Ảnh chụp màn hình: Hoàn thành khi gõ"></a> |
|
|
63
63
|
| **Cải thiện prompt** | <a id="feature-promptimprove"></a>Gõ một yêu cầu sơ bộ, rồi nhấp vào đũa thần (**Cải thiện prompt**) cạnh menu mô hình. Một lần gọi mô hình viết lại yêu cầu thành một prompt rõ ràng hơn: mục tiêu trước, các bước đánh số ngắn khi có nhiều phần, và bước kiểm tra cần chạy. Tính năng đọc cuộc trò chuyện này (bỏ qua các tin nhắn đã bị hoàn tác), README, AGENTS.md và tệp manifest của dự án, các tệp đã thay đổi và các tệp có tên khớp với từ ngữ của bạn, và giữ nguyên ngôn ngữ của bạn. Tính năng không bao giờ bịa ra tên tệp. Văn bản mới thay thế bản nháp của bạn nhưng không được gửi: hãy đọc, sửa, rồi nhấn `Enter`. `Cmd/Ctrl+Z` đưa văn bản của bạn trở lại trong một bước, nút (**Hoàn tác cải thiện**) cũng vậy. Nếu bạn gõ trong lúc tính năng đang chạy, văn bản mới của bạn được giữ lại. `Esc` hoặc nhấp lần nữa để hủy. Tính năng có menu **Mô hình** riêng trong Cài đặt (mặc định: **Giống mô hình của cuộc trò chuyện**). Không dùng cho lệnh gạch chéo hoặc tin nhắn có nhãn tệp. Trong Tether, đũa thần nằm cạnh ô nhập. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Ảnh chụp màn hình: Cải thiện prompt"></a> |
|
|
64
64
|
| **Kiểm tra mục tiêu** | <a id="feature-goalcheck"></a>Bắt đầu một mục tiêu bằng `/goal`. Khi tác tử đánh dấu mục tiêu là hoàn tất trong một vòng tự động, mục tiêu chỉ đóng sau hai bước kiểm tra. Đầu tiên, lệnh kiểm thử của dự án chạy trong thư mục của cuộc trò chuyện, theo chế độ sandbox của cuộc trò chuyện. Lệnh này là lệnh của riêng bạn hoặc lệnh tìm thấy trong `package.json`, `Makefile`, `Cargo.toml`, `go.mod` hoặc pytest. Khi bước mới nhất của chính tác tử là một lần chạy đạt của bài kiểm thử đó, lệnh không chạy lại. Sau đó, một lần gọi mô hình độc lập, không có công cụ, đọc mục tiêu, cuộc trò chuyện này, `git status` và kết quả kiểm thử. Nếu một bước kiểm tra không đạt, mục tiêu vẫn đang hoạt động và tác tử đọc lý do, rồi vòng tiếp theo tiếp tục. Một dòng bên dưới thanh mục tiêu (**Kiểm tra mục tiêu**) hiện bài kiểm thử và kết quả gần nhất. **Sửa** đặt lệnh kiểm thử của riêng bạn và giới hạn thời gian hoặc token; khi vượt giới hạn, mục tiêu bị chặn. **Chạy ngay** chạy bước kiểm tra mà không đóng mục tiêu. Tính năng có menu **Mô hình** riêng trong Cài đặt (mặc định: **Giống mô hình của cuộc trò chuyện**). Khi bạn tự hoàn tất mục tiêu, không có gì được kiểm tra. | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="Ảnh chụp màn hình: Kiểm tra mục tiêu"></a> |
|
|
65
65
|
| **Cho phép trong cuộc trò chuyện này** | <a id="feature-allowforchat"></a>Khi Đánh giá tự động hỏi bạn, thẻ phê duyệt có thêm nút **Cho phép trong cuộc trò chuyện này**: từ đó trở đi, cùng công cụ đó trong cùng cuộc trò chuyện được cho phép, với mọi đối số, cho đến khi hết giới hạn thời gian (mặc định 1 giờ; chọn trong **Cài đặt → Composer Plus → Cho phép trong cuộc trò chuyện này**). Sau đó, agent sẽ hỏi lại. Một nhãn nhỏ ở phần đầu liệt kê các quyền đã cấp kèm thời điểm kết thúc và cho phép thu hồi. Quyền vẫn còn sau khi khởi động lại. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Ảnh chụp màn hình: Cho phép trong cuộc trò chuyện này"></a> |
|
|
66
66
|
| **Trạng thái dự án** | <a id="feature-projectstatus"></a>Dòng dự án trên thanh bên hiện cùng dấu đang chạy / đang chờ / xong như các cuộc trò chuyện của nó. Vì vậy, dự án đã thu gọn vẫn cho bạn biết có cuộc trò chuyện bên trong đang làm việc hoặc cần bạn. Cuộc trò chuyện đang chờ bạn được hiện trước, sau đó là cuộc trò chuyện đã xong mà bạn chưa mở (chấm xanh, kể cả khi một cuộc trò chuyện khác vẫn đang chạy), rồi đến dấu đang chạy. Di chuột lên để xem chi tiết. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Ảnh chụp màn hình: Trạng thái dự án"></a> |
|
|
67
|
-
| **Branch Git trên dòng cuộc trò chuyện** | <a id="feature-sessionbranch"></a>Mỗi dòng cuộc trò chuyện ở thanh bên hiển thị một nhãn nhỏ màu xám với branch git mà thư mục dự án của cuộc trò chuyện đang ở trong lượt cuối của cuộc trò chuyện đó (ví dụ `main` hoặc `feature/login`; HEAD tách rời hiển thị ID commit ngắn trong ngoặc đơn). Hai cuộc trò chuyện của cùng một dự án trên các branch khác nhau không còn trông giống nhau, và bạn thấy ngay khi sắp tiếp tục một cuộc trò chuyện trên sai branch. Di chuột lên nhãn để xem tên đầy đủ. Phần Host đọc branch (`git branch --show-current`, chỉ đọc) khi một lượt bắt đầu và khi kết thúc; cuộc trò chuyện chưa có lượt nào kể từ khi bạn cài tính năng này, hoặc thư mục không phải repository git, sẽ không có nhãn. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Ảnh chụp màn hình: Branch Git trên dòng cuộc trò chuyện"></a> |
|
|
67
|
+
| **Branch Git trên dòng cuộc trò chuyện** | <a id="feature-sessionbranch"></a>Mỗi dòng cuộc trò chuyện ở thanh bên hiển thị một nhãn nhỏ màu xám với branch git mà thư mục dự án của cuộc trò chuyện đang ở trong lượt cuối của cuộc trò chuyện đó (ví dụ `main` hoặc `feature/login`; HEAD tách rời hiển thị ID commit ngắn trong ngoặc đơn). Hai cuộc trò chuyện của cùng một dự án trên các branch khác nhau không còn trông giống nhau, và bạn thấy ngay khi sắp tiếp tục một cuộc trò chuyện trên sai branch. Di chuột lên nhãn để xem tên đầy đủ. Phần Host đọc branch (`git branch --show-current`, chỉ đọc) khi một lượt bắt đầu và khi kết thúc; cuộc trò chuyện chưa có lượt nào kể từ khi bạn cài tính năng này, hoặc thư mục không phải repository git, sẽ không có nhãn. Nếu dòng dự án phía trên cuộc trò chuyện có cùng tên với branch (ví dụ thư mục của “Branch riêng cho từng cuộc trò chuyện”), dòng cuộc trò chuyện không hiển thị nhãn, nhưng “Trong một danh sách” vẫn hiển thị nhãn. | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="Ảnh chụp màn hình: Branch Git trên dòng cuộc trò chuyện"></a> |
|
|
68
68
|
| **Đánh dấu tất cả là đã đọc** | <a id="feature-markprojectread"></a>Trên thanh bên, nhấp nút **…** của một dự án → **Đánh dấu tất cả là đã đọc**. Mọi cuộc trò chuyện trong dự án đó mất chấm xanh chưa đọc cùng lúc; các dự án khác vẫn giữ chấm của mình. Mục này hiện màu xám (**Không có cuộc trò chuyện chưa đọc**) khi dự án không có cuộc trò chuyện chưa đọc nào. | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="Ảnh chụp màn hình: Đánh dấu tất cả là đã đọc"></a> |
|
|
69
69
|
| **Ưu tiên dự án đang hoạt động** | <a id="feature-activeprojectsfirst"></a>Khi một cuộc trò chuyện bắt đầu chạy hoặc cần bạn, dự án của nó di chuyển lên đầu thanh bên với hiệu ứng dòng của chính dsh (giống như khi bạn kéo dự án lên đó). Dự án đã xong giữ nguyên vị trí; bạn vẫn kéo chúng đến bất kỳ đâu như thường. Các lần di chuyển được lưu vào thứ tự dự án của dsh, nên khi tắt tính năng này, thứ tự hiện tại được giữ nguyên. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Ảnh chụp màn hình: Ưu tiên dự án đang hoạt động"></a> |
|
|
70
70
|
| **Bộ lọc dự án gần đây** | <a id="feature-recentprojects"></a>Thanh bên → tùy chọn hiển thị (biểu tượng thanh trượt) → **Hoạt động trong 2 giờ qua**. Khi tùy chọn này được chọn, thanh bên chỉ hiện các dự án có cuộc trò chuyện hoạt động trong 2 giờ qua: cuộc trò chuyện được cập nhật trong khoảng thời gian này, cuộc trò chuyện đang chạy hoặc đang chờ, cuộc trò chuyện đang mở, hoặc cuộc trò chuyện đã xong mà bạn chưa mở (chấm xanh “xong” của dsh), kể cả sau 2 giờ. Các dự án không có cuộc trò chuyện như vậy bị ẩn, kể cả dự án mới và trống. Chọn lại tùy chọn để hiện tất cả dự án. Lựa chọn được lưu trên thiết bị này. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Ảnh chụp màn hình: Bộ lọc dự án gần đây"></a> |
|
|
@@ -169,7 +169,7 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
169
169
|
- **Dòng cuộc trò chuyện không có nhãn branch:** cuộc trò chuyện chưa có lượt nào kể từ khi bạn cài phiên bản này, thư mục của nó không phải repository git, hoặc **Branch Git trên dòng cuộc trò chuyện** đang tắt. Sau khi cập nhật, hãy khởi động lại dsh (phần Host ghi lại branch).
|
|
170
170
|
- **Kiểm tra mục tiêu báo bài kiểm thử thoát với mã 127 hoặc "not found":** dsh khởi động từ Finder hoặc Dock có thể có PATH ngắn hơn terminal của bạn, nên không tìm thấy `npm`, `pnpm` hoặc `cargo`. Hãy khởi động dsh từ terminal, hoặc đặt lệnh kiểm thử của riêng bạn với đường dẫn đầy đủ trong **Kiểm tra mục tiêu** → **Sửa**. **Chạy ngay** hiện kết quả ngay lập tức.
|
|
171
171
|
- **Mục tiêu không đóng và tác tử tiếp tục làm việc:** **Kiểm tra mục tiêu** đã tìm thấy một bài kiểm thử thất bại hoặc phần việc còn thiếu; dòng bên dưới mục tiêu cho biết lý do (di chuột lên kết quả để xem chi tiết). Hãy sửa nguyên nhân hoặc lệnh kiểm thử, hoặc tự hoàn tất mục tiêu bằng `/goal` hoặc thanh mục tiêu (việc này không được kiểm tra).
|
|
172
|
-
- **Cài đặt thất bại ngay sau một bản phát hành:** thêm số phiên bản (`dsh-composer-plus@1.
|
|
172
|
+
- **Cài đặt thất bại ngay sau một bản phát hành:** thêm số phiên bản (`dsh-composer-plus@1.15.0`), xem ghi chú cài đặt ở trên.
|
|
173
173
|
|
|
174
174
|
## Giới hạn
|
|
175
175
|
|
|
@@ -195,7 +195,7 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
195
195
|
- **Cuộc trò chuyện này** chỉ tính các tệp mà công cụ tệp của dsh (`write`, `edit`, `str_replace_editor`) đã ghi. Tệp do một lệnh (`bash`) thay đổi không có trong chế độ xem này; chúng hiện trong **Chưa commit**. Khi không có snapshot Hoàn tác lượt của cuộc trò chuyện (Hoàn tác lượt đang tắt, đã cài dsh-rewind-plugin, hoặc cuộc trò chuyện cũ hơn plugin), chế độ xem so sánh với commit gần nhất và báo như vậy. Hoàn tác lượt giữ 50 snapshot mới nhất của một cuộc trò chuyện: trong cuộc trò chuyện dài hơn, chế độ xem so sánh với snapshot cũ nhất còn giữ, cho biết từ tin nhắn nào và không tính các thay đổi trước đó. **Ẩn thay đổi khoảng trắng** là `git diff -w`: một dòng chỉ thay đổi khoảng trắng bên trong cũng bị ẩn.
|
|
196
196
|
- **Mở issue trên GitHub** cần GitHub CLI (`gh`) trong PATH của dsh và một remote GitHub trong thư mục của cuộc trò chuyện. Tính năng chạy tối đa 60 giây; nếu `gh` mất nhiều thời gian hơn, issue có thể đã có trên GitHub mà không có liên kết trong danh sách (trước khi nhấp lại, hãy xem trên GitHub: danh sách chỉ đọc liên kết từ một lần chạy đã xong, nên một lần nhấp mới có thể mở issue thứ hai). Thư mục có nhiều hơn một remote GitHub dùng mặc định của chính `gh` (`gh repo set-default`).
|
|
197
197
|
- **Các cuộc trò chuyện đã thay đổi tệp này** chỉ biết các công cụ tệp của dsh (`write`, `edit`, `str_replace_editor`), giống **Cuộc trò chuyện này**: thay đổi do một lệnh (`bash`) tạo ra không được liệt kê. Tính năng đọc 300 cuộc trò chuyện mới nhất của repository (theo thời điểm tạo) và báo khi có nhiều hơn; tính năng hiển thị tối đa 100 dòng. Tệp đã đổi tên được liệt kê theo tên mà công cụ đã ghi. Cuộc trò chuyện có thư mục nằm ngoài repository (kể cả qua một đường dẫn khác tới cùng các tệp) không được tính. Lần mở đầu tiên sau khi khởi động dsh sẽ đọc mọi nhật ký trò chuyện của repository (khoảng 4 giây cho 275 cuộc trò chuyện); các lần mở sau chỉ đọc những cuộc trò chuyện đã thay đổi từ đó.
|
|
198
|
-
- **Branch Git trên dòng cuộc trò chuyện** hiển thị branch của thư mục cuộc trò chuyện khi lượt cuối của nó bắt đầu hoặc kết thúc, không phải branch hiện tại: việc chuyển branch bên ngoài một lượt sẽ hiện sau lượt tiếp theo. Các cuộc trò chuyện từ trước phiên bản này không có nhãn cho đến lượt tiếp theo của chúng. Nhãn nằm trong markup dòng cuộc trò chuyện của dsh (dsh không có vị trí dành cho nó ở đó); nếu một bản cập nhật dsh thay đổi markup đó, nhãn không hiện.
|
|
198
|
+
- **Branch Git trên dòng cuộc trò chuyện** hiển thị branch của thư mục cuộc trò chuyện khi lượt cuối của nó bắt đầu hoặc kết thúc, không phải branch hiện tại: việc chuyển branch bên ngoài một lượt sẽ hiện sau lượt tiếp theo. Các cuộc trò chuyện từ trước phiên bản này không có nhãn cho đến lượt tiếp theo của chúng. Nhãn nằm trong markup dòng cuộc trò chuyện của dsh (dsh không có vị trí dành cho nó ở đó); nếu một bản cập nhật dsh thay đổi markup đó, nhãn không hiện. Nếu dòng dự án phía trên cuộc trò chuyện có cùng tên với branch (ví dụ thư mục của “Branch riêng cho từng cuộc trò chuyện”), dòng cuộc trò chuyện không hiển thị nhãn, nhưng “Trong một danh sách” vẫn hiển thị nhãn.
|
|
199
199
|
- **Tìm trong cuộc trò chuyện** chỉ tìm trong những gì trang hiển thị: các tin nhắn và câu trả lời đã được tải (cuộn lên hoặc nhấp **Tải cũ hơn** để xem các tin cũ hơn), không tìm trong các bước công cụ đang đóng và không tìm trong văn bản bị thu gọn bên trong đầu ra của công cụ. Tính năng đếm tối đa 2.000 kết quả khớp (sau đó là "2000+"). Tính năng dùng API tô sáng của trình duyệt (Chromium 105 trở lên; ứng dụng máy tính có API này): trong trình duyệt cũ hơn, số đếm và việc di chuyển vẫn hoạt động nhưng không có màu. `Cmd+F` trên Mac (`Ctrl+F` trên Windows và Linux) chỉ mở tính năng khi có một cuộc trò chuyện trên màn hình; ở nơi khác, chức năng tìm của chính trình duyệt vẫn hoạt động như trước. Trên Mac, `Ctrl+F` vẫn giữ chức năng của macOS trong ô văn bản (con trỏ tiến lên một ký tự).
|
|
200
200
|
- Nhấp vào thông báo đã gửi trước khi khởi động lại chỉ đưa dsh ra phía trước.
|
|
201
201
|
- Dự án đang hoạt động được di chuyển bằng thứ tự dự án đã lưu của dsh, nên thứ tự mới vẫn được giữ sau khi khởi động lại. Không thể di chuyển cuộc trò chuyện nằm ngoài mọi dự án ("Chưa nhóm"); dsh luôn liệt kê chúng ở cuối.
|
|
@@ -271,7 +271,7 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
271
271
|
|
|
272
272
|
**Làm sao để Phiên mới luôn mở trong cùng một dự án?** Cài đặt → Composer Plus → **Không gian làm việc mặc định cho Phiên mới** → **Mở Phiên mới trong** → chọn dự án. Nút `+` cạnh dự án khác vẫn mở dự án đó.
|
|
273
273
|
|
|
274
|
-
**Làm sao để làm nhiều tính năng của một dự án cùng lúc, mỗi tính năng trên branch riêng?** Dùng **Branch riêng cho từng cuộc trò chuyện**: cuộc trò chuyện mới → nút
|
|
274
|
+
**Làm sao để làm nhiều tính năng của một dự án cùng lúc, mỗi tính năng trên branch riêng?** Dùng **Branch riêng cho từng cuộc trò chuyện**: cuộc trò chuyện mới → nút main có biểu tượng branch → **Branch mới**, rồi gửi tin nhắn đầu tiên. Mỗi cuộc trò chuyện có branch và thư mục worktree riêng, kèm `.env` và `node_modules` của bạn khi `.worktreeinclude` liệt kê chúng. Phần đầu của cuộc trò chuyện cho biết bạn đang ở branch nào.
|
|
275
275
|
|
|
276
276
|
**Tôi có thể gửi ảnh từ iPhone không?** Có. Trong một cuộc trò chuyện Tether, chạm vào **+** bên cạnh ô tin nhắn → Camera, Photos (tối đa 4) hoặc Paste image. Ảnh được gửi tới cuộc trò chuyện trên Mac dưới dạng tệp đính kèm của tin nhắn, nên mô hình nhìn thấy chúng.
|
|
277
277
|
|
package/README.zh.md
CHANGED
|
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
29
29
|
|
|
30
30
|
然后重启 dsh。(CLI 无法安装到桌面版 profile 中;桌面版 profile 由应用自己管理。)
|
|
31
31
|
|
|
32
|
-
> dsh 使用的 pnpm 会跳过发布不到 24 小时的版本。刚发布新版本时,请加上版本号:`dsh-composer-plus@1.
|
|
32
|
+
> dsh 使用的 pnpm 会跳过发布不到 24 小时的版本。刚发布新版本时,请加上版本号:`dsh-composer-plus@1.15.0`。
|
|
33
33
|
|
|
34
34
|
## 功能
|
|
35
35
|
|
|
@@ -57,14 +57,14 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
57
57
|
| **新对话中的项目搜索** | <a id="feature-projectpicker"></a>新对话 → 输入框上方的项目按钮。项目按 A–Z 顺序显示,顶部有 **搜索项目** 框。输入名称的一部分(不区分大小写和重音符号),按 `Enter` 即可选择第一个匹配项。没有匹配项时会显示 **没有匹配的项目**。侧边栏中 dsh 保存的项目顺序不会改变。 | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="截图:新对话中的项目搜索"></a> |
|
|
58
58
|
| **新会话的默认工作区** | <a id="feature-defaultworkspace"></a>设置 → Composer Plus → **新会话的默认工作区** → **新会话打开于**:选择一个项目,或选择 **通用文件夹(default-workspace)**(默认值:dsh 自己的文件夹 `Documents/deepseek-harness/default-workspace`,首次使用时创建)。之后,侧边栏顶部的 **新会话**(及其快捷键)总是在那里打开新对话,即使另一个项目的对话正在打开也是如此。项目旁的 `+` 仍会打开该项目,新对话中输入框上方的项目按钮仍可更换项目。 | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="截图:新会话的默认工作区"></a> |
|
|
59
59
|
| **在对话中查找** | <a id="feature-findinchat"></a>在对话中按 `Cmd+F`(Mac)或 `Ctrl+F`(Windows 和 Linux),对话上方会打开查找框。输入词语后,屏幕上的消息和回复中所有匹配项都会高亮,当前匹配项颜色更深,查找框显示 **n / 总数**。`Enter` 或 `↓` 跳到下一个匹配项,`Shift+Enter` 或 `↑` 跳到上一个(也可用箭头按钮);对话会把匹配项滚动到中间。不区分大小写、重音和土耳其语无点 ı。`Esc` 关闭查找框,并把光标放回原处。回复流式输出时,查找结果会随之更新。 | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="截图:在对话中查找"></a> |
|
|
60
|
-
| **每个对话一个分支** | <a id="feature-worktreechats"></a>新对话 →
|
|
60
|
+
| **每个对话一个分支** | <a id="feature-worktreechats"></a>新对话 → 项目按钮和模式按钮之间的 main 按钮(分支图标)→ **新分支**,然后输入第一条消息并发送。第一条消息可以附带图片和文件。AI 根据这条消息给分支命名(`feat/…`、`fix/…`),Composer Plus 在 `<项目>/.worktrees/` 中为它创建 git worktree,复制 `.worktreeinclude` 列出的被忽略文件(例如 `.env` 和 `node_modules/`),并在那里打开一个带有你消息的新对话。打开的对话标题栏显示 ⑂ 分支 · N 处改动 · ↑ ↓(或 **未推送**);点击它打开 **改动**。同一菜单列出已打开的 worktree:选择一个即可在其中开始对话。要在侧边栏中把分支文件夹显示在其项目内,请选择 dsh 的 **视图选项** → **按工作区树**。 | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="截图:每个对话一个分支"></a> |
|
|
61
61
|
| **下一条消息预测** | <a id="feature-nextprediction"></a>默认开启;可在 **设置 → Composer Plus** 中关闭。智能体完成一个回合后(被停止或失败的回合除外),空输入框会以灰色文字显示对你下一条消息的猜测,并带有 **按 Tab 接受** 提示。`Tab` 会把文字放入输入框,但不会发送。`Esc` 会在本回合隐藏它。开始输入也会隐藏它,新的回合会替换它。开关下方的 **模型** 菜单列出 dsh 自己的模型(与 dsh 模型菜单的列表相同)。默认选中 **dsh 默认**,它跟随 dsh 的默认模型。每完成一个回合会进行一次简短的模型调用。在 Tether 中,猜测显示在空输入框上方:轻点它即可放入输入框。 | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="截图:下一条消息预测"></a> |
|
|
62
62
|
| **输入时补全** | <a id="feature-typingcompletion"></a>默认关闭;可在 **设置 → Composer Plus** 中开启。输入时,光标后紧跟的灰色文字会显示你的消息可能的后续内容。`Tab` 会把它添加到消息中,但不会发送。`Esc` 会隐藏它。它只建议你自己接下来要写的话:不会回答你,也不会编造错误信息或名称。消息看起来已完整,或模型不确定时,不显示任何内容。继续输入灰色文字中接下来的字符时,它会保留,不会再次调用模型。它的开关下方有自己的 **模型** 菜单。第一项 **与“下一条消息预测”相同**(默认)使用 **下一条消息预测** 的模型;选择其他模型,就可以为每个功能使用不同的模型,例如为补全选择更快的模型。你每次输入停顿时,它都会调用一次模型,因此消耗的 token 比预测多得多:请选择快速、低成本的模型。输入斜杠命令、消息中带有文件标签,或光标不在末尾时,它不会运行。在 Tether 中,输入时剩余部分会显示在输入框上方:轻点它即可添加。 | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="截图:输入时补全"></a> |
|
|
63
63
|
| **优化提示词** | <a id="feature-promptimprove"></a>输入一个粗略的请求,然后点击模型菜单旁边的魔法棒(**优化提示词**)。一次模型调用会把它改写成更清晰的提示词:先写目标,有多个部分时列出简短的编号步骤,并写明要运行的检查。它会读取此对话(已回滚的消息除外)、项目的 README、AGENTS.md 和清单文件、已更改的文件以及文件名与你的用词匹配的文件,并保留你的语言。它从不编造文件名。新文本会替换你的草稿,但不会发送:阅读、修改后再按 `Enter`。`Cmd/Ctrl+Z` 一步即可恢复你的原文,该按钮(**撤销优化**)也可以。如果你在它处理时继续输入,你的新文本会保留。`Esc` 或再次点击可取消。它在设置中有自己的 **模型** 菜单(默认:**与对话的模型相同**)。不适用于斜杠命令或带文件标签的消息。在 Tether 中,魔法棒位于输入框旁边。 | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="截图:优化提示词"></a> |
|
|
64
64
|
| **目标检查** | <a id="feature-goalcheck"></a>用 `/goal` 开始一个目标。当智能体在自动轮次中把目标标记为完成时,目标要通过两项检查才会关闭。首先,项目的测试命令会在对话的文件夹中、按对话的沙箱模式运行。命令是你自己设置的,或者从 `package.json`、`Makefile`、`Cargo.toml`、`go.mod` 或 pytest 中找到的。如果智能体自己最新的一步就是该测试的成功运行,则不再重复运行。然后,一次不带工具的独立模型调用会阅读目标、此对话、`git status` 和测试结果。任一检查失败时,目标保持进行中,智能体会看到原因,下一轮继续。目标栏下方的一行(**目标检查**)显示测试和上次结果。**编辑** 可设置你自己的测试命令以及时间或 token 上限;超过上限时目标会变为受阻。**立即运行** 会运行检查但不关闭目标。它在设置中有自己的 **模型** 菜单(默认:**与对话的模型相同**)。你自己完成目标时,不做任何检查。 | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="截图:目标检查"></a> |
|
|
65
65
|
| **本对话内允许** | <a id="feature-allowforchat"></a>当 Auto Review 询问你时,审批卡片上会多出 **本对话内允许**:从此以后,同一对话中的同一工具都会被允许,参数不限,直到时限结束(默认 1 小时;可在 **设置 → Composer Plus → 本对话内允许** 中选择)。之后代理会再次询问。标题栏中的标签会列出这些授权及其结束时间,也可以撤销它们。授权在重启后仍然有效。 | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="截图:本对话内允许"></a> |
|
|
66
66
|
| **项目状态** | <a id="feature-projectstatus"></a>侧边栏中的项目行会显示与其对话相同的加载图标 / 等待 / 完成标记。因此,即使项目已折叠,你也能知道其中有对话正在运行或需要你处理。等待你处理的对话优先显示,其次是你尚未打开的已完成对话(绿色圆点,即使另一个对话仍在运行也会显示),最后是加载图标。将鼠标悬停在上面可查看详情。 | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="截图:项目状态"></a> |
|
|
67
|
-
| **对话行显示 Git 分支** | <a id="feature-sessionbranch"></a>侧边栏中的每个对话行会显示一个小的灰色标签,内容是该对话最后一轮时项目文件夹所在的 git 分支(例如 `main` 或 `feature/login`;分离的 HEAD 会在括号中显示短提交 ID)。同一项目中位于不同分支的两个对话不再看起来一样,你也能立即发现自己是否要在错误的分支上继续对话。将鼠标悬停在标签上可查看完整名称。Host 部分会在每轮开始和结束时读取分支(`git branch --show-current`,只读);安装后还没有新一轮的对话,或不是 git
|
|
67
|
+
| **对话行显示 Git 分支** | <a id="feature-sessionbranch"></a>侧边栏中的每个对话行会显示一个小的灰色标签,内容是该对话最后一轮时项目文件夹所在的 git 分支(例如 `main` 或 `feature/login`;分离的 HEAD 会在括号中显示短提交 ID)。同一项目中位于不同分支的两个对话不再看起来一样,你也能立即发现自己是否要在错误的分支上继续对话。将鼠标悬停在标签上可查看完整名称。Host 部分会在每轮开始和结束时读取分支(`git branch --show-current`,只读);安装后还没有新一轮的对话,或不是 git 仓库的文件夹,不会显示标签。当对话上方的项目行与分支同名时(例如“每个对话一个分支”的文件夹),该对话行不显示分支标签,但“列表视图”中仍会显示。 | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="截图:对话行显示 Git 分支"></a> |
|
|
68
68
|
| **全部标为已读** | <a id="feature-markprojectread"></a>在侧边栏中,点击项目的 **…** 按钮 → **全部标为已读**。该项目中所有对话的绿色未读圆点会立即消失;其他项目的圆点保持不变。项目中没有未读对话时,此项显示为灰色(**没有未读对话**)。 | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="截图:全部标为已读"></a> |
|
|
69
69
|
| **活跃项目置顶** | <a id="feature-activeprojectsfirst"></a>当某个对话开始运行或需要你处理时,它所在的项目会移到侧边栏顶部,并使用 dsh 自带的行动画(与把它拖到那里的效果相同)。已完成的项目保持原位;你可以像往常一样把它们拖到任意位置。移动会保存到 dsh 的项目顺序中,因此关闭此功能后会保留当前顺序。 | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="截图:活跃项目置顶"></a> |
|
|
70
70
|
| **近期项目筛选** | <a id="feature-recentprojects"></a>侧边栏 → 视图选项(滑块图标)→ **最近 2 小时内活跃**。选中后,侧边栏只显示最近 2 小时内有活跃对话的项目。活跃对话包括:这段时间内更新过的对话、正在运行或等待中的对话、当前打开的对话,以及你尚未打开的已完成对话(dsh 的绿色“完成”圆点),超过 2 小时后也一样。没有这类对话的项目会被隐藏,新建的空项目也会被隐藏。再次选择该项即可显示所有项目。这个选择保存在本设备上。 | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="截图:近期项目筛选"></a> |
|
|
@@ -169,7 +169,7 @@ English · 中文 · Türkçe · Español · Português (Brasil) · Français ·
|
|
|
169
169
|
- **对话行上没有分支标签:** 安装此版本后,该对话还没有新的一轮;或者它的文件夹不是 git 仓库;或者 **对话行显示 Git 分支** 已关闭。更新后,请重启 dsh(分支由 Host 端记录)。
|
|
170
170
|
- **目标检查显示测试以代码 127 或 “not found” 退出:** 从 Finder 或程序坞启动的 dsh 的 PATH 可能比终端里的短,因此找不到 `npm`、`pnpm` 或 `cargo`。请从终端启动 dsh,或者在 **目标检查** → **编辑** 中用完整路径设置你自己的测试命令。**立即运行** 会马上显示结果。
|
|
171
171
|
- **目标没有关闭,智能体一直在工作:** **目标检查** 发现了失败的测试或缺少的工作;目标下方的一行会显示原因(将鼠标悬停在结果上可查看详情)。请修正原因或测试命令,或者用 `/goal` 或目标栏自己完成目标(这不会被检查)。
|
|
172
|
-
- **刚发布新版本时安装失败:** 请加上版本号(`dsh-composer-plus@1.
|
|
172
|
+
- **刚发布新版本时安装失败:** 请加上版本号(`dsh-composer-plus@1.15.0`),见上文的安装说明。
|
|
173
173
|
|
|
174
174
|
## 限制
|
|
175
175
|
|
|
@@ -195,7 +195,7 @@ English · 中文 · Türkçe · Español · Português (Brasil) · Français ·
|
|
|
195
195
|
- **本对话** 只统计 dsh 的文件工具(`write`、`edit`、`str_replace_editor`)写入的文件。命令(`bash`)更改的文件不在这个视图中;它们显示在 **未提交** 下。如果没有该对话的回合回退快照(回合回退已关闭、安装了 dsh-rewind-plugin,或对话比插件更早),视图会与最后一次提交比较,并给出提示。回合回退为每个对话保留最新的 50 个快照:在更长的对话中,视图与保留的最早快照比较,说明从哪条消息开始,并且不计入更早的改动。**隐藏空白改动** 就是 `git diff -w`:只在行内空格上有变化的行也会被隐藏。
|
|
196
196
|
- **创建 GitHub issue** 需要 dsh 的 PATH 中有 GitHub CLI(`gh`),并且对话的文件夹中有 GitHub 远程仓库。它最多运行 60 秒;如果 `gh` 用时更长,issue 可能已经在 GitHub 上创建,但列表中没有它的链接(再次点击之前,请先到 GitHub 上查看:列表只从已完成的运行中读取链接,所以再次点击可能会创建第二个 issue)。有多个 GitHub 远程仓库的文件夹使用 `gh` 自己的默认仓库(`gh repo set-default`)。
|
|
197
197
|
- **改动此文件的对话** 与 **本对话** 一样,只识别 dsh 的文件工具(`write`、`edit`、`str_replace_editor`):命令(`bash`)做出的改动不会列出。它读取该仓库最新的 300 个对话(按创建时间),对话更多时会给出提示;它最多显示 100 行。重命名的文件按工具写入时的名称列出。文件夹在仓库之外的对话(包括通过另一条路径指向相同文件的情况)不计入。dsh 启动后第一次打开时,会读取该仓库的所有对话日志(275 个对话约需 4 秒);之后再打开时,只读取此后有变化的对话。
|
|
198
|
-
- **对话行显示 Git 分支** 显示的是对话最后一轮开始或结束时其文件夹所在的分支,而不是当前的分支:在回合之外切换分支,要到下一轮之后才会显示。此版本之前的对话,在下一轮之前不显示标签。标签放在 dsh 的对话行标记中(dsh 在那里没有插槽);如果 dsh
|
|
198
|
+
- **对话行显示 Git 分支** 显示的是对话最后一轮开始或结束时其文件夹所在的分支,而不是当前的分支:在回合之外切换分支,要到下一轮之后才会显示。此版本之前的对话,在下一轮之前不显示标签。标签放在 dsh 的对话行标记中(dsh 在那里没有插槽);如果 dsh 更新改变了这部分标记,就不会显示标签。当对话上方的项目行与分支同名时(例如“每个对话一个分支”的文件夹),该对话行不显示分支标签,但“列表视图”中仍会显示。
|
|
199
199
|
- **在对话中查找** 只搜索页面显示的内容:已加载的消息和回复(向上滚动或点击 **加载更早** 可查看更早的内容),不搜索已收起的工具步骤,也不搜索工具输出中被折叠的文本。它最多统计 2,000 个匹配项(之后显示“2000+”)。它使用浏览器的高亮 API(Chromium 105 及更高版本;桌面应用支持):在较旧的浏览器中,计数和跳转仍然可用,只是没有颜色。`Cmd+F`(Mac)或 `Ctrl+F`(Windows 和 Linux)只在屏幕上有对话时打开它;在其他地方,浏览器自带的查找照常工作。在 Mac 上,`Ctrl+F` 在文本框中仍保持 macOS 的用法(光标向前移动一个字符)。
|
|
200
200
|
- 重启前发出的通知,点击后只会把 dsh 带到前台。
|
|
201
201
|
- 活跃项目通过 dsh 保存的项目顺序来移动,因此新顺序在重启后依然保留。不属于任何项目的对话(“未分组”)无法移动;dsh 总是把它们列在最后。
|
|
@@ -271,7 +271,7 @@ English · 中文 · Türkçe · Español · Português (Brasil) · Français ·
|
|
|
271
271
|
|
|
272
272
|
**如何让新会话总在同一个项目中打开?** 设置 → Composer Plus → **新会话的默认工作区** → **新会话打开于** → 选择项目。其他项目旁的 `+` 仍会打开那个项目。
|
|
273
273
|
|
|
274
|
-
**如何在同一个项目中同时开发多个功能,并让每个功能在自己的分支上?** 使用 **每个对话一个分支**:新对话 →
|
|
274
|
+
**如何在同一个项目中同时开发多个功能,并让每个功能在自己的分支上?** 使用 **每个对话一个分支**:新对话 → 带分支图标的 main 按钮 → **新分支**,然后发送第一条消息。每个对话都有自己的分支和 worktree 文件夹;如果 `.worktreeinclude` 列出了你的 `.env` 和 `node_modules`,它们也会一起复制过去。对话标题栏会显示你当前所在的分支。
|
|
275
275
|
|
|
276
276
|
**可以从 iPhone 发送照片吗?** 可以。在 Tether 的对话中,轻点消息输入框旁边的 **+** → Camera、Photos(最多 4 张)或 Paste image。照片会作为你消息的附件发送到 Mac 上的对话,因此模型能看到它们。
|
|
277
277
|
|