DeepSeek Harness 時雨堂 fork 変更情報

翻译

独自変更

以下はすべて「プロンプト・ツールスキーマ・session log を変えない」範囲に収まります。

1. 日本語 UI(language pack)

packages/client/locale-ja

  • ja を language pack として登録し、出荷済みの各名前空間に日本語辞書を持つ(辞書 60 個)。 キーの欠落・余剰・改名はビルドで落ち、未収録の名前空間は en へフォールバックする
  • packages/bundle/web-app から読み込み対象として有効化
  • フォントは upstream の ui-theme(text / code / terminal のフォント族・字号、General 設定の フォント行)をそのまま使い、fork 独自のフォントプラグインは持たない
  • base.css の既定スタックだけを locale 中立にし、CJK フォント族を固定しない (ja ページでブラウザーが日本語字形を選ぶ)

2. composer の git ブランチチップ

packages/api/workspace-git、packages/client/ui-git-branch

  • Host 側の workspaceGit Remote 名前空間が、Session のワークスペースのチェックアウトを答える (Agent を activate せず、git 読み取りは subprocess provider 経由)
  • 返すのは 3 分岐の union: ブランチ名 / detached HEAD の短縮 commit id / リポジトリ外なら none。 見つかった場合はチェックアウトの root、linked worktree のディレクトリ名、origin が github.com を指す場合の repository slug と URL も返す
  • ブラウザー側は owner/repo:branch (worktree)、detached では owner/repo@abc1234 (worktree) と描く
  • 環境情報であり、session state でもモデルリクエストでもない

3. フラットな Session 行のワークスペース名

packages/client/ui-workspace

  • In one list のフラット表示で、Session 行に所有ワークスペース名を足す
  • deriveFlat が Workspace の表示名を各 SessionNode へ射影し、行はタイトルの上の 11px 三次色の行として描く。空のラベルは 未分類
  • 行の高さは 32px → 45px。並び順も Session の所属も変えない

4. Ollama Cloud の同梱プロバイダーカタログ

packages/llm/llm-pi-ai(src/bundled-catalog.ts)

  • pi-ai が持たない経路を既定値付きで提供する。ollama-cloud の endpoint・プロトコル・ モデルごとのコンテキスト長・出力上限・入力モダリティ・推論レベルを保持する
  • 収録モデル: DeepSeek V4.1 Flash / V4 Pro、Gemma 4 31B、GLM 5.2 / 5.3 / 5.3 Flash、 GPT-OSS 120B / 20B、Kimi K2.6 / K2.7 Code / K3、MiniMax M2.7 / M3、Mistral Large 3、 Nemotron 3 Nano 30B / Super / Ultra
  • catalogModels() と discoverModels() は設置済み経路と同じように答え、catalogProvider() は undefined を返したまま(バンドルはプロトコル実装を持たない)
  • プロファイルが api / baseURL を名指しすればそちらが勝つ

5. Ollama Cloud / OpenCode Go の時間帯切り替え

packages/llm/llm-pi-ai(src/peak.ts)

  • モデルエントリに peak(ローカル時刻の窓のリスト)を宣言し、通常時間帯とピーク時間帯で 別プロバイダーを使える。Ollama Cloud を昼、OpenCode Go を夜、という運用がこれで成立する (Ollama Cloud 側は 4 の同梱カタログ、切り替え先は pi-ai 設置済みカタログの opencode-go)
  • 窓は IANA timeZone 付きの包含 from / 排他 to。to が from より前なら日跨ぎ。 設定順にマッチするので、後ろのエントリでより狭い区間を指定できる
  • days で窓を曜日に限定できる。判定は窓が開始する日で行うので、平日限定の 21:00-03:00 は月曜の夜から土曜の未明まで(月曜 01:00 は日曜の窓なので対象外、 土曜 01:00 は金曜の窓なので対象)。省略時は毎日
  • 現行のデプロイは days: [mon, tue, wed, thu, fri] を指定する。Ollama Cloud の低峰は 「平日 UTC 12:00–18:00 の外側+週末終日」で、21:00-03:00 Asia/Tokyo はその平日ピークと 一致するため、週末は OpenCode Go へ逃がさず Ollama Cloud のまま使う
  • 候補は pi-ai の設置済みカタログから解決し、priority 順に試す。apiKeyEnv を窓ごとに持てる (候補が設定済みルートなら、そちらの apiKeyEnv を継承する)
  • 切り替えは adapter の中だけで起き、報告される provider・model id・session log は設定された 経路のまま。モデルピッカーのグループは 1 つのままで、モデル変更通知も出ない
  • カタログは LlmModelInfo.routing で窓の提供元を運び、Web のモデル選択はそのプロバイダー名を 出して自動切り替え中であることを示す

6. 検索プロバイダー

packages/web/web-search-ollama

  • POST /api/web_search を叩く検索 backend。OLLAMA_CLOUD_API_KEY で認証する
  • 生成 answer は返らないので結果に content は付かない(引用可能な source のみ)
  • URL の無いエントリは捨てるので、要求より少ない source が返ることがある
  • endpoint と結果件数は Web 検索設定ページから編集できる live setting
  • Web 検索設定ページは検索プロバイダーの選択で、DeepSeek 検索 API も並ぶ。選択すると web.searchProvider と web.fetchProvider を同じ書き込みで設定し、離れると fetch の指定を 消してデプロイ既定へ戻す

7. モデル選択のプロバイダー表示

packages/client/ui-model-selection、packages/client/ui-settings-models

  • root メニューは現在のプロバイダーを Model / Effort の上に選択不可の行として出す
  • トリガーはプロバイダー名・モデル名・推論レベルを並べて描く
  • カタログが解決できない選択は従来どおりの代替表示にまとめる
  • ピーク窓が有効な間は、そのプロバイダー名に「(自動)」を付けて描く。曜日限定の窓は 対象外の曜日にこの表示を出さない

8. メッセージ時刻とタイムゾーン設定

packages/client/ui-chat

  • メッセージの時刻をアクション行から切り離し、メッセージの下に説明行として表示する。 アイコンは従来どおりホバーで現れ、時刻は常に見える
  • Settings → General にタイムスタンプのタイムゾーン(端末 / JST / UTC)を追加し、 ui-chat.clockTimeZone に保存する
  • 時刻は常に YYYY-MM-DDTHH:mm:ss。固定タイムゾーンは 2026-01-01T10:10:10 (JST) のように 括弧で自分を名乗る

9. Session の作業ディレクトリ変更

packages/session/working-directory

  • 既存プロセスが元のディレクトリを保持したまま、Session の作業ディレクトリを変更できる
  • 選択したディレクトリは replay を跨いで残り、ユーザーコンテキストに現れる
  • ディレクトリが消えていた場合は、元のプロジェクトがまだあればそこへ戻す

10. Web サーバーのインスタンス別永続状態

packages/util/home-paths、packages/bundle/web-app、packages/boot/app-boot

  • dsh --profile web --instance を付けると、明示 --port から導出した名前で、共有しては いけない永続状態を名前空間化する
  • $DSH_HOME/instances//sessions と $DSH_HOME/instances//storages になる
  • フラグ無しでは dshInstancePath が dshHomePath と同じに解決するので、既存の $DSH_HOME/sessions レイアウトは変わらない
  • profile・credential・settings・attachment は共有のまま
  • 1 プロセス 1 JS スレッドの制約の下で、1 つの $DSH_HOME 上に複数サーバーを並べるための変更

11. 公式 DeepSeek API の Session Log 送信は opt-in

packages/session/session-log-deepseek

  • enabled の既定は false。公式 DeepSeek API のリクエストに dsh_session_log を付けず、 session-log-deepseek/delivery-accepted も記録しない
  • 有効化は Settings → General のトグル、または profile の cordis.patch.yml で session-log-deepseek に enabled: true
  • リクエストバイトの話で、モデルが読む内容は変えない
添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论