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 が開き、追加される内容を表示する確認ダイアログが表示されます。確認するまで、ディープリンクは自動的に実行されません。
URL フォーマット
{scheme}://{host}/{path}?{parameters}
| 構成要素 | 説明 | 例 |
|---|
scheme | プロトコル | qoder |
host | ディープリンクハンドラー識別子 | aicoding.aicoding-deeplink |
path | アクションパス | /chat, /quest, /rule, /mcp/add |
parameters | URL クエリパラメータ | text=hello&mode=agent |
利用可能なディープリンクタイプ
| パス | 説明 | ログイン必須 |
|---|
/chat | AI チャットを作成 | はい |
/quest | Quest タスクを作成 | はい |
/rule | ルールを作成 | いいえ |
/mcp/add | MCP サーバーを追加 | いいえ |
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 エンコードプロセス:
- 設定 JSON オブジェクトを作成
JSON.stringify() でシリアライズ
encodeURIComponent() で URL エンコード
btoa() で Base64 エンコード
- 結果を
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 文字を超えないようにしてください。長いコンテンツの場合は、以下を検討してください:
- プロンプトまたはルールの内容を短くする
- インラインコンテンツの代わりに外部参照を使用する
- 複数のディープリンクに分割する