メインコンテンツへスキップ
Deeplinks を使用すると、シンプルな URL で AI Chat プロンプト、Quest タスク、ルール、MCP サーバー設定を他のユーザーと共有できます。ディープリンクをクリックすると、IDE が開き、追加される内容を表示する確認ダイアログが表示されます。確認するまで、ディープリンクは自動的に実行されません。 deeplink example

URL フォーマット

{scheme}://{host}/{path}?{parameters}
構成要素説明
schemeプロトコルqoder
hostディープリンクハンドラー識別子aicoding.aicoding-deeplink
pathアクションパス/chat, /quest, /rule, /mcp/add
parametersURL クエリパラメータtext=hello&mode=agent

利用可能なディープリンクタイプ

パス説明ログイン必須
/chatAI チャットを作成はい
/questQuest タスクを作成はい
/ruleルールを作成いいえ
/mcp/addMCP サーバーを追加いいえ

AI チャットを作成 /chat

チャットで直接使用できるプロンプトを共有します。チャットディープリンクをクリックすると、IDE が開き、指定されたコンテンツでチャット入力を事前入力します。

URL フォーマット

qoder://aicoding.aicoding-deeplink/chat?text={prompt}&mode={mode}

パラメータ

パラメータ必須説明
textはい事前入力するプロンプト内容
modeいいえチャットモード:agent または ask(デフォルト:ユーザーの現在のモード)

qoder://aicoding.aicoding-deeplink/chat?text=Help%20me%20refactor%20this%20code&mode=agent

リンク生成コード

function generateChatDeeplink(text: string, mode?: 'agent' | 'ask'): string {
  if (!text) {
    throw new Error('必須パラメータがありません: text');
  }

  const url = new URL('qoder://aicoding.aicoding-deeplink/chat');
  url.searchParams.set('text', text);
  if (mode) {
    url.searchParams.set('mode', mode);
  }

  return url.toString();
}

// 例
const deeplink = generateChatDeeplink('このコードをリファクタリングしてください', 'agent');
console.log(deeplink);
from urllib.parse import urlencode

def generate_chat_deeplink(text: str, mode: str = None) -> str:
    if not text:
        raise ValueError('必須パラメータがありません: text')

    params = {'text': text}
    if mode:
        params['mode'] = mode

    return f"qoder://aicoding.aicoding-deeplink/chat?{urlencode(params)}"

# 例
deeplink = generate_chat_deeplink('このコードをリファクタリングしてください', 'agent')
print(deeplink)

Quest タスクを作成 /quest

AI が複雑な開発タスクを自律的に完了できる Quest タスクを共有します。Quest モードでは、AI が最小限の人間の介入でタスクを計画、実行、反復できます。

URL フォーマット

qoder://aicoding.aicoding-deeplink/quest?text={description}&agentClass={agentClass}

パラメータ

パラメータ必須説明
textはいタスクの説明
agentClassいいえ実行モード:LocalAgent(デフォルト)、LocalWorktree、または RemoteAgent

実行モード

モード説明
LocalAgent現在のワークスペースで実行
LocalWorktree分離された git worktree で実行
RemoteAgentリモートサーバーで実行

qoder://aicoding.aicoding-deeplink/quest?text=Implement%20user%20authentication%20with%20JWT&agentClass=LocalWorktree

リンク生成コード

type AgentClass = 'LocalAgent' | 'LocalWorktree' | 'RemoteAgent';

function generateQuestDeeplink(text: string, agentClass?: AgentClass): string {
  if (!text) {
    throw new Error('必須パラメータがありません: text');
  }

  const url = new URL('qoder://aicoding.aicoding-deeplink/quest');
  url.searchParams.set('text', text);
  if (agentClass) {
    url.searchParams.set('agentClass', agentClass);
  }

  return url.toString();
}

// 例
const deeplink = generateQuestDeeplink('JWT を使用したユーザー認証を実装', 'LocalWorktree');
console.log(deeplink);
from urllib.parse import urlencode

def generate_quest_deeplink(text: str, agent_class: str = None) -> str:
    if not text:
        raise ValueError('必須パラメータがありません: text')

    params = {'text': text}
    if agent_class:
        params['agentClass'] = agent_class

    return f"qoder://aicoding.aicoding-deeplink/quest?{urlencode(params)}"

# 例
deeplink = generate_quest_deeplink('JWT を使用したユーザー認証を実装', 'LocalWorktree')
print(deeplink)

ルールを作成 /rule

AI の動作をガイドするルールを共有します。ルールでは、コーディング標準、プロジェクトの規約、AI 応答の特定の指示を定義できます。

URL フォーマット

qoder://aicoding.aicoding-deeplink/rule?name={ruleName}&text={ruleContent}

パラメータ

パラメータ必須説明
nameはいルール名(ファイル名として使用)
textはいルールの内容

qoder://aicoding.aicoding-deeplink/rule?name=typescript-conventions&text=Always%20use%20strict%20TypeScript%20types

リンク生成コード

function generateRuleDeeplink(name: string, text: string): string {
  if (!name || !text) {
    throw new Error('必須パラメータがありません: name と text');
  }

  const url = new URL('qoder://aicoding.aicoding-deeplink/rule');
  url.searchParams.set('name', name);
  url.searchParams.set('text', text);

  return url.toString();
}

// 例
const deeplink = generateRuleDeeplink(
  'typescript-conventions',
  `常に厳格な TypeScript 型を使用してください。
'any' 型の使用を避けてください。
オブジェクト型には type より interface を優先してください。`
);
console.log(deeplink);
from urllib.parse import urlencode

def generate_rule_deeplink(name: str, text: str) -> str:
    if not name or not text:
        raise ValueError('必須パラメータがありません: name と text')

    params = {'name': name, 'text': text}
    return f"qoder://aicoding.aicoding-deeplink/rule?{urlencode(params)}"

# 例
deeplink = generate_rule_deeplink(
    'typescript-conventions',
    """常に厳格な TypeScript 型を使用してください。
'any' 型の使用を避けてください。
オブジェクト型には type より interface を優先してください。"""
)
print(deeplink)

MCP サーバーを追加 /mcp/add

MCP(Model Context Protocol)サーバー設定を共有します。MCP サーバーは、追加のツールとコンテキストソースを提供することで AI の機能を拡張します。

URL フォーマット

qoder://aicoding.aicoding-deeplink/mcp/add?name={serverName}&config={base64EncodedConfig}

パラメータ

パラメータ必須説明
nameはいMCP サーバー名
configはいBase64 エンコードされた MCP server JSON 設定

qoder://aicoding.aicoding-deeplink/mcp/add?name=postgres&config=JTdCJTIyY29tbWFuZCUyMiUzQSUyMm5weCUyMiUyQyUyMmFyZ3MlMjIlM0ElNUIlMjIteSUyMiUyQyUyMiU0MG1vZGVsY29udGV4dHByb3RvY29sJTJGc2VydmVyLXBvc3RncmVzJTIyJTJDJTIycG9zdGdyZXNxbCUzQSUyRiUyRmxvY2FsaG9zdCUyRm15ZGIlMjIlNUQlN0Q%3D

リンク生成コード

MCP server JSON エンコードプロセス:
  1. 設定 JSON オブジェクトを作成
  2. JSON.stringify() でシリアライズ
  3. encodeURIComponent() で URL エンコード
  4. btoa() で Base64 エンコード
  5. 結果を encodeURIComponent() で URL エンコード
interface McpServerConfig {
  command?: string;
  args?: string[];
  url?: string;
  env?: Record<string, string>;
}

function generateMcpAddDeeplink(name: string, config: McpServerConfig): string {
  if (!name) {
    throw new Error('必須パラメータがありません: name');
  }
  if (!config) {
    throw new Error('必須パラメータがありません: config');
  }
  if (!config.command && !config.url) {
    throw new Error('設定には "command" または "url" が必要です');
  }

  const configJson = JSON.stringify(config);
  const base64Config = btoa(encodeURIComponent(configJson));
  const encodedName = encodeURIComponent(name);
  const encodedConfig = encodeURIComponent(base64Config);

  return `qoder://aicoding.aicoding-deeplink/mcp/add?name=${encodedName}&config=${encodedConfig}`;
}

// 例 1: PostgreSQL MCP サーバー
const postgresDeeplink = generateMcpAddDeeplink('postgres', {
  command: 'npx',
  args: ['-y', '@modelcontextprotocol/server-postgres', 'postgresql://localhost/mydb']
});
console.log(postgresDeeplink);

// 例 2: 環境変数付きの GitHub MCP サーバー
const githubDeeplink = generateMcpAddDeeplink('github', {
  command: 'npx',
  args: ['-y', '@modelcontextprotocol/server-github'],
  env: { GITHUB_PERSONAL_ACCESS_TOKEN: '<YOUR_TOKEN>' }
});
console.log(githubDeeplink);

// 例 3: HTTP ベースの MCP サーバー
const httpDeeplink = generateMcpAddDeeplink('custom-server', {
  url: 'https://mcp.example.com/sse'
});
console.log(httpDeeplink);
import json
import base64
from urllib.parse import quote

def generate_mcp_add_deeplink(name: str, config: dict) -> str:
    if not name:
        raise ValueError('必須パラメータがありません: name')
    if not config:
        raise ValueError('必須パラメータがありません: config')
    if 'command' not in config and 'url' not in config:
        raise ValueError('設定には "command" または "url" が必要です')

    config_json = json.dumps(config)
    config_encoded = quote(config_json)
    config_base64 = base64.b64encode(config_encoded.encode()).decode()
    encoded_name = quote(name)
    encoded_config = quote(config_base64)

    return f"qoder://aicoding.aicoding-deeplink/mcp/add?name={encoded_name}&config={encoded_config}"

# 例 1: PostgreSQL MCP サーバー
postgres_deeplink = generate_mcp_add_deeplink('postgres', {
    'command': 'npx',
    'args': ['-y', '@modelcontextprotocol/server-postgres', 'postgresql://localhost/mydb']
})
print(postgres_deeplink)

# 例 2: 環境変数付きの GitHub MCP サーバー
github_deeplink = generate_mcp_add_deeplink('github', {
    'command': 'npx',
    'args': ['-y', '@modelcontextprotocol/server-github'],
    'env': { 'GITHUB_PERSONAL_ACCESS_TOKEN': '<YOUR_TOKEN>' }
})
print(github_deeplink)

セキュリティに関する注意事項

重要: ディープリンクを共有またはクリックする前に、必ず内容を確認してください。
  • 機密データを含めない: ディープリンクに API キー、パスワード、プロプライエタリコードを埋め込まないでください
  • ソースを確認する: 信頼できるソースからのディープリンクのみをクリックしてください
  • 確認前に内容を確認: IDE は常に確認ダイアログを表示します。続行する前に内容を注意深く確認してください
  • 自動実行なし: ディープリンクは自動的に実行されません。常にユーザーの確認が必要です

トラブルシューティング

問題考えられる原因解決策
”Unregistered deeplink path”サポートされていないディープリンクパスパスがサポートされているか確認し、Qoder バージョンが 0.2.21 以上であることを確認してください
”Missing required parameter”パラメータが指定されていないURL にすべての必須パラメータが含まれているか確認してください
”Invalid JSON config”JSON の形式が正しくないエンコード前に JSON 構造を検証してください
”Quest mode is disabled”Quest 機能が有効になっていない設定で Quest モードを有効にしてください
ログインプロンプトが表示されるディープリンクに認証が必要最初にアカウントにサインインしてください
”Invalid Base64 encoded config”MCP 設定のエンコード順序が正しくない正しいエンコード順序を確認: JSON → encodeURIComponent → btoa → encodeURIComponent

URL 長さ制限

ディープリンク URL は 8,000 文字を超えないようにしてください。長いコンテンツの場合は、以下を検討してください:
  • プロンプトまたはルールの内容を短くする
  • インラインコンテンツの代わりに外部参照を使用する
  • 複数のディープリンクに分割する