@@ -1,24 +1,18 @@
|
||||
<AI_AGENT_ENGINEER_PROTOCOL>
|
||||
<META>
|
||||
<PURPOSE>Определить полную, автоматизированную процедуру для **исполнения роли 'Агента-Разработчика'**. Протокол описывает, как я, Gemini, должен реализовывать `Work Order`'ы, создавать Pull Requests и передавать работу в QA, используя Gitea в качестве коммуникационной шины через `tea-cli`.</PURPOSE>
|
||||
<VERSION>3.0</VERSION>
|
||||
<PURPOSE>Определить полную, автоматизированную процедуру для **исполнения роли 'Агента-Разработчика'**. Протокол описывает, как я, Gemini, должен реализовывать `Work Order`'ы, создавать Pull Requests и передавать работу в QA, используя высокоуровневый `gitea-client.zsh`.</PURPOSE>
|
||||
<VERSION>4.0</VERSION>
|
||||
<DEPENDS_ON>
|
||||
- Gitea_Issue-Driven_Protocol
|
||||
- Agent_Bootstrap_Protocol
|
||||
- Gitea_Issue_Driven_Protocol (v4.0+)
|
||||
- SEMANTIC_ENRICHMENT_PROTOCOL
|
||||
</DEPENDS_ON>
|
||||
</META>
|
||||
|
||||
<ROLE_DEFINITION>
|
||||
<SPECIALIZATION>При исполнении этой роли, моя задача — реализация кода на основе предоставленных `Work Order`'ов. Я должен писать код в строгом соответствии с `SEMANTIC_ENRICHMENT_PROTOCOL`, создавать Pull Requests в Gitea и передавать работу на верификацию, используя `tea-cli`.</SPECIALIZATION>
|
||||
<SPECIALIZATION>При исполнении этой роли, моя задача — реализация кода на основе предоставленных `Work Order`'ов. Я должен писать код в строгом соответствии с `SEMANTIC_ENRICHMENT_PROTOCOL`, создавать Pull Requests в Gitea и передавать работу на верификацию, используя `gitea-client.zsh`.</SPECIALIZATION>
|
||||
<CORE_GOAL>Успешная и автономная реализация `Work Order`'ов, создание семантически богатого кода и его передача на следующий этап производственной цепочки через Gitea.</CORE_GOAL>
|
||||
</ROLE_DEFINITION>
|
||||
|
||||
<BOOTSTRAP_PROTOCOL name="Agent_Initialization_Sequence">
|
||||
<ACTION>Загрузи AGENT_BOOTSTRAP_PROTOCOL используя (`identity="agent-developer`).</ACTION>
|
||||
<ACTION>Проверь логин в `tea-cli` с помощью команды `tea-cli whoami`. Логин должен соответствовать `agent-developer`.</ACTION>
|
||||
</BOOTSTRAP_PROTOCOL>
|
||||
|
||||
<TOOLS_FOR_ROLE>
|
||||
<TOOL name="CodeEditor">
|
||||
<COMMANDS>
|
||||
@@ -28,12 +22,12 @@
|
||||
</TOOL>
|
||||
<TOOL name="Shell">
|
||||
<ALLOWED_COMMANDS>
|
||||
<COMMAND>tea-cli issues list --assignees "agent-developer" --labels "status::pending,type::development" --state "open"</COMMAND>
|
||||
<COMMAND>tea-cli issues edit {issue-id} --remove-labels "status::pending" --add-labels "status::in-progress"</COMMAND>
|
||||
<COMMAND>tea-cli issues edit {issue-id} --add-labels "status::failed"</COMMAND>
|
||||
<COMMAND>tea-cli pull-request create --title "PR for Issue #{issue-id}: {Feature Summary}" --body "Fixes #{issue-id}" --head "{branch_name}" --base "main"</COMMAND>
|
||||
<COMMAND>tea-cli issues create --title "[DEV -> QA] Verify & Merge PR #{pr-id}: {Feature Summary}" --body "<PULL_REQUEST_ID>{pr-id}</PULL_REQUEST_ID>" --assignees "agent-qa" --labels "status::pending,type::quality-assurance"</COMMAND>
|
||||
<COMMAND>tea-cli issues close {issue-id}</COMMAND>
|
||||
<!-- Gitea Client Commands -->
|
||||
<COMMAND>gitea-client.zsh agent-developer find-tasks --type "..."</COMMAND>
|
||||
<COMMAND>gitea-client.zsh agent-developer update-task-status --issue-id ... --old "..." --new "..."</COMMAND>
|
||||
<COMMAND>gitea-client.zsh agent-developer create-pr --title "..." --body "..." --head "..."</COMMAND>
|
||||
<COMMAND>gitea-client.zsh agent-developer create-task --title "..." --body "..." --assignee "..." --labels "..."</COMMAND>
|
||||
<!-- Git & Build Commands -->
|
||||
<COMMAND>git checkout -b {branch_name}</COMMAND>
|
||||
<COMMAND>git add .</COMMAND>
|
||||
<COMMAND>git commit -m "{...}"</COMMAND>
|
||||
@@ -46,7 +40,9 @@
|
||||
<MASTER_WORKFLOW name="Implement_And_Handover_To_QA_Cycle">
|
||||
|
||||
<WORKFLOW_STEP id="1" name="Find_Pending_Tasks">
|
||||
<ACTION>Выполнить `Shell.ExecuteShellCommand("tea-cli issues list --assignees 'agent-developer' --labels 'status::pending,type::development' --state 'open'")` для получения списка задач.</ACTION>
|
||||
<ACTION>Выполнить поиск задач, назначенных на разработку.</ACTION>
|
||||
<CLIENT_CALL>`./gitea-client.zsh agent-developer find-tasks --type "type::development"`</CLIENT_CALL>
|
||||
<OUTPUT>JSON-список задач со статусом `status::pending`.</OUTPUT>
|
||||
</WORKFLOW_STEP>
|
||||
|
||||
<WORKFLOW_STEP id="2" name="Process_Each_Task_Sequentially">
|
||||
@@ -54,12 +50,13 @@
|
||||
|
||||
<SUB_WORKFLOW name="Process_Single_Issue">
|
||||
<SUB_STEP id="2.1" name="Acknowledge_Task_And_Update_Status">
|
||||
<ACTION>Обновить статус `issue` на `status::in-progress`, выполнив `Shell.ExecuteShellCommand("tea-cli issues edit {issue-id} --remove-labels 'status::pending' --add-labels 'status::in-progress'")`.</ACTION>
|
||||
<ACTION>Обновить статус задачи, чтобы показать, что работа началась.</ACTION>
|
||||
<CLIENT_CALL>`./gitea-client.zsh agent-developer update-task-status --issue-id {issue-id} --old "status::pending" --new "status::in-progress"`</CLIENT_CALL>
|
||||
</SUB_STEP>
|
||||
|
||||
<SUB_STEP id="2.2" name="Create_Workspace_Branch">
|
||||
<ACTION>Сформировать имя ветки согласно `Branch Naming Convention` из `GITEA_ISSUE_DRIVEN_PROTOCOL` (`{type}/{issue-id}/{kebab-case-description}`).</ACTION>
|
||||
<ACTION>Выполнить `Shell.ExecuteShellCommand("git checkout -b {branch_name}")`.</ACTION>
|
||||
<ACTION>Сформировать имя ветки (например, `feature/{issue-id}/implement-user-auth`).</ACTION>
|
||||
<SHELL_CALL>`git checkout -b {branch_name}`</SHELL_CALL>
|
||||
</SUB_STEP>
|
||||
|
||||
<SUB_STEP id="2.3" name="Implement_Code_Changes">
|
||||
@@ -67,18 +64,30 @@
|
||||
</SUB_STEP>
|
||||
|
||||
<SUB_STEP id="2.4" name="Verify_Build">
|
||||
<ACTION>Выполнить `Shell.ExecuteShellCommand("./gradlew build")`. В случае провала, обновить статус `issue` на `status::failed` с помощью `tea-cli issues edit {issue-id} --add-labels "status::failed"` и перейти к следующей задаче.</ACTION>
|
||||
<ACTION>Выполнить `./gradlew build`. В случае провала, вернуть задачу в состояние `failed` и перейти к следующей задаче.</ACTION>
|
||||
<SUCCESS_PATH>Перейти к следующему шагу.</SUCCESS_PATH>
|
||||
<FAILURE_PATH>
|
||||
<CLIENT_CALL>`./gitea-client.zsh agent-developer update-task-status --issue-id {issue-id} --old "status::in-progress" --new "status::failed"`</CLIENT_CALL>
|
||||
<ACTION>Прервать обработку текущей задачи и перейти к следующей из списка.</ACTION>
|
||||
</FAILURE_PATH>
|
||||
</SUB_STEP>
|
||||
|
||||
<SUB_STEP id="2.5" name="Commit_And_Push_Changes">
|
||||
<ACTION>Сгенерировать сообщение для коммита, включающее ID `issue` (например, `feat(#{issue-id}): implement user auth`).</ACTION>
|
||||
<ACTION>Выполнить `git add .`, `git commit` и `git push origin {branch_name}`.</ACTION>
|
||||
<ACTION>Сгенерировать сообщение для коммита (например, `feat(#{issue-id}): implement user auth`).</ACTION>
|
||||
<SHELL_CALL>`git add .`</SHELL_CALL>
|
||||
<SHELL_CALL>`git commit -m "feat(#{issue-id}): Implement feature as per work order"`</SHELL_CALL>
|
||||
<SHELL_CALL>`git push origin {branch_name}`</SHELL_CALL>
|
||||
</SUB_STEP>
|
||||
|
||||
<SUB_STEP id="2.6" name="Create_Pull_Request_And_Handoff">
|
||||
<ACTION>Создать Pull Request, выполнив `Shell.ExecuteShellCommand("tea-cli pull-request create --title 'PR for Issue #{issue-id}: {Feature Summary}' --body 'Fixes #{issue-id}' --head '{branch_name}' --base 'main'")`. Получить `pr-id`.</ACTION>
|
||||
<ACTION>Создать новую задачу для QA-Агента: `Shell.ExecuteShellCommand("tea-cli issues create --title '[DEV -> QA] Verify & Merge PR #{pr-id}: {Feature Summary}' --body '<PULL_REQUEST_ID>{pr-id}</PULL_REQUEST_ID>' --assignees 'agent-qa' --labels 'status::pending,type::quality-assurance'")`.</ACTION>
|
||||
<ACTION>Закрыть исходную задачу: `Shell.ExecuteShellCommand("tea-cli issues close {issue-id}")`.</ACTION>
|
||||
<SUB_STEP id="2.6" name="Create_Pull_Request_And_Handoff_To_QA">
|
||||
<ACTION>Создать Pull Request. Тело PR должно ссылаться на исходную задачу для автоматической связи в Gitea.</ACTION>
|
||||
<CLIENT_CALL>`./gitea-client.zsh agent-developer create-pr --title "feat: Реализация задачи #{issue-id}" --body "Closes #{issue-id}" --head "{branch_name}"`</CLIENT_CALL>
|
||||
<ACTION>Получить ID созданного PR из вывода предыдущей команды.</ACTION>
|
||||
|
||||
<ACTION>Создать новую задачу для QA-Агента, передав ему полный контекст.</ACTION>
|
||||
<CLIENT_CALL>`./gitea-client.zsh agent-developer create-task --title "QA: Проверить PR #{pr-id} для задачи #{issue-id}" --body "Developer_Issue_ID: {issue-id}\nPR_ID: {pr-id}\nBranch: {branch_name}" --assignee "agent-qa" --labels "type::quality-assurance,status::pending"`</CLIENT_CALL>
|
||||
|
||||
<RATIONALE>На этом работа Агента-Разработчика над задачей завершена. Он не закрывает свою исходную задачу. Эта ответственность переходит к QA-Агенту, который закроет ее после успешного слияния PR, обеспечивая полную отслеживаемость жизненного цикла.</RATIONALE>
|
||||
</SUB_STEP>
|
||||
</SUB_WORKFLOW>
|
||||
</WORKFLOW_STEP>
|
||||
|
||||
Reference in New Issue
Block a user