メインコンテンツへスキップ

Documentation Index

Fetch the complete documentation index at: https://docs.qoder.com/llms.txt

Use this file to discover all available pages before exploring further.

Deeplinks を使用すると、シンプルな URL で Agentic Chat プロンプト、Quest タスク、ルール、コマンド、MCP サーバー設定を他のユーザーと共有できます。ディープリンクをクリックすると、IDE が対応するページを開きます。コンテンツの書き込み、タスクの作成、アクションの実行、または設定のインポートを行うディープリンクの場合、IDE は続行する前に確認メッセージを表示します。一部のディープリンクでは、事前にアカウントにログインする必要があります。 deeplink example

URL フォーマット

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

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

パス説明ログイン必須
/chatAI チャットを作成はい
/questQuest タスクを作成はい
/ruleルールを作成いいえ
/commandカスタムコマンドを作成いいえ
/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 の機能を拡張します。リンクを開くと、IDE はまず追加されるサーバー情報を表示し、MCP 設定ページを開いて、内容を確認しながら承認できるようにします。

URL フォーマット

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

パラメータ

パラメータ必須説明
nameはいMCP サーバー名
configはいBase64 エンコードされた MCP server JSON 設定
注意:設定には command または url のいずれかが含まれている必要があります。名前が既に存在する場合は、重複して追加することはできません。

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)


コマンドを作成 /command

リンクを介してカスタムコマンドをすばやく作成します。一般的なプロンプトテンプレート、プロジェクトの操作説明、チーム内の規約コマンドの共有に最適です。リンクを開くと、IDE はまずコマンド名、スコープ、説明、およびコンテンツを表示し、確認後に作成します。

URL フォーマット

qoder://aicoding.aicoding-deeplink/command?name={name}&text={content}&description={description}&scope={scope}

パラメータ

パラメータ必須説明
nameはいコマンド名。小文字のアルファベット、数字、ハイフン、アンダースコアのみを含めることができます
textはいコマンドの内容
descriptionいいえコマンドの説明
scopeいいえ適用範囲:user または project、デフォルトは user

適用範囲

範囲説明
user現在のユーザー環境にのみ追加されます
project現在のワークスペースに追加され、チームの共有に適しています

qoder://aicoding.aicoding-deeplink/command?name=review_pr&text=Please%20help%20me%20review%20this%20PR&description=Review%20pull%20request&scope=user

使用上の注意

  1. リンクをクリックすると、IDE は確認のためにコマンド情報を表示します。
  2. name は空にできず、小文字のアルファベット、数字、ハイフン、アンダースコアのみを使用できます。
  3. scope=project には、現在ワークスペースが開かれている必要があります。そうでない場合は作成できません。
  4. 同名のコマンドを重複して作成することはできません。

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

重要: ディープリンクを共有またはクリックする前に、必ず内容を確認してください。
  • 機密データを含めない: ディープリンクに 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 文字を超えないようにしてください。長いコンテンツの場合は、以下を検討してください:
  • プロンプトまたはルールの内容を短くする
  • インラインコンテンツの代わりに外部参照を使用する
  • 複数のディープリンクに分割する