DeepSeekのコーディングツール「DeepSeek Harness」をコード単位で検証した:「流出コードの改変品」ではない――しかしコミット履歴には別の物語が隠されていた

DeepSeek Harness がオープンソース公開された当日、中国語コミュニティではある説が広まった――このフレームワークは「見るからに」某米国研究機関から流出したコードを改変したものだ、というものだ。私たちはその問いを立場で答えるのではなく、双方のコードをダウンロードして再現可能な形でフォレンジック調査を実施した。誰でも自分のマシン上ですべての数値を再現できる。結論は明確だ:改変品ではない。そして「クリーンである」ことを確認するプロセスの中で、別の事実が浮かび上がってきた。

まず手法について説明する。結論よりも方法が重要だからだ。あるコードが別のコードを改変したものかどうかを判断するにあたって、最も偽造しにくい証拠は文字列リテラルだ。変数名はminify化や一括リネームが可能だが、システムプロンプト、ツールの説明文、エラーメッセージといった文字列が流用されていれば、すべてを消し去ることはほぼ不可能だ。私たちは Claude Code が公開しているnpmパッケージ(バージョン1.0.98、完全な8.8MBのバンドル)から40文字以上の文字列リテラルを抽出し、重複除去後28,086件を得た。DeepSeek Harness の全TypeScriptソースコードに対して同様の処理を行い、17,589件を得た。この2つの集合の積集合を求めたところ、結果は0件だった。閾値を25文字まで緩めても積集合は依然として0件だった。つまり、両コードベース間で共有されているやや長めの文字列は一切存在しない。仮に dsh が「改変」されたものであれば、どれだけ徹底的に改変されていても、プロンプト文やエラーメッセージが一件も残っていないということはほぼあり得ない。

第2の証拠はバージョン履歴だ。

DeepSeek Harness のgitリポジトリには12,293件のコミットがあり、squashは行われていない――履歴は完全な形で展開されている。最初のコミットはわずか48行で、READMEと設定ファイルの初期化のみだ。履歴全体を通じて唯一の大規模なコードインポートは4番目のコミットで、タイトルには明確に「Vendor Cordis framework packages as source」(Cordisフレームワークをソースコードとして取り込む)と書かれており、6,659行だ。その後は数百行から1,000行規模の増分コミットが1万件以上続き、lintルール、テストカバレッジのゲート、アーキテクチャレビューが点在している。盗用コードを起点に立ち上げられたプロジェクトはこういう形にならない:そのような履歴は不透明な単一の初期コミットに圧縮されるか、匿名の数万行規模のコードダンプが存在するはずだ。ここにはそのどちらも存在しない。

第3の証拠はフレームワークの出所に関するものだ。

dsh のプラグインコアは Cordis に由来する――dsh よりも以前から存在する独立したオープンソースフレームワーク(MITライセンス)で、Koishiエコシステムの系譜に属する。彼らの vendor/README.md には取り込んだ各パッケージ、対応するアップストリームリポジトリとコミットSHA、そして各ローカル変更が記録されている。私たちは Cordis を記録されているアップストリームコミット 56b3d4f7 でチェックアウトし、ファイル単位でdiffを実行した:差異はimportパスのリネーム、補足されたJSDocコメント、そして fiber.ts における416行の「ライフサイクル強化」のみであり――この416行は、彼ら自身の変更ログの6番目の項目に正確に対応している。ドキュメントは嘘をついていない。さらに重要なのは、Cordis の作者本人(GitHubユーザー名:Shigma)が dsh のコントリビューターリストに名を連ねていることだ。「成熟したフレームワークに見える」という印象はここに由来する――DeepSeekCordis の系譜にある人材とフレームワークをそのまま基盤として採用したのであり、誰かのコードを盗む必要はなかったのだ。

ここまでで、「流出コードの盗用・改変」という仮説は否定された。しかしフォレンジック調査がここまで進んだ時点で、別の事実も同時に浮かび上がってきた。しかもそれは証拠に基づいて確認できる。

このリポジトリの最初のコミットには、AGENTS.md へのシンボリックリンクである CLAUDE.md というファイルが存在する――これは Claude Code がプロジェクト規約を読み込む際の標準設定だ。つまり、プロジェクトが立ち上がった初日から、Claude Code で使うことを前提としていた。履歴には codex/ プレフィックスを持つコミットが1,760件あり、その主体はブランチのマージだ――codex/OpenAI Codex がブランチを作成する際の命名規則であり、大量のリファクタリングが Codex が生成したブランチから順次マージされていた。11番目のコミットには「第2回 Codex レビューで発見された問題を修正」とまで書かれており、Codex がレビューも兼ねていた。7月単月でこのリポジトリは8,273件のコミットを産出した。最も直接的な証拠として、公式CIワークフロー pi-ai-provider-e2e.yml には ANTHROPIC_API_KEY_EXTERNAL という名前のシークレットがマウントされており、デフォルトのテストモデルは claude-opus-4-8 だ。これは特定のエンジニアが自分のパソコンにコマンドラインツールをインストールしていた、という話ではない。会社の継続的インテグレーションパイプラインの中に、Anthropic の本番APIキーを保有する経路が設計されていたということだ。

規模からも、このツールの重みが伺える。dsh の自社開発部分は約45万行(packagesソースコード199,065行、テスト230,642行、apps 23,824行)に上り、vendored化されたオープンソースフレームワークは6,550行のみで、TypeScriptコードベース全体の約1.4%を占めるに過ぎない。実名のエンジニアチームが Claude CodeCodex を並行して複数セッション立ち上げ、45万行のharnessを2ヶ月強で書き上げた。人間がアーキテクチャ、レビュー、カバレッジゲートを担当した。この開発手法自体は効率的であり、現在多くのチームが採用しているものだ。

問題は別のところにあり、正確に述べなければならない。DeepSeek は中国資本が完全保有する企業だ。Anthropic の2025年9月以降の利用規約は、中国資本の持株比率が50%を超える事業体による Claude の使用をグローバルに明示的に禁止している。OpenAI のサービスも同様に中国を非対応地域として除外している。つまり、dsh の製造に使われたこの2つのツールは、まさに DeepSeek のような事業主体に対して各社の利用規約で禁止されているものだった。これは契約違反であり、法律違反ではない――迂回アクセスは米国法にも中国法にも抵触せず、結果はアカウント停止であって法的責任ではない。しかし、名指しで禁止されている中国の先端AI研究機関が、競合のツールをコアな生産手段として使用し、その痕跡を公開リポジトリに残していたという事実は、それ自体が注目に値する。

混同されやすい2つの事柄を同時に明確にしておく必要がある。一つは「チームが Claude Code を使って dsh を開発した」――これは契約違反の主体が明確な事柄であり、主体は DeepSeek 自身だ。もう一つは「dsh 製品に subagent-claude-code が組み込まれている」――これは dshClaude Code を呼び出し可能なサブエージェントとして使えるようにするものに過ぎず、海外ユーザーが正規の Claude アカウントを持参して使用することは完全に正当であり、前者とは別の話だ。この2つを混同することは、相手に攻撃材料を渡すことになる。また、ANTHROPIC_API_KEY_EXTERNAL という命名は指摘に値するが、過度に解釈すべきではない。リポジトリは公開発布の5日前(2026年8月8日)にローカルの .claude/launch.json をバージョン管理から除外したが、これは通常のローカル設定クリーンアップであり、CLAUDE.md は一貫して保持されている――隠して使っていたわけではない。

私たちはすべてのフォレンジックスクリプトを公開する。文字列の積集合、コミット統計、コード規模、vendorの比較照合、いずれも誰でも自分のマシン上で再現し、同じ数値を得ることができる。この報道に対して私たちが求める唯一のことはこれだ:私たちの立場を信じるのではなく、私たちのデータを再現してほしい。

証拠一覧:

確認済み(ローカルで再現可能)

  • 文字列ゼロ交差:Claude Code 1.0.98バンドルの長文字列28,086件(≥40文字)× dsh 17,589件、≥40文字および≥25文字の両閾値で積集合は0件。
  • gitの完全な履歴(squashなし):12,293コミット、初回コミット48行、唯一の大規模インポートは4番目のコミット「Vendor Cordis framework packages as source」(6,659行)。
  • vendored Cordis の相互検証可能:アップストリームコミット 56b3d4f7 に固定、diffはimportリネーム + JSDoc + fiber.ts 416行の強化のみで、自己申告の変更ログと一項目ずつ一致;Cordis 作者の Shigma がコントリビューターリストに記載。
  • 製造プロセスの証跡:初回コミットから存在する CLAUDE.md→AGENTS.md シンボリックリンク;codex/ ブランチコミット1,760件;7月のコミット数8,273件;公式CI pi-ai-provider-e2e.ymlANTHROPIC_API_KEY_EXTERNAL を保有しデフォルトが claude-opus-4-8
  • コード規模:自社開発約45万行 vs vendored 6,550行(約1.4%);依存関係に @anthropic-ai/sdk@anthropic-ai/claude-agent-sdk が含まれる。

確認済み(公式文書)

  • Anthropic「Updating restrictions of sales to unsupported regions」(2025年9月5日施行):中国資本持株比率50%超の事業体のグローバル使用を禁止。
  • DeepSeek 公式APIドキュメントが Claude Code の接続ガイドを提供(ANTHROPIC_BASE_URL=https://api.deepseek.com/anthropic)――相互運用関係を裏付ける傍証。