dsh-composer-plus 1.24.1 → 1.25.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.id.md CHANGED
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
29
29
 
30
30
  Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil itu dikelola oleh aplikasi.)
31
31
 
32
- > pnpm milik dsh melewati versi yang berumur kurang dari 24 jam. Tepat setelah rilis, tambahkan versinya: `dsh-composer-plus@1.24.1`.
32
+ > pnpm milik dsh melewati versi yang berumur kurang dari 24 jam. Tepat setelah rilis, tambahkan versinya: `dsh-composer-plus@1.25.0`.
33
33
 
34
34
  ## Fitur
35
35
 
@@ -75,7 +75,11 @@ Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil
75
75
  | **File yang dilindungi** | <a id="feature-protectedfiles"></a>Aktif secara bawaan. Alat file milik agen sendiri tidak dapat membaca atau mengubah file yang cocok dengan pola Anda: `read`, `read_image`, dan `grep` pada file ditolak untuk pola **baca dan tulis**, sedangkan `write`, `edit`, dan `str_replace_editor` ditolak untuk kedua jenis. Agen membaca alasannya dan diminta untuk bertanya kepada Anda. Pola bawaannya `.env*`, `*.pem`, dan `*.key`. Pengaturan → Composer Plus → **File yang dilindungi**: tambahkan pola (misalnya `published/**` atau `config/*.yml`), klik jenisnya untuk beralih antara **baca dan tulis** dan **hanya tulis**, hapus dengan ✕, atau klik **Gunakan bawaan**. Pola tanpa `/` cocok dengan nama file di folder mana pun. Ini pagar pengaman, bukan sandbox: perintah shell (`cat .env`), skrip, atau alat MCP tetap dapat menjangkau file itu (lihat Batasan). | <a href="assets/features/protectedFiles.webp"><img src="assets/features/protectedFiles.webp" width="160" alt="Tangkapan layar: File yang dilindungi"></a> |
76
76
  | **Perintah yang diblokir** | <a id="feature-blockedcommands"></a>Aktif secara bawaan, dengan daftar kosong. Perintah shell agen (`bash`, `pwsh`) tidak dapat menjalankan perintah yang cocok dengan aturan Anda: aturan **blokir** menolak panggilan itu (agen membaca alasannya dan diminta untuk bertanya kepada Anda), aturan **tanya dulu** menampilkan kartu persetujuan dsh, dan perintah hanya berjalan jika Anda mengizinkannya. Pengaturan → Composer Plus → **Perintah yang diblokir**: ketik aturan (misalnya `npm publish`, `git push --force`, atau `ssh *192.168.2.19`), klik jenisnya untuk beralih antara **blokir** dan **tanya dulu**, lalu klik **Tambah**; klik jenis sebuah aturan untuk mengubahnya, hapus aturan dengan ✕. Aturan adalah nama perintah dan kata-kata yang harus muncul sesudahnya dalam urutan ini; `*` cocok dengan teks apa pun. Fitur ini juga menemukan perintah sesudah `&&`, `;`, `\|`, di dalam `$(…)`, `bash -c "…"`, atau `eval`, dan sesudah `sudo` atau `env`. Ini pagar pengaman, bukan sandbox: variabel (`$CMD`), file skrip, atau program lain tetap dapat menjalankan perintah itu (lihat Batasan). | <a href="assets/features/blockedCommands.webp"><img src="assets/features/blockedCommands.webp" width="160" alt="Tangkapan layar: Perintah yang diblokir"></a> |
77
77
  | **Papan tugas** | <a id="feature-taskboard"></a>Bilah samping kiri → **Papan tugas**, atau tekan `Cmd+Shift+K` (`Ctrl+Shift+K` di Windows dan Linux) di mana saja dalam dsh. Papan kanban obrolan dsh Anda dengan status langsung yang sama seperti di bilah samping: obrolan yang menunggu persetujuan, jawaban, atau tinjauan rencana Anda ada di **Ditinjau** dengan titik oranye, obrolan yang berjalan ada di **Sedang dikerjakan**, dan obrolan yang sudah selesai dan belum Anda buka ada di **Selesai** (hijau). Saat Anda membuka obrolan, kartunya keluar dari **Selesai** dengan sendirinya; klik **Baru selesai (N)** di bawah kartu hijau untuk melihat obrolan selesai yang sudah Anda baca (10 terbaru, lalu **Tampilkan N yang lebih lama**; terbuka atau tertutup disimpan di perangkat ini). Obrolan yang selesai saat terbuka di belakang papan (**Tugas baru**) tetap hijau sampai Anda membukanya. Klik nama proyek di bagian atas papan untuk membuka daftar proyek, lalu pilih proyek atau **Semua proyek**; folder branch per obrolan dihitung sebagai proyeknya. Daftar tertutup setelah Anda memilih, dengan `Esc`, atau dengan klik di luar daftar. Ketik di **Cari proyek** di bagian atas daftar untuk menemukan proyek berdasarkan namanya (huruf besar/kecil dan aksen tidak berpengaruh; `Esc` mengosongkan kotak), tekan `Enter` untuk memilih hasil pertama, dan klik **Aktif dalam 2 jam terakhir** untuk hanya menampilkan proyek dengan obrolan yang menunggu, berjalan, selesai tetapi belum dilihat, atau berubah dalam 2 jam terakhir (disimpan di perangkat ini). **Tugas baru** (atau `n`) membuka obrolan baru milik dsh sendiri di proyek yang ditampilkan papan (dengan **Semua proyek**, proyek yang dipilih Sesi Baru dsh), jadi Anda bisa menambahkan file, memakai perintah, dan memilih model seperti di obrolan mana pun. Saat pesan pertama Anda terkirim, papan kembali dengan sendirinya. Sampai saat itu, obrolan menunggu di bagian paling atas **Sedang dikerjakan** sebagai **Tugas baru**: klik obrolan itu untuk menulis pesan pertama. Proyek yang punya obrolan yang menunggu Anda memiliki titik oranye di daftar proyek (nama proyek di bagian atas juga memilikinya selama ada obrolan yang menunggu). dsh memberi nama obrolan, dan model obrolan menulis hingga 3 label dari pesan itu. Klik kartu untuk membuka obrolannya. Klik kartu oranye (atau **Jawab** di kartu itu) untuk menjawabnya di papan; panelnya punya **Buka obrolan** untuk seluruh obrolan: **Tolak** atau **Izinkan sekali**, **Setujui** atau **Minta perubahan** untuk rencana, atau pilihan dan teks Anda sendiri untuk pertanyaan. Klik **×** di kartu yang selesai untuk mengeluarkannya dari papan, atau buka **Baru selesai** lalu klik **Bersihkan semua** di bagian atas **Selesai** untuk mengeluarkan kartu-kartu itu dari papan: lebih dulu ditampilkan berapa kartu dari proyek mana yang keluar, dan kartu yang belum dibaca (hijau) tetap ada. Selama 8 detik setelahnya, **Urungkan** mengembalikan kartu-kartu itu; **Dikeluarkan (N)** di bawah **Selesai** menampilkan daftar kartu yang ada di luar papan, dan **Kembalikan** menampilkan satu kartu lagi di **Selesai**. Tidak ada obrolan yang dihapus: obrolan tetap ada di bilah samping dsh, papan mengingat hal ini setelah dimulai ulang (Tether menampilkan papan yang sama), dan obrolan yang berjalan lagi kembali ke papan. Arahkan penunjuk ke kartu di **Sedang dikerjakan** (atau pindahkan fokus keyboard ke kartu itu) untuk melihat progresnya: berapa lama obrolan berjalan, langkah dari daftar tugasnya, alat yang sedang berjalan, dan baris terakhir agen. Di Pengaturan → Composer Plus → Papan tugas, **Progres saat kursor di atas** memilih **Cepat (tanpa AI)** (default: hanya membaca obrolan) atau **Ringkasan AI** (satu panggilan singkat ke model obrolan juga menulis satu atau dua kalimat). | <a href="assets/features/taskBoard.webp"><img src="assets/features/taskBoard.webp" width="160" alt="Tangkapan layar: Papan tugas"></a> |
78
- | **Asisten** | <a id="feature-assistant"></a>Aktif secara default (nonaktifkan di **Pengaturan → Composer Plus**). Klik **Asisten** di bilah samping kiri (tepat di bawah **Papan tugas**): fitur ini membuka satu obrolan tetap yang Anda pakai sebagai asisten pribadi, seperti obrolan ChatGPT atau Grok. Klik pertama membuat folder `~/Assistant`, menambahkannya sebagai proyek “Assistant”, dan memulai obrolan dengan mode izin workspace-write dan model default dsh; setiap klik berikutnya membuka obrolan yang sama (obrolan yang diarsipkan kembali, obrolan yang dihapus dibuat lagi). Minta asisten mengingatkan Anda (“ingatkan saya minum air dalam 2 menit”): asisten memakai tugas terjadwal dsh, jadi pengingat menjalankan obrolan pada waktu itu, dan Tether mengirim notifikasi “Turn finished” saat Koneksi seluler aktif. Minta asisten mencari di web, atau tanyakan tentang obrolan Anda yang lain: asisten dapat menampilkan daftar obrolan semua proyek (berjalan, menunggu Anda, atau diam) dan membaca pesan terbaru dari satu obrolan. Asisten juga dapat mengirim pesan ke obrolan, memulai obrolan baru di proyek, menghentikan obrolan yang berjalan, atau mengarsipkan obrolan: masing-masing dari empat tindakan ini lebih dulu menampilkan kartu persetujuan dsh (juga di Tether), dan tidak ada yang terjadi sampai Anda mengklik **Izinkan sekali**. Asisten tidak punya alat hapus. Hanya obrolan ini yang memiliki alat-alat ini dan instruksi singkatnya; teks yang dibacanya di halaman web atau obrolan lain dihitung sebagai data, bukan perintah. Simpan profil Anda di memori proyek ini (**Memori proyek**, topik “profil”) daripada menyampaikannya setiap kali. | <a href="assets/features/assistant.webp"><img src="assets/features/assistant.webp" width="160" alt="Tangkapan layar: Asisten"></a> |
78
+ | **Asisten** | <a id="feature-assistant"></a>Aktif secara default (nonaktifkan di **Pengaturan → Composer Plus**). Klik **Asisten** di bilah samping kiri (tepat di bawah **Papan tugas**): fitur ini membuka satu obrolan tetap yang Anda pakai sebagai asisten pribadi, seperti obrolan ChatGPT atau Grok. Klik pertama membuat folder `~/Assistant`, menambahkannya sebagai proyek “Assistant”, dan memulai obrolan dengan mode izin workspace-write dan model default dsh; setiap klik berikutnya membuka obrolan yang sama (obrolan yang diarsipkan kembali, obrolan yang dihapus dibuat lagi). Selama obrolan belum berisi pesan, kartu singkat di atas kolom input menjelaskan apa yang dilakukan asisten dan menampilkan tiga contoh permintaan; kartu itu hilang setelah pesan pertama Anda. Minta asisten mengingatkan Anda (“ingatkan saya minum air dalam 2 menit”): asisten memakai tugas terjadwal dsh, jadi pengingat menjalankan obrolan pada waktu itu, dan Tether mengirim notifikasi “Turn finished” saat Koneksi seluler aktif. Bicaralah dengan asisten seperti dengan teman yang bekerja di latar belakang: tugas yang lebih lama (riset, beberapa langkah) diserahkan ke subagen latar belakangnya sendiri, obrolan menyebutkan dalam satu baris apa yang dimulainya dan langsung bebas lagi. Buka topik kedua saat topik pertama masih berjalan: setiap topik mendapat subagennya sendiri, dan setiap hasil kembali ke obrolan ini saat sudah siap. Minta asisten mencari di web, atau tanyakan tentang obrolan Anda yang lain: asisten dapat menampilkan daftar obrolan semua proyek (berjalan, menunggu Anda, atau diam) dan membaca pesan terbaru dari satu obrolan. Asisten juga dapat mengirim pesan ke obrolan, memulai obrolan baru di proyek, menghentikan obrolan yang berjalan, atau mengarsipkan obrolan: masing-masing dari empat tindakan ini lebih dulu menampilkan kartu persetujuan dsh (juga di Tether), dan tidak ada yang terjadi sampai Anda mengklik **Izinkan sekali**. Asisten tidak punya alat hapus. Hanya obrolan ini yang memiliki alat-alat ini dan instruksi singkatnya; teks yang dibacanya di halaman web atau obrolan lain dihitung sebagai data, bukan perintah. Simpan profil Anda di memori proyek ini (**Memori proyek**, topik “profil”) daripada menyampaikannya setiap kali. | <a href="assets/features/assistant.webp"><img src="assets/features/assistant.webp" width="160" alt="Tangkapan layar: Asisten"></a> |
79
+ | **Asisten terpisah dari obrolan** | <a id="feature-assistantapart"></a>Aktif secara default (nonaktifkan di **Pengaturan → Composer Plus**). Obrolan asisten keluar dari daftar obrolan di bilah samping kiri, jadi tidak berada di antara obrolan proyek Anda: buka dengan **Asisten**. Proyeknya “Assistant” juga hilang selama tidak berisi obrolan lain; pencarian bilah samping tetap menemukan obrolan itu. Titik pada baris **Asisten** menunjukkan status asisten: bekerja (juga saat topik latar belakang berjalan), menunggu Anda (oranye: persetujuan, pertanyaan, atau tinjauan rencana), atau balasan baru (hijau). Saat obrolan asisten terbuka, baris **Asisten** tampil sebagai baris yang terbuka. Jika dinonaktifkan, obrolan kembali ke daftar dan baris tidak punya titik. | <a href="assets/features/assistantApart.webp"><img src="assets/features/assistantApart.webp" width="160" alt="Tangkapan layar: Asisten terpisah dari obrolan"></a> |
80
+ | **Hanya pesan di Asisten** | <a id="feature-assistantchatview"></a>Aktif secara default (nonaktifkan di **Pengaturan → Composer Plus**). Obrolan asisten tampak seperti obrolan dengan bot: panggilan alat, penalaran, kelompok langkah, dan baris “Completed in” disembunyikan, dan Anda melihat pesan Anda, balasannya, kesalahan, dan kartu persetujuan. Obrolan lain tidak berubah. Nonaktifkan untuk melihat lagi langkah kerja asisten. | <a href="assets/features/assistantChatView.webp"><img src="assets/features/assistantChatView.webp" width="160" alt="Tangkapan layar: Hanya pesan di Asisten"></a> |
81
+ | **Asisten selalu bebas** | <a id="feature-assistantfree"></a>Aktif secara default (nonaktifkan di **Pengaturan → Composer Plus**). Obrolan asisten langsung menjawab dan tidak pernah sibuk dengan tugas panjang: asisten hanya memanggil alat singkatnya sendiri (obrolan Anda, pengingat, memori, dan subagen). Setiap langkah lain, seperti pencarian web, halaman web, file, atau perintah, diserahkan ke subagen latar belakang; obrolan menyebutkan dalam satu baris apa yang dimulainya dan bebas untuk pesan Anda berikutnya, dan hasilnya kembali ke obrolan saat sudah siap. Subagennya bekerja seperti biasa. Jika obrolan asisten tidak punya alat subagen (karena mode izin atau profilnya), aturan ini tidak melakukan apa pun dan **Pengaturan** menyebutkannya. | <a href="assets/features/assistantFree.webp"><img src="assets/features/assistantFree.webp" width="160" alt="Tangkapan layar: Asisten selalu bebas"></a> |
82
+ | **Kabar obrolan dari Asisten** | <a id="feature-assistantnotify"></a>Nonaktif secara default: setiap baris kabar adalah giliran model di obrolan asisten, jadi memakai token. Aktifkan di **Pengaturan → Composer Plus**. Setelah itu asisten memberi tahu Anda, di obrolannya sendiri, saat obrolan lain menyelesaikan giliran panjang (1 menit atau lebih), gagal, atau menunggu Anda (persetujuan, pertanyaan, atau tinjauan rencana) selama 30 detik: satu baris singkat per obrolan, dengan judul dan proyek obrolan itu. Kabar dikumpulkan selama 15 detik dan datang paling sering setiap 2 menit; saat asisten sedang bekerja, kabar menunggu sampai giliran itu selesai. Obrolan yang Anda hentikan, giliran singkat, dan obrolan asisten sendiri tidak menghasilkan kabar. Saat **Koneksi seluler (iPhone)** aktif, Tether menerima notifikasi “Turn finished” asisten seperti biasa. | <a href="assets/features/assistantNotify.webp"><img src="assets/features/assistantNotify.webp" width="160" alt="Tangkapan layar: Kabar obrolan dari Asisten"></a> |
79
83
  | **Memori proyek** | <a id="feature-projectmemory"></a>Nonaktif secara default: aktifkan di **Pengaturan → Composer Plus**. Setiap folder proyek mendapat memorinya sendiri, yang dibaca oleh obrolan berikutnya di proyek itu, seperti DS Bot menyimpan satu memori untuk setiap Bot. Setelah setiap giliran selesai, satu panggilan ke model obrolan membaca pesan baru (bukan yang ditarik oleh putar balik), menyimpan preferensi, keputusan, dan fakta Anda yang bertahan lama sebagai catatan singkat, serta mengubah atau menghapus catatan lama. Agen juga dapat menyimpan, menghapus, dan mencari catatan sendiri (`memory_remember`, `memory_forget`, `memory_recall`). Catatan juga bisa global: setiap proyek membacanya. Obrolan baru mendapat catatan di prompt sistemnya; catatan yang disimpan kemudian muncul mulai obrolan berikutnya. File berupa Markdown di folder home dsh (`storages/dsh-composer-plus/memory/`), tidak pernah di folder proyek. **Buka memori** di baris yang sama menampilkan semua catatan tersimpan, dikelompokkan per proyek (dan memori global), dengan saringan. Tulis dengan kata-kata Anda apa yang diubah (misalnya "saya beralih dari yarn ke pnpm"), lalu **Pratinjau perubahan**: model default dsh mengusulkan perubahan, dan hanya **Terapkan** yang menyimpannya. Di Tether: menu judul obrolan → Project memory. | <a href="assets/features/projectMemory.webp"><img src="assets/features/projectMemory.webp" width="160" alt="Tangkapan layar: Memori proyek"></a> |
80
84
  | **Riwayat versi memori** | <a id="feature-memoryhistory"></a>Aktif secara default selama **Memori proyek** aktif. Sebelum setiap penyimpanan memori (agen, tinjauan setelah giliran, **Buka memori**), salinan catatan seperti sebelumnya disimpan. Di **Buka memori**, pilih proyek atau **Memori global**, lalu **Riwayat**: versi menurut tanggal dan siapa yang mengubah memori setelah setiap versi. Pilih versi untuk melihat sebagai diff apa yang diubah pemulihan, lalu **Pulihkan**. Catatan sebelum pemulihan juga disimpan, jadi Anda bisa membatalkannya. 50 versi terbaru dari setiap memori tetap ada. Di Tether: menu judul chat → Project memory → History. | <a href="assets/features/memoryHistory.webp"><img src="assets/features/memoryHistory.webp" width="160" alt="Tangkapan layar: Riwayat versi memori"></a> |
81
85
  | **Ekspor memori ke AGENTS.md** | <a id="feature-memoryexport"></a>Di **Buka memori**, pilih proyek, lalu **Ekspor ke AGENTS.md**: catatan proyek itu masuk ke bagian bertanda di `AGENTS.md` di foldernya, sehingga Anda bisa meng-commit-nya dan membagikannya dengan tim serta alat agen lain. Anda melihat perubahannya sebagai diff dulu; hanya **Tulis AGENTS.md** yang menyimpannya. Ekspor berikutnya hanya mengganti bagian itu. Memori global, sumber, dan tanggal tidak ikut. Di Tether: menu judul chat → Project memory → Export to AGENTS.md. | <a href="assets/features/memoryExport.webp"><img src="assets/features/memoryExport.webp" width="160" alt="Tangkapan layar: Ekspor memori ke AGENTS.md"></a> |
@@ -104,7 +108,7 @@ Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil
104
108
  | **Tombol opsi** | <a id="feature-optionpicks"></a>Saat jawaban diakhiri daftar opsi (daftar bernomor 1 sampai 9 butir di bawah judul "Opsi" atau baris tebal "Opsi", juga "Langkah selanjutnya" dan kata yang sama dalam bahasa aplikasi), tombol untuk setiap opsi muncul di bawah jawaban. Klik mengirim "Option N: …" beserta seluruh opsi sebagai pesan Anda, seolah-olah Anda mengetiknya. Opsi yang bertanda "(disarankan)" ditandai. Tombol hanya muncul di bawah jawaban terbaru, saat obrolan sedang diam dan kotak pesan kosong; jawaban yang sudah dipilih dan jawaban yang ditarik oleh rollback tidak memiliki tombol. Selama tombol tampil, Prediksi pesan berikutnya tidak memberi tebakan. Pada kartu pertanyaan agen, tombol 1–9 memilih opsi itu seperti klik (tidak di kolom jawaban, dan tidak dalam 0,8 detik pertama setelah pertanyaan muncul). | <a href="assets/features/optionPicks.webp"><img src="assets/features/optionPicks.webp" width="160" alt="Tangkapan layar: Tombol opsi"></a> |
105
109
  | **Bahasa aplikasi** | <a id="feature-language"></a>Pengaturan → Composer Plus → **Bahasa aplikasi** mengganti seluruh antarmuka dsh ke Türkçe, Español, Português (Brasil), Français, Deutsch, Русский, 日本語, 한국어, Bahasa Indonesia, Tiếng Việt, atau हिन्दी (lihat di bawah). | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="Tangkapan layar: Bahasa aplikasi"></a> |
106
110
  | **Koneksi seluler (iPhone)** | <a id="feature-mobileconnect"></a>Gunakan dsh dari iPhone Anda dengan aplikasi [Tether](tether/), di Wi-Fi yang sama atau melalui [Tailscale](https://tailscale.com). Aktifkan di **Pengaturan → Composer Plus** (nonaktif secara default karena membuka port jaringan di Mac ini). Lalu klik **Koneksi seluler** di kiri bawah bilah samping: pindai kode QR dengan Kamera iPhone (ketuk **Open in Tether**) atau dengan **Scan code** di Tether, ketuk **Connect**, lalu klik **Approve**. Instal Tether terlebih dahulu: tanpa aplikasi itu, Kamera tidak dapat membuka kode tersebut. Ponsel menampilkan obrolan Anda, mengirim pesan (dengan foto: **+** di kotak pesan → Camera, Photos, atau Paste image), menjawab persetujuan dan pertanyaan, serta mengganti model dan agen. Pasangkan Mac sebanyak yang Anda mau: nama Mac di kiri atas aplikasi berpindah di antara Mac tersebut. Panel **Koneksi seluler** menampilkan iPhone yang dipasangkan beserta koneksi terakhirnya: **Remove** langsung memutus salah satunya. “Tailscale only” menolak jaringan lokal (untuk Wi-Fi bersama), dan log akses menampilkan siapa yang mencoba terhubung. Di Tether, “Settings → Privacy” mengunci aplikasi dengan Face ID. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Tangkapan layar: Koneksi seluler (iPhone)"></a> |
107
- | **Komputer jarak jauh** | <a id="feature-remotecomputers"></a>Buka dsh di Mac Anda yang lain melalui [Tailscale](https://tailscale.com) dan gunakan di jendela dsh ini. Aktifkan di **Pengaturan → Composer Plus** pada setiap Mac (nonaktif secara default karena membuka port jaringan). Di Mac yang ingin Anda buka, aktifkan **Izinkan komputer lain membuka Mac ini**, klik **Buat tautan pemasangan**, lalu salin tautannya. Di Mac ini, pilih **Tambahkan komputer…** di pemilih komputer pada bilah samping kiri (di sebelah kanan nama merek, di atas **Sesi Baru**), tempel tautannya, ketik **Nama** (bukan nama Mac ini atau nama komputer lain), lalu klik **Hubungkan**. Setelah itu, klik **Setujui** di Mac yang lain. Pemilih lalu menampilkan **Mac ini** dan komputer Anda: pilih salah satu, dan dsh-nya memenuhi jendela ini, dengan obrolan, bilah samping, alat, dan file miliknya sendiri, sementara Mac ini tetap berjalan di belakangnya. Pemilih tetap di tempat yang sama dan menampilkan **Kembali ke Mac ini**: klik untuk kembali. Jika Anda punya lebih dari satu komputer, klik itu membuka menu, tempat Anda memilih **Mac ini** atau komputer lain. Panel Pengaturan dapat mengganti nama dan menghapus komputer, serta menampilkan komputer yang dapat membuka Mac ini (**Hapus** langsung memutus salah satunya). | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="Tangkapan layar: Komputer jarak jauh"></a> |
111
+ | **Komputer jarak jauh** | <a id="feature-remotecomputers"></a>Buka dsh di Mac Anda yang lain melalui [Tailscale](https://tailscale.com) dan gunakan di jendela dsh ini. Aktifkan di **Pengaturan → Composer Plus** pada setiap Mac (nonaktif secara default karena membuka port jaringan). Di Mac yang ingin Anda buka, aktifkan **Izinkan komputer lain membuka Mac ini**, klik **Buat tautan pemasangan**, lalu salin tautannya. Di Mac ini, pilih **Tambahkan komputer…** di pemilih komputer pada bilah samping kiri (di sebelah kanan nama merek, di atas **Sesi Baru**), tempel tautannya, ketik **Nama** (bukan nama Mac ini atau nama komputer lain), lalu klik **Hubungkan**. Setelah itu, klik **Setujui** di Mac yang lain. Pemilih lalu menampilkan **Mac ini** dan komputer Anda: pilih salah satu, dan dsh-nya memenuhi jendela ini, dengan obrolan, bilah samping, alat, dan file miliknya sendiri, sementara Mac ini tetap berjalan di belakangnya. Pemilih tetap di tempat yang sama dan menampilkan **Kembali ke Mac ini**: klik untuk kembali. Jika Anda hanya punya satu komputer lain, klik pada pemilih langsung beralih antara Mac ini dan komputer itu (tanpa menu); klik kanan pemilih untuk membuka menu lengkap (**Tambahkan komputer…**). Jika Anda punya lebih dari satu komputer, klik itu membuka menu, tempat Anda memilih **Mac ini** atau komputer lain. Panel Pengaturan dapat mengganti nama dan menghapus komputer, serta menampilkan komputer yang dapat membuka Mac ini (**Hapus** langsung memutus salah satunya). | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="Tangkapan layar: Komputer jarak jauh"></a> |
108
112
  | **Pembaruan otomatis** | <a id="feature-autoupdate"></a>Saat dsh dimulai, plugin memeriksa [rilis GitHub terbaru](https://github.com/furkancak1r/dsh-composer-plus/releases/latest). Jika rilis itu lebih baru dan sudah ada di npm, plugin memasang versi persis itu melalui pengelola plugin bawaan dsh (jalur yang sama dengan Pengaturan → Plugin) dan memberi tahu Anda. Mulai ulang dsh untuk memuatnya. **Pengaturan → Composer Plus → Pembaruan Composer Plus** menampilkan versi dan memiliki **Periksa pembaruan** / **Perbarui sekarang**. Saat dsh pertama kali dimulai dengan versi baru, jendela **Yang baru di Composer Plus N** menampilkan catatan rilis versi itu satu kali dalam bahasa **Bahasa aplikasi** (catatan ikut bersama versi baru, tanpa panggilan jaringan lain; bahasa tanpa catatan menampilkan catatan berbahasa Inggris); **Tutup** atau `Esc` menutupnya. Di bawah catatan, satu baris meminta bintang di GitHub, paling sering sekali dalam 30 hari (tanpa panggilan jaringan); setelah **Beri bintang di GitHub** atau **Jangan tanya lagi**, baris itu tidak muncul lagi. Jendela ini juga muncul setelah pembaruan lewat Pengaturan → Plugin atau folder yang disalin, sekali untuk setiap versi baru; tidak pada pemasangan pertama. **Yang baru di versi ini** di baris pembaruan membukanya lagi. Jika di disk ada versi yang lebih baru daripada yang berjalan, baris itu meminta Anda memulai ulang dsh. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Tangkapan layar: Pembaruan otomatis"></a> |
109
113
  | **Filter aktif/nonaktif** | <a id="feature-featurefilter"></a>Di samping **Cari fitur** di **Pengaturan → Composer Plus**: **Semua** menampilkan semua fitur, **Aktif** hanya fitur yang sakelarnya aktif, dan **Nonaktif** hanya fitur yang sakelarnya nonaktif. Yang menentukan adalah sakelar setiap baris, termasuk sakelar yang disimpan Host dsh (misalnya **Koneksi seluler**). Filter ini bekerja bersama pencarian: ketik sebuah kata lalu pilih **Nonaktif** untuk menemukan fitur yang Anda matikan. Baris yang Anda alihkan saat **Aktif** atau **Nonaktif** dipilih tetap ada sampai Anda memilih filter lagi, sehingga fokus tetap di sakelarnya. **Aktif** dan **Nonaktif** menyembunyikan baris **Bahasa aplikasi** dan **Pembaruan Composer Plus** (keduanya tidak punya sakelar). Pengaturan selalu terbuka dengan **Semua**. | <a href="assets/features/featureFilter.webp"><img src="assets/features/featureFilter.webp" width="160" alt="Tangkapan layar: Filter aktif/nonaktif"></a> |
110
114
  | **Laporkan isu** | <a id="feature-issuereport"></a>Pengaturan → Composer Plus → **Laporkan isu…** (di bawah pengantar), atau klik kanan obrolan di bilah samping (atau buka menu **…** obrolan itu) → **Laporkan isu Composer Plus…**. Pilih jenis: **Bug**, **Permintaan fitur**, **Peningkatan**, **Terjemahan**, atau **Pertanyaan**. Jelaskan dengan kata-kata dan bahasa Anda sendiri, lalu klik **Tulis draf** (atau `Cmd/Ctrl+Enter`). Satu panggilan ke model default dsh menulis isu dalam bahasa Inggris: judul dengan awalan jenisnya (misalnya `[Bug]`) dan bagian-bagian dari jenis itu (untuk bug: What happened, Steps to reproduce, Expected, Actual), ditambah satu baris berisi versi Composer Plus, dsh, dan sistem. Baca dan edit judul serta deskripsinya; **Tulis ulang** menulis draf baru. **Buka isu** membukanya di repositori GitHub Composer Plus dengan login GitHub CLI (`gh`) Anda dan menampilkan tautannya. Isu ini publik: teks yang tampak seperti kunci atau kata sandi ditolak. Jika `gh` tidak dapat membukanya, **Buka di GitHub sebagai gantinya** membuka halaman GitHub sendiri dengan draf yang sudah terisi. | <a href="assets/features/issueReport.webp"><img src="assets/features/issueReport.webp" width="160" alt="Tangkapan layar: Laporkan isu"></a> |
@@ -199,7 +203,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
199
203
  - **Lanjutkan di obrolan baru:** tidak ada yang berjalan sampai Anda mengkliknya. Lalu bagian Host mengirim obrolan (seperti yang dibaca Pemeriksaan tujuan: tanpa penalaran, tanpa langkah yang ditarik oleh putar balik) ke model obrolan itu sendiri dan menampilkan catatan serah terima; hanya **Mulai obrolan baru** yang membuat obrolan baru. Tidak ada yang ditulis ke proyek.
200
204
  - **Rincian konteks:** bagian Host hanya membaca log obrolan; tanpa panggilan model, tanpa file proyek.
201
205
  - **Papan tugas:** papan menampilkan obrolan dsh sendiri dari daftar dsh sendiri di jendela ini; papan tidak menambahkan data obrolan miliknya sendiri. **Tugas baru** membuka obrolan baru milik dsh sendiri, dan Anda menulis pesan pertama di kotak pesan dsh, jadi persetujuan, sandbox, dan model obrolan berlaku seperti biasa. Bagian Host menyimpan pesan pertama obrolan itu sebagai prompt kartu dan mengirimnya (4.000 karakter pertamanya, tidak ada yang lain) ke model obrolan tersebut dalam satu permintaan lagi, tanpa alat, untuk mendapatkan hingga 3 label. Prompt, label, dan waktu mulai setiap tugas disimpan di `$DSH_HOME/storages/dsh-composer-plus/board-chats.json` (file hanya untuk pemilik, 2.000 yang terbaru), bersama ID obrolan yang Anda keluarkan dari papan dengan **×** atau **Bersihkan semua** (5.000 yang terbaru); sakelarnya ada di `board-switch.json` di sebelahnya. Tidak ada yang ditulis ke folder proyek. **Jawab** mengirim jawaban Anda ke permintaan dsh sendiri yang tertunda, sama seperti kartu milik obrolan itu sendiri. Daftar tugas lama dari versi sebelumnya (`board.json`) tetap ada di disk seperti semula dan tidak dibaca. **Progres saat kursor di atas** membaca log obrolan di Mac ini. Dengan **Cepat (tanpa AI)** (default), tidak ada yang dikirim. Dengan **Ringkasan AI**, selama kotak progres kartu yang sedang berjalan tampil (atau selama papan Tether terbuka, untuk paling banyak 8 kartu yang berjalan), bagian Host mengirim bagian terbaru obrolan itu (paling banyak sekitar 6.000 karakter: pesan Anda, balasan teks agen, panggilan alatnya dan akhir hasilnya; tanpa penalaran dan tanpa pesan yang ditarik oleh putar balik) ke model obrolan itu, sebagai satu permintaan tanpa alat. Bagian Host mengirim lagi hanya setelah obrolan berlanjut, paling sering sekali setiap 20 detik per obrolan. Catatan itu hanya disimpan di memori; pengaturannya ada di `$DSH_HOME/storages/dsh-composer-plus/board-progress.json` (file hanya untuk pemilik).
202
- - **Asisten:** obrolan asisten adalah obrolan dsh biasa di `~/Assistant`; panggilan modelnya dikirim ke model default dsh seperti di obrolan mana pun. Alat-alatnya membaca log obrolan Anda yang lain di Mac ini (judul, proyek, status, dan dengan chat_read pesan terbarunya) dan memberikannya ke model itu hanya saat model memanggil alat. Mengirim pesan ke obrolan, memulai, menghentikan, dan mengarsipkan obrolan masing-masing menunggu persetujuan Anda. ID obrolan disimpan di `$DSH_HOME/storages/dsh-composer-plus/assistant.json` dan sakelarnya di `assistant-switch.json` (file hanya untuk pemilik). Pengingat dan otomatisasi adalah tugas terjadwal milik dsh sendiri. Tidak ada yang keluar dari Mac ini kecuali permintaan model dan pencarian web yang dibuat obrolan itu.
206
+ - **Asisten:** obrolan asisten adalah obrolan dsh biasa di `~/Assistant`; panggilan modelnya dikirim ke model default dsh seperti di obrolan mana pun. Alat-alatnya membaca log obrolan Anda yang lain di Mac ini (judul, proyek, status, dan dengan chat_read pesan terbarunya) dan memberikannya ke model itu hanya saat model memanggil alat. Mengirim pesan ke obrolan, memulai, menghentikan, dan mengarsipkan obrolan masing-masing menunggu persetujuan Anda. ID obrolan disimpan di `$DSH_HOME/storages/dsh-composer-plus/assistant.json` dan sakelarnya di `assistant-switch.json` (file hanya untuk pemilik). Pengingat dan otomatisasi adalah tugas terjadwal milik dsh sendiri. Tidak ada yang keluar dari Mac ini kecuali permintaan model dan pencarian web yang dibuat obrolan itu. Sakelar yang membuat asisten bekerja seperti bot menyimpan statusnya di `assistant-free.json` dan `assistant-notify.json` (file hanya untuk pemilik). **Kabar obrolan dari Asisten** memasukkan satu baris singkat tentang obrolan lain (judulnya, proyeknya, dan paling banyak 300 karakter dari balasan atau kesalahan terakhirnya) ke obrolan asisten, jadi teks itu juga dikirim ke model asisten; kabar yang menunggu hanya disimpan di memori.
203
207
  - **File yang dilindungi:** daftar dan sakelarnya ada di `$DSH_HOME/storages/dsh-composer-plus/protected-files.json` (file hanya untuk pemilik). Pemeriksaan hanya membaca path dari setiap panggilan alat file (dan path aslinya), tidak pernah membaca file itu.
204
208
  - **Perintah yang diblokir:** aturan dan sakelarnya ada di `$DSH_HOME/storages/dsh-composer-plus/blocked-commands.json` (file hanya untuk pemilik). Pemeriksaan hanya membaca teks perintah dari setiap panggilan `bash` dan `pwsh`; pemeriksaan tidak menjalankan apa pun dan tidak mengirim apa pun.
205
209
  - **Input rahasia:** nilai dikirim dari kartu (atau dari Tether, lewat gateway yang tidak mencatat isi permintaan) ke Host hanya dalam permintaan jawaban. Host menulisnya ke `$DSH_HOME/storages/dsh-composer-plus/secrets/<nama acak>` (folder 0700, file 0600); tidak ada yang masuk ke proyek, log obrolan, atau hasil alat. Host menyimpan nilai di memori untuk menggantinya dengan `[secret]` di hasil alat berikutnya dalam obrolan itu. File dan salinan itu dihapus saat giliran obrolan berakhir dan saat dsh dimulai. Sakelarnya ada di `secrets.json` di sebelahnya. Perintah yang dijalankan agen dengan file itu dapat mengirim nilai ke tempat yang dituju perintah itu: itulah tujuannya.
@@ -226,7 +230,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
226
230
  - **Tidak ada label branch di baris obrolan:** bilah samping tidak dalam tampilan “Dalam satu daftar” (dalam “Ruang Kerja” dan “Pohon Ruang Kerja”, tidak ada baris obrolan yang menampilkan label), obrolan itu belum memiliki giliran sejak Anda memasang versi ini, foldernya bukan repositori git, atau **Branch Git di baris obrolan** nonaktif. Setelah pembaruan, mulai ulang dsh (bagian Host mencatat branch).
227
231
  - **Pemeriksaan tujuan menyebut pengujian keluar dengan kode 127 atau "not found":** dsh yang dimulai dari Finder atau Dock dapat memiliki PATH yang lebih pendek daripada terminal Anda, sehingga tidak menemukan `npm`, `pnpm`, atau `cargo`. Mulai dsh dari terminal, atau atur perintah pengujian Anda sendiri dengan jalur lengkap di **Pemeriksaan tujuan** → **Edit**. **Jalankan sekarang** langsung menampilkan hasilnya.
228
232
  - **Tujuan tidak ditutup dan agen terus bekerja:** **Pemeriksaan tujuan** menemukan pengujian yang gagal atau pekerjaan yang belum selesai; baris di bawah tujuan menampilkan alasannya (arahkan penunjuk ke hasil untuk melihat detailnya). Perbaiki penyebabnya atau perintah pengujiannya, atau selesaikan tujuan sendiri dengan `/goal` atau bilah tujuan (penyelesaian itu tidak diperiksa).
229
- - **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.24.1`), lihat catatan pemasangan di atas.
233
+ - **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.25.0`), lihat catatan pemasangan di atas.
230
234
  - **Cadangkan sekarang menyatakan "Tindakan pencadangan lain sedang berjalan":** ada tindakan yang berjalan di jendela dsh lain atau di konsol penyelamat (keduanya berbagi file kunci, `.composer-plus.lock`, di folder cadangan). Tunggu sampai tindakan itu selesai. Jika tidak ada tindakan yang berjalan, kunci milik proses yang sudah ditutup diambil alih pada klik berikutnya.
231
235
  - **Konsol penyelamat menyatakan "dsh is running":** keluar dari dsh terlebih dahulu. Jika dsh memang sudah tertutup, file yang disebut dalam pesan itu tersisa dari crash: hapus file itu dan coba lagi.
232
236
  - **Setelah pemulihan, dsh tidak mau dimulai atau ada plugin yang hilang:** paket plugin sebuah profil harus dipasang lagi. Konsol penyelamat menawarkannya setelah pemulihan; atau jalankan `pnpm install` di setiap folder di bawah `$DSH_HOME/profiles/` yang dicantumkannya. Rahasia yang tidak ada di vault (komputer lain) harus dimasukkan lagi: konsol mencantumkannya.
@@ -260,7 +264,7 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
260
264
  - **Sesuaikan kartu pertanyaan dengan jendela** hanya mengubah kartu pertanyaan dsh, bukan kartu tinjauan rencana. Fitur ini menemukan kartu melalui markup dsh (`data-question-key`, `data-question-scroll`); jika pembaruan dsh mengubah markup itu, kartu tampil seperti yang digambar dsh. Tinggi kartu mengikuti jendela, bukan chat: di chat dalam panel samping yang sempit, kartu yang tinggi masih dapat melewati bagian atas chat.
261
265
  - **Sesuaikan header chat dengan jendela** menemukan header chat dsh dari nama kelas yang dibuat dsh (`_titleRow`, `_titleCluster`, `_crumbs`, `_headerActions`, `_headerUtilities`), karena dsh tidak menyediakan kait tata letak untuknya. Jika pembaruan dsh mengganti nama itu, header tampil seperti yang digambar dsh. Di kolom chat yang sangat sempit header bisa memakai dua atau tiga baris, sehingga ruang di atas pesan menjadi lebih kecil.
262
266
  - **Koneksi seluler** hanya berfungsi di macOS (memakai `en0`, `openssl`, `swift`, dan `dns-sd`). Fitur ini memakai port tetap 19390 dan 19391, jadi hanya satu dsh di setiap Mac yang dapat menjalankannya pada satu waktu (setiap Mac adalah satu entri dalam daftar Mac di ponsel). Dengan kunci APNs di `apns.json` (lihat `tether/README.md`), Mac mengirim notifikasi lewat layanan push Apple, jadi notifikasi tetap datang saat Tether tertutup; Mac harus menyala dengan dsh terbuka. Tanpa kunci itu, ponsel hanya mendapat notifikasi saat Tether terbuka atau baru saja masuk ke latar belakang. Tether hanya mengirimnya setelah Anda mengaktifkan "Settings → Notifications → Send notifications" di Tether. Tether menyimpan opsi ini dan jam-jamnya secara terpisah untuk setiap Mac yang dipasangkan. Opsi ini nonaktif secara default di setiap Mac, dan iOS meminta izin saat Anda mengaktifkannya. Aplikasi iOS belum ada di App Store: bangun aplikasi itu dari `tether/ios` dengan Xcode. "Tailscale only" tetap memerlukan alamat Wi-Fi atau Ethernet di Mac (gateway hanya mulai jika ada alamat itu). Log akses terpisah untuk setiap Mac dan hanya menyimpan 200 percobaan terbaru; percobaan yang berulang dalam satu menit menambah hitungan satu pada baris yang sama. Kunci aplikasi Setiap notifikasi menampilkan Mac dan proyek chat (`Studio Mac · recipe-box`), judul chat, dan teksnya: Turn finished menampilkan balasan terakhir agen. Dengan kunci APNs, teks ini melewati layanan push Apple. Tether tidak menyembunyikan pratinjau notifikasi di Layar Terkunci iPhone: matikan pratinjau itu di Pengaturan iOS. Titik hijau di Tether mengikuti Mac: chat yang Anda buka di dsh juga kehilangan titiknya di ponsel. Chat yang Anda buka di Tether hanya kehilangan titiknya di ponsel. Titik milik dsh di Mac tetap ada sampai Anda membuka chat itu di Mac.
263
- - **Komputer jarak jauh** memerlukan Tailscale di kedua Mac, dan Composer Plus dengan fitur ini aktif di Mac yang Anda buka. Mac itu tidak boleh dalam mode tidur, dan dsh harus berjalan di sana. Pemilih hanya tampil saat bilah samping kiri terbuka (tidak saat bilah itu hanya menampilkan ikon). Jika halaman Mac lain tidak punya pemilih sendiri (Composer Plus di sana lebih lama dari 1.23.0), pemilih Mac ini muncul di atas halaman itu di tempat yang sama. Jika di sana ada 1.23.0, pemilih menampilkan nama Mac itu: pilih **Mac ini** di menunya untuk kembali. Setiap komputer yang Anda buka menyimpan halamannya di memori sampai Anda menonaktifkan fitur ini atau memulai ulang dsh. Di aplikasi desktop, halaman Mac lain adalah halaman tersemat: pintasan keyboard dsh sendiri (misalnya obrolan baru) tidak berfungsi di dalamnya, dan unduhan file, mikrofon, serta notifikasi juga tidak berfungsi di sana. Fitur ini memakai port 19392 (hanya satu dsh di setiap Mac yang dapat mengizinkan komputer lain masuk). Dari halaman Mac lain, pemilih hanya beralih di antara komputer Mac ini: Anda tidak dapat membuka Mac ketiga melalui Mac lain.
267
+ - **Komputer jarak jauh** memerlukan Tailscale di kedua Mac, dan Composer Plus dengan fitur ini aktif di Mac yang Anda buka. Mac itu tidak boleh dalam mode tidur, dan dsh harus berjalan di sana. Pemilih hanya tampil saat bilah samping kiri terbuka (tidak saat bilah itu hanya menampilkan ikon). Jika halaman Mac lain tidak punya pemilih sendiri (Composer Plus di sana lebih lama dari 1.23.0), pemilih Mac ini muncul di atas halaman itu di tempat yang sama. Jika di sana ada 1.23.0, pemilih menampilkan nama Mac itu: pilih **Mac ini** di menunya untuk kembali. Setiap komputer yang Anda buka menyimpan halamannya di memori sampai Anda menonaktifkan fitur ini atau memulai ulang dsh. Jika komputer itu tidak menjawab (sedang tidur atau Tailscale mati), halamannya tidak disimpan: pilih lagi, lalu halaman dimuat ulang. Di aplikasi desktop, halaman Mac lain adalah halaman tersemat: pintasan keyboard dsh sendiri (misalnya obrolan baru) tidak berfungsi di dalamnya, dan unduhan file, mikrofon, serta notifikasi juga tidak berfungsi di sana. Fitur ini memakai port 19392 (hanya satu dsh di setiap Mac yang dapat mengizinkan komputer lain masuk). Dari halaman Mac lain, pemilih hanya beralih di antara komputer Mac ini: Anda tidak dapat membuka Mac ketiga melalui Mac lain. Peralihan satu klik hanya menghitung komputer yang sudah dipasangkan dan dapat dijangkau (komputer yang harus dipasangkan lagi tidak dihitung); jika hanya ada satu komputer seperti itu, **Tambahkan komputer…** ada di menu klik kanan (di layar sentuh: tekan lama) atau di **Pengaturan → Composer Plus → Komputer jarak jauh**.
264
268
  - Tautan sesi berfungsi di dalam obrolan; mengkliknya tidak membuka obrolan. Tautan dari **Salin tautan pesan** membuka pesannya hanya di dsh 0.2.1 dan yang lebih baru, dan hanya dari pesan di obrolan (dsh 0.2.0 tidak punya aturan teks pengguna, jadi di sana tautan tetap disalin, tetapi tampil sebagai teks biasa). Pesan yang dikeluarkan oleh putar balik, atau yang dihapus oleh pemadatan dari riwayat yang dimuat dsh, tidak dapat ditampilkan: tautan lalu memberi tahu hal itu. Tombol 🔗 menempel ke baris pesan dsh; jika pembaruan dsh mengubah markup itu, tombol tidak tampil.
265
269
  - **Tandai semua sudah dibaca** mengubah titik belum dibaca milik dsh melalui bagian dsh yang bukan API publik (daftar `completionUnread` di status sesi dsh). Jika pembaruan dsh mengganti namanya, item ini tidak tampil. Item ini masuk ke menu "…" proyek di dsh, yang tidak punya slot untuk plugin; jika dsh mengubah menu itu, item ini juga tidak tampil.
266
270
  - **Edit pesan antrean di tempat** tidak mengubah pesan yang sementara itu mulai terkirim, dan tidak menimpa pesan yang sementara itu berubah (misalnya di Tether pada iPhone): sebuah pemberitahuan menyampaikannya. Gambar baru memerlukan model yang menerima gambar (batas gambar bawaan dsh berlaku), dan file baru harus selesai diunggah sebelum Anda dapat menyimpan. Hanya pesan antrean milik Anda sendiri yang dapat diedit: putaran tujuan atau balasan pertanyaan di antrean tidak. Setelah plugin diperbarui, hanya pengeditan teks yang langsung berfungsi: mulai ulang dsh sebelum menyimpan pesan dengan gambar atau file (bagian Host dimuat saat dsh dimulai).
@@ -296,7 +300,8 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
296
300
  - **Paket skill bahasa Turki** memasang skill pihak ketiga: aturannya berasal dari repositori GitHub penulisnya, bukan dari Composer Plus, dan versi baru dipakai sejak pemeriksaan harian berikutnya tanpa kami tinjau. Pemeriksaan membuktikan bahwa file-file itu sama dengan yang didaftar GitHub untuk commit tersebut, bukan bahwa aturannya baik. Model yang memutuskan kapan memuat skill (Anda juga bisa memanggilnya dengan nama); aturannya hanya berlaku untuk teks bahasa Turki. Bagian Host memakai bahasa yang terakhir dilaporkan browser: jika dua browser memakai bahasa berbeda, yang terbaru yang berlaku. Tanpa login, GitHub mengizinkan 60 panggilan API per jam; pemeriksaan yang ditolak tetap memakai salinan yang terpasang dan menampilkan alasannya di Pengaturan.
297
301
  - **Rapikan basis kode** membawa salinan tetap dari skill ini (caldoai/skills, commit f3cf477): perubahan pada aslinya hanya datang dengan versi Composer Plus yang baru. Skill ini menjalankan tujuan panjang yang dapat mengubah banyak file, dan subagen serta pemeriksaannya memakai banyak token. Di bagian proyek yang tidak punya tes, skill ini dapat mengubah perilaku tanpa terlihat: mulai di branch tersendiri dan baca diff sebelum merge. Skill dengan nama yang sama di proyek, di folder skill kustom, atau di `~/.dsh/skills` menggantikannya. Selama sakelar mati, `/untangle-codebase` dikirim ke model sebagai teks biasa.
298
302
  - **Papan tugas** menampilkan obrolan yang didaftar dsh di jendela ini: obrolan di luar proyek hanya tampil di **Semua proyek**, dan folder branch per obrolan (`<project>/.worktrees/<name>`) dihitung sebagai proyeknya. Kolom kartu adalah status langsung obrolannya, jadi kartu tidak bisa diseret: obrolan pindah ke **Selesai** saat gilirannya berakhir, juga setelah error atau dihentikan, dan kembali ke **Sedang dikerjakan** saat berjalan lagi. Titik hijau adalah titik selesai milik dsh sendiri, yang hanya disimpan dsh di jendela ini: setelah halaman dimuat ulang, obrolan yang selesai tampil tanpa titik itu. **Selesai** menampilkan 50 obrolan terbaru (**Tampilkan N yang lebih lama** menampilkan sisanya). **Cari proyek** menemukan proyek hanya berdasarkan namanya, bukan berdasarkan jalur foldernya. **Aktif dalam 2 jam terakhir** menyembunyikan proyek jika setiap obrolannya lebih lama dari 2 jam, tidak aktif, dan sudah dibaca; papan tetap menampilkan proyek yang Anda pilih. **Tugas baru** hanya mengingat obrolan baru terbaru di jendela ini: jika Anda membuka obrolan lain sebelum pesan pertama, obrolan itu tetap di bagian paling atas **Sedang dikerjakan** sebagai **Tugas baru** sampai Anda menulis di dalamnya, tetapi papan kembali dengan sendirinya hanya untuk yang terbaru. Setelah halaman dimuat ulang, obrolan baru tanpa pesan tidak ada di papan (dsh menyimpannya sebagai Sesi Baru miliknya yang kosong). Label berasal dari satu panggilan model per tugas, dari pesan pertamanya: label bisa salah, dan obrolan yang tidak Anda mulai di papan tidak punya label. Judulnya adalah judul obrolan milik dsh sendiri (layanan judul dsh, dengan model obrolan); sampai judul itu ada, kartu menampilkan baris pertama dari pesan pertama. **×** dan **Bersihkan semua** hanya mengeluarkan kartu dari papan: tidak ada obrolan yang dihapus. **Urungkan** hanya tampil selama 8 detik, di jendela ini; setelah itu, **Dikeluarkan (N)** → **Kembalikan** mengembalikan kartu, dan obrolan yang berjalan lagi kembali dengan sendirinya. **Bersihkan semua** bertanya dulu dan mengeluarkan kartu selesai yang sudah dibaca dari proyek yang ditampilkan (semua proyek dengan **Semua proyek**), termasuk kartu di balik **Tampilkan N yang lebih lama**; kartu yang belum dibaca (hijau) tetap ada. dsh menyimpan titik hijaunya hanya di jendela ini, jadi setelah halaman dimuat ulang, Bersihkan semua bisa mengeluarkan kartu yang jawabannya belum Anda baca. Daftarnya disimpan di Mac ini untuk setiap jendela dan untuk Tether; saat daftar berisi 5.000 obrolan, yang paling lama kembali. **Jawab** hanya menjawab permintaan terbaru obrolan: jika permintaan itu sudah dijawab di tempat lain (jendela lain, Tether, Tinjauan otomatis) atau obrolan menanyakan hal baru, panel memberi tahu hal itu dan tidak mengirim apa pun. Versi sebelumnya punya daftar tugas dengan komentar dan alat agen; semuanya sudah tidak ada, dan `board.json` lama tidak ditampilkan. Ide dan tampilannya berasal dari [Kanzo](https://github.com/emanuele-em/kanzo) karya emanuele-em (AGPL-3.0); Composer Plus tidak memakai kodenya. `Cmd+Shift+K` adalah pintasan dsh: di browser pada Linux, pintasan ini tidak punya tombol bawaan (atur di halaman pintasan keyboard dsh), dan ekstensi browser atau aplikasi lain bisa memakainya lebih dulu. Kartu keluar dari **Selesai** saat titik hijau dsh sendiri hilang (Anda membuka obrolannya) atau, untuk obrolan yang selesai di belakang papan saat menjadi obrolan yang terbuka, saat obrolan itu tampil tanpa panel di atasnya. Status dibaca ini hanya ada di jendela dsh ini, seperti titik dsh: setelah memuat ulang atau di jendela lain, setiap obrolan selesai dianggap sudah dibaca, jadi ada di **Baru selesai**.
299
- - **Asisten** punya satu obrolan untuk semua jendela di Mac ini. Asisten berjalan dengan mode izin workspace-write: asisten hanya menulis file di `~/Assistant`, dan perintah di luar folder itu bertanya dulu. Jika Anda mengalihkan obrolan ke mode tanpa persetujuan (Akses penuh), dsh menolak setiap persetujuan, sehingga asisten tidak dapat mengirim pesan ke obrolan, memulai, menghentikan, atau mengarsipkan obrolan. Kartu persetujuan hanya menjaga enam alat itu: perintah shell dari asisten tetap dapat menjangkau jaringan, seperti di obrolan mana pun dengan mode itu. Di dsh 0.2.0 dan 0.2.1, alat jadwal dsh hanya melihat pengingat milik obrolan asisten itu sendiri, bukan otomatisasi obrolan lain; mulai dsh 0.2.2, alat itu menampilkan dan mengubah setiap tugas terjadwal. chats_list tidak menyertakan obrolan yang diarsipkan, obrolan kosong, obrolan subagen, dan obrolan asisten itu sendiri; “menunggu Anda” berarti ada persetujuan, pertanyaan, atau tinjauan rencana yang terbuka di obrolan yang berjalan. chat_read memberikan pesan pengguna dan balasan agen (tanpa output alat), paling banyak 50 pesan dan sekitar 24.000 karakter. chat_archive menolak obrolan yang masih berjalan atau masih punya pengingat aktif. Model tetap bisa tertipu oleh teks yang dibacanya: kartu persetujuan adalah pemeriksaan terakhir, jadi bacalah kartu itu sebelum Anda mengklik **Izinkan sekali**.
303
+ - **Asisten** punya satu obrolan untuk semua jendela di Mac ini. Asisten berjalan dengan mode izin workspace-write: asisten hanya menulis file di `~/Assistant`, dan perintah di luar folder itu bertanya dulu. Jika Anda mengalihkan obrolan ke mode tanpa persetujuan (Akses penuh), dsh menolak setiap persetujuan, sehingga asisten tidak dapat mengirim pesan ke obrolan, memulai, menghentikan, atau mengarsipkan obrolan. Kartu persetujuan hanya menjaga enam alat itu: perintah shell dari asisten tetap dapat menjangkau jaringan, seperti di obrolan mana pun dengan mode itu. Di dsh 0.2.0 dan 0.2.1, alat jadwal dsh hanya melihat pengingat milik obrolan asisten itu sendiri, bukan otomatisasi obrolan lain; mulai dsh 0.2.2, alat itu menampilkan dan mengubah setiap tugas terjadwal. chats_list tidak menyertakan obrolan yang diarsipkan, obrolan kosong, obrolan subagen, dan obrolan asisten itu sendiri; “menunggu Anda” berarti ada persetujuan, pertanyaan, atau tinjauan rencana yang terbuka di obrolan yang berjalan. chat_read memberikan pesan pengguna dan balasan agen (tanpa output alat), paling banyak 50 pesan dan sekitar 24.000 karakter. chat_archive menolak obrolan yang masih berjalan atau masih punya pengingat aktif. Model tetap bisa tertipu oleh teks yang dibacanya: kartu persetujuan adalah pemeriksaan terakhir, jadi bacalah kartu itu sebelum Anda mengklik **Izinkan sekali**. Topik paralel memakai alat subagen dsh: profil atau mode izin tanpa alat itu tetap memakai cara lama (satu topik dalam satu waktu, pesan berikutnya menunggu di antrean atau mengarahkan giliran yang berjalan). Model yang menentukan apa yang dihitung sebagai tugas panjang, jadi pertanyaan singkat tetap bisa memakan satu giliran. Subagen setiap topik berjalan dengan tokennya sendiri; saat dsh dimulai ulang, topik yang berjalan berhenti (hasilnya tidak kembali). Hasil kembali sebagai giliran baru di obrolan asisten, jadi hasil itu menunggu saat Anda mengetik di tengah giliran.
304
+ - **Asisten terpisah dari obrolan** dan **Hanya pesan di Asisten** menyembunyikan baris milik dsh sendiri dengan aturan gaya, yang ditemukan lewat markup bilah samping dan obrolan dsh (`data-row-key`, `data-chat-flow-kind`): saat pembaruan dsh mengubah markup itu, obrolan asisten muncul lagi di daftar, atau langkah kerjanya muncul lagi. Baris itu disembunyikan, tidak dihapus: navigasi keyboard dsh di bilah samping tetap dapat mencapai baris yang tersembunyi. **Asisten selalu bebas** menolak setiap panggilan alat obrolan asisten yang bukan salah satu alat singkatnya; model lalu menyerahkan langkah itu ke subagen, tetapi model bisa mencoba panggilan yang ditolak lebih dulu, dan itu memakai satu langkah model. Saat kartu persetujuan menunggu Anda, obrolan asisten tetap dihitung sibuk. Jika permintaan terbarunya tidak punya alat subagen (mode izin atau profil tanpa alat itu), aturan ini tidak melakukan apa pun. **Kabar obrolan dari Asisten** memulai giliran model di obrolan asisten untuk setiap kumpulan kabar, jadi memakai token; saat **Koneksi seluler (iPhone)** aktif, ponsel Anda bisa menerima dua notifikasi untuk satu obrolan yang selesai (notifikasi obrolan itu sendiri dan notifikasi asisten). Kabar yang menunggu hilang saat dsh dimulai ulang. Fitur ini hanya melihat obrolan di Mac ini.
300
305
  - **Dahulukan pesan setelah Hentikan** hanya bekerja setelah Anda menghentikan obrolan (atau setelah giliran yang gagal, atau saat Anda membuka obrolan yang masih punya antrean): pesan yang Anda kirim saat sebuah giliran berjalan tetap menunggu di akhir antrean. Pesan itu hanya mendahului pesan antrean milik Anda sendiri: jika ada putaran tujuan atau balasan pertanyaan yang menunggu di antrean, urutan dsh tetap. Fitur ini membaca bagian dsh yang bukan API publik (apakah giliran yang dihentikan masih sedang berakhir); jika pembaruan dsh mengganti namanya, pesan baru dipindah ke depan setelah giliran itu selesai. Obrolan subagen tetap memakai urutan dsh.
301
306
  - **Memori proyek** milik folder pertama obrolan (folder proyek dsh): obrolan yang mengganti foldernya dengan `cd` tetap memakai memori proyek pertamanya, dan folder yang sama yang dibuka lewat path lain ke file yang sama memakai memori yang sama. Obrolan membekukan bagian memorinya saat dimulai, jadi catatan yang disimpan kemudian muncul mulai obrolan berikutnya (`memory_recall` langsung menemukannya). Tinjauan hanya menyimpan apa yang diputuskan model: tinjauan bisa melewatkan fakta atau menyimpan yang salah; periksa di **Buka memori** dan ubah di sana, atau edit file-nya secara manual saat dsh tertutup. **Buka memori** mengirim catatan proyek yang dipilih dan catatan global (semua proyek saat Anda memilih Semua catatan; paling banyak sekitar 60.000 karakter, sisanya hanya dihitung dan tidak dapat diubah dalam permintaan itu) serta teks Anda ke model default dsh, bukan ke model obrolan. Pratinjau disimpan di Mac selama 30 menit dan sampai dsh dimulai ulang; jika tinjauan atau agen mengubah catatan di antaranya, **Terapkan** menolak dan Anda meminta pratinjau lagi. **Terapkan** menyimpan semua perubahan dari satu pratinjau atau tidak sama sekali: jika satu perubahan tidak bisa disimpan (misalnya MEMORY.md sudah penuh), catatan tetap seperti semula dan alasannya ditampilkan. Setiap giliran selesai yang berisi pesan dari Anda memakan satu panggilan model; panggilan yang gagal membaca pesan yang sama lagi setelah giliran berikutnya. Obrolan subagen tidak ditinjau. Ide dan format file berasal dari [DS Bot](https://github.com/Fei2411/DS-Bot) (Apache-2.0); Composer Plus tidak memakai kodenya dan tidak pernah membaca atau menulis memori milik DS Bot sendiri.
302
307
  - **Riwayat versi memori** menyimpan 50 versi terbaru dari setiap memori (setiap proyek dan memori global); yang lebih lama dihapus. Satu versi berisi seluruh memori proyek itu, bukan satu catatan. **Pulihkan** mengembalikan semua file dari versi itu (termasuk topik) dan menolak jika memori berubah setelah Anda membuka versi itu; memori sebelum pemulihan menjadi versi baru, jadi Anda bisa membatalkannya. Selama sakelar nonaktif, tidak ada versi baru yang disimpan dan **Pulihkan** menolak; versi yang sudah disimpan tetap ada. Tidak ada versi dari sebelum fitur ini: riwayat dimulai dari penyimpanan pertama setelah Anda memasangnya.
@@ -352,6 +357,8 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
352
357
 
353
358
  **Bisakah saya punya obrolan asisten pribadi yang mengingatkan saya dan mengelola obrolan saya yang lain?** Bisa, dengan **Asisten** (aktif secara default): klik **Asisten** di bilah samping kiri. Asisten membuat pengingat dengan tugas terjadwal dsh, mencari di web, menampilkan daftar dan membaca obrolan Anda, serta mengirim pesan ke obrolan atau memulai, menghentikan, atau mengarsipkan obrolan hanya setelah Anda menyetujuinya. Simpan profil Anda di memori proyeknya, topik “profil”.
354
359
 
360
+ **Bisakah asisten tidak muncul di daftar obrolan saya dan bekerja seperti bot?** Bisa. **Asisten terpisah dari obrolan** mengeluarkan obrolannya dari daftar bilah samping dan menampilkan statusnya di baris **Asisten** (oranye saat menunggu Anda). **Hanya pesan di Asisten** menyembunyikan langkah kerjanya. **Asisten selalu bebas** membuat asisten menyerahkan setiap langkah yang lebih lama ke subagen latar belakang, jadi asisten langsung menjawab. **Kabar obrolan dari Asisten** (nonaktif secara default, memakai token) membuat asisten memberi tahu Anda saat obrolan lain selesai, gagal, atau menunggu Anda.
361
+
355
362
  **Bisakah dsh mencadangkan obrolan dan pengaturan saya, seperti dsh-backup?** Bisa: **Pengaturan → Composer Plus → Pencadangan → Cadangkan sekarang**. Fitur ini menulis format arsip yang sama ke folder yang sama (`~/Desktop/dsh-backups`), jadi arsip dsh-backup juga tampil dan dapat dipulihkan, dan Anda dapat menghapus dsh-backup. Aktifkan **Pencadangan otomatis** untuk pencadangan terjadwal.
356
363
 
357
364
  **dsh tidak mau dimulai lagi. Bagaimana cara memulihkan cadangan?** Buka folder cadangan (`~/Desktop/dsh-backups`) dan klik dua kali `Composer Plus Rescue.command` (Linux: `composer-plus-rescue.sh`, Windows: `Composer Plus Rescue.cmd`). Pilih `3) Restore a backup`, pilih satu cadangan, lalu ketik `RESTORE`. Cara ini berjalan tanpa dsh.
@@ -506,6 +513,8 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-queue-edit.mjs /path/to/
506
513
  SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-task-board.mjs /path/to/dsh/lib/bin.js
507
514
  # Assistant: on by default, sidebar row under Task board, one chat in ~/Assistant (workspace-write), a reminder that runs the chat, chats_list, chat_send after its approval card, an injected chat_send rejected, no tools in other chats, automations of other chats (dsh 0.2.2+), switch off
508
515
  SHOT=1 CHECK_DELAY=20 PLAYWRIGHT=/path/to/playwright node test/browser-assistant.mjs /path/to/dsh/lib/bin.js
516
+ # Assistant welcome card: shows above the input on the first open of the assistant chat, goes with the switch and with the first message, not in other chats
517
+ PLAYWRIGHT=/path/to/playwright node test/browser-assistant-welcome.mjs /path/to/dsh/lib/bin.js
509
518
  ```
510
519
 
511
520
  ```sh
package/README.ja.md CHANGED
@@ -29,7 +29,7 @@ dsh plugin --profile web add dsh-composer-plus
29
29
 
30
30
  その後、dsh を再起動してください。(CLI はデスクトップのプロファイルにはインストールできません。デスクトップのプロファイルはアプリが管理します。)
31
31
 
32
- > dsh の pnpm は、公開から 24 時間たっていないバージョンをスキップします。リリース直後は、バージョンを指定してください:`dsh-composer-plus@1.24.1`。
32
+ > dsh の pnpm は、公開から 24 時間たっていないバージョンをスキップします。リリース直後は、バージョンを指定してください:`dsh-composer-plus@1.25.0`。
33
33
 
34
34
  ## 機能
35
35
 
@@ -75,7 +75,11 @@ dsh plugin --profile web add dsh-composer-plus
75
75
  | **保護されたファイル** | <a id="feature-protectedfiles"></a>既定でオンです。エージェント自身のファイルツールは、指定したパターンに一致するファイルを読むことも変更することもできません。**読み取りと書き込み** のパターンでは、ファイルに対する `read`、`read_image`、`grep` が拒否され、どちらの種類でも `write`、`edit`、`str_replace_editor` が拒否されます。エージェントは理由を読み、あなたに確認するよう指示されます。既定のパターンは `.env*`、`*.pem`、`*.key` です。設定 → Composer Plus → **保護されたファイル**:パターンを追加し(例:`published/**` または `config/*.yml`)、種類をクリックして **読み取りと書き込み** と **書き込みのみ** を切り替え、✕ で削除するか、**既定値を使う** をクリックします。`/` を含まないパターンは、どのフォルダーのファイル名にも一致します。これはガードレールであり、サンドボックスではありません。シェルコマンド(`cat .env`)、スクリプト、MCP ツールからはファイルに届くことがあります(「制限事項」を参照)。 | <a href="assets/features/protectedFiles.webp"><img src="assets/features/protectedFiles.webp" width="160" alt="スクリーンショット: 保護されたファイル"></a> |
76
76
  | **ブロックされたコマンド** | <a id="feature-blockedcommands"></a>既定でオンで、リストは空です。エージェントのシェルコマンド(`bash`、`pwsh`)は、指定したルールに一致するコマンドを実行できません。**ブロック** のルールは呼び出しを拒否し(エージェントは理由を読み、あなたに確認するよう指示されます)、**先に確認** のルールは dsh の承認カードを表示します。コマンドは、あなたが許可したときだけ実行されます。設定 → Composer Plus → **ブロックされたコマンド**:ルールを入力し(例:`npm publish`、`git push --force` または `ssh *192.168.2.19`)、種類をクリックして **ブロック** と **先に確認** を切り替えてから、**追加** をクリックします。ルールの種類をクリックすると変更でき、✕ で削除できます。ルールは、コマンド名と、その後にこの順で続く必要がある単語です。`*` は任意のテキストに一致します。`&&`、`;`、`\|` の後、`$(…)`、`bash -c "…"`、`eval` の中、`sudo` や `env` の後にあるコマンドも見つけます。これはガードレールであり、サンドボックスではありません。変数(`$CMD`)、スクリプトファイル、ほかのプログラムからはコマンドを実行できることがあります(「制限事項」を参照)。 | <a href="assets/features/blockedCommands.webp"><img src="assets/features/blockedCommands.webp" width="160" alt="スクリーンショット: ブロックされたコマンド"></a> |
77
77
  | **タスクボード** | <a id="feature-taskboard"></a>左サイドバー → **タスクボード**。dsh のどこでも `Cmd+Shift+K`(Windows と Linux では `Ctrl+Shift+K`)でも開けます。サイドバーと同じライブの状態を表示する、dsh のチャットのカンバンボードです。承認、回答、計画のレビューを待っているチャットはオレンジの点付きで **レビュー** に、実行中のチャットは **作業中** に、まだ開いていない終わったチャットは **完了**(緑)に入ります。チャットを開くと、そのカードは **完了** から自動で外れます。緑のカードの下にある **最近完了 (N)** をクリックすると、読んだ終わったチャットを表示できます(新しい 10 件、続きは **古いタスクを N 件表示**。開閉の状態はこのデバイスに保存されます)。ボードの裏で開いたまま終わったチャット(**新しいタスク**)は、開くまで緑のままです。ボード上部のプロジェクト名をクリックするとプロジェクト一覧が開きます。そこでプロジェクトか **すべてのプロジェクト** を選びます。チャットごとのブランチのフォルダーは、そのプロジェクトとして扱われます。一覧は、選んだとき、`Esc` を押したとき、一覧の外をクリックしたときに閉じます。一覧の上部の **プロジェクトを検索** に入力すると、名前でプロジェクトを探せます(大文字と小文字、アクセント記号は区別しません。`Esc` で入力欄を空にします)。`Enter` を押すと、最初に一致したプロジェクトを選びます。**過去 2 時間以内にアクティブ** をクリックすると、待機中、実行中、未確認のまま完了、または過去 2 時間以内に変更されたチャットがあるプロジェクトだけを表示します(この設定はこのデバイスに保存されます)。**新しいタスク**(または `n`)は、ボードが表示しているプロジェクトで dsh 自身の新しいチャットを開きます(**すべてのプロジェクト** のときは、dsh の新しいセッションが選ぶプロジェクトです)。そのため、ほかのチャットと同じように、ファイルを追加し、コマンドを使い、モデルを選べます。最初のメッセージを送ると、自動でボードに戻ります。それまで、そのチャットは **作業中** の一番上で **新しいタスク** として待ちます。クリックすると、最初のメッセージを書けます。あなたを待っているチャットがあるプロジェクトには、プロジェクト一覧でオレンジの点が付きます(どれかのチャットが待っている間は、上部のプロジェクト名にも付きます)。dsh がチャットに名前を付け、チャットのモデルがそのメッセージから最大 3 個のタグを付けます。カードをクリックすると、そのチャットが開きます。オレンジのカード(またはその **回答**)をクリックすると、ボード上で回答できます。チャット全体はパネルの **チャットを開く** で開けます。承認のリクエストには **拒否** か **1回だけ許可**、計画には **承認** か **変更をリクエスト**、質問には選択肢か自分のテキストで答えます。終わったカードで **×** をクリックすると、そのカードをボードから外せます。**最近完了** を開いて **完了** の上部にある **すべてクリア** をクリックすると、それらのカードをボードから外せます。先に、どのプロジェクトのカードが何枚外れるかが表示され、未読(緑)のカードは残ります。その後 8 秒間は、**元に戻す** でカードを戻せます。**完了** の下の **外したカード (N)** には、ボードから外したカードが一覧表示され、**ボードに戻す** で 1 枚を再び **完了** に表示できます。チャットは削除されません。チャットは dsh のサイドバーに残り、ボードは再起動の後もこれを覚えています(Tether にも同じボードが表示されます)。再び実行されたチャットは、ボードに戻ります。**作業中** のカードにポインターを合わせる(またはキーボードのフォーカスを移す)と、その進行状況が表示されます。実行時間、ToDo リストのステップ、いま実行中のツール、エージェントの最後の行です。設定 → Composer Plus → タスクボード の **ホバーで進行状況を表示** で、**高速(AI なし)**(既定:チャットを読むだけです)か **AI の要約**(チャットのモデルを短く 1 回呼び出し、1〜2 文も書きます)を選びます。 | <a href="assets/features/taskBoard.webp"><img src="assets/features/taskBoard.webp" width="160" alt="スクリーンショット: タスクボード"></a> |
78
- | **アシスタント** | <a id="feature-assistant"></a>既定ではオンです(**設定 → Composer Plus** でオフにできます)。左サイドバーの **アシスタント**(**タスクボード** のすぐ下)をクリックします。ChatGPT や Grok のチャットのように、パーソナルアシスタントとして使う、長く続く 1 つのチャットが開きます。最初のクリックでフォルダー `~/Assistant` を作り、それをプロジェクト「Assistant」として追加し、workspace-write 権限モードと dsh の既定のモデルでチャットを開始します。その後のクリックでは、毎回同じチャットが開きます(アーカイブしたチャットは戻り、削除したチャットは新しく作られます)。リマインダーを頼むと(「2 分後に水を飲むようにリマインドして」)、dsh のスケジュールされたタスクを使います。そのため、その時刻にリマインダーがチャットを実行し、モバイル接続がオンのときは Tether が「Turn finished」の通知を送ります。Web の検索や、ほかのチャットについても頼めます。すべてのプロジェクトのチャット(実行中、あなたを待っている、アイドル)を一覧表示し、1 つのチャットの最新のメッセージを読めます。また、チャットへのメッセージ送信、プロジェクトでの新しいチャットの開始、実行中のチャットの停止、チャットのアーカイブもできます。この 4 つの操作は、それぞれ先に dsh の承認カードを表示し(Tether にも表示されます)、あなたが **1回だけ許可** をクリックするまで何も起きません。削除のツールはありません。これらのツールと短い指示があるのは、このチャットだけです。Web ページやほかのチャットで読んだテキストは、命令ではなくデータとして扱われます。毎回プロフィールを伝える代わりに、このプロジェクトのメモリー(**プロジェクトメモリー**、トピック「profil」)に保存してください。 | <a href="assets/features/assistant.webp"><img src="assets/features/assistant.webp" width="160" alt="スクリーンショット: アシスタント"></a> |
78
+ | **アシスタント** | <a id="feature-assistant"></a>既定ではオンです(**設定 → Composer Plus** でオフにできます)。左サイドバーの **アシスタント**(**タスクボード** のすぐ下)をクリックします。ChatGPT や Grok のチャットのように、パーソナルアシスタントとして使う、長く続く 1 つのチャットが開きます。最初のクリックでフォルダー `~/Assistant` を作り、それをプロジェクト「Assistant」として追加し、workspace-write 権限モードと dsh の既定のモデルでチャットを開始します。その後のクリックでは、毎回同じチャットが開きます(アーカイブしたチャットは戻り、削除したチャットは新しく作られます)。チャットにまだメッセージがない間は、入力欄の上に短いカードが表示され、アシスタントにできることと 3 つの依頼例を示します。最初のメッセージを送ると消えます。リマインダーを頼むと(「2 分後に水を飲むようにリマインドして」)、dsh のスケジュールされたタスクを使います。そのため、その時刻にリマインダーがチャットを実行し、モバイル接続がオンのときは Tether が「Turn finished」の通知を送ります。バックグラウンドで働く友人に話すように話しかけてください。時間がかかる作業(調査、いくつかの手順)は、その作業専用のバックグラウンドのサブエージェントに任され、チャットは何を始めたかを 1 行で伝えて、すぐに手が空きます。最初の話題がまだ実行中でも、2 つ目の話題を始められます。話題ごとに専用のサブエージェントが付き、それぞれの結果は準備ができた時点でこのチャットに届きます。Web の検索や、ほかのチャットについても頼めます。すべてのプロジェクトのチャット(実行中、あなたを待っている、アイドル)を一覧表示し、1 つのチャットの最新のメッセージを読めます。また、チャットへのメッセージ送信、プロジェクトでの新しいチャットの開始、実行中のチャットの停止、チャットのアーカイブもできます。この 4 つの操作は、それぞれ先に dsh の承認カードを表示し(Tether にも表示されます)、あなたが **1回だけ許可** をクリックするまで何も起きません。削除のツールはありません。これらのツールと短い指示があるのは、このチャットだけです。Web ページやほかのチャットで読んだテキストは、命令ではなくデータとして扱われます。毎回プロフィールを伝える代わりに、このプロジェクトのメモリー(**プロジェクトメモリー**、トピック「profil」)に保存してください。 | <a href="assets/features/assistant.webp"><img src="assets/features/assistant.webp" width="160" alt="スクリーンショット: アシスタント"></a> |
79
+ | **アシスタントをチャットと分ける** | <a id="feature-assistantapart"></a>既定ではオンです(**設定 → Composer Plus** でオフにできます)。アシスタントのチャットは左サイドバーのチャット一覧から外れるので、プロジェクトのチャットの間に並びません。**アシスタント** で開きます。ほかのチャットがない間は、そのプロジェクト「Assistant」も外れます。サイドバーの検索では、そのままチャットが見つかります。**アシスタント** の行の点が、アシスタントの状態を示します。作業中(バックグラウンドの話題の実行中も含む)、あなたを待っている(オレンジ色:承認、質問、計画のレビュー)、新しい返信(緑色)です。アシスタントのチャットを開いている間は、**アシスタント** の行が開いている行として表示されます。オフにすると、チャットは一覧に戻り、行に点は表示されません。 | <a href="assets/features/assistantApart.webp"><img src="assets/features/assistantApart.webp" width="160" alt="スクリーンショット: アシスタントをチャットと分ける"></a> |
80
+ | **アシスタントはメッセージのみ** | <a id="feature-assistantchatview"></a>既定ではオンです(**設定 → Composer Plus** でオフにできます)。アシスタントのチャットは、ボットとのチャットのように見えます。ツール呼び出し、推論、ステップのグループ、「Completed in」の行は非表示になり、あなたのメッセージ、アシスタントの返信、エラー、承認カードが表示されます。ほかのチャットは変わりません。アシスタントの作業ステップをもう一度表示するには、オフにします。 | <a href="assets/features/assistantChatView.webp"><img src="assets/features/assistantChatView.webp" width="160" alt="スクリーンショット: アシスタントはメッセージのみ"></a> |
81
+ | **常に手が空いたアシスタント** | <a id="feature-assistantfree"></a>既定ではオンです(**設定 → Composer Plus** でオフにできます)。アシスタントのチャットはすぐに答え、長い作業でふさがることはありません。呼び出すのは自分の短いツール(あなたのチャット、リマインダー、メモリー、サブエージェント)だけです。Web 検索、Web ページ、ファイル、コマンドなど、ほかのステップはすべてバックグラウンドのサブエージェントに任せます。チャットは何を始めたかを 1 行で伝え、次のメッセージをすぐに受け付けます。結果は準備ができるとチャットに届きます。サブエージェントは通常どおり動作します。アシスタントのチャットにサブエージェントのツールがないとき(権限モードまたはプロファイルのため)、このルールは何もせず、**設定** にそのことが表示されます。 | <a href="assets/features/assistantFree.webp"><img src="assets/features/assistantFree.webp" width="160" alt="スクリーンショット: 常に手が空いたアシスタント"></a> |
82
+ | **アシスタントからチャットのお知らせ** | <a id="feature-assistantnotify"></a>既定ではオフです。お知らせの 1 行ごとにアシスタントのチャットのモデルのターンになるため、トークンを使います。**設定 → Composer Plus** でオンにしてください。オンにすると、ほかのチャットが長いターン(1 分以上)を終えたとき、失敗したとき、または 30 秒間あなたを待っているとき(承認、質問、計画のレビュー)、アシスタントが自分のチャットで知らせます。チャットごとに短い 1 行で、そのチャットのタイトルとプロジェクトを添えます。お知らせは 15 秒間まとめられ、届くのは最大で 2 分に 1 回です。アシスタントが作業中のときは、そのターンが終わるまで待ちます。あなたが停止したチャット、短いターン、アシスタント自身のチャットはお知らせになりません。**モバイル接続(iPhone)** がオンのときは、Tether がアシスタントのいつもの「Turn finished」の通知を受け取ります。 | <a href="assets/features/assistantNotify.webp"><img src="assets/features/assistantNotify.webp" width="160" alt="スクリーンショット: アシスタントからチャットのお知らせ"></a> |
79
83
  | **プロジェクトメモリー** | <a id="feature-projectmemory"></a>既定ではオフです。**設定 → Composer Plus** でオンにしてください。プロジェクトのフォルダーごとに専用のメモリーがあり、そのプロジェクトの後のチャットが読みます。DS Bot が Bot ごとにメモリーを持つのと同じです。ターンが終わるたびに、チャットのモデルを 1 回呼び出して新しいメッセージ(ロールバックしたものは除きます)を読み、長く続く好み、決定、事実を短いメモとして保存し、古いメモを変更または削除します。エージェントも自分でメモを保存、削除、検索できます(`memory_remember`、`memory_forget`、`memory_recall`)。メモはグローバルにもでき、その場合はすべてのプロジェクトが読みます。新しいチャットはシステムプロンプトでメモを受け取ります。後で保存したメモは次のチャットから表示されます。ファイルは dsh のホームフォルダーにある Markdown(`storages/dsh-composer-plus/memory/`)で、プロジェクトのフォルダーには保存されません。 同じ行の **メモリーを開く** は、保存されたすべてのメモをプロジェクトごと(とグローバルメモリー)にまとめて表示し、絞り込みもできます。変更する内容を自分の言葉で書き(例:「yarn から pnpm に変えた」)、**変更をプレビュー** を押します。dsh の既定のモデルが変更を提案し、**適用** を押したときだけ保存されます。Tether では: チャットのタイトルメニュー → Project memory。 | <a href="assets/features/projectMemory.webp"><img src="assets/features/projectMemory.webp" width="160" alt="スクリーンショット: プロジェクトメモリー"></a> |
80
84
  | **メモリーのバージョン履歴** | <a id="feature-memoryhistory"></a>**プロジェクトメモリー** がオンの間、既定でオンです。メモリーを保存するたびに(エージェント、ターン後のレビュー、**メモリーを開く**)、保存前のメモのコピーが残ります。**メモリーを開く** でプロジェクトまたは **グローバルメモリー** を選び、**履歴** を押すと、日付順のバージョンと、それぞれの後にメモリーを変更したものが表示されます。バージョンを選ぶと復元で変わる内容が差分で表示され、**復元** できます。復元前のメモも残るので、復元は元に戻せます。各メモリーの最新 50 バージョンが残ります。Tether では:チャットのタイトルメニュー → Project memory → History。 | <a href="assets/features/memoryHistory.webp"><img src="assets/features/memoryHistory.webp" width="160" alt="スクリーンショット: メモリーのバージョン履歴"></a> |
81
85
  | **メモリーを AGENTS.md に書き出す** | <a id="feature-memoryexport"></a>**メモリーを開く** でプロジェクトを選び、**AGENTS.md に書き出す** を押すと、そのプロジェクトのメモがフォルダー内の `AGENTS.md` の目印付きセクションに書かれます。コミットしてチームや他のエージェントツールと共有できます。まず変更が差分で表示され、**AGENTS.md に書き込む** を押したときだけ保存されます。次の書き出しはこのセクションだけを置き換えます。グローバルメモリー、出典、日付は書かれません。Tether では:チャットのタイトルメニュー → Project memory → Export to AGENTS.md。 | <a href="assets/features/memoryExport.webp"><img src="assets/features/memoryExport.webp" width="160" alt="スクリーンショット: メモリーを AGENTS.md に書き出す"></a> |
@@ -104,7 +108,7 @@ dsh plugin --profile web add dsh-composer-plus
104
108
  | **選択肢ボタン** | <a id="feature-optionpicks"></a>回答が選択肢のリスト(「選択肢」見出しまたは太字の「選択肢」行の下にある 1~9 項目の番号付きリスト。「次のステップ」やアプリの各言語の同じ語も対象)で終わると、回答の下に選択肢ごとのボタンが表示されます。クリックすると、選択肢全体を含む「Option N: …」が、入力したのと同じようにあなたのメッセージとして送信されます。「(推奨)」の付いた選択肢は強調されます。ボタンは最新の回答の下にだけ、チャットが待機中で入力欄が空のときに表示されます。選択済みの回答と、ロールバックで取り消された回答には表示されません。ボタンの表示中は、次のメッセージの予測は候補を出しません。エージェントの質問カードでは、1~9 キーでクリックと同じくその選択肢を選べます(回答欄の中と、質問が表示されてから最初の 0.8 秒間は除く)。 | <a href="assets/features/optionPicks.webp"><img src="assets/features/optionPicks.webp" width="160" alt="スクリーンショット: 選択肢ボタン"></a> |
105
109
  | **アプリケーションの言語** | <a id="feature-language"></a>設定 → Composer Plus → **アプリケーションの言語** で、dsh のインターフェース全体を Türkçe、Español、Português (Brasil)、Français、Deutsch、Русский、日本語、한국어、Bahasa Indonesia、Tiếng Việt、हिन्दी のいずれかに切り替えます(下記を参照)。 | <a href="assets/features/language.webp"><img src="assets/features/language.webp" width="160" alt="スクリーンショット: アプリケーションの言語"></a> |
106
110
  | **モバイル接続(iPhone)** | <a id="feature-mobileconnect"></a>[Tether](tether/) アプリを使うと、同じ Wi-Fi で、または [Tailscale](https://tailscale.com) 経由で、iPhone から dsh を使えます。**設定 → Composer Plus** でオンにしてください(この Mac でネットワークポートを開くため、既定ではオフです)。次に、サイドバーの左下にある **モバイル接続** をクリックします。iPhone のカメラ(**Open in Tether** をタップ)または Tether の **Scan code** で QR コードを読み取り、**Connect** をタップして、**Approve** をクリックします。先に Tether をインストールしてください。Tether がないと、カメラはこのコードを開けません。スマートフォンでは、チャットの表示、メッセージの送信(写真付き:入力欄の **+** → Camera、Photos、Paste image)、承認と質問への回答、モデルとエージェントの切り替えができます。ペアリングできる Mac の数に制限はありません。アプリの左上にある Mac の名前で、Mac を切り替えます。**モバイル接続** パネルには、ペアリング済みの iPhone が最後の接続日時とともに表示され、**Remove** でその iPhone をすぐに切断できます。「Tailscale only」はローカルネットワークからの接続を拒否し(共有の Wi-Fi 向け)、アクセスログには接続を試みた相手が表示されます。Tether では、「Settings → Privacy」で Face ID によるアプリのロックを設定できます。 | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="スクリーンショット: モバイル接続(iPhone)"></a> |
107
- | **リモートコンピュータ** | <a id="feature-remotecomputers"></a>[Tailscale](https://tailscale.com) 経由でほかの Mac の dsh を開き、この dsh のウインドウで使えます。各 Mac の **設定 → Composer Plus** でオンにしてください(ネットワークポートを開くため、既定ではオフです)。開きたい Mac で **ほかのコンピュータからこの Mac を開けるようにする** をオンにし、**ペアリングリンクを作成** をクリックして、リンクをコピーします。この Mac では、左サイドバーのコンピュータの選択メニュー(ブランド名の右、**新しいセッション** の上)で **コンピュータを追加…** を選び、リンクを貼り付けて、**名前** を入力し(この Mac やほかのコンピュータと同じ名前は使えません)、**接続** をクリックします。次に、もう一方の Mac で **承認** をクリックします。以後、選択メニューには **この Mac** とあなたのコンピュータが表示されます。1 台を選ぶと、その dsh がこのウインドウ全体に表示され、そのコンピュータ自身のチャット、サイドバー、ツール、ファイルを使えます。その間も、この Mac は裏で動き続けます。選択メニューは同じ場所にあり、**この Mac に戻る** と表示されます。クリックすると戻れます。コンピュータが 2 台以上ある場合は、クリックでメニューが開きます。そこで **この Mac** か別のコンピュータを選びます。設定パネルでは、コンピュータの名前の変更と削除ができ、この Mac を開けるコンピュータの一覧も表示されます(**削除** でその 1 台をすぐに切断できます)。 | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="スクリーンショット: リモートコンピュータ"></a> |
111
+ | **リモートコンピュータ** | <a id="feature-remotecomputers"></a>[Tailscale](https://tailscale.com) 経由でほかの Mac の dsh を開き、この dsh のウインドウで使えます。各 Mac の **設定 → Composer Plus** でオンにしてください(ネットワークポートを開くため、既定ではオフです)。開きたい Mac で **ほかのコンピュータからこの Mac を開けるようにする** をオンにし、**ペアリングリンクを作成** をクリックして、リンクをコピーします。この Mac では、左サイドバーのコンピュータの選択メニュー(ブランド名の右、**新しいセッション** の上)で **コンピュータを追加…** を選び、リンクを貼り付けて、**名前** を入力し(この Mac やほかのコンピュータと同じ名前は使えません)、**接続** をクリックします。次に、もう一方の Mac で **承認** をクリックします。以後、選択メニューには **この Mac** とあなたのコンピュータが表示されます。1 台を選ぶと、その dsh がこのウインドウ全体に表示され、そのコンピュータ自身のチャット、サイドバー、ツール、ファイルを使えます。その間も、この Mac は裏で動き続けます。選択メニューは同じ場所にあり、**この Mac に戻る** と表示されます。クリックすると戻れます。ほかのコンピュータが 1 台だけの場合は、選択メニューをクリックすると、この Mac とそのコンピュータがすぐに切り替わります(メニューは開きません)。メニュー全体(**コンピュータを追加…**)を開くには、選択メニューを右クリックします。コンピュータが 2 台以上ある場合は、クリックでメニューが開きます。そこで **この Mac** か別のコンピュータを選びます。設定パネルでは、コンピュータの名前の変更と削除ができ、この Mac を開けるコンピュータの一覧も表示されます(**削除** でその 1 台をすぐに切断できます)。 | <a href="assets/features/remoteComputers.webp"><img src="assets/features/remoteComputers.webp" width="160" alt="スクリーンショット: リモートコンピュータ"></a> |
108
112
  | **自動アップデート** | <a id="feature-autoupdate"></a>dsh の起動時に、プラグインは [GitHub の最新リリース](https://github.com/furkancak1r/dsh-composer-plus/releases/latest) を確認します。そのリリースのほうが新しく、すでに npm にある場合は、dsh 標準のプラグインマネージャー(設定 → プラグインと同じ経路)でそのバージョンをインストールし、通知します。読み込むには、dsh を再起動してください。**設定 → Composer Plus → Composer Plus のアップデート** にはバージョンが表示され、**アップデートを確認** / **今すぐアップデート** のボタンがあります。新しいバージョンで dsh を初めて起動すると、**Composer Plus N の新機能** ウィンドウにそのバージョンのリリースノートが **アプリケーションの言語** で選んだ言語で 1 回だけ表示されます(ノートは新しいバージョンに含まれていて、追加の通信はありません。その言語のノートがない場合は英語のノートが表示されます)。**閉じる** または `Esc` で閉じます。ノートの下に GitHub のスターをお願いする 1 行が、30 日に 1 回まで表示されます(通信はありません)。**GitHub でスターを付ける** または **今後は表示しない** をクリックすると、もう表示されません。 設定 → プラグイン やコピーしたフォルダーで更新した後も、新しいバージョンごとに 1 回このウィンドウが表示されます。最初のインストール時には表示されません。更新の行にある **このバージョンの新機能** で再び開けます。実行中のバージョンより新しいバージョンがディスクにある場合、行に dsh を再起動するよう表示されます。 | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="スクリーンショット: 自動アップデート"></a> |
109
113
  | **オン/オフ フィルター** | <a id="feature-featurefilter"></a>**設定 → Composer Plus** の **機能を検索** の横にあります。**すべて** はすべての機能を、**オン** はスイッチがオンの機能だけを、**オフ** はスイッチがオフの機能だけを表示します。判断するのは各行のスイッチで、dsh の Host が保存するスイッチ(たとえば **モバイル接続**)も含みます。検索と一緒に使えます。語を入力して **オフ** を選ぶと、オフにした機能が見つかります。**オン** または **オフ** を選んでいるときに切り替えた行は、もう一度フィルターを選ぶまで残るので、フォーカスはそのスイッチにとどまります。**オン** と **オフ** では、**アプリケーションの言語** と **Composer Plus のアップデート** の行は表示されません(スイッチがないため)。設定は毎回 **すべて** で開きます。 | <a href="assets/features/featureFilter.webp"><img src="assets/features/featureFilter.webp" width="160" alt="スクリーンショット: オン/オフ フィルター"></a> |
110
114
  | **issue を報告** | <a id="feature-issuereport"></a>設定 → Composer Plus → **issue を報告…**(冒頭の説明の下)、またはサイドバーのチャットを右クリック(またはチャットの **…** メニューを開く)→ **Composer Plus の issue を報告…**。種類を選びます:**バグ**、**機能リクエスト**、**改善**、**翻訳**、または **質問**。自分の言葉と言語で内容を書き、**下書きを書く**(または `Cmd/Ctrl+Enter`)をクリックします。dsh の既定のモデルを 1 回呼び出して、英語の issue を書きます。内容は、種類の接頭辞が付いたタイトル(例:`[Bug]`)、その種類のセクション(バグの場合:What happened、Steps to reproduce、Expected、Actual)、Composer Plus、dsh、システムのバージョンを書いた 1 行です。タイトルと説明を読んで編集してください。**もう一度書く** で新しい下書きを書きます。**issue を作成** は、あなたの GitHub CLI(`gh`)のログインで Composer Plus の GitHub リポジトリに issue を作成し、そのリンクを表示します。issue は公開されます。キーやパスワードのように見えるテキストは拒否されます。`gh` で作成できないときは、**代わりに GitHub で開く** が、下書きを入力した GitHub 自身のページを開きます。 | <a href="assets/features/issueReport.webp"><img src="assets/features/issueReport.webp" width="160" alt="スクリーンショット: issue を報告"></a> |
@@ -199,7 +203,7 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
199
203
  - **新しいチャットで続ける:** クリックするまで、何も実行されません。クリックすると、ホスト側はチャット(目標チェックと同じ読み方です。推論とロールバックで取り消したステップは含みません)をチャット自身のモデルに送り、引き継ぎメモを表示します。新しいチャットを作るのは **新しいチャットを開始** だけです。プロジェクトには何も書き込みません。
200
204
  - **コンテキストの内訳:** ホスト側でチャットのログだけを読みます。モデル呼び出しはせず、プロジェクトのファイルも読みません。
201
205
  - **タスクボード:** ボードは、このウィンドウにある dsh 自身の一覧から、dsh 自身のチャットを表示します。独自のチャットデータは追加しません。**新しいタスク** は dsh 自身の新しいチャットを開き、最初のメッセージはあなたが dsh の入力欄で書きます。そのため、承認、サンドボックス、チャットのモデルはいつもどおり適用されます。ホスト側は、そのチャットの最初のメッセージをカードのプロンプトとして保存し、最大 3 個のタグを得るために、それ(最初の 4,000 文字だけで、ほかには何も送りません)を、ツールなしのもう 1 回のリクエストでそのチャットのモデルに送ります。各タスクのプロンプト、タグ、開始時刻は `$DSH_HOME/storages/dsh-composer-plus/board-chats.json`(所有者のみのファイル、最新の 2,000 件)に保存されます。**×** または **すべてクリア** でボードから外したチャットの ID(最新の 5,000 件)も、このファイルに保存されます。スイッチはその隣の `board-switch.json` にあります。プロジェクトのフォルダーには何も書き込みません。**回答** は、チャット自身のカードと同じ方法で、dsh 自身の保留中のリクエストに回答を送ります。以前のバージョンの古いタスク一覧(`board.json`)はディスク上にそのまま残り、読み込まれません。**ホバーで進行状況を表示** は、この Mac 上でチャットのログを読みます。**高速(AI なし)**(既定)では何も送りません。**AI の要約** では、実行中のカードの進行状況ボックスが表示されている間(または Tether のボードが開いている間、実行中のカード最大 8 枚について)、ホスト側がそのチャットの最新の部分(最大で約 6,000 文字。あなたのメッセージ、エージェントのテキストの返信、そのツール呼び出しと結果の末尾。推論とロールバックで取り消したメッセージは含みません)を、ツールなしの 1 回のリクエストでチャットのモデルに送ります。再び送るのはチャットが進んだ後だけで、チャットごとに最大 20 秒に 1 回です。メモはメモリーにだけ保持されます。設定は `$DSH_HOME/storages/dsh-composer-plus/board-progress.json`(所有者のみのファイル)にあります。
202
- - **アシスタント:** アシスタントのチャットは、`~/Assistant` にある通常の dsh のチャットです。モデルの呼び出しは、ほかのチャットと同じく dsh の既定のモデルに送られます。ツールは、この Mac 上でほかのチャットのログ(タイトル、プロジェクト、状態、chat_read ではその最新のメッセージ)を読み、モデルがツールを呼び出したときだけ、それをそのモデルに渡します。チャットへの送信、開始、停止、アーカイブは、それぞれあなたの承認を待ちます。チャットの ID は `$DSH_HOME/storages/dsh-composer-plus/assistant.json` に、スイッチは `assistant-switch.json` に保存されます(所有者のみのファイル)。リマインダーと自動化は dsh 自身のスケジュールされたタスクです。このチャットが行うモデルのリクエストと Web 検索のほかには、何もこの Mac の外に出ません。
206
+ - **アシスタント:** アシスタントのチャットは、`~/Assistant` にある通常の dsh のチャットです。モデルの呼び出しは、ほかのチャットと同じく dsh の既定のモデルに送られます。ツールは、この Mac 上でほかのチャットのログ(タイトル、プロジェクト、状態、chat_read ではその最新のメッセージ)を読み、モデルがツールを呼び出したときだけ、それをそのモデルに渡します。チャットへの送信、開始、停止、アーカイブは、それぞれあなたの承認を待ちます。チャットの ID は `$DSH_HOME/storages/dsh-composer-plus/assistant.json` に、スイッチは `assistant-switch.json` に保存されます(所有者のみのファイル)。リマインダーと自動化は dsh 自身のスケジュールされたタスクです。このチャットが行うモデルのリクエストと Web 検索のほかには、何もこの Mac の外に出ません。アシスタントをボットとして使うためのスイッチは、状態を `assistant-free.json` と `assistant-notify.json` に保存します(所有者のみのファイル)。**アシスタントからチャットのお知らせ** は、ほかのチャットについての短い 1 行(タイトル、プロジェクト、最後の返信またはエラーの最大 300 文字)をアシスタントのチャットに入れます。そのため、そのテキストもアシスタントのモデルに送られます。待っているお知らせは、メモリー上にだけ保持されます。
203
207
  - **保護されたファイル:** リストとスイッチは `$DSH_HOME/storages/dsh-composer-plus/protected-files.json`(所有者のみのファイル)にあります。チェックが読むのは、各ファイルツール呼び出しのパス(とその実際のパス)だけで、ファイルそのものは読みません。
204
208
  - **ブロックされたコマンド:** ルールとスイッチは `$DSH_HOME/storages/dsh-composer-plus/blocked-commands.json`(所有者のみのファイル)にあります。チェックが読むのは、各 `bash` と `pwsh` 呼び出しのコマンドテキストだけです。何も実行せず、何も送信しません。
205
209
  - **シークレット入力:** 値は回答リクエストの中だけで、カードから(または Tether から、リクエスト本文を記録しないゲートウェイ経由で)Host に送られます。Host は値を `$DSH_HOME/storages/dsh-composer-plus/secrets/<ランダムな名前>` に書き込みます(フォルダ 0700、ファイル 0600)。プロジェクト、チャットの記録、ツール結果には何も書き込まれません。Host はそのチャットの後のツール結果で値を `[secret]` に置き換えるため、値をメモリに保持します。ファイルとこのコピーは、そのチャットのターンが終わったときと dsh の起動時に削除されます。スイッチは同じ場所の `secrets.json` にあります。エージェントがこのファイルを使って実行するコマンドは、そのコマンドの送信先に値を送れます。それがこの機能の目的です。
@@ -226,7 +230,7 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
226
230
  - **チャット行にブランチのラベルがない:** 原因は次のいずれかです。サイドバーが「1つのリスト」表示ではない(「ワークスペース」と「ワークスペースのツリー」では、どのチャット行にもラベルは表示されません)。このバージョンをインストールしてから、そのチャットにターンがない。フォルダーが git リポジトリではない。**チャット行の Git ブランチ** がオフになっている。アップデートの後は、dsh を再起動してください(ブランチはホスト側が記録します)。
227
231
  - **目標チェックで、テストが終了コード 127 または「not found」で終了したと表示される:** Finder や Dock から起動した dsh は、ターミナルより PATH が短いことがあるため、`npm`、`pnpm`、`cargo` が見つかりません。ターミナルから dsh を起動するか、**目標チェック** → **編集** で、フルパスを使った独自のテストコマンドを設定してください。**今すぐ実行** を使うと、すぐに結果が表示されます。
228
232
  - **目標が閉じず、エージェントが作業を続ける:** **目標チェック** が、失敗したテストまたは足りない作業を見つけました。目標の下の行に理由が表示されます(詳細は、結果にポインターを合わせると表示されます)。原因またはテストコマンドを直すか、`/goal` または目標バーで目標を自分で完了してください(その完了はチェックされません)。
229
- - **リリース直後にインストールが失敗する:** バージョンを指定してください(`dsh-composer-plus@1.24.1`)。上のインストールの注記を参照してください。
233
+ - **リリース直後にインストールが失敗する:** バージョンを指定してください(`dsh-composer-plus@1.25.0`)。上のインストールの注記を参照してください。
230
234
  - **今すぐバックアップ で「別のバックアップ操作を実行中です」と表示される:** 別の dsh のウィンドウ、またはレスキューコンソールで操作が実行中です(どちらも、バックアップフォルダーのロックファイル `.composer-plus.lock` を共有します)。完了するまで待ってください。実行中の操作がない場合は、次のクリックで、終了したプロセスのロックを引き継ぎます。
231
235
  - **レスキューコンソールで「dsh is running」と表示される:** まず dsh を終了してください。dsh が本当に閉じている場合、メッセージに示されたファイルはクラッシュで残ったものです。そのファイルを削除して、もう一度試してください。
232
236
  - **復元の後に dsh が起動しない、またはプラグインが見つからない:** プロファイルのプラグインパッケージを、もう一度インストールする必要があります。レスキューコンソールが、復元の後にこれを提案します。または、コンソールが一覧表示する `$DSH_HOME/profiles/` の下の各フォルダーで `pnpm install` を実行してください。vault に入っていなかったシークレット(別のコンピュータ)は、もう一度入力する必要があります。コンソールがそれらを一覧表示します。
@@ -260,7 +264,7 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
260
264
  - **質問カードをウィンドウに合わせる**は dsh の質問カードだけを変更し、計画レビューのカードは変更しません。カードは dsh のマークアップ(`data-question-key`、`data-question-scroll`)で見つけます。dsh の更新でこのマークアップが変わると、カードは dsh が描くとおりに表示されます。カードの高さはチャットではなくウィンドウに従います。狭いサイドパネル内のチャットでは、高いカードがチャットの上にはみ出すことがあります。
261
265
  - **チャットのヘッダーをウィンドウに合わせる**は、dsh が生成したクラス名(`_titleRow`、`_titleCluster`、`_crumbs`、`_headerActions`、`_headerUtilities`)でチャットのヘッダーを見つけます。dsh にはヘッダーのレイアウト用のフックがないためです。dsh の更新でこれらの名前が変わると、ヘッダーは dsh の表示のままになります。とても狭いチャット列ではヘッダーが 2〜3 行になり、メッセージの上の領域が低くなります。
262
266
  - **モバイル接続** は macOS でのみ動作します(`en0`、`openssl`、`swift`、`dns-sd` を使います)。固定のポート 19390 と 19391 を使うため、各 Mac でこれを実行できる dsh は、一度に 1 つだけです(スマートフォンの Mac の一覧では、各 Mac が 1 項目になります)。`apns.json` に APNs キーがあると(`tether/README.md` を参照)、Mac は Apple のプッシュサービスで通知を送るため、Tether を閉じていても通知が届きます。Mac はスリープせず、dsh が開いている必要があります。キーがない場合、スマートフォンが通知を受け取るのは、Tether が開いているとき、またはバックグラウンドに移った直後だけです。Tether で「Settings → Notifications → Send notifications」をオンにするまで、Tether は通知を送りません。Tether は、この設定と時間帯をペアリング済みの Mac ごとに別々に保存します。この設定はどの Mac でも初期状態でオフで、オンにしたときに iOS が許可を求めます。iOS アプリは、まだ App Store にありません。Xcode で `tether/ios` からビルドしてください。「Tailscale only」でも、Mac に Wi-Fi または Ethernet のアドレスが必要です(ゲートウェイは、そのアドレスがある場合だけ起動します)。アクセスログは Mac ごとに保存され、最新 200 件の試行だけを残します。1 分以内に繰り返された試行は、新しい行を作らず、同じ行の回数を 1 つ増やします。各通知には Mac とチャットのプロジェクト(`Studio Mac · recipe-box`)、チャットのタイトル、本文が表示されます。Turn finished にはエージェントの最後の返信が表示されます。APNs キーがある場合、この本文は Apple のプッシュサービスを通ります。Tether のアプリのロックは、iPhone のロック画面に表示される通知のプレビューを隠しません。iOS の設定でオフにしてください。Tether の緑の点は Mac に従います。dsh で開いたチャットは、スマートフォンでも点が消えます。Tether で開いたチャットは、スマートフォンでだけ点が消えます。Mac 上の dsh 自身の点は、Mac でそのチャットを開くまで残ります。
263
- - **リモートコンピュータ** を使うには、両方の Mac に Tailscale が必要です。また、開く対象の Mac に、この機能をオンにした Composer Plus が必要です。その Mac はスリープしておらず、dsh が動作している必要があります。選択メニューは、左サイドバーを開いているときだけ表示されます(アイコンだけの表示では表示されません)。もう一方の Mac のページに自身の選択メニューがない場合(そちらの Composer Plus が 1.23.0 より古い場合)、この Mac の選択メニューが同じ場所でそのページの上に表示されます。そちらが 1.23.0 の場合、選択メニューにはその Mac の名前が表示されます。戻るには、そのメニューで **この Mac** を選びます。開いた各コンピュータのページは、この機能をオフにするか dsh を再起動するまでメモリに残ります。デスクトップアプリでは、もう一方の Mac のページは埋め込みページです。dsh 自身のキーボードショートカット(たとえば新しいチャット)はその中では動作せず、ファイルのダウンロード、マイク、通知もそこでは動作しません。ポート 19392 を使います(ほかのコンピュータを受け入れられる dsh は、各 Mac で 1 つだけです)。ほかの Mac のページの選択メニューは、この Mac のコンピュータの間でしか切り替えられません。そのため、もう一方の Mac を経由して 3 台目の Mac は開けません。
267
+ - **リモートコンピュータ** を使うには、両方の Mac に Tailscale が必要です。また、開く対象の Mac に、この機能をオンにした Composer Plus が必要です。その Mac はスリープしておらず、dsh が動作している必要があります。選択メニューは、左サイドバーを開いているときだけ表示されます(アイコンだけの表示では表示されません)。もう一方の Mac のページに自身の選択メニューがない場合(そちらの Composer Plus が 1.23.0 より古い場合)、この Mac の選択メニューが同じ場所でそのページの上に表示されます。そちらが 1.23.0 の場合、選択メニューにはその Mac の名前が表示されます。戻るには、そのメニューで **この Mac** を選びます。開いた各コンピュータのページは、この機能をオフにするか dsh を再起動するまでメモリに残ります。コンピュータが応答しなかった場合(スリープ中、または Tailscale がオフ)、そのページは残りません。もう一度選ぶと読み込み直します。デスクトップアプリでは、もう一方の Mac のページは埋め込みページです。dsh 自身のキーボードショートカット(たとえば新しいチャット)はその中では動作せず、ファイルのダウンロード、マイク、通知もそこでは動作しません。ポート 19392 を使います(ほかのコンピュータを受け入れられる dsh は、各 Mac で 1 つだけです)。ほかの Mac のページの選択メニューは、この Mac のコンピュータの間でしか切り替えられません。そのため、もう一方の Mac を経由して 3 台目の Mac は開けません。ワンクリックの切り替えで数えるのは、ペアリング済みで接続できるコンピュータだけです(再ペアリングが必要なコンピュータは数えません)。そのようなコンピュータが 1 台だけの場合、**コンピュータを追加…** は右クリック(タッチスクリーンでは長押し)で開くメニューか、**設定 → Composer Plus → リモートコンピュータ** にあります。
264
268
  - セッションリンクは、チャットの中で機能します。クリックしても、そのチャットは開きません。**メッセージリンクをコピー** で作ったリンクでメッセージを開けるのは、dsh 0.2.1 以降で、チャットの中のメッセージから開いた場合だけです(dsh 0.2.0 にはユーザーテキストのルールがないため、リンクはコピーされますが、プレーンテキストとして表示されます)。ロールバックで取り除かれたメッセージや、圧縮によって dsh が読み込む履歴から削除されたメッセージは表示できません。その場合、リンクがそのことを表示します。🔗 ボタンは、dsh のメッセージ行に取り付けています。dsh のアップデートでそのマークアップが変わった場合、ボタンは表示されません。
265
269
  - **すべて既読にする** は、公開 API ではない dsh の一部(dsh のセッション状態の `completionUnread` 一覧)を通じて、dsh 自身の未読の点を変更します。dsh のアップデートでこの名前が変わった場合、この項目は表示されません。この項目は dsh のプロジェクトの「…」メニューに入りますが、このメニューにはプラグイン用のスロットがありません。dsh がこのメニューを変更した場合も、この項目は表示されません。
266
270
  - **キュー内のメッセージをその場で編集** は、その間に送信が始まったメッセージを変更せず、その間に変更されたメッセージ(たとえば iPhone の Tether で変更したもの)も上書きせず、そのことを通知で知らせます。新しい画像には画像を受け付けるモデルが必要で(dsh 標準の画像の制限も適用されます)、新しいファイルはアップロードが終わるまで保存できません。編集できるのは自分のキュー内のメッセージだけで、キュー内の目標のラウンドや質問への回答は編集できません。プラグインの更新後すぐに使えるのはテキストだけの編集で、画像やファイルを含むメッセージを保存する前には dsh を再起動してください(ホスト側は起動時に読み込まれます)。
@@ -296,7 +300,8 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
296
300
  - **トルコ語スキルパック** はサードパーティのスキルを入れます。ルールは Composer Plus ではなく作者の GitHub リポジトリから来ており、新しい版は私たちが確認しないまま、次の日次確認から使われます。確認でわかるのは、ファイルがそのコミットで GitHub が示すファイルと同じことだけで、ルールがよいことではありません。スキルを読み込むタイミングはモデルが決めます(名前で呼び出すこともできます)。ルールはトルコ語の文章にだけ当てはまります。ホスト側は、ブラウザーが最後に伝えた言語を使います。2 つのブラウザーが別の言語を使うと、新しいほうが優先されます。GitHub はログインなしで 1 時間に 60 回まで API を受け付けます。確認が拒否されたときはインストール済みのコピーを残し、理由を設定に表示します。
297
301
  - **コードベースを整理** には、スキルの固定コピー(caldoai/skills、コミット f3cf477)が入っています。元のスキルの変更は、新しい Composer Plus のバージョンでのみ届きます。このスキルは多くのファイルを変更しうる長い目標を実行し、そのサブエージェントと確認は多くのトークンを使います。テストのない部分では、気づかないうちに動作を変えることがあります。専用のブランチで開始し、マージ前に差分を読んでください。プロジェクト、カスタムのスキルフォルダー、または `~/.dsh/skills` に同じ名前のスキルがあると、そちらに置き換わります。スイッチがオフの間、`/untangle-codebase` は普通のテキストとしてモデルに送られます。
298
302
  - **タスクボード** は、このウィンドウで dsh が一覧に表示するチャットを表示します。プロジェクトの外にあるチャットは **すべてのプロジェクト** にだけ表示され、チャットごとのブランチのフォルダー(`<project>/.worktrees/<name>`)はそのプロジェクトとして扱われます。カードの列はチャットのライブの状態なので、カードはドラッグできません。チャットはターンが終わると **完了** に移り(エラーや停止の後も同じです)、再び実行されると **作業中** に戻ります。緑の点は dsh 自身の完了の点で、dsh はこのウィンドウでだけこれを保持します。再読み込みの後、終わったチャットは緑の点なしで表示されます。**完了** には最新の 50 件のチャットが表示されます(**古いタスクを N 件表示** で残りを表示します)。**プロジェクトを検索** はプロジェクトを名前だけで探し、フォルダーのパスでは探しません。**過去 2 時間以内にアクティブ** は、プロジェクトのチャットがすべて 2 時間より古く、アイドル状態で既読のとき、そのプロジェクトを隠します。選んだプロジェクトは、ボードに表示されたままです。**新しいタスク** が覚えているのは、このウィンドウで最も新しい新規チャットだけです。最初のメッセージの前に別のチャットを開くと、そのチャットはあなたが書き込むまで **作業中** の一番上に **新しいタスク** として残りますが、自動でボードに戻るのは最も新しいチャットだけです。再読み込みの後、メッセージのない新しいチャットはボードに表示されません(dsh はそれを空の新しいセッションとして保持します)。タグは、タスクごとに、その最初のメッセージから 1 回のモデル呼び出しで作られます。タグが正しくないこともあり、ボードで開始しなかったチャットにはタグがありません。タイトルは dsh 自身のチャットのタイトルです(dsh のタイトルサービスが、チャットのモデルで作ります)。タイトルができるまで、カードには最初のメッセージの最初の行が表示されます。**×** と **すべてクリア** は、カードをボードから外すだけです。チャットは削除されません。**元に戻す** は、このウィンドウで 8 秒間だけ表示されます。その後は、**外したカード (N)** → **ボードに戻す** でカードを戻せます。再び実行されたチャットは、自動で戻ります。**すべてクリア** は、先に確認してから、表示しているプロジェクトの既読の終わったカードを外します(**すべてのプロジェクト** のときは、すべてのプロジェクトのカードです)。**古いタスクを N 件表示** の後ろにあるカードも外します。未読(緑)のカードは残ります。dsh は緑の点をこのウィンドウでだけ保持するので、再読み込みの後は、すべてクリアが、回答をまだ読んでいないカードを外すことがあります。この一覧はこの Mac に保存され、すべてのウィンドウと Tether で使われます。一覧が 5,000 件のチャットになると、最も古いチャットがボードに戻ります。**回答** が答えるのは、チャットの最新のリクエストだけです。そのリクエストに別の場所(別のウィンドウ、Tether、自動レビュー)で回答済みのとき、またはチャットが新しいことを尋ねているときは、パネルにそのことが表示され、何も送信しません。以前のバージョンには、コメントとエージェントのツールがあるタスク一覧がありました。これらはなくなり、古い `board.json` は表示されません。考え方と見た目は emanuele-em の [Kanzo](https://github.com/emanuele-em/kanzo)(AGPL-3.0)から来ています。Composer Plus はそのコードを使っていません。 `Cmd+Shift+K` は dsh のショートカットです。Linux のブラウザーでは既定のキーがありません(dsh のキーボードショートカットのページで設定してください)。また、ブラウザー拡張機能や別のアプリが先にこのキーを使う場合があります。カードが **完了** から外れるのは、dsh 自身の緑の点が消えたとき(チャットを開いたとき)です。ボードの裏で開いているチャットとして終わったチャットは、そのチャットが上にパネルのない状態で表示されたときに外れます。この既読の状態は dsh 自身の点と同じく、この dsh のウィンドウの中だけにあります。再読み込みの後や別のウィンドウでは、終わったチャットはすべて既読になり、**最近完了** に入ります。
299
- - **アシスタント** のチャットは、この Mac のすべてのウィンドウで 1 つです。workspace-write 権限モードで動作します。ファイルを書き込むのは `~/Assistant` の中だけで、その外で実行するコマンドは先に確認を求めます。チャットを承認なしのモード(フルアクセス)に切り替えると、dsh は各承認を拒否するため、アシスタントはチャットへの送信、開始、停止、アーカイブができなくなります。承認カードが守るのは、この 6 つのツールだけです。そのモードのほかのチャットと同じく、アシスタントのシェルコマンドは、それでもネットワークにアクセスできます。dsh 0.2.0 と 0.2.1 では、dsh のスケジュールのツールはアシスタントのチャット自身のリマインダーだけを見て、ほかのチャットの自動化は見ません。dsh 0.2.2 からは、すべてのスケジュールされたタスクを一覧表示して変更します。chats_list は、アーカイブ済み、空、サブエージェントのチャットと、アシスタントのチャット自身を含みません。「あなたを待っている」は、実行中のチャットに未処理の承認、質問、計画のレビューがあることを意味します。chat_read が返すのは、ユーザーのメッセージとエージェントの返信(ツールの出力は含みません)で、最大 50 件のメッセージ、約 24,000 文字です。chat_archive は、まだ実行中のチャットや、有効なリマインダーがあるチャットを拒否します。モデルは、読んだテキストにだまされることがあります。承認カードが最後のチェックなので、**1回だけ許可** をクリックする前に内容を読んでください。
303
+ - **アシスタント** のチャットは、この Mac のすべてのウィンドウで 1 つです。workspace-write 権限モードで動作します。ファイルを書き込むのは `~/Assistant` の中だけで、その外で実行するコマンドは先に確認を求めます。チャットを承認なしのモード(フルアクセス)に切り替えると、dsh は各承認を拒否するため、アシスタントはチャットへの送信、開始、停止、アーカイブができなくなります。承認カードが守るのは、この 6 つのツールだけです。そのモードのほかのチャットと同じく、アシスタントのシェルコマンドは、それでもネットワークにアクセスできます。dsh 0.2.0 と 0.2.1 では、dsh のスケジュールのツールはアシスタントのチャット自身のリマインダーだけを見て、ほかのチャットの自動化は見ません。dsh 0.2.2 からは、すべてのスケジュールされたタスクを一覧表示して変更します。chats_list は、アーカイブ済み、空、サブエージェントのチャットと、アシスタントのチャット自身を含みません。「あなたを待っている」は、実行中のチャットに未処理の承認、質問、計画のレビューがあることを意味します。chat_read が返すのは、ユーザーのメッセージとエージェントの返信(ツールの出力は含みません)で、最大 50 件のメッセージ、約 24,000 文字です。chat_archive は、まだ実行中のチャットや、有効なリマインダーがあるチャットを拒否します。モデルは、読んだテキストにだまされることがあります。承認カードが最後のチェックなので、**1回だけ許可** をクリックする前に内容を読んでください。並行する話題には、dsh のサブエージェントのツールを使います。このツールがないプロファイルや権限モードでは、従来の動作のままです(一度に 1 つの話題だけで、次のメッセージはキューで待つか、実行中のターンに割り込みます)。何を長い作業とみなすかはモデルが決めるため、短い質問でも 1 ターンかかることがあります。各話題のサブエージェントは、それぞれ独自にトークンを使います。dsh を再起動すると、実行中の話題は停止します(その結果は届きません)。結果はアシスタントのチャットの新しいターンとして届くため、ターンの途中で入力している間は待機します。
304
+ - **アシスタントをチャットと分ける** と **アシスタントはメッセージのみ** は、dsh 自身の行をスタイルルールで非表示にします。行は、dsh のサイドバーとチャットのマークアップ(`data-row-key`、`data-chat-flow-kind`)で見つけます。dsh のアップデートでこのマークアップが変わると、アシスタントのチャットが一覧にまた表示されるか、作業ステップがまた表示されます。行は削除されず、非表示になるだけです。サイドバーでの dsh のキーボード操作は、非表示の行にも届くことがあります。**常に手が空いたアシスタント** は、アシスタントのチャットのツール呼び出しのうち、短いツールではないものをすべて拒否します。するとモデルはそのステップをサブエージェントに任せますが、先に拒否された呼び出しを試すことがあり、そのぶんモデルのステップを 1 回使います。承認カードがあなたを待っている間は、アシスタントのチャットはまだ使用中とみなされます。最新のリクエストにサブエージェントのツールがないとき(そのツールがない権限モードまたはプロファイル)、このルールは何もしません。**アシスタントからチャットのお知らせ** は、お知らせのまとまりごとにアシスタントのチャットのモデルのターンを開始するため、トークンを使います。**モバイル接続(iPhone)** がオンのときは、完了した 1 つのチャットについて、電話に通知が 2 つ届くことがあります(チャット自身の通知とアシスタントの通知)。待っているお知らせは、dsh を再起動すると失われます。見るのは、この Mac 上のチャットだけです。
300
305
  - **停止後の新規メッセージ優先** は、チャットを停止した後(または失敗したターンの後、まだキューがあるチャットを開いたとき)にだけ働きます。ターンの実行中に送信したメッセージは、これまでどおりキューの末尾で待ちます。追い越すのは自分がキューに入れたメッセージだけです。キューに目標のラウンドや質問への回答が待っている場合は、dsh 自身の順序のままです。公開 API ではない dsh の一部(停止したターンがまだ終了処理中かどうか)を読み取ります。dsh の更新でその名前が変わった場合、メッセージはそのターンが終わった後にだけ先頭に移ります。サブエージェントのチャットは dsh 自身の順序のままです。
301
306
  - **プロジェクトメモリー** はチャットの最初のフォルダー(dsh のプロジェクトのフォルダー)に属します。`cd` でフォルダーを変えたチャットは最初のプロジェクトのメモリーを使い続けます。同じファイルへの別のパスで開いた同じフォルダーは、同じメモリーを共有します。チャットは開始時にメモリーのセクションを固定するため、後で保存したメモは次のチャットから表示されます(`memory_recall` ならすぐに見つかります)。確認では、モデルが残すと決めたものだけを残します。事実を見落としたり、誤った内容を残したりすることがあります。**メモリーを開く** で確認してそこで変更するか、dsh を閉じている間にファイルを手で編集してください。**メモリーを開く** は、選んだプロジェクトのメモとグローバルなメモ(「すべてのメモ」を選んだときはすべてのプロジェクト。最大で約 60,000 文字で、残りは数だけ示され、そのリクエストでは変更できません)とあなたの文章を、チャットのモデルではなく dsh の既定のモデルに送ります。プレビューは Mac に 30 分間、dsh を再起動するまで保持されます。その間に確認やエージェントがメモを変更すると **適用** は拒否されるので、もう一度プレビューしてください。**適用** はプレビューの変更をすべて保存するか、1 つも保存しないかのどちらかです。保存できない変更が 1 つでもあると(たとえば MEMORY.md がいっぱいのとき)、メモは元のままで、理由が表示されます。あなたのメッセージを含むターンが終わるたびに、モデルを 1 回呼び出します。呼び出しが失敗すると、次のターンの後に同じメッセージをもう一度読みます。サブエージェントのチャットは確認しません。考え方とファイル形式は [DS Bot](https://github.com/Fei2411/DS-Bot)(Apache-2.0)から来ています。Composer Plus はそのコードを使っておらず、DS Bot 自身のメモリーを読み書きすることもありません。
302
307
  - **メモリーのバージョン履歴** は各メモリー(各プロジェクトとグローバルメモリー)の最新 50 バージョンを残し、それより古いものは削除します。1 つのバージョンは 1 件のメモではなく、そのプロジェクトのメモリー全体です。**復元** はそのバージョンのすべてのファイル(トピックを含む)を戻し、バージョンを開いた後にメモリーが変わっていれば拒否します。復元前のメモリーは新しいバージョンになるので、復元は元に戻せます。スイッチがオフの間は新しいバージョンを残さず、**復元** は拒否されます。残したバージョンは消えません。この機能より前のバージョンはありません。履歴はインストール後の最初の保存から始まります。
@@ -352,6 +357,8 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
352
357
 
353
358
  **リマインドしてくれて、ほかのチャットも管理してくれる個人アシスタントのチャットを使えますか?** はい、**アシスタント**(既定でオン)で可能です。左サイドバーの **アシスタント** をクリックします。dsh のスケジュールされたタスクでリマインダーを設定し、Web を検索し、チャットを一覧表示して読みます。チャットへのメッセージ送信と、チャットの開始、停止、アーカイブは、あなたが承認した後にだけ行います。プロフィールは、そのプロジェクトメモリーのトピック「profil」に保存してください。
354
359
 
360
+ **アシスタントをチャット一覧から外して、ボットのように使えますか?** はい。**アシスタントをチャットと分ける** は、そのチャットをサイドバーの一覧から外し、状態を **アシスタント** の行に表示します(あなたを待っている間はオレンジ色)。**アシスタントはメッセージのみ** は、作業ステップを非表示にします。**常に手が空いたアシスタント** は、長めのステップをすべてバックグラウンドのサブエージェントに任せるので、アシスタントはすぐに答えます。**アシスタントからチャットのお知らせ**(既定ではオフ、トークンを使います)をオンにすると、ほかのチャットが完了したとき、失敗したとき、またはあなたを待っているときに、アシスタントが知らせます。
361
+
355
362
  **dsh-backup のように、dsh でチャットや設定をバックアップできますか?** はい。**設定 → Composer Plus → バックアップ → 今すぐバックアップ** を使います。同じ形式のアーカイブを同じフォルダー(`~/Desktop/dsh-backups`)に書き込むため、dsh-backup のアーカイブも表示され、復元できます。dsh-backup は削除してかまいません。定期的にバックアップするには、**自動バックアップ** をオンにしてください。
356
363
 
357
364
  **dsh が起動しなくなりました。バックアップを復元するには?** バックアップフォルダー(`~/Desktop/dsh-backups`)を開き、`Composer Plus Rescue.command` をダブルクリックします(Linux:`composer-plus-rescue.sh`、Windows:`Composer Plus Rescue.cmd`)。`3) Restore a backup` を選び、バックアップを 1 つ選んで `RESTORE` と入力します。dsh がなくても動作します。
@@ -506,6 +513,8 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-queue-edit.mjs /path/to/
506
513
  SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-task-board.mjs /path/to/dsh/lib/bin.js
507
514
  # Assistant: on by default, sidebar row under Task board, one chat in ~/Assistant (workspace-write), a reminder that runs the chat, chats_list, chat_send after its approval card, an injected chat_send rejected, no tools in other chats, automations of other chats (dsh 0.2.2+), switch off
508
515
  SHOT=1 CHECK_DELAY=20 PLAYWRIGHT=/path/to/playwright node test/browser-assistant.mjs /path/to/dsh/lib/bin.js
516
+ # Assistant welcome card: shows above the input on the first open of the assistant chat, goes with the switch and with the first message, not in other chats
517
+ PLAYWRIGHT=/path/to/playwright node test/browser-assistant-welcome.mjs /path/to/dsh/lib/bin.js
509
518
  ```
510
519
 
511
520
  ```sh