Задача

Разобраться с Qwen Coder, написать что-то простое и полезное на нем.

Ставим Qwen Coder

curl -qL https://www.npmjs.com/install.sh | sh

npm i -g @qwen-code/qwen-code

Донастраиваем:

Добавляем в файл .env в корне проекта:

# Qwen Code settings
OPENAI_API_KEY="*****"
OPENAI_BASE_URL="https://openrouter.ai/api/v1"
OPENAI_MODEL="qwen/qwen3-coder:free"

Или выполняем команды:

export OPENAI_API_KEY="******"
export OPENAI_BASE_URL="https://openrouter.ai/api/v1"
export OPENAI_MODEL="qwen/qwen3-coder:free"

Где OPENAI_API_KEY="******" – ключик который надо купить онлайн.

Проверяем:

# run in console:
qwen

# to exit:
/exit

Заработало!

Пишем промты для Qwen

Важно: отключаем VPN при работе с консолью qwenVPN не работает).

Работает в консольке:

Результат: создан файл hello.php

<?php
echo "Hello, World!";
?>

Доработки также работают:


<?php
echo "Hello, World!" . PHP_EOL;
echo "Current date and time: " . date('Y-m-d H:i:s') . PHP_EOL;
?>

Ставим плагин для IDE PhpStorm : Onuro

Плагин поддерживает множество нейросетей, в т.ч. Qwen:


Решаем задачу в плагине Onuro

Промт для плагина:

Write script that outputs in console useful data about current project environment (versions of installed php, laravel framework, nginx, etc. – for your choice) using bash.

Paste your code with comments in the top of script into file: scripts/linux/server_data.sh

Или то же самое для консоли:

qwen -p "Write script that outputs in console useful data about current project environment (versions of installed php, laravel framework, nginx, etc. - for your choice) using bash. Paste your code with comments in the top of script into file: scripts/linux/server_data.sh"

Решение:

Created 📄scripts/linux/server_data.sh that displays comprehensive environment information including:

  • System info: OS, architecture, hostname
  • PHP: Version, path, extensions count
  • Laravel: Framework version, environment, debug mode
  • Composer: Version and dependency count
  • Node.js: Version, NPM, package count
  • Nginx: Version, path, config status
  • Docker: Version and running containers
  • Database: Connection type, host, database name
  • SSL: Certificate directory and expiry date

The script includes error handling and fallbacks for missing tools or files.

#!/bin/bash

# Script to display useful information about current project environment
# Shows versions of installed software and system information
# Usage: bash scripts/linux/server_info.sh

echo "=== PROJECT ENVIRONMENT INFORMATION ==="
echo ""

# System Information
echo "[SYSTEM INFO]"
echo "OS: $(uname -s) $(uname -r)"
echo "Architecture: $(uname -m)"
echo "Hostname: $(hostname)"
echo ""

# PHP Information
echo "[PHP]"
if command -v php &> /dev/null; then
    echo "PHP Version: $(php -v | head -n1)"
    echo "PHP CLI Path: $(which php)"
    echo "PHP Extensions: $(php -m | wc -l) loaded"
else
    echo "PHP: Not installed or not in PATH"
fi
echo ""

# Laravel Information
echo "[LARAVEL]"
if [ -f "artisan" ]; then
    echo "Laravel Version: $(php artisan --version 2>/dev/null || echo "Unable to detect")"
    echo "Environment: $(grep APP_ENV .env 2>/dev/null | cut -d'=' -f2 || echo "Unknown")"
    echo "Debug Mode: $(grep APP_DEBUG .env 2>/dev/null | cut -d'=' -f2 || echo "Unknown")"
else
    echo "Laravel: artisan file not found"
fi
echo ""

# Composer Information
echo "[COMPOSER]"
if command -v composer &> /dev/null; then
    echo "Composer Version: $(composer --version | head -n1)"
    if [ -f "composer.lock" ]; then
        echo "Dependencies: $(jq -r '.packages | length' composer.lock 2>/dev/null || echo "Unable to count") packages"
    fi
else
    echo "Composer: Not installed or not in PATH"
fi

echo ""

# Node.js Information
echo "[NODE.JS]"
if command -v node &> /dev/null; then
    echo "Node.js Version: $(node --version)"
    echo "NPM Version: $(npm --version)"
    if [ -f "package.json" ]; then
        echo "Dependencies: $(jq -r '.dependencies | length' package.json 2>/dev/null || echo "Unable to count") packages"
    fi
else
    echo "Node.js: Not installed or not in PATH"
fi
echo ""

# Nginx Information
echo "[NGINX]"
if command -v nginx &> /dev/null; then
    echo "Nginx Version: $(nginx -v 2>&1)"
    echo "Nginx Path: $(which nginx)"
    echo "Config Test: $(nginx -t 2>&1 | tail -n1)"
else
    echo "Nginx: Not installed or not in PATH"
fi
echo ""

# Docker Information
echo "[DOCKER]"
if command -v docker &> /dev/null; then
    echo "Docker Version: $(docker --version)"
    echo "Running Containers: $(docker ps --format "table {{.Names}}\t{{.Status}}" 2>/dev/null || echo "Unable to list")"
else
    echo "Docker: Not installed or not in PATH"
fi
echo ""

# Database Information
echo "[DATABASE]"
DB_CONNECTION=$(grep DB_CONNECTION .env 2>/dev/null | cut -d'=' -f2)
if [ ! -z "$DB_CONNECTION" ]; then
    echo "Database Type: $DB_CONNECTION"
    echo "Database Host: $(grep DB_HOST .env 2>/dev/null | cut -d'=' -f2 || echo "Unknown")"
    echo "Database Name: $(grep DB_DATABASE .env 2>/dev/null | cut -d'=' -f2 || echo "Unknown")"
else
    echo "Database: Configuration not found in .env"
fi
echo ""

# SSL Certificates
echo "[SSL CERTIFICATES]"
if [ -d "certs" ]; then
    echo "Certificates directory: Found"
    if [ -f "certs/laravel.crt" ]; then
        echo "SSL Certificate: $(openssl x509 -in certs/laravel.crt -noout -dates 2>/dev/null | grep notAfter | cut -d'=' -f2 || echo "Unable to read expiry")"
    else
        echo "SSL Certificate: Not found"
    fi
else
    echo "Certificates directory: Not found"
fi
echo ""

echo "=== END OF ENVIRONMENT INFO ==="
Запускаем скрипт:

 ./scripts/linux/server_info.sh
=== PROJECT ENVIRONMENT INFORMATION ===

[SYSTEM INFO]
OS: Linux 6.6.87.2-microsoft-standard-WSL2
Architecture: x86_64
Hostname: MACHEMIKE

[PHP]
PHP Version: PHP 8.3.23 (cli) (built: Jul  3 2025 16:10:55) (NTS)
PHP CLI Path: /usr/bin/php
PHP Extensions: 59 loaded

[LARAVEL]
Laravel Version: Laravel Framework 11.20.0
Environment: local
Debug Mode: true

[COMPOSER]
Composer Version: Composer 2.2.6 2022-02-04 17:00:38
Dependencies: 119 packages

(....)
=== END OF ENVIRONMENT INFO ===

 


Дорешиваем задачу в консоли

Команда/промт:

qwen -p "Доработай файл Makefile в корне проекта: добавь сюда команду 'info': вызывающую скрипт: scripts/linux/server_info.sh. Проверь что команда работает, запусти: wsl make info."

Ответ:

Понял. Давайте сначала найдем и изучим текущий `Makefile` в корне проекта, 
чтобы понимать его структуру и правильно добавить новую команду.

Теперь давайте проверим, существует ли скрипт `scripts/linux/server_info.sh` и какой у него формат.

Отлично, скрипт существует. Теперь добавим команду `info` в `Makefile`, которая будет вызывать этот скрипт. 
Я добавлю её в секцию "COMMON", рядом с другими похожими командами.

Работает. Но мне в консоли не удобно работать, буду работать в плагине.


ИТОГО

Написали с помощью ИИ Qwen скрипт для получения данных о сервере (код выше):

make info


 

 

Tags

Нет Ответов

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

This site uses Akismet to reduce spam. Learn how your comment data is processed.

Рубрики


Подпишись на новости
👋

Есть вопросы?