dsh-composer-plus 1.13.0 → 1.14.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 +65 -11
- package/README.es.md +65 -11
- package/README.fr.md +65 -11
- package/README.hi.md +65 -11
- package/README.id.md +65 -11
- package/README.ja.md +65 -11
- package/README.ko.md +65 -11
- package/README.md +65 -11
- package/README.pt-BR.md +65 -11
- package/README.ru.md +65 -11
- package/README.tr.md +65 -11
- package/README.vi.md +65 -11
- package/README.zh.md +65 -11
- package/assets/features/changesPanel.webp +0 -0
- package/assets/features/defaultWorkspace.webp +0 -0
- package/assets/features/findInChat.webp +0 -0
- package/assets/features/goalCheck.webp +0 -0
- package/assets/features/sessionBranch.webp +0 -0
- package/assets/features/worktreeChats.webp +0 -0
- package/client.js +1222 -222
- package/index.js +1414 -52
- package/package.json +2 -2
- package/tether/gateway/server.mjs +3 -2
package/README.ja.md
CHANGED
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
|
|
15
15
|
<p align="center"><img src="docs/images/hero.webp" width="820" alt="Composer Plus を入れた DeepSeek Harness:実行中のプロジェクトはサイドバーにスピナーを表示し、変更パネルは git の差分を表示しています"></p>
|
|
16
16
|
|
|
17
|
-
非公式のコミュニティプラグインです。ネットワーク通信は、アップデートの確認(GitHub のリリースと npm レジストリ)だけです。起動時のこの通信を止めるには、**自動アップデート** をオフにしてください。**機能のアイデア** は、**機能を提案** をクリックしたときだけ、チャットで使っているモデルを呼び出します。**次のメッセージの予測**(既定ではオン)は、ターンが終わるたびに、設定で選んだモデル(別のモデルを選ばない限り dsh の既定のモデル)を、クリックなしで 1 回呼び出します。この呼び出しを止めるには、**設定 → Composer Plus** でオフにしてください。**入力中に補完**(既定ではオフ)は、オンにした後、入力が止まるたびに、この機能で選んだモデル(既定では予測のモデル)を呼び出します。**プロンプトを改善**
|
|
17
|
+
非公式のコミュニティプラグインです。ネットワーク通信は、アップデートの確認(GitHub のリリースと npm レジストリ)だけです。起動時のこの通信を止めるには、**自動アップデート** をオフにしてください。**機能のアイデア** は、**機能を提案** をクリックしたときだけ、チャットで使っているモデルを呼び出します。**次のメッセージの予測**(既定ではオン)は、ターンが終わるたびに、設定で選んだモデル(別のモデルを選ばない限り dsh の既定のモデル)を、クリックなしで 1 回呼び出します。この呼び出しを止めるには、**設定 → Composer Plus** でオフにしてください。**入力中に補完**(既定ではオフ)は、オンにした後、入力が止まるたびに、この機能で選んだモデル(既定では予測のモデル)を呼び出します。**プロンプトを改善** は、魔法の杖をクリックしたときだけモデルを呼び出します。**目標チェック**(既定ではオン)は、自動ラウンドでエージェントが `/goal` を完了にするたびに、モデルを 1 回呼び出します。**モバイル接続**(既定ではオフ)は、オンにした後だけ、ローカルネットワークまたは tailnet からの iPhone の接続を受け付けます。
|
|
18
18
|
|
|
19
19
|
## インストール
|
|
20
20
|
|
|
@@ -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.14.0`。
|
|
33
33
|
|
|
34
34
|
## 機能
|
|
35
35
|
|
|
@@ -37,8 +37,8 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
37
37
|
|
|
38
38
|
| 機能 | 使い方 | スクリーンショット |
|
|
39
39
|
|---|---|---|
|
|
40
|
-
| **変更パネル** | <a id="feature-changespanel"></a>右サイドバー → `+` → **変更**。**未コミット**、**未ステージ**、**ステージ済み**、**ブランチ** のいずれかを選ぶと、変更されたファイルが `+/-` の行数とともに表示されます。ファイルをクリックすると、その差分を表示します。**最後のターン** は、最新のターンに対する dsh 標準のレビューを開きます。ブランチ名をクリックする(または **ツリー** を選ぶ)とブランチツリーを表示します。上のブランチをクリックするとそのブランチへ移動し、コミットをクリックするとそのファイルと差分を表示します。**このチャット** は、開いているチャットのファイルツール(write、edit)がすべてのターンで書き込んだファイルだけを、最初のメッセージからの差分の合計とともに一覧表示します。**␣** ボタンは空白の変更を非表示にします(`git diff -w
|
|
41
|
-
| **機能のアイデア** | <a id="feature-featureideas"></a>右サイドバー → `+` → **機能のアイデア** → **機能を提案**。チャットのモデルが、チャットのプロジェクトの短い概要(最上位のファイル、README
|
|
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
|
+
| **機能のアイデア** | <a id="feature-featureideas"></a>右サイドバー → `+` → **機能のアイデア** → **機能を提案**。チャットのモデルが、チャットのプロジェクトの短い概要(最上位のファイル、README とマニフェストの冒頭、README の残りの部分のアウトライン、最近のコミットのタイトル)を読み、最大 8 件の機能を提案します。提案は、dsh の UI 言語のカードの束として表示されます。カードを右にスワイプする(または **✓** をクリックするか `→` を押す。どの場合もカードはその方向へ飛んでいきます)と、同じプロジェクトで新しいチャットを開始します。新しいチャットはアイデアを依頼内容として計画モードで始まるため、計画を承認するまで何も変更されません。計画を省くには、**▶ すぐに実装** をクリックします(または `↑` を押します。カードは上へ飛んでいきます)。新しいチャットはアイデアを通常の依頼としてすぐに始まり、モデルが変更を加えてチェックを実行します(承認は通常どおり適用されます)。スキップするには、左にスワイプします(または **✕**、`←`)。**元に戻す**(または `Z`)で、スキップしたカードを戻せます。良いアイデアを後で使うには、**↓** をクリックします(または `↓` を押します)。アイデアはプロジェクトの **あとで** リストに入ります。このリストは、同じプロジェクトフォルダーのすべてのチャットに表示されます(再起動後も表示されます)。**あとで(N)** でリストを開きます。**計画する** は、そのアイデアで同じ計画モードのチャットを開始し、**すぐに実装** は計画なしのチャットを開始します。どちらもアイデアをリストから外します。**すべてまとめて計画(N)** は、リストのすべてのアイデアで 1 つの計画モードのチャットを開始するため、共通する部分は 1 回だけ計画されます。**リストから削除** はアイデアを削除します。**チェックリストとしてコピー** は、リスト全体を Markdown のチェックリスト(`- [ ] Title — Summary`、アイデアごとに 1 行)としてクリップボードにコピーします。課題管理ツールや TODO ファイルに使えます。ネットワーク通信はしません。アイデアの **GitHub issue を作成** は、あなた自身の GitHub CLI(`gh`)のログインで、プロジェクトの GitHub リポジトリに、アイデアのタイトルと概要(とその重要性)で issue を作成します。その後、アイデアの横に **Issue #N** のリンクが表示され、クリックすると issue が開きます。**アイデアをさらに提案** でカードを追加します。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
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> |
|
|
@@ -55,11 +55,16 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
55
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> |
|
|
56
56
|
| **プロジェクトのパスをコピー** | <a id="feature-copyprojectpath"></a>サイドバーのプロジェクトを右クリック → **パスをコピー** で、そのフォルダーのフルパスをコピーします。 | <a href="assets/features/copyProjectPath.webp"><img src="assets/features/copyProjectPath.webp" width="160" alt="スクリーンショット: プロジェクトのパスをコピー"></a> |
|
|
57
57
|
| **新しいチャットでのプロジェクト検索** | <a id="feature-projectpicker"></a>新しいチャット → 入力欄の上にあるプロジェクトのボタン。プロジェクトが A–Z 順に並び、上部に **プロジェクトを検索** ボックスが表示されます。名前の一部を入力し(大文字と小文字、アクセント記号は区別しません)、`Enter` を押すと、最初に一致したプロジェクトを選びます。一致するものがない場合は、**一致するプロジェクトはありません** と表示されます。サイドバーにある dsh の保存済みのプロジェクトの順序は変わりません。 | <a href="assets/features/projectPicker.webp"><img src="assets/features/projectPicker.webp" width="160" alt="スクリーンショット: 新しいチャットでのプロジェクト検索"></a> |
|
|
58
|
+
| **新しいセッションの既定のワークスペース** | <a id="feature-defaultworkspace"></a>設定 → Composer Plus → **新しいセッションの既定のワークスペース** → **新しいセッションを開く場所**:プロジェクトを選ぶか、**汎用フォルダー(default-workspace)** を選びます(既定値です。dsh 自身のフォルダー `Documents/deepseek-harness/default-workspace` で、最初に使うときに作成されます)。その後は、サイドバーの上部にある **新しいセッション**(とそのショートカット)が、別のプロジェクトのチャットを開いているときも、常にそこで新しいチャットを開きます。プロジェクトの横にある `+` は引き続きそのプロジェクトを開きます。新しいチャットの入力欄の上にあるプロジェクトのボタンでも、引き続きプロジェクトを変更できます。 | <a href="assets/features/defaultWorkspace.webp"><img src="assets/features/defaultWorkspace.webp" width="160" alt="スクリーンショット: 新しいセッションの既定のワークスペース"></a> |
|
|
59
|
+
| **チャット内を検索** | <a id="feature-findinchat"></a>チャットで Mac では `Cmd+F`(Windows と Linux では `Ctrl+F`)を押すと、チャットの上に検索ボックスが開きます。単語を入力すると、画面上のメッセージと返信の一致箇所がすべてハイライトされ、現在の一致箇所はより濃い色で表示されます。ボックスには n / 合計 が表示されます。`Enter` または `↓` で次の一致へ、`Shift+Enter` または `↑` で前の一致へ移動します(矢印ボタンも使えます)。チャットは一致箇所を中央までスクロールします。大文字と小文字、アクセント記号、トルコ語の点のない ı は区別しません。`Esc` でボックスを閉じ、カーソルを元の位置に戻します。返信がストリーミングで届いている間も、検索はチャットに追従します。 | <a href="assets/features/findInChat.webp"><img src="assets/features/findInChat.webp" width="160" alt="スクリーンショット: チャット内を検索"></a> |
|
|
60
|
+
| **チャットごとのブランチ** | <a id="feature-worktreechats"></a>新しいチャット → プロジェクトのボタンの横にある ⑂ main ボタン → **新しいブランチ**。続けて最初のメッセージを入力して送信します。AI がそのメッセージからブランチ名(`feat/…`、`fix/…`)を付け、Composer Plus が `<project>/.worktrees/` にその git worktree を作成し、`.worktreeinclude` に書かれた無視ファイル(たとえば `.env` や `node_modules/`)をコピーして、そこであなたのメッセージで新しいチャットを開きます。開いているチャットのヘッダーには ⑂ ブランチ · N 件の変更 · ↑ ↓(または **未プッシュ**)が表示されます。クリックすると **変更** を開きます。同じメニューには開いている worktree も並びます。1 つ選ぶと、そこでチャットを開始します。サイドバーでブランチのフォルダーをプロジェクト内に表示するには、dsh の **表示オプション** → **ワークスペースのツリー** を選びます。 | <a href="assets/features/worktreeChats.webp"><img src="assets/features/worktreeChats.webp" width="160" alt="スクリーンショット: チャットごとのブランチ"></a> |
|
|
58
61
|
| **次のメッセージの予測** | <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> |
|
|
59
62
|
| **入力中に補完** | <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> |
|
|
60
63
|
| **プロンプトを改善** | <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> |
|
|
64
|
+
| **目標チェック** | <a id="feature-goalcheck"></a>`/goal` で目標を開始します。自動ラウンドでエージェントが目標を完了にすると、目標は 2 つのチェックを通ったときだけ閉じます。まず、プロジェクトのテストコマンドが、チャットのフォルダーで、チャットのサンドボックスモードのもとで実行されます。コマンドは、あなた自身のコマンドか、`package.json`、`Makefile`、`Cargo.toml`、`go.mod` または pytest から見つけたコマンドです。エージェント自身の最新のステップがそのテストの成功した実行だった場合は、もう一度は実行しません。次に、ツールを持たない独立したモデル呼び出しが、目標、このチャット、`git status`、テスト結果を読みます。チェックが失敗すると、目標は進行中のままになり、エージェントが理由を読んで、次のラウンドが続きます。目標バーの下の行(**目標チェック**)に、テストと最後の結果が表示されます。**編集** で、独自のテストコマンドと、時間またはトークンの制限を設定します。制限を超えると、目標はブロック中になります。**今すぐ実行** は、目標を閉じずにチェックを実行します。設定に専用の **モデル** メニューがあります(既定は **チャットのモデルと同じ**)。目標を自分で完了したときは、何もチェックしません。 | <a href="assets/features/goalCheck.webp"><img src="assets/features/goalCheck.webp" width="160" alt="スクリーンショット: 目標チェック"></a> |
|
|
61
65
|
| **このチャットで許可** | <a id="feature-allowforchat"></a>自動レビューで確認を求められると、承認カードに **このチャットで許可** が表示されます。これを選ぶと、同じチャットの同じツールが、引数にかかわらず、時間制限が終わるまで許可されます(既定は 1 時間。**設定 → Composer Plus → このチャットで許可** で選べます)。その後、エージェントが再び確認します。ヘッダーのチップに許可の一覧が終了時刻とともに表示され、そこから取り消せます。許可は再起動後も有効です。 | <a href="assets/features/allowForChat.webp"><img src="assets/features/allowForChat.webp" width="160" alt="スクリーンショット: このチャットで許可"></a> |
|
|
62
66
|
| **プロジェクトの状態** | <a id="feature-projectstatus"></a>サイドバーのプロジェクトの行に、そのチャットと同じ実行中/待機中/完了のマーカーが表示されます。そのため、折りたたんだプロジェクトでも、中のチャットが作業中か、あなたの操作を待っているかがわかります。最初に表示されるのはあなたの操作を待っているチャットで、次がまだ開いていない完了済みのチャット(緑色の点。別のチャットがまだ実行中でも表示されます)、その次が実行中のマーカーです。ポインターを合わせると詳細が表示されます。 | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="スクリーンショット: プロジェクトの状態"></a> |
|
|
67
|
+
| **チャット行の Git ブランチ** | <a id="feature-sessionbranch"></a>サイドバーの各チャット行に、チャットの最後のターンの時点でチャットのプロジェクトフォルダーがあった git ブランチが、小さな灰色のラベルで表示されます(例:`main` や `feature/login`。detached HEAD の場合は短いコミット ID を括弧内に表示します)。同じプロジェクトで別のブランチにある 2 つのチャットが同じに見えることはなくなり、間違ったブランチでチャットを続けようとしているときにすぐ気づけます。ラベルにポインターを合わせると完全な名前が表示されます。ホスト側は、ターンの開始時と終了時にブランチを読み取ります(`git branch --show-current`、読み取り専用)。この機能をインストールしてからターンのないチャットや、git リポジトリではないフォルダーには、ラベルは表示されません。 | <a href="assets/features/sessionBranch.webp"><img src="assets/features/sessionBranch.webp" width="160" alt="スクリーンショット: チャット行の Git ブランチ"></a> |
|
|
63
68
|
| **すべて既読にする** | <a id="feature-markprojectread"></a>サイドバーで、プロジェクトの **…** ボタン → **すべて既読にする** をクリックします。そのプロジェクトのすべてのチャットから、緑色の未読の点が一度に消えます。ほかのプロジェクトの点はそのまま残ります。プロジェクトに未読のチャットがない場合、この項目はグレー表示になります(**未読のチャットはありません**)。 | <a href="assets/features/markProjectRead.webp"><img src="assets/features/markProjectRead.webp" width="160" alt="スクリーンショット: すべて既読にする"></a> |
|
|
64
69
|
| **アクティブなプロジェクトを先頭に表示** | <a id="feature-activeprojectsfirst"></a>チャットが実行を始めたり、あなたの操作が必要になったりすると、そのプロジェクトがサイドバーの先頭に移動します。移動には dsh 標準の行のアニメーション(ドラッグして移動したときと同じ動き)を使います。完了したプロジェクトはその場所に残ります。いつもどおり、ドラッグして好きな場所に移動できます。移動は dsh のプロジェクトの順序に保存されるため、この機能をオフにしても現在の順序は維持されます。 | <a href="assets/features/projectStatus.webp"><img src="assets/features/projectStatus.webp" width="160" alt="スクリーンショット: アクティブなプロジェクトを先頭に表示"></a> |
|
|
65
70
|
| **最近のプロジェクトのフィルター** | <a id="feature-recentprojects"></a>サイドバー → 表示オプション(スライダーのアイコン)→ **過去 2 時間以内にアクティブ**。選択中は、過去 2 時間以内にアクティブなチャットがあるプロジェクトだけがサイドバーに表示されます。対象となるチャットは、その間に更新されたチャット、実行中または待機中のチャット、開いているチャット、まだ開いていない完了済みのチャット(dsh の緑色の「完了」の点)です。完了済みのチャットは、2 時間を過ぎても対象のままです。このようなチャットがないプロジェクトは、新しい空のプロジェクトも含めて非表示になります。もう一度選択すると、すべてのプロジェクトを表示します。選択はこのデバイスに保存されます。 | <a href="assets/features/recentProjects.webp"><img src="assets/features/recentProjects.webp" width="160" alt="スクリーンショット: 最近のプロジェクトのフィルター"></a> |
|
|
@@ -67,7 +72,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
67
72
|
| **状態で並べ替え** | <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> |
|
|
68
73
|
| **バックグラウンド通知** | <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> |
|
|
69
74
|
| **アプリケーションの言語** | <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> |
|
|
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
|
|
75
|
+
| **モバイル接続(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> |
|
|
71
76
|
| **自動アップデート** | <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> |
|
|
72
77
|
|
|
73
78
|
<!-- END GENERATED FEATURES -->
|
|
@@ -76,7 +81,7 @@ dsh plugin --profile web add dsh-composer-plus
|
|
|
76
81
|
|
|
77
82
|
## 設定
|
|
78
83
|
|
|
79
|
-
すべての機能は、個別にオン/オフできます。場所は dsh の **設定 → Composer Plus** です。各行には小さなスクリーンショットがあります。ポインターを合わせると大きなプレビューが表示され、クリックすると原寸で開きます(`Esc` で閉じます)。上部の **機能を検索** ボックスは、名前または説明でページを絞り込みます(どの言語でも使えます。大文字と小文字、アクセント記号は区別しません)。`Esc` で入力を消去します。各行にはスイッチと短い説明があります。行名の後ろにある小さな **?** は、その機能を説明する README の箇所を、dsh のインターフェース言語の README で開きます。変更は再起動なしですぐに適用され、そのデバイスに保存されます。**モバイル接続**、**再起動後に再開**、**入力中に補完** を除き、すべての機能が既定でオンです。この 3 つと
|
|
84
|
+
すべての機能は、個別にオン/オフできます。場所は dsh の **設定 → Composer Plus** です。各行には小さなスクリーンショットがあります。ポインターを合わせると大きなプレビューが表示され、クリックすると原寸で開きます(`Esc` で閉じます)。上部の **機能を検索** ボックスは、名前または説明でページを絞り込みます(どの言語でも使えます。大文字と小文字、アクセント記号は区別しません)。`Esc` で入力を消去します。各行にはスイッチと短い説明があります。行名の後ろにある小さな **?** は、その機能を説明する README の箇所を、dsh のインターフェース言語の README で開きます。変更は再起動なしですぐに適用され、そのデバイスに保存されます。**モバイル接続**、**再起動後に再開**、**入力中に補完** を除き、すべての機能が既定でオンです。この 3 つと **内容検索**、**ターンのロールバック**、**次のメッセージの予測**、**目標チェック** のスイッチは、dsh のホストが保持します。そのため、これらのスイッチはすべてのウィンドウに適用され、再起動後も有効です。**次のメッセージの予測** で選んだ **モデル** も、ホストが保持します。**入力中に補完** のモデルの選択(既定は **次のメッセージの予測と同じ**)も、ホストが保持します。**プロンプトを改善** と **目標チェック** のモデルの選択(どちらも既定は **チャットのモデルと同じ**)も、ホストが保持します。**このチャットで許可** の **時間制限**(既定は 1 時間)も、ホストが保持します。**内容検索** の変更は、dsh の再起動後にだけ反映されます(dsh は起動時にこの設定を読み込みます)。それまでは、その行に **この変更を反映するには dsh を再起動してください。** と表示されます。
|
|
80
85
|
|
|
81
86
|
<p align="center"><img src="docs/images/settings.webp" width="720" alt="設定 → Composer Plus:機能の検索、言語の選択、アップデートの行、機能ごとのスイッチ。ポインターを合わせるとスクリーンショットのプレビューが表示されます"></p>
|
|
82
87
|
|
|
@@ -90,7 +95,7 @@ English · 中文 · Türkçe · Español · Português (Brasil) · Français ·
|
|
|
90
95
|
|
|
91
96
|
アプリ全体がすぐに切り替わります。この選択は dsh 標準の保存済みの設定 `locale.preference`(一般 → 言語と同じもの)なので、再起動後も維持されます。**システムの言語** は、この選択を消去します。その場合、デスクトップアプリは OS の言語に、Web UI はブラウザーの言語に従います。対応していない言語の場合は英語になります。プラグインをインストールしても、すでに選んだ言語が上書きされることはありません。
|
|
92
97
|
|
|
93
|
-
各言語パックには 3,
|
|
98
|
+
各言語パックには 3,280 件のテキストがあります。対象は、dsh `0.2.0-rc.2` と `0.2.1-rc.2` のすべての UI テキスト(チャット、サイドバー、設定、承認、スケジュール、ファイルのプレビュー、プラグインマネージャー、プラグインマーケット)、このプラグイン自体のコントロール、人気の [dsh-rewind](https://github.com/SiriLee/dsh-rewind) プラグインです。次のものは翻訳されません:あなたのメッセージ、モデルの出力、コード、スラッシュコマンドの名前(`/plan`、`/compact`)、推論の強度 `High` のようなプロバイダー側のラベル、ほかのプラグインのテキスト、デスクトップアプリのネイティブメニューとアップデートのダイアログ(dsh はこれらを英語と中国語でしか提供していません)。新しい dsh で追加された文字列は、言語パックが更新されるまで英語で表示されます。ほかのプラグインがすでにある言語を提供している場合、その言語にはそのプラグインのものが使われます。
|
|
94
99
|
|
|
95
100
|
## キーボードショートカット
|
|
96
101
|
|
|
@@ -110,6 +115,12 @@ English · 中文 · Türkçe · Español · Português (Brasil) · Français ·
|
|
|
110
115
|
| `Tab` | 予測が表示された空の入力欄 | 予測を入力欄に入れる |
|
|
111
116
|
| `Tab` | カーソルの後ろのグレーの補完 | 補完をメッセージに追加する |
|
|
112
117
|
| `Esc` | 予測が表示された空の入力欄 | 予測を非表示にする |
|
|
118
|
+
| `Cmd/Ctrl+Z` | **プロンプトを改善** を使った後の入力欄 | 入力したテキストを戻す |
|
|
119
|
+
| `Esc` | **プロンプトを改善** の実行中の入力欄 | 改善をキャンセル |
|
|
120
|
+
| `Enter` / `Esc` | ダブルクリックしたキュー内のメッセージ | 編集を保存/キャンセル |
|
|
121
|
+
| Mac では `Cmd+F`、Windows と Linux では `Ctrl+F` | 開いているチャット | **チャット内を検索** を開く |
|
|
122
|
+
| `Enter` / `Shift+Enter`、`↓` / `↑` | **チャット内を検索** のボックス | 次 / 前の一致 |
|
|
123
|
+
| `Esc` | **チャット内を検索** のボックス | ボックスを閉じる |
|
|
113
124
|
|
|
114
125
|
`/` または `@` のメニューが開いているときは、これらのキーはメニューが使います。
|
|
115
126
|
|
|
@@ -122,10 +133,14 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
122
133
|
- **続行:** 認証済みのローカルエンドポイントは、最後に中断されたターンだけを再開します。古いリクエストや重複したリクエストは拒否し、既存の承認フックはそのまま維持します。新しいユーザーメッセージは送信しません。
|
|
123
134
|
- **再起動後に再開:** オンにするまではオフです。ホスト側は、チャットの ID と開始時刻だけを `$DSH_HOME/storages/dsh-composer-plus/resume.json`(所有者のみのアクセス権)に保存します。データがマシンの外に出ることはありません。チャットを続行するのは、最後のターンを止めたのが(あなたではなく)dsh であることが、dsh 自身のログからわかる場合だけです。続行したターンにも、承認と自動レビューが通常どおり適用されます。
|
|
124
135
|
|
|
125
|
-
- **変更パネル:** git は、あなたのマシン上のチャットのフォルダーで、dsh の認証済みの `/api` チャネルを通じて、読み取り専用で実行されます。コミット、ステージ、フェッチは一切行いません。表示するのは、git
|
|
126
|
-
- **機能のアイデア:** **機能を提案** をクリックするまで、何も実行されません。クリックすると、ホスト側はチャットのフォルダーだけを読み取ります(ブラウザーがパスを送ることはありません)。読み取るのは、最上位の項目の名前、README・AGENTS.md・マニフェスト(`package.json`、`pyproject.toml`、`Cargo.toml`、`go.mod` など)の先頭 6 kB
|
|
136
|
+
- **変更パネル:** git は、あなたのマシン上のチャットのフォルダーで、dsh の認証済みの `/api` チャネルを通じて、読み取り専用で実行されます。コミット、ステージ、フェッチは一切行いません。表示するのは、git 自体が一覧にしたパスだけです。ツリーには、ローカルとリモートのブランチを最大 1000 件表示し、1 つのブランチの最新 300 件のコミットを表示します。表示するのは最初の親をたどる線だけなので、マージコミットはそれが取り込んだコミットを代表します。ブランチの切り替え(checkout)は一切行いません。**このチャット** は、チャット自身のログから、そのファイルツールが書き込んだファイルを読み取り、チャットのターンのロールバックのスナップショットと比較します。比較は、すぐに削除される一時フォルダーで行います。リポジトリやスナップショットのストアには何も書き込みません。
|
|
137
|
+
- **機能のアイデア:** **機能を提案** をクリックするまで、何も実行されません。クリックすると、ホスト側はチャットのフォルダーだけを読み取ります(ブラウザーがパスを送ることはありません)。読み取るのは、最上位の項目の名前、README・AGENTS.md・マニフェスト(`package.json`、`pyproject.toml`、`Cargo.toml`、`go.mod` など)の先頭 6 kB、README の残りの部分のアウトライン(見出し、表の行、リスト項目。最大 6 kB)、最近のコミットのタイトル(`git log --format=%s`、最大 6 kB)で、合計 28 kB までです。`.env*`、鍵ファイル、`node_modules` などのフォルダーはスキップします。また、フォルダーの中にある通常のファイルだけを読み取ります。フォルダーの外を指すシンボリックリンク、FIFO、デバイスはスキップします。この概要は、dsh 標準のプロバイダー設定を通じて、チャットが使うモデルに 1 回のリクエストとして送られます。どのチャットにも追加されません。プロジェクトには何も書き込みません。右にスワイプしたアイデアは計画モードの新しいチャットを開始するため、承認と計画のレビューが通常どおり適用されます。**すぐに実装** は、計画モードなしでチャットを開始します。モデルはすぐにファイルを変更でき、チャットの通常の承認と自動レビューが適用されます。あとで使うために保存したアイデア(タイトル、概要、理由、規模)は、プロジェクトのフォルダーパスとともに、dsh のホームの `storages/dsh-composer-plus/later.json`(所有者のみのファイル)に保存されます。プロジェクトには何も入りません。提案されたアイデアの履歴(タイトル、概要、理由、規模、日付、開始済みかどうか)も同じ方法で `storages/dsh-composer-plus/idea-history.json` に保存されます。保存できるのはプロジェクトごとに最大 200 件で、古いものから削除されます。そのタイトルは、そのプロジェクトで次に **機能を提案** を実行したときにモデルに送られます。
|
|
127
138
|
- **内容検索:** チャットを検索する新しいコードはありません。プラグインは、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` にあります。
|
|
128
139
|
- **ターンのロールバック:** あなたがメッセージを送るたびに、その前にホストがチャットのフォルダーの 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`(所有者のみのファイル)に記録されます。
|
|
140
|
+
- **GitHub issue を作成**(機能のアイデア → **あとで** リスト):クリックしたときだけ実行されます。ホスト側は、チャットのフォルダーで、あなた自身の GitHub CLI(`gh issue create`)を、アイデアの保存済みのタイトルと概要(とその重要性)で実行します。`gh` は自身のログインとフォルダーの GitHub リモートを使うため、issue はあなたのアカウントでそのリポジトリに作成され、GitHub はそのリポジトリを見られるすべての人にそれを表示します。dsh は、起動するコマンドから、トークンのような名前の変数を取り除きます。`GH_TOKEN` または `GITHUB_TOKEN` で `gh` にトークンを渡している場合、プラグインはこの 2 つだけを `gh` に渡します。issue のリンクは、アイデアとともに `later.json` に保存されます。
|
|
141
|
+
- **このファイルを変更したチャット**(変更、ファイルの「…」メニュー):ホスト側は、フォルダーが同じリポジトリにあるチャットのログを、dsh が保存しているとおりに読み取り、各チャットのタイトル、時刻、依頼の最初の行を返します。ファイル自体を開くことはありません。
|
|
142
|
+
- **チャット行の Git ブランチ:** ホスト側は、ターンの開始時と終了時に、チャットのフォルダーで `git branch --show-current`(読み取り専用)を実行し、チャット ID、ブランチ名、時刻だけを `$DSH_HOME/storages/dsh-composer-plus/session-branches.json`(所有者のみのファイル、最新 2000 件のチャット)に保存します。スイッチは、その隣の `branches.json` にあります。
|
|
143
|
+
- **チャット内を検索** はページの中だけで動作します。ページが表示しているテキストを読み取るだけで、何も送信しません。
|
|
129
144
|
- **チャットを Markdown として書き出し:** ホスト側はチャット自身のログ(dsh が表示するのと同じメッセージ)だけを読み取り、ページに渡します。プロジェクトのファイルは読み取らず、ネットワークには何も送りません。Markdown が入るのは、クリップボードか、あなたが保存するファイルだけです。
|
|
130
145
|
- **チャットを削除:** チャット自身のログフォルダー(`$DSH_HOME/sessions/<project>/<chat>`)をゴミ箱に移動します。プロジェクトのフォルダーには触れません。
|
|
131
146
|
- **このチャットで許可:** 許可は、許可した時刻とともに `$DSH_HOME/storages/dsh-composer-plus/chat-grants.json`(所有者のみのアクセス権)に保存されます。1 つの許可の対象は、1 つのチャットの 1 つの特定のツールで、時間制限が終わるまで有効です(既定は 1 時間)。そのツールが書き込みできる場合は、あらゆる書き込みも許可の対象になります。許可は、ヘッダーのチップから取り消します。
|
|
@@ -135,6 +150,7 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
135
150
|
- **次のメッセージの予測:** 既定ではオンです。このモデル呼び出しを止めるには、**設定 → Composer Plus** でオフにしてください。ターンが終わるたびに、ホスト側は、そのチャットでのあなた自身のメッセージと、エージェントのテキストの返信(ツールの出力、隠れたコンテキスト、推論は含みません)を、最大で約 6,000 文字(最新の部分)、選んだモデル(別のモデルを選ばない限り dsh の既定のモデル)に送ります。送信は、dsh 標準のプロバイダー設定を通じた 1 回のリクエストです。チャットには何も保存しません。予測がチャットの履歴に追加されることはありません。スイッチと選んだモデルは `$DSH_HOME/storages/dsh-composer-plus/predict.json`(所有者のみのファイル)に保存されます。
|
|
136
151
|
- **入力中に補完:** オンにするまではオフです。オンの間は、入力が止まるたびに、ホスト側が、それまでに入力したテキストと、そのチャットでのあなた自身のメッセージ、エージェントのテキストの返信(ツールの出力、隠れたコンテキスト、推論は含みません)を、**入力中に補完** で選んだモデル(既定では **次のメッセージの予測** のモデル)に送ります。チャットの部分は最大で約 3,000 文字です。次に入力が止まると、前のリクエストは止まります。チャットには何も保存しません。スイッチは `$DSH_HOME/storages/dsh-composer-plus/complete.json`(所有者のみのファイル)に保存されます。
|
|
137
152
|
- **プロンプトを改善:** 魔法の杖をクリックするまで、何も実行されません。クリックすると、ホスト側は次の内容を、**プロンプトを改善** で選んだモデル(既定ではチャット自身のモデル)に 1 回のリクエストとして送ります。下書き、そのチャットでのあなた自身のメッセージとエージェントのテキストの返信(ツールの出力、隠れたコンテキスト、推論、ロールバックで取り消したメッセージは含みません。最大で約 6,000 文字、最新の部分)、**機能のアイデア** と同じプロジェクトの概要(ファイルのルールも同じです。`.env*` や鍵ファイルは読まず、フォルダーの外を指すシンボリックリンクや FIFO はスキップします)、`git status` が変更ありとして示すパス、名前に下書きと共通の言葉を含む、追跡済みまたは未追跡(無視されていない)のパス最大 30 件です。この概要以外のファイルの内容は送りません。チャットにもプロジェクトにも何も書き込みません。回答は入力欄の下書きを置き換えるだけで、送信するかどうかはあなたが決めます。モデルの選択は `$DSH_HOME/storages/dsh-composer-plus/improve.json`(所有者のみのファイル)に保存されます。
|
|
153
|
+
- **目標チェック:** 自動ラウンドでエージェントが `/goal` を完了にしたとき(または **今すぐ実行** をクリックしたとき)だけ実行されます。ホスト側は、テストコマンドをチャットのフォルダーで、チャットのサンドボックスモードのもとで実行します(dsh 自身の `bash` ツールと同じで、ファイルアクセスのポリシーも同じです。そのサンドボックスを開始できないときは、テストを実行せず、チェックは失敗します)。コマンドを見つけるために読むのは `package.json`、`Makefile`、`Cargo.toml`、`go.mod`、`pyproject.toml`、`pytest.ini` だけで、フォルダー内の通常のファイルとしてだけ読みます(フォルダーの外を指すシンボリックリンクや FIFO は読みません)。次に、ツールなしの 1 回のリクエストとして、**目標チェック** で選んだモデル(既定ではチャット自身のモデル)に次の内容を送ります。目標、目標の開始以降のチャット(あなたのメッセージ、エージェントの返信、1,000 文字に切り詰めたツール呼び出し、各ツール結果の最後の 2,000 文字。推論とロールバックで取り消したステップは含みません。最大で約 60,000 文字、最新の部分)、`git status --short`、テスト出力の末尾です。ツールの出力にはエージェントが読んだ内容が含まれることがあるため、このリクエストには、チャットそのものと同じように、あなたのファイルの一部が含まれることがあります。チャットにもプロジェクトにも何も書き込みません。テストコマンド、制限、最後の結果(出力の末尾を含む)、モデルの選択は `$DSH_HOME/storages/dsh-composer-plus/goal-check.json`(所有者のみのファイル、最新の 500 チャット)に保存されます。
|
|
138
154
|
|
|
139
155
|
## トラブルシューティング
|
|
140
156
|
|
|
@@ -149,7 +165,11 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
149
165
|
- **削除すると、別の dsh がこのチャットを開いていると表示される:** 同じ dsh のホームを使う 2 つ目の dsh が、チャットのロックを持っています。そのウィンドウまたは dsh を閉じてから、もう一度削除してください。それまで、チャットはアーカイブされたままです。
|
|
150
166
|
- **「Tailscale only」をオンにした後、iPhone が接続できない:** Tailscale は Mac と iPhone の両方でオンにする必要があります。Mac でオフの場合は、モバイル接続のパネルに警告が表示されます。アクセスログには、拒否された各試行がその理由とともに表示されます。
|
|
151
167
|
- **再起動後にチャットが続行しなかった:** 原因は次のいずれかです。dsh の終了時に、再起動後に再開がオフだった。そのターンを自分で停止した。ターンがすでに終わっていた(完了または失敗)。チャットがアーカイブされていた。20 件を超えるチャットが実行中だった(最新の 20 件が続行します)。
|
|
152
|
-
-
|
|
168
|
+
- **GitHub issue を作成 で「gh could not open the issue」と表示される:** このメッセージは、`gh` 自身の出力の最初の行です。ターミナルで `gh auth status` を実行し、`gh auth login` でログインしてください。チャットのフォルダーには GitHub リモートが必要です(`git remote -v`)。「not installed or not on the PATH of dsh」は、dsh が `gh` を見つけられなかったという意味です。インストールするか、`gh` が動作するターミナルから dsh を起動してください。
|
|
169
|
+
- **チャット行にブランチのラベルがない:** 原因は次のいずれかです。このバージョンをインストールしてから、そのチャットにターンがない。フォルダーが git リポジトリではない。**チャット行の Git ブランチ** がオフになっている。アップデートの後は、dsh を再起動してください(ブランチはホスト側が記録します)。
|
|
170
|
+
- **目標チェックで、テストが終了コード 127 または「not found」で終了したと表示される:** Finder や Dock から起動した dsh は、ターミナルより PATH が短いことがあるため、`npm`、`pnpm`、`cargo` が見つかりません。ターミナルから dsh を起動するか、**目標チェック** → **編集** で、フルパスを使った独自のテストコマンドを設定してください。**今すぐ実行** を使うと、すぐに結果が表示されます。
|
|
171
|
+
- **目標が閉じず、エージェントが作業を続ける:** **目標チェック** が、失敗したテストまたは足りない作業を見つけました。目標の下の行に理由が表示されます(詳細は、結果にポインターを合わせると表示されます)。原因またはテストコマンドを直すか、`/goal` または目標バーで目標を自分で完了してください(その完了はチェックされません)。
|
|
172
|
+
- **リリース直後にインストールが失敗する:** バージョンを指定してください(`dsh-composer-plus@1.14.0`)。上のインストールの注記を参照してください。
|
|
153
173
|
|
|
154
174
|
## 制限事項
|
|
155
175
|
|
|
@@ -173,14 +193,20 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
173
193
|
- **キュー内のメッセージをその場で編集** は、dsh 標準のキューエディターを開くため、その制限を受けます。画像やファイルを含むメッセージは編集できません。また、その間に送信が始まったメッセージは変更されません(dsh が独自のエラーを表示します)。
|
|
174
194
|
- **やり直す** は、ロールバックしたチャットを変更しません。ロールバックの直前から新しいチャットを開始します(dsh 標準のフォークで、モデルのコンテキストも同じです)。そのため、新しいチャットには新しい ID とタイトルが付きます。やり直せるのは、チャットの最新のロールバックだけで、1 回だけです。また、その後に何もない間だけです(新しいメッセージを送ると、やり直しはできなくなります)。ロールバックの後に変更したファイルは保持されます。ただし、上書きするチェックボックスをオンにした場合は上書きします。やり直しには、ロールバックが保持したスナップショットが必要です(同じく最新 50 件の範囲)。このバージョンより前のロールバックや、**チャットのみ** のロールバックでは、メッセージだけが戻ります。
|
|
175
195
|
- **このチャット** が数えるのは、dsh のファイルツール(`write`、`edit`、`str_replace_editor`)が書き込んだファイルだけです。コマンド(`bash`)が変更したファイルは、この表示には含まれず、**未コミット** に表示されます。チャットのターンのロールバックのスナップショットがない場合(ターンのロールバックがオフ、dsh-rewind-plugin がインストール済み、またはチャットがプラグインより古い場合)、表示は最後のコミットと比較し、そのことを示します。ターンのロールバックはチャットごとに最新の 50 個のスナップショットを保持します。長いチャットでは、表示は保持されている最も古いものと比較し、どのメッセージからかを示し、それより前の変更は数えません。**空白の変更を非表示** は `git diff -w` です。行の中のスペースだけが変わった行も非表示になります。
|
|
196
|
+
- **GitHub issue を作成** には、dsh の PATH にある GitHub CLI(`gh`)と、チャットのフォルダーの GitHub リモートが必要です。実行時間は最大 60 秒です。`gh` がそれより長くかかると、issue は GitHub に作成されていても、そのリンクがリストに表示されないことがあります(もう一度クリックする前に、GitHub を確認してください。リストは完了した実行からしかリンクを読み取らないため、もう一度クリックすると 2 つ目の issue が作成されることがあります)。GitHub リモートが複数あるフォルダーでは、`gh` 自身のデフォルト(`gh repo set-default`)を使います。
|
|
197
|
+
- **このファイルを変更したチャット** は、**このチャット** と同じく、dsh のファイルツール(`write`、`edit`、`str_replace_editor`)だけを認識します。コマンド(`bash`)による変更は表示されません。リポジトリの最新 300 件のチャット(作成日時の順)を読み取り、それより多い場合はそのことを表示します。表示するのは最大 100 行です。名前を変更したファイルは、ツールが書き込んだ名前で表示されます。フォルダーがリポジトリの外にあるチャット(同じファイルへの別のパスを通る場合も含みます)は数えません。dsh の起動後に最初に開くときは、リポジトリのすべてのチャットのログを読み取ります(275 件のチャットで約 4 秒)。2 回目以降は、それ以降に変更されたチャットだけを読み取ります。
|
|
198
|
+
- **チャット行の Git ブランチ** が表示するのは、最後のターンの開始時または終了時に、チャットのフォルダーがあったブランチです。現在のブランチではありません。ターンの外でブランチを切り替えた場合は、次のターンの後に表示されます。このバージョンより前のチャットには、次のターンまでラベルが表示されません。ラベルは dsh のチャット行のマークアップの中に置かれます(dsh にはそこにスロットがありません)。dsh のアップデートでそのマークアップが変わった場合、ラベルは表示されません。
|
|
199
|
+
- **チャット内を検索** が検索するのは、ページに表示されている内容だけです。対象は読み込まれたメッセージと返信です(古いものは、上にスクロールするか、**以前の履歴を読み込む** をクリックします)。閉じているツールのステップや、ツールの出力の中で折りたたまれているテキストは対象外です。数える一致は最大 2,000 件です(それを超えると「2000+」)。ブラウザーのハイライト API を使います(Chromium 105 以降。デスクトップアプリには搭載されています)。古いブラウザーでは、件数と移動は動作しますが、色は付きません。Mac では `Cmd+F`(Windows と Linux では `Ctrl+F`)でこれが開くのは、画面にチャットがあるときだけです。それ以外の場所では、ブラウザー自体の検索がこれまでどおり動作します。Mac の `Ctrl+F` は、テキスト欄での macOS の動作(カーソルを 1 文字進める)のままです。
|
|
176
200
|
- 再起動の前に送られた通知をクリックしても、dsh が前面に表示されるだけです。
|
|
177
201
|
- アクティブなプロジェクトは、dsh に保存されたプロジェクトの順序を使って移動します。そのため、新しい順序は再起動後も維持されます。どのプロジェクトにも属さないチャット(「グループなし」)は移動できません。dsh は、これらのチャットを常に最後に表示します。
|
|
178
202
|
- dsh には、サイドバーの表示オプションのメニューに拡張ポイントがありません。そのため、最近のプロジェクトのオプションは、dsh 標準のメニューに追加しています。dsh のアップデートでこのメニューが変わった場合、オプションは表示されず、すべてのプロジェクトが表示されたままになります。フィルターはプロジェクトの行に対して動作するため、**1つのリスト** は絞り込まれません。**ワークスペース** と組み合わせて使ってください。**ワークスペースのツリー** では、非表示になった親フォルダーの中にあるアクティブなプロジェクトも、非表示になります。**状態別** にも、同じ種類の制限があります。dsh には並べ替えのスロットがないため、この項目と行の並び順は、dsh のメニューとリストのマークアップに取り付けています。
|
|
179
203
|
- dsh には、プロジェクトの行のメニューも、ワークスペースのヘッダーのスロットもありません。**パスをコピー** は、dsh の行のマークアップからプロジェクトの行を見つけます。**すべてのプロジェクトを折りたたむ** は dsh のヘッダーに入り、プロジェクトの行をクリックするのと同じ方法で、開いている各プロジェクトを閉じます。dsh のアップデートでこのマークアップが変わった場合、右クリックではブラウザーのメニューが表示され、ボタンは表示されません。
|
|
180
204
|
- dsh には、新しいチャットのプロジェクトメニューにも拡張ポイントがありません。そのため、**プロジェクトを検索** ボックスと A–Z 順は、dsh のメニューのマークアップに取り付けています。dsh のアップデートでこのマークアップが変わった場合、メニューは dsh が描くとおりに表示されます(保存済みの順序で、ボックスはありません)。A–Z 順は表示だけのもので、dsh に保存されたプロジェクトの順序は変わりません。
|
|
205
|
+
- dsh には **新しいセッション** を開く場所を選ぶ拡張ポイントもありません。**新しいセッションの既定のワークスペース** は、公開 API ではない dsh のメソッド(dsh のワークスペースサービスの `startSession`)をラップします。dsh の更新でこの名前が変わると、**新しいセッション** は dsh が選ぶ場所(開いているプロジェクトまたは最新のプロジェクト)で開きます。プロジェクトを指定しない呼び出しはすべて既定を使います:サイドバーのボタン、そのショートカット、ロゴ、そして **自動化タスク** ページの **新規** も同じです。dsh は起動時に引き続き最後のチャットを開きます。汎用フォルダーは初回使用時に作成され、プロジェクトに追加されます。Windows や Linux で Documents フォルダーを移動している場合、dsh 自身のフォルダーと異なることがあります。
|
|
181
206
|
- dsh には、入力欄のヒントのための拡張ポイントもありません。そのため、**次のメッセージの予測** のテキストは、dsh 標準のプレースホルダー(`[data-composer-placeholder]`)の上に重ねて表示します。dsh のアップデートでこのマークアップが変わった場合、予測は表示されません。オンの間は、ターンが終わるたびに短いモデル呼び出しが 1 回行われます。
|
|
182
207
|
- **入力中に補完** は、dsh 標準の入力欄のヒント(dsh がスラッシュコマンドの引数のヒントに使う `--dsh-composer-hint` スタイル)を通じてテキストを表示します。スラッシュコマンド、ファイルやシンボルのチップを含むメッセージ、カーソルがメッセージの末尾にないときは動作しません。dsh のアップデートでこのスタイルが変わった場合、補完は表示されません。入力が止まるたびに、モデル呼び出しが 1 回行われます。
|
|
183
208
|
- **プロンプトを改善** が見るのは、短いプロジェクトの概要、変更されたパス、名前があなたの言葉と一致するパスだけで、コードそのものは見ません。そのため、正しいファイルを見落とすことがあり、渡されたパスしか挙げません。送信する前に新しいテキストを読んでください。スラッシュコマンドや、ファイルやシンボルのチップを含むメッセージには使えません(新しいテキストはプレーンテキストなので、チップが失われるためです)。メッセージは最大 8,000 文字です。画像は添付されたままで、変わるのはテキストだけです。クリックするたびに、モデル呼び出しが 1 回行われます。性能の高いモデルでは 1 分ほどかかることがあります(`Esc` でキャンセルします)。
|
|
209
|
+
- **目標チェック** がチェックするのは、自動の目標ラウンドでエージェントが行った完了だけです。チャットであなたが頼んだ完了、`/goal`、目標バーはチェックされません。エージェントは、テストやテストコマンドのファイルを自分で変更できます。検証用のモデルはチャットを読むのでそれに気づけますが、どちらの方向にも誤ることがあります(誤った「未完了」はラウンドを 1 回余分に使い、誤った「完了」は目標を閉じます)。検証用のモデルが見るのはチャットと `git status` で、コードそのものは見ません。テストの実行結果を再利用するのは、ファイルを変更できるエージェントの最新のステップが、同じフォルダーで完全に同じコマンドを実行して成功した、エージェント自身の `bash` 実行だった場合だけです。パイプ(`| tail`)や `&&` を含むコマンドは再利用しません。予算はターンの終わりに計測されるため、1 回のターンで予算を超えることがあります。数えるのはチャット自身のモデル呼び出しだけです(サブエージェントの呼び出しは数えません)。チェックの実行中、`update_goal` は待機します(テストは最大 15 分、検証は最大 3 分)。フォークしたチャットには新しいチャット ID が付くため、親チャット独自のテストコマンドと制限なしで始まります。検証まで進んだ完了 1 回ごとに、モデル呼び出しが 1 回行われます。
|
|
184
210
|
- 標準機能としてのサポートを、上流に要望しています:キューの `move` は [#773](https://github.com/deepseek-ai/deepseek-harness/discussions/773)、続行の状態は [#9269](https://github.com/deepseek-ai/deepseek-harness/discussions/9269) です。
|
|
185
211
|
|
|
186
212
|
## よくある質問
|
|
@@ -207,6 +233,8 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
207
233
|
|
|
208
234
|
**Roo Code や Augment の Enhance prompt ボタンのように、送信前に dsh でプロンプトを改善できますか?** はい、**プロンプトを改善**(既定ではオン)でできます。大まかな依頼を入力し、モデルメニューの横にある魔法の杖をクリックします。このチャットとプロジェクトをコンテキストとして、あなたの言語でテキストを書き直します。送信はしません。`Cmd/Ctrl+Z` または **改善を元に戻す** で元のテキストに戻ります。モデルは **設定 → Composer Plus → プロンプトを改善 → モデル** で選びます。
|
|
209
235
|
|
|
236
|
+
**ループエンジニアリングの検証ループのように、エージェントが自分の作業を自分で完了扱いにしないようにできますか?** はい、**目標チェック**(既定ではオン)でできます。`/goal` で目標を開始します。エージェントが目標を完了したと言うと、プロジェクトのテストが実行され、独立したモデル呼び出しがチャットと照らし合わせて目標をチェックします。どちらかが失敗すると、目標は開いたままになり、エージェントが理由を読みます。目標の下の **目標チェック** の行にある **編集** で、独自のテストコマンド、時間制限、トークン制限を設定できます。
|
|
237
|
+
|
|
210
238
|
**dsh でキュー内のメッセージを並べ替えるには?** キュー内のメッセージの ⠿ ハンドルをドラッグします。または、ハンドルにフォーカスを置いて `↑` / `↓` を押します。
|
|
211
239
|
|
|
212
240
|
**キュー内のメッセージの入力ミスを直すには?** キュー内のメッセージをダブルクリックし、テキストを変更して `Enter` を押します(`Esc` でキャンセル)。メッセージのキュー内の位置は変わりません。
|
|
@@ -217,6 +245,10 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
217
245
|
|
|
218
246
|
**間違えてターンをロールバックしました。元に戻せますか?** はい。ロールバックの直後に、入力欄の上の **やり直す** を使います。ロールバックの直前から、同じメッセージで新しいチャットを開始します。**チャットとファイル** でロールバックした場合は、ファイルも戻します。
|
|
219
247
|
|
|
248
|
+
**どのチャットがこのファイルを変更しましたか?** 右サイドバー → **変更** → ファイルの **…** → **このファイルを変更したチャット**。行をクリックすると、変更した依頼の位置でそのチャットが開きます。
|
|
249
|
+
|
|
250
|
+
**1 つの長いチャットの中を検索できますか?** はい。チャットで Mac では `Cmd+F`(Windows と Linux では `Ctrl+F`)を押します。**チャット内を検索** はすべての一致をハイライトし、`Enter` と `Shift+Enter` で一致の間を移動します。
|
|
251
|
+
|
|
220
252
|
**1 つのチャットが変更したファイルだけを見るには?** 右サイドバー → **変更** → **このチャット** を開きます。空白だけの変更を隠すには、**␣** をクリックします。
|
|
221
253
|
|
|
222
254
|
**1 つのチャットで、自動レビューが同じツールについて何度も確認しないようにするには?** 承認カードの **このチャットで許可** をクリックします。対象は、そのチャットのその特定のツールだけで、既定では 1 時間有効です。許可は、ヘッダーのチップから取り消せます。時間は **設定 → Composer Plus → このチャットで許可** で変更できます。
|
|
@@ -237,6 +269,12 @@ dsh `0.2.0-rc.2`(デスクトップと Web)と `0.2.1-rc.2`(Web)でテ
|
|
|
237
269
|
|
|
238
270
|
**iPhone から dsh を使うには?** `tether/ios` から Tether アプリをビルドし(Xcode)、**設定 → Composer Plus → モバイル接続(iPhone)** をオンにします。左下の **モバイル接続** をクリックし、QR コードを読み取って(iPhone のカメラまたは Tether の **Scan code**)、**Connect** をタップし、**Approve** をクリックします。外出先では、両方のデバイスで Tailscale を使ってください。
|
|
239
271
|
|
|
272
|
+
**新しいセッションを常に同じプロジェクトで開くには?** 設定 → Composer Plus → **新しいセッションの既定のワークスペース** → **新しいセッションを開く場所** → プロジェクトを選びます。ほかのプロジェクト横の `+` は引き続きそのプロジェクトを開きます。
|
|
273
|
+
|
|
274
|
+
**1 つのプロジェクトの複数の機能を、それぞれ専用のブランチで同時に進めるには?** **チャットごとのブランチ** を使います。新しいチャット → ⑂ main ボタン → **新しいブランチ** を選び、最初のメッセージを送信します。各チャットに専用のブランチと worktree フォルダーができ、`.worktreeinclude` に書かれていれば `.env` や `node_modules` もコピーされます。チャットのヘッダーに、今いるブランチが表示されます。
|
|
275
|
+
|
|
276
|
+
**iPhone から写真を送れますか?** はい。Tether のチャットで、メッセージ欄の横の **+** → Camera、Photos(最大 4 枚)、または Paste image をタップします。写真はメッセージの添付ファイルとして Mac のチャットに届くため、モデルはそれを見ることができます。
|
|
277
|
+
|
|
240
278
|
**デスクトップアプリで使えますか?** はい。設定 → プラグイン → **プラグインを追加** → `dsh-composer-plus` でインストールします。dsh 0.2.0-rc.2(デスクトップと Web)と 0.2.1-rc.2(Web)でテストしています。
|
|
241
279
|
|
|
242
280
|
## 開発
|
|
@@ -273,6 +311,22 @@ SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-content-search.mjs /path
|
|
|
273
311
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-turn-rollback.mjs /path/to/dsh/lib/bin.js
|
|
274
312
|
# Improve prompt (fake model, made-up git project): the wand sends the draft with the chat and the project, the answer replaces the draft, Cmd+Z and Undo bring it back + its thumbnail
|
|
275
313
|
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-prompt-improve.mjs /path/to/dsh/lib/bin.js
|
|
314
|
+
# Goal check (fake model, made-up project): a failing test and a verifier "not done" keep the goal open, the agent's own test run is reused, a pass closes it, a token budget blocks it + its thumbnail
|
|
315
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-goal-check.mjs /path/to/dsh/lib/bin.js
|
|
316
|
+
# Mark all as read, Copy message link, Edit queued message in place, Redo, Changes → This chat and Hide whitespace (fake model, made-up git projects) + their thumbnails
|
|
317
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-six-features.mjs /path/to/dsh/lib/bin.js
|
|
318
|
+
# Changes Tree (fake model, made-up git history): branch list, a branch's commits, commit files and diffs, back marks the row + its thumbnail
|
|
319
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-changes-tree.mjs /path/to/dsh/lib/bin.js
|
|
320
|
+
# Allow for this chat with a time limit (fake model that is also the Auto Review reviewer): the grant ends after 1 hour
|
|
321
|
+
PLAYWRIGHT=/path/to/playwright node test/browser-grant-ttl.mjs /path/to/dsh/lib/bin.js
|
|
322
|
+
# Next message prediction and Complete while typing (fake models): calls, Tab, Esc, model choice + their thumbnails
|
|
323
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-predict.mjs /path/to/dsh/lib/bin.js
|
|
324
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-complete.mjs /path/to/dsh/lib/bin.js
|
|
325
|
+
# Project search in a new chat: A–Z order, filter, Enter + its thumbnail
|
|
326
|
+
SHOT=1 PLAYWRIGHT=/path/to/playwright node test/browser-project-picker.mjs /path/to/dsh/lib/bin.js
|
|
327
|
+
# Queue drag-and-drop and Continue with a queued message (slow fake model)
|
|
328
|
+
PLAYWRIGHT=/path/to/playwright node test/browser-queue-drag.mjs /path/to/dsh/lib/bin.js
|
|
329
|
+
PLAYWRIGHT=/path/to/playwright node test/browser-continue-queue.mjs /path/to/dsh/lib/bin.js
|
|
276
330
|
```
|
|
277
331
|
|
|
278
332
|
```sh
|
|
@@ -283,7 +337,7 @@ npm test
|
|
|
283
337
|
|
|
284
338
|
**新しい機能のルール:** 設定 → Composer Plus の各機能の行には、スクリーンショットを表示します。機能の ID を `client.js` の `SHOT_OF` と `index.js` の `SHOTS` に追加し、`assets/features/<id>.webp` を同梱してください(使い捨てのデモ dsh で英語の UI を使って撮影し、約 60 kB 以下にします)。機能を同じ画像とともに `docs/features.json` に追加し、`npm run build:readme` を実行します。これで `README.md` と翻訳済みの各 `README.<id>.md` の機能表、および `llms.txt` の一覧が書き込まれます。機能にスクリーンショットがないと、`test/shots.test.mjs` が失敗します。`test/browser-settings-shots.mjs` は、実際の設定ページを確認します。変更のたびに確認するチェックリストの全体は、[AGENTS.md](AGENTS.md) にあります。
|
|
285
339
|
|
|
286
|
-
テストでは、本物の `client.js` を偽の React/DOM に対して実行し、本物の `index.js`(ホスト側)を一時的な git リポジトリに対して実行します。Tether ゲートウェイのテスト(`test/tether-gateway.test.mjs`)は、モックの dsh ホストと本物の TLS ゲートウェイを使います。iPhone アプリは `tether/ios` にあります([tether/README.md](tether/README.md) と [tether/AGENTS.md](tether/AGENTS.md)
|
|
340
|
+
テストでは、本物の `client.js` を偽の React/DOM に対して実行し、本物の `index.js`(ホスト側)を一時的な git リポジトリに対して実行します。Tether ゲートウェイのテスト(`test/tether-gateway.test.mjs`)は、モックの dsh ホストと本物の TLS ゲートウェイを使います。iPhone アプリは `tether/ios` にあります([tether/README.md](tether/README.md) と [tether/AGENTS.md](tether/AGENTS.md) を参照)。ホストの各ルート、そのリクエスト、Tether から呼び出せるかどうかは、[docs/ROUTES.md](docs/ROUTES.md) に一覧があります。`node test/browser-history.mjs '<dsh web URL with ?token=…>'` は、専用の `DSH_HOME` を持つ使い捨ての `dsh web` に対して、実際のブラウザーで入力履歴を確認します。
|
|
287
341
|
|
|
288
342
|
言語パックは、データだけを含む JSON で、`locales/<id>.json` にあります。`npm run build:locales` が、これらを 1 つのクライアントのエントリーに埋め込みます(翻訳サービスや実行時のダウンロードは使いません)。`npm test` は、各パックについて、すべてのキーがそろっていること、プレースホルダーと改行が同じであること、システム言語と上書きの動作を確認します。ローカルにインストールした Playwright を使って、隔離した実際のアプリで確認するには、次のコマンドを実行します:
|
|
289
343
|
|