Документация
ИИ-помощник
Диалоги в рамках проекта, типизированные действия CAD/CAM, явные разрешения и учетные данные поставщика, управляемые приложением.
Автоматически переведено с английского. Смотреть оригинал на английском
Ассистентские услуги
@cadcamfun/ai обеспечивает доступ к модели, события диалога, каталог действий, подсказки, навыки, сборку контекста и интеграцию с хостом. Механизм диалога по умолчанию встроен в nikcli; AI SDK v7 обеспечивает прямые текстовые, потоковые вызовы и вызовы со структурированным выводом. Sidecar внедряет обработчики для мутаций проекта, библиотек, истории и хранилища приложений.
Чат может проверять и изменять проект с помощью зарегистрированных действий. Генерация заголовков без сохранения состояния, анализ конструкции, рекомендации по параметрам, оптимизация G-кода и сводки предложений по дизайну возвращают рекомендации или структурированный вывод; эти методы обслуживания не сохраняют изменения проекта. Прежде чем полагаться на них, просмотрите сгенерированные рекомендации по обработке с помощью детерминированной CAM и проверки.
Разговоры и управление сеансом
POST /api/ai/chat/stream генерирует типизированные события для текста, рассуждений, состояния поворота/шага, вызовов и результатов инструментов, диагностики, вопросов, запросов разрешений, повторных попыток, изменений контекста, целей, завершения и ошибок. Идентификаторы клиентских сеансов привязаны к хост-сессиям и сверяются с их проектом. Сохраните идентификатор сеанса, чтобы продолжить тот же разговор.
POST /api/ai/sessions/state восстанавливает состояние занятости, накопленный текст и информацию о задачах после отключения потока. /api/ai/chat/queue допускает продолжение активного разговора; /api/ai/chat/abort останавливает поворот и связанных с ним рабочих. Удаление сеанса отменяет и присоединяет его дочерние элементы перед удалением сеанса узла.
/api/ai/sessions/control поддерживает статус, подробную проверку контекста, уплотнение, консолидацию памяти, отмену задач, решения о разрешениях, а также ответы или отклонение ожидающих вопросов. Запросы проверяются по родительскому диалогу и его дочерним сеансам. На вопрос, который больше не находится на рассмотрении, нельзя ответить, повторно используя его старый идентификатор.
Прямые вызовы модели повторяют временные сбои поставщика с той же кривой, что и nikcli: первая задержка составляет 2 секунд и удваивается при каждой попытке, собственная задержка поставщика retry-after заголовок учитывается, и без него задержка никогда не превышает 30 секунд. По умолчанию запрос выполняет не более пяти вызовов, включая первый; тот retryAttempts настройка может переопределить это (packages/ai/src/retry.ts, direct-model.ts). Когда соединение с моделью прерывается в середине поворота, цикл чата возобновляется до пяти раз с той же паузой 2–30 секунд и просит модель продолжить, не повторяя выполненные шаги.
Поставщики и учетные данные
GET /api/ai/providers перечисляет метаданные поставщика и настроенное состояние; GET /api/ai/models открывает каталог выбора модели с дополнительными configuredOnly=true. Чтения каталога встроенного хоста кэшируются на одну минуту. Конфигурация и политика влияют на то, какие поставщики будут перечислены и доступны для использования.
Установите учетные данные с помощью PUT /api/ai/credentials и удалите их с помощью DELETE /api/ai/credentials/:provider. Ключи не должны быть пустыми, а предоставленный базовый URL-адрес должен быть HTTP или HTTPS. Фабрика прямых моделей поддерживает Anthropic, OpenAI, MiniMax и шлюз AI. Для других идентификаторов провайдеров для прямых вызовов требуется базовый URL-адрес, совместимый с OpenAI. Встроенный хост использует собственный каталог поставщиков и маршрутизацию.
Сайдкар сохраняет учетные данные по адресу <dataDir>/ai/credentials.json используя временный файл, режим только для владельца 0600 и переименуйте. Отсутствующий или поврежденный файл считается пустым. Неудачная постоянная запись оставляет ключ доступным для текущего процесса, но не гарантирует, что он выдержит перезапуск. Ответы о состоянии раскрывают состояние конфигурации, а не необработанные ключи.
Полномочия представлены с помощью Redacted внутри служб и распространяется на хост через приемник учетных данных с заданной областью. Закрытие области очищает копию хоста. Изменения учетных данных обновляют версию, используемую для различения кэшированных результатов без сохранения состояния.
Уровень модели по умолчанию: balanced, а запросы MiniMax переходят к https://api.minimax.io/v1 пока не CADCAMFUN_AI_MINIMAX_BASE_URL переопределяет это (packages/ai/src/models.ts). Каталог моделей взят из публичного доступа. https://models.dev/api.json конечная точка только тогда, когда кэшированный файл отсутствует и доступ к сети разрешен; учетные данные не отправляются, ответы ограничены 8 МиБ, а тело, в котором указано менее 20 поставщиков, отклоняется как усеченное.
Действия и разрешения
Каталог действий объявляет каждый идентификатор действия, схему параметров, эффект и путь выполнения. Действия, связанные с группой инструментов, за обязательным action поле. Хост проверяет входные данные инструмента, а обработчики дополнительных функций выполняют проверку домена и доступ к ресурсам перед сохранением изменений.
Режимы разрешений: approve, ask, и auto. Они влияют на то, как принимаются обычные вызовы инструментов; инструменты, содержащие деструктивные действия, сохраняют правило одобрения человеком в каждом режиме. Входной флаг, например confirm: true не заменяет этот запрос разрешения. Хост не предоставляет неограниченную оболочку или инструменты редактирования файлов вместо действий приложения.
Политика в <dataDir>/ai/policy.json ограничить использование поставщика, использование инструментов и доступ к мосту. Они загружаются конфигурацией сервиса; не предполагайте, что редактирование файла обновит уже работающую службу. Временные каталоги на уровне проекта и изолированная конфигурация nikcli позволяют отделить встроенный хост от состояния автономного агента пользователя.
Навыки включают в себя сборники CAD/CAM и инструкции, написанные пользователями. Они направляют использование существующих инструментов; добавление навыка не добавляет новый API мутации. Конечные точки HTTP навыков отображают, сохраняют и удаляют содержимое поддерживаемых навыков пользователя.
Зарегистрированные группы инструментов
Встроенные группы cad, cad_edit, cam, cam_edit, library, parts, library_edit, memory, memory_edit, research, vcs, vcs_edit, и agent. cam_verify предоставляет подмножество генерации и проверки, необходимое для роли проверяющего, без предоставления полного инструмента редактирования CAM.
Группировка инструментов сохраняет границы эффекта. Проверка геометрии только для чтения, поиск в библиотеке и вызов памяти отделены от изменений в этих ресурсах. Внедренный реестр также может поддерживать инструменты расширения; повторяющиеся идентификаторы отклоняются.
Откройте для себя текущий каталог
GET /api/ai/actions возвращает описания инструментов, имена и виды действий, а также схемы параметров JSON для внешних вызывающих объектов. Используйте его для обнаружения действий работающего приложения вместо копирования статического списка в клиент. POST /api/ai/actions/invoke принимает идентификатор проекта, идентификатор инструмента и входные данные, содержащие дискриминатор действий.
Записи встроенного каталога хранятся в packages/ai/src/actions. Примеры включают проверку CAD и параметрические проверки, редактирование CAD, планирование и производство CAM, поиск и обновление библиотеки, память проектов, исследования и предложения VCS. Вклад, требующий службы приложения, возвращает недоступный результат, если этот хост не предоставил свой обработчик.
API публичной интеграции
ACTION_CATALOGUE, ACTION_TOOL_IDS, EXPOSED_TOOL_IDS, actionById, toolKind, и runAction поддержка потребителей каталога. ToolHandlers — контракт на интеграцию сайдкара; ToolRegistry состоит из встроенных и расширяющих инструментов. AiService предоставляет разговоры, метаданные модели, одноразовые вызовы и операции сеанса.
assembleContext составляет контекст хода с совокупным бюджетом по умолчанию в 24,000 символов. Он упорядочивает постоянные требования, текущие наблюдения, снимки пользовательского интерфейса, память и вспомогательные ссылки, выполняет дедупликацию по идентичности и содержимому, а также записывает пропущенные или сокращенные источники. Этот бюджет контекста отделен от полного окна токена модели и порога сжатия хоста.
Справочная работа и доказательства
Планировщик времени выполнения позволяет выполнять четыре активных фоновых задачи и шестнадцать задач в очереди. Задачи принадлежат проекту и родительскому сеансу. Отмена сохраняет активное право собственности до тех пор, пока работник не остановится; остановка или удаление родительского элемента также останавливает связанную с ним работу. Восстановление рабочего процесса чтения ограничено двумя попытками, а прерванная работа по редактированию помечается как неопределенная, а не воспроизводится вслепую.
Успех инструмента Assistant — это результат проверки. Операции САПР могут возвращать частичную диагностику геометрии; Артефакты CAM имеют свои собственные претензии и уровни выпуска; Службы истории обеспечивают соблюдение защищенных ветвей. Текст разговора, задание, помеченное как выполненное, и результат геометрической проверки описывают разные доказательства.
Контекст проекта, отправляемый в модель, ограничен бюджетом: сохраненный документ контекста проекта может содержать до 8,000 символов, из которых 2,000 достигают приглашения, причем 1,500 символов каждый соответствует памяти проекта и привычкам пользователя. Примечания к проекту старше 90 дней, на которые не ссылается контекст проекта, удаляются после завершения сеанса (packages/ai/src/project-context.ts).
Выбор времени выполнения
CADCAMFUN_AI_HOST выбирает nikcli по умолчанию или direct. Прямой путь использует вызовы AI SDK без встроенного цикла инструментов постоянного агента и специального планировщика. Операции без сохранения состояния используют службу прямой модели, даже если встроенный хост включен.
Каталоги XDG хоста и дополнительное переопределение домашнего адреса находятся в папке <dataDir>/ai/nikcli. Загрузка конфигурации проекта и несвязанные унаследованные настройки агента отключаются или очищаются перед импортом SDK. Его рабочая область представляет собой рабочий каталог приложения для каждого проекта, а не исходный каталог пользователя.
Автономный доступ к nikcli
@cadcamfunv2/cadcamfun-nikcli-plugin подключает автономный nikcli к работающему приложению. Настройте его url, tokenи по умолчанию projectIdили используйте CADCAMFUN_URL, CADCAMFUN_TOKEN, и CADCAMFUN_PROJECT. Предоставьте токен моста с определенной областью действия, выданный приложением для внешнего доступа.
Токены моста ограничены одним проектом и доступны только для чтения или чтения/записи. По умолчанию они составляют 30 дней, разрешают 1–365 дней, могут быть внесены в список и отозваны, а их секрет раскрывается только при их выпуске. Они допускают только два маршрута действия моста. Политика может еще больше сузить видимые инструменты и действия.
Плагин извлекает каталог из приложения и преобразует его схемы в аргументы инструмента nikcli. Деструктивные действия отвергаются даже при наличии флажка подтверждения, а незавершенный процесс agent инструмент делегирования исключен. Инструменты расширения плагинов с возможностью записи не доступны через этот внешний мост. HTTP 401 сообщает об отклонении токена; отказы в действиях возвращают читаемые результаты ошибок.
Карта реализации
service.ts владеет операциями ИИ, связанными с приложениями; direct-model.ts владеет вызовами AI SDK; credentials.ts владеет ключевым состоянием; nikcli/ владеет изоляцией, сессиями, политиками, контекстом и воркёрами; actions/ и tools/ собственные определения возможностей и адаптеры. Сайдкар services/ai.ts обработчики и хранилище проектов проводов. packages/nikcli-plugin владеет внешним HTTP-клиентом.
Начать и восстановить разговор
При работающем сопровождении и настроенной модели этот запрос открывает диалог без внедрения сохраненного контекста рабочей области. Набор CADCAMFUN_URL к обнаруженному базовому URL-адресу обратной связи и CADCAMFUN_TOKEN к его текущему токену приложения. Идентификатор сеанса, указанный ниже, выбирается клиентом; сохраните его для последующих действий.
curl --no-buffer --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" \
-H "Content-Type: application/json" \
--data '{"message":"Explain the difference between G0 and G1.","sessionId":"inspection-demo","includeContext":false,"mode":"gcode"}' \
"$CADCAMFUN_URL/api/ai/chat/stream" Для поворота проекта также укажите его реальный projectIdи, необязательно, drawingId принадлежащие этому проекту. Чертеж привязывает инструменты поворота к этому рисунку. Повторное использование сеанса под другим проектом или учетной записью запрещено.
curl --fail-with-body \
-H "Authorization: Bearer $CADCAMFUN_TOKEN" \
-H "Content-Type: application/json" \
--data '{"sessionId":"inspection-demo"}' \
"$CADCAMFUN_URL/api/ai/sessions/state" Возвращенный busy, text, необязательный events, и tasks восстановить вид; воспроизведение этих сохраненных событий не приводит к повторному запуску инструментов. Чтобы остановить работу, отправьте явное прерывание. Закрытие потока само по себе не присоединяется к работникам диалога.
Источник: packages/api/src/groups/ai.ts, apps/sidecar/src/http/ai.ts, и packages/ai/src/service.ts.
Обрабатывайте события без потери состояния
| Событие | Потребительское поведение |
|---|---|
delta / reasoning | Добавить text к тексту или каналу рассуждений соответствующего сеанса. |
tool_call / tool_result | Сопоставить по callId; проверять ok и сохранять диагностику независимо от текста помощника. |
permission_request | Покажите запрос и ответ с его идентификаторами запроса/сеанса и once, always, или reject. |
question_request | Сохраните идентификатор запроса и вопросы; отправлять один массив ответов на вопрос через элементы управления сеансом. |
done | Используйте окончательный text и необязательное использование в качестве завершенного ответа; не добавляйте весь окончательный текст к уже накопленным дельтам. |
error | Отображать message с config, provider, aborted, или internal классификация. |
heartbeat | Поддерживайте соединение, не добавляя контент и не объявляя ход завершенным. |
Элементы управления сеансом принимают только ожидающие идентификаторы разрешений/вопросов в этом разговоре или его дочерних сеансах. Вопрос требует непустых ответов; вопрос с одним выбором отклоняет несколько выбранных значений, а вопрос, который запрещает пользовательские ответы, принимает только указанные метки вариантов.
Источник: packages/api/src/ai-events.ts, packages/ai/src/nikcli/session-controls.ts, и packages/ai/src/heartbeat.ts.
Вложения и навыки пользователя
Каждый запрос в чат принимает до пяти вложений. Поддерживаются изображения PNG, JPEG, WebP и GIF с ограничением 5 MiB для каждого; PDF-файлы имеют ограничение в размере 10 МБ. Текстовые вложения принимают до 2,000,000 символов, при этом тексты длиной до 6,000 символов также включаются в строку. Неподдерживаемые файлы вызывают причину отклонения, а не исчезают молча.
Текстовые вложения хранятся в хранилище в памяти проекта для инструментов импорта: не более 32 имен и 8,000,000 символов для каждого проекта и 32,000,000 символов в не более чем 64 сохраненных проектах. Повторное использование имени заменяет его предыдущий текст. При перезапуске службы это хранилище вложений не сохраняется. Преобразование поставщика сообщает модели о несоответствии возможностей PDF.
Названия навыков пользователей представляют собой слова из строчных букв и цифр, соединенные дефисами, но не более 64 символов. Ограничения описания и тела составляют символы 300 и 20,000 соответственно; Можно загрузить не более 50 навыков пользователя. Встроенные навыки нельзя удалить через API навыков пользователя. Сохраненный навык live результат указывает, вступила ли в силу перезагрузка хоста.
Источник: packages/ai/src/attachments.ts, packages/ai/src/skills/user.ts, и apps/sidecar/src/http/ai.ts.
Диагностика сбоев помощника
- Нет настроенной модели: проверять
/api/ai/statusи/api/ai/providers, затем установите ключ для указанного поставщика. Настроенный флаг доказывает, что сохраненный ключ существует, а не что поставщик принял его. - Неизвестный провайдер или неверный URL: используйте объявленный идентификатор поставщика и базовый URL-адрес HTTP(S). Невстроенному прямому поставщику помимо ключа требуется совместимая конечная точка.
- Сеанс недоступен: восстановиться, используя исходный идентификатор проекта/учетной записи/сеанса. Не придумывайте заменяющий идентификатор проекта для существующего сеанса хоста.
- Очередь ждет бесконечно: проверьте состояние управления сеансом на наличие ожидающих разрешений или вопросов, прежде чем повторять повторный запрос. Используйте явное прерывание, чтобы отменить ход и присоединиться к его работникам.
- Инструмент частично изменил модель: проверить его
tool_diagnostic, включаяmutationApplied, затем прочитайте текущий рисунок. Повторная попытка редактирования без проверки его результата может привести к дублированию геометрии.
Результаты инструмента и типизированные ошибки сохраняют этап, на котором произошел сбой. Ошибка провайдера после успешных инструментов не откатывает эти мутации проекта. Детерминированные проверки CAM и истории остаются доступными отдельно от ответа модели.
Справочник по конечной точке Ассистента
Все вспомогательные маршруты находятся под /api/ai и требуется токен носителя приложения. Токен моста для автономного nikcli открывает только список действий и маршруты вызова и только для его проекта.
| Маршрут | Цель |
|---|---|
POST /api/ai/chat/stream | Начать потоковый ход; ответом является поток вспомогательных событий SSE. |
POST /api/ai/chat/queue | Поставьте в очередь последующее сообщение для занятого сеанса. |
POST /api/ai/chat/abort | Прервать текущий ход сеанса. |
POST /api/ai/permission/reply | Ответьте на запрос разрешения: once, always, или reject. |
POST /api/ai/sessions/state, /sessions/control, /sessions/remove | Чтение состояния сеанса, управление сеансом, удаление одного. |
GET /api/ai/status, /models, /providers, /agents, /prompts | Открытие: готовность, каталог моделей, поставщики с их состоянием конфигурации, агенты-специалисты, оперативные предложения. |
PUT /api/ai/credentials, DELETE /api/ai/credentials/:provider | Сохраните или удалите учетные данные поставщика. |
GET/PUT /api/ai/skills, DELETE /api/ai/skills/:name | Перечисляйте, сохраняйте и удаляйте навыки пользователя. |
GET /api/ai/actions, POST /api/ai/actions/invoke | Каталог действий и прямой вызов (также используется мостом nikcli). |
GET/POST /api/ai/bridge/tokens, DELETE /api/ai/bridge/tokens/:id | Выпускайте, перечисляйте и отзывайте токены моста с ограниченной областью действия. |
POST /api/ai/completion | Одиночное завершение: prompt, systemPrompt, model, temperature; возвращает text и model. |
POST /api/ai/title | Название отрывка разговора. |
POST /api/ai/design-analysis | Предложения с confidence, priority (низкий/средний/высокий) и kind (оптимизация/предупреждение/критическое). |
POST /api/ai/machining-parameters | Cutting speed (m/min), feed (mm/min), depth of cut (mm), stepover (%), coolant (flood/mist/none), engagement (conventional/climb), and warnings. |
POST /api/ai/gcode-optimization | Оптимизированный G-код с указанием изменений и причин для каждой строки, расчетной экономией времени и срока службы инструмента, а также примечаниями. |
POST /api/ai/design-suggestions | Предложения следующего шага с названием, обоснованием и следующим шагом. |
POST /api/ai/analyze-gcode | Проблемы (ошибка/предупреждение/информация с кодом, строкой и сообщением) и статистика: линии, быстрые и резкие перемещения, смена инструмента и границы. |
POST /api/ai/gcode, /toolpath-analysis, /feedback, /proxy | Действия G-кода, информация о траекториях инструмента, обратная связь и прокси-сервер поставщика. |
Ответы анализа на основе модели представляют собой выходные данные модели в типизированной форме. Такие значения, как параметры обработки, представляют собой рекомендации для проверки на основе данных инструмента и ограничений станка, а не проверенных данных резания.
Поля запроса потоковой передачи
| Поле | Ценности | Effect |
|---|---|---|
message | нить | Сообщение пользователя для этого хода. |
sessionId | нить | Продолжить существующий сеанс; пропустите, чтобы начать новый. |
projectId | нить | Проект, контекст и инструменты которого используются в ходе хода. |
drawingId | нить | Рисунок, на котором этот ход может действовать. Он сверяется с проектом до того, как будет допущен поворот, и инструменты поворота воздействуют на этот чертеж и ничего больше. |
mode | general, cad, cam, gcode, toolpath | Фокус поворота. |
permissionMode | auto, ask, approve | Как запрашиваются разрешения инструмента. |
agent | нить | Имя специалиста-агента от /api/ai/agents. |
attachments | [{ name, mime?, data, encoding?: "base64" | "text" }] | До 5 вложений: изображения до 5 МБ, PDF-файлы до 10 МБ и текст до 2,000,000 символов (в сообщение также записываются текстовые файлы до 6,000 символов). |
context, includeContext | строка, логическое значение | Дополнительный контекстный текст и необходимость включения собранного контекста проекта. |
model | выбор модели | Переопределить настроенную модель для этого хода. |
Ограничения и значения по умолчанию
| Лимит | Ценить |
|---|---|
| Собранный контекстный бюджет | 24,000 символов; блок, который не помещается, обрезается маркером, а блок, который будет обрезан ниже 400 символов, вместо этого опускается |
| Контекстный документ проекта | До 8,000 сохраненных символов, 2,000 отправлено в модель |
| Память проекта/привычки пользователя | 1,500 символов каждый |
| Примечания к проекту | Удаляется через 90 дн., если на него не ссылается контекст проекта. |
| Выходные данные инструмента отправляются в модель | 24,000 символов |
| Элементы, созданные за вызов | 40 |
| Выходные токены | 32,000 максимум |
| Сердцебиение | Каждые 5 секунды, пока трансляция активна. |
| Действия с точной геометрией | 60 – второй бюджет; точные отчеты 1.5 секунд |
| Задания ядра | 120-второй срок, включено начало рабочего процесса |
| Фоновые задачи | 4 активно, 16 в очереди, 2 попыток для рабочих операций чтения, решенные задачи хранятся 7 дн. |
| Автоматические продолжения | 50 за запрос; Соединение 5 возобновляется с задержкой 2–30 с. |
| Повторные попытки прямого вызова | 5 вызовы, включая первый; 2 с удваивается до 30 с, соблюдая retry-after |
| Навыки пользователя | 50 навыки; имя до 64 символов (слова в нижнем регистре, соединенные дефисами), описание до 300, тело до 20,000 |
| Получение веб-поиска | 256 КБ на ответ |
| Жетоны моста | 30 дней по умолчанию, 365 дней максимум. |
Читайте результат, а не прозу
Результат работы инструмента находится в tool_result и tool_diagnostic события. Проверьте, была ли применена мутация, прежде чем доверять сообщению помощника о том, что она сделала.
Полный каталог действий
Помощник действует посредством 83 объявленных действий в 13 семействах. Каждое действие объявляет свою схему результата и ее эффекты: что он меняет или достигает помимо чтения открытого документа. Читай семьи(cad, cam, library, memory, research, vcs) в основном не имеют эффекта; их _edit аналоги меняют постоянное состояние. Эффекты указаны в скобках.
| Семья | Считать | Действия (эффекты) |
|---|---|---|
cad | 20 | describe, check, relations, grep, vision (интерфейс), inspect_elements, inspect_layers, inspect_search, inspect_property, drawing, parametric_validate, parametric_inspect, parametric_test, parametric_dfm, parametric_exact, exact, assembly, parametric_fastener, parametric_recipe, parametric_from_element |
cad_edit | 12 | add (рисунок), add_entities (рисунок), modify (рисунок), transform (рисунок), group (рисунок), delete (рисунок), editor (интерфейс+рисование), import (рисунок), parametric_create (рисунок), parametric_update (рисунок), parametric_recipe_create (рисунок), parametric_convert (рисунок) |
cam | 14 | plan_check, review, machine, operations, suggest, compare_setups, analyze, stock, vision (интерфейс), chain_suggest, materials, cutting_data, manufacture, chain_status |
cam_edit | 6 | manufacture (операция+программа), create (операция), update (операция), generate (программа), verify (отчет), stock_set (запас) |
library | 5 | component_list, lookup_component, lookup_material, lookup_tool, lookup_machine_config |
parts | 3 | save (компонент), insert (рисунок), delete (компонент) |
library_edit | 5 | upsert_material (библиотека), upsert_tool (библиотека), upsert_machine_config (библиотека), set_default (библиотека), delete (библиотека) |
memory | 2 | recall, context_read |
memory_edit | 2 | remember (память), context_update (контекст) |
research | 2 | search (внешний), read_attachment |
vcs | 3 | status, diff, list_pull_requests |
vcs_edit | 5 | start_change (история), commit (история), restore (история+рисование), open_pull_request (история), run_workflows (рабочий процесс) |
agent | 4 | start (задача), list, read, cancel (задача) |
| Effect | Значение |
|---|---|
drawing, component, operation, program, stock, report | Постоянные проектные или производственные данные |
library, memory, context | Записи библиотеки, память проекта, контекст рабочей области |
history, workflow | Контроль версий и рабочий процесс |
task | Планировщик делегирования (фоновые агенты) |
interface | Редактор или область просмотра на экране; не настойчивый |
external | Сеть (веб-исследования) |
Действие чтения может иметь только interface или external; каждая запись называет по крайней мере один постоянный эффект. Эффекты объявляются для каждого действия и никогда не выводятся из инструмента, который его реализует.
Как заканчивается призыв к действию
| Исход | Когда |
|---|---|
succeeded | Действие сделало то, что просили. Включает операции чтения с отрицательным результатом, например непройденной проверкой. |
partial | Часть ответа или пакета: complete: false, omitted > 0, непустой skippedили nextOffset на страницу на |
refused | Ничего не сделано: ok: false с ошибкой или тегом (неверный ввод, отказ, недоступен, нечего делать) |
conflict | Документ продолжился: ActionConflict или статус stale/conflict. Прежде чем повторить попытку, проверьте еще раз. |
cancelled | ActionInterrupted |
uncertain | ActionUncertain: запись могла быть зафиксирована, но ответ не был прочитан. Согласование путем проверки; никогда не повторяйте попытку вслепую. |
Записи привязаны к версии чертежа. Зафиксированная запись возвращает ActionCommitted квитанция с previousRevision и revision; запись против устаревшего expectedRevision возвращает ActionConflict с обоими expectedRevision и actualRevision. Та же классификация (actionOutcome) используется хостом, кодовым режимом, рабочим столом и мостом.
{
"ok": false,
"_tag": "ActionConflict",
"actionId": "cad_edit.modify",
"projectId": "…", "drawingId": "…",
"expectedRevision": 41, "actualRevision": 42,
"message": "…"
}