dsh-composer-plus 1.10.0 → 1.11.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 +35 -14
- package/README.es.md +35 -14
- package/README.fr.md +35 -14
- package/README.hi.md +35 -14
- package/README.id.md +35 -14
- package/README.ja.md +35 -14
- package/README.ko.md +35 -14
- package/README.md +35 -14
- package/README.pt-BR.md +35 -14
- package/README.ru.md +35 -14
- package/README.tr.md +35 -14
- package/README.vi.md +35 -14
- package/README.zh.md +35 -14
- package/assets/features/exportMarkdown.webp +0 -0
- package/assets/features/featureIdeas.webp +0 -0
- package/assets/features/nextPrediction.webp +0 -0
- package/assets/features/projectPicker.webp +0 -0
- package/assets/features/typingCompletion.webp +0 -0
- package/client.js +891 -52
- package/index.js +502 -14
- package/package.json +2 -2
- package/tether/gateway/admin.html +158 -84
- package/tether/gateway/server.mjs +78 -11
package/README.tr.md
CHANGED
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
Bu sayfa bir çeviridir. Esas alınan sürüm, İngilizce [README.md](README.md) dosyasıdır.
|
|
10
10
|
|
|
11
|
-
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh) masaüstü uygulaması ve web arayüzü için Codex tarzı kolaylık özellikleri: Değişiklikler paneli, kaydırılan kartlarla özellik fikirleri, kenar çubuğu aramasında mesaj metni, dosyaları da geri yükleyen tur geri alma, sohbeti Çöp Sepeti’ne taşıyarak silme, mesaj alanının altında proje adı, kenar çubuğunda proje durumu, mesaj geçmişi, plan modu kısayolu, tek tıkla devam, yeniden başlatmadan sonra çalışan sohbetleri sürdürme, kuyrukta sürükle bırak, oturum bağlantıları, sohbet başına Otomatik inceleme izinleri, arka plan bildirimleri, Tether uygulamasıyla iPhone erişimi ve otomatik güncellemeler.
|
|
11
|
+
[DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh) masaüstü uygulaması ve web arayüzü için Codex tarzı kolaylık özellikleri: Değişiklikler paneli, kaydırılan kartlarla özellik fikirleri, kenar çubuğu aramasında mesaj metni, dosyaları da geri yükleyen tur geri alma, sohbeti Çöp Sepeti’ne taşıyarak silme, mesaj alanının altında proje adı, kenar çubuğunda proje durumu, mesaj geçmişi, plan modu kısayolu, tek tıkla devam, yeniden başlatmadan sonra çalışan sohbetleri sürdürme, kuyrukta sürükle bırak, oturum bağlantıları, sohbeti Markdown olarak dışa aktarma, sohbet başına Otomatik inceleme izinleri, arka plan bildirimleri, Tether uygulamasıyla iPhone erişimi ve otomatik güncellemeler.
|
|
12
12
|
|
|
13
|
-
**Tek satırda:** tek bir DeepSeek Harness eklentisi (npm `dsh-composer-plus`, Ayarlar → Eklentiler’de **Composer Plus** adıyla görünür). Şunları ekler: git Değişiklikler paneli, Tinder tarzı özellik fikri kartları, mesajlardaki sözcükleri de bulan kenar çubuğu araması, ↶ tur geri alma (yalnızca sohbet ya da sohbet ve dosyalar), Sohbeti sil, mesaj alanının altında proje adı, ↑/↓ mesaj geçmişi, Shift+Tab ile `/plan` açma/kapama, tek tıkla ▶ Devam et, Yeniden açılışta sürdür, kuyrukta sürükle bırakla sıralama, Oturum bağlantısını kopyala, Otomatik inceleme için “Bu sohbet boyunca izin ver”, arka plan bildirimleri, iPhone erişimi (Mobil bağlantı, Tether uygulaması), 11 ek arayüz dili ve otomatik güncellemeler.
|
|
13
|
+
**Tek satırda:** tek bir DeepSeek Harness eklentisi (npm `dsh-composer-plus`, Ayarlar → Eklentiler’de **Composer Plus** adıyla görünür). Şunları ekler: git Değişiklikler paneli, Tinder tarzı özellik fikri kartları, mesajlardaki sözcükleri de bulan kenar çubuğu araması, ↶ tur geri alma (yalnızca sohbet ya da sohbet ve dosyalar), Sohbeti sil, mesaj alanının altında proje adı, ↑/↓ mesaj geçmişi, Shift+Tab ile `/plan` açma/kapama, tek tıkla ▶ Devam et, Yeniden açılışta sürdür, kuyrukta sürükle bırakla sıralama, Oturum bağlantısını kopyala, Markdown olarak dışa aktar, Otomatik inceleme için “Bu sohbet boyunca izin ver”, arka plan bildirimleri, iPhone erişimi (Mobil bağlantı, Tether uygulaması), 11 ek arayüz dili ve otomatik güncellemeler.
|
|
14
14
|
|
|
15
15
|
<p align="center"><img src="docs/images/hero.webp" width="820" alt="Composer Plus ile DeepSeek Harness: çalışan proje kenar çubuğunda dönen bir simge gösteriyor, Değişiklikler paneli bir git farkı gösteriyor"></p>
|
|
16
16
|
|
|
17
|
-
Resmî olmayan bir topluluk eklentisidir. Eklentinin yaptığı tek ağ çağrısı güncelleme denetimidir (GitHub sürümleri ve npm kayıt defteri). Açılışta bu çağrıları durdurmak için **Otomatik güncellemeler** ayarını kapatın. **Özellik fikirleri**, sohbetin kendi modelini yalnızca **Özellik öner** düğmesine tıkladığınızda çağırır. **Mobil bağlantı** (varsayılan olarak kapalı), yerel ağınızdan veya tailnet’inizden gelen iPhone bağlantılarını yalnızca siz açtıktan sonra kabul eder.
|
|
17
|
+
Resmî olmayan bir topluluk eklentisidir. Eklentinin yaptığı tek ağ çağrısı güncelleme denetimidir (GitHub sürümleri ve npm kayıt defteri). Açılışta bu çağrıları durdurmak için **Otomatik güncellemeler** ayarını kapatın. **Özellik fikirleri**, sohbetin kendi modelini yalnızca **Özellik öner** düğmesine tıkladığınızda çağırır. **Sonraki mesaj tahmini** (varsayılan olarak açık), biten her turdan sonra Ayarlar’da seçilen modeli (siz başka bir model seçmediyseniz dsh’nin varsayılan modelini) tıklama olmadan bir kez çağırır. Bu çağrıları durdurmak için özelliği **Ayarlar → Composer Plus** içinden kapatın. **Yazarken tamamla** (varsayılan olarak kapalı), siz açtıktan sonra yazarken her duraklamada kendisi için seçilen modeli (varsayılan olarak tahminin modelini) çağırır. **Mobil bağlantı** (varsayılan olarak kapalı), yerel ağınızdan veya tailnet’inizden gelen iPhone bağlantılarını yalnızca siz açtıktan sonra kabul eder.
|
|
18
18
|
|
|
19
19
|
## Kurulum
|
|
20
20
|
|
|
@@ -29,14 +29,14 @@ 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.11.0`.
|
|
33
33
|
|
|
34
34
|
## Özellikler
|
|
35
35
|
|
|
36
36
|
| Özellik | Nasıl kullanılır | Ekran görüntüsü |
|
|
37
37
|
|---|---|---|
|
|
38
38
|
| **Değişiklikler paneli** | Sağ kenar çubuğu → `+` → **Değişiklikler**. Değişen dosyaları `+/-` sayılarıyla görmek için **Commit edilmemiş**, **Hazırlanmamış**, **Hazırlanmış** veya **Dal** seçin. Farkını görmek için bir dosyaya tıklayın. **Son tur**, dsh’nin son tur için kendi incelemesini açar. | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="Değişiklikler paneli ekran görüntüsü"></a> |
|
|
39
|
-
| **Özellik fikirleri** | Sağ kenar çubuğu → `+` → **Özellik fikirleri** → **Özellik öner**. Sohbetin kendi modeli, sohbetin projesinin kısa bir özetini okur (üst düzey dosyalar, README ve manifest dosyasının başı, son 15 commit). Sonra en çok 8 özellik önerir. Öneriler, dsh’nin arayüz dilinde bir kart destesi olarak görünür. Aynı projede yeni bir sohbet başlatmak için kartı sağa kaydırın (ya da **✓** düğmesine tıklayın veya `→` tuşuna basın; her durumda kart kendi tarafına uçar). Yeni sohbet plan modunda başlar ve fikri istek olarak alır. Bu yüzden siz planı onaylamadan hiçbir şey değişmez. Planı atlamak için **▶ Hemen uygula** düğmesine tıklayın (ya da `↑` tuşuna basın; kart yukarı uçar). Yeni sohbet, fikri sıradan bir istek olarak alıp hemen başlar. Model değişikliği yapar ve kontrollerini çalıştırır (onaylar her zamanki gibi uygulanır). Atlamak için sola kaydırın (ya da **✕** veya `←`). **Geri al** (ya da `Z`) atlanan kartı geri getirir. İyi bir fikri sonraya saklamak için **↓** düğmesine tıklayın (ya da `↓` tuşuna basın). Fikir projenin **Sonra** listesine gider. Aynı proje klasöründeki her sohbet bu listeyi gösterir (yeniden başlatmadan sonra da). **Sonra (N)** listeyi açar. **Planla**, fikir için aynı plan modu sohbetini başlatır. **Hemen uygula** ise sohbeti plan olmadan başlatır. İkisi de fikri listeden çıkarır. **Tümünü tek planda başlat (N)**, listedeki bütün fikirler için tek bir plan modu sohbeti başlatır. Böylece ortak kısımlar yalnızca bir kez planlanır. **Listeden kaldır** fikri siler. **Daha fazla fikir** yeni kartlar ekler. Bir projede aynı fikir iki kez önerilmez: önerilen her fikir (atlanan, saklanan ya da başlatılan) projenin **Geçmiş** listesine gider. Modele bu fikirleri yeniden önermemesi söylenir ve aynı başlıkla gelen bir fikir atılır. **Geçmiş**, fikirleri **Başlatıldı** ya da **Önerildi** etiketiyle listeler. **Unut** (ya da **Tümünü unut**) bir fikrin yeniden gelmesine izin verir; **Sonra** listesinde hâlâ duran bir fikir, siz onu oradan kaldırana kadar önerilerde yer almaz. Model yalnızca siz tıkladığınızda çalışır. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Özellik fikirleri ekran görüntüsü"></a> |
|
|
39
|
+
| **Özellik fikirleri** | Sağ kenar çubuğu → `+` → **Özellik fikirleri** → **Özellik öner**. Sohbetin kendi modeli, sohbetin projesinin kısa bir özetini okur (üst düzey dosyalar, README ve manifest dosyasının başı, son 15 commit). Sonra en çok 8 özellik önerir. Öneriler, dsh’nin arayüz dilinde bir kart destesi olarak görünür. Aynı projede yeni bir sohbet başlatmak için kartı sağa kaydırın (ya da **✓** düğmesine tıklayın veya `→` tuşuna basın; her durumda kart kendi tarafına uçar). Yeni sohbet plan modunda başlar ve fikri istek olarak alır. Bu yüzden siz planı onaylamadan hiçbir şey değişmez. Planı atlamak için **▶ Hemen uygula** düğmesine tıklayın (ya da `↑` tuşuna basın; kart yukarı uçar). Yeni sohbet, fikri sıradan bir istek olarak alıp hemen başlar. Model değişikliği yapar ve kontrollerini çalıştırır (onaylar her zamanki gibi uygulanır). Atlamak için sola kaydırın (ya da **✕** veya `←`). **Geri al** (ya da `Z`) atlanan kartı geri getirir. İyi bir fikri sonraya saklamak için **↓** düğmesine tıklayın (ya da `↓` tuşuna basın). Fikir projenin **Sonra** listesine gider. Aynı proje klasöründeki her sohbet bu listeyi gösterir (yeniden başlatmadan sonra da). **Sonra (N)** listeyi açar. **Planla**, fikir için aynı plan modu sohbetini başlatır. **Hemen uygula** ise sohbeti plan olmadan başlatır. İkisi de fikri listeden çıkarır. **Tümünü tek planda başlat (N)**, listedeki bütün fikirler için tek bir plan modu sohbeti başlatır. Böylece ortak kısımlar yalnızca bir kez planlanır. **Listeden kaldır** fikri siler. **Yapılacaklar listesi olarak kopyala**, bütün listeyi bir sorun takip aracı ya da TODO dosyası için Markdown yapılacaklar listesi olarak panoya kopyalar (`- [ ] Title — Summary`, her fikir için bir satır). Bu işlem ağ isteği yapmaz. **Daha fazla fikir** yeni kartlar ekler. Yalnızca tek bir alanla ilgili fikir almak için **Özellik öner** düğmesinin yanındaki alana kısa bir **Odak konusu** yazın (en çok 80 karakter; `Enter` da öneri ister). Ya da alanın altındaki sabit konulardan birine tıklayın: **Performans**, **Erişilebilirlik**, **Testler**, **Güvenlik**, **Kullanılabilirlik** veya **Dokümantasyon** (temizlemek için yeniden tıklayın). Model bundan sonra yalnızca o konuyla ilgili özellikler önerir. Alan boşsa model her türlü özelliği önerebilir. Bir projede aynı fikir iki kez önerilmez: önerilen her fikir (atlanan, saklanan ya da başlatılan) projenin **Geçmiş** listesine gider. Modele bu fikirleri yeniden önermemesi söylenir ve aynı başlıkla gelen bir fikir atılır. **Geçmiş**, fikirleri **Başlatıldı** ya da **Önerildi** etiketiyle listeler. **Unut** (ya da **Tümünü unut**) bir fikrin yeniden gelmesine izin verir; **Sonra** listesinde hâlâ duran bir fikir, siz onu oradan kaldırana kadar önerilerde yer almaz. Model yalnızca siz tıkladığınızda çalışır. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Özellik fikirleri ekran görüntüsü"></a> |
|
|
40
40
|
| **İçerik araması** | dsh’nin kendi kenar çubuğu araması (**Çalışma alanları** yanındaki büyüteç; masaüstü uygulamasında `Cmd+K`, tarayıcıda `Cmd+Alt+K`) sohbetleri yalnızca başlığa göre değil, mesajlarınızdaki ve yanıtlardaki sözcüklere göre de bulur. Eşleşen metni sohbetin altında gösterir. Bu arama dsh’de zaten vardır, ama kapalı gelir. Bu özellik aramayı açar ve bilgisayarınızda bir arama dizini dosyası kullanır. Dizin, dsh açıldıktan sonraki ilk aramada oluşturulur (250 sohbet için yaklaşık 15 sn, bkz. Sınırlar) ve sonraki açılışlarda yeniden kullanılır. Varsayılan olarak açıktır. Bir değişiklik, dsh’yi yeniden başlattıktan sonra geçerli olur. | <a href="assets/features/contentSearch.webp"><img src="assets/features/contentSearch.webp" width="160" alt="İçerik araması ekran görüntüsü"></a> |
|
|
41
41
|
| **Tur geri alma** | Mesajlarınızdan birinin üzerine gelin ve **↶** düğmesine tıklayın (Kopyala düğmesinin yanında). **Yalnızca sohbet**, o mesajı ve sonrasındaki her şeyi (yanıtlar, araç çağrıları) sohbetten ve modelin bağlamından çıkarır. Mesajı da mesaj alanına geri koyar: mesajı değiştirip yeniden gönderin. **Sohbet ve dosyalar** önce o mesajdan sonra değişen proje dosyalarını listeler. Sonra bu dosyaları da eski hâline döndürür. Yalnızca dsh’nin düzenleme araçlarının değil, komutların (`bash`) yaptığı değişiklikler de buna dahildir. Çalışan bir tur önce durur. Sohbet günlüğü hiçbir zaman yeniden yazılmaz: geri çekilen kısmı tek bir gizli işaretçi gizler. dsh’nin kendi `/compact` komutu da eski mesajları aynı yolla gizler. [dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) yüklüyse bu işi o yapar ve Composer Plus ikinci bir düğme göstermez. | <a href="assets/features/turnRollback.webp"><img src="assets/features/turnRollback.webp" width="160" alt="Tur geri alma ekran görüntüsü"></a> |
|
|
42
42
|
| **Sohbeti sil** | Kenar çubuğu → bir sohbetin **…** menüsü (ya da sağ tıklama) → **Sil…** → **Sil**. dsh kendisi yalnızca arşivleyebilir. Sohbet durur (dsh’nin kendi arşivlemesinde olduğu gibi turu, arka plan işleri, alt ajanları ve zamanlanmış hatırlatıcıları da durur). Kayıtlı geçmişi, alt ajan sohbetleriyle birlikte macOS Çöp Sepeti’ne taşınır (diğer sistemlerde: `$DSH_HOME/trash`). Sohbeti geri almak için klasörü yerine koyun ve dsh’yi yeniden başlatın: sohbet, kenar çubuğundaki **Yalnızca arşivlenmişler** görünümünde görünür. | <a href="assets/features/deleteChat.webp"><img src="assets/features/deleteChat.webp" width="160" alt="Sohbeti sil ekran görüntüsü"></a> |
|
|
@@ -44,11 +44,15 @@ Sonra dsh’yi yeniden başlatın. (CLI, masaüstü profiline yükleme yapamaz;
|
|
|
44
44
|
| **Mesaj geçmişi** | Boş mesaj alanında `↑` / `↓` tuşlarına basın. Terminaldeki gibi, gönderdiğiniz mesajlar arasında gezinirsiniz. | <a href="assets/features/inputHistory.webp"><img src="assets/features/inputHistory.webp" width="160" alt="Mesaj geçmişi ekran görüntüsü"></a> |
|
|
45
45
|
| **Plan modu kısayolu** | `Shift+Tab`, taslağın başına `/plan ` ekler (kaldırmak için yeniden basın). Sohbet zaten plan modundaysa `Shift+Tab` plan modundan çıkar. | <a href="assets/features/planToggle.webp"><img src="assets/features/planToggle.webp" width="160" alt="Plan modu kısayolu ekran görüntüsü"></a> |
|
|
46
46
|
| **Mesaj alanında odağı koru** | Bir `/` komutu veya beceri gönderdikten sonra imleç mesaj alanında kalır ve hemen yeniden yazabilirsiniz. Bu, bir komut yazıp `Enter` tuşuna basan klavye makrolarında da çalışır. dsh komutu çözümlerken mesaj alanını salt okunur yapar ve tarayıcı bu sırada odağı kaldırır. Bu özellik odağı geri verir. Odak bir menüde, bir iletişim kutusunda veya başka bir alandaysa odağı geri vermez. | <a href="assets/features/keepFocus.webp"><img src="assets/features/keepFocus.webp" width="160" alt="Mesaj alanında odağı koru ekran görüntüsü"></a> |
|
|
47
|
-
| **Tek tıkla devam** | Durdurulan, hata veren veya yarıda kesilen bir turdan sonra boş mesaj alanında **▶** görünür. Tek tıklama, giriş alanına bir şey yazmadan ve sohbete görünür bir mesaj eklemeden mevcut konuşmayı sürdürür. (Model kısa ve gizli bir “kaldığın yerden devam et” notu alır. Bunun nedeni, Claude gibi bazı sağlayıcıların asistan yanıtıyla biten bir isteği reddetmesidir.) Tamamlanan bir turdan sonra normal gönderme düğmesi kalır. | <a href="assets/features/continueButton.webp"><img src="assets/features/continueButton.webp" width="160" alt="Tek tıkla devam ekran görüntüsü"></a> |
|
|
47
|
+
| **Tek tıkla devam** | Durdurulan, hata veren veya yarıda kesilen bir turdan sonra boş mesaj alanında **▶** görünür. Tek tıklama, giriş alanına bir şey yazmadan ve sohbete görünür bir mesaj eklemeden mevcut konuşmayı sürdürür. (Model kısa ve gizli bir “kaldığın yerden devam et” notu alır. Bunun nedeni, Claude gibi bazı sağlayıcıların asistan yanıtıyla biten bir isteği reddetmesidir.) Kuyrukta bekleyen mesajlar yerinde kalır: ▶ yalnız durdurulan işi sürdürür, sonra kuyruk çalışır. Tamamlanan bir turdan sonra normal gönderme düğmesi kalır. | <a href="assets/features/continueButton.webp"><img src="assets/features/continueButton.webp" width="160" alt="Tek tıkla devam ekran görüntüsü"></a> |
|
|
48
48
|
| **Yeniden açılışta sürdür** | Varsayılan olarak kapalıdır: **Ayarlar → Composer Plus** içinden açın. Bir sohbet çalışırken dsh’den çıkarsanız (ya da dsh kapanırsa), dsh’yi yeniden açtığınızda o sohbet kendiliğinden devam eder. Bunun için Tek tıkla devam ile aynı gizli notu kullanır. Bir hedef turu (`/goal`) çalışıyorsa hedef bir sonraki turla devam eder (dsh her açılışta hedefleri, siz sürdürene kadar duraklatır). Sizin durdurduğunuz, tamamlanan veya hata veren sohbetler devam etmez. dsh’nin kendisinde bunun için bir ayar yoktur: dsh böyle bir turu yalnızca kesintiye uğradı olarak işaretler. | <a href="assets/features/resumeAfterRestart.webp"><img src="assets/features/resumeAfterRestart.webp" width="160" alt="Yeniden açılışta sürdür ekran görüntüsü"></a> |
|
|
49
49
|
| **Kuyrukta sürükle bırak** | Sıradaki mesajlarda bir tutamaç (⠿) görünür. Yerini değiştirmek için sürükleyin ya da tutamaca odaklanıp `↑` / `↓` tuşlarına basın. `Esc` taşımayı iptal eder. | <a href="assets/features/queueReorder.webp"><img src="assets/features/queueReorder.webp" width="160" alt="Kuyrukta sürükle bırak ekran görüntüsü"></a> |
|
|
50
50
|
| **Oturum bağlantısını kopyala** | Kenar çubuğunda bir sohbete sağ tıklayın → **Oturum bağlantısını kopyala**. `dsh-session:…` bağlantısını başka bir sohbete yapıştırın. O sohbet, salt okunur bağlam olarak eklenir. dsh 0.2.1’in kendi **Oturum kimliğini kopyala** seçeneği vardır ve bu seçenek yalnızca düz kimliği kopyalar. Bu öğe hemen onun ardından gelir. | <a href="assets/features/copyDeeplink.webp"><img src="assets/features/copyDeeplink.webp" width="160" alt="Oturum bağlantısını kopyala ekran görüntüsü"></a> |
|
|
51
|
+
| **Sohbeti Markdown olarak dışa aktar** | Kenar çubuğunda bir sohbete sağ tıklayın (ya da sohbetin **…** menüsünü açın) → **Markdown olarak dışa aktar…**. Bir iletişim kutusu, sohbette kaç mesaj olduğunu gösterir. **Panoya kopyala**, sohbeti Markdown olarak kopyalar. **.md dosyası olarak kaydet**, sohbeti tarayıcının indirme özelliğiyle `<chat title>.md` adıyla kaydeder (dsh masaüstü uygulamasında, sisteminizin ayarına göre İndirilenler klasörüne kaydeder ya da bir kaydetme penceresi açar). Dosyada sohbet başlığı, proje adı ve tarih vardır. Sonra her mesaj için bir `## Siz` ya da `## Asistan` bölümü gelir. Kod blokları olduğu gibi kalır. Bir mesajın açık bıraktığı kod bloğu kapatılır. | <a href="assets/features/exportMarkdown.webp"><img src="assets/features/exportMarkdown.webp" width="160" alt="Sohbeti Markdown olarak dışa aktar ekran görüntüsü"></a> |
|
|
51
52
|
| **Proje yolunu kopyala** | Kenar çubuğunda bir projeye sağ tıklayın → **Yolu kopyala**. Proje klasörünün tam yolu kopyalanır. | <a href="assets/features/copyProjectPath.webp"><img src="assets/features/copyProjectPath.webp" width="160" alt="Proje yolunu kopyala ekran görüntüsü"></a> |
|
|
53
|
+
| **Yeni sohbette proje arama** | 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="Yeni sohbette proje arama ekran görüntüsü"></a> |
|
|
54
|
+
| **Sonraki mesaj tahmini** | 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="Sonraki mesaj tahmini ekran görüntüsü"></a> |
|
|
55
|
+
| **Yazarken tamamla** | 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. 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="Yazarken tamamla ekran görüntüsü"></a> |
|
|
52
56
|
| **Sohbet boyunca izin** | 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 izin verilir. Başlıktaki küçük bir etiket izinleri 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="Sohbet boyunca izin ekran görüntüsü"></a> |
|
|
53
57
|
| **Proje durumu** | 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="Proje durumu ekran görüntüsü"></a> |
|
|
54
58
|
| **Etkin projeler üstte** | 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="Etkin projeler üstte ekran görüntüsü"></a> |
|
|
@@ -57,14 +61,14 @@ Sonra dsh’yi yeniden başlatın. (CLI, masaüstü profiline yükleme yapamaz;
|
|
|
57
61
|
| **Duruma göre sıralama** | Kenar çubuğu → görünüm seçenekleri → **Sıralama ölçütü** → **Duruma göre** (**Tek listede** ile). Önce tamamlanan sohbetler gelir (dsh’nin “tamamlandı” noktası; hatayla biten bir tur da bu noktayı alır). Sonra çalışan ya da bekleyen sohbetler, sonra etkin bir otomasyonu (zamanlanmış görev) olan sohbetler, en sonda da diğerleri dsh’nin sırasıyla gelir. Tamamlanan bir sohbeti açmak onu aşağı taşır. Yalnızca görünüm değişir: geri dönmek için **Elle** ya da **Son güncelleme** seçin. | <a href="assets/features/statusOrder.webp"><img src="assets/features/statusOrder.webp" width="160" alt="Duruma göre sıralama ekran görüntüsü"></a> |
|
|
58
62
|
| **Arka plan bildirimleri** | dsh arka plandayken bir tur bittiğinde (yanıtın ilk satırıyla) ya da bir sohbet gerçekten sizi beklediğinde bildirim alırsınız. Bekleme nedeni bir onay (araç adı), bir yanıt (soru) veya bir plan incelemesi olabilir. Bir isteğin 1,5 sn sonra hâlâ açık olması gerekir. Bu yüzden otomatik yanıtlanan onaylar (Otomatik inceleme izinleri, diğer eklentiler) bildirim göstermez. Bir istek yanıtlanınca bildirimi de hemen geri çekilir. Dock/görev çubuğu rozeti bekleyen sohbetleri sayar. Bildirime tıklamak o sohbeti açar. | <a href="assets/features/notifications.webp"><img src="assets/features/notifications.webp" width="160" alt="Arka plan bildirimleri ekran görüntüsü"></a> |
|
|
59
63
|
| **11 ek arayüz dili** | Ayarlar → Composer Plus → **Uygulama dili**, dsh arayüzünün tamamını Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt veya हिन्दी diline geçirir (aşağıya bakın). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="11 ek arayüz dili ekran görüntüsü"></a> |
|
|
60
|
-
| **Mobil bağlantı (iPhone)** | dsh’yi iPhone’unuzdan [Tether](tether/) uygulamasıyla, aynı Wi-Fi ağında ya da [Tailscale](https://tailscale.com) üzerinden kullanın. Özelliği **Ayarlar → Composer Plus** içinden açın (varsayılan olarak kapalıdır, çünkü bu Mac’te bir ağ portu açar). Sonra kenar çubuğunun sol altındaki **Mobil bağlantı** düğmesine tıklayın. QR kodunu Tether ile tarayın ve **Approve** düğmesine tıklayın. Telefon sohbetlerinizi gösterir, mesaj gönderir, onayları ve soruları yanıtlar, modelleri ve ajanları değiştirir. İstediğiniz kadar Mac eşleştirebilirsiniz: uygulamanın sol üstündeki Mac adıyla Mac’ler arasında geçiş yaparsınız. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Mobil bağlantı ekran görüntüsü"></a> |
|
|
64
|
+
| **Mobil bağlantı (iPhone)** | dsh’yi iPhone’unuzdan [Tether](tether/) uygulamasıyla, aynı Wi-Fi ağında ya da [Tailscale](https://tailscale.com) üzerinden kullanın. Özelliği **Ayarlar → Composer Plus** içinden açın (varsayılan olarak kapalıdır, çünkü bu Mac’te bir ağ portu açar). Sonra kenar çubuğunun sol altındaki **Mobil bağlantı** düğmesine tıklayın. QR kodunu iPhone’un Kamera uygulamasıyla (**Tether’de Aç** düğmesine dokunun) ya da Tether’deki **Scan code** ile tarayın. **Connect** düğmesine dokunun ve **Approve** düğmesine tıklayın. Önce Tether’i yükleyin: Tether yüklü değilse Kamera bu kodu açamaz. Telefon sohbetlerinizi gösterir, mesaj gönderir, onayları ve soruları yanıtlar, modelleri ve ajanları değiştirir. İstediğiniz kadar Mac eşleştirebilirsiniz: uygulamanın sol üstündeki Mac adıyla Mac’ler arasında geçiş yaparsınız. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Mobil bağlantı ekran görüntüsü"></a> |
|
|
61
65
|
| **Otomatik güncellemeler** | dsh açıldığında eklenti [en son GitHub sürümünü](https://github.com/furkancak1r/dsh-composer-plus/releases/latest) denetler. Bu sürüm daha yeniyse ve npm’de de varsa, tam olarak o sürümü dsh’nin kendi eklenti yöneticisiyle yükler (Ayarlar → Eklentiler ile aynı yol) ve size bildirir. Yeni sürümü yüklemek için **dsh’yi yeniden başlatın**. **Ayarlar → Composer Plus → Composer Plus güncellemeleri** sürümü gösterir. **Güncellemeleri denetle** / **Şimdi güncelle** düğmeleri de buradadır. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Otomatik güncellemeler ekran görüntüsü"></a> |
|
|
62
66
|
|
|
63
67
|
Düğmeler, araç ipuçları, uyarılar ve bildirimler seçili dsh dilini kullanır (aşağıdaki Uygulama dili bölümüne bakın).
|
|
64
68
|
|
|
65
69
|
## Ayarlar
|
|
66
70
|
|
|
67
|
-
Her özelliği ayrı ayrı açıp kapatabilirsiniz: dsh **Ayarlar → Composer Plus**. Her satırda küçük bir ekran görüntüsü vardır. Büyük önizleme için üzerine gelin, tam boyutta açmak için tıklayın (`Esc` kapatır). Üstteki **Özellik ara** kutusu sayfayı ada veya açıklamaya göre süzer (her dilde; büyük/küçük harf ve aksan fark etmez). `Esc` kutuyu temizler. Her satırda bir anahtar ve kısa bir açıklama vardır. Değişiklikler yeniden başlatma gerekmeden hemen uygulanır ve o cihazda hatırlanır. **Mobil bağlant
|
|
71
|
+
Her özelliği ayrı ayrı açıp kapatabilirsiniz: dsh **Ayarlar → Composer Plus**. Her satırda küçük bir ekran görüntüsü vardır. Büyük önizleme için üzerine gelin, tam boyutta açmak için tıklayın (`Esc` kapatır). Üstteki **Özellik ara** kutusu sayfayı ada veya açıklamaya göre süzer (her dilde; büyük/küçük harf ve aksan fark etmez). `Esc` kutuyu temizler. Her satırda bir anahtar ve kısa bir açıklama vardır. Değişiklikler yeniden başlatma gerekmeden hemen uygulanır ve o cihazda hatırlanır. **Mobil bağlantı**, **Yeniden açılışta sürdür** ve **Yazarken tamamla** dışında her şey varsayılan olarak açıktır. Bu üçünün ve **İçerik araması**, **Tur geri alma** ile **Sonraki mesaj tahmini** özelliklerinin anahtarlarını dsh’nin Host’u saklar. Bu yüzden bu ayarlar her pencerede geçerlidir ve yeniden başlatmadan sonra da korunur. **Sonraki mesaj tahmini** ve **Yazarken tamamla** için seçilen **Model** de Host’ta saklanır (**Yazarken tamamla** için varsayılan: **Sonraki mesaj tahminiyle aynı**). **İçerik araması** yalnızca dsh yeniden başladıktan sonra değişir (dsh bu ayarı açılışta okur). O zamana kadar satırında **Bu değişikliğin geçerli olması için dsh’yi yeniden başlatın.** yazar.
|
|
68
72
|
|
|
69
73
|
<p align="center"><img src="docs/images/settings.webp" width="720" alt="Ayarlar → Composer Plus: özellik araması, dil seçici, güncelleme satırı ve her özellik için bir anahtar; üzerine gelince ekran görüntüsü önizlemesi"></p>
|
|
70
74
|
|
|
@@ -92,6 +96,12 @@ Her dil paketinde 3.143 metin vardır: dsh `0.2.0-rc.2` ve `0.2.1-rc.2` sürüml
|
|
|
92
96
|
| `↓` | Özellik fikirleri sayfası | üstteki kartı projenin Sonra listesine kaydet |
|
|
93
97
|
| `↑` | Özellik fikirleri sayfası | üstteki kartı plan olmadan hemen uygula |
|
|
94
98
|
| `Z` | Özellik fikirleri sayfası | son atlanan kartı geri getir |
|
|
99
|
+
| `Enter` | yeni sohbetin proje menüsü, arama kutusu | ilk eşleşmeyi seç |
|
|
100
|
+
| `↑` / `↓` | yeni sohbetin proje menüsü | görünen projeler arasında gez |
|
|
101
|
+
| `Esc` | yeni sohbetin proje menüsü, arama kutusu | aramayı temizle (menüyü kapatmak için yeniden basın) |
|
|
102
|
+
| `Tab` | tahmin gösteren boş mesaj alanı | tahmini mesaj alanına koy |
|
|
103
|
+
| `Tab` | imleçten sonraki gri tamamlama | tamamlamayı mesaja ekle |
|
|
104
|
+
| `Esc` | tahmin gösteren boş mesaj alanı | tahmini gizle |
|
|
95
105
|
|
|
96
106
|
Açık bir `/` veya `@` menüsü bu tuşları kendisi kullanır.
|
|
97
107
|
|
|
@@ -108,16 +118,19 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
108
118
|
- **Özellik fikirleri:** siz **Özellik öner** düğmesine tıklayana kadar hiçbir şey çalışmaz. Sonra Host tarafı yalnızca sohbetin kendi klasörünü okur (tarayıcı hiçbir zaman yol göndermez). Okunanlar şunlardır: üst düzey öğelerin adları; README, AGENTS.md ve manifest dosyasının (`package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, …) ilk 6 kB’ı ve `git log --oneline -15`. Toplam en çok 16 kB’tır. `.env*` dosyalarını, anahtar dosyalarını ve `node_modules` gibi klasörleri atlar. Yalnızca klasörün içinde kalan normal dosyaları okur: klasörün dışını gösteren bir sembolik bağlantı, bir FIFO veya bir aygıt atlanır. Bu özet, dsh’nin kendi sağlayıcı ayarları üzerinden sohbetin kullandığı modele tek bir istek olarak gider. Hiçbir sohbete eklenmez. Projeye hiçbir şey yazılmaz. Sağa kaydırılan bir fikir, plan modunda yeni bir sohbet başlatır. Bu yüzden onaylar ve plan incelemesi her zamanki gibi uygulanır. **Hemen uygula**, sohbeti plan modu olmadan başlatır: model dosyaları hemen değiştirebilir. Sohbetin her zamanki onayları ve Otomatik inceleme uygulanır. Sonraya saklanan fikirler (başlık, özet, gerekçe, efor), projenin klasör yoluyla birlikte dsh ana klasöründeki `storages/dsh-composer-plus/later.json` dosyasında saklanır (yalnızca sahibin erişebildiği dosya). Projeye hiçbir şey gitmez. Önerilen fikirlerin geçmişi (başlık, özet, gerekçe, efor, tarih, başlatılıp başlatılmadığı) aynı biçimde `storages/dsh-composer-plus/idea-history.json` dosyasında saklanır. Proje başına en çok 200 fikir tutulur (önce en eskiler silinir). Bu fikirlerin başlıkları, o projedeki bir sonraki **Özellik öner** isteğiyle modele gider.
|
|
109
119
|
- **İçerik araması:** sohbetlerinizde yeni bir kod arama yapmaz. Eklenti yalnızca dsh’nin kendi mesaj dizinini (SQLite FTS5, `dsh-session-query-sqlite`) açar ve ona bir dosya verir: `$DSH_HOME/cache/composer-plus/session-search.db` (dosyaya ve klasöre yalnızca sahibi erişebilir). Dosya, kullanıcı ve asistan mesajlarınızın metnini içerir. Bu yüzden `$DSH_HOME/sessions` içindeki sohbet günlükleri kadar özeldir. Hiçbir veri bilgisayarınızdan çıkmaz. Dosya, dsh’nin yeniden oluşturabileceği bir kopyadır: dsh kapalıyken onu silebilirsiniz. Anahtar `$DSH_HOME/storages/dsh-composer-plus/content-search.json` dosyasındadır.
|
|
110
120
|
- **Tur geri alma:** Host, her mesajınızdan önce sohbetin klasörünün bir git anlık görüntüsünü alır ve bunu kendi ayrı deposunda saklar: `$DSH_HOME/cache/composer-plus/rollback/<chat>.git` (yalnızca sahibin erişebildiği klasör). Bu depo, o klasörde git’in gördüğü dosyaların kopyalarını tutar (yok sayılan dosyaları tutmaz). Bu yüzden proje kadar özeldir. Deponuzun nesnelerini okur (git’te zaten olanların kopyasını almaz). Deponuzun index’ine, `HEAD`’ine, dallarına, etiketlerine, stash’ine veya yapılandırmasına hiçbir zaman yazmaz. git’in orada yaptığı tek değişiklik, yeniden kullandığı nesne dosyalarının zaman damgasını yenilemektir (bu, `git gc` ile temizlenmelerini geciktirir). Dosyalarla geri alma, yalnızca sohbetin klasöründeki normal dosyalara yazar. Sembolik bağlantıları, kanalları (pipe) ve klasörün dışındaki her şeyi atlar. Hiçbir veri bilgisayarınızdan çıkmaz. Bu ayrı depoyu dsh kapalıyken silebilirsiniz (bu durumda yeni mesajlar gelene kadar geri alma yalnızca sohbet için çalışır). **Sohbeti sil**, sohbetin ayrı deposunu da siler. Anahtar `$DSH_HOME/storages/dsh-composer-plus/rollback.json` dosyasındadır.
|
|
121
|
+
- **Sohbeti Markdown olarak dışa aktar:** Host tarafı yalnızca sohbetin kendi günlüğünü okur (dsh’nin gösterdiği mesajların aynısı) ve bunları sayfaya verir. Hiçbir proje dosyasını okumaz ve ağ üzerinden hiçbir şey göndermez. Markdown metni yalnızca panonuza ya da kaydettiğiniz dosyaya gider.
|
|
111
122
|
- **Sohbeti sil:** sohbetin kendi günlük klasörlerini (`$DSH_HOME/sessions/<project>/<chat>`) Çöp Sepeti’ne taşır. Proje klasörüne dokunmaz.
|
|
112
123
|
- **Sohbet boyunca izin:** izinler `$DSH_HOME/storages/dsh-composer-plus/grants.json` dosyasında saklanır (yalnızca sahibin erişebildiği izinlerle). Bir izin, **tek bir sohbetteki tek bir aracı** kapsar. O araç yazabiliyorsa izin her türlü yazmayı da kapsar. İzni başlıktaki etiketten kaldırın.
|
|
113
124
|
- Otomatik inceleme yine her çağrıda çalışır. İnceleme hataları hiçbir zaman otomatik olarak onaylanmaz.
|
|
114
125
|
- **Mobil bağlantı:** siz açana kadar kapalıdır. Açıkken Host tarafı Tether ağ geçidini çalıştırır. Ağ geçidinde iki bölüm vardır: 19390 numaralı portta yalnızca Wi-Fi alt ağınızı ve tailnet’inizi (100.64.0.0/10) kabul eden HTTPS ve `127.0.0.1:19391` adresinde bir eşleştirme sayfası (yalnızca bu Mac). Bir telefonun eşleşmesi için QR kodundan tek kullanımlık bir kod (5 dakika geçerli) ve sizin Mac’te **Approve** ile onay vermeniz gerekir. Telefon, ağ geçidinin sertifikasını sabitler (pinning). Mac, her telefonun token’ının yalnızca bir özetini (hash) tutar (30 gün; kullanıldıkça yenilenir). **Revoke** o telefonun bağlantılarını hemen kapatır. Telefonlar yalnızca izin listesindeki dsh yöntemlerini çağırabilir (sohbetler, istemler, ekler, eğik çizgi komutları, onaylar, sorular, modeller, ajanlar, hedefler). Ayarları, kimlik bilgilerini, dosya tarayıcısını veya terminali çağıramaz. Veriler: `$DSH_HOME/storages/dsh-composer-plus/mobile/`. Ayrıntılar: [tether/README.md](tether/README.md).
|
|
115
126
|
- **Güncellemeler:** Host tarafı en son sürümü `api.github.com` adresine, o sürümün kendisini de `registry.npmjs.org` adresine sorar. Size veya sohbetlerinize ait hiçbir bilgi gönderilmez. Yükleme, dsh’nin eklenti yöneticisiyle yapılır (`pnpm add dsh-composer-plus@<version>`; dsh 0.2.1 yüklü bir eklenti için bunu reddederse `pnpm add https://registry.npmjs.org/dsh-composer-plus/-/dsh-composer-plus-<version>.tgz` kullanılır ve profil bundan sonra bu URL’yi eklentinin kaynağı olarak listeler). Bu yüzden dsh’nin kendi kayıt defteri, betik ve sürüm uyumluluğu denetimleri uygulanır. Ön sürüm etiketleri ve daha eski sürümler hiçbir zaman yüklenmez.
|
|
127
|
+
- **Sonraki mesaj tahmini:** varsayılan olarak açıktır. Bu model çağrılarını durdurmak için özelliği **Ayarlar → Composer Plus** içinden kapatın. Biten her turdan sonra Host tarafı, sohbetteki kendi mesajlarınızı ve ajanın metin yanıtlarını seçilen modele gönderir (siz başka bir model seçmediyseniz dsh’nin varsayılan modeli). Araç çıktısı, gizli bağlam ve akıl yürütme metni gönderilmez. En çok yaklaşık 6.000 karakter (en yeni kısım) gider. İstek, dsh’nin kendi sağlayıcı ayarları üzerinden tek bir istek olarak gider. Sohbete hiçbir şey kaydedilmez: tahmin sohbet geçmişine eklenmez. Anahtar ve model seçimi `$DSH_HOME/storages/dsh-composer-plus/predict.json` dosyasındadır (yalnızca sahibin erişebildiği dosya).
|
|
128
|
+
- **Yazarken tamamla:** siz açana kadar kapalıdır. Açıkken, yazarken her duraklamada Host tarafı o ana kadar yazdığınız metni, sohbetteki kendi mesajlarınızı ve ajanın metin yanıtlarını **Yazarken tamamla** için seçilen modele (varsayılan olarak **Sonraki mesaj tahmini** modeline) gönderir. Araç çıktısı, gizli bağlam ve akıl yürütme metni gönderilmez. Sohbetten en çok yaklaşık 3.000 karakter gider. Daha yeni bir duraklama eski isteği durdurur. Sohbete hiçbir şey kaydedilmez. Anahtar `$DSH_HOME/storages/dsh-composer-plus/complete.json` dosyasındadır (yalnızca sahibin erişebildiği dosya).
|
|
116
129
|
|
|
117
130
|
## Sorun giderme
|
|
118
131
|
|
|
119
132
|
- **macOS’ta bildirim gelmiyor:** Sistem Ayarları → Bildirimler → DeepSeek Harness → bildirimlere izin verin. Bildirimlerin ekranda kalması için **Kalıcı** stilini seçin.
|
|
120
|
-
- **dsh güncellemesinden sonra ▶, kuyruk tutamaçları, proje durumu, yakın zamanda aktif proje seçeneği, Tüm projeleri daralt, Yolu kopyala, Bu sohbet boyunca izin ver veya sağ tıklama öğeleri görünmüyor:** bu öğeler dsh’nin mevcut HTML yapısına bağlanır, çünkü dsh’de henüz bunlar için bir yuva yoktur. dsh bu yapıyı değiştirirse bu öğeler kendini gizler; başka hiçbir şey bozulmaz. Lütfen bir [issue](https://github.com/furkancak1r/dsh-composer-plus/issues) açın.
|
|
133
|
+
- **dsh güncellemesinden sonra ▶, kuyruk tutamaçları, proje durumu, yakın zamanda aktif proje seçeneği, Tüm projeleri daralt, Yolu kopyala, proje arama kutusu, sonraki mesaj tahmini, yazarken tamamlama, Bu sohbet boyunca izin ver veya sağ tıklama öğeleri görünmüyor:** bu öğeler dsh’nin mevcut HTML yapısına bağlanır, çünkü dsh’de henüz bunlar için bir yuva yoktur. dsh bu yapıyı değiştirirse bu öğeler kendini gizler; başka hiçbir şey bozulmaz. Lütfen bir [issue](https://github.com/furkancak1r/dsh-composer-plus/issues) açın.
|
|
121
134
|
- **"Güncelleme başarısız" veya "npm’den yüklenmedi":** yerel bir klasörden bağlanmış ya da yeniden adlandırılmış bir kopya kendini güncelleyemez. `dsh-composer-plus` eklentisini Ayarlar → Eklentiler’den yeniden yükleyin. Diğer durumlarda mesaj, pnpm hatasının ilk satırını gösterir. **Güncellemeleri denetle** yeniden dener.
|
|
122
135
|
- **Mobil bağlantı "Telefon ağ geçidi çalışmıyor" diyor:** "no IPv4 address on en0", bu Mac’in Wi-Fi/Ethernet adresi olmadığı anlamına gelir. "EADDRINUSE", başka bir dsh’nin (ya da uygulamanın) 19390 veya 19391 numaralı portu kullandığı anlamına gelir. Mobil bağlantıyı aynı anda yalnızca bir dsh çalıştırabilir.
|
|
123
136
|
- **Mobil bağlantı, Yeniden açılışta sürdür veya İçerik araması "dsh’yi yeniden başlatın" diyor:** eklenti, dsh çalışırken güncellendi (ya da İçerik araması için anahtarı değiştirdiniz). Yeni durum yeniden başlatmadan sonra yüklenir.
|
|
@@ -126,12 +139,13 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
126
139
|
- **Sohbet ve dosyalar soluk görünüyor:** proje bir git deposu değil, o mesajdan önce alınmış bir anlık görüntü yok (mesaj eklentiden daha eski ya da en yeni 50 anlık görüntü onun yerini aldı) veya hiçbir dosya değişmedi.
|
|
127
140
|
- **Silme, bu sohbetin başka bir dsh’de açık olduğunu söylüyor:** aynı dsh ana klasörünü kullanan ikinci bir dsh, sohbetin kilidini tutuyor. O pencereyi ya da dsh’yi kapatın, sonra yeniden silin. Bu sırada sohbet arşivlenmiş olarak kalır.
|
|
128
141
|
- **Bir sohbet yeniden başlatmadan sonra devam etmedi:** dsh kapandığında Yeniden açılışta sürdür kapalıydı, o turu kendiniz durdurdunuz, tur bitmişti (tamamlandı ya da hata verdi), sohbet arşivlenmişti veya 20’den fazla sohbet çalışıyordu (en yeni 20 sohbet devam eder).
|
|
129
|
-
- **Bir yayından hemen sonra yükleme başarısız oluyor:** sürümü ekleyin (`dsh-composer-plus@1.
|
|
142
|
+
- **Bir yayından hemen sonra yükleme başarısız oluyor:** sürümü ekleyin (`dsh-composer-plus@1.11.0`) ve yukarıdaki kurulum notuna bakın.
|
|
130
143
|
|
|
131
144
|
## Sınırlar
|
|
132
145
|
|
|
133
146
|
- Mesajsız Devam et, dsh’nin `agent/pre-step` → `agent/request` yaşam döngüsüne dayanır. dsh’yi yükseltirken uyumluluğu yeniden denetleyin.
|
|
134
|
-
- **Özellik fikirleri**, kartları her sohbet için dsh ya da sayfa yeniden yüklenene kadar bellekte tutar. Sonra **Özellik öner** modele yeniden sorar. Kartlar, tıkladığınız anda dsh’de seçili olan arayüz dilinde gelir. Dili değiştirdikten sonra destede zaten olan kartlar kendi dillerini korur, **Daha fazla fikir** ise yeni dili kullanır. Model kodu değil, yalnızca kısa proje özetini görür. Bu yüzden bir fikir, projede zaten olan bir şeyi tekrarlayabilir: o kartı atlayın. Yeni sohbet yalnızca profilde dsh’nin `/plan` komutu varsa plan modunda çalışır. Yoksa fikir sıradan bir ilk mesaj olarak gider. **Sonra** listesi sohbetin klasör yoluna aittir: aynı klasörü sembolik bağlantı üzerinden açarsanız o yolun ayrı bir listesi olur. Liste, proje başına en çok 50 fikir tutar (daha fazla eklemek için birini kaldırın) ve aynı başlığı yalnızca bir kez tutar. Kartı sürüklemek yalnızca sol ya da sağ seçimini yapar. Kartı saklamak için **↓**, hemen uygulamak için **▶** kullanın. Tekrar eden bir fikir yalnızca başlığından tanınır: model önceki bir fikri yeni bir adla yine önerebilir. O kartı atlayın. Model yalnızca önceki fikirleri döndürürse yeni bir kart görünmez: yeniden tıklayın.
|
|
147
|
+
- **Özellik fikirleri**, kartları her sohbet için dsh ya da sayfa yeniden yüklenene kadar bellekte tutar. Sonra **Özellik öner** modele yeniden sorar. Kartlar, tıkladığınız anda dsh’de seçili olan arayüz dilinde gelir. Dili değiştirdikten sonra destede zaten olan kartlar kendi dillerini korur, **Daha fazla fikir** ise yeni dili kullanır. Model kodu değil, yalnızca kısa proje özetini görür. Bu yüzden bir fikir, projede zaten olan bir şeyi tekrarlayabilir: o kartı atlayın. Yeni sohbet yalnızca profilde dsh’nin `/plan` komutu varsa plan modunda çalışır. Yoksa fikir sıradan bir ilk mesaj olarak gider. **Sonra** listesi sohbetin klasör yoluna aittir: aynı klasörü sembolik bağlantı üzerinden açarsanız o yolun ayrı bir listesi olur. Liste, proje başına en çok 50 fikir tutar (daha fazla eklemek için birini kaldırın) ve aynı başlığı yalnızca bir kez tutar. Kartı sürüklemek yalnızca sol ya da sağ seçimini yapar. Kartı saklamak için **↓**, hemen uygulamak için **▶** kullanın. Tekrar eden bir fikir yalnızca başlığından tanınır: model önceki bir fikri yeni bir adla yine önerebilir. O kartı atlayın. Model yalnızca önceki fikirleri döndürürse yeni bir kart görünmez: yeniden tıklayın. Dar bir odak konusu bunu daha olası yapar: daha geniş bir konu yazın ya da konuyu temizleyin. Odak konusu, her sohbet için dsh ya da sayfa yeniden yüklenene kadar alanda kalır.
|
|
148
|
+
- **Sohbeti Markdown olarak dışa aktar** yalnızca sizin mesajlarınızı ve asistanın metin yanıtlarını içerir. Araç çağrıları ve çıktıları, akıl yürütme metni, görseller (onların yerinde bir `[image]` satırı olur), gizli bağlam ve Tur geri alma ya da dsh-rewind-plugin ile çıkarılan mesajlar dışarıda kalır. Bir turun yanıtları tek bir bölümde birleşir. Tek bir dışa aktarmaya en çok yaklaşık 4 milyon karakter girer. Daha uzun bir sohbette dışa aktarılan metin, sohbetin ilk kısmını ve bir notu içerir.
|
|
135
149
|
- **Yeniden açılışta sürdür** turu sürdürür; turu baştan oynatmaz. Çıkış anında çalışan bir araç çağrısı, dsh’nin “sonuç bilinmiyor” sonucuyla biter. Modele bitmiş işi tekrarlamaması söylenir. Yine de iki kez çalıştırılması güvenli olmayan bir komut yeniden çalışabilir. Açık olan alt ajanlar, onaylar ve sorular geri yüklenmez: bunların üst sohbeti devam eder ve yeniden sorar. Bir açılışta en çok 20 sohbet devam eder.
|
|
136
150
|
|
|
137
151
|
- **İçerik araması** dsh’nin kendi aramasıdır, bu yüzden dsh’nin sınırlarına sahiptir. Yalnızca kullanıcı ve asistan mesajlarında arar: araç çıktısında (komutlar, dosya içerikleri, sonuçlar) ve akıl yürütme metninde aramaz. Kullanıcı, asistan veya araç mesajları için bir filtresi yoktur. Sözcüklerin parçalarını değil, tamamını eşleştirir (`deploy`, `deployment` sözcüğünü bulmaz). Aksanlı harfler aksansız hâlleriyle de eşleşir (`seker`, `şeker` sözcüğünü bulur). Her sohbet için bir satır gösterir; satırda dsh’nin 240 karakterlik alıntısı vardır. En çok 20 satır gösterir.
|
|
@@ -139,7 +153,7 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
139
153
|
- **İçerik araması** yalnızca dsh yeniden başladıktan sonra geçerli olur. Aynı dsh ana klasörünü kullanan her dsh, aynı dizin dosyasını paylaşır: böyle dsh’lerden aynı anda yalnızca birini çalıştırın (dsh her dizin dosyası için tek bir sahibe izin verir).
|
|
140
154
|
- **Tur geri alma**, dosyaları yalnızca bir git deposunda ve yalnızca sohbetin klasöründe geri koyar. Her sohbet için en yeni 50 anlık görüntüyü tutar. Yok sayılan dosyalar (`.gitignore`, `info/exclude`, genel ignore dosyanız), boş klasörler, sembolik bağlantılar ve alt modüller geri konmaz. Anlık görüntü alındığında yok sayılan bir dosya, tur ignore kurallarını değiştirmiş olsa bile hiçbir zaman silinmez. git’in okuyamadığı bir dosya anlık görüntüye alınmaz. Her mesajınız, sohbetin klasörü için ayrı depoya bir `git add --all` çalıştırır. İzlenmeyen çok dosya içeren çok büyük bir klasörde bu birkaç saniye sürebilir ve sonraki araç çağrısı bunu bekler (en çok 10 sn; sonra anlık görüntü arka planda tamamlanır). Deponuzdaki `git gc`, eski bir anlık görüntünün gerektirdiği bir nesneyi silerse, o dosya geri konmayanlar arasında listelenir. Mesaj alanına yalnızca mesajın metni geri gelir: görsellerini veya dosyalarını yeniden ekleyin. Alt ajan sohbetlerinde ↶ yoktur (bir alt ajanın dosya değişiklikleri, onu başlatan sohbetin değişiklikleri sayılır). Dışa aktarılan sohbette (`/export`) geri çekilen mesajlar yine de bulunur. Sohbetin bir kısmını tek bir gizli işaretçiyle geri çekme fikri, SiriLee’nin [dsh-rewind-plugin](https://github.com/SiriLee/dsh-rewind) eklentisinden (MIT) gelir. Composer Plus bu eklentiden hiç kod kullanmaz.
|
|
141
155
|
- **Sohbeti sil** için dsh’nin arşivleme özelliği gerekir (dsh 0.2.0 ve sonrası). 15 sn içinde durmayan ya da başka bir dsh’nin tuttuğu bir sohbet (veya alt ajan sohbetlerinden biri) arşivlenmiş olarak kalır ve hiçbir şey taşınmaz. macOS dışındaki sistemlerde çöp klasörü, sohbet geçmişiyle aynı diskte olmalıdır. Sildiğiniz açık bir sohbet, dsh yeniden başlayana kadar dsh’nin belleğinde arşivlenmiş ve gizli olarak kalır. Çöp Sepeti’ni kendiniz boşaltın; dsh bunu yapmaz.
|
|
142
|
-
- dsh’nin kuyruğunda `move` işlemi yoktur. Bu yüzden
|
|
156
|
+
- dsh’nin kuyruğunda `move` işlemi yoktur. Bu yüzden eklentinin Host tarafı, sıradaki mesajın kendisini dsh’nin kuyruğunda taşır (tek bir değişiklik, aynı mesaj). Görsel veya dosya içeren mesajlar da taşınır. Yalnızca kendi mesajlarınız taşınır: kuyruktaki bir hedef turu veya bir soruya verilen yanıt yerinde kalır. Siz sürüklerken bir mesajın gönderimi başlarsa hiçbir şey taşınmaz ve bunu bildiren bir uyarı görünür.
|
|
143
157
|
- dsh 0.2.1, yeni sürüm hiçbir dsh ayarını değiştirmiyorsa güncellemeyi hemen yükler. Aksi durumda ve dsh 0.2.0’da güncellemeyi yüklemek için dsh’yi yeniden başlatın. Eklenti dsh’yi sizin yerinize hiçbir zaman yeniden başlatmaz. dsh’nin eklenti yöneticisi olmayan web/CLI profilleri yalnızca yeni sürümü bildirir.
|
|
144
158
|
- **Mesaj alanında odağı koru**, odağı yalnızca bir `/` komutundan veya beceriden sonra geri verir. dsh komutu çözümlerken mesaj alanı birkaç milisaniye salt okunur kalır. Bu sürede basılan tuşlar kaybolur. dsh’nin `/` menüsü hâlâ açıksa `Enter` vurgulanan satırı seçer ve mesajı göndermez.
|
|
145
159
|
- **Mobil bağlantı** yalnızca macOS’ta çalışır (`en0`, `openssl`, `swift` ve `dns-sd` kullanır). Sabit 19390 ve 19391 portlarını kullanır. Bu yüzden her Mac’te aynı anda yalnızca bir dsh bu özelliği çalıştırabilir (her Mac, telefonun Mac listesinde bir girdidir). Telefon yalnızca Tether açıkken ya da arka plana yeni geçmişken bildirim alır (push hizmeti yoktur). iOS uygulaması henüz App Store’da değildir: uygulamayı Xcode ile `tether/ios` klasöründen derleyin.
|
|
@@ -148,6 +162,9 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
148
162
|
- 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.
|
|
149
163
|
- dsh’nin kenar çubuğundaki görünüm seçenekleri menüsünde bir uzantı noktası yoktur. Bu yüzden yakın zamanda aktif proje seçeneği dsh’nin kendi menüsüne eklenir. Bir dsh güncellemesi bu menüyü değiştirirse seçenek görünmez ve tüm projeler görünür kalır. Filtre proje satırlarında çalışır, bu yüzden **Tek listede** görünümü süzülmez. Filtreyi **Çalışma alanı** ile kullanın: **Çalışma alanı ağacı** görünümünde gizlenen bir üst klasör, içindeki etkin projeleri de gizler. **Duruma göre** seçeneğinin de aynı türde bir sınırı vardır: dsh’de sıralama için bir yuva yoktur. Bu yüzden seçenek ve satır sırası dsh’nin menü ve liste yapısına bağlanır.
|
|
150
164
|
- dsh’de proje satırı menüsü veya Çalışma alanları başlığı için de bir yuva yoktur. **Yolu kopyala**, proje satırını dsh’nin satır yapısından bulur. **Tüm projeleri daralt** dsh’nin başlığına yerleşir ve açık her projeyi, proje satırına tıklamakla aynı yolla kapatır. Bir dsh güncellemesi bu yapıyı değiştirirse sağ tıklama tarayıcının menüsünü gösterir ve düğme görünmez.
|
|
165
|
+
- dsh’de yeni sohbetin proje menüsünde de bir uzantı noktası yoktur. Bu yüzden **Projelerde ara** kutusu ve A–Z sırası dsh’nin menü yapısına bağlanır. Bir dsh güncellemesi bu yapıyı değiştirirse menü, dsh’nin çizdiği gibi görünür: kayıtlı sırayla ve arama kutusu olmadan. A–Z sırası yalnızca bir görünümdür. dsh’nin kayıtlı proje sırasını değiştirmez.
|
|
166
|
+
- dsh’de mesaj alanı ipucu için de bir uzantı noktası yoktur. Bu yüzden **Sonraki mesaj tahmini** metni, dsh’nin kendi yer tutucu metninin (`[data-composer-placeholder]`) üstüne yerleşir. Bir dsh güncellemesi bu yapıyı değiştirirse tahmin görünmez. Özellik açıkken biten her tur, kısa bir model çağrısı yapar.
|
|
167
|
+
- **Yazarken tamamla**, metnini dsh’nin kendi mesaj alanı ipucuyla gösterir (dsh’nin eğik çizgi komutlarının parametre ipucu için kullandığı `--dsh-composer-hint` stili). Eğik çizgi komutunda, dosya veya sembol etiketi olan bir mesajda ya da imleç mesajın sonunda değilken çalışmaz. Bir dsh güncellemesi bu stili değiştirirse tamamlama görünmez. Yazarken her duraklamada bir model çağrısı yapılır.
|
|
151
168
|
- Yerleşik destek dsh geliştiricilerinden istendi: kuyruk `move` işlemi için [#773](https://github.com/deepseek-ai/deepseek-harness/discussions/773), Devam et durumu için [#9269](https://github.com/deepseek-ai/deepseek-harness/discussions/9269).
|
|
152
169
|
|
|
153
170
|
## SSS
|
|
@@ -170,6 +187,8 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
170
187
|
|
|
171
188
|
**dsh’den çıkıp yeniden açtığımda çalışan sohbetler devam eder mi?** Kendiliğinden devam etmez: dsh böyle bir turu kesintiye uğradı olarak işaretler ve bekler (bir hedef de `/goal resume` komutunu bekler). **Ayarlar → Composer Plus → Yeniden açılışta sürdür** ayarını açın. Böylece dsh kapandığında çalışan sohbetler, bir sonraki açılışta kendiliğinden devam eder.
|
|
172
189
|
|
|
190
|
+
**Tahmini hangi model yazar?** **Ayarlar → Composer Plus → Sonraki mesaj tahmini → Model** içinden seçtiğiniz model. Bu liste, dsh’nin kendi model listesidir. **dsh varsayılanı**, dsh’nin varsayılan modelini izler. dsh seçilen modeli artık listelemiyorsa tahmin varsayılan modeli kullanır. **Yazarken tamamla** özelliğinin kendi **Model** menüsü vardır: **Sonraki mesaj tahminiyle aynı** (varsayılan) tahminin modelini izler. Başka bir seçim yalnızca tamamlamalarda kullanılır. dsh bu modeli artık listelemiyorsa tamamlamalar tahminin modelini kullanır.
|
|
191
|
+
|
|
173
192
|
**dsh’de sıradaki mesajların sırasını nasıl değiştiririm?** Sıradaki bir mesajın ⠿ tutamacını sürükleyin ya da tutamaca odaklanıp `↑` / `↓` tuşlarına basın.
|
|
174
193
|
|
|
175
194
|
**Otomatik inceleme’nin tek bir sohbette aynı araç için tekrar sormasını nasıl durdururum?** Onay kartında **Bu sohbet boyunca izin ver** düğmesine tıklayın. Bu izin yalnızca o sohbetteki o aracı kapsar. İzni başlıktaki etiketten kaldırın.
|
|
@@ -184,7 +203,7 @@ dsh `0.2.0-rc.2` (masaüstü ve web) ve `0.2.1-rc.2` (web) üzerinde test edildi
|
|
|
184
203
|
|
|
185
204
|
**DeepSeek Harness arayüzünü Türkçe, İspanyolca, Japonca… diline nasıl geçiririm?** Ayarlar → Composer Plus → **Uygulama dili**.
|
|
186
205
|
|
|
187
|
-
**dsh’yi iPhone’umdan nasıl kullanırım?** Tether uygulamasını `tether/ios` klasöründen derleyin (Xcode). **Ayarlar → Composer Plus → Mobil bağlantı (iPhone)** özelliğini açın. Sol alttaki **Mobil bağlantı** düğmesine tıklayın, QR kodunu Tether
|
|
206
|
+
**dsh’yi iPhone’umdan nasıl kullanırım?** Tether uygulamasını `tether/ios` klasöründen derleyin (Xcode). **Ayarlar → Composer Plus → Mobil bağlantı (iPhone)** özelliğini açın. Sol alttaki **Mobil bağlantı** düğmesine tıklayın, QR kodunu tarayın (iPhone’un Kamera uygulaması ya da Tether’deki **Scan code**), **Connect** düğmesine dokunun ve **Approve** düğmesine tıklayın. Evden uzaktayken iki cihazda da Tailscale kullanın.
|
|
188
207
|
|
|
189
208
|
**Masaüstü uygulamasıyla çalışır mı?** Evet: Ayarlar → Eklentiler → **Eklenti ekle** → `dsh-composer-plus`. dsh 0.2.0-rc.2 (masaüstü ve web) ve 0.2.1-rc.2 (web) üzerinde test edildi.
|
|
190
209
|
|
|
@@ -208,8 +227,10 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-keep-focus.mjs /path/to/
|
|
|
208
227
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-mobile-connect.mjs /path/to/dsh/lib/bin.js
|
|
209
228
|
# Resume after restart (fake slow model, real quit and start): a running chat and a goal continue, a stopped chat does not
|
|
210
229
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-resume-restart.mjs /path/to/dsh/lib/bin.js
|
|
211
|
-
# Feature ideas (fake model, made-up project): suggest, drag left, Undo, ✓ starts a new chat in plan mode, ▶ Build now one without, Plan all one for the Later list + its thumbnail
|
|
230
|
+
# Feature ideas (fake model, made-up project): suggest, drag left, Undo, ✓ starts a new chat in plan mode, ▶ Build now one without, Plan all one for the Later list, a focus topic chip, Copy as checklist + its thumbnail
|
|
212
231
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-feature-ideas.mjs /path/to/dsh/lib/bin.js
|
|
232
|
+
# Export chat as Markdown (fake model, made-up project): right-click → Export as Markdown…, copy and save keep the code blocks, switch off + its thumbnail
|
|
233
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-export-markdown.mjs /path/to/dsh/lib/bin.js
|
|
213
234
|
# Content search (fake model, made-up chats): a message-only word finds its chat with the snippet, switch off + restart = titles only + its thumbnail
|
|
214
235
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-content-search.mjs /path/to/dsh/lib/bin.js
|
|
215
236
|
# Turn rollback + Delete chat (fake model, made-up git project): bash edit → ↶ Chat and files → files back, .git unchanged; Delete… → Trash + its thumbnails
|
package/README.vi.md
CHANGED
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
|
|
9
9
|
Đây là bản dịch. Phiên bản tham chiếu là tệp [README.md](README.md) bằng tiếng Anh.
|
|
10
10
|
|
|
11
|
-
Các tính năng tiện ích kiểu Codex cho ứng dụng desktop và giao diện web của [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh): bảng Thay đổi, thẻ ý tưởng tính năng có thể vuốt, tìm kiếm trên thanh bên theo nội dung tin nhắn, hoàn tác lượt kèm khôi phục tệp, xóa cuộc trò chuyện vào Thùng rác, tên dự án bên dưới khung soạn thảo, trạng thái dự án trên thanh bên, lịch sử nhập, phím tắt chế độ kế hoạch, Tiếp tục bằng một cú nhấp, tiếp tục các cuộc trò chuyện đang chạy sau khi khởi động lại, kéo thả trong hàng đợi, liên kết đến phiên, quyền Đánh giá tự động theo từng cuộc trò chuyện, thông báo nền, truy cập từ iPhone bằng ứng dụng Tether và tự động cập nhật.
|
|
11
|
+
Các tính năng tiện ích kiểu Codex cho ứng dụng desktop và giao diện web của [DeepSeek Harness](https://github.com/deepseek-ai/deepseek-harness) (dsh): bảng Thay đổi, thẻ ý tưởng tính năng có thể vuốt, tìm kiếm trên thanh bên theo nội dung tin nhắn, hoàn tác lượt kèm khôi phục tệp, xóa cuộc trò chuyện vào Thùng rác, tên dự án bên dưới khung soạn thảo, trạng thái dự án trên thanh bên, lịch sử nhập, phím tắt chế độ kế hoạch, Tiếp tục bằng một cú nhấp, tiếp tục các cuộc trò chuyện đang chạy sau khi khởi động lại, kéo thả trong hàng đợi, liên kết đến phiên, xuất cuộc trò chuyện dạng Markdown, quyền Đánh giá tự động theo từng cuộc trò chuyện, thông báo nền, truy cập từ iPhone bằng ứng dụng Tether và tự động cập nhật.
|
|
12
12
|
|
|
13
|
-
**Tóm tắt trong một dòng:** một plugin duy nhất cho DeepSeek Harness (npm `dsh-composer-plus`, hiện với tên **Composer Plus** trong Cài đặt → Plugin). Plugin thêm: bảng Thay đổi cho git, thẻ ý tưởng tính năng kiểu Tinder, tìm kiếm trên thanh bên có tìm cả từ trong tin nhắn, ↶ hoàn tác lượt (chỉ cuộc trò chuyện, hoặc cả cuộc trò chuyện và tệp), Xóa cuộc trò chuyện, tên dự án bên dưới khung soạn thảo, lịch sử nhập bằng ↑/↓, bật/tắt `/plan` bằng Shift+Tab, ▶ Tiếp tục bằng một cú nhấp, Tiếp tục sau khi khởi động lại, kéo thả để sắp xếp lại hàng đợi, Sao chép liên kết phiên, “Cho phép trong cuộc trò chuyện này” cho Đánh giá tự động, thông báo nền, truy cập từ iPhone (Kết nối di động, ứng dụng Tether), 11 ngôn ngữ giao diện bổ sung và tự động cập nhật.
|
|
13
|
+
**Tóm tắt trong một dòng:** một plugin duy nhất cho DeepSeek Harness (npm `dsh-composer-plus`, hiện với tên **Composer Plus** trong Cài đặt → Plugin). Plugin thêm: bảng Thay đổi cho git, thẻ ý tưởng tính năng kiểu Tinder, tìm kiếm trên thanh bên có tìm cả từ trong tin nhắn, ↶ hoàn tác lượt (chỉ cuộc trò chuyện, hoặc cả cuộc trò chuyện và tệp), Xóa cuộc trò chuyện, tên dự án bên dưới khung soạn thảo, lịch sử nhập bằng ↑/↓, bật/tắt `/plan` bằng Shift+Tab, ▶ Tiếp tục bằng một cú nhấp, Tiếp tục sau khi khởi động lại, kéo thả để sắp xếp lại hàng đợi, Sao chép liên kết phiên, Xuất dạng Markdown, “Cho phép trong cuộc trò chuyện này” cho Đánh giá tự động, thông báo nền, truy cập từ iPhone (Kết nối di động, ứng dụng Tether), 11 ngôn ngữ giao diện bổ sung và tự động cập nhật.
|
|
14
14
|
|
|
15
15
|
<p align="center"><img src="docs/images/hero.webp" width="820" alt="DeepSeek Harness với Composer Plus: dự án đang chạy hiện biểu tượng xoay trên thanh bên và Bảng thay đổi hiện một git diff"></p>
|
|
16
16
|
|
|
17
|
-
Đây là plugin cộng đồng, không chính thức. Lệnh gọi mạng duy nhất là việc kiểm tra cập nhật (GitHub releases và npm registry). Tắt **Tự động cập nhật** để dừng các lệnh gọi này khi khởi động. **Ý tưởng tính năng** chỉ gọi mô hình của chính cuộc trò chuyện khi bạn nhấp **Đề xuất tính năng**. **Kết nối di động** (mặc định tắt) chỉ nhận kết nối iPhone từ mạng cục bộ hoặc tailnet của bạn sau khi bạn bật tính năng này.
|
|
17
|
+
Đây là plugin cộng đồng, không chính thức. Lệnh gọi mạng duy nhất là việc kiểm tra cập nhật (GitHub releases và npm registry). Tắt **Tự động cập nhật** để dừng các lệnh gọi này khi khởi động. **Ý tưởng tính năng** chỉ gọi mô hình của chính cuộc trò chuyện khi bạn nhấp **Đề xuất tính năng**. **Dự đoán tin nhắn tiếp theo** (mặc định bật) gọi mô hình đã chọn trong Cài đặt (mô hình mặc định của dsh, trừ khi bạn chọn mô hình khác) một lần sau mỗi lượt đã xong, không cần nhấp. Tắt tính năng này trong **Cài đặt → Composer Plus** để dừng các lệnh gọi này. **Hoàn thành khi gõ** (mặc định tắt) gọi mô hình đã chọn cho tính năng này (mặc định là mô hình của dự đoán) mỗi lần bạn dừng gõ, sau khi bạn bật tính năng này. **Kết nối di động** (mặc định tắt) chỉ nhận kết nối iPhone từ mạng cục bộ hoặc tailnet của bạn sau khi bạn bật tính năng này.
|
|
18
18
|
|
|
19
19
|
## Cách cài đặt
|
|
20
20
|
|
|
@@ -29,14 +29,14 @@ 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.11.0`.
|
|
33
33
|
|
|
34
34
|
## Tính năng
|
|
35
35
|
|
|
36
36
|
| Tính năng | Cách dùng | Ảnh chụp màn hình |
|
|
37
37
|
|---|---|---|
|
|
38
38
|
| **Bảng thay đổi** | Thanh bên phải → `+` → **Thay đổi**. Chọn **Chưa commit**, **Chưa stage**, **Đã stage** hoặc **Branch** để xem các tệp đã thay đổi kèm số dòng `+/-`. Nhấp vào một tệp để xem diff của tệp đó. **Lượt gần nhất** mở trang xem lại của chính dsh cho lượt mới nhất. | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="Ảnh chụp màn hình Bảng thay đổi"></a> |
|
|
39
|
-
| **Ý tưởng tính năng** | Thanh bên phải → `+` → **Ý tưởng tính năng** → **Đề xuất tính năng**. Mô hình của chính cuộc trò chuyện đọc bản tóm tắt ngắn về dự án của cuộc trò chuyện (các tệp ở cấp cao nhất, phần đầu của README và tệp manifest, 15 commit gần nhất). Sau đó mô hình đề xuất tối đa 8 tính năng, hiện thành một chồng thẻ bằng ngôn ngữ giao diện của dsh. Vuốt thẻ sang phải (hoặc nhấp **✓**, hoặc nhấn `→`; trong mọi trường hợp, thẻ bay về phía tương ứng) để bắt đầu một cuộc trò chuyện mới trong cùng dự án. Cuộc trò chuyện này bắt đầu ở chế độ kế hoạch, với ý tưởng làm yêu cầu, nên không có gì thay đổi trước khi bạn phê duyệt kế hoạch. Để bỏ qua kế hoạch, nhấp **▶ Xây dựng ngay** (hoặc nhấn `↑`; thẻ bay lên trên): cuộc trò chuyện mới bắt đầu ngay với ý tưởng làm yêu cầu bình thường, và mô hình thực hiện thay đổi rồi chạy các bước kiểm tra (phê duyệt vẫn áp dụng như thường lệ). Vuốt sang trái (hoặc **✕**, hoặc `←`) để bỏ qua. **Hoàn tác** (hoặc `Z`) đưa thẻ đã bỏ qua trở lại. Nhấp **↓** (hoặc nhấn `↓`) để lưu một ý tưởng hay để làm sau. Ý tưởng đi vào danh sách **Để sau** của dự án. Mọi cuộc trò chuyện trong cùng thư mục dự án đều hiện danh sách này (kể cả sau khi khởi động lại). **Để sau (N)** mở danh sách. **Lập kế hoạch** bắt đầu cùng kiểu cuộc trò chuyện ở chế độ kế hoạch cho ý tưởng đó, còn **Xây dựng ngay** bắt đầu cuộc trò chuyện không có kế hoạch; cả hai đều gỡ ý tưởng khỏi danh sách. **Lập kế hoạch tất cả (N)** bắt đầu một cuộc trò chuyện duy nhất ở chế độ kế hoạch cho mọi ý tưởng trong danh sách, nên các phần chung chỉ cần lập kế hoạch một lần. **Xóa khỏi danh sách** xóa ý tưởng. **Thêm ý tưởng** thêm thẻ mới. Trong một dự án, ý tưởng không được đề xuất hai lần: mọi ý tưởng đã đề xuất (đã bỏ qua, đã lưu hoặc đã bắt đầu) đều vào **Lịch sử** của dự án, mô hình được dặn không đề xuất lại những ý tưởng đó, và tiêu đề lặp lại sẽ bị loại bỏ. **Lịch sử** liệt kê chúng với nhãn **Đã bắt đầu** hoặc **Đã đề xuất**; **Quên** (hoặc **Quên tất cả**) cho phép một ý tưởng xuất hiện lại; ý tưởng vẫn còn trong danh sách **Để sau** sẽ không được đề xuất cho đến khi bạn xóa nó khỏi đó. Mô hình chỉ chạy khi bạn nhấp. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Ảnh chụp màn hình Ý tưởng tính năng"></a> |
|
|
39
|
+
| **Ý tưởng tính năng** | Thanh bên phải → `+` → **Ý tưởng tính năng** → **Đề xuất tính năng**. Mô hình của chính cuộc trò chuyện đọc bản tóm tắt ngắn về dự án của cuộc trò chuyện (các tệp ở cấp cao nhất, phần đầu của README và tệp manifest, 15 commit gần nhất). Sau đó mô hình đề xuất tối đa 8 tính năng, hiện thành một chồng thẻ bằng ngôn ngữ giao diện của dsh. Vuốt thẻ sang phải (hoặc nhấp **✓**, hoặc nhấn `→`; trong mọi trường hợp, thẻ bay về phía tương ứng) để bắt đầu một cuộc trò chuyện mới trong cùng dự án. Cuộc trò chuyện này bắt đầu ở chế độ kế hoạch, với ý tưởng làm yêu cầu, nên không có gì thay đổi trước khi bạn phê duyệt kế hoạch. Để bỏ qua kế hoạch, nhấp **▶ Xây dựng ngay** (hoặc nhấn `↑`; thẻ bay lên trên): cuộc trò chuyện mới bắt đầu ngay với ý tưởng làm yêu cầu bình thường, và mô hình thực hiện thay đổi rồi chạy các bước kiểm tra (phê duyệt vẫn áp dụng như thường lệ). Vuốt sang trái (hoặc **✕**, hoặc `←`) để bỏ qua. **Hoàn tác** (hoặc `Z`) đưa thẻ đã bỏ qua trở lại. Nhấp **↓** (hoặc nhấn `↓`) để lưu một ý tưởng hay để làm sau. Ý tưởng đi vào danh sách **Để sau** của dự án. Mọi cuộc trò chuyện trong cùng thư mục dự án đều hiện danh sách này (kể cả sau khi khởi động lại). **Để sau (N)** mở danh sách. **Lập kế hoạch** bắt đầu cùng kiểu cuộc trò chuyện ở chế độ kế hoạch cho ý tưởng đó, còn **Xây dựng ngay** bắt đầu cuộc trò chuyện không có kế hoạch; cả hai đều gỡ ý tưởng khỏi danh sách. **Lập kế hoạch tất cả (N)** bắt đầu một cuộc trò chuyện duy nhất ở chế độ kế hoạch cho mọi ý tưởng trong danh sách, nên các phần chung chỉ cần lập kế hoạch một lần. **Xóa khỏi danh sách** xóa ý tưởng. **Sao chép dạng danh sách kiểm tra** sao chép toàn bộ danh sách vào bộ nhớ tạm dưới dạng danh sách kiểm tra Markdown (`- [ ] Title — Summary`, mỗi ý tưởng một dòng) để dùng trong trình theo dõi vấn đề hoặc tệp TODO; tính năng này không gửi gì qua mạng. **Thêm ý tưởng** thêm thẻ mới. Để chỉ nhận ý tưởng về một lĩnh vực, hãy nhập một **Chủ đề trọng tâm** ngắn vào ô bên cạnh **Đề xuất tính năng** (tối đa 80 ký tự; `Enter` cũng đề xuất), hoặc nhấp một trong các chủ đề cố định bên dưới ô: **Hiệu năng**, **Trợ năng**, **Kiểm thử**, **Bảo mật**, **Dễ dùng** hoặc **Tài liệu** (nhấp lại để xóa chủ đề). Khi đó, mô hình chỉ đề xuất các tính năng về chủ đề đó; ô trống nghĩa là tính năng bất kỳ. Trong một dự án, ý tưởng không được đề xuất hai lần: mọi ý tưởng đã đề xuất (đã bỏ qua, đã lưu hoặc đã bắt đầu) đều vào **Lịch sử** của dự án, mô hình được dặn không đề xuất lại những ý tưởng đó, và tiêu đề lặp lại sẽ bị loại bỏ. **Lịch sử** liệt kê chúng với nhãn **Đã bắt đầu** hoặc **Đã đề xuất**; **Quên** (hoặc **Quên tất cả**) cho phép một ý tưởng xuất hiện lại; ý tưởng vẫn còn trong danh sách **Để sau** sẽ không được đề xuất cho đến khi bạn xóa nó khỏi đó. Mô hình chỉ chạy khi bạn nhấp. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Ảnh chụp màn hình Ý tưởng tính năng"></a> |
|
|
40
40
|
| **Tìm trong nội dung** | Ô tìm kiếm có sẵn trên thanh bên của dsh (kính lúp cạnh **Không gian làm việc**; `Cmd+K` trong ứng dụng desktop, `Cmd+Alt+K` trong trình duyệt) cũng tìm cuộc trò chuyện theo các từ trong tin nhắn của bạn và trong câu trả lời, không chỉ theo tiêu đề. Đoạn văn khớp hiện bên dưới cuộc trò chuyện. dsh đã có sẵn tìm kiếm này nhưng để tắt. Tính năng này bật nó lên, với một tệp chỉ mục tìm kiếm trên máy tính của bạn. Chỉ mục được tạo ở lần tìm đầu tiên sau khi khởi động (khoảng 15 giây cho 250 cuộc trò chuyện, xem Giới hạn) và được giữ lại cho các lần khởi động sau. Mặc định bật. Thay đổi có hiệu lực sau khi bạn khởi động lại dsh. | <a href="assets/features/contentSearch.webp"><img src="assets/features/contentSearch.webp" width="160" alt="Ảnh chụp màn hình Tìm trong nội dung"></a> |
|
|
41
41
|
| **Hoàn tác lượt** | Di chuột lên một tin nhắn của bạn và nhấp **↶** (cạnh nút Sao chép). **Chỉ cuộc trò chuyện** đưa tin nhắn đó và mọi thứ sau nó (câu trả lời, lệnh gọi công cụ) ra khỏi cuộc trò chuyện và ra khỏi ngữ cảnh của mô hình. Tin nhắn trở lại khung soạn thảo: bạn sửa rồi gửi lại. **Cuộc trò chuyện và tệp** trước tiên liệt kê các tệp của dự án đã thay đổi kể từ tin nhắn đó, rồi đưa cả các tệp này về trạng thái cũ. Việc này gồm cả thay đổi do lệnh (`bash`) tạo ra, không chỉ thay đổi từ công cụ sửa tệp của dsh. Nếu một lượt đang chạy, lượt đó dừng trước. Nhật ký cuộc trò chuyện không bao giờ bị ghi lại: một dấu ẩn duy nhất che phần đã rút lại, giống cách lệnh `/compact` của dsh ẩn các tin nhắn cũ. Khi [dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) đã được cài, plugin đó làm việc này và Composer Plus không hiện nút thứ hai. | <a href="assets/features/turnRollback.webp"><img src="assets/features/turnRollback.webp" width="160" alt="Ảnh chụp màn hình Hoàn tác lượt"></a> |
|
|
42
42
|
| **Xóa cuộc trò chuyện** | Thanh bên → menu **…** của một cuộc trò chuyện (hoặc nhấp chuột phải) → **Xóa…** → **Xóa**. Bản thân dsh chỉ có thể lưu trữ. Cuộc trò chuyện dừng lại (lượt đang chạy, tác vụ nền, subagent và tác vụ tự động của nó cũng dừng, giống như khi dsh lưu trữ). Lịch sử đã lưu, cùng các cuộc trò chuyện subagent, được chuyển vào Thùng rác của macOS (trên hệ thống khác: `$DSH_HOME/trash`). Để lấy lại, hãy đưa thư mục về chỗ cũ và khởi động lại dsh: cuộc trò chuyện hiện trong chế độ xem **Chỉ mục đã lưu trữ** của thanh bên. | <a href="assets/features/deleteChat.webp"><img src="assets/features/deleteChat.webp" width="160" alt="Ảnh chụp màn hình Xóa cuộc trò chuyện"></a> |
|
|
@@ -44,11 +44,15 @@ Sau đó khởi động lại dsh. (CLI không cài được vào profile deskto
|
|
|
44
44
|
| **Lịch sử nhập** | Trong khung soạn thảo trống, nhấn `↑` / `↓` để duyệt qua các tin nhắn bạn đã gửi, giống như trong terminal. | <a href="assets/features/inputHistory.webp"><img src="assets/features/inputHistory.webp" width="160" alt="Ảnh chụp màn hình Lịch sử nhập"></a> |
|
|
45
45
|
| **Phím tắt chế độ kế hoạch** | `Shift+Tab` thêm `/plan ` vào đầu bản nháp (nhấn lần nữa để xóa). Nếu cuộc trò chuyện đã ở chế độ kế hoạch, `Shift+Tab` thoát chế độ này. | <a href="assets/features/planToggle.webp"><img src="assets/features/planToggle.webp" width="160" alt="Ảnh chụp màn hình Phím tắt chế độ kế hoạch"></a> |
|
|
46
46
|
| **Giữ con trỏ trong khung soạn thảo** | Sau khi bạn gửi một lệnh `/` hoặc một skill, con trỏ vẫn ở trong khung soạn thảo và bạn có thể gõ tiếp ngay. Việc này cũng áp dụng cho macro bàn phím gõ một lệnh rồi nhấn `Enter`. dsh đặt khung soạn thảo ở chế độ chỉ đọc trong lúc xử lý lệnh, và khi đó trình duyệt bỏ tiêu điểm khỏi khung. Tính năng này trả tiêu điểm lại, trừ khi một menu, một hộp thoại hoặc một ô khác đang giữ tiêu điểm. | <a href="assets/features/keepFocus.webp"><img src="assets/features/keepFocus.webp" width="160" alt="Ảnh chụp màn hình Giữ con trỏ trong khung soạn thảo"></a> |
|
|
47
|
-
| **Tiếp tục bằng một cú nhấp** | Sau một lượt đã dừng, thất bại hoặc bị cắt ngang, khung soạn thảo trống hiện **▶**. Một cú nhấp sẽ tiếp tục từ cuộc hội thoại hiện có, không cần gõ gì vào ô nhập và không thêm tin nhắn hiển thị vào cuộc trò chuyện. (Mô hình nhận một ghi chú ẩn ngắn “tiếp tục từ chỗ đã dừng”, vì một số nhà cung cấp như Claude từ chối yêu cầu kết thúc bằng câu trả lời của trợ lý.) Lượt đã hoàn tất vẫn giữ nút Gửi thông thường. | <a href="assets/features/continueButton.webp"><img src="assets/features/continueButton.webp" width="160" alt="Ảnh chụp màn hình Tiếp tục bằng một cú nhấp"></a> |
|
|
47
|
+
| **Tiếp tục bằng một cú nhấp** | Sau một lượt đã dừng, thất bại hoặc bị cắt ngang, khung soạn thảo trống hiện **▶**. Một cú nhấp sẽ tiếp tục từ cuộc hội thoại hiện có, không cần gõ gì vào ô nhập và không thêm tin nhắn hiển thị vào cuộc trò chuyện. (Mô hình nhận một ghi chú ẩn ngắn “tiếp tục từ chỗ đã dừng”, vì một số nhà cung cấp như Claude từ chối yêu cầu kết thúc bằng câu trả lời của trợ lý.) Tin nhắn trong hàng đợi vẫn ở đó: ▶ chỉ tiếp tục tác vụ đã dừng, sau đó hàng đợi mới chạy. Lượt đã hoàn tất vẫn giữ nút Gửi thông thường. | <a href="assets/features/continueButton.webp"><img src="assets/features/continueButton.webp" width="160" alt="Ảnh chụp màn hình Tiếp tục bằng một cú nhấp"></a> |
|
|
48
48
|
| **Tiếp tục sau khi khởi động lại** | Mặc định tắt: hãy bật trong **Cài đặt → Composer Plus**. Nếu bạn thoát dsh (hoặc dsh bị đóng) khi một cuộc trò chuyện đang làm việc, cuộc trò chuyện đó tự tiếp tục khi bạn mở lại dsh, với cùng ghi chú ẩn như Tiếp tục bằng một cú nhấp. Nếu một vòng mục tiêu (`/goal`) đang chạy, mục tiêu tiếp tục với vòng kế tiếp (mỗi lần khởi động, dsh tạm dừng các mục tiêu cho đến khi bạn tiếp tục chúng). Các cuộc trò chuyện bạn đã dừng, đã xong hoặc đã thất bại không tiếp tục. Bản thân dsh không có cài đặt cho việc này: dsh chỉ đánh dấu lượt như vậy là bị ngắt. | <a href="assets/features/resumeAfterRestart.webp"><img src="assets/features/resumeAfterRestart.webp" width="160" alt="Ảnh chụp màn hình Tiếp tục sau khi khởi động lại"></a> |
|
|
49
49
|
| **Kéo thả hàng đợi** | Tin nhắn trong hàng đợi có một tay nắm (⠿). Kéo để sắp xếp lại, hoặc đặt tiêu điểm vào tay nắm rồi nhấn `↑` / `↓`. `Esc` hủy thao tác. | <a href="assets/features/queueReorder.webp"><img src="assets/features/queueReorder.webp" width="160" alt="Ảnh chụp màn hình Kéo thả hàng đợi"></a> |
|
|
50
50
|
| **Sao chép liên kết phiên** | Nhấp chuột phải vào một cuộc trò chuyện trên thanh bên → **Sao chép liên kết phiên**. Dán liên kết `dsh-session:…` vào một cuộc trò chuyện khác để đính kèm cuộc trò chuyện đó làm ngữ cảnh chỉ đọc. dsh 0.2.1 có mục **Sao chép ID phiên** riêng, mục này chỉ sao chép ID thuần; mục của plugin nằm ngay sau nó. | <a href="assets/features/copyDeeplink.webp"><img src="assets/features/copyDeeplink.webp" width="160" alt="Ảnh chụp màn hình Sao chép liên kết phiên"></a> |
|
|
51
|
+
| **Xuất cuộc trò chuyện dạng Markdown** | Nhấp chuột phải vào một cuộc trò chuyện trên thanh bên (hoặc mở menu **…** của nó) → **Xuất dạng Markdown…**. Hộp thoại cho biết cuộc trò chuyện có bao nhiêu tin nhắn. **Sao chép vào bộ nhớ tạm** sao chép cuộc trò chuyện dưới dạng Markdown, còn **Lưu tệp .md** lưu nó thành `<chat title>.md` qua tính năng tải xuống của trình duyệt (dsh desktop: vào thư mục Tải về hoặc qua hộp thoại lưu, tùy theo cài đặt hệ thống của bạn). Tệp có tiêu đề cuộc trò chuyện, tên dự án và ngày, sau đó là một phần `## Bạn` hoặc `## Trợ lý` cho mỗi tin nhắn. Các khối mã được giữ nguyên; khối mã mà một tin nhắn để mở sẽ được đóng lại. | <a href="assets/features/exportMarkdown.webp"><img src="assets/features/exportMarkdown.webp" width="160" alt="Ảnh chụp màn hình Xuất cuộc trò chuyện dạng Markdown"></a> |
|
|
51
52
|
| **Sao chép đường dẫn dự án** | Nhấp chuột phải vào một dự án trên thanh bên → **Sao chép đường dẫn** để sao chép đường dẫn đầy đủ của thư mục dự án. | <a href="assets/features/copyProjectPath.webp"><img src="assets/features/copyProjectPath.webp" width="160" alt="Ảnh chụp màn hình Sao chép đường dẫn dự án"></a> |
|
|
53
|
+
| **Tìm dự án trong cuộc trò chuyện mới** | 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> |
|
|
54
|
+
| **Dự đoán tin nhắn tiếp theo** | 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> |
|
|
55
|
+
| **Hoàn thành khi gõ** | 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. 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> |
|
|
52
56
|
| **Cho phép trong cuộc trò chuyện này** | 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ố. Một nhãn nhỏ ở phần đầu liệt kê các quyền đã cấp 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> |
|
|
53
57
|
| **Trạng thái dự án** | 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> |
|
|
54
58
|
| **Ưu tiên dự án đang hoạt động** | 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> |
|
|
@@ -57,14 +61,14 @@ Sau đó khởi động lại dsh. (CLI không cài được vào profile deskto
|
|
|
57
61
|
| **Sắp xếp theo trạng thái** | Thanh bên → tùy chọn hiển thị → **Sắp xếp theo** → **Theo trạng thái** (cùng với **Trong một danh sách**). Các cuộc trò chuyện đã xong đứng đầu (chấm “xong” của dsh; lượt kết thúc do lỗi cũng có chấm này), sau đó là cuộc trò chuyện đang chạy hoặc đang chờ, rồi đến cuộc trò chuyện có tự động hóa đang hoạt động (Tác vụ tự động), cuối cùng là phần còn lại theo thứ tự của dsh. Khi bạn mở một cuộc trò chuyện đã xong, nó chuyển xuống dưới. Chỉ chế độ xem thay đổi: chọn **Thủ công** hoặc **Cập nhật gần nhất** để quay lại. | <a href="assets/features/statusOrder.webp"><img src="assets/features/statusOrder.webp" width="160" alt="Ảnh chụp màn hình Sắp xếp theo trạng thái"></a> |
|
|
58
62
|
| **Thông báo nền** | Khi dsh chạy nền, bạn nhận thông báo khi một lượt kết thúc (dòng đầu tiên của câu trả lời), hoặc khi một cuộc trò chuyện thật sự chờ bạn: một phê duyệt (tên công cụ), một câu trả lời (câu hỏi) hoặc một lần xem xét kế hoạch. Yêu cầu phải vẫn còn mở sau 1,5 giây, nên các phê duyệt được trả lời tự động (quyền của Đánh giá tự động, plugin khác) không gây thông báo. Thông báo bị thu hồi ngay khi yêu cầu của nó được trả lời. Huy hiệu trên Dock/thanh tác vụ đếm số cuộc trò chuyện đang chờ. Nhấp vào thông báo sẽ mở cuộc trò chuyện đó. | <a href="assets/features/notifications.webp"><img src="assets/features/notifications.webp" width="160" alt="Ảnh chụp màn hình Thông báo nền"></a> |
|
|
59
63
|
| **11 ngôn ngữ giao diện bổ sung** | Cài đặt → Composer Plus → **Ngôn ngữ ứng dụng** chuyển toàn bộ giao diện dsh sang Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt hoặc हिन्दी (xem bên dưới). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="Ảnh chụp màn hình 11 ngôn ngữ giao diện bổ sung"></a> |
|
|
60
|
-
| **Kết nối di động (iPhone)** | Dùng dsh từ iPhone với ứng dụng [Tether](tether/), trong cùng mạng Wi-Fi hoặc qua [Tailscale](https://tailscale.com). Bật tính năng trong **Cài đặt → Composer Plus** (mặc định tắt, vì tính năng này mở một cổng mạng trên máy Mac này). Sau đó nhấp **Kết nối di động** ở góc dưới bên trái thanh bên: quét mã QR trong Tether và nhấp **Approve**. Điện thoại hiện các cuộc trò chuyện của bạn, gửi tin nhắn, trả lời phê duyệt và câu hỏi, và chuyển đổi mô hình và agent. Bạn có thể ghép nối bao nhiêu máy Mac tùy ý: tên máy Mac ở góc trên bên trái ứng dụng dùng để chuyển giữa các máy. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Ảnh chụp màn hình Kết nối di động"></a> |
|
|
64
|
+
| **Kết nối di động (iPhone)** | Dùng dsh từ iPhone với ứng dụng [Tether](tether/), trong cùng mạng Wi-Fi hoặc qua [Tailscale](https://tailscale.com). Bật tính năng trong **Cài đặt → Composer Plus** (mặc định tắt, vì tính năng này mở một cổng mạng trên máy Mac này). Sau đó nhấp **Kết nối di động** ở góc dưới bên trái thanh bên: quét mã QR bằng Camera của iPhone (chạm vào **Open in Tether**) hoặc bằng **Scan code** trong Tether, chạm vào **Connect** và nhấp **Approve**. Hãy cài đặt Tether trước: nếu không có Tether, Camera không thể mở mã này. Điện thoại hiện các cuộc trò chuyện của bạn, gửi tin nhắn, trả lời phê duyệt và câu hỏi, và chuyển đổi mô hình và agent. Bạn có thể ghép nối bao nhiêu máy Mac tùy ý: tên máy Mac ở góc trên bên trái ứng dụng dùng để chuyển giữa các máy. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Ảnh chụp màn hình Kết nối di động"></a> |
|
|
61
65
|
| **Tự động cập nhật** | Khi dsh khởi động, plugin kiểm tra [bản phát hành GitHub mới nhất](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Nếu bản đó mới hơn và đã có trên npm, plugin cài đúng phiên bản đó qua trình quản lý plugin của chính dsh (cùng cách với Cài đặt → Plugin) và thông báo cho bạn. **Khởi động lại dsh** để tải bản mới. **Cài đặt → Composer Plus → Cập nhật Composer Plus** hiện phiên bản và có nút **Kiểm tra cập nhật** / **Cập nhật ngay**. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Ảnh chụp màn hình Tự động cập nhật"></a> |
|
|
62
66
|
|
|
63
67
|
Nút, chú thích khi di chuột, thông báo trong ứng dụng và thông báo hệ thống đều theo ngôn ngữ dsh đã chọn (xem phần Ngôn ngữ ứng dụng bên dưới).
|
|
64
68
|
|
|
65
69
|
## Cài đặt
|
|
66
70
|
|
|
67
|
-
Bạn có thể bật hoặc tắt riêng từng tính năng: dsh **Cài đặt → Composer Plus**. Mỗi dòng có một ảnh chụp màn hình nhỏ: di chuột lên để xem ảnh lớn hơn, nhấp để mở ở kích thước đầy đủ (`Esc` để đóng). Ô **Tìm tính năng** ở đầu trang lọc trang theo tên hoặc mô tả (mọi ngôn ngữ, không phân biệt chữ hoa/thường và dấu); `Esc` xóa nội dung ô. Mỗi dòng có một công tắc và một mô tả ngắn. Thay đổi có hiệu lực ngay, không cần khởi động lại, và được ghi nhớ trên thiết bị đó. Mọi tính năng đều bật theo mặc định, trừ **Kết nối di động
|
|
71
|
+
Bạn có thể bật hoặc tắt riêng từng tính năng: dsh **Cài đặt → Composer Plus**. Mỗi dòng có một ảnh chụp màn hình nhỏ: di chuột lên để xem ảnh lớn hơn, nhấp để mở ở kích thước đầy đủ (`Esc` để đóng). Ô **Tìm tính năng** ở đầu trang lọc trang theo tên hoặc mô tả (mọi ngôn ngữ, không phân biệt chữ hoa/thường và dấu); `Esc` xóa nội dung ô. Mỗi dòng có một công tắc và một mô tả ngắn. Thay đổi có hiệu lực ngay, không cần khởi động lại, và được ghi nhớ trên thiết bị đó. Mọi tính năng đều bật theo mặc định, trừ **Kết nối di động**, **Tiếp tục sau khi khởi động lại** và **Hoàn thành khi gõ**. Host của dsh giữ công tắc của ba tính năng này cùng **Tìm trong nội dung**, **Hoàn tác lượt** và **Dự đoán tin nhắn tiếp theo**, nên các công tắc này áp dụng cho mọi cửa sổ và vẫn còn sau khi khởi động lại. Host cũng giữ lựa chọn **Mô hình** của **Dự đoán tin nhắn tiếp theo** và của **Hoàn thành khi gõ** (mặc định là **Giống dự đoán tin nhắn tiếp theo**). **Tìm trong nội dung** chỉ thay đổi sau khi khởi động lại dsh (dsh đọc cài đặt này lúc khởi động); trước đó, dòng của tính năng hiện **Khởi động lại dsh để áp dụng thay đổi này.**
|
|
68
72
|
|
|
69
73
|
<p align="center"><img src="docs/images/settings.webp" width="720" alt="Cài đặt → Composer Plus: ô tìm tính năng, bộ chọn ngôn ngữ, dòng cập nhật và một công tắc cho mỗi tính năng, kèm ảnh xem trước khi di chuột"></p>
|
|
70
74
|
|
|
@@ -92,6 +96,12 @@ Mỗi gói có 3.143 chuỗi văn bản: mọi văn bản giao diện của dsh
|
|
|
92
96
|
| `↓` | trang Ý tưởng tính năng | lưu thẻ trên cùng vào danh sách Để sau của dự án |
|
|
93
97
|
| `↑` | trang Ý tưởng tính năng | xây dựng thẻ trên cùng ngay, không cần kế hoạch |
|
|
94
98
|
| `Z` | trang Ý tưởng tính năng | khôi phục thẻ vừa bỏ qua |
|
|
99
|
+
| `Enter` | menu dự án của cuộc trò chuyện mới, ô tìm kiếm | chọn kết quả đầu tiên |
|
|
100
|
+
| `↑` / `↓` | menu dự án của cuộc trò chuyện mới | di chuyển qua các dự án đang hiện |
|
|
101
|
+
| `Esc` | menu dự án của cuộc trò chuyện mới, ô tìm kiếm | xóa nội dung tìm kiếm (nhấn lần nữa để đóng menu) |
|
|
102
|
+
| `Tab` | khung soạn thảo trống có dự đoán | đưa dự đoán vào khung soạn thảo |
|
|
103
|
+
| `Tab` | phần hoàn thành màu xám sau con trỏ | thêm phần hoàn thành vào tin nhắn |
|
|
104
|
+
| `Esc` | khung soạn thảo trống có dự đoán | ẩn dự đoán |
|
|
95
105
|
|
|
96
106
|
Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng nó.
|
|
97
107
|
|
|
@@ -108,16 +118,19 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
108
118
|
- **Ý tưởng tính năng:** không có gì chạy cho đến khi bạn nhấp **Đề xuất tính năng**. Khi đó, phần Host chỉ đọc thư mục của chính cuộc trò chuyện (trình duyệt không bao giờ gửi đường dẫn): tên các mục ở cấp cao nhất, 6 kB đầu của README, AGENTS.md và tệp manifest (`package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, …) và `git log --oneline -15`, tổng cộng tối đa 16 kB. Phần Host bỏ qua `.env*`, các tệp khóa và các thư mục như `node_modules`, và chỉ đọc tệp thông thường nằm trong thư mục: symlink trỏ ra ngoài thư mục, FIFO hoặc tệp thiết bị đều bị bỏ qua. Bản tóm tắt này được gửi đến mô hình mà cuộc trò chuyện đang dùng, qua cài đặt nhà cung cấp của chính dsh, dưới dạng một yêu cầu duy nhất; bản tóm tắt không được thêm vào cuộc trò chuyện nào. Không có gì được ghi vào dự án. Ý tưởng được vuốt sang phải bắt đầu một cuộc trò chuyện mới ở chế độ kế hoạch, nên phê duyệt và xem xét kế hoạch vẫn áp dụng như thường lệ. **Xây dựng ngay** bắt đầu cuộc trò chuyện không có chế độ kế hoạch: mô hình có thể thay đổi tệp ngay, với các phê duyệt thường lệ của cuộc trò chuyện và Đánh giá tự động. Các ý tưởng lưu để làm sau (tiêu đề, tóm tắt, lý do, công sức) được lưu cùng đường dẫn thư mục của dự án trong `storages/dsh-composer-plus/later.json` dưới thư mục home của dsh (tệp chỉ chủ sở hữu truy cập được); không có gì đi vào dự án. Lịch sử các ý tưởng đã đề xuất (tiêu đề, tóm tắt, lý do, công sức, ngày, đã bắt đầu hay chưa) được lưu theo cùng cách trong `storages/dsh-composer-plus/idea-history.json`, tối đa 200 cho mỗi dự án (ý tưởng cũ nhất bị xóa trước); các tiêu đề trong đó được gửi tới mô hình cùng lần **Đề xuất tính năng** tiếp theo của dự án đó.
|
|
109
119
|
- **Tìm trong nội dung:** không có mã mới nào tìm trong cuộc trò chuyện của bạn: plugin chỉ bật chỉ mục tin nhắn của chính dsh (SQLite FTS5, `dsh-session-query-sqlite`) và cấp cho chỉ mục một tệp, `$DSH_HOME/cache/composer-plus/session-search.db` (tệp và thư mục chỉ chủ sở hữu truy cập được). Tệp này chứa văn bản tin nhắn của bạn và của trợ lý, nên cần được bảo vệ như nhật ký trò chuyện trong `$DSH_HOME/sessions`. Không có gì rời khỏi máy của bạn. Đây là bản sao mà dsh có thể tạo lại: bạn có thể xóa tệp khi dsh đang đóng. Công tắc nằm trong `$DSH_HOME/storages/dsh-composer-plus/content-search.json`.
|
|
110
120
|
- **Hoàn tác lượt:** trước mỗi tin nhắn của bạn, Host chụp một snapshot git của thư mục cuộc trò chuyện vào kho riêng của nó, `$DSH_HOME/cache/composer-plus/rollback/<chat>.git` (thư mục chỉ chủ sở hữu truy cập được). Kho này chứa bản sao các tệp trong thư mục mà git nhìn thấy (không gồm tệp bị bỏ qua), nên cần được bảo vệ như chính dự án. Host đọc các object trong repository của bạn (không sao chép những gì git đã có) và không bao giờ ghi vào index, `HEAD`, branch, tag, stash hay config của repository. Thay đổi duy nhất git tạo ra ở đó là dấu thời gian mới hơn trên các tệp object được dùng lại (việc này làm `git gc` dọn chúng muộn hơn). Hoàn tác kèm tệp chỉ ghi tệp thông thường bên trong thư mục cuộc trò chuyện; nó bỏ qua symlink, pipe và mọi thứ nằm ngoài thư mục. Không có gì rời khỏi máy của bạn. Bạn có thể xóa kho này khi dsh đang đóng (khi đó hoàn tác chỉ áp dụng cho cuộc trò chuyện, cho đến khi có tin nhắn mới). **Xóa cuộc trò chuyện** cũng xóa kho của cuộc trò chuyện đó. Công tắc nằm trong `$DSH_HOME/storages/dsh-composer-plus/rollback.json`.
|
|
121
|
+
- **Xuất cuộc trò chuyện dạng Markdown:** phần Host chỉ đọc nhật ký riêng của cuộc trò chuyện (chính các tin nhắn mà dsh hiển thị) và đưa chúng cho trang; phần này không đọc tệp nào của dự án và không gửi gì qua mạng. Markdown chỉ đi vào bộ nhớ tạm của bạn hoặc vào tệp mà bạn lưu.
|
|
111
122
|
- **Xóa cuộc trò chuyện:** chuyển các thư mục nhật ký riêng của cuộc trò chuyện (`$DSH_HOME/sessions/<project>/<chat>`) vào Thùng rác. Tính năng không động đến thư mục dự án.
|
|
112
123
|
- **Cho phép trong cuộc trò chuyện này:** các quyền được lưu trong `$DSH_HOME/storages/dsh-composer-plus/grants.json` (chỉ chủ sở hữu có quyền truy cập). Mỗi quyền áp dụng cho **đúng một công cụ trong một cuộc trò chuyện**. Nếu công cụ đó có thể ghi, quyền cũng bao gồm mọi thao tác ghi. Thu hồi quyền từ nhãn ở phần đầu.
|
|
113
124
|
- Đánh giá tự động vẫn chạy ở mọi lệnh gọi; lỗi đánh giá không bao giờ được tự động cho phép.
|
|
114
125
|
- **Kết nối di động:** tắt cho đến khi bạn bật. Khi bật, phần Host chạy gateway Tether: HTTPS trên cổng 19390, chỉ nhận kết nối từ mạng con Wi-Fi và tailnet của bạn (100.64.0.0/10), và một trang ghép nối tại `127.0.0.1:19391` (chỉ máy Mac này). Điện thoại cần một mã dùng một lần từ mã QR (hiệu lực 5 phút) và bạn phải nhấp **Approve** trên máy Mac. Điện thoại ghim (pin) chứng chỉ của gateway. Máy Mac chỉ giữ hash của token của từng điện thoại (30 ngày, được gia hạn khi còn dùng); **Revoke** đóng ngay các kết nối của điện thoại đó. Điện thoại chỉ gọi được một danh sách cho phép gồm các phương thức dsh (cuộc trò chuyện, prompt, tệp đính kèm, lệnh gạch chéo, phê duyệt, câu hỏi, mô hình, agent, mục tiêu), không gọi được cài đặt, thông tin xác thực, trình duyệt tệp hay terminal. Dữ liệu: `$DSH_HOME/storages/dsh-composer-plus/mobile/`. Chi tiết: [tether/README.md](tether/README.md).
|
|
115
126
|
- **Cập nhật:** phần Host hỏi `api.github.com` về bản phát hành mới nhất và hỏi `registry.npmjs.org` về đúng phiên bản đó; không có thông tin nào về bạn hay cuộc trò chuyện của bạn được gửi đi. Việc cài đặt dùng trình quản lý plugin của dsh (`pnpm add dsh-composer-plus@<version>`; khi dsh 0.2.1 từ chối lệnh đó cho một plugin đã cài, dùng `pnpm add https://registry.npmjs.org/dsh-composer-plus/-/dsh-composer-plus-<version>.tgz`, và sau đó profile ghi URL đó làm nguồn của plugin), nên các bước kiểm tra registry, script và khả năng tương thích phiên bản của chính dsh đều được áp dụng. Thẻ tiền phát hành (pre-release) và phiên bản cũ hơn không bao giờ được cài.
|
|
127
|
+
- **Dự đoán tin nhắn tiếp theo:** mặc định bật. Tắt tính năng này trong **Cài đặt → Composer Plus** để dừng các lệnh gọi mô hình này. Sau mỗi lượt đã xong, phần Host gửi các tin nhắn của chính bạn trong cuộc trò chuyện và các câu trả lời dạng văn bản của tác tử (không có đầu ra công cụ, ngữ cảnh ẩn hay phần suy luận), tối đa khoảng 6.000 ký tự (phần mới nhất), đến mô hình đã chọn (mô hình mặc định của dsh, trừ khi bạn chọn mô hình khác). Nội dung này đi qua cài đặt nhà cung cấp của chính dsh, dưới dạng một yêu cầu duy nhất. Không có gì được lưu vào cuộc trò chuyện: dự đoán không được thêm vào lịch sử trò chuyện. Công tắc và mô hình đã chọn nằm trong `$DSH_HOME/storages/dsh-composer-plus/predict.json` (tệp chỉ chủ sở hữu truy cập được).
|
|
128
|
+
- **Hoàn thành khi gõ:** tắt cho đến khi bạn bật. Khi bật, mỗi lần bạn dừng gõ, phần Host gửi văn bản bạn đã gõ đến lúc đó cùng các tin nhắn của chính bạn trong cuộc trò chuyện và các câu trả lời dạng văn bản của tác tử (không có đầu ra công cụ, ngữ cảnh ẩn hay phần suy luận), tối đa khoảng 3.000 ký tự của cuộc trò chuyện, đến mô hình đã chọn trong **Hoàn thành khi gõ** (mặc định là mô hình của **Dự đoán tin nhắn tiếp theo**). Lần dừng gõ mới sẽ hủy yêu cầu trước đó. Không có gì được lưu vào cuộc trò chuyện. Công tắc nằm trong `$DSH_HOME/storages/dsh-composer-plus/complete.json` (tệp chỉ chủ sở hữu truy cập được).
|
|
116
129
|
|
|
117
130
|
## Khắc phục sự cố
|
|
118
131
|
|
|
119
132
|
- **Không có thông báo trên macOS:** Cài đặt hệ thống → Thông báo → DeepSeek Harness → cho phép. Chọn **Cảnh báo** để thông báo ở lại trên màn hình.
|
|
120
|
-
- **▶, tay nắm hàng đợi, trạng thái dự án, tùy chọn dự án gần đây, Thu gọn tất cả dự án, Sao chép đường dẫn, Cho phép trong cuộc trò chuyện này hoặc menu chuột phải biến mất sau khi cập nhật dsh:** các phần này gắn vào HTML hiện tại của dsh vì dsh chưa có vị trí dành cho chúng. Nếu dsh thay đổi markup đó, các phần này tự ẩn; không có gì khác bị hỏng. Vui lòng mở một [issue](https://github.com/furkancak1r/dsh-composer-plus/issues).
|
|
133
|
+
- **▶, tay nắm hàng đợi, trạng thái dự án, tùy chọn dự án gần đây, Thu gọn tất cả dự án, Sao chép đường dẫn, ô tìm dự án, dự đoán tin nhắn tiếp theo, phần hoàn thành khi gõ, Cho phép trong cuộc trò chuyện này hoặc menu chuột phải biến mất sau khi cập nhật dsh:** các phần này gắn vào HTML hiện tại của dsh vì dsh chưa có vị trí dành cho chúng. Nếu dsh thay đổi markup đó, các phần này tự ẩn; không có gì khác bị hỏng. Vui lòng mở một [issue](https://github.com/furkancak1r/dsh-composer-plus/issues).
|
|
121
134
|
- **"Cập nhật thất bại" hoặc "không được cài từ npm":** bản sao được liên kết từ thư mục cục bộ hoặc đã đổi tên không thể tự cập nhật; hãy cài lại `dsh-composer-plus` từ Cài đặt → Plugin. Trong các trường hợp khác, thông báo hiện dòng đầu tiên của lỗi pnpm; **Kiểm tra cập nhật** sẽ thử lại.
|
|
122
135
|
- **Kết nối di động báo "Cổng kết nối cho điện thoại không chạy":** "no IPv4 address on en0" nghĩa là máy Mac này không có địa chỉ Wi-Fi/Ethernet; "EADDRINUSE" nghĩa là một dsh khác (hoặc một ứng dụng khác) đang dùng cổng 19390 hoặc 19391. Mỗi lúc chỉ một dsh có thể chạy Kết nối di động.
|
|
123
136
|
- **Kết nối di động, Tiếp tục sau khi khởi động lại hoặc Tìm trong nội dung báo "Khởi động lại dsh":** plugin đã được cập nhật trong lúc dsh đang chạy (hoặc, với Tìm trong nội dung, bạn đã đổi công tắc); trạng thái mới được tải sau khi khởi động lại.
|
|
@@ -126,12 +139,13 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
126
139
|
- **Cuộc trò chuyện và tệp bị mờ:** dự án không phải repository git, không có snapshot từ trước tin nhắn đó (tin nhắn cũ hơn plugin, hoặc một trong 50 snapshot mới nhất đã thay thế snapshot đó), hoặc không có tệp nào thay đổi.
|
|
127
140
|
- **Thao tác xóa báo rằng một dsh khác đang mở cuộc trò chuyện này:** một dsh thứ hai dùng cùng thư mục home của dsh đang giữ khóa của cuộc trò chuyện. Hãy đóng cửa sổ đó hoặc dsh đó, rồi xóa lại. Trong lúc đó, cuộc trò chuyện vẫn ở trạng thái đã lưu trữ.
|
|
128
141
|
- **Một cuộc trò chuyện không tiếp tục sau khi khởi động lại:** Tiếp tục sau khi khởi động lại đang tắt khi dsh thoát, bạn đã tự dừng lượt đó, lượt đã kết thúc (xong hoặc thất bại), cuộc trò chuyện đã được lưu trữ, hoặc có hơn 20 cuộc trò chuyện đang chạy (20 cuộc trò chuyện mới nhất sẽ tiếp tục).
|
|
129
|
-
- **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.
|
|
142
|
+
- **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.11.0`), xem ghi chú cài đặt ở trên.
|
|
130
143
|
|
|
131
144
|
## Giới hạn
|
|
132
145
|
|
|
133
146
|
- Tiếp tục không cần tin nhắn dựa vào vòng đời `agent/pre-step` → `agent/request` của dsh. Hãy kiểm tra lại khả năng tương thích khi nâng cấp dsh.
|
|
134
|
-
- **Ý tưởng tính năng** giữ các thẻ trong bộ nhớ cho từng cuộc trò chuyện cho đến khi dsh hoặc trang được tải lại; sau đó **Đề xuất tính năng** hỏi lại mô hình. Thẻ dùng ngôn ngữ giao diện mà dsh đang dùng lúc bạn nhấp; sau khi bạn đổi ngôn ngữ, các thẻ đã có trong chồng giữ ngôn ngữ cũ và **Thêm ý tưởng** dùng ngôn ngữ mới. Mô hình chỉ thấy bản tóm tắt ngắn của dự án, không thấy mã, nên một ý tưởng có thể lặp lại thứ dự án đã có: hãy bỏ qua ý tưởng đó. Cuộc trò chuyện mới chỉ chạy ở chế độ kế hoạch khi profile có lệnh `/plan` của dsh; nếu không, ý tưởng được gửi như một tin nhắn đầu tiên bình thường. Danh sách **Để sau** thuộc về đường dẫn thư mục của cuộc trò chuyện: cùng thư mục đó khi mở qua symlink sẽ có danh sách riêng. Danh sách giữ tối đa 50 ý tưởng cho mỗi dự án (xóa bớt một ý tưởng để thêm ý tưởng khác) và mỗi tiêu đề chỉ một lần. Kéo thẻ chỉ quyết định trái hoặc phải; hãy dùng **↓** để lưu thẻ và **▶** để xây dựng ngay. Ý tưởng lặp lại chỉ được nhận ra qua tiêu đề: mô hình vẫn có thể đề xuất một ý tưởng cũ dưới tên mới; hãy bỏ qua ý tưởng đó. Khi mô hình chỉ trả về các ý tưởng cũ, không có gì mới hiện ra: hãy nhấp lại.
|
|
147
|
+
- **Ý tưởng tính năng** giữ các thẻ trong bộ nhớ cho từng cuộc trò chuyện cho đến khi dsh hoặc trang được tải lại; sau đó **Đề xuất tính năng** hỏi lại mô hình. Thẻ dùng ngôn ngữ giao diện mà dsh đang dùng lúc bạn nhấp; sau khi bạn đổi ngôn ngữ, các thẻ đã có trong chồng giữ ngôn ngữ cũ và **Thêm ý tưởng** dùng ngôn ngữ mới. Mô hình chỉ thấy bản tóm tắt ngắn của dự án, không thấy mã, nên một ý tưởng có thể lặp lại thứ dự án đã có: hãy bỏ qua ý tưởng đó. Cuộc trò chuyện mới chỉ chạy ở chế độ kế hoạch khi profile có lệnh `/plan` của dsh; nếu không, ý tưởng được gửi như một tin nhắn đầu tiên bình thường. Danh sách **Để sau** thuộc về đường dẫn thư mục của cuộc trò chuyện: cùng thư mục đó khi mở qua symlink sẽ có danh sách riêng. Danh sách giữ tối đa 50 ý tưởng cho mỗi dự án (xóa bớt một ý tưởng để thêm ý tưởng khác) và mỗi tiêu đề chỉ một lần. Kéo thẻ chỉ quyết định trái hoặc phải; hãy dùng **↓** để lưu thẻ và **▶** để xây dựng ngay. Ý tưởng lặp lại chỉ được nhận ra qua tiêu đề: mô hình vẫn có thể đề xuất một ý tưởng cũ dưới tên mới; hãy bỏ qua ý tưởng đó. Khi mô hình chỉ trả về các ý tưởng cũ, không có gì mới hiện ra: hãy nhấp lại. Chủ đề trọng tâm hẹp làm điều này dễ xảy ra hơn; hãy dùng chủ đề rộng hơn hoặc xóa chủ đề. Chủ đề trọng tâm được giữ trong ô cho từng cuộc trò chuyện cho đến khi dsh hoặc trang tải lại.
|
|
148
|
+
- **Xuất cuộc trò chuyện dạng Markdown** chỉ có tin nhắn của chính bạn và các câu trả lời dạng văn bản của trợ lý: lệnh gọi công cụ và đầu ra của chúng, phần suy nghĩ, hình ảnh (được đánh dấu bằng một dòng `[image]`), ngữ cảnh ẩn và các tin nhắn mà Hoàn tác lượt hoặc dsh-rewind-plugin đã gỡ bỏ đều không có trong bản xuất. Các câu trả lời trong một lượt được gộp thành một phần. Mỗi lần xuất có tối đa khoảng 4 triệu ký tự; cuộc trò chuyện dài hơn chỉ được xuất phần đầu, kèm một ghi chú.
|
|
135
149
|
- **Tiếp tục sau khi khởi động lại** tiếp tục lượt; tính năng không chạy lại lượt từ đầu. Lệnh gọi công cụ đang chạy lúc thoát sẽ kết thúc với kết quả “không rõ kết quả” của dsh, và mô hình được dặn không lặp lại việc đã xong, nhưng một lệnh không an toàn khi chạy hai lần vẫn có thể chạy lại. Subagent, phê duyệt và câu hỏi đang mở không được khôi phục: cuộc trò chuyện cha của chúng tiếp tục và hỏi lại. Mỗi lần khởi động, tối đa 20 cuộc trò chuyện được tiếp tục.
|
|
136
150
|
|
|
137
151
|
- **Tìm trong nội dung** là tìm kiếm của chính dsh, nên có các giới hạn của dsh. Tính năng chỉ tìm trong tin nhắn của người dùng và trợ lý: không tìm trong đầu ra công cụ (lệnh, nội dung tệp, kết quả), không tìm trong phần suy luận, và không có bộ lọc theo tin nhắn người dùng, trợ lý hay công cụ. Tính năng khớp nguyên từ, không khớp một phần của từ (`deploy` không tìm thấy `deployment`); chữ có dấu khớp với chữ không dấu (`seker` tìm thấy `şeker`). Mỗi cuộc trò chuyện một dòng, kèm đoạn trích 240 ký tự của dsh, tối đa 20 dòng.
|
|
@@ -139,7 +153,7 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
139
153
|
- **Tìm trong nội dung** chỉ có hiệu lực sau khi khởi động lại dsh, và tệp chỉ mục được dùng chung cho mọi dsh dùng cùng thư mục home của dsh: mỗi lúc chỉ chạy một dsh như vậy (dsh chỉ cho phép một chủ sở hữu cho mỗi tệp chỉ mục).
|
|
140
154
|
- **Hoàn tác lượt** chỉ khôi phục tệp trong repository git, và chỉ trong thư mục của cuộc trò chuyện. Tính năng giữ 50 snapshot mới nhất cho mỗi cuộc trò chuyện. Tệp bị bỏ qua (`.gitignore`, `info/exclude`, tệp ignore toàn cục của bạn), thư mục trống, symlink và submodule không được khôi phục; một tệp đã bị bỏ qua lúc chụp snapshot không bao giờ bị xóa, kể cả khi lượt đó đã đổi quy tắc ignore. Tệp mà git không đọc được sẽ không có trong snapshot. Mỗi tin nhắn của bạn chạy một lệnh `git add --all` cho thư mục cuộc trò chuyện vào kho riêng: trong thư mục rất lớn có nhiều tệp chưa được theo dõi, việc này có thể mất vài giây, và lệnh gọi công cụ tiếp theo phải chờ (tối đa 10 giây; sau đó snapshot hoàn tất ở chế độ nền). Nếu `git gc` của repository xóa một object mà snapshot cũ cần, tệp đó được liệt kê là chưa được khôi phục. Chỉ văn bản của tin nhắn trở lại khung soạn thảo: hãy thêm lại hình ảnh hoặc tệp của tin nhắn. Cuộc trò chuyện subagent không có ↶ (thay đổi tệp của subagent được tính là thay đổi của cuộc trò chuyện đã khởi chạy subagent đó). Cuộc trò chuyện được xuất (`/export`) vẫn chứa các tin nhắn đã rút lại. Ý tưởng dùng một dấu ẩn để rút lại một phần cuộc trò chuyện đến từ [dsh-rewind-plugin](https://github.com/SiriLee/dsh-rewind) của SiriLee (MIT); Composer Plus không dùng mã nào từ plugin đó.
|
|
141
155
|
- **Xóa cuộc trò chuyện** cần tính năng lưu trữ của dsh (dsh 0.2.0 trở lên). Một cuộc trò chuyện (hoặc một cuộc trò chuyện subagent của nó) không dừng trong vòng 15 giây, hoặc đang bị một dsh khác giữ, sẽ ở trạng thái đã lưu trữ và không có gì bị di chuyển. Trên hệ thống khác macOS, thư mục thùng rác phải nằm cùng ổ đĩa với lịch sử trò chuyện. Một cuộc trò chuyện đang mở mà bạn xóa vẫn ở trong bộ nhớ của dsh, ở trạng thái đã lưu trữ và bị ẩn, cho đến khi dsh khởi động lại. Hãy tự dọn Thùng rác; dsh không làm việc này.
|
|
142
|
-
- Hàng đợi của dsh không có thao tác `move`, nên
|
|
156
|
+
- Hàng đợi của dsh không có thao tác `move`, nên phần Host của plugin di chuyển chính tin nhắn đang chờ trong hàng đợi của dsh (một thay đổi, vẫn là tin nhắn đó). Tin nhắn có hình ảnh hoặc tệp cũng di chuyển được. Chỉ tin nhắn của chính bạn mới di chuyển được: một vòng mục tiêu hoặc một câu trả lời cho câu hỏi trong hàng đợi vẫn ở nguyên chỗ. Nếu một tin nhắn bắt đầu được gửi trong lúc bạn kéo, không có gì được di chuyển và một thông báo cho biết điều đó.
|
|
143
157
|
- dsh 0.2.1 tải bản cập nhật ngay lập tức khi phiên bản mới không thay đổi cài đặt nào của dsh; trong các trường hợp khác và trên dsh 0.2.0, hãy khởi động lại dsh để tải bản cập nhật. Plugin không bao giờ tự khởi động lại dsh thay bạn. Profile web/CLI không có trình quản lý plugin của dsh chỉ báo có phiên bản mới.
|
|
144
158
|
- **Giữ con trỏ trong khung soạn thảo** chỉ trả lại tiêu điểm sau một lệnh `/` hoặc một skill. Trong lúc dsh xử lý lệnh, khung soạn thảo ở chế độ chỉ đọc trong vài mili giây, nên các phím nhấn trong khoảng đó bị mất. Nếu menu `/` của dsh vẫn đang mở, `Enter` chọn dòng đang được tô sáng và không gửi.
|
|
145
159
|
- **Kết nối di động** chỉ hoạt động trên macOS (dùng `en0`, `openssl`, `swift` và `dns-sd`). Tính năng dùng cố định cổng 19390 và 19391, nên trên mỗi máy Mac, mỗi lúc chỉ một dsh có thể chạy tính năng này (mỗi máy Mac là một mục trong danh sách Mac của điện thoại). Điện thoại chỉ nhận thông báo khi Tether đang mở hoặc vừa chuyển sang chạy nền (không có dịch vụ push). Ứng dụng iOS chưa có trên App Store: hãy build ứng dụng từ `tether/ios` bằng Xcode.
|
|
@@ -148,6 +162,9 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
148
162
|
- 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.
|
|
149
163
|
- dsh không có điểm mở rộng trong menu tùy chọn hiển thị của thanh bên, nên tùy chọn dự án gần đây được thêm vào chính menu của dsh. Nếu một bản cập nhật dsh thay đổi menu đó, tùy chọn không hiện và mọi dự án vẫn hiển thị. Bộ lọc hoạt động trên các dòng dự án, nên **Trong một danh sách** không bị lọc. Hãy dùng bộ lọc với **Không gian làm việc**: trong **Cây không gian làm việc**, một thư mục cha bị ẩn cũng ẩn các dự án đang hoạt động bên trong. **Theo trạng thái** có giới hạn tương tự: dsh không có vị trí dành cho kiểu sắp xếp, nên mục này và thứ tự dòng gắn vào markup menu và danh sách của dsh.
|
|
150
164
|
- dsh cũng không có vị trí dành cho menu dòng dự án hay phần đầu Không gian làm việc. **Sao chép đường dẫn** tìm dòng dự án qua markup dòng của dsh, còn **Thu gọn tất cả dự án** được đặt vào phần đầu của dsh và đóng từng dự án đang mở bằng cùng cú nhấp như trên dòng dự án. Nếu một bản cập nhật dsh thay đổi markup đó, nhấp chuột phải sẽ hiện menu của trình duyệt và nút không hiện.
|
|
165
|
+
- dsh cũng không có điểm mở rộng trong menu dự án của cuộc trò chuyện mới, nên ô **Tìm dự án** và thứ tự A–Z gắn vào markup menu của dsh. Nếu một bản cập nhật dsh thay đổi markup đó, menu hiện đúng như dsh vẽ: theo thứ tự đã lưu và không có ô tìm kiếm. Thứ tự A–Z chỉ là cách hiển thị: nó không thay đổi thứ tự dự án đã lưu của dsh.
|
|
166
|
+
- dsh cũng không có điểm mở rộng cho gợi ý trong khung soạn thảo, nên văn bản của **Dự đoán tin nhắn tiếp theo** nằm đè lên văn bản giữ chỗ của chính dsh (`[data-composer-placeholder]`). Nếu một bản cập nhật dsh thay đổi markup đó, dự đoán sẽ không hiện. Khi tính năng đang bật, mỗi lượt đã xong tốn một lần gọi mô hình ngắn.
|
|
167
|
+
- **Hoàn thành khi gõ** hiện văn bản qua gợi ý khung soạn thảo của chính dsh (kiểu `--dsh-composer-hint` mà dsh dùng cho gợi ý đối số của lệnh gạch chéo). 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 nhãn ký hiệu, hoặc khi con trỏ không ở cuối tin nhắn. Nếu một bản cập nhật dsh thay đổi kiểu đó, phần hoàn thành sẽ không hiện. Mỗi lần bạn dừng gõ tốn một lần gọi mô hình.
|
|
151
168
|
- Hỗ trợ tích hợp sẵn đã được đề xuất với dự án gốc: `move` cho hàng đợi ở [#773](https://github.com/deepseek-ai/deepseek-harness/discussions/773), trạng thái Tiếp tục ở [#9269](https://github.com/deepseek-ai/deepseek-harness/discussions/9269).
|
|
152
169
|
|
|
153
170
|
## Câu hỏi thường gặp
|
|
@@ -170,6 +187,8 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
170
187
|
|
|
171
188
|
**dsh có tiếp tục các cuộc trò chuyện đang chạy sau khi tôi thoát rồi mở lại không?** Không tự làm: dsh đánh dấu lượt như vậy là bị ngắt và chờ (mục tiêu cũng chờ `/goal resume`). Hãy bật **Cài đặt → Composer Plus → Tiếp tục sau khi khởi động lại**: khi đó, các cuộc trò chuyện đang làm việc lúc dsh thoát sẽ tự tiếp tục ở lần khởi động sau.
|
|
172
189
|
|
|
190
|
+
**Mô hình nào viết dự đoán?** Mô hình bạn chọn trong **Cài đặt → Composer Plus → Dự đoán tin nhắn tiếp theo → Mô hình**. Danh sách này là danh sách mô hình của chính dsh. **Mặc định của dsh** đi theo mô hình mặc định của dsh. Nếu dsh không còn liệt kê mô hình đã chọn, dự đoán dùng mô hình mặc định. **Hoàn thành khi gõ** có menu **Mô hình** riêng: **Giống dự đoán tin nhắn tiếp theo** (mặc định) đi theo mô hình của dự đoán; lựa chọn khác chỉ dùng cho phần hoàn thành. Nếu dsh không còn liệt kê mô hình đó, phần hoàn thành dùng mô hình của dự đoán.
|
|
191
|
+
|
|
173
192
|
**Làm sao để sắp xếp lại tin nhắn trong hàng đợi của dsh?** Kéo tay nắm ⠿ trên tin nhắn trong hàng đợi, hoặc đặt tiêu điểm vào tay nắm rồi nhấn `↑` / `↓`.
|
|
174
193
|
|
|
175
194
|
**Làm sao để Đánh giá tự động thôi hỏi về cùng một công cụ trong một cuộc trò chuyện?** Nhấp **Cho phép trong cuộc trò chuyện này** trên thẻ phê duyệt. Quyền này chỉ áp dụng cho đúng công cụ đó trong cuộc trò chuyện đó; thu hồi quyền từ nhãn ở phần đầu.
|
|
@@ -184,7 +203,7 @@ Khi menu `/` hoặc `@` đang mở, menu đó giữ các phím này cho riêng n
|
|
|
184
203
|
|
|
185
204
|
**Làm sao để chuyển giao diện DeepSeek Harness sang tiếng Thổ Nhĩ Kỳ, tiếng Tây Ban Nha, tiếng Nhật…?** Cài đặt → Composer Plus → **Ngôn ngữ ứng dụng**.
|
|
186
205
|
|
|
187
|
-
**Làm sao để dùng dsh từ iPhone?** Build ứng dụng Tether từ `tether/ios` (Xcode), bật **Cài đặt → Composer Plus → Kết nối di động (iPhone)**, nhấp **Kết nối di động** ở góc dưới bên trái, quét mã QR trong Tether và nhấp **Approve**. Khi ở xa nhà, hãy dùng Tailscale trên cả hai thiết bị.
|
|
206
|
+
**Làm sao để dùng dsh từ iPhone?** Build ứng dụng Tether từ `tether/ios` (Xcode), bật **Cài đặt → Composer Plus → Kết nối di động (iPhone)**, nhấp **Kết nối di động** ở góc dưới bên trái, quét mã QR (bằng Camera của iPhone hoặc **Scan code** trong Tether), chạm vào **Connect** và nhấp **Approve**. Khi ở xa nhà, hãy dùng Tailscale trên cả hai thiết bị.
|
|
188
207
|
|
|
189
208
|
**Plugin có hoạt động với ứng dụng desktop không?** Có: Cài đặt → Plugin → **Thêm plugin** → `dsh-composer-plus`. Đã kiểm thử trên dsh 0.2.0-rc.2 (desktop và web) và 0.2.1-rc.2 (web).
|
|
190
209
|
|
|
@@ -208,8 +227,10 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-keep-focus.mjs /path/to/
|
|
|
208
227
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-mobile-connect.mjs /path/to/dsh/lib/bin.js
|
|
209
228
|
# Resume after restart (fake slow model, real quit and start): a running chat and a goal continue, a stopped chat does not
|
|
210
229
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-resume-restart.mjs /path/to/dsh/lib/bin.js
|
|
211
|
-
# Feature ideas (fake model, made-up project): suggest, drag left, Undo, ✓ starts a new chat in plan mode, ▶ Build now one without, Plan all one for the Later list + its thumbnail
|
|
230
|
+
# Feature ideas (fake model, made-up project): suggest, drag left, Undo, ✓ starts a new chat in plan mode, ▶ Build now one without, Plan all one for the Later list, a focus topic chip, Copy as checklist + its thumbnail
|
|
212
231
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-feature-ideas.mjs /path/to/dsh/lib/bin.js
|
|
232
|
+
# Export chat as Markdown (fake model, made-up project): right-click → Export as Markdown…, copy and save keep the code blocks, switch off + its thumbnail
|
|
233
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-export-markdown.mjs /path/to/dsh/lib/bin.js
|
|
213
234
|
# Content search (fake model, made-up chats): a message-only word finds its chat with the snippet, switch off + restart = titles only + its thumbnail
|
|
214
235
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-content-search.mjs /path/to/dsh/lib/bin.js
|
|
215
236
|
# Turn rollback + Delete chat (fake model, made-up git project): bash edit → ↶ Chat and files → files back, .git unchanged; Delete… → Trash + its thumbnails
|