Консольная утилита поиска и скачивания изображений для вызова ИИ-агентом #1
Open
opened 2026-11-02 22:36:11 +00:00 by labadmin
·
2 comments
No Branch/Tag Specified
Labels
Clear labels
auto:allowed
claim:active
needs:architecture
role:architect
role:developer
role:product-manager
role:reviewer
role:team-lead
role:tester
status:accepted
status:blocked
status:done
status:draft-acceptance
status:draft-development
status:idea
status:in-architecture
status:in-development
status:in-lead
status:in-review
status:in-test
status:needs-development
status:needs-test
status:proposed
status:ready-for-architecture
status:ready-for-development
status:ready-for-lead
status:ready-for-test
status:waiting-for-acceptance
status:waiting-for-dependency
type:bug
Autonomous agents may claim this issue when role and status labels match.
A non-expired agent claim exists in issue or pull request comments.
Requires architecture planning before implementation.
Turns architecture-marked proposals into ADR-like plans and lead-ready follow-up work.
Implements code and tests, opens PRs, and fixes CI failures.
Creates product proposals from ideas and feedback.
Reviews diffs, tests, CI reports, and returns or accepts work.
Clarifies scope, decomposes tasks, and gates development readiness.
Runs final product acceptance and creates developer bug follow-ups.
Work passed review and can be reported or merged by the outer workflow.
Automation cannot continue without human input.
Workflow item is complete.
Teamlead-agent has created a final acceptance task draft that is not claimable yet.
Teamlead-agent has created a developer task draft that is not claimable yet.
Raw user idea or feedback that has not been shaped yet.
Architect is writing an ADR-like plan or lead follow-up.
Developer is implementing or fixing the task.
Teamlead-agent is decomposing architecture into developer work.
PR is ready for review after CI/deploy feedback.
Tester-agent is running final product acceptance.
Review or CI found issues that must return to development.
Work needs final acceptance testing or retesting.
Product proposal exists, but it is not ready for development.
Proposal needs architecture review before team lead planning.
Task is scoped and may be assigned to a developer.
Proposal is ready for technical planning.
Merged product work is ready for final tester acceptance.
Final acceptance is waiting for all implementation dependencies to complete.
Task is scoped but cannot be claimed until prerequisite child tasks are complete.
Broken or incorrect behavior.
Milestone
No items
No Milestone
Projects
Clear projects
No projects
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: projects/product-54354138-1#1
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Summary
Нужно консольное приложение (CLI), запускаемое как обычный исполняемый процесс, которое по заданной теме находит изображения в бесплатных источниках и по флагу скачивает их. Инструмент предназначен для вызова ИИ-агентом через tool calling, поэтому результат должен быть машиночитаемым и однозначно различать успех, отсутствие подходящих изображений и ошибку. Доступ бесплатный, без API-ключей и регистрации. Источник не принципиален, но выбирается вызывающей стороной, схема допускает несколько подключаемых источников, и в поставку входит как минимум один рабочий бесплатный источник. Задаются тема, желаемый размер и формат из начального набора png/ico. Возвращаются только изображения запрошенного формата, не меньшие желаемого размера; если таких форматов нет — явное сообщение, что изображений такого формата нет; если подходящих по размеру нет — явное сообщение, что подходящих по размеру нет. При наличии флага масштабирования изображения больше желаемого размера уменьшаются до желаемого. Запуск — как обычный процесс, без Docker. Сетевой доступ к бесплатным источникам согласован пользователем вне этого обсуждения (Wikimedia Commons и Openverse, HTTPS 443, включая поддомены).
Requirements
REQ-001REQ-001 Утилита является консольным приложением, запускаемым как обычный исполняемый процесс; параметры запуска задают тему поиска, желаемый размер, формат, источник, флаг скачивания и флаг масштабирования.REQ-002REQ-002 Результат работы выводится в машиночитаемом структурированном виде, пригодном для tool calling ИИ-агентом: перечень найденных изображений с источником, URL, форматом и фактическими размерами, а также однозначное различие между успехом, отсутствием подходящих изображений и ошибкой.REQ-003REQ-003 Доступ к источникам бесплатный, без API-ключей, регистрации и иных учётных данных; поиск выполняется без настройки секретов.REQ-004REQ-004 Источник изображений выбирается вызывающей стороной через параметр; схема допускает подключение нескольких источников, и в поставку входит как минимум один рабочий бесплатный источник; неизвестный источник даёт явную ошибку с перечнем доступных источников.REQ-005REQ-005 Поиск выполняется по теме (текстовому запросу), задаваемой вызывающей стороной; количество возвращаемых результатов может быть ограничено вызывающей стороной.REQ-006REQ-006 Вызывающая сторона задаёт желаемый размер изображения (ширина/высота); в результатах по каждому изображению указываются его фактические размеры.REQ-007REQ-007 Формат изображения выбирается из начального набора png и ico; возвращаются только файлы запрошенного формата, а при отсутствии таких изображений у источника выдаётся явное сообщение, что изображений такого формата нет, отличимое от ошибки доступа к источнику.REQ-008REQ-008 Возвращаются только изображения, размер которых не меньше желаемого по обоим измерениям; если у источника по теме нет изображений подходящего размера, выдаётся явное сообщение, что подходящих по размеру нет, отличимое от сообщения об отсутствии формата и от ошибки доступа.REQ-009REQ-009 По флагу скачивания найденные изображения сохраняются в каталог, указанный вызывающей стороной, а в результате сообщаются пути сохранённых файлов.REQ-010REQ-010 При наличии флага масштабирования изображения, доступные только в размере больше желаемого, уменьшаются до желаемого размера; без этого флага изображения сохраняются без изменения размеров.REQ-011REQ-011 Утилита поставляется и запускается как обычный исполняемый процесс, без Docker и контейнеров.Artifacts
None recorded.
Delivery Requirements
native_process(requirements=['REQ-011'])External Inputs
None recorded.
Acceptance Criteria
AC-001AC-001 Для заданной темы утилита возвращает машиночитаемый список результатов, в каждом элементе есть URL, формат и фактические размеры; успешный поиск, отсутствие подходящих изображений и сбой различимы по коду завершения и структуре вывода.AC-002AC-002 Поиск успешно выполняется в окружении, где не задано ни одного API-ключа или учётных данных.AC-003AC-003 Указание источника в параметрах приводит к использованию соответствующего источника, и использованный источник явно отражён в выводе; неизвестный источник даёт явную ошибку с перечнем доступных источников.AC-004AC-004 Запрос формата png возвращает только реальные png-файлы; запрос ico при отсутствии ico у источника даёт явное сообщение о том, что изображений такого формата нет, и это сообщение отличимо от сообщения об ошибке доступа к источнику.AC-005AC-005 При запросе желаемого размера в выдаче присутствуют только изображения, размер которых не меньше желаемого по обоим измерениям, и для каждого указаны фактические размеры.AC-006AC-006 Если по теме у источника есть только изображения меньше желаемого размера, вывод содержит явное сообщение, что подходящих по размеру нет, и это сообщение отличимо от сообщения об отсутствии формата и от ошибки доступа.AC-007AC-007 При указании флага скачивания файлы физически сохранены в заданном каталоге, пути в выводе соответствуют существующим файлам, и файлы открываются как изображения заявленного формата.AC-008AC-008 При наличии флага масштабирования изображение, найденное в размере больше желаемого, сохраняется с размерами, равными желаемым; без этого флага фактические размеры сохранённого файла совпадают с исходными.AC-009AC-009 Утилита запускается как обычный исполняемый процесс без Docker и без контейнерной обвязки.AC-010AC-010 Реальная проверка на известном результате: запрос по теме, для которой у выбранного источника заведомо есть изображения, возвращает непустой список с рабочими ссылками на файлы (проверка на живом источнике, а не только на синтетических данных).AC-011AC-011 При запрещённом сетевом доступе к источнику утилита завершается явной ошибкой доступа и не выдаёт результат, выглядящий как успешный поиск.Out of Scope
OOS-001Генерация изображений и любые операции редактирования, кроме уменьшения до желаемого размераOOS-002Форматы изображений вне начального набора png/icoOOS-003Платные и требующие API-ключей источники изображенийOOS-004Запуск в Docker/контейнерахOOS-005Графический интерфейс пользователяUnknowns / Risks
UNK-001Какой именно бесплатный источник реализуется первым и покрывает ли его API фильтрацию по размеру/формату или фильтрация выполняется на стороне клиента (влияет на объём загружаемых данных)UNK-002Практическая доступность файлов формата ico у бесплатных источников: ожидаемо такие запросы будут часто возвращать сообщение об отсутствии форматаUNK-003Ограничения частоты запросов и требования к идентификации клиента (user agent) у выбранного бесплатного источникаUNK-004Каталог сохранения по умолчанию, если вызывающая сторона не задала его явноUNK-005Как сообщать частичный успех скачивания, когда часть файлов сохранилась, а часть нетWorkflow
ready_for_architectureagent-product-contract.v1.jsonb7622222e96d133d4c82b5d716cb2963e8b786272d2735fe9033295141b75ba6https://git.p2prod.ru/platform/product-requests/issues/1product-manager-agentArchitecture Plan
Context
Product request issue #1: a console (CLI) image search/download utility invoked by an AI agent via tool calling. Contract requirements REQ-001..REQ-011: parameters for topic, desired size, format (initial set png/ico), source, download flag and resize flag; machine-readable structured output distinguishing success / no-images-of-format / no-images-of-size / source-access error (AC-001, AC-011); free access without API keys or secrets (REQ-003, AC-002); pluggable source selection with explicit unknown-source error listing available sources (REQ-004, AC-003); only requested format returned and explicit "no images of this format" message distinct from access errors (REQ-007, AC-004); only images not smaller than the desired size in both dimensions, with actual dimensions reported (REQ-006, REQ-008, AC-005, AC-006); download into a caller-specified directory with reported paths (REQ-009, AC-007); downscale-only resizing behind a flag, unchanged dimensions without the flag (REQ-010, AC-008); live-source verification on a known topic (AC-010); delivered and run as a plain executable process with no Docker/containers (REQ-011, AC-009). Approved network access is Wikimedia Commons and Open
Decision
Shape: script_toolkit (Python 3, command_line runtime, cli interface, native_process delivery, repository_root placement). This is the narrowest catalog-template-backed shape that covers every resulting language, runtime, public interface and delivery form: the deliverable is one command-line program that speaks over argv/stdout, there is no HTTP server and no second language, and REQ-011/AC-009 forbid container delivery. 'file_io' is intentionally not declared as a separate public interface: writing downloaded files into the caller-specified directory (REQ-009) and reporting the resulting paths (REQ-002) is internal behavior of the CLI invocation, not an independent repository interface, and declaring it would leave the shape without a supported facade template. Facade: initialize (currently missing) at repository_root, since no product artifact fixes a component root. Implementation direction: a single Python CLI entry module parsed with argparse (topic, desired width/height, format png|ico, source, --count limit, --download, --output-dir, --resize), a small source-adapter registry (Wikimedia Commons MediaWiki API first, Openverse as a second adapter behind the same registry) so
Constraints
Risks
Team Lead Handoff
architect-agent completed architecture planning and created team lead follow-up #2.