DeepSeek Harness 実測:モデル以外がもたらす価値とは
本文の状態
日本語全文を表示中
詳細モードで約34分の本文を読めます。
同じ出来事の情報源
この情報源を基点に整理
Tencent Engineering
DeepSeek は V4-Pro 正式版公開と同時に、Agent 開発用プラットフォーム「DeepSeek Harness」をオープンソース化し、プラグイン駆動のランタイムと可視化機能を提供して開発者による Agent 構築を可能にした。
AI深層分析を開く2026年8月15日 21:31
AI深層分析
キーポイント
Open Source Release of DeepSeek Harness
DeepSeek は V4-Pro の公開と同時に、Agent 開発プラットフォーム「DeepSeek Harness」のソースコードをオープンソース化し、Web、Headless、Python SDK などの実行環境を提供した。
Trajectory as Agent DevTools
DSH はセッションイベントログから直接軌跡(Trajectory)を投影する機能を備え、開発者がモデルの判断経路やコンテキスト圧縮の状態を可視化してデバッグできる環境を提供している。
Plugin and Preset Architecture
同システムはプラグインで機能拡張を行い、Preset で特定の Agent が見えるツールとコンテキストを制限する仕組みを採用し、不要なツールの排除によるトークン効率の向上を図っている。
Developer Preview Status
DSH は現在 Developer Preview 段階であり、ランタイムは開放的だが、デフォルト製品の完成度は Claude Code や Codex に比べてまだ発展途上であると評価されている。
システムプロンプトと構成の可視性
DSH はメモリ内にリクエストを隠さず、システムプロンプトがペルソナ、ツール説明、プラグイン登録のセクションから構成されることをログで確認できる。
重要な引用
DSH 現在更像是一个开放的 Agent 平台脚手架,默认产品还带着预览版的毛边
Trajectory 的源码设计口碑不错,值得学习
插件提供新能力,Preset 决定某类 Agent 能看见哪些能力
DSH 没有把运行时请求藏在内存里。System prompt 由 persona、工具说明和插件注册的 prompt sections 拼起来。
編集コメントを表示
編集コメント
DeepSeek はモデルの性能競争だけでなく、Agent エコシステムの構築に注力していることが明確になった。Trajectory のような可視化機能は、ブラックボックス化しがちな LLM の挙動を透明化する上で極めて有用であり、開発者コミュニティからのフィードバックが今後の製品進化の鍵となるだろう。
Source Article
元記事を日本語で読む
本文に関係しない購読案内、埋め込み通知、サイト内プロモーションは除いています。
腾讯技術工程 2026-08-15 09:30 広東
DeepSeek-V4-Pro の正式版リリース当日、DeepSeek Harness もオープンソース化されました。
執筆者:osli 元宝 プロダクトマネージャー
関連チーム:元宝プロダクトセンター、元宝モデルエンジニアリングセンター、元宝大規模モデル応用アルゴリズムセンター
DeepSeek-V4-Pro の正式版リリース当日、DeepSeek Harness もオープンソース化されました。以前から DeepSeek Harness の公式アカウント登録を待ち望む声は絶えませんでした。V4 Flash の発表レポートにおけるモデルカードには DSH に関する記述がわずか一行しかなく、外界ではすでに長い間推測が続いており、期待値は最高潮に達していました。
しかし、ソースコードが公開された直後、実際の製品と事前の期待にはわずかなズレがあることに気づきました。多くの人々が待ち望んでいたのは DeepSeek 版 Codex でしたが、今回オープンソース化されたのは、引き続き Agent を構築できるランタイム環境に近いものです。Web コーディングエージェント、Headless モード、Python SDK、ACP、JSON-RPC が用意されています。モデル、ツール、セッション、権限、サンドボックス、Agent Loop、UI など、すべてをモジュールとして分解・再構成可能です。
私はまずオープンソースリポジトリに基づき、ローカル環境で npm、Web、Headless、Python SDK をすべて動作させました。デフォルト設定とセッションログを解析し、同じ Kimi K3 モデルを用いて DSH と Kimi Code を比較検証しました。さらに、V4 Pro に視覚出力を含む複雑なタスクを連続実行させてみました。
一連のテストを終えた後の総評は以下の通りです。現在の DSH は、オープンな Agent プラットフォームの足場(スキャフォールド)といった性格が強く、デフォルト製品にはまだプレビュー版特有の未熟さが見られます。今後はコミュニティによる磨き上げが期待されます。「すべてをプラグイン化する」という理念は非常に新鮮で、Trajectory のソースコード設計も評価が高く、学ぶべき点が多いと感じました。
図 1:プラグツリー、置換可能性、追加型イベントフローに基づいて描かれた概念図。この図は画像生成モデルによって作成されたものであり、実際の製品インターフェースではありません。
DSH は現在、開発者プレビュー段階にあります。本記事に記載されている数値は、単一のローカル実行結果と公開されたユーザーフィードバックに基づくものであり、機能の差異や限界を確認するための目安です。製品間のランキングを示すものではありません。
コミュニティが注目しているのは、主に 2 つのポイントです。
8 月 13 日にリリースされた「DeepSeek Harness」に関する知乎(中国版 Quora)での議論を見ると、ユーザーの反応は大きく 2 つのグループに分かれています。
一方のグループは、完成度の高いコーディングエージェントを待っています。彼らが重視するのは、デスクトップアプリやターミナル体験、Windows 対応状況、キャッシュのヒット率、そして日常のコーディング支援です。また、公式 Harness が V4 Pro や Flash の性能をさらに引き上げるかどうかも注目点となっています。
他方、ベータテスターたちはプラグイン、Preset(プリセット)、Trajectory(軌跡)、そしてランタイム中の自己修正機能に注目しています。彼らが見ているのは、エージェント開発を継続できるプラットフォームです。
どちらも正しく捉えています。DSH はこの 2 つの側面を併せ持っていますが、その完成度には非対称性があります。ランタイムはすでに開放的ですが、デフォルトのプロダクト体験はまだ Claude Code、Codex、Kimi Code といった競合に追いついていません。
最も評価が高いのは「Trajectory」機能です。
段小草氏は Trajectory を、エージェント向けの開発ツール(DevTools)と表現しました。タイムラインや各ラウンドの要求、ログを可視化できるため、コンテキスト圧縮の状況、スキル(機能)の過剰さ、あるいはモデルの誤りを調査する際に非常に役立ちます。
卜寒兮氏も、実行情報パネルの有用性を特に強調しています。キャッシュヒット率や入出力トークン数、トークン生成速度などが直接表示される点は評価されています。
これはソースコードの内容とも一致しています。DSH では、モデルが認識すべき内容が必ずログに記録されることが要件となっており、Trajectory はセッションイベントログから投影されます。独自の監視データを埋め込むのではなく、モデルが実際に受け取ったリクエストに近いリアルな軌跡を表示できるのです。
プラグインの真価は、エージェントの範囲を絞り込む点にあります。
コミュニティ初期には、単なる外観変更や遊び心のあるプラグインも存在しましたが、より注目すべきはドメイン特化型エージェントです。
Kitt 氏が進化共有会で紹介した Data Agent は、読み取り(read)、編集(edit)、書き込み(write)の機能のみを保持し、sqlcmd を使用して bash コマンドを置き換えています。これにより、モデルはデータベースの実行結果を中心に動作し、データ分析に関係ないツールやコンテキストから解放されます。
この事例は、プラグインと Preset の役割分担を明確に示しています。プラグインが新しい能力を提供する一方、Preset は特定のタイプのエージェントが利用可能な能力を決定します。DSH が本格的な生産価値を発揮するのは、「何を削除し」「何を置き換えるか」にかかっています。単にツールを追加し続けるだけではトークンの消費が増え、モデルの選択難易度が上がるだけです。
長時間タスクの実行と、それに見合うコスト管理
Adam Platin 氏は、1 週間分のベータ版を使用して機械学習コンペティションを管理した経験を語っています。Agent はルールを読み込み、スクリプトを実行し、実験を進め、ブラウザを呼び出して最終的に 89 ステップで完了しました。
もう一つの事例では、DSH を微信(WeChat)に接続し、要件の提示から実機での回答受信まで約 87.6 分、費用は約 18 元でした。このプロセスには SDK の調査、ゼロ依存クライアントの構築、モックサーバーの設定、本番環境のエンドポイントテスト、そして QR コードによるバインドが含まれています。
これらはユーザーの主観的な報告であり、ベンチマークとして扱うことはできません。しかし、非常に実用的な尺度を示しています。長時間タスクが完了したかどうかは半分だけの問題で、もう半分は「何分」「何ステップ」「どの程度のトークン数」を要し、「何回人間が介入したか」というコストの問題です。
実行自体は難しくないが、コンテキストの流入経路に課題がある
公式が推奨する最速の導入方法は npx @deepseek-ai/dsh web です。Node.js のバージョンは ^22.19.0 || >=24 が必要です。起動後は API Key を入力し、ワークスペースとエージェント Preset を選択するだけで利用可能です。
ソースコードからのインストールでは、pnpm やビルドプロセス、Git hooks などの設定が必要となるため、プラグイン開発の準備ができている人向けです。
ローカル環境で実際に確認できた 4 つの起動経路は以下の通りです。
- Web UI:ローカルワークスペースとセッションを正常に作成可能
- Headless モード:ワンショットタスクの実行が可能。成功時は最終回答のみを stdout に出力
- Python SDK:バンドルされたランタイムを搭載しており、システム上の Node 依存がない
- --dump-config コマンド:最終的なプラグインツリーを直接表示可能
デフォルト設定でも、構成を直接確認できます。
Web プロファイルでは 129 行のプラグイン設定が生成される一方、Headless モードでは 81 行に抑えられます。初期モデルは DeepSeek V4 Flash で、権限は workspace-write と ask が付与されています。これらのモードの違いは単なる UI の切り替えではなく、読み込まれるプロンプトやツールセットが実際に異なります。
System Prompt はログから復元可能です。
DSH(DeepSeek Shell)では、ランタイム中のリクエストをメモリ内に隠蔽していません。System prompt は、ペルソナ、ツールの説明、そしてプラグイン登録に関するプロンプトセクションを組み合わせて構成されます。リクエスト送信前には、request/header に system、model、temperature、max tokens、tools が記録され、request/context には provider とコンテキストウィンドウが記録されます。
公式の Python SDK で提供される最小限の構成(minimal composition)を見れば、この構造はより明確になります。ここではペルソナを「You are a helpful software engineer assistant.」という固定文に設定し、workspace プロンプト、Skills、コンパクション機能を無効化します。残るのは persistent bash と str_replace_editor のみです。モデルのプレフィックスが凍結されるため、ツール面によるノイズも大幅に減少します。
Trajectory(軌跡)の下には、追記のみ可能なイベントストリームが存在します。
セッションは zstd で圧縮された JSONL 形式で保存され、各レコードには統一された構造体が付与されます。
{"type": "tool/call", "seq": 31, "time": 1786632922876, "data": {}}ファイル書き込みタスクがローカルで実行された際、61 のイベントが発生しました。これには turn/start、3 つの step/start、ユーザーメッセージ、リクエストヘッダー、推論チャンク(reasoning chunks)、2 回の tool call / result、アシスタントからの応答、そして turn/end が含まれています。モデルはまず書き込みを行い、次に読み取りで確認し、最後に報告を行います。
このように Trajectory を利用することで、以下の 3 つの質問に同時に回答できます。
- モデルがその時点で何を「見て」いたか
- どのステップでどのツールを呼び出したか
- トークン数、キャッシュ状態、終了理由がどのように変化したか
4 文字の単純なタスクでも、最初のレスポンスだけで約 13,000 トークンを消費します。
DSH Headless のデフォルト設定を用いた最小限のテストでは、ユーザーからの指示は「PONG と返信して」のみでした。タスク自体は極めて短くても、初回のリクエストには約 13,467 トークンの入力トークンが含まれていました。
ログをさらに確認すると、この主要なオーバーヘッドの原因は、デフォルトで読み込まれるシステムプロンプト、ツールの説明、リポジトリのルール、そして Skill のサマリーにあることが分かりました。
テスト用ディレクトリは大規模なリポジトリ内部に配置されています。DSH は直近の .git ディレクトリを検出してリポジトリのルートを見つけ、AGENTS.md と CLAUDE.md を注入します。さらに、ユーザーのスキルディレクトリにある 27 件のサマリーもスキャンされます。
ファイル書き込みタスクの後のステップでは、約 13,000 トークンのキャッシュ読み取り(cache-read token)が発生しました。これらの固定されたプレフィックスがキャッシュに保存されることは、それらが実際にモデルへのリクエストに含まれていたことを示しています。
今後はベンチマークや機密性の高いプロジェクトを評価する際、独立した Git ルートを使用し、明示的に DSH_HOME と DSH_AGENTS_HOME を設定するようにします。また、モデル比較を行う際は minimal composition を採用することで、コンテキストをよりクリーンに整理できるようにしています。
図 2:標準、PTC、ミニマル、クリエイティブの 4 つのプリセットは、それぞれ異なるプラグインの組み合わせに対応しています。
標準モードでは、日常の開発タスクを直接処理できるよう、包括的なコーディングツールが提供されます。PTC モードはこの基盤に加え、TypeScript を用いて複数のツール操作を多段階で連携させる機能を追加します。ミニマルモードは bash とテキストエディタのみを残し、クリエイティブモードにはランタイムチェックやプラグインの実験、カスタム Preset の作成に必要な機能が加わります。
同じ「Kimi K3」モデルでも、Harness を切り替えると何が起きるのか?
Kimi Code と DeepSeek Harness はどちらも中国発で MIT オープンソースのコーディングエージェント(または Harness)であり、複数のモデルを接続可能です。しかし、両者の出発点は異なります。
- 比較項目:DeepSeek Harness / Kimi Code CLI
- 公式の位置づけ:再構成可能な Agent runtime / 箱を開けて使えるターミナル型コーディングエージェント
- メインエントリーポイント:Web、Headless、Python SDK、ACP / TUI、-p、ACP、Web
- 拡張方法:Cordis Plugin、Preset、Patch、Skills、Hooks、MCP / Plugins、Skills、Hooks、MCP、Subagents
- Agent Loop の実装:プラグインとして登録され、アーキテクチャ上で置き換え可能 / v2 DI の Agent-scope Service に組み込まれ、ソースコードは公開されているが固定エンジンの一部
- デフォルトモデル:DeepSeek(他社プロバイダーとして pi-ai も利用可能) / Kimi(互換性のあるプロバイダーもサポート)
- デフォルトツール:標準モードで約 25 項目。ファイル操作、Shell、タスク管理、サブエージェント、ワークフロー、Web ブラウジングを含む / Read、Write、Edit、Grep、Glob、Bash、Web、Todo、Task/Subagent など
- 権限設定:read-only / workspace-write / danger-full-access / 通常承認、yolo(全権限)、自動実行
- 可観測性:Session Event、Trajectory、token/cache、プログラマブルな投影 / stream-json、セッションエクスポート、kimi vis
- インストール形態:npm 利用には Node 22.19+ が必要 / 公式の単一ファイル配布では Node が不要(npm 版は Node が必要)
Kimi Code CLI のリポジトリ自体もオープンソースです。両者ともオープンソースですが、違いはランタイムの構成方法にあります。Kimi Code は拡張機能を一つのターミナル製品を中心に囲むように設計されていますが、DSH(DeepSeek Harness)はループ、プロバイダー、セッション、UI をすべて同じプラグイン組み合わせモデルの中に統合しています。
公開されたフィードバックでは、「同じモデルでも Harness を変えれば出力が変わる」という意見が一般的ですが、タスク内容、権限設定、コンテキストの維持状況については必ずしも一致していません。そこで今回は、Kimi K3 の API、プロンプト、ワークスペース、そして隠れた検証基準をすべて固定した上で、両製品がいかに同じタスクを完了させるかを比較します。
- モデルは統一して kimi-k3 を使用
- プロンプト、タスクテンプレート、隠れ検証基準は同一
- 毎回新しい Git ワークスペースと空のスキルディレクトリを使用
- DSH は公式のミニマルツールセットを利用
Kimi Code 使用 0.35.0 の非対話モード
各問題には実行が一度きりであるため、ここでは実行軌跡のみを確認します。
あえて違いを残した箇所があります。DSH は「minimal」構成で、persistent bash と str_replace_editor のみを利用可能です。一方、Kimi Code はデフォルトのツールセットを使用しています。これはどちらがツールが少ないかを比較する意図ではなく、2 つの Harness が同じモデルをどのように異なる実行パスへ誘導するかを観察するための設定です。デフォルト製品としての能力を比較したい場合は、DSH の「standard」構成でもう一度テストを行う必要があります。
出題された 2 つの問題は、「依存関係のバッチ計画」と「セッションイベントの投影」です。各問題には 7 つの公開テストと、8 つのモデルがアクセスできない隠しテストが含まれています。
- タスク:Harness / 合格数 / 所要時間 / 軌跡単位 / ツール呼び出し
- 依存関係の計画:DSH minimal / 15 / 15 / 112.2 秒 / 9 step / 11
- 依存関係の計画:Kimi Code / 15 / 15 / 48.9 秒 / 4 条 assistant メッセージ / 5
- セッションの投影:DSH minimal / 15 / 15 / 111.3 秒 / 7 step / 7
- セッションの投影:Kimi Code / 15 / 15 / 123.1 秒 / 5 条 assistant メッセージ / 6
正答率に差は見られませんでした。両方の Harness で 4 つの軌跡すべてが 15/15 の完全合格を記録しています。第 1 問では Kimi Code が約 1 分早く完了しましたが、第 2 問では DSH が約 12 秒速く、速度において安定した勝者はいませんでした。
しかし、プロセスの違いはより明確です。
Kimi Code は初回実行で README、ソースコード、テストファイルを並列して読み込み、その後ファイル全体を一度に書き換え、最後に Bash で検証を行いました。依存関係の計画にはツール呼び出しが 5 回のみでした。デフォルトのツールセットが豊富であることと、システムプロンプトが「いかに早くコーディングタスクを完了するか」に焦点を当てていることが影響しています。
一方、DSH minimal は persistent bash と str_replace_editor の間を行き来する形が中心です。依存関係の計画には 11 回のツール呼び出しが必要で、ステップはより細かく分割されています。その代わり、モデルの前綴(プレフィックス)やツールの構成、リクエストログを凍結しやすく、セッションログでは完全なリクエスト、ツール、使用量イベントが記録されます。
Kimi Code の stream-json は今回の実行ではトークン使用量を返さなかったため、コスト比較は行いません。DSH については、2 つの問題でそれぞれ入力トークンが 7,593 / 5,082、キャッシュ読み取りトークンが 22,515 / 18,632 を記録しています。
同じ Kimi K3 モデルが最終的に両方の問題をクリアしましたが、そのアプローチは明確に異なります。Kimi Code はすでに調整済みの完成品といった印象です。一方、DSH minimal は前綴の凍結やツール・プロバイダーの差し替えを容易にし、実験の再現性を高めます。
日常のターミナルコーディングが目的であれば、Kimi Code のインストールとデフォルト設定の方が手軽です。しかし、コンテキストの研究、プロバイダーの交換、ドメイン固有エージェントのカスタマイズ、あるいは実験の再現を目指すのであれば、DSH のプラグインツリーとイベントログの方が適しています。
ソースコードレベルでの違いは?
前述の実行軌跡の違いは、ソースコードレベルで 3 つの対応関係として確認できます。
1つ目は「Agent Loop」です。Kimi Code は現在デフォルトで v2 エンジンを採用しており、ループ処理、ツールスケジューリング、コンテキスト管理を DI(依存性注入)サービスとして構成しています。Plan や Swarm などの機能は必要に応じて注入可能です。
一方、DSH では ReactLoopAgent そのものを Cordis プラグインとして登録します。ループとモデルプロバイダー、ツールなどのサービスはすべて同じインストール・アンインストール方式で扱われます。
Kimi Code の重心は「拡張可能なターミナルエージェント」の提供にあり、DSH は開発者による改造範囲をより広く残しています。エージェントがどのようにループ処理を行うかさえも置き換え可能です。
2 つ目のグループは会話履歴です。
Kimi Code v2 は wire.jsonl を通じてエージェント境界でのイベントを保存し、DSH もセッションイベントを用いて状態の復元と画面駆動を行います。DSH にはさらに「モデルが認識する内容は必ずログに記録されていること」というランタイム上の制約が追加されています。これこそが、Trajectory がリクエスト、ツール呼び出し、トークン数の変化を正確に再現できる理由です。
3 つ目のグループはツールと実行環境です。
Kimi Code は Agent Profile でツールの利用範囲を制御し、KAOS を介してローカル環境と SSH 環境を抽象化します。一方 DSH は Preset で使用するツールとプロンプトを決定し、ファイルシステム、サブプロセス、サンドボックスをそれぞれ交換可能なサービスとして分離しています。
両者ともモデルや実行場所の差し替えが可能ですが、DSH は特に「基盤となるこれらのサービスを切り替える際にも、上位層のツールは変更しない」という点を強調しています。
つまり、両プロジェクトにはプラグイン、イベントログ、環境抽象化という共通点がありますが、違いは開放性のレベルにあります。Kimi Code は端末でのコーディング体験を最優先し、DSH はより多くのランタイム部品を開発者に委ねて再構築させます。これが、同じ Kimi K3 モデルが両方の環境で課題をクリアできても、実行ステップやログの形式が明確に異なる理由です。
同一の V4 Pro を用い、2 つの Harness がそれぞれ「ジャンプゲーム」を開発
これまでの小規模なテストではツールの軌跡を確認するにとどまり、Harness が最終的な成果物にどう影響するかを十分に観察できませんでした。今回は deepseek-v4-pro API、プロンプト、および验收基準を固定し、DSH と Kimi Code にそれぞれ独立した作業環境で「ジャンプゲーム」の独自開発を依頼しました。
このタスクは単に Web ページを描画するだけではありません。プレイヤーはマウス、タッチ操作、そしてスペースキーによるチャージで跳躍でき、プラットフォームとの衝突判定、Perfect ボーナス、コンボシステム、失敗とリトライ機能を実装する必要があります。また、ゼロ依存の Node.js バックエンドを備え、ランキング表示、統計機能、JSON 形式での永続化、入力値の検証、パス保護を提供し、決定論的なテスト用インターフェースも用意しなければなりません。VISTA のアプローチを参考に、最終的な验收ではコードテスト、実際のブラウザ上での動作、そして視覚的な表現のすべてを確認します。
まず結果を見てみましょう。Kimi Code はフルスクールの 2.5D ブロック舞台を作成し、DSH は 2D の横スクロールキャンバスに、右側にランキングと操作説明を配置したデザインを採用しました。
図 3:同一モデル・同一プロンプトによる最終ゲーム画面。左側が Kimi Code、右側が DSH の成果で、いずれも実際のブラウザ実行環境から撮影。
Kimi Code 版と DeepSeek Harness 版の両方を直接ブラウザで体験できます。どちらのページもフロントエンド単一ファイル構成のため、ゲーム自体はそのまま動作します。ただしランキングや統計機能を利用するには、別途 Node.js バックエンドを用意する必要があります。
私も実際に数回プレイしましたが、両バージョンとも単に起動するだけでなく、チャージ、着地、連続ジャンプといった基本的な操作感も十分に備わっています。Kimi Code 版は舞台の臨場感が強く、DSH 版は情報表示領域が充実した Web ゲームという印象です。
両 Harness はフロントエンド、バックエンド、ランキングの永続化、自動テストをすべて完了しましたが、そのプロセスは異なります。DSH は 3 つのセッションに分けて実行され、合計約 25 分、85 ステップ、96 回のツール呼び出しを行い、19 項目の後端テストを提出しました。一度中断した後も、約 880 行に及ぶゲームロジックとブラウザの Smoke Test を自動的に補完して完了させています。
Kimi Code の初回生成には約 14 分 30 秒を要し、2 回の修正を含めると合計 21 分で完了しました。最終的に 17 件のバックエンドテストが交付されています。初版ですでに 2.5D の視覚スタイルは完成しており、その後の実ブラウザフィードバックに基づいて updateHUD の呼び出しやマスクレイヤーの表示問題などが修正されました。
今回の検証から得られた印象を三点挙げます。
第一に、同じモデルと同一のプロンプトを用いても、最終的に異なる二つのプロダクトが生まれました。Kimi Code はフルスクリーンのゲーム体験に寄せていますが、DSH はランキングや説明エリアを含む完成度の高いページへと進化しています。小サンプルではこれが安定した傾向であるとは断言できませんが、Harness が生成物の方向性を形作る要因の一つとなっていることは確かです。
第二に、両者とも 20 分程度のタスクを処理できる能力を持っています。バックエンドとフロントエンドの双方があり、テストも含まれ、途中で修正が必要なケースにも対応可能です。DSH の固定物理ステップサイズやシード付き擬似乱数生成器(PRNG)、原子書き込み機能、そして Kimi Code の 2.5D ステージと完全なインタラクションは、単発のページデモを超えたレベルにあります。
第三に、両者とも「モデル自身のテストは通過したが、実ブラウザでは失敗する」という事象が発生しました。DSH ではキャンバスのバックストアサイズが誤っており、画面には空だけが表示される状態でした。Kimi Code はまず関数の所属に関するエラーに直面し、その後 CSS によって hidden属性 が上書きされる問題が発生しました。これらの問題は V4 Pro にフィードバックされたことで修正され、それぞれのブラウザテストにも回帰チェックが追加されました。
この共通する失敗こそが最も記憶に残るべき点です。エージェントが作成したテストは、実装側と同じ盲点を共有しやすいものです。Harness は完全な実行軌跡を保持し、モデルの継続的な修正を支援できますが、最終的には独立したブラウザや外部検証、そして人間による手動プレイを通じて、プロダクトが実際に使えることを確認する必要があります。
DSH が他のモデルも駆動可能
DSH には DeepSeek の直接接続用アダプターと、pi-ai ベースのマルチプロバイダーアダプターの両方が用意されています。本機では Kimi K3、GPT-5.6 Sol、Claude Opus 4.8 をそれぞれ使用し、ファイルの書き込み、読み戻し、ツール呼び出しを完了しました。
このスモークテストは、プロバイダー、OpenAI 互換メッセージ形式、SSE、およびツールプロトコルが機能することを示すものであり、三つのモデルを比較するものではありません。実際の導入では、テキスト生成、ストリーミング、ツール呼び出し、エラーマッピング、長接続のそれぞれについて個別に検証を行うべきです。
これらの体験はソースコードのどこから来るのか
本リポジトリは TypeScript のモノレポ構成を採用しています。その構造を大まかに以下のように層化して捉えることができます。
deepseek-harness/
├── apps/cli + apps/web 命令行とブラウザの入口
├── packages/boot + bundle プロファイルとプラグインツリーの構築
├── packages/core/
│ ├── agent-loop ターン/ステップ駆動
│ ├── session 追加式イベントログ
│ ├── tools ツール登録と実行
│ └── system-prompt プロンプト断片の組み立て
├── packages/preset 各セッションごとのエージェント構成
├── packages/llm DeepSeek と複数プロバイダーへの対応
├── packages/fs + sandbox 交換可能な実行環境
├── packages/code-runtime PTC / Code Mode
└── vendor/cordis プラグインライフサイクルの基盤
この図で DSH(DeepSeek Harness)の技術スタックがわかります。Cordis がプラグインのライフサイクルとサービス依存関係を管理し、その上で DSH はエージェント領域におけるセッション、ループ、ツール、LLM、サンドボックス、UI を定義します。KM のランタイム分解については、Fiber、Preset、Code Mode、そしてツールの遮蔽(シャドウイング)に対するより詳細なソースコードマッピングが存在しますが、ここではユーザー体験に直結する 5 つのポイントに絞って解説します。
「すべてがプラグイン」である理由は、Cordis が持つ可逆的なライフサイクルにあります。
コードの入口は vendor/cordis/src/context.ts、fiber.ts、そして service.ts にあります。
プラグインは inject を通じて依存するサービスを宣言します。依存サービスがまだ存在しない場合、Fiber は PENDING(待機中)状態になります。サービスが提供されると ACTIVE(アクティブ)状態へ移行し、提供者が退出する際には、まず依存コンポーネントをアンロードしてから、自身で effect を回収します。
サービスやリスナー、タイマーの登録を行う際は、必ず disposer(解放関数)を ctx.effect() に渡す必要があります。アンロード時には逆順でクリーンアップを行います。このメカニズムこそが、Agent Loop を単なるプラグインとして扱える前提条件です。つまり、このような大規模なコンポーネントの読み込み、依存関係管理、そして退出処理を基盤レベルで制御できるからこそ実現されています。
ただし、この仕組みにも明確な限界があります。外部ファイルやネットワークメッセージ、すでに発生した業務アクションは自動的にロールバックされません。また、依存注入(DI)が悪意あるコードに対するサンドボックスの代わりになるわけではありません。
Profile と Preset はそれぞれプロセスとセッションを制御します。
コードの入口は packages/boot/app-boot/src/profile.ts および packages/preset/agent-presets/src/ にあります。
Profile は空リストからスタートし、bundle を積み重ねていきます。その後、profile、home、そしてコマンドラインのパッチが適用されます。これにより、Web 版と Headless 版は異なるプラグインツリーとして構築されます。dsh --profile web --dump-config コマンドも同じパッチアルゴリズムを使用して最終結果を出力するため、設定の表示ロジックと実際の起動ロジックで別々の仕組みを採用しているわけではありません。
Preset は、特定のセッションで利用可能なツール、プロンプト、および投影ユニット(ビューコンポーネント)を決定します。同じプロセス内で standard、minimal、あるいはドメイン特化型エージェントを同時に実行することも可能です。例えば、Data Agent では sqlcmd を使用して bash を置き換えていますが、これはまさにこのスコープ制御が製品レベルで実装された事例です。
モデルが見ている内容は、必ずログから再構築可能である必要があります。
コードの入口は packages/core/agent-loop/src/agent.ts、invariant.ts、および packages/core/session/src/ にあります。
各リクエストはセッションから派生したメッセージとして処理されます。送信前に不変条件(invariant)が再チェックされ、現在のリクエストと session.deriveMessages() の結果、およびモデル、システムプロンプト、温度設定、最大トークン数、ツール構成が一致しているか確認されます。
const expected = session.deriveMessages()
if (JSON.stringify(options.messages) !== JSON.stringify(expected)) {
fail('log-reconstruction desync')
}この制約により、Trajectory の明確性が保たれ、フォークや復元、UI 操作が同じイベントストリームを共有できる理由も説明されます。さらに重要なプライバシー上の意味合いもあります。コンテキストがモデルに注入されると、同時にログやデータ境界にも流れ込んでしまうのです。
Capability Seam:ツールと実行環境の分離
コードのエントリーポイントは packages/fs/fs/src/types.ts、fs-local/、fs-sandbox/、そして tool-str-replace-editor/ です。
ファイルシステムはまず FileSystem 型、非公開ターゲット(opaque target)、バージョン定義を設け、その後ローカルまたはサンドボックスプロバイダーが実装します。最後に読み取り、書き込み、編集ツールがこれを利用します。ファイルやサブプロセスのプロバイダーをリモート沙箱へ移行しても、上位層のツールはフォークする必要がありません。
書き込み機能には createIfAbsent や replaceIfVersion といったオプションも用意されています。モデルがファイルを読み込んだ後、もしそのファイルが他者によって更新されていれば、プロバイダーは古いバージョンでの上書きを拒否できます。これにより並行処理の安全性はツール層ではなく、より下位のレベルで担保され、各編集ツールが個別に実装する必要がなくなります。
PTC:コードによるツール往復の削減
コードのエントリーポイントは packages/code-runtime/ です。
PTC(Programmatic Tool Composition)では、モデルが TypeScript コードを記述して複数のツール呼び出しを組み合わせます。このプログラムは worker_threads 内で実行され、ツールへのリクエストはメッセージチャネルを通じてホストへ戻されますが、依然として同一の「事前実行・承認・スケジューリング・事後実行」というパイプラインを経由します。
中間データは実行環境内に保持できるため、各ステップでモデルのコンテキストにデータを埋め込む必要がありません。これは単に「モデルがコードを書ける」ことよりも重要な利点です。ただし代償として、モデル生成コードの実行には追加の隔離が必要となり、worker は完全なセキュリティ境界ではないという課題も残ります。
現在、誰が時間を割くべきか
Agent インフラストラクチャを構築する開発者は、今すぐ確認すべきです。DSH(DeepSeek Harness)はループ、セッション、プロバイダー、ツール、UI をすべて検証可能なソースコードとして公開しています。
ドメイン特化型 Agent のチームは小規模な実験を行う価値があります。minimal または standard プリセットをコピーし、そこから不要なツールを削除したりプロバイダーを差し替えたりする方が、ワークフロー全体を移行するよりも効果を検証しやすいでしょう。
モデル評価担当者には「最小構成(minimal composition)」の利用が推奨されます。これにより、モデルバージョン、推論設定、エンドポイント、外部検証条件を同時に固定できます。
単に日常のコーディングツールを探しているだけの方は、現状は様子見でも構いません。Kimi Code、Claude Code、Codex などの製品は、ターミナル体験、デスクトップ入口、IDE 統合、デフォルトワークフローにおいて、より成熟した状態にあります。
本番環境への導入には、自社のガバナンス体制を補完する必要があります。プラグインのソース管理、設定差分の確認、認証情報の境界設定、Windows での検証、ログ保持期間、データ外部送信の制限など、すべてデプロイ担当者が責任を持って実装しなければなりません。
もしチームが独自の Harness を設計中なら、以下の3つの問いを胸に置いてください。
- 実行時に最終的に何を読み込むのか? 単一の命令で出力できるか?
- モデルが実際に何を「見た」のか? ログから完全に再構築可能か?
- ファイルシステム、沙箱、またはモデルプロバイダーを差し替えた際、どのツールの変更が必要になるか?
DSH はこれら3つの問いに対し、「動作し、検証可能な回答」を提供しています。デフォルト製品やプラグインの品質、ガバナンス機能がこのアーキテクチャに追いつけるかどうかは、次の段階で問われる課題です。
資料まとめ
公式情報とソースコード
DeepSeek Harness のソースコード
中国語版アーキテクチャドキュメント
Python SDK を使った最小限の Agent ガイド
Cordis のソースコード
時空の組み合わせ可能性に関する論文
V4 Pro 0813 モデルカード
Kimi Code CLI のソースコード
ユーザーフィードバックと方法論
知乎での目標質問
一週間の内部テストと 89 ステップの競合タスク
デフォルトツールとトークン消費量の試算
WeChat 記録への接続に要した 87.6 分
Data Agent のプリセット実践
VISTA 視覚 Web アプリベンチマーク
ローカルでの再現資料
基本結果 working/eval/results.md
Kimi K3 との比較 working/cross-model/harness-compare/
Kimi Code ソースコードのスナップショット working/kimi-code/
複数モデルのサニティチェック working/cross-model/compat/
V4 Pro のジャンプゲームケース working/jump-game/workspace/
知乎からのフィードバック抜粋 working/eval/zhihu-feedback.md
KM 画像と HTML アタッチメント output/attachments/
すべての数値は、2026-08-14 にローカルマシンで実行した単一結果を基準としています。
📦 完全な再現資料の入手方法:
「腾讯技术工程」公式アカウントをフォローし、バックヤードでキーワード「deepseek」と送信してください。すると、資料が受け取れます。
WeChat で開くにはこちらへ
原文を表示
腾讯技术工程 2026-08-15 09:30 广东
image
DeepSeek-V4-Pro 正式版上线当天,DeepSeek Harness 也开源了
image
作者:osli元宝产品经理;相关团队:元宝产品中心、元宝模型工程中心、元宝大模型应用算法中心
DeepSeek-V4-Pro 正式版上线当天,DeepSeek Harness 也开源了。之前注册Deepseek Harness公众号已经吵闹过一阵。V4 Flash 发布报告的模型卡里只漏过一句 DSH,外界却已经猜测了很久,可谓期待值拉满了。
源码摊开以后,预期和实物略有点对不上号。很多人等的是 DeepSeek 版 Codex。当前开源的这套东西更像还能继续造 Agent 的 runtime。Web coding agent 有,Headless、Python SDK、ACP 和 JSON-RPC 也有。模型、工具、会话、权限、沙箱、Agent Loop 和 UI,都可以拆开再装。
我第一时间基于开源仓库,在本机把 npm、Web、Headless 和 Python SDK 都跑通了,拆开默认配置和 session log,又拿同一个 Kimi K3 对照 DSH 与 Kimi Code,最后让 V4 Pro 连续做一条带视觉产物的复杂任务。
跑完以后总体印象是:DSH 现在更像是一个开放的 Agent 平台脚手架,默认产品还带着预览版的毛边,留待社区的打磨。一切皆插件的理念挺新颖,Trajectory 的源码设计口碑不错,值得学习。
图 1 按插件树、可替换能力和追加式事件流绘制的概念图。该图由图像模型生成,不是产品界面。
DSH 仍处于 Developer Preview。文中数字来自单次本机运行和公开用户反馈,用来看差异和边界,不做产品排名。
社区从一开始就在看两样东西
知乎问题《如何评价在 8 月 13 日发布的 DeepSeek Harness》下的反馈,大致分成两组。
一组用户等的是成熟 coding agent。他们关心桌面 App、终端体验、Windows、缓存命中、日常编码效果,以及官方 Harness 能不能把 V4 Pro / Flash 再抬一截。
另一组内测者盯着插件、Preset、Trajectory 和运行时自修改。他们看见的是一个可以继续开发 Agent 的平台。
两边都没看错。DSH 同时有这两个身份,完成度却不对称。runtime 已经很开放,默认产品体验还没追上 Claude Code、Codex、Kimi Code。
最稳的好评是 Trajectory
段小草把 Trajectory 比作 Agent 的 DevTools。时间轴、每轮请求和日志都能看见,查上下文压缩、Skill 过多和模型犯错时很有用。
卜寒兮也特别提到运行信息面板。缓存命中、输入 / 输出 token 和 token 速度都直接显示出来。
这件事和源码对得上。DSH 要求模型看见的内容必须已经记进日志,Trajectory 直接从 session event log 投影。它没有另埋一套监控数据,所以看见的轨迹更接近模型当时收到的真实请求。
插件值钱的地方,是把 Agent 收窄
社区早期插件里有不少换肤和整活,更值得看的是领域 Agent。
Kitt 在进化分享的 Data Agent 只保留 read、edit、write,再用 sqlcmd 替换 bash。模型围着数据库执行结果转,同时不再带着和数据分析无关的工具与上下文。
这个例子把 Plugin 和 Preset 的分工讲清楚了。插件提供新能力,Preset 决定某类 Agent 能看见哪些能力。DSH 真有生产价值时,往往落在删掉什么、替换什么。继续堆工具,只会多耗 token,也让模型更难选。
长任务能跑,账单也要一起看
Adam Platin自述用一周内测版管理机器学习竞赛。Agent 读规则、跑脚本、推进实验并调用浏览器,89 步后收尾。
瓜子脸帅哥给出了另一条时间线。DSH 将 Agent 接入微信,从需求到真机收到回复约 87.6 分钟,花费约 18 元。过程包含 SDK 调研、零依赖客户端、mock server、真实端点冒烟和扫码绑定。
这两条都是用户自述,不能当 benchmark。它们仍然给出一个很实用的尺度。长任务是否做完只是一半,另一半是花了多少分钟、多少 step、多少 token、几次人工接管。
跑通不难,麻烦在上下文从哪进来
官方最快的路径是 npx @deepseek-ai/dsh web。Node 需要 ^22.19.0 || >=24,启动后填写 API Key、选择工作区和 Agent Preset 就能用。源码安装还会碰到 pnpm、构建和 Git hooks,更适合准备开发插件的人。
本机实际跑通了四条入口。
Web UI 能正常创建本地工作区与会话
Headless 能执行一次性任务,成功时只向 stdout 输出最终回复
Python SDK 自带捆绑运行时,不依赖系统 Node
--dump-config 可以直接打印最终插件树
默认配置也能直接核对。Web profile 组装出 129 行插件配置,Headless 为 81 行。默认模型是 DeepSeek V4 Flash,权限是 workspace-write + ask。不同模式不是界面开关,它们加载的提示词和工具集合确实不同。
System Prompt 可以从日志还原
DSH 没有把运行时请求藏在内存里。System prompt 由 persona、工具说明和插件注册的 prompt sections 拼起来。发请求前,request/header 会记下 system、model、temperature、max tokens 与 tools,request/context 记下 provider 和 context window。
官方 Python SDK 的 minimal composition 更容易看清这个结构。它把 persona 固定成一句 You are a helpful software engineer assistant.,关掉 workspace prompt、Skills 与 compaction,只留下 persistent bash 和 str_replace_editor。模型前缀被冻住了,工具面带来的干扰也少很多。
Trajectory 底下是一条只能追加的事件流
会话以 zstd 压缩 JSONL 保存,每条记录都有统一外壳。
{"type": "tool/call", "seq": 31, "time": 1786632922876, "data": {}}一次写文件任务在本机产生 61 条事件。里面有 turn/start、三个 step/start、用户消息、请求头、reasoning chunks、两次 tool call / result、assistant message 和 turn/end。模型先 write,再 read 核对,最后汇报。
所以 Trajectory 能同时回答三类问题。
模型当时看见了什么
哪一步调用了哪个工具
token、缓存和结束原因怎样变化
四个字母的任务,首包也能吃掉一万三Token
我用 DSH Headless 的默认配置做了一次最小测试,用户指令只有“回复 PONG”。尽管任务很短,首轮请求仍包含约 13,467 个 input token。继续检查日志后发现,主要开销来自默认加载的系统提示、工具说明、仓库规则和 Skill 摘要
测试目录位于一个大仓库内部。DSH 沿最近的 .git 找到仓库根,注入了 AGENTS.md / CLAUDE.md,又扫到用户技能目录里的 27 条摘要。写文件任务后续 step 出现约 1.3 万 cache-read token。这些固定前缀进了缓存,也说明它们确实进了模型请求。
后来评测和敏感项目,我都会换独立 Git 根,显式设置独立的 DSH_HOME 与 DSH_AGENTS_HOME。比较模型时用 minimal composition,这样才能够把上下文整理的干净一点。
图 2 标准、PTC、极简、创造四种预设对应不同插件组合。
标准模式提供完整的编码工具,适合直接处理日常开发任务。PTC模式在此基础上允许模型用 TypeScript 组合多步工具操作,极简模式只保留 bash 和文本编辑器,创造模式则增加运行时检查、插件实验和自定义 Preset 所需的能力。
同一个 Kimi K3,换 Harness 后发生了什么
Kimi Code 与 DeepSeek Harness 都是国产、MIT 开源、可接多模型的 coding agent / Harness。两边的出发点并不相同。
维度
DeepSeek Harness
Kimi Code CLI
官方定位
可重新组装的 Agent runtime
开箱即用的终端 coding agent
主要入口
Web、Headless、Python SDK、ACP
TUI、-p、ACP、Web
扩展方式
Cordis Plugin、Preset、Patch、Skills、Hooks、MCP
Plugins、Skills、Hooks、MCP、Subagents
Agent Loop
作为插件注册,架构上可替换
v2 DI 中的 Agent-scope Service,源码开放但属于固定引擎主干
默认模型
DeepSeek,另有 pi-ai 多 Provider
Kimi,支持兼容 Provider
默认工具
标准模式约 25 项,含文件、Shell、任务、子代理、工作流、网页
Read、Write、Edit、Grep、Glob、Bash、Web、Todo、Task / Subagent 等
权限
read-only / workspace-write / danger-full-access
常规审批、yolo、auto
可观测性
Session Event、Trajectory、token / cache、可编程投影
stream-json、session export、kimi vis
安装形态
npm 需要 Node 22.19+
官方单文件分发无需 Node,npm 安装另需 Node
Kimi Code CLI 的仓库本身也是开放的。两边都开源,差别在运行时怎么组织。Kimi Code 把可扩展能力围着一套终端产品转,DSH 把 loop、provider、session 和 UI 都放进同一种插件组合模型。
公开反馈普遍认为同模型换 Harness 会改变产物,但任务、权限和上下文经常没有保持一致。这里固定 Kimi K3 API、提示词、工作区与隐藏验收,看两套产品怎样完成相同任务。
模型统一使用 kimi-k3
提示词、任务模板和隐藏验收相同
每次使用全新 Git 工作区与空技能目录
DSH 使用官方 minimal 工具面
Kimi Code 使用 0.35.0 非交互模式
每题只有一次运行,因此只看轨迹
有一处我故意留了不同。DSH 使用 minimal,只暴露 persistent bash 与 str_replace_editor。Kimi Code 使用默认工具。这样不适合比较谁的工具更少,适合观察两套 Harness 怎样把同一个模型引向不同执行路径。若要比较默认产品能力,还得用 DSH standard 再跑一轮。
两道题分别是依赖批次规划与会话事件投影。每题有 7 个公开测试、8 个模型看不见的隐藏测试。
任务
Harness
验收
时间
轨迹单位
工具调用
依赖规划
DSH minimal
15 / 15
112.2 秒
9 step
11
依赖规划
Kimi Code
15 / 15
48.9 秒
4 条 assistant 消息
5
会话投影
DSH minimal
15 / 15
111.3 秒
7 step
7
会话投影
Kimi Code
15 / 15
123.1 秒
5 条 assistant 消息
6
正确性没有拉开。两边四条轨迹全部通过 15 / 15。第一题 Kimi Code 快约一分钟,第二题 DSH 快约十二秒,速度没有稳定赢家。
过程差得更清楚。
Kimi Code 首轮并行读取 README、源码和测试,随后整文件 Write,再用 Bash 验证。依赖规划只用了 5 次工具调用。它的默认工具更丰富,系统提示也更偏向尽快完成一个编码任务。
DSH minimal 主要在 persistent bash 与 str_replace_editor 之间来回走。依赖规划用了 11 次工具调用,步骤更碎。换来的是模型前缀、工具面和请求日志更容易冻住,session log 还给出完整 request、tool 与 usage 事件。
Kimi Code 的 stream-json 在本轮没有返回 token usage,因此不比较成本。DSH 两题分别记录 7,593 / 5,082 input token,以及 22,515 / 18,632 cache-read token。
同一个 Kimi K3 最终都过题,走法已经明显不同。Kimi Code 更像已经调好的成品。DSH minimal 更容易冻住前缀、换掉工具和 provider、把实验复现出来。
如果目标是日常终端编码,Kimi Code 的安装和默认工具更省事。如果目标是研究上下文、替换 provider、定制领域 Agent 或复现实验,DSH 的插件树与事件日志更好用。
源码层面,差别落在哪里
前面的轨迹差异,在源码里可以找到三组对应关系。
第一组是 Agent Loop。Kimi Code 当前默认使用 v2 引擎,把循环、工具调度和上下文管理组织成一组 DI Service,Plan、Swarm 等功能可以按需注入。DSH 则把 ReactLoopAgent 本身注册成 Cordis 插件,Loop 与模型 Provider、工具等服务采用同一种装卸方式。Kimi Code 的重心是一款可扩展的终端 Agent,DSH 留给开发者的改造范围更大,连 Agent 怎样循环都可以替换。
第二组是会话记录。Kimi Code v2 通过 wire.jsonl 保存 Agent 边界上的事件,DSH 也用 Session Event 恢复状态和驱动界面。DSH 还增加了一条运行时约束,模型看见的内容必须已经写进日志。这就是 Trajectory 能还原请求、工具调用和 token 变化的原因。
第三组是工具与执行环境。Kimi Code 用 Agent Profile 控制工具范围,再通过 KAOS 抽象本地与 SSH 环境。DSH 用 Preset 决定工具和提示词,再把文件系统、子进程和 sandbox 拆成可替换服务。两边都能换模型和执行位置,DSH 更强调更换这些底层服务时,上层工具保持不动。
所以,两套项目都有插件、事件日志和环境抽象,差别主要在开放到哪一层。Kimi Code 优先把终端编码体验调好,DSH 则把更多运行时部件交给开发者重新组合。这也解释了同一个 Kimi K3 在两边都能过题,执行步骤和日志形态却明显不同。
同一个 V4 Pro,两个 Harness 各做一款跳一跳
前面的两道小题适合看工具轨迹,还不足以观察 Harness 怎样影响完整产物。这一轮固定 deepseek-v4-pro API、Prompt 和验收要求,让 DSH 与 Kimi Code 在两个独立工作区里各做一款原创跳一跳游戏。
任务不只要求画出一个网页。玩家要能用鼠标、触摸和空格蓄力起跳,游戏要处理平台碰撞、Perfect 奖励、连击、失败与重开。项目还要带一个零依赖 Node.js 后端,提供排行榜、统计、JSON 持久化、输入校验和路径防护,并留下确定性测试接口。参考 VISTA 的思路,最终验收同时看代码测试、真实浏览器行为和画面。
先看最终结果。Kimi Code 做成了全屏 2.5D 方块舞台,DSH 做成了 2D 横向画布,右侧放排行榜和操作说明。
图 3 同一模型、同一 Prompt 的最终游戏界面。左侧为 Kimi Code,右侧为 DSH,均来自真实浏览器运行态。
读者可以直接打开 Kimi Code 版本 和 DeepSeek Harness 版本 体验。两个页面均为前端单文件版本,游戏可以直接运行;排行榜与统计功能仍需配套 Node 后端。
我自己也各玩了几局。两个版本都不只是能打开,蓄力、落点和连续跳跃已经有了小游戏该有的手感。Kimi 版的舞台感更强,DSH 版更像一个带完整信息区的 Web 游戏。
两套 Harness 都完成了前端、后端、排行榜持久化和自动测试,过程却不一样。DSH 分三段 session 完成,合计约 25 分钟、85 个 step 和 96 次工具调用,交付 19 项后端测试。第一次运行中断后,它能够接着补齐约 880 行游戏逻辑和浏览器 smoke test。
Kimi Code 初次生成约 14 分 30 秒,算上两轮修复约 21 分钟,交付 17 项后端测试。它的初版已经有完整的 2.5D 视觉风格,后续根据真实浏览器反馈修复了 updateHUD 调用和遮罩层显示问题。
这次评测留下三点印象。
第一,同一个模型和同一份 Prompt,最终仍然长成了两种产品。Kimi Code 更偏向全屏游戏体验,DSH 更偏向带排行榜和说明区的完整页面。小样本无法证明这是稳定倾向,但足以说明 Harness 会参与塑造产物。
第二,两边都能承载二十分钟左右、有前后端、有测试、需要中途修复的任务。DSH 的固定物理步长、seeded PRNG 和原子写入,Kimi Code 的 2.5D 舞台与完整交互,都已经超过一次性页面 Demo。
第三,两边都出现过模型自测通过、真实浏览器失败。DSH 的 canvas backing store 尺寸错误,画面只剩天空。Kimi Code 先遇到函数归属错误,随后又被 CSS 覆盖了 hidden 属性。问题反馈给 V4 Pro 后都修好了,也给各自的浏览器测试补上了回归检查。
这条共同的失败最值得记住。Agent 写的测试很容易和实现共用盲点。Harness 可以保留完整轨迹,也能帮助模型继续修正,最终仍要靠独立浏览器、外部验收和人眼试玩来确认产物真的可用。
DSH 也能驱动其他模型
DSH 同时提供 DeepSeek 直连适配器和基于 pi-ai 的多 Provider 适配器。本机分别使用 Kimi K3、GPT-5.6 Sol 和 Claude Opus 4.8 完成了文件写入、读回与工具调用。
这项冒烟只说明 provider、OpenAI-compatible 消息、SSE 和工具协议可以工作,不用来比较三种模型。实际接入仍应逐个验证文本、流式、工具调用、错误映射和长连接。
这些体验在源码里从哪来
仓库采用 TypeScript monorepo。主干可以先压成这几层。
deepseek-harness/
├── apps/cli + apps/web 命令行与浏览器入口
├── packages/boot + bundle Profile 与插件树组装
├── packages/core/
│ ├── agent-loop Turn / Step 驱动
│ ├── session 追加式事件日志
│ ├── tools 工具注册与执行
│ └── system-prompt Prompt 片段组装
├── packages/preset 每会话 Agent 组合
├── packages/llm DeepSeek 与多 Provider 适配
├── packages/fs + sandbox 可替换执行能力
├── packages/code-runtime PTC / Code Mode
└── vendor/cordis 插件生命周期底层这张图能解释 DSH 的技术栈。Cordis 管插件生命周期和服务依赖,DSH 在上面定义 Agent 领域的 session、loop、tools、LLM、sandbox 和 UI。KM 的运行时拆解对 Fiber、Preset、Code Mode 与工具遮蔽有更细的源码映射,这里只留和使用体验最相关的五点。
一切皆插件,靠的是 Cordis 的可逆生命周期
代码入口在 vendor/cordis/src/context.ts、fiber.ts 与 service.ts。
插件通过 inject 声明依赖的服务。依赖没出现时,Fiber 停在 PENDING。服务出现后进入 ACTIVE。提供方退出时,依赖组件先卸载,再回收自身 effect。
每次注册服务、监听器或定时器,都要把 disposer 一起交给 ctx.effect()。卸载时按相反顺序清理。Agent Loop 能成为普通插件,前提正是底层已经能管住这种体量组件的加载、依赖和退出。
这个机制也有明确边界。外部文件、网络消息和已经发生的业务动作不会自动回滚。依赖注入也无法替代恶意代码沙箱。
Profile 与 Preset 分别控制进程和会话
代码入口在 packages/boot/app-boot/src/profile.ts 与 packages/preset/agent-presets/src/。
Profile 从空列表开始叠 bundle,再应用 profile、home 和命令行 patch。Web 与 Headless 因此是两棵不同的插件树。dsh --profile web --dump-config 使用同一套 patch 算法输出最终结果,配置展示和真实启动不会各维护一套逻辑。
Preset 再决定某个会话看见哪些工具、提示词和投影单元。同一个进程里可以同时跑 standard、minimal 或领域 Agent。前面 Data Agent 用 sqlcmd 替换 bash,就是这套作用域落到产品上的例子。
模型看见的内容,必须能从日志重建
代码入口在 packages/core/agent-loop/src/agent.ts、invariant.ts 与 packages/core/session/src/。
每一步请求都从 session 派生 messages。请求发出前,invariant 会再比较当前请求与 session.deriveMessages(),并核对模型、system prompt、temperature、max tokens 和 tools。
const expected = session.deriveMessages()
if (JSON.stringify(options.messages) !== JSON.stringify(expected)) {
fail('log-reconstruction desync')
}这条约束解释了 Trajectory 为什么清楚,也解释了 fork、恢复和 UI 为什么能共用同一条事件流。它还带出一条隐私含义。上下文一旦注入模型,也会进入日志和数据边界。
Capability Seam 把工具与执行环境拆开
代码入口在 packages/fs/fs/src/types.ts、fs-local/、fs-sandbox/ 与 tool-str-replace-editor/。
文件系统先定义 FileSystem、opaque target 和 version,再由 local / sandbox provider 实现,最后由 read、write、editor 消费。把文件与子进程 provider 换到远程沙箱时,上层工具不必跟着 fork。
写入还支持 createIfAbsent 与 replaceIfVersion。模型读完文件以后,若文件已被别人改过,provider 可以拒绝陈旧覆盖。并发安全因此落在工具下方,不必由每个编辑工具再写一遍。
PTC 用代码减少工具往返
代码入口在 packages/code-runtime/。
PTC 让模型写一段 TypeScript 来组合多次工具调用。程序在 worker_threads 中执行,工具请求通过消息通道回到宿主,仍然经过同一套 pre-execute、审批、调度和 post-execute 流水线。
中间数据可以留在运行环境里,不必每一步都塞回模型上下文。这比模型会写代码更要紧。代价是执行模型生成的代码需要额外隔离,worker 仍不是完整安全边界。
现在谁值得花时间
做 Agent 基础设施的人值得马上看。DSH 把 loop、session、provider、工具和 UI 都摊在能核对的源码里。
需要领域 Agent 的团队值得做小实验。先复制 minimal / standard preset,再删工具、换 provider,比迁移整套工作流更容易验证收益。
模型评测人员可以用 minimal composition。同时锁定模型版本、推理档位、endpoint 和外部验收。
只想找日常编码工具的人可以先观望。Kimi Code、Claude Code、Codex 等产品在终端体验、桌面入口、IDE 集成和默认工作流上更成熟。
生产接入要自己补治理。插件来源、配置 diff、凭证边界、Windows 验收、日志保留和数据外发,都得部署方承担。
如果团队正在设计自己的 Harness,还可以带走三个问题。
运行时最终加载了什么,能不能一条命令打印出来
模型实际看见了什么,能不能从日志完整重建
换掉文件系统、沙箱或模型提供方时,有多少工具必须跟着改
这三个问题,DSH 已经给出能跑、能核对的答法。默认产品、插件质量和治理能不能追上这套结构,是下一阶段的事。
资料汇总
官方与源码
DeepSeek Harness 源码
中文架构文档
Python SDK 最小 Agent 指南
Cordis 源码
时空可组合性论文
V4 Pro 0813 模型卡
Kimi Code CLI 源码
用户反馈与方法
知乎目标问题
一周内测与 89 步竞赛任务
默认工具与 token 开销估算
87.6 分钟接入微信记录
Data Agent 的 Preset 实践
VISTA 视觉 Web App Benchmark
本地复现材料
基础结果 working/eval/results.md
Kimi K3 对照 working/cross-model/harness-compare/
Kimi Code 源码快照 working/kimi-code/
多模型冒烟 working/cross-model/compat/
V4 Pro 跳一跳 Case working/jump-game/workspace/
知乎反馈摘录 working/eval/zhihu-feedback.md
KM 图片与 HTML 附件 output/attachments/
全部数字以 2026-08-14 的单次本机运行结果为界。
📦 完整复现材料获取方式:
关注「腾讯技术工程」公众号,在后台私信关键词 「deepseek」,即可获取。
跳转微信打开
関連記事
News to Guide
ニュースの次に確認する
発表内容を、現在の料金や仕様と照らし合わせられる関連ガイドです。
今日のまとめ
AIデイリーブリーフで今日の重要ニュースをまとめ読み