Примечание.
Copilot SDK в настоящее время находится в public preview. Функциональность и доступность могут меняться.
Включение ведения журнала отладки
Для начала устранения неполадок включите подробный лог, чтобы получить видимость в основе процессов.
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient({
logLevel: "debug", // Options: "none", "error", "warning", "info", "debug", "all"
});
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient({
logLevel: "debug", // Options: "none", "error", "warning", "info", "debug", "all"
});
Для примеров в Python, Go и .NET см. Руководство по отладке в github/copilot-sdk репозитории. Для Java см. репозиторийgithub/copilot-sdk-java.
Каталог журналов
CLI по умолчанию записывает журналы в каталог ABC. Вы можете указать другое местоположение с помощью аргумента --log-dir :
const client = new CopilotClient({
cliArgs: ["--log-dir", "/path/to/logs"],
});
const client = new CopilotClient({
cliArgs: ["--log-dir", "/path/to/logs"],
});
Для Python и Go, которые сейчас не поддерживают передачу дополнительных CLI-аргументов, запускайте CLI вручную и --log-dir подключайтесь через эту cliUrl опцию. Для получения дополнительной информации смотрите руководство по отладке в github/copilot-sdk репозитории.
Распространенные проблемы
«CLI не найден» или «второй пилот: команда не найдена»
**Причина:**GitHub Copilot CLI не установлен или отсутствует в PATH.
**Solution:**
-
Установите CLI. Дополнительные сведения см. в разделе Установка GitHub Copilot CLI.
-
Проверьте установку:
Bash copilot --version
copilot --version -
Или укажите полный путь:
TypeScript const client = new CopilotClient({ cliPath: "/usr/local/bin/copilot", });const client = new CopilotClient({ cliPath: "/usr/local/bin/copilot", });Для примеров в Python, Go и .NET см. Руководство по отладке в
github/copilot-sdkрепозитории. Для Java см. репозиторийgithub/copilot-sdk-java.
«Не подтвержено»
**Причина:** CLI не аутентифицируется с GitHubпомощью .
**Solution:**
-
Аутентифицировать CLI:
Bash copilot auth login
copilot auth login -
Или программно предоставить токен:
TypeScript const client = new CopilotClient({ githubToken: process.env.GITHUB_TOKEN, });const client = new CopilotClient({ githubToken: process.env.GITHUB_TOKEN, });Для примеров в Python, Go и .NET см. Руководство по отладке в
github/copilot-sdkрепозитории. Для Java см. репозиторийgithub/copilot-sdk-java.
«Сессия не найдена»
**Причина:** Попытка использовать сессию, которая была уничтожена или не существует.
**Solution:**
-
Убедитесь, что вы не вызываете методы после
disconnect():TypeScript await session.disconnect(); // Don't use session after this!
await session.disconnect(); // Don't use session after this! -
Для возобновления сессий проверьте наличие идентификатора сессии:
TypeScript const sessions = await client.listSessions(); console.log("Available sessions:", sessions);const sessions = await client.listSessions(); console.log("Available sessions:", sessions);
«Соединение отказано» или «ОТКАЗАНО»
**Причина:** Процесс CLI-сервера вылетел или не запустился.
**Solution:**
-
Проверьте, работает ли CLI самостоятельно:
Bash copilot --server --stdio
copilot --server --stdio -
Проверьте на конфликты портов при использовании режима TCP:
TypeScript const client = new CopilotClient({ useStdio: false, port: 0, // Use random available port });const client = new CopilotClient({ useStdio: false, port: 0, // Use random available port });
Отладка серверов MCP
Серверы MCP (Model Context Protocol) могут быть сложны в отладке. Для полных рекомендаций по отладке MCP см. Отладка MCP-серверов в Copilot SDK.
Быстрый чек-лист MCP
- Исполняемый файл сервера MCP существует и работает независимо
- Путь команды верен (используйте абсолютные пути)
- Инструменты включены:
tools: ["*"] - Сервер правильно отвечает на
initializeзапрос - Рабочая директория (
cwd) устанавливается при необходимости
Тестирование сервера MCP
Перед интеграцией с SDK убедитесь, что ваш MCP-сервер работает:
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | /path/to/your/mcp-server
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | /path/to/your/mcp-server
Для подробного устранения неполадок см. Отладка MCP-серверов в Copilot SDK.
Проблемы с подключением
Режим Stdio против TCP
SDK поддерживает два режима транспорта:
| Режим | Описание | Сценарий использования |
|---|
**Stdio** (по умолчанию) | CLI работает как подпроцесс, общается через трубы | Местное развитие, единый процесс |
| TCP | CLI работает отдельно, общается через TCP-сокет | Несколько клиентов, удалённый CLI |
**Режим Stdio (по умолчанию):**
const client = new CopilotClient({
useStdio: true, // This is the default
});
const client = new CopilotClient({
useStdio: true, // This is the default
});
**Режим TCP:**
const client = new CopilotClient({
useStdio: false,
port: 8080, // Or 0 for random port
});
const client = new CopilotClient({
useStdio: false,
port: 8080, // Or 0 for random port
});
**Подключитесь к существующему серверу:**
const client = new CopilotClient({
cliUrl: "localhost:8080", // Connect to running server
});
const client = new CopilotClient({
cliUrl: "localhost:8080", // Connect to running server
});
Диагностика сбоев соединения
-
Проверьте состояние клиента:
TypeScript console.log("Connection state:", client.getState()); // Should be "connected" after start()console.log("Connection state:", client.getState()); // Should be "connected" after start() -
Слушайте изменения в состоянии:
TypeScript client.on("stateChange", (state) => { console.log("State changed to:", state); });client.on("stateChange", (state) => { console.log("State changed to:", state); }); -
Проверьте, что процесс CLI запущен:
Bash # Check for copilot processes ps aux | grep copilot
# Check for copilot processes ps aux | grep copilot
Проблемы с выполнением инструментов
Пользовательский инструмент не вызывается
-
Проверьте регистрацию инструмента:
TypeScript const session = await client.createSession({ tools: [myTool], }); // Check registered tools console.log("Registered tools:", session.getTools?.());const session = await client.createSession({ tools: [myTool], }); // Check registered tools console.log("Registered tools:", session.getTools?.()); -
Проверьте, валидна ли схема инструмента в JSON Schema:
TypeScript const myTool = { name: "get_weather", description: "Get weather for a location", parameters: { type: "object", properties: { location: { type: "string", description: "City name" }, }, required: ["location"], }, handler: async (args) => { return { temperature: 72 }; }, };const myTool = { name: "get_weather", description: "Get weather for a location", parameters: { type: "object", properties: { location: { type: "string", description: "City name" }, }, required: ["location"], }, handler: async (args) => { return { temperature: 72 }; }, }; -
Убедитесь, что обработчик возвращает действительный результат:
TypeScript handler: async (args) => { // Must return something JSON-serializable return { success: true, data: "result" }; // Don't return undefined or non-serializable objects }handler: async (args) => { // Must return something JSON-serializable return { success: true, data: "result" }; // Don't return undefined or non-serializable objects }
Ошибки инструмента не появляются
Подписывайтесь на события ошибок:
session.on("tool.execution_error", (event) => {
console.error("Tool error:", event.data);
});
session.on("error", (event) => {
console.error("Session error:", event.data);
});
session.on("tool.execution_error", (event) => {
console.error("Tool error:", event.data);
});
session.on("error", (event) => {
console.error("Session error:", event.data);
});
Проблемы, связанные с платформой
Виндоус
-
**Сепараторы путей:** Используйте необработанные струны или прямые слэши. Для . Примеры, специфичные для NET, см. [Руководство по отладке](https://github.com/github/copilot-sdk/blob/main/docs/troubleshooting/debugging.md) в `github/copilot-sdk` репозитории. -
**Консольное кодирование:** Убедитесь, что UTF-8 для правильной обработки JSON. Для . Примеры, специфичные для NET, см. [Руководство по отладке](https://github.com/github/copilot-sdk/blob/main/docs/troubleshooting/debugging.md) в `github/copilot-sdk` репозитории.
macOS
-
**Проблемы с хранителями врат:** Если CLI заблокирован:Bash xattr -d com.apple.quarantine /path/to/copilot
xattr -d com.apple.quarantine /path/to/copilot -
**Проблемы с PATH в GUI-приложениях:** GUI-приложения не могут наследовать PATH оболочки:TypeScript const client = new CopilotClient({ cliPath: "/opt/homebrew/bin/copilot", // Full path });const client = new CopilotClient({ cliPath: "/opt/homebrew/bin/copilot", // Full path });
Линукс
-
**Проблемы с разрешением:**Bash chmod +x /path/to/copilot
chmod +x /path/to/copilot -
**Отсутствующие библиотеки:** Проверьте наличие обязательных общих библиотек:Bash ldd /path/to/copilot
ldd /path/to/copilot
Получение помощи
Если вы всё ещё застряли, соберите следующую отладочную информацию перед открытием выпуска:
- Версия пакета SDK
- Версия CLI (
copilot --version) - Операционная система
- Логи отладки
- Код минимального воспроизведения
Ищите существующие проблемы или откройте новую в репозитории github/copilot-sdk .