dsh-composer-plus 1.12.0 → 1.13.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.de.md +36 -13
- package/README.es.md +36 -13
- package/README.fr.md +36 -13
- package/README.hi.md +36 -13
- package/README.id.md +36 -13
- package/README.ja.md +36 -13
- package/README.ko.md +36 -13
- package/README.md +36 -13
- package/README.pt-BR.md +36 -13
- package/README.ru.md +36 -13
- package/README.tr.md +36 -13
- package/README.vi.md +36 -13
- package/README.zh.md +36 -13
- package/assets/features/changesPanel.webp +0 -0
- package/assets/features/copyMessageLink.webp +0 -0
- package/assets/features/markProjectRead.webp +0 -0
- package/assets/features/queueEdit.webp +0 -0
- package/client.js +917 -133
- package/index.js +439 -83
- package/package.json +7 -3
- package/tether/gateway/admin.html +47 -3
- package/tether/gateway/server.mjs +98 -28
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.
|
|
32
|
+
> pnpm milik dsh melewati versi yang berumur kurang dari 24 jam. Tepat setelah rilis, tambahkan versinya: `dsh-composer-plus@1.13.0`.
|
|
33
33
|
|
|
34
34
|
## Fitur
|
|
35
35
|
|
|
@@ -37,10 +37,10 @@ Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil
|
|
|
37
37
|
|
|
38
38
|
| Fitur | Cara menggunakannya | Tangkapan layar |
|
|
39
39
|
|---|---|---|
|
|
40
|
-
| **Panel perubahan** | <a id="feature-changespanel"></a>Bilah samping kanan → `+` → **Perubahan**. Pilih **Belum Di-commit**, **Belum Di-stage**, **Di-stage**, atau **Branch** untuk melihat file yang berubah beserta jumlah `+/-`; klik sebuah file untuk melihat diff-nya. **Giliran Terakhir** membuka tinjauan bawaan dsh untuk giliran terakhir. | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="Tangkapan layar: Panel perubahan"></a> |
|
|
40
|
+
| **Panel perubahan** | <a id="feature-changespanel"></a>Bilah samping kanan → `+` → **Perubahan**. Pilih **Belum Di-commit**, **Belum Di-stage**, **Di-stage**, atau **Branch** untuk melihat file yang berubah beserta jumlah `+/-`; klik sebuah file untuk melihat diff-nya. **Giliran Terakhir** membuka tinjauan bawaan dsh untuk giliran terakhir. Klik nama branch (atau pilih **Pohon**) untuk melihat pohon branch: klik sebuah branch di atasnya untuk menuju branch itu, dan klik sebuah commit untuk melihat file dan diff-nya. **Obrolan ini** hanya menampilkan file yang ditulis oleh alat file (write, edit) obrolan yang terbuka, di semua gilirannya, beserta total diff-nya sejak pesan pertama. Tombol **␣** menyembunyikan perubahan spasi (`git diff -w`): baris yang hanya berubah pada indentasi atau akhir baris tidak ditampilkan. | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="Tangkapan layar: Panel perubahan"></a> |
|
|
41
41
|
| **Ide fitur** | <a id="feature-featureideas"></a>Bilah samping kanan → `+` → **Ide fitur** → **Sarankan fitur**. Model obrolan itu sendiri membaca ringkasan singkat proyek obrolan (file tingkat atas, bagian awal README dan manifes, 15 commit terakhir) dan menyarankan hingga 8 fitur. Fitur ditampilkan sebagai tumpukan kartu dalam bahasa UI dsh. Geser kartu ke kanan (atau klik **✓**, atau tekan `→`; dengan cara mana pun, kartu terbang ke sisinya) untuk memulai obrolan baru di proyek yang sama. Obrolan itu dimulai dalam mode rencana dengan ide tersebut sebagai permintaan, jadi tidak ada yang berubah sebelum Anda menyetujui rencananya. Untuk melewati rencana, klik **▶ Buat sekarang** (atau tekan `↑`; kartu terbang ke atas): obrolan baru langsung dimulai dengan ide itu sebagai permintaan biasa, lalu model membuat perubahan dan menjalankan pemeriksaannya (persetujuan berlaku seperti biasa). Geser ke kiri (atau **✕**, atau `←`) untuk melewatinya; **Urungkan** (atau `Z`) mengembalikan kartu yang dilewati. Klik **↓** (atau tekan `↓`) untuk menyimpan ide bagus untuk nanti. Ide itu masuk ke daftar **Nanti** milik proyek, yang ditampilkan oleh setiap obrolan di folder proyek yang sama (juga setelah mulai ulang). **Nanti (N)** membuka daftar itu. **Rencanakan** memulai obrolan mode rencana yang sama untuk ide itu dan **Buat sekarang** memulai obrolan tanpa rencana; keduanya mengeluarkan ide itu dari daftar. **Rencanakan semua (N)** memulai satu obrolan mode rencana untuk semua ide di daftar, jadi bagian bersama cukup direncanakan sekali. **Hapus dari daftar** menghapusnya. **Salin sebagai daftar periksa** menyalin seluruh daftar ke papan klip sebagai daftar periksa Markdown (`- [ ] Title — Summary`, satu baris per ide) untuk pelacak isu atau file TODO; fitur ini tidak membuat panggilan jaringan. **Ide lainnya** menambahkan kartu. Untuk mendapatkan ide tentang satu area saja, ketik **Topik fokus** yang singkat di kolom di samping **Sarankan fitur** (paling banyak 80 karakter; `Enter` juga menyarankan), atau klik salah satu topik tetap di bawahnya: **Kinerja**, **Aksesibilitas**, **Pengujian**, **Keamanan**, **Kegunaan**, atau **Dokumentasi** (klik lagi untuk mengosongkannya). Model lalu hanya menyarankan fitur tentang topik itu; kolom kosong berarti fitur apa pun. Ide tidak disarankan dua kali dalam satu proyek: setiap ide yang disarankan (dilewati, disimpan, atau dimulai) masuk ke **Riwayat** proyek, model diminta untuk tidak menyarankannya lagi, dan judul yang berulang dibuang. **Riwayat** mencantumkannya dengan **Dimulai** atau **Disarankan**; **Lupakan** (atau **Lupakan semua**) membuat ide itu bisa muncul lagi; ide yang masih ada di daftar **Nanti** tidak masuk saran sampai Anda menghapusnya dari sana. Model hanya berjalan saat Anda mengklik. | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="Tangkapan layar: Ide fitur"></a> |
|
|
42
42
|
| **Pencarian isi** | <a id="feature-contentsearch"></a>Pencarian bawaan di bilah samping dsh (kaca pembesar di samping **Ruang kerja**; `Cmd+K` di aplikasi desktop, `Cmd+Alt+K` di browser) juga menemukan obrolan dari kata-kata dalam pesan Anda dan dalam balasannya, bukan hanya dari judul. Teks yang cocok ditampilkan di bawah obrolan. dsh sudah memiliki pencarian ini, tetapi mengirimkannya dalam keadaan nonaktif. Fitur ini mengaktifkannya dengan file indeks pencarian di komputer Anda. Indeks dibuat pada pencarian pertama setelah dsh dimulai (sekitar 15 detik untuk 250 obrolan, lihat Batasan) dan disimpan untuk saat dsh dimulai berikutnya. Aktif secara default; perubahan berlaku setelah Anda memulai ulang dsh. | <a href="assets/features/contentSearch.webp"><img src="assets/features/contentSearch.webp" width="160" alt="Tangkapan layar: Pencarian isi"></a> |
|
|
43
|
-
| **Putar balik giliran** | <a id="feature-turnrollback"></a>Arahkan penunjuk ke salah satu pesan Anda dan klik **↶** (di samping Salin). **Obrolan saja** mengeluarkan pesan itu dan semua yang ada sesudahnya (balasan, panggilan alat) dari obrolan dan dari konteks model, lalu menaruh pesan itu kembali di kotak pesan: ubah, lalu kirim lagi. **Obrolan dan file** lebih dulu menampilkan daftar file proyek yang berubah sejak pesan itu, lalu juga mengembalikan file tersebut seperti semula. Ini termasuk perubahan yang dibuat oleh perintah (`bash`), bukan hanya oleh alat edit dsh. Giliran yang sedang berjalan dihentikan lebih dulu. Log obrolan tidak pernah ditulis ulang: satu penanda tersembunyi menyembunyikan bagian yang ditarik, sama seperti `/compact` bawaan dsh menyembunyikan pesan lama. Jika [dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) terpasang, plugin itulah yang melakukan tugas ini, dan Composer Plus tidak menampilkan tombol kedua. | <a href="assets/features/turnRollback.webp"><img src="assets/features/turnRollback.webp" width="160" alt="Tangkapan layar: Putar balik giliran"></a> |
|
|
43
|
+
| **Putar balik giliran** | <a id="feature-turnrollback"></a>Arahkan penunjuk ke salah satu pesan Anda dan klik **↶** (di samping Salin). **Obrolan saja** mengeluarkan pesan itu dan semua yang ada sesudahnya (balasan, panggilan alat) dari obrolan dan dari konteks model, lalu menaruh pesan itu kembali di kotak pesan: ubah, lalu kirim lagi. **Obrolan dan file** lebih dulu menampilkan daftar file proyek yang berubah sejak pesan itu, lalu juga mengembalikan file tersebut seperti semula. Ini termasuk perubahan yang dibuat oleh perintah (`bash`), bukan hanya oleh alat edit dsh. Giliran yang sedang berjalan dihentikan lebih dulu. Log obrolan tidak pernah ditulis ulang: satu penanda tersembunyi menyembunyikan bagian yang ditarik, sama seperti `/compact` bawaan dsh menyembunyikan pesan lama. Jika [dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) terpasang, plugin itulah yang melakukan tugas ini, dan Composer Plus tidak menampilkan tombol kedua. Setelah putar balik, bilah **Ulangi** muncul di atas kotak pesan. Bilah ini memulai obrolan baru dari tepat sebelum putar balik (pesan dan konteks yang sama) dan, dengan **Obrolan dan file**, juga mengembalikan file. File yang Anda ubah setelah putar balik ditampilkan dalam daftar dan dipertahankan, kecuali Anda mencentang kotak yang menimpanya. | <a href="assets/features/turnRollback.webp"><img src="assets/features/turnRollback.webp" width="160" alt="Tangkapan layar: Putar balik giliran"></a> |
|
|
44
44
|
| **Hapus obrolan** | <a id="feature-deletechat"></a>Bilah samping → menu **…** pada obrolan (atau klik kanan) → **Hapus…** → **Hapus**. dsh sendiri hanya dapat mengarsipkan. Obrolan berhenti (gilirannya, job, subagen, dan jadwalnya, seperti saat diarsipkan oleh dsh). Riwayat tersimpannya, beserta obrolan subagennya, dipindahkan ke Tong Sampah macOS (di sistem lain: `$DSH_HOME/trash`). Untuk mengembalikannya, kembalikan folder itu ke tempat semula dan mulai ulang dsh: obrolan muncul di tampilan **Hanya yang diarsipkan** pada bilah samping. | <a href="assets/features/deleteChat.webp"><img src="assets/features/deleteChat.webp" width="160" alt="Tangkapan layar: Hapus obrolan"></a> |
|
|
45
45
|
| **Nama proyek di kotak pesan** | <a id="feature-projectname"></a>Baris di bawah kotak pesan (giliran, token, cache hit, konteks) dimulai dengan nama proyek obrolan, jadi Anda selalu tahu di proyek mana sebuah obrolan bekerja. Nama ini adalah judul proyek bawaan dsh, atau nama folder jika proyek tidak memiliki judul. Arahkan penunjuk ke nama itu untuk melihat jalur folder lengkap. Klik nama itu untuk menemukan obrolan di bilah samping, dalam tampilan daftar atau proyek: bilah samping dan proyek terbuka (termasuk proyek yang diciutkan dan **Tampilkan N sesi lainnya** di proyek itu), daftar bergulir ke obrolan itu, dan obrolan berkedip selama 5 detik. | <a href="assets/features/projectName.webp"><img src="assets/features/projectName.webp" width="160" alt="Tangkapan layar: Nama proyek di kotak pesan"></a> |
|
|
46
46
|
| **Riwayat input** | <a id="feature-inputhistory"></a>Di kotak pesan yang kosong, tekan `↑` / `↓` untuk menelusuri pesan yang telah Anda kirim, seperti di terminal. | <a href="assets/features/inputHistory.webp"><img src="assets/features/inputHistory.webp" width="160" alt="Tangkapan layar: Riwayat input"></a> |
|
|
@@ -49,22 +49,25 @@ Lalu mulai ulang dsh. (CLI tidak dapat memasang plugin ke profil desktop; profil
|
|
|
49
49
|
| **Lanjutkan Sekali Klik** | <a id="feature-continuebutton"></a>Setelah giliran dihentikan, gagal, atau terpotong, kotak pesan yang kosong menampilkan **▶**. Satu klik melanjutkan percakapan yang ada tanpa menulis di input atau menambahkan pesan obrolan yang terlihat. (Model menerima catatan tersembunyi singkat “lanjutkan dari tempat berhenti”, karena beberapa penyedia, seperti Claude, menolak permintaan yang berakhir dengan balasan asisten.) Pesan di antrean tetap di sana: ▶ hanya melanjutkan tugas yang dihentikan, lalu antrean berjalan. Giliran yang selesai tetap memakai tombol Kirim biasa. | <a href="assets/features/continueButton.webp"><img src="assets/features/continueButton.webp" width="160" alt="Tangkapan layar: Lanjutkan Sekali Klik"></a> |
|
|
50
50
|
| **Lanjutkan setelah mulai ulang** | <a id="feature-resumeafterrestart"></a>Nonaktif secara default: aktifkan di **Pengaturan → Composer Plus**. Jika Anda keluar dari dsh (atau dsh tertutup) saat sebuah obrolan sedang bekerja, obrolan itu berlanjut sendiri saat Anda membuka dsh lagi, dengan catatan tersembunyi yang sama seperti Lanjutkan Sekali Klik. Jika putaran tujuan (`/goal`) sedang berjalan, tujuan itu berlanjut ke putaran berikutnya (dsh menjeda tujuan setiap kali dimulai sampai Anda melanjutkannya). Obrolan yang Anda hentikan, yang selesai, atau yang gagal tidak berlanjut. dsh sendiri tidak memiliki pengaturan untuk ini: dsh hanya menandai giliran seperti itu sebagai terinterupsi. | <a href="assets/features/resumeAfterRestart.webp"><img src="assets/features/resumeAfterRestart.webp" width="160" alt="Tangkapan layar: Lanjutkan setelah mulai ulang"></a> |
|
|
51
51
|
| **Seret dan lepas antrean** | <a id="feature-queuereorder"></a>Pesan dalam antrean mendapat pegangan (⠿). Seret untuk mengubah urutan, atau fokuskan pegangan lalu tekan `↑` / `↓`. `Esc` membatalkan. | <a href="assets/features/queueReorder.webp"><img src="assets/features/queueReorder.webp" width="160" alt="Tangkapan layar: Seret dan lepas antrean"></a> |
|
|
52
|
+
| **Edit pesan antrean di tempat** | <a id="feature-queueedit"></a>Klik dua kali pesan dalam antrean. Pesan itu berubah menjadi kotak edit bawaan dsh: ubah teksnya, lalu tekan `Enter` untuk menyimpan atau `Esc` untuk membatalkan. Pesan tetap di tempatnya dalam antrean. Pesan yang berisi gambar atau file tidak dapat diedit dengan cara ini (antrean dsh hanya mengedit teks). | <a href="assets/features/queueEdit.webp"><img src="assets/features/queueEdit.webp" width="160" alt="Tangkapan layar: Edit pesan antrean di tempat"></a> |
|
|
52
53
|
| **Salin tautan sesi** | <a id="feature-copydeeplink"></a>Klik kanan obrolan di bilah samping → **Salin tautan sesi**. Tempelkan tautan `dsh-session:…` ke obrolan lain untuk melampirkan obrolan itu sebagai konteks hanya-baca. dsh 0.2.1 memiliki **Salin ID sesi** sendiri, yang hanya menyalin ID polos; item ini muncul tepat sesudahnya. | <a href="assets/features/copyDeeplink.webp"><img src="assets/features/copyDeeplink.webp" width="160" alt="Tangkapan layar: Salin tautan sesi"></a> |
|
|
54
|
+
| **Salin tautan pesan** | <a id="feature-copymessagelink"></a>Arahkan penunjuk ke sebuah pesan dan klik **🔗** (di baris tindakan pesan itu; untuk jawaban, di samping waktunya). Tautan ini adalah tautan sesi ditambah nomor pesan: `dsh-session:…#42`. Tempelkan tautan itu ke sebuah pesan dan kirim. Di dsh 0.2.1 dan yang lebih baru, tautan tampil sebagai chip. Satu klik membuka obrolan tersebut, menggulir ke pesan itu, dan menyorotnya selama 2 detik. Seperti tautan sesi, tautan ini juga melampirkan obrolan itu sebagai konteks hanya-baca. | <a href="assets/features/copyMessageLink.webp"><img src="assets/features/copyMessageLink.webp" width="160" alt="Tangkapan layar: Salin tautan pesan"></a> |
|
|
53
55
|
| **Ekspor obrolan sebagai Markdown** | <a id="feature-exportmarkdown"></a>Klik kanan obrolan di bilah samping (atau buka menu **…** obrolan itu) → **Ekspor sebagai Markdown…**. Dialog menampilkan jumlah pesan dalam obrolan. **Salin ke papan klip** menyalin obrolan sebagai Markdown, dan **Simpan file .md** menyimpannya sebagai `<chat title>.md` melalui unduhan browser (dsh desktop: ke folder Unduhan atau lewat dialog simpan, sesuai pengaturan sistem Anda). File berisi judul obrolan, nama proyek, dan tanggal, lalu satu bagian `## Anda` atau `## Asisten` untuk setiap pesan. Blok kode tetap seperti aslinya; blok kode yang dibiarkan terbuka oleh suatu pesan akan ditutup. | <a href="assets/features/exportMarkdown.webp"><img src="assets/features/exportMarkdown.webp" width="160" alt="Tangkapan layar: Ekspor obrolan sebagai Markdown"></a> |
|
|
54
56
|
| **Salin jalur proyek** | <a id="feature-copyprojectpath"></a>Klik kanan proyek di bilah samping → **Salin jalur** menyalin jalur lengkap foldernya. | <a href="assets/features/copyProjectPath.webp"><img src="assets/features/copyProjectPath.webp" width="160" alt="Tangkapan layar: Salin jalur proyek"></a> |
|
|
55
57
|
| **Pencarian proyek di obrolan baru** | <a id="feature-projectpicker"></a>Obrolan baru → tombol proyek di atas kotak pesan. Proyek ditampilkan dalam urutan A–Z, dengan kotak **Cari proyek** di bagian atas. Ketik sebagian nama (tanpa membedakan huruf besar-kecil dan aksen), lalu tekan `Enter` untuk memilih hasil pertama. Jika tidak ada yang cocok, muncul **Tidak ada proyek yang cocok**. Urutan proyek tersimpan milik dsh di bilah samping tidak berubah. | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="Tangkapan layar: Pencarian proyek di obrolan baru"></a> |
|
|
56
58
|
| **Prediksi pesan berikutnya** | <a id="feature-nextprediction"></a>Aktif secara default: Anda dapat menonaktifkannya di **Pengaturan → Composer Plus**. Setelah agen menyelesaikan satu giliran (bukan giliran yang dihentikan atau gagal), kotak pesan yang kosong menampilkan tebakan pesan Anda berikutnya dengan teks abu-abu, beserta petunjuk **Tab untuk menerima**. `Tab` memasukkan teks ke kotak pesan, tetapi tidak mengirimnya. `Esc` menyembunyikannya untuk giliran itu. Mulai mengetik juga menyembunyikannya, dan giliran baru menggantinya. Menu **Model** di bawah sakelar menampilkan model milik dsh sendiri (daftar yang sama dengan menu model dsh). **Default dsh** dipilih secara default dan mengikuti model default dsh. Setiap giliran yang selesai memakai satu panggilan model singkat. Di Tether, tebakan tampil di atas kotak pesan yang kosong: ketuk untuk memasukkannya ke kolom. | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="Tangkapan layar: Prediksi pesan berikutnya"></a> |
|
|
57
59
|
| **Lengkapi saat mengetik** | <a id="feature-typingcompletion"></a>Nonaktif secara default: Anda dapat mengaktifkannya di **Pengaturan → Composer Plus**. Saat Anda mengetik, teks abu-abu tepat setelah kursor menunjukkan kelanjutan pesan Anda. `Tab` menambahkannya ke pesan, tetapi tidak mengirimnya. `Esc` menyembunyikannya. Fitur ini hanya menyarankan kata-kata Anda sendiri berikutnya: tidak pernah berupa jawaban untuk Anda, dan tanpa teks error atau nama karangan. Jika pesan tampak sudah lengkap atau model tidak yakin, tidak ada yang tampil. Jika Anda mengetik huruf berikutnya dari teks abu-abu itu, teks tetap ada, tanpa panggilan model baru. Fitur ini memiliki menu **Model** sendiri di bawah sakelarnya. Entri pertamanya, **Sama dengan prediksi pesan berikutnya**, memakai model **Prediksi pesan berikutnya** (default); pilih model lain untuk memakai model yang berbeda bagi setiap fitur, misalnya model yang lebih cepat untuk pelengkapan. Fitur ini melakukan satu panggilan model di setiap jeda saat Anda mengetik, jadi memakai jauh lebih banyak token daripada prediksi: pilih model yang cepat dan murah. Fitur ini tidak berjalan untuk perintah garis miring, pesan dengan chip file, atau saat kursor tidak berada di akhir. Di Tether, sisa teks tampil di atas kolom saat Anda mengetik: ketuk untuk menambahkannya. | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="Tangkapan layar: Lengkapi saat mengetik"></a> |
|
|
58
60
|
| **Sempurnakan prompt** | <a id="feature-promptimprove"></a>Ketik permintaan kasar, lalu klik tongkat ajaib (**Sempurnakan prompt**) di samping menu model. Satu panggilan model menulis ulang permintaan itu menjadi prompt yang lebih jelas: tujuan lebih dulu, langkah bernomor yang singkat jika ada beberapa bagian, dan pemeriksaan yang perlu dijalankan. Fitur ini membaca obrolan ini (tanpa pesan yang ditarik oleh putar balik), README, AGENTS.md, dan manifes proyek, file yang diubah, serta file yang namanya cocok dengan kata-kata Anda, dan mempertahankan bahasa Anda. Fitur ini tidak pernah mengarang nama file. Teks baru menggantikan draf Anda, tetapi tidak dikirim: baca, edit, lalu tekan `Enter`. `Cmd/Ctrl+Z` mengembalikan teks Anda dalam satu langkah, begitu juga tombolnya (**Urungkan penyempurnaan**). Jika Anda mengetik saat fitur ini bekerja, teks baru Anda tetap ada. `Esc` atau klik kedua membatalkannya. Fitur ini memiliki menu **Model** sendiri di Pengaturan (default: **Sama dengan model obrolan**). Tidak untuk perintah garis miring atau pesan dengan chip file. Di Tether, tongkat ajaib ada di samping kolom. | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="Tangkapan layar: Sempurnakan prompt"></a> |
|
|
59
|
-
| **Izinkan untuk obrolan ini** | <a id="feature-allowforchat"></a>Saat Tinjauan otomatis bertanya kepada Anda, kartu persetujuan mendapat tombol **Izinkan untuk obrolan ini**: mulai saat itu, alat yang sama di obrolan yang sama diizinkan, dengan argumen apa pun. Sebuah chip di header menampilkan daftar izin dan dapat mencabutnya. Izin tetap ada setelah mulai ulang. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Tangkapan layar: Izinkan untuk obrolan ini"></a> |
|
|
61
|
+
| **Izinkan untuk obrolan ini** | <a id="feature-allowforchat"></a>Saat Tinjauan otomatis bertanya kepada Anda, kartu persetujuan mendapat tombol **Izinkan untuk obrolan ini**: mulai saat itu, alat yang sama di obrolan yang sama diizinkan, dengan argumen apa pun, sampai batas waktu berakhir (1 jam secara default; pilih di **Pengaturan → Composer Plus → Izinkan untuk obrolan ini**). Setelah itu agen bertanya lagi. Sebuah chip di header menampilkan daftar izin beserta waktu berakhirnya dan dapat mencabutnya. Izin tetap ada setelah mulai ulang. | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="Tangkapan layar: Izinkan untuk obrolan ini"></a> |
|
|
60
62
|
| **Status proyek** | <a id="feature-projectstatus"></a>Baris proyek di bilah samping menampilkan penanda spinner / menunggu / selesai yang sama seperti obrolannya. Jadi, proyek yang diciutkan tetap memberi tahu Anda bahwa ada obrolan di dalamnya yang sedang bekerja atau memerlukan Anda. Obrolan yang menunggu Anda ditampilkan lebih dulu, lalu obrolan selesai yang belum Anda buka (titik hijau, juga saat obrolan lain masih berjalan), lalu spinner. Arahkan penunjuk ke penanda itu untuk melihat detailnya. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Tangkapan layar: Status proyek"></a> |
|
|
63
|
+
| **Tandai semua sudah dibaca** | <a id="feature-markprojectread"></a>Di bilah samping, klik tombol **…** pada sebuah proyek → **Tandai semua sudah dibaca**. Semua obrolan di proyek itu langsung kehilangan titik hijau belum dibaca; proyek lain tetap memiliki titiknya. Item ini tampil abu-abu (**Tidak ada obrolan yang belum dibaca**) jika proyek itu tidak punya obrolan yang belum dibaca. | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="Tangkapan layar: Tandai semua sudah dibaca"></a> |
|
|
61
64
|
| **Proyek aktif di atas** | <a id="feature-activeprojectsfirst"></a>Saat sebuah obrolan mulai berjalan atau memerlukan Anda, proyeknya pindah ke bagian atas bilah samping dengan animasi baris bawaan dsh (gerakan yang sama seperti saat Anda menyeretnya ke sana). Proyek yang selesai tetap di tempatnya; seret ke mana saja seperti biasa. Perpindahan disimpan ke urutan proyek dsh, jadi menonaktifkan fitur ini mempertahankan urutan saat ini. | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="Tangkapan layar: Proyek aktif di atas"></a> |
|
|
62
65
|
| **Filter proyek terbaru** | <a id="feature-recentprojects"></a>Bilah samping → opsi tampilan (ikon slider) → **Aktif dalam 2 jam terakhir**. Selama opsi ini dipilih, bilah samping hanya menampilkan proyek yang memiliki obrolan aktif dalam 2 jam terakhir. Itu adalah obrolan yang diperbarui dalam waktu itu, obrolan yang sedang berjalan atau menunggu, obrolan yang terbuka, atau obrolan selesai yang belum Anda buka (titik hijau “selesai” dari dsh), juga setelah 2 jam. Proyek tanpa obrolan seperti itu disembunyikan, termasuk proyek baru dan kosong. Pilih opsi ini lagi untuk menampilkan semua proyek. Pilihan ini disimpan di perangkat ini. | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="Tangkapan layar: Filter proyek terbaru"></a> |
|
|
63
66
|
| **Ciutkan semua proyek** | <a id="feature-collapseprojects"></a>Saat ada proyek yang terbuka di bilah samping, sebuah tombol muncul di samping opsi tampilan (ikon slider). Klik tombol itu untuk menutup semua proyek yang terbuka sekaligus, misalnya 3 proyek terbuka dari 5. Tombol itu tersembunyi lagi saat tidak ada proyek yang terbuka. | <a href="assets/features/collapseProjects.webp"><img src="assets/features/collapseProjects.webp" width="160" alt="Tangkapan layar: Ciutkan semua proyek"></a> |
|
|
64
67
|
| **Urutkan menurut status** | <a id="feature-statusorder"></a>Bilah samping → opsi tampilan → **Urutkan menurut** → **Menurut status** (dengan **Dalam satu daftar**). Obrolan yang selesai muncul pertama (titik “selesai” dari dsh, yang juga didapat oleh giliran yang berakhir dengan kesalahan). Lalu muncul obrolan yang berjalan atau menunggu, lalu obrolan dengan otomatisasi aktif (Tugas otomatisasi), lalu sisanya dalam urutan dsh. Membuka obrolan yang selesai memindahkannya ke bawah. Hanya tampilan yang berubah: pilih **Manual** atau **Terakhir diperbarui** untuk kembali. | <a href="assets/features/statusOrder.webp"><img src="assets/features/statusOrder.webp" width="160" alt="Tangkapan layar: Urutkan menurut status"></a> |
|
|
65
68
|
| **Notifikasi latar belakang** | <a id="feature-notifications"></a>Saat dsh berada di latar belakang, Anda mendapat notifikasi ketika sebuah giliran selesai (baris pertama balasan). Anda juga mendapat notifikasi ketika obrolan benar-benar menunggu Anda: persetujuan (nama alat), jawaban (pertanyaannya), atau tinjauan rencana. Permintaan harus masih terbuka 1,5 detik kemudian. Jadi, persetujuan yang dijawab otomatis (izin Tinjauan otomatis, plugin lain) tidak memunculkan notifikasi, dan notifikasi ditarik begitu permintaannya dijawab. Lencana di Dock/taskbar menghitung obrolan yang menunggu. Mengklik notifikasi membuka obrolan itu. | <a href="assets/features/notifications.webp"><img src="assets/features/notifications.webp" width="160" alt="Tangkapan layar: Notifikasi latar belakang"></a> |
|
|
66
69
|
| **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> |
|
|
67
|
-
| **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, 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. | <a href="assets/features/mobileConnect.webp"><img src="assets/features/mobileConnect.webp" width="160" alt="Tangkapan layar: Koneksi seluler (iPhone)"></a> |
|
|
70
|
+
| **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, 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> |
|
|
68
71
|
| **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 (dari pemeriksaan pembaruan yang sama, tanpa panggilan jaringan lain); **Tutup** atau `Esc` menutupnya. | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="Tangkapan layar: Pembaruan otomatis"></a> |
|
|
69
72
|
|
|
70
73
|
<!-- END GENERATED FEATURES -->
|
|
@@ -119,15 +122,15 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
119
122
|
- **Lanjutkan:** endpoint lokal yang terautentikasi hanya melanjutkan giliran terakhir yang terinterupsi, menolak permintaan yang usang atau duplikat, dan mempertahankan hook persetujuan yang ada. Endpoint ini tidak mengirim pesan pengguna baru.
|
|
120
123
|
- **Lanjutkan setelah mulai ulang:** nonaktif sampai Anda mengaktifkannya. Bagian Host hanya menyimpan ID obrolan dan waktu mulai di `$DSH_HOME/storages/dsh-composer-plus/resume.json` (izin akses hanya untuk pemilik), dan tidak ada yang keluar dari mesin Anda. Fitur ini melanjutkan obrolan hanya jika log dsh sendiri menyatakan bahwa dsh (bukan Anda) yang menghentikan giliran terakhirnya. Persetujuan dan Tinjauan otomatis berlaku untuk giliran yang dilanjutkan seperti biasa.
|
|
121
124
|
|
|
122
|
-
- **Panel perubahan:** git berjalan dalam mode hanya-baca di mesin Anda, di folder obrolan itu sendiri, melalui kanal `/api` dsh yang terautentikasi. Git tidak pernah melakukan commit, stage, atau fetch, dan hanya menampilkan jalur yang didaftarkan oleh git sendiri.
|
|
125
|
+
- **Panel perubahan:** git berjalan dalam mode hanya-baca di mesin Anda, di folder obrolan itu sendiri, melalui kanal `/api` dsh yang terautentikasi. Git tidak pernah melakukan commit, stage, atau fetch, dan hanya menampilkan jalur yang didaftarkan oleh git sendiri. Pohon menampilkan 300 commit terbaru dari branch lokal dan remote; pohon tidak pernah berpindah branch (checkout). Di repositori yang sangat besar tanpa file commit-graph, pohon bisa memerlukan beberapa detik untuk terbuka. **Obrolan ini** membaca log milik obrolan untuk menemukan file yang ditulis oleh alat file obrolan itu, lalu membandingkannya dengan snapshot Putar balik giliran milik obrolan di folder sementara yang langsung dihapus; fitur ini tidak menulis apa pun ke repositori Anda atau ke penyimpanan snapshot.
|
|
123
126
|
- **Ide fitur:** tidak ada yang berjalan sampai Anda mengklik **Sarankan fitur**. Setelah itu, bagian Host hanya membaca folder obrolan itu sendiri (browser tidak pernah mengirim jalur): nama entri tingkat atas, 6 kB pertama dari README, AGENTS.md, dan manifes (`package.json`, `pyproject.toml`, `Cargo.toml`, `go.mod`, …), serta `git log --oneline -15`, total paling banyak 16 kB. Bagian Host melewati `.env*`, file kunci, dan folder seperti `node_modules`. Bagian Host juga hanya membaca file biasa yang tetap berada di dalam folder: symlink yang menunjuk ke luar folder, FIFO, atau perangkat akan dilewati. Ringkasan ini dikirim ke model yang dipakai obrolan, melalui pengaturan penyedia bawaan dsh, sebagai satu permintaan; ringkasan ini tidak ditambahkan ke obrolan mana pun. Tidak ada yang ditulis ke proyek. Ide yang digeser ke kanan memulai obrolan baru dalam mode rencana, jadi persetujuan dan tinjauan rencana berlaku seperti biasa. **Buat sekarang** memulai obrolan tanpa mode rencana: model dapat langsung mengubah file, dengan persetujuan obrolan yang biasa dan Tinjauan otomatis. Ide yang disimpan untuk nanti (judul, ringkasan, alasan, upaya) disimpan bersama jalur folder proyek di `storages/dsh-composer-plus/later.json` di dalam dsh home (file hanya untuk pemilik); tidak ada yang masuk ke proyek. Riwayat ide yang disarankan (judul, ringkasan, alasan, upaya, tanggal, sudah dimulai atau belum) disimpan dengan cara yang sama di `storages/dsh-composer-plus/idea-history.json`, paling banyak 200 per proyek (yang terlama keluar lebih dulu); judul-judulnya dikirim ke model bersama **Sarankan fitur** berikutnya di proyek itu.
|
|
124
127
|
- **Pencarian isi:** tidak ada kode baru yang mencari di obrolan Anda. Plugin hanya mengaktifkan indeks pesan bawaan dsh (SQLite FTS5, `dsh-session-query-sqlite`) dan memberinya sebuah file, `$DSH_HOME/cache/composer-plus/session-search.db` (file dan folder hanya untuk pemilik). File ini berisi teks pesan pengguna dan asisten Anda, jadi sama privatnya dengan log obrolan di `$DSH_HOME/sessions`. Tidak ada yang keluar dari mesin Anda. File ini adalah salinan yang dapat dibuat ulang oleh dsh: Anda dapat menghapusnya saat dsh ditutup. Sakelarnya ada di `$DSH_HOME/storages/dsh-composer-plus/content-search.json`.
|
|
125
|
-
- **Putar balik giliran:** sebelum setiap pesan Anda, Host mengambil snapshot git dari folder obrolan ke penyimpanannya sendiri, `$DSH_HOME/cache/composer-plus/rollback/<chat>.git` (folder hanya untuk pemilik). Penyimpanan ini berisi salinan file di folder itu yang terlihat oleh git (bukan file yang diabaikan), jadi sama privatnya dengan proyek. Fitur ini membaca objek repositori Anda (tanpa menyalin apa yang sudah dimiliki git) dan tidak pernah menulis index, `HEAD`, branch, tag, stash, atau config repositori Anda. Satu-satunya perubahan yang dibuat git di sana adalah stempel waktu yang lebih baru pada file objek yang dipakai ulang (ini menunda pembersihannya oleh `git gc`). Putar balik dengan file hanya menulis file biasa di dalam folder obrolan; symlink, pipe, dan apa pun di luar folder dilewati. Tidak ada yang keluar dari mesin Anda. Anda dapat menghapus penyimpanan ini saat dsh ditutup (putar balik lalu hanya berlaku untuk obrolan, sampai ada pesan baru). **Hapus obrolan** juga menghapus penyimpanan milik obrolan itu. Sakelarnya ada di `$DSH_HOME/storages/dsh-composer-plus/rollback.json`.
|
|
128
|
+
- **Putar balik giliran:** sebelum setiap pesan Anda, Host mengambil snapshot git dari folder obrolan ke penyimpanannya sendiri, `$DSH_HOME/cache/composer-plus/rollback/<chat>.git` (folder hanya untuk pemilik). Penyimpanan ini berisi salinan file di folder itu yang terlihat oleh git (bukan file yang diabaikan), jadi sama privatnya dengan proyek. Fitur ini membaca objek repositori Anda (tanpa menyalin apa yang sudah dimiliki git) dan tidak pernah menulis index, `HEAD`, branch, tag, stash, atau config repositori Anda. Satu-satunya perubahan yang dibuat git di sana adalah stempel waktu yang lebih baru pada file objek yang dipakai ulang (ini menunda pembersihannya oleh `git gc`). Putar balik dengan file hanya menulis file biasa di dalam folder obrolan; symlink, pipe, dan apa pun di luar folder dilewati. Tidak ada yang keluar dari mesin Anda. Anda dapat menghapus penyimpanan ini saat dsh ditutup (putar balik lalu hanya berlaku untuk obrolan, sampai ada pesan baru). **Hapus obrolan** juga menghapus penyimpanan milik obrolan itu. Sakelarnya ada di `$DSH_HOME/storages/dsh-composer-plus/rollback.json`. Putar balik dengan file juga menyimpan file seperti keadaannya tepat sebelum putar balik (`refs/r/…` di penyimpanan yang sama), untuk **Ulangi**; putar balik yang sudah diulangi dicatat di `$DSH_HOME/storages/dsh-composer-plus/redone.json` (hanya untuk pemilik).
|
|
126
129
|
- **Ekspor obrolan sebagai Markdown:** bagian Host hanya membaca log milik obrolan itu (pesan yang sama dengan yang ditampilkan dsh) dan memberikannya ke halaman; bagian ini tidak membaca file proyek dan tidak mengirim apa pun lewat jaringan. Markdown hanya masuk ke papan klip Anda atau ke file yang Anda simpan.
|
|
127
130
|
- **Hapus obrolan:** memindahkan folder log milik obrolan (`$DSH_HOME/sessions/<project>/<chat>`) ke Tong Sampah. Folder proyek tidak disentuh.
|
|
128
|
-
- **Izinkan untuk obrolan ini:** izin disimpan di `$DSH_HOME/storages/dsh-composer-plus/grants.json` (izin akses hanya untuk pemilik). Satu izin berlaku untuk satu alat tertentu di satu obrolan. Jika alat itu dapat menulis, izin itu juga mencakup penulisan apa pun. Cabut izin dari chip di header.
|
|
131
|
+
- **Izinkan untuk obrolan ini:** izin disimpan beserta waktu pemberiannya di `$DSH_HOME/storages/dsh-composer-plus/chat-grants.json` (izin akses hanya untuk pemilik). Satu izin berlaku untuk satu alat tertentu di satu obrolan, sampai batas waktu berakhir (1 jam secara default). Jika alat itu dapat menulis, izin itu juga mencakup penulisan apa pun. Cabut izin dari chip di header.
|
|
129
132
|
- Tinjauan otomatis tetap berjalan pada setiap panggilan; tinjauan yang gagal tidak pernah diizinkan secara otomatis.
|
|
130
|
-
- **Koneksi seluler:** nonaktif sampai Anda mengaktifkannya. Selama aktif, bagian Host menjalankan gateway Tether: HTTPS di port 19390 yang hanya menerima subnet Wi-Fi dan tailnet Anda (100.64.0.0/10), serta halaman pemasangan di `127.0.0.1:19391` (hanya Mac ini). Ponsel memerlukan kode sekali pakai dari kode QR (berlaku 5 menit) dan klik **Approve** dari Anda di Mac. Ponsel menyematkan (pin) sertifikat gateway. Mac hanya menyimpan hash token setiap ponsel (30 hari, diperpanjang selama dipakai); **Remove** langsung menutup koneksi ponsel itu. Ponsel hanya dapat memanggil daftar metode dsh yang diizinkan (obrolan, prompt, lampiran, perintah garis miring, persetujuan, pertanyaan, model, agen, tujuan), bukan pengaturan, kredensial, browser file, atau terminal. Data: `$DSH_HOME/storages/dsh-composer-plus/mobile
|
|
133
|
+
- **Koneksi seluler:** nonaktif sampai Anda mengaktifkannya. Selama aktif, bagian Host menjalankan gateway Tether: HTTPS di port 19390 yang hanya menerima subnet Wi-Fi dan tailnet Anda (100.64.0.0/10), serta halaman pemasangan di `127.0.0.1:19391` (hanya Mac ini). Ponsel memerlukan kode sekali pakai dari kode QR (berlaku 5 menit) dan klik **Approve** dari Anda di Mac. Ponsel menyematkan (pin) sertifikat gateway. Mac hanya menyimpan hash token setiap ponsel (30 hari, diperpanjang selama dipakai); **Remove** langsung menutup koneksi ponsel itu. Ponsel hanya dapat memanggil daftar metode dsh yang diizinkan (obrolan, prompt, lampiran, perintah garis miring, persetujuan, pertanyaan, model, agen, tujuan), bukan pengaturan, kredensial, browser file, atau terminal. "Tailscale only" menolak setiap koneksi dari jaringan lokal, termasuk koneksi yang sudah terbuka. Log akses menyimpan 200 percobaan koneksi terbaru (waktu, alamat IP, nama perangkat, diizinkan atau ditolak, dan alasannya) di `access.json`; log ini tidak pernah menyimpan token atau kode pemasangan. Data: `$DSH_HOME/storages/dsh-composer-plus/mobile/` (file hanya untuk pemilik). Detail: [tether/README.md](tether/README.md).
|
|
131
134
|
- **Pembaruan:** bagian Host menanyakan rilis terbaru ke `api.github.com` dan versi persis itu ke `registry.npmjs.org`; tidak ada data tentang Anda atau obrolan Anda yang dikirim. Pemasangan memakai pengelola plugin dsh (`pnpm add dsh-composer-plus@<version>`; jika dsh 0.2.1 menolaknya untuk plugin yang sudah terpasang, `pnpm add https://registry.npmjs.org/dsh-composer-plus/-/dsh-composer-plus-<version>.tgz`, lalu profil mencantumkan URL itu sebagai sumber plugin), jadi pemeriksaan registri, skrip, dan kompatibilitas versi milik dsh tetap berlaku. Tag pra-rilis dan versi lama tidak pernah dipasang.
|
|
132
135
|
- **Prediksi pesan berikutnya:** aktif secara default. Nonaktifkan di **Pengaturan → Composer Plus** untuk menghentikan panggilan model ini. Setelah setiap giliran selesai, bagian Host mengirim pesan Anda sendiri di obrolan itu dan balasan teks agen (tanpa keluaran alat, tanpa konteks tersembunyi, tanpa penalaran), paling banyak sekitar 6.000 karakter (bagian terbaru), ke model yang dipilih (model default dsh, kecuali Anda memilih yang lain). Pengiriman ini memakai pengaturan penyedia bawaan dsh, sebagai satu permintaan. Tidak ada yang disimpan di obrolan: tebakan tidak ditambahkan ke riwayat obrolan. Sakelar dan pilihan model disimpan di `$DSH_HOME/storages/dsh-composer-plus/predict.json` (file hanya untuk pemilik).
|
|
133
136
|
- **Lengkapi saat mengetik:** nonaktif sampai Anda mengaktifkannya. Selama aktif, di setiap jeda saat Anda mengetik, bagian Host mengirim teks yang sudah Anda ketik, serta pesan Anda sendiri di obrolan itu dan balasan teks agen (tanpa keluaran alat, tanpa konteks tersembunyi, tanpa penalaran), paling banyak sekitar 3.000 karakter dari obrolan, ke model yang dipilih di **Lengkapi saat mengetik** (secara default model **Prediksi pesan berikutnya**). Jeda yang lebih baru menghentikan permintaan yang lebih lama. Tidak ada yang disimpan di obrolan. Sakelar disimpan di `$DSH_HOME/storages/dsh-composer-plus/complete.json` (file hanya untuk pemilik).
|
|
@@ -144,8 +147,9 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
144
147
|
- **Tidak ada tombol ↶ di pesan saya:** Putar balik giliran nonaktif, obrolan itu adalah obrolan subagen, atau dsh-rewind-plugin terpasang (gunakan tombol ↶ miliknya). Setelah pembaruan, mulai ulang dsh.
|
|
145
148
|
- **Obrolan dan file berwarna abu-abu:** proyek bukan repositori git, tidak ada snapshot dari sebelum pesan itu (pesan lebih lama dari plugin, atau salah satu dari 50 snapshot terbaru telah menggantikannya), atau tidak ada file yang berubah.
|
|
146
149
|
- **Hapus menyatakan dsh lain sedang membuka obrolan ini:** dsh kedua pada dsh home yang sama memegang kunci obrolan. Tutup jendela atau dsh itu, lalu hapus lagi. Sementara itu, obrolan tetap diarsipkan.
|
|
150
|
+
- **iPhone saya tidak dapat terhubung setelah saya mengaktifkan "Tailscale only":** Tailscale harus aktif di Mac dan di iPhone. Panel Koneksi seluler memberi peringatan saat Tailscale nonaktif di Mac. Log akses menampilkan setiap percobaan yang ditolak beserta alasannya.
|
|
147
151
|
- **Obrolan tidak berlanjut setelah mulai ulang:** Lanjutkan setelah mulai ulang nonaktif saat dsh ditutup, Anda sendiri yang menghentikan giliran itu, giliran sudah berakhir (selesai atau gagal), obrolan diarsipkan, atau lebih dari 20 obrolan sedang berjalan (20 yang terbaru berlanjut).
|
|
148
|
-
- **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.
|
|
152
|
+
- **Pemasangan gagal tepat setelah rilis:** tambahkan versinya (`dsh-composer-plus@1.13.0`), lihat catatan pemasangan di atas.
|
|
149
153
|
|
|
150
154
|
## Batasan
|
|
151
155
|
|
|
@@ -161,9 +165,14 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
161
165
|
- **Hapus obrolan** memerlukan fitur arsip dsh (dsh 0.2.0 dan yang lebih baru). Obrolan (atau salah satu obrolan subagennya) yang tidak berhenti dalam 15 detik, atau yang dipegang oleh dsh lain, tetap diarsipkan dan tidak ada yang dipindahkan. Di sistem selain macOS, folder sampah harus berada di disk yang sama dengan riwayat obrolan. Obrolan terbuka yang Anda hapus tetap ada di memori dsh, dalam keadaan diarsipkan dan tersembunyi, sampai dsh dimulai ulang. Kosongkan Tong Sampah sendiri; dsh tidak melakukannya.
|
|
162
166
|
- Antrean dsh tidak memiliki tindakan `move`, jadi bagian Host plugin memindahkan pesan antrean itu sendiri di dalam antrean dsh (satu perubahan, pesan yang sama). Pesan dengan gambar atau file juga dapat dipindahkan. Hanya pesan Anda sendiri yang dapat dipindahkan: putaran tujuan atau balasan pertanyaan di antrean tetap di tempatnya. Jika sebuah pesan mulai dikirim saat Anda menyeret, tidak ada yang dipindahkan dan muncul pemberitahuan tentang hal itu.
|
|
163
167
|
- dsh 0.2.1 langsung memuat pembaruan jika versi baru tidak mengubah pengaturan dsh apa pun; dalam kasus lain, dan pada dsh 0.2.0, mulai ulang dsh untuk memuatnya. Plugin tidak pernah memulai ulang dsh untuk Anda. Profil web/CLI tanpa pengelola plugin dsh hanya melaporkan adanya versi baru.
|
|
168
|
+
- **Izinkan untuk obrolan ini** menghitung batas waktu sejak izin diberikan. Batas waktu baru langsung berlaku untuk izin yang sedang berjalan, jadi batas yang lebih pendek dapat langsung mengakhirinya. Izin dari versi 1.12 dan sebelumnya tidak memiliki waktu: setelah pembaruan, agen bertanya sekali lagi untuk alat-alat itu.
|
|
164
169
|
- **Pertahankan fokus composer** mengembalikan fokus hanya setelah perintah `/` atau skill. Saat dsh memproses perintah, kotak pesan tetap hanya-baca selama beberapa milidetik, jadi tombol yang ditekan dalam waktu itu hilang. Jika menu `/` dsh masih terbuka, `Enter` memilih baris yang disorot dan tidak mengirim.
|
|
165
|
-
- **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). Ponsel hanya mendapat notifikasi saat Tether terbuka atau baru saja masuk ke latar belakang (tidak ada layanan push). Aplikasi iOS belum ada di App Store: bangun aplikasi itu dari `tether/ios` dengan Xcode. 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.
|
|
166
|
-
- Tautan sesi berfungsi di dalam obrolan; mengkliknya tidak membuka obrolan.
|
|
170
|
+
- **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). Ponsel hanya mendapat notifikasi saat Tether terbuka atau baru saja masuk ke latar belakang (tidak ada layanan push). 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 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.
|
|
171
|
+
- 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.
|
|
172
|
+
- **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.
|
|
173
|
+
- **Edit pesan antrean di tempat** membuka editor antrean bawaan dsh, jadi batasannya juga berlaku: pesan dengan gambar atau file tidak dapat diedit, dan pesan yang sementara itu mulai terkirim tidak diubah (dsh menampilkan pesan error-nya sendiri).
|
|
174
|
+
- **Ulangi** tidak pernah mengubah obrolan yang diputar balik: fitur ini memulai obrolan baru dari tepat sebelum putar balik (pencabangan bawaan dsh, konteks model yang sama), jadi obrolan baru memiliki id dan judul baru. Hanya putar balik terbaru dari sebuah obrolan yang dapat diulangi, satu kali, dan hanya selama belum ada apa pun sesudahnya (pesan baru mengakhiri tawaran ini). File yang Anda ubah sesudah putar balik dipertahankan, kecuali Anda mencentang kotak yang menimpanya. Ulangi memerlukan snapshot yang disimpan oleh putar balik (jendela 50 entri yang sama); putar balik yang dibuat sebelum versi ini, atau dengan **Obrolan saja**, hanya mengembalikan pesan.
|
|
175
|
+
- **Obrolan ini** hanya menghitung file yang ditulis oleh alat file dsh (`write`, `edit`, `str_replace_editor`). File yang diubah oleh perintah (`bash`) tidak ada di tampilan ini; file itu tampil di **Belum Di-commit**. Tanpa snapshot Putar balik giliran untuk obrolan (Putar balik giliran nonaktif, dsh-rewind-plugin terpasang, atau obrolan lebih lama dari plugin), tampilan ini membandingkan dengan commit terakhir dan memberi tahu hal itu. Putar balik giliran menyimpan 50 snapshot terbaru dari sebuah obrolan: pada obrolan yang lebih panjang, tampilan membandingkan dengan snapshot tertua yang disimpan, menyebutkan dari pesan mana, dan tidak menghitung perubahan yang lebih awal. **Sembunyikan perubahan spasi** sama dengan `git diff -w`: baris yang hanya berubah pada spasi di dalamnya juga disembunyikan.
|
|
167
176
|
- Notifikasi yang dikirim sebelum mulai ulang hanya membawa dsh ke depan saat diklik.
|
|
168
177
|
- Proyek aktif dipindahkan dengan urutan proyek tersimpan milik dsh, jadi urutan baru tetap ada setelah mulai ulang. Obrolan di luar proyek mana pun ("Tanpa grup") tidak dapat dipindahkan; dsh selalu menampilkannya paling akhir.
|
|
169
178
|
- dsh tidak memiliki titik ekstensi di menu opsi tampilan bilah samping, jadi opsi proyek terbaru ditambahkan ke menu bawaan dsh. Jika pembaruan dsh mengubah menu itu, opsi ini tidak ditampilkan dan semua proyek tetap terlihat. Filter bekerja pada baris proyek, jadi **Dalam satu daftar** tidak difilter. Gunakan filter ini bersama **Ruang Kerja**: dalam **Pohon Ruang Kerja**, folder induk yang tersembunyi juga menyembunyikan proyek aktif di dalamnya. **Menurut status** memiliki batasan serupa: dsh tidak memiliki slot urutan, jadi item dan urutan baris menempel ke markup menu dan daftar dsh.
|
|
@@ -200,7 +209,21 @@ Diuji pada dsh `0.2.0-rc.2` (desktop dan web) dan `0.2.1-rc.2` (web). CI menjala
|
|
|
200
209
|
|
|
201
210
|
**Bagaimana cara mengubah urutan pesan dalam antrean di dsh?** Seret pegangan ⠿ pada pesan dalam antrean, atau fokuskan pegangan itu lalu tekan `↑` / `↓`.
|
|
202
211
|
|
|
203
|
-
**Bagaimana cara
|
|
212
|
+
**Bagaimana cara memperbaiki salah ketik di pesan dalam antrean?** Klik dua kali pesan di antrean, ubah teksnya, lalu tekan `Enter` (`Esc` membatalkan). Pesan tetap di tempatnya dalam antrean.
|
|
213
|
+
|
|
214
|
+
**Bagaimana cara menghapus semua titik belum dibaca di satu proyek sekaligus?** Bilah samping → tombol **…** proyek → **Tandai semua sudah dibaca**.
|
|
215
|
+
|
|
216
|
+
**Bisakah saya menautkan ke satu pesan di obrolan yang panjang?** Bisa: arahkan penunjuk ke pesan itu dan klik **🔗**. Kirim tautan itu di obrolan: di dsh 0.2.1 dan yang lebih baru, klik pada tautan membuka obrolan di pesan itu.
|
|
217
|
+
|
|
218
|
+
**Saya tidak sengaja memutar balik giliran. Bisakah saya mendapatkannya kembali?** Bisa, dengan **Ulangi** di atas kotak pesan, tepat setelah putar balik: fitur ini memulai obrolan baru dari tepat sebelum putar balik dengan pesan yang sama, dan jika putar baliknya memakai **Obrolan dan file**, file juga dikembalikan.
|
|
219
|
+
|
|
220
|
+
**Bagaimana cara melihat hanya file yang diubah oleh satu obrolan?** Bilah samping kanan → **Perubahan** → **Obrolan ini**. Klik **␣** untuk menyembunyikan perubahan yang hanya berupa spasi.
|
|
221
|
+
|
|
222
|
+
**Bagaimana cara menghentikan Tinjauan otomatis agar tidak terus bertanya tentang alat yang sama dalam satu obrolan?** Klik **Izinkan untuk obrolan ini** pada kartu persetujuan. Izin ini hanya mencakup alat itu di obrolan itu, selama 1 jam secara default; cabut izin dari chip di header. Ubah waktunya di **Pengaturan → Composer Plus → Izinkan untuk obrolan ini**.
|
|
223
|
+
|
|
224
|
+
**iPhone saya hilang. Bagaimana cara mencegahnya mengakses Mac saya?** Klik **Koneksi seluler** di kiri bawah bilah samping, lalu klik **Remove** di samping iPhone itu. Kuncinya langsung tidak berfungsi; iPhone itu hanya dapat kembali dengan pemasangan baru yang Anda setujui di Mac.
|
|
225
|
+
|
|
226
|
+
**Bisakah saya mengunci Tether dengan Face ID?** Bisa: di Tether, aktifkan "Settings → Privacy → Lock with Face ID". Setelah itu, Tether meminta Face ID (atau kode sandi) saat dibuka dan saat Anda kembali ke aplikasi itu.
|
|
204
227
|
|
|
205
228
|
**Bagaimana cara hanya menampilkan proyek yang saya pakai hari ini di bilah samping dsh?** Bilah samping → opsi tampilan (ikon slider) → **Aktif dalam 2 jam terakhir**. Pilih lagi untuk menampilkan semua proyek.
|
|
206
229
|
|
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.
|
|
32
|
+
> dsh の pnpm は、公開から 24 時間たっていないバージョンをスキップします。リリース直後は、バージョンを指定してください:`dsh-composer-plus@1.13.0`。
|
|
33
33
|
|
|
34
34
|
## 機能
|
|
35
35
|
|
|
@@ -37,10 +37,10 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
37
37
|
|
|
38
38
|
| 機能 | 使い方 | スクリーンショット |
|
|
39
39
|
|---|---|---|
|
|
40
|
-
| **変更パネル** | <a id="feature-changespanel"></a>右サイドバー → `+` → **変更**。**未コミット**、**未ステージ**、**ステージ済み**、**ブランチ** のいずれかを選ぶと、変更されたファイルが `+/-` の行数とともに表示されます。ファイルをクリックすると、その差分を表示します。**最後のターン** は、最新のターンに対する dsh
|
|
40
|
+
| **変更パネル** | <a id="feature-changespanel"></a>右サイドバー → `+` → **変更**。**未コミット**、**未ステージ**、**ステージ済み**、**ブランチ** のいずれかを選ぶと、変更されたファイルが `+/-` の行数とともに表示されます。ファイルをクリックすると、その差分を表示します。**最後のターン** は、最新のターンに対する dsh 標準のレビューを開きます。ブランチ名をクリックする(または **ツリー** を選ぶ)とブランチツリーを表示します。上のブランチをクリックするとそのブランチへ移動し、コミットをクリックするとそのファイルと差分を表示します。**このチャット** は、開いているチャットのファイルツール(write、edit)がすべてのターンで書き込んだファイルだけを、最初のメッセージからの差分の合計とともに一覧表示します。**␣** ボタンは空白の変更を非表示にします(`git diff -w`)。インデントや改行コードだけが変わった行は表示されません。 | <a href="assets/features/changesPanel.webp"><img src="assets/features/changesPanel.webp" width="160" alt="スクリーンショット: 変更パネル"></a> |
|
|
41
41
|
| **機能のアイデア** | <a id="feature-featureideas"></a>右サイドバー → `+` → **機能のアイデア** → **機能を提案**。チャットのモデルが、チャットのプロジェクトの短い概要(最上位のファイル、README とマニフェストの冒頭、直近 15 件のコミット)を読み、最大 8 件の機能を提案します。提案は、dsh の UI 言語のカードの束として表示されます。カードを右にスワイプする(または **✓** をクリックするか `→` を押す。どの場合もカードはその方向へ飛んでいきます)と、同じプロジェクトで新しいチャットを開始します。新しいチャットはアイデアを依頼内容として計画モードで始まるため、計画を承認するまで何も変更されません。計画を省くには、**▶ すぐに実装** をクリックします(または `↑` を押します。カードは上へ飛んでいきます)。新しいチャットはアイデアを通常の依頼としてすぐに始まり、モデルが変更を加えてチェックを実行します(承認は通常どおり適用されます)。スキップするには、左にスワイプします(または **✕**、`←`)。**元に戻す**(または `Z`)で、スキップしたカードを戻せます。良いアイデアを後で使うには、**↓** をクリックします(または `↓` を押します)。アイデアはプロジェクトの **あとで** リストに入ります。このリストは、同じプロジェクトフォルダーのすべてのチャットに表示されます(再起動後も表示されます)。**あとで(N)** でリストを開きます。**計画する** は、そのアイデアで同じ計画モードのチャットを開始し、**すぐに実装** は計画なしのチャットを開始します。どちらもアイデアをリストから外します。**すべてまとめて計画(N)** は、リストのすべてのアイデアで 1 つの計画モードのチャットを開始するため、共通する部分は 1 回だけ計画されます。**リストから削除** はアイデアを削除します。**チェックリストとしてコピー** は、リスト全体を Markdown のチェックリスト(`- [ ] Title — Summary`、アイデアごとに 1 行)としてクリップボードにコピーします。課題管理ツールや TODO ファイルに使えます。ネットワーク通信はしません。**アイデアをさらに提案** でカードを追加します。1 つの分野だけのアイデアがほしい場合は、**機能を提案** の横の欄に短い **重点テーマ** を入力するか(80 文字まで。`Enter` でも提案します)、その下の固定テーマ **パフォーマンス**、**アクセシビリティ**、**テスト**、**セキュリティ**、**使いやすさ**、**ドキュメント** のどれかをクリックします(もう一度クリックすると解除されます)。するとモデルは、そのテーマに関する機能だけを提案します。欄が空のときは、どの機能でも提案します。同じプロジェクトで同じアイデアが 2 回提案されることはありません。提案されたアイデアは(スキップ、保存、開始のどれでも)すべてプロジェクトの **履歴** に入ります。モデルにはそれらを再び提案しないよう指示され、同じタイトルのアイデアは除外されます。**履歴** では、アイデアが **開始済み** または **提案済み** として一覧表示されます。**忘れる**(または **すべて忘れる**)で、そのアイデアが再び提案されるようになりますが、まだ **あとで** リストにあるアイデアは、そこから削除するまで提案されません。モデルはクリックしたときだけ実行されます。 | <a href="assets/features/featureIdeas.webp"><img src="assets/features/featureIdeas.webp" width="160" alt="スクリーンショット: 機能のアイデア"></a> |
|
|
42
42
|
| **内容検索** | <a id="feature-contentsearch"></a>dsh 標準のサイドバー検索(**ワークスペース** の横の虫眼鏡。デスクトップアプリでは `Cmd+K`、ブラウザーでは `Cmd+Alt+K`)で、タイトルだけでなく、自分のメッセージと返信に含まれる単語からもチャットを探せます。一致したテキストはチャットの下に表示されます。dsh にはこの検索がすでにありますが、オフの状態で提供されています。この機能は、コンピューター上の検索インデックスファイルを使って、この検索をオンにします。インデックスは起動後の最初の検索で作成され(250 件のチャットで約 15 秒。「制限事項」を参照)、次回以降の起動でも使われます。既定ではオンです。変更は dsh の再起動後に反映されます。 | <a href="assets/features/contentSearch.webp"><img src="assets/features/contentSearch.webp" width="160" alt="スクリーンショット: 内容検索"></a> |
|
|
43
|
-
| **ターンのロールバック** | <a id="feature-turnrollback"></a>自分のメッセージにポインターを合わせ、**↶**(コピーの横)をクリックします。**チャットのみ** は、そのメッセージとそれ以降のすべて(返信、ツール呼び出し)をチャットとモデルのコンテキストから取り除き、メッセージを入力欄に戻します。内容を変更して、もう一度送信してください。**チャットとファイル** は、まずそのメッセージ以降に変更されたプロジェクトのファイルを一覧表示し、それらのファイルも元の状態に戻します。dsh の編集ツールによる変更だけでなく、コマンド(`bash`)による変更も戻します。実行中のターンは先に停止します。チャットのログが書き換えられることはありません。1 つの隠しマーカーが、取り除いた部分を隠します。これは、dsh 標準の `/compact` が古いメッセージを隠すのと同じ方法です。[dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) がインストールされている場合は、そのプラグインがこの役割を担い、Composer Plus は 2
|
|
43
|
+
| **ターンのロールバック** | <a id="feature-turnrollback"></a>自分のメッセージにポインターを合わせ、**↶**(コピーの横)をクリックします。**チャットのみ** は、そのメッセージとそれ以降のすべて(返信、ツール呼び出し)をチャットとモデルのコンテキストから取り除き、メッセージを入力欄に戻します。内容を変更して、もう一度送信してください。**チャットとファイル** は、まずそのメッセージ以降に変更されたプロジェクトのファイルを一覧表示し、それらのファイルも元の状態に戻します。dsh の編集ツールによる変更だけでなく、コマンド(`bash`)による変更も戻します。実行中のターンは先に停止します。チャットのログが書き換えられることはありません。1 つの隠しマーカーが、取り除いた部分を隠します。これは、dsh 標準の `/compact` が古いメッセージを隠すのと同じ方法です。[dsh-rewind-plugin](https://www.npmjs.com/package/dsh-rewind-plugin) がインストールされている場合は、そのプラグインがこの役割を担い、Composer Plus は 2 つ目のボタンを表示しません。ロールバックの後、入力欄の上に **やり直す** バーが表示されます。ロールバックの直前から新しいチャットを開始し(同じメッセージとコンテキスト)、**チャットとファイル** の場合はファイルも戻します。ロールバックの後に変更したファイルは一覧に表示され、上書きのチェックボックスをオンにしない限り、そのまま残ります。 | <a href="assets/features/turnRollback.webp"><img src="assets/features/turnRollback.webp" width="160" alt="スクリーンショット: ターンのロールバック"></a> |
|
|
44
44
|
| **チャットを削除** | <a id="feature-deletechat"></a>サイドバー → チャットの **…** メニュー(または右クリック)→ **削除…** → **削除**。dsh 自体にはアーカイブしかありません。チャットは停止し(dsh 標準のアーカイブと同じく、ターン、ジョブ、サブエージェント、スケジュールも停止します)、保存された履歴はサブエージェントのチャットとともに macOS のゴミ箱に移動します(ほかのシステムでは `$DSH_HOME/trash`)。元に戻すには、フォルダーを元の場所に戻して dsh を再起動します。チャットはサイドバーの **アーカイブのみ** の表示に現れます。 | <a href="assets/features/deleteChat.webp"><img src="assets/features/deleteChat.webp" width="160" alt="スクリーンショット: チャットを削除"></a> |
|
|
45
45
|
| **入力欄にプロジェクト名** | <a id="feature-projectname"></a>入力欄の下の行(ターン数、トークン数、キャッシュヒット、コンテキスト)の先頭に、チャットのプロジェクト名が表示されます。そのため、チャットがどのプロジェクトで作業しているかが常にわかります。表示されるのは dsh のプロジェクトのタイトルで、タイトルがない場合はフォルダー名です。ポインターを合わせると、フォルダーのフルパスが表示されます。クリックすると、サイドバーでそのチャットを表示します(リスト表示とプロジェクト表示のどちらでも動作します)。サイドバーとプロジェクトが開き(折りたたんだプロジェクトとその **さらに N 件のセッションを表示** も開きます)、リストがチャットまでスクロールし、チャットが 5 秒間点滅します。 | <a href="assets/features/projectName.webp"><img src="assets/features/projectName.webp" width="160" alt="スクリーンショット: 入力欄にプロジェクト名"></a> |
|
|
46
46
|
| **入力履歴** | <a id="feature-inputhistory"></a>入力欄が空のときに `↑` / `↓` を押すと、ターミナルのように、送信済みのメッセージを順に呼び出せます。 | <a href="assets/features/inputHistory.webp"><img src="assets/features/inputHistory.webp" width="160" alt="スクリーンショット: 入力履歴"></a> |
|
|
@@ -49,22 +49,25 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
49
49
|
| **ワンクリックで続行** | <a id="feature-continuebutton"></a>停止、失敗、または途中で切れたターンの後、空の入力欄に **▶** が表示されます。1 回クリックすると、入力欄に何も書かず、チャットに見えるメッセージも追加せずに、既存の会話から再開します(モデルには「止まったところから続ける」という短い隠しメモが届きます。Claude など一部のプロバイダーは、アシスタントの返信で終わるリクエストを拒否するためです)。キューで待っているメッセージはそのまま残ります。▶ は止まったタスクだけを続行し、その後でキューが実行されます。完了したターンの後は、通常の送信ボタンのままです。 | <a href="assets/features/continueButton.webp"><img src="assets/features/continueButton.webp" width="160" alt="スクリーンショット: ワンクリックで続行"></a> |
|
|
50
50
|
| **再起動後に再開** | <a id="feature-resumeafterrestart"></a>既定ではオフです。**設定 → Composer Plus** でオンにしてください。チャットの実行中に dsh を終了した(または dsh が閉じた)場合、次に dsh を開くと、そのチャットが自動で続行します。このとき、ワンクリックで続行と同じ隠しメモを使います。目標のラウンド(`/goal`)が実行中だった場合は、目標が次のラウンドに進みます(dsh は起動のたびに目標を一時停止し、再開されるまで待ちます)。自分で停止したチャット、完了したチャット、失敗したチャットは続行しません。dsh 自体にはこの設定がなく、そのようなターンを中断済みとして記録するだけです。 | <a href="assets/features/resumeAfterRestart.webp"><img src="assets/features/resumeAfterRestart.webp" width="160" alt="スクリーンショット: 再起動後に再開"></a> |
|
|
51
51
|
| **キューのドラッグ&ドロップ** | <a id="feature-queuereorder"></a>キュー内のメッセージにハンドル(⠿)が付きます。ドラッグして並べ替えるか、ハンドルにフォーカスを置いて `↑` / `↓` を押します。`Esc` でキャンセルします。 | <a href="assets/features/queueReorder.webp"><img src="assets/features/queueReorder.webp" width="160" alt="スクリーンショット: キューのドラッグ&ドロップ"></a> |
|
|
52
|
+
| **キュー内のメッセージをその場で編集** | <a id="feature-queueedit"></a>キュー内のメッセージをダブルクリックします。メッセージが dsh 標準の編集欄に変わります。テキストを変更し、`Enter` で保存、`Esc` でキャンセルします。メッセージのキュー内の位置は変わりません。画像やファイルを含むメッセージは、この方法では編集できません(dsh のキューはテキストだけを編集します)。 | <a href="assets/features/queueEdit.webp"><img src="assets/features/queueEdit.webp" width="160" alt="スクリーンショット: キュー内のメッセージをその場で編集"></a> |
|
|
52
53
|
| **セッションリンクをコピー** | <a id="feature-copydeeplink"></a>サイドバーのチャットを右クリック → **セッションリンクをコピー**。`dsh-session:…` のリンクを別のチャットに貼り付けると、そのチャットを読み取り専用のコンテキストとして添付できます。dsh 0.2.1 には標準の **セッション ID をコピー** があり、こちらは ID だけをコピーします。この項目は、そのすぐ後に表示されます。 | <a href="assets/features/copyDeeplink.webp"><img src="assets/features/copyDeeplink.webp" width="160" alt="スクリーンショット: セッションリンクをコピー"></a> |
|
|
54
|
+
| **メッセージリンクをコピー** | <a id="feature-copymessagelink"></a>メッセージにポインターを合わせ、**🔗** をクリックします(メッセージの操作行にあります。回答では時刻の横です)。リンクは、セッションリンクの後ろにメッセージ番号を付けたもの(`dsh-session:…#42`)です。このリンクをメッセージに貼り付けて送信します。dsh 0.2.1 以降では、リンクがチップとして表示されます。クリックするとそのチャットが開き、メッセージまでスクロールして、2 秒間ハイライトします。セッションリンクと同じく、そのチャットを読み取り専用のコンテキストとして添付します。 | <a href="assets/features/copyMessageLink.webp"><img src="assets/features/copyMessageLink.webp" width="160" alt="スクリーンショット: メッセージリンクをコピー"></a> |
|
|
53
55
|
| **チャットを Markdown として書き出し** | <a id="feature-exportmarkdown"></a>サイドバーのチャットを右クリック(またはチャットの **…** メニューを開く)→ **Markdown として書き出し…**。ダイアログにチャットのメッセージ数が表示されます。**クリップボードにコピー** はチャットを Markdown としてコピーし、**.md ファイルを保存** はブラウザーのダウンロードで `<chat title>.md` として保存します(dsh デスクトップでは、システムの設定に応じて「ダウンロード」フォルダーに保存されるか、保存ダイアログが開きます)。ファイルには、チャットのタイトル、プロジェクト名、日付が入り、その後にメッセージごとに 1 つの `## あなた` または `## アシスタント` のセクションが続きます。コードブロックはそのまま残ります。メッセージが閉じていないコードブロックは閉じられます。 | <a href="assets/features/exportMarkdown.webp"><img src="assets/features/exportMarkdown.webp" width="160" alt="スクリーンショット: チャットを Markdown として書き出し"></a> |
|
|
54
56
|
| **プロジェクトのパスをコピー** | <a id="feature-copyprojectpath"></a>サイドバーのプロジェクトを右クリック → **パスをコピー** で、そのフォルダーのフルパスをコピーします。 | <a href="assets/features/copyProjectPath.webp"><img src="assets/features/copyProjectPath.webp" width="160" alt="スクリーンショット: プロジェクトのパスをコピー"></a> |
|
|
55
57
|
| **新しいチャットでのプロジェクト検索** | <a id="feature-projectpicker"></a>新しいチャット → 入力欄の上にあるプロジェクトのボタン。プロジェクトが A–Z 順に並び、上部に **プロジェクトを検索** ボックスが表示されます。名前の一部を入力し(大文字と小文字、アクセント記号は区別しません)、`Enter` を押すと、最初に一致したプロジェクトを選びます。一致するものがない場合は、**一致するプロジェクトはありません** と表示されます。サイドバーにある dsh の保存済みのプロジェクトの順序は変わりません。 | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="スクリーンショット: 新しいチャットでのプロジェクト検索"></a> |
|
|
56
58
|
| **次のメッセージの予測** | <a id="feature-nextprediction"></a>既定ではオンです。**設定 → Composer Plus** でオフにできます。エージェントがターンを終えると(停止または失敗したターンを除く)、空の入力欄に、あなたが次に送りそうなメッセージの予測がグレーで表示され、**Tab で受け入れ** というヒントが付きます。`Tab` を押すとテキストが入力欄に入りますが、送信はされません。`Esc` を押すと、そのターンの間は予測を非表示にします。入力を始めたときも非表示になり、新しいターンでは新しい予測に置き換わります。スイッチの下の **モデル** メニューには、dsh のモデルが一覧で表示されます(dsh のモデルメニューと同じ一覧です)。既定では **dsh の既定** が選ばれていて、dsh の既定のモデルに従います。ターンが終わるたびに、短いモデル呼び出しが 1 回行われます。Tether では、予測が空の入力欄の上に表示されます。タップすると入力欄に入ります。 | <a href="assets/features/nextPrediction.webp"><img src="assets/features/nextPrediction.webp" width="160" alt="スクリーンショット: 次のメッセージの予測"></a> |
|
|
57
59
|
| **入力中に補完** | <a id="feature-typingcompletion"></a>既定ではオフです。**設定 → Composer Plus** でオンにできます。入力中、カーソルのすぐ後ろに、メッセージの続きの候補がグレーで表示されます。`Tab` を押すと候補がメッセージに追加されますが、送信はされません。`Esc` を押すと非表示になります。候補は、あなた自身が次に書く言葉だけです。あなたへの返答や、作り話のエラー文・名前は出しません。メッセージが完結しているように見えるときや、モデルに確信がないときは、何も表示されません。グレーの文字の続きを入力すると、候補はそのまま残り、新しいモデル呼び出しは行われません。スイッチの下に、この機能専用の **モデル** メニューがあります。最初の項目 **次のメッセージの予測と同じ** は、**次のメッセージの予測** のモデルを使います(既定)。機能ごとに別のモデルを使うには、ほかのモデルを選んでください。たとえば、補完には速いモデルを選べます。入力が止まるたびにモデル呼び出しを 1 回行うため、予測よりトークンをかなり多く消費します。速くて低コストのモデルを選んでください。スラッシュコマンド、ファイルのチップを含むメッセージ、カーソルが末尾にないときは動作しません。Tether では、入力中に残りの部分が入力欄の上に表示されます。タップすると追加されます。 | <a href="assets/features/typingCompletion.webp"><img src="assets/features/typingCompletion.webp" width="160" alt="スクリーンショット: 入力中に補完"></a> |
|
|
58
60
|
| **プロンプトを改善** | <a id="feature-promptimprove"></a>大まかな依頼を入力し、モデルメニューの横にある魔法の杖(**プロンプトを改善**)をクリックします。1 回のモデル呼び出しで、より明確なプロンプトに書き直します。最初に目標、複数の部分があるときは短い番号付きの手順、最後に実行するチェックを書きます。このチャット(ロールバックで取り消したメッセージは除きます)、プロジェクトの README・AGENTS.md・マニフェスト、変更されたファイル、名前があなたの言葉と一致するファイルを読み、あなたの言語を保ちます。ファイル名を作り出すことはありません。新しいテキストは下書きと置き換わりますが、送信はされません。読んで編集してから `Enter` を押してください。`Cmd/Ctrl+Z` を押すと 1 ステップで元のテキストに戻ります。ボタン(**改善を元に戻す**)でも戻せます。処理中に入力すると、新しく入力したテキストが残ります。`Esc` を押すか、もう一度クリックするとキャンセルします。設定に専用の **モデル** メニューがあります(既定は **チャットのモデルと同じ**)。スラッシュコマンドや、ファイルのチップを含むメッセージには使えません。Tether では、魔法の杖は入力欄の横にあります。 | <a href="assets/features/promptImprove.webp"><img src="assets/features/promptImprove.webp" width="160" alt="スクリーンショット: プロンプトを改善"></a> |
|
|
59
|
-
| **このチャットで許可** | <a id="feature-allowforchat"></a>自動レビューで確認を求められると、承認カードに **このチャットで許可**
|
|
61
|
+
| **このチャットで許可** | <a id="feature-allowforchat"></a>自動レビューで確認を求められると、承認カードに **このチャットで許可** が表示されます。これを選ぶと、同じチャットの同じツールが、引数にかかわらず、時間制限が終わるまで許可されます(既定は 1 時間。**設定 → Composer Plus → このチャットで許可** で選べます)。その後、エージェントが再び確認します。ヘッダーのチップに許可の一覧が終了時刻とともに表示され、そこから取り消せます。許可は再起動後も有効です。 | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="スクリーンショット: このチャットで許可"></a> |
|
|
60
62
|
| **プロジェクトの状態** | <a id="feature-projectstatus"></a>サイドバーのプロジェクトの行に、そのチャットと同じ実行中/待機中/完了のマーカーが表示されます。そのため、折りたたんだプロジェクトでも、中のチャットが作業中か、あなたの操作を待っているかがわかります。最初に表示されるのはあなたの操作を待っているチャットで、次がまだ開いていない完了済みのチャット(緑色の点。別のチャットがまだ実行中でも表示されます)、その次が実行中のマーカーです。ポインターを合わせると詳細が表示されます。 | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="スクリーンショット: プロジェクトの状態"></a> |
|
|
63
|
+
| **すべて既読にする** | <a id="feature-markprojectread"></a>サイドバーで、プロジェクトの **…** ボタン → **すべて既読にする** をクリックします。そのプロジェクトのすべてのチャットから、緑色の未読の点が一度に消えます。ほかのプロジェクトの点はそのまま残ります。プロジェクトに未読のチャットがない場合、この項目はグレー表示になります(**未読のチャットはありません**)。 | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="スクリーンショット: すべて既読にする"></a> |
|
|
61
64
|
| **アクティブなプロジェクトを先頭に表示** | <a id="feature-activeprojectsfirst"></a>チャットが実行を始めたり、あなたの操作が必要になったりすると、そのプロジェクトがサイドバーの先頭に移動します。移動には dsh 標準の行のアニメーション(ドラッグして移動したときと同じ動き)を使います。完了したプロジェクトはその場所に残ります。いつもどおり、ドラッグして好きな場所に移動できます。移動は dsh のプロジェクトの順序に保存されるため、この機能をオフにしても現在の順序は維持されます。 | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="スクリーンショット: アクティブなプロジェクトを先頭に表示"></a> |
|
|
62
65
|
| **最近のプロジェクトのフィルター** | <a id="feature-recentprojects"></a>サイドバー → 表示オプション(スライダーのアイコン)→ **過去 2 時間以内にアクティブ**。選択中は、過去 2 時間以内にアクティブなチャットがあるプロジェクトだけがサイドバーに表示されます。対象となるチャットは、その間に更新されたチャット、実行中または待機中のチャット、開いているチャット、まだ開いていない完了済みのチャット(dsh の緑色の「完了」の点)です。完了済みのチャットは、2 時間を過ぎても対象のままです。このようなチャットがないプロジェクトは、新しい空のプロジェクトも含めて非表示になります。もう一度選択すると、すべてのプロジェクトを表示します。選択はこのデバイスに保存されます。 | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="スクリーンショット: 最近のプロジェクトのフィルター"></a> |
|
|
63
66
|
| **すべてのプロジェクトを折りたたむ** | <a id="feature-collapseprojects"></a>サイドバーでプロジェクトが開いているとき、表示オプション(スライダーのアイコン)の横にボタンが表示されます。クリックすると、開いているすべてのプロジェクトを一度に閉じます(たとえば、5 件中 3 件が開いている場合)。開いているプロジェクトがなくなると、ボタンは再び非表示になります。 | <a href="assets/features/collapseProjects.webp"><img src="assets/features/collapseProjects.webp" width="160" alt="スクリーンショット: すべてのプロジェクトを折りたたむ"></a> |
|
|
64
67
|
| **状態で並べ替え** | <a id="feature-statusorder"></a>サイドバー → 表示オプション → **並べ替え** → **状態別**(**1つのリスト** と組み合わせます)。完了したチャットが先頭に来ます(dsh の「完了」の点。エラーで終わったターンにもこの点が付きます)。その次に実行中または待機中のチャット、有効なオートメーション(Schedule)があるチャットが続き、残りのチャットは dsh の順序で並びます。完了したチャットを開くと、そのチャットは下に移動します。変わるのは表示だけです。元に戻すには、**手動** または **最終更新日時** を選択します。 | <a href="assets/features/statusOrder.webp"><img src="assets/features/statusOrder.webp" width="160" alt="スクリーンショット: 状態で並べ替え"></a> |
|
|
65
68
|
| **バックグラウンド通知** | <a id="feature-notifications"></a>dsh がバックグラウンドにあるとき、ターンが完了すると通知が届きます(返信の 1 行目を表示します)。チャットが本当にあなたを待っているときにも通知が届きます。対象は、承認(ツール名)、回答(質問)、計画のレビューです。通知されるのは、1.5 秒後もリクエストが開いたままの場合だけです。そのため、自動で承認されたもの(自動レビューの許可、ほかのプラグイン)は通知されません。また、リクエストに応答すると、その通知はすぐに取り消されます。Dock/タスクバーのバッジは、待機中のチャットの数を示します。通知をクリックすると、そのチャットが開きます。 | <a href="assets/features/notifications.webp"><img src="assets/features/notifications.webp" width="160" alt="スクリーンショット: バックグラウンド通知"></a> |
|
|
66
69
|
| **アプリケーションの言語** | <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> |
|
|
67
|
-
| **モバイル接続(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 がないと、カメラはこのコードを開けません。スマートフォンでは、チャットの表示、メッセージの送信、承認と質問への回答、モデルとエージェントの切り替えができます。ペアリングできる Mac の数に制限はありません。アプリの左上にある Mac の名前で、Mac
|
|
70
|
+
| **モバイル接続(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 がないと、カメラはこのコードを開けません。スマートフォンでは、チャットの表示、メッセージの送信、承認と質問への回答、モデルとエージェントの切り替えができます。ペアリングできる 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> |
|
|
68
71
|
| **自動アップデート** | <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` で閉じます。 | <a href="assets/features/autoUpdate.webp"><img src="assets/features/autoUpdate.webp" width="160" alt="スクリーンショット: 自動アップデート"></a> |
|
|
69
72
|
|
|
70
73
|
<!-- END GENERATED FEATURES -->
|
|
@@ -119,15 +122,15 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
119
122
|
- **続行:** 認証済みのローカルエンドポイントは、最後に中断されたターンだけを再開します。古いリクエストや重複したリクエストは拒否し、既存の承認フックはそのまま維持します。新しいユーザーメッセージは送信しません。
|
|
120
123
|
- **再起動後に再開:** オンにするまではオフです。ホスト側は、チャットの ID と開始時刻だけを `$DSH_HOME/storages/dsh-composer-plus/resume.json`(所有者のみのアクセス権)に保存します。データがマシンの外に出ることはありません。チャットを続行するのは、最後のターンを止めたのが(あなたではなく)dsh であることが、dsh 自身のログからわかる場合だけです。続行したターンにも、承認と自動レビューが通常どおり適用されます。
|
|
121
124
|
|
|
122
|
-
- **変更パネル:** git は、あなたのマシン上のチャットのフォルダーで、dsh の認証済みの `/api` チャネルを通じて、読み取り専用で実行されます。コミット、ステージ、フェッチは一切行いません。表示するのは、git
|
|
125
|
+
- **変更パネル:** git は、あなたのマシン上のチャットのフォルダーで、dsh の認証済みの `/api` チャネルを通じて、読み取り専用で実行されます。コミット、ステージ、フェッチは一切行いません。表示するのは、git 自体が一覧にしたパスだけです。ツリーには、ローカルとリモートのブランチの最新 300 件のコミットを表示します。ブランチの切り替え(checkout)は一切行いません。commit-graph ファイルのない非常に大きなリポジトリでは、ツリーが開くまで数秒かかることがあります。**このチャット** は、チャット自身のログから、そのファイルツールが書き込んだファイルを読み取り、チャットのターンのロールバックのスナップショットと比較します。比較は、すぐに削除される一時フォルダーで行います。リポジトリやスナップショットのストアには何も書き込みません。
|
|
123
126
|
- **機能のアイデア:** **機能を提案** をクリックするまで、何も実行されません。クリックすると、ホスト側はチャットのフォルダーだけを読み取ります(ブラウザーがパスを送ることはありません)。読み取るのは、最上位の項目の名前、README・AGENTS.md・マニフェスト(`package.json`、`pyproject.toml`、`Cargo.toml`、`go.mod` など)の先頭 6 kB、`git log --oneline -15` で、合計 16 kB までです。`.env*`、鍵ファイル、`node_modules` などのフォルダーはスキップします。また、フォルダーの中にある通常のファイルだけを読み取ります。フォルダーの外を指すシンボリックリンク、FIFO、デバイスはスキップします。この概要は、dsh 標準のプロバイダー設定を通じて、チャットが使うモデルに 1 回のリクエストとして送られます。どのチャットにも追加されません。プロジェクトには何も書き込みません。右にスワイプしたアイデアは計画モードの新しいチャットを開始するため、承認と計画のレビューが通常どおり適用されます。**すぐに実装** は、計画モードなしでチャットを開始します。モデルはすぐにファイルを変更でき、チャットの通常の承認と自動レビューが適用されます。あとで使うために保存したアイデア(タイトル、概要、理由、規模)は、プロジェクトのフォルダーパスとともに、dsh のホームの `storages/dsh-composer-plus/later.json`(所有者のみのファイル)に保存されます。プロジェクトには何も入りません。提案されたアイデアの履歴(タイトル、概要、理由、規模、日付、開始済みかどうか)も同じ方法で `storages/dsh-composer-plus/idea-history.json` に保存されます。保存できるのはプロジェクトごとに最大 200 件で、古いものから削除されます。そのタイトルは、そのプロジェクトで次に **機能を提案** を実行したときにモデルに送られます。
|
|
124
127
|
- **内容検索:** チャットを検索する新しいコードはありません。プラグインは、dsh 標準のメッセージインデックス(SQLite FTS5、`dsh-session-query-sqlite`)をオンにし、そのためのファイル `$DSH_HOME/cache/composer-plus/session-search.db`(所有者のみのファイルとフォルダー)を割り当てるだけです。このファイルにはあなたのメッセージとアシスタントのメッセージのテキストが入るため、`$DSH_HOME/sessions` にあるチャットのログと同じように扱う必要がある個人的なデータです。データがマシンの外に出ることはありません。このファイルは、dsh が作り直せるコピーです。dsh を閉じている間なら削除できます。スイッチは `$DSH_HOME/storages/dsh-composer-plus/content-search.json` にあります。
|
|
125
|
-
- **ターンのロールバック:** あなたがメッセージを送るたびに、その前にホストがチャットのフォルダーの git スナップショットを作成し、専用のストア `$DSH_HOME/cache/composer-plus/rollback/<chat>.git`(所有者のみのフォルダー)に保存します。ストアには、そのフォルダーの中で git が認識するファイル(無視されたファイルを除く)のコピーが入ります。そのため、ストアはプロジェクトと同じように扱う必要がある個人的なデータです。ストアはリポジトリのオブジェクトを読み取ります(git がすでに持っているものはコピーしません)。リポジトリのインデックス、`HEAD`、ブランチ、タグ、stash、config には一切書き込みません。git がリポジトリに加える唯一の変更は、再利用するオブジェクトファイルのタイムスタンプの更新です(このため、`git gc` によるそれらのファイルの削除が遅れます)。ファイルを含むロールバックは、チャットのフォルダーの中の通常のファイルだけに書き込みます。シンボリックリンク、パイプ、フォルダーの外にあるものはスキップします。データがマシンの外に出ることはありません。dsh を閉じている間なら、ストアを削除できます(その後は、新しいメッセージを送るまで、ロールバックはチャットのみで動作します)。**チャットを削除** は、そのチャットのストアも削除します。スイッチは `$DSH_HOME/storages/dsh-composer-plus/rollback.json`
|
|
128
|
+
- **ターンのロールバック:** あなたがメッセージを送るたびに、その前にホストがチャットのフォルダーの git スナップショットを作成し、専用のストア `$DSH_HOME/cache/composer-plus/rollback/<chat>.git`(所有者のみのフォルダー)に保存します。ストアには、そのフォルダーの中で git が認識するファイル(無視されたファイルを除く)のコピーが入ります。そのため、ストアはプロジェクトと同じように扱う必要がある個人的なデータです。ストアはリポジトリのオブジェクトを読み取ります(git がすでに持っているものはコピーしません)。リポジトリのインデックス、`HEAD`、ブランチ、タグ、stash、config には一切書き込みません。git がリポジトリに加える唯一の変更は、再利用するオブジェクトファイルのタイムスタンプの更新です(このため、`git gc` によるそれらのファイルの削除が遅れます)。ファイルを含むロールバックは、チャットのフォルダーの中の通常のファイルだけに書き込みます。シンボリックリンク、パイプ、フォルダーの外にあるものはスキップします。データがマシンの外に出ることはありません。dsh を閉じている間なら、ストアを削除できます(その後は、新しいメッセージを送るまで、ロールバックはチャットのみで動作します)。**チャットを削除** は、そのチャットのストアも削除します。スイッチは `$DSH_HOME/storages/dsh-composer-plus/rollback.json` にあります。ファイルを含むロールバックは、**やり直す** のために、ロールバック直前のファイルも保持します(同じストアの `refs/r/…`)。やり直したロールバックは、`$DSH_HOME/storages/dsh-composer-plus/redone.json`(所有者のみのファイル)に記録されます。
|
|
126
129
|
- **チャットを Markdown として書き出し:** ホスト側はチャット自身のログ(dsh が表示するのと同じメッセージ)だけを読み取り、ページに渡します。プロジェクトのファイルは読み取らず、ネットワークには何も送りません。Markdown が入るのは、クリップボードか、あなたが保存するファイルだけです。
|
|
127
130
|
- **チャットを削除:** チャット自身のログフォルダー(`$DSH_HOME/sessions/<project>/<chat>`)をゴミ箱に移動します。プロジェクトのフォルダーには触れません。
|
|
128
|
-
- **このチャットで許可:**
|
|
131
|
+
- **このチャットで許可:** 許可は、許可した時刻とともに `$DSH_HOME/storages/dsh-composer-plus/chat-grants.json`(所有者のみのアクセス権)に保存されます。1 つの許可の対象は、1 つのチャットの 1 つの特定のツールで、時間制限が終わるまで有効です(既定は 1 時間)。そのツールが書き込みできる場合は、あらゆる書き込みも許可の対象になります。許可は、ヘッダーのチップから取り消します。
|
|
129
132
|
- 自動レビューは、引き続きすべての呼び出しで実行されます。レビューの失敗が自動で許可されることはありません。
|
|
130
|
-
- **モバイル接続:** オンにするまではオフです。オンの間、ホスト側は Tether ゲートウェイを実行します。ゲートウェイは、ポート 19390 の HTTPS(Wi-Fi のサブネットと tailnet(100.64.0.0/10)からの接続だけを受け付けます)と、`127.0.0.1:19391` のペアリングページ(この Mac からのみ)で構成されます。スマートフォンを接続するには、QR コードに含まれる 1 回限りのコード(5 分間有効)と、Mac での **Approve** が必要です。スマートフォンは、ゲートウェイの証明書を固定(ピン留め)します。Mac が保存するのは、各スマートフォンのトークンのハッシュだけです(30 日間有効で、使用中は更新されます)。**Remove** をクリックすると、そのスマートフォンの接続をすぐに切断します。スマートフォンから呼び出せるのは、許可リストにある dsh
|
|
133
|
+
- **モバイル接続:** オンにするまではオフです。オンの間、ホスト側は Tether ゲートウェイを実行します。ゲートウェイは、ポート 19390 の HTTPS(Wi-Fi のサブネットと tailnet(100.64.0.0/10)からの接続だけを受け付けます)と、`127.0.0.1:19391` のペアリングページ(この Mac からのみ)で構成されます。スマートフォンを接続するには、QR コードに含まれる 1 回限りのコード(5 分間有効)と、Mac での **Approve** が必要です。スマートフォンは、ゲートウェイの証明書を固定(ピン留め)します。Mac が保存するのは、各スマートフォンのトークンのハッシュだけです(30 日間有効で、使用中は更新されます)。**Remove** をクリックすると、そのスマートフォンの接続をすぐに切断します。スマートフォンから呼び出せるのは、許可リストにある dsh のメソッド(チャット、プロンプト、添付ファイル、スラッシュコマンド、承認、質問、モデル、エージェント、目標)だけです。設定、認証情報、ファイルブラウザー、ターミナルは呼び出せません。「Tailscale only」は、ローカルネットワークからのすべての接続を拒否し、すでに開いている接続も切断します。アクセスログは、最新 200 件の接続の試み(時刻、IP アドレス、デバイス名、許可か拒否か、その理由)を `access.json` に保存します。トークンやペアリングコードは保存しません。データ:`$DSH_HOME/storages/dsh-composer-plus/mobile/`(所有者のみのファイル)。詳細:[tether/README.md](tether/README.md)。
|
|
131
134
|
- **アップデート:** ホスト側は、`api.github.com` に最新のリリースを問い合わせ、`registry.npmjs.org` にそのバージョンを問い合わせます。あなたやあなたのチャットに関する情報は送信しません。インストールには dsh のプラグインマネージャー(`pnpm add dsh-composer-plus@<version>`。インストール済みのプラグインに対して dsh 0.2.1 がこれを拒否する場合は `pnpm add https://registry.npmjs.org/dsh-composer-plus/-/dsh-composer-plus-<version>.tgz`。その場合、プロファイルにはその URL がプラグインのソースとして記載されます)を使うため、dsh 標準のレジストリ、スクリプト、バージョン互換性のチェックが適用されます。プレリリースのタグや古いバージョンがインストールされることはありません。
|
|
132
135
|
- **次のメッセージの予測:** 既定ではオンです。このモデル呼び出しを止めるには、**設定 → Composer Plus** でオフにしてください。ターンが終わるたびに、ホスト側は、そのチャットでのあなた自身のメッセージと、エージェントのテキストの返信(ツールの出力、隠れたコンテキスト、推論は含みません)を、最大で約 6,000 文字(最新の部分)、選んだモデル(別のモデルを選ばない限り dsh の既定のモデル)に送ります。送信は、dsh 標準のプロバイダー設定を通じた 1 回のリクエストです。チャットには何も保存しません。予測がチャットの履歴に追加されることはありません。スイッチと選んだモデルは `$DSH_HOME/storages/dsh-composer-plus/predict.json`(所有者のみのファイル)に保存されます。
|
|
133
136
|
- **入力中に補完:** オンにするまではオフです。オンの間は、入力が止まるたびに、ホスト側が、それまでに入力したテキストと、そのチャットでのあなた自身のメッセージ、エージェントのテキストの返信(ツールの出力、隠れたコンテキスト、推論は含みません)を、**入力中に補完** で選んだモデル(既定では **次のメッセージの予測** のモデル)に送ります。チャットの部分は最大で約 3,000 文字です。次に入力が止まると、前のリクエストは止まります。チャットには何も保存しません。スイッチは `$DSH_HOME/storages/dsh-composer-plus/complete.json`(所有者のみのファイル)に保存されます。
|
|
@@ -144,8 +147,9 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
144
147
|
- **自分のメッセージに ↶ ボタンがない:** 原因は次のいずれかです。ターンのロールバックがオフになっている。そのチャットがサブエージェントのチャットである。dsh-rewind-plugin がインストールされている(そのプラグインの ↶ ボタンを使ってください)。アップデートの後は、dsh を再起動してください。
|
|
145
148
|
- **チャットとファイルがグレー表示になっている:** 原因は次のいずれかです。プロジェクトが git リポジトリではない。そのメッセージより前のスナップショットがない(メッセージがプラグインより古い、または最新 50 件のスナップショットに置き換えられた)。変更されたファイルがない。
|
|
146
149
|
- **削除すると、別の dsh がこのチャットを開いていると表示される:** 同じ dsh のホームを使う 2 つ目の dsh が、チャットのロックを持っています。そのウィンドウまたは dsh を閉じてから、もう一度削除してください。それまで、チャットはアーカイブされたままです。
|
|
150
|
+
- **「Tailscale only」をオンにした後、iPhone が接続できない:** Tailscale は Mac と iPhone の両方でオンにする必要があります。Mac でオフの場合は、モバイル接続のパネルに警告が表示されます。アクセスログには、拒否された各試行がその理由とともに表示されます。
|
|
147
151
|
- **再起動後にチャットが続行しなかった:** 原因は次のいずれかです。dsh の終了時に、再起動後に再開がオフだった。そのターンを自分で停止した。ターンがすでに終わっていた(完了または失敗)。チャットがアーカイブされていた。20 件を超えるチャットが実行中だった(最新の 20 件が続行します)。
|
|
148
|
-
- **リリース直後にインストールが失敗する:** バージョンを指定してください(`dsh-composer-plus@1.
|
|
152
|
+
- **リリース直後にインストールが失敗する:** バージョンを指定してください(`dsh-composer-plus@1.13.0`)。上のインストールの注記を参照してください。
|
|
149
153
|
|
|
150
154
|
## 制限事項
|
|
151
155
|
|
|
@@ -161,9 +165,14 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
161
165
|
- **チャットを削除** には、dsh のアーカイブ機能が必要です(dsh 0.2.0 以降)。15 秒以内に停止しないチャット(またはそのサブエージェントのチャット)や、別の dsh が保持しているチャットは、アーカイブされたままになり、何も移動しません。macOS 以外のシステムでは、ゴミ箱のフォルダーがチャットの履歴と同じディスク上にある必要があります。開いているチャットを削除すると、dsh を再起動するまで、そのチャットはアーカイブされた非表示の状態で dsh のメモリに残ります。ゴミ箱は自分で空にしてください。dsh は空にしません。
|
|
162
166
|
- dsh のキューには `move` 操作がないため、プラグインのホスト側が、dsh のキューの中でメッセージそのものを移動します(1 回の変更で、同じメッセージのままです)。画像やファイルを含むメッセージも移動できます。移動できるのは自分のメッセージだけです。キュー内の目標のラウンドや質問への回答は、その位置から動きません。ドラッグ中にメッセージの送信が始まった場合は、何も移動せず、そのことを知らせる通知が表示されます。
|
|
163
167
|
- 新しいバージョンが dsh の設定を何も変更しない場合、dsh 0.2.1 はアップデートをすぐに読み込みます。それ以外の場合と dsh 0.2.0 では、読み込むには dsh を再起動してください。プラグインが dsh を自動で再起動することはありません。dsh のプラグインマネージャーがない Web/CLI プロファイルでは、新しいバージョンがあることを知らせるだけです。
|
|
168
|
+
- **このチャットで許可** は、許可した時点から時間制限を数えます。新しい時間制限は、有効な許可にすぐに適用されます。そのため、短い時間制限にすると、許可がすぐに終わることがあります。バージョン 1.12 以前の許可には時刻がありません。更新後、エージェントはそのツールについてもう一度だけ確認します。
|
|
164
169
|
- **入力欄のフォーカスを維持** がフォーカスを戻すのは、`/` コマンドまたはスキルの後だけです。dsh がコマンドを処理する間、入力欄は数ミリ秒だけ読み取り専用になります。そのため、その間に押したキーは失われます。dsh の `/` メニューがまだ開いている場合、`Enter` は強調表示された行を選び、送信はしません。
|
|
165
|
-
- **モバイル接続** は macOS でのみ動作します(`en0`、`openssl`、`swift`、`dns-sd` を使います)。固定のポート 19390 と 19391 を使うため、各 Mac でこれを実行できる dsh は、一度に 1 つだけです(スマートフォンの Mac の一覧では、各 Mac が 1 項目になります)。スマートフォンが通知を受け取るのは、Tether が開いているとき、またはバックグラウンドに移った直後だけです(プッシュサービスはありません)。iOS アプリは、まだ App Store にありません。Xcode で `tether/ios`
|
|
166
|
-
-
|
|
170
|
+
- **モバイル接続** は macOS でのみ動作します(`en0`、`openssl`、`swift`、`dns-sd` を使います)。固定のポート 19390 と 19391 を使うため、各 Mac でこれを実行できる dsh は、一度に 1 つだけです(スマートフォンの Mac の一覧では、各 Mac が 1 項目になります)。スマートフォンが通知を受け取るのは、Tether が開いているとき、またはバックグラウンドに移った直後だけです(プッシュサービスはありません)。iOS アプリは、まだ App Store にありません。Xcode で `tether/ios` からビルドしてください。「Tailscale only」でも、Mac に Wi-Fi または Ethernet のアドレスが必要です(ゲートウェイは、そのアドレスがある場合だけ起動します)。アクセスログは Mac ごとに保存され、最新 200 件の試行だけを残します。1 分以内に繰り返された試行は、新しい行を作らず、同じ行の回数を 1 つ増やします。Tether のアプリのロックは、iPhone のロック画面に表示される通知のプレビューを隠しません。iOS の設定でオフにしてください。Tether の緑の点は Mac に従います。dsh で開いたチャットは、スマートフォンでも点が消えます。Tether で開いたチャットは、スマートフォンでだけ点が消えます。Mac 上の dsh 自身の点は、Mac でそのチャットを開くまで残ります。
|
|
171
|
+
- セッションリンクは、チャットの中で機能します。クリックしても、そのチャットは開きません。**メッセージリンクをコピー** で作ったリンクでメッセージを開けるのは、dsh 0.2.1 以降で、チャットの中のメッセージから開いた場合だけです(dsh 0.2.0 にはユーザーテキストのルールがないため、リンクはコピーされますが、プレーンテキストとして表示されます)。ロールバックで取り除かれたメッセージや、圧縮によって dsh が読み込む履歴から削除されたメッセージは表示できません。その場合、リンクがそのことを表示します。🔗 ボタンは、dsh のメッセージ行に取り付けています。dsh のアップデートでそのマークアップが変わった場合、ボタンは表示されません。
|
|
172
|
+
- **すべて既読にする** は、公開 API ではない dsh の一部(dsh のセッション状態の `completionUnread` 一覧)を通じて、dsh 自身の未読の点を変更します。dsh のアップデートでこの名前が変わった場合、この項目は表示されません。この項目は dsh のプロジェクトの「…」メニューに入りますが、このメニューにはプラグイン用のスロットがありません。dsh がこのメニューを変更した場合も、この項目は表示されません。
|
|
173
|
+
- **キュー内のメッセージをその場で編集** は、dsh 標準のキューエディターを開くため、その制限を受けます。画像やファイルを含むメッセージは編集できません。また、その間に送信が始まったメッセージは変更されません(dsh が独自のエラーを表示します)。
|
|
174
|
+
- **やり直す** は、ロールバックしたチャットを変更しません。ロールバックの直前から新しいチャットを開始します(dsh 標準のフォークで、モデルのコンテキストも同じです)。そのため、新しいチャットには新しい ID とタイトルが付きます。やり直せるのは、チャットの最新のロールバックだけで、1 回だけです。また、その後に何もない間だけです(新しいメッセージを送ると、やり直しはできなくなります)。ロールバックの後に変更したファイルは保持されます。ただし、上書きするチェックボックスをオンにした場合は上書きします。やり直しには、ロールバックが保持したスナップショットが必要です(同じく最新 50 件の範囲)。このバージョンより前のロールバックや、**チャットのみ** のロールバックでは、メッセージだけが戻ります。
|
|
175
|
+
- **このチャット** が数えるのは、dsh のファイルツール(`write`、`edit`、`str_replace_editor`)が書き込んだファイルだけです。コマンド(`bash`)が変更したファイルは、この表示には含まれず、**未コミット** に表示されます。チャットのターンのロールバックのスナップショットがない場合(ターンのロールバックがオフ、dsh-rewind-plugin がインストール済み、またはチャットがプラグインより古い場合)、表示は最後のコミットと比較し、そのことを示します。ターンのロールバックはチャットごとに最新の 50 個のスナップショットを保持します。長いチャットでは、表示は保持されている最も古いものと比較し、どのメッセージからかを示し、それより前の変更は数えません。**空白の変更を非表示** は `git diff -w` です。行の中のスペースだけが変わった行も非表示になります。
|
|
167
176
|
- 再起動の前に送られた通知をクリックしても、dsh が前面に表示されるだけです。
|
|
168
177
|
- アクティブなプロジェクトは、dsh に保存されたプロジェクトの順序を使って移動します。そのため、新しい順序は再起動後も維持されます。どのプロジェクトにも属さないチャット(「グループなし」)は移動できません。dsh は、これらのチャットを常に最後に表示します。
|
|
169
178
|
- dsh には、サイドバーの表示オプションのメニューに拡張ポイントがありません。そのため、最近のプロジェクトのオプションは、dsh 標準のメニューに追加しています。dsh のアップデートでこのメニューが変わった場合、オプションは表示されず、すべてのプロジェクトが表示されたままになります。フィルターはプロジェクトの行に対して動作するため、**1つのリスト** は絞り込まれません。**ワークスペース** と組み合わせて使ってください。**ワークスペースのツリー** では、非表示になった親フォルダーの中にあるアクティブなプロジェクトも、非表示になります。**状態別** にも、同じ種類の制限があります。dsh には並べ替えのスロットがないため、この項目と行の並び順は、dsh のメニューとリストのマークアップに取り付けています。
|
|
@@ -200,7 +209,21 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
200
209
|
|
|
201
210
|
**dsh でキュー内のメッセージを並べ替えるには?** キュー内のメッセージの ⠿ ハンドルをドラッグします。または、ハンドルにフォーカスを置いて `↑` / `↓` を押します。
|
|
202
211
|
|
|
203
|
-
|
|
212
|
+
**キュー内のメッセージの入力ミスを直すには?** キュー内のメッセージをダブルクリックし、テキストを変更して `Enter` を押します(`Esc` でキャンセル)。メッセージのキュー内の位置は変わりません。
|
|
213
|
+
|
|
214
|
+
**プロジェクトの未読の点を一度にすべて消すには?** サイドバー → プロジェクトの **…** ボタン → **すべて既読にする** を選びます。
|
|
215
|
+
|
|
216
|
+
**長いチャットの 1 つのメッセージにリンクできますか?** はい。メッセージにポインターを合わせ、**🔗** をクリックします。そのリンクをチャットで送信します。dsh 0.2.1 以降では、リンクをクリックすると、そのメッセージの位置でチャットが開きます。
|
|
217
|
+
|
|
218
|
+
**間違えてターンをロールバックしました。元に戻せますか?** はい。ロールバックの直後に、入力欄の上の **やり直す** を使います。ロールバックの直前から、同じメッセージで新しいチャットを開始します。**チャットとファイル** でロールバックした場合は、ファイルも戻します。
|
|
219
|
+
|
|
220
|
+
**1 つのチャットが変更したファイルだけを見るには?** 右サイドバー → **変更** → **このチャット** を開きます。空白だけの変更を隠すには、**␣** をクリックします。
|
|
221
|
+
|
|
222
|
+
**1 つのチャットで、自動レビューが同じツールについて何度も確認しないようにするには?** 承認カードの **このチャットで許可** をクリックします。対象は、そのチャットのその特定のツールだけで、既定では 1 時間有効です。許可は、ヘッダーのチップから取り消せます。時間は **設定 → Composer Plus → このチャットで許可** で変更できます。
|
|
223
|
+
|
|
224
|
+
**iPhone をなくしました。その iPhone が Mac に接続できないようにするには?** サイドバーの左下にある **モバイル接続** をクリックし、その iPhone の横にある **Remove** をクリックします。その iPhone の鍵はすぐに使えなくなります。再び接続するには、Mac で承認する新しいペアリングが必要です。
|
|
225
|
+
|
|
226
|
+
**Face ID で Tether をロックできますか?** はい。Tether で「Settings → Privacy → Lock with Face ID」をオンにします。すると Tether は、開いたときと、アプリに戻ったときに Face ID(またはパスコード)を求めます。
|
|
204
227
|
|
|
205
228
|
**dsh のサイドバーに、今日使ったプロジェクトだけを表示するには?** サイドバー → 表示オプション(スライダーのアイコン)→ **過去 2 時間以内にアクティブ** を選びます。もう一度選択すると、すべてのプロジェクトを表示します。
|
|
206
229
|
|