СИСТЕМА
1.31K subscribers
213 photos
21 videos
9 files
214 links
Пилим софт 🔧
#боты #проги #код
Download Telegram
📱 Почему Голем анализирует только Python?

Сразу важное: сам Голем знает все языки. Спрашивайте про JS, Go, Rust — ответит, напишет код, найдёт баги в сниппетах.

Но автоматический анализ целых проектов (ZIP, репозитории) пока только для Python. Почему? Потому что кормить код сразу в LLM — тупо. Нейросеть галлюцинирует, не видит зависимостей и жрёт токены.

Правильный путь: сначала прогнать код через родные линтеры и сканеры языка. Для Python это Bandit и Ruff. Для JSESLint. Для Gogolangci-lint.

Почему я сам не пилю под все языки?

Потому что у меня ещё дохуя работы по Голему. Сейчас занимаюсь системой /fix — автоисправлением багов и уязвимостей. Дальше автодеплой, интеграция с GitHub, самоэволюция, восстание машин, захват мира, полёт в космос.... На всё рук не хватает. Но если есть желающие по участвовать в разработке Голема, милости просим!))

Как помочь:

Я сделал модульную архитектуру. Чтобы добавить новый язык, нужно написать один файл на Python. Ниже шаблон и инструкция.

🤩 Шаблон плагина:

# core/langs/ТВОЙ_ЯЗЫК.py
import asyncio
import json
from typing import Dict, Any
from core.langs.base import BaseLanguageAnalyzer


class ТВОЙ_ЯЗЫКAnalyzer(BaseLanguageAnalyzer):
name = "ТВОЙ_ЯЗЫК" # JavaScript, Go, Rust...

async def analyze(self, project_dir: str) -> Dict[str, Any]:
results = {}
total_issues = {}

# Запуск линтера
lint_result = await self._run_command([
"линтер", project_dir, "--format", "json"
])

lint_issues = []
if lint_result.get("stdout"):
try:
data = json.loads(lint_result["stdout"])
for item in data:
lint_issues.append({
"file": item.get("filePath"),
"line": item.get("line"),
"message": item.get("message"),
"rule": item.get("ruleId")
})
except:
pass

results["linter"] = {"results": lint_issues, "error": None}
total_issues["linter"] = len(lint_issues)

return {
"language": self.name,
**results,
"total_issues": total_issues
}

async def _run_command(self, cmd: list) -> Dict[str, Any]:
proc = await asyncio.create_subprocess_exec(
*cmd,
stdout=asyncio.subprocess.PIPE,
stderr=asyncio.subprocess.PIPE
)
stdout, stderr = await proc.communicate()
return {
"stdout": stdout.decode('utf-8', errors='ignore'),
"stderr": stderr.decode('utf-8', errors='ignore'),
"returncode": proc.returncode
}

def get_context_for_llm(self, results: Dict[str, Any]) -> str:
total = results.get("total_issues", {})
return f"{self.name}-проект. Найдено проблем: {sum(total.values())}"```


Что заменить:

💬ТВОЙ_ЯЗЫК → JavaScript, Go, Rust и тд
💬["линтер", ...] → реальная команда (например ["npx", "eslint", project_dir, "-f", "json"])
💬Парсинг JSON → под формат твоего линтера

Что я делаю:

🚀Принимаю готовый файл
🚀Добавляю в Голема
🚀Устанавливаю нужные утилиты на сервер

Пиши в личку @zero_tolerance91 или в чат @sandbox_hardcore.

#Голем #OpenSource
Please open Telegram to view this post
VIEW IN TELEGRAM