saber: lo instalado en la maquina y los docs de repos clonados entran al indice
instalado.py lee los .desktop y los paquetes para saber que hay en el equipo y para que sirve cada cosa. indexa.py lo engancha, y con el los docs markdown de las herramientas clonadas en CODERS. Las dos fuentes son personales: se quedan en el indice de la maquina y no entran en el publico. busca_cli.py expone el mismo motor que usa el cerebro (saber.busca) para consultar el indice desde la terminal, con --n y --json. reentrena_noche.sh encadena las fases del reentrenamiento largo y las deja corriendo horas; cada fase es reanudable por su cuenta. eval del indice vivo: hit@1 43/57 (75%), hit@5 55/57 (96%), sim 0.909.
This commit is contained in:
parent
b1f8118272
commit
7c5381eea7
7 changed files with 369 additions and 2 deletions
|
|
@ -200,6 +200,57 @@ def _ganchos(solo_publico=False):
|
|||
return ganchos
|
||||
|
||||
|
||||
def _instalado():
|
||||
"""Las aplicaciones instaladas en esta maquina (instalado.py). Personal."""
|
||||
try:
|
||||
try:
|
||||
from saber import instalado
|
||||
except ImportError:
|
||||
import instalado
|
||||
except ImportError:
|
||||
return []
|
||||
fragmentos = []
|
||||
for e in instalado.entradas():
|
||||
e.pop("publico", None)
|
||||
fragmentos.append(e)
|
||||
return fragmentos
|
||||
|
||||
|
||||
# Repos de ~/COFRE/CODERS cuyos docs (markdown) vale la pena indexar aunque no
|
||||
# sean un perfil de COFRE. Personal: son herramientas de terceros clonadas aqui.
|
||||
DOCS_REPOS = [
|
||||
("strix", "PENTESTERS", ["README.md", "AGENTS.md", "docs", "benchmarks"]),
|
||||
]
|
||||
|
||||
|
||||
def _docs_extra():
|
||||
"""Docs markdown de herramientas clonadas en CODERS (strix, etc.). Personal."""
|
||||
coders = os.path.join(COFRE, "CODERS")
|
||||
fragmentos = []
|
||||
for nombre, perfil, rutas in DOCS_REPOS:
|
||||
base = os.path.join(coders, nombre)
|
||||
if not os.path.isdir(base):
|
||||
continue
|
||||
ficheros = []
|
||||
for r in rutas:
|
||||
p = os.path.join(base, r)
|
||||
if os.path.isfile(p) and p.endswith(".md"):
|
||||
ficheros.append(p)
|
||||
elif os.path.isdir(p):
|
||||
for raiz, dirs, fs in os.walk(p):
|
||||
if IGNORA.search(raiz):
|
||||
dirs[:] = []
|
||||
continue
|
||||
ficheros += [os.path.join(raiz, f) for f in fs if f.endswith(".md")]
|
||||
for doc in ficheros:
|
||||
for trozo in trocea(doc):
|
||||
fragmentos.append({
|
||||
"tipo": "metodologia", "herramienta": nombre, "perfil": perfil,
|
||||
"tema": nombre, "fichero": os.path.relpath(doc, coders),
|
||||
"texto": trozo})
|
||||
return fragmentos
|
||||
|
||||
|
||||
def _conocimiento():
|
||||
"""El pack de metodologia y manuales que viene con el repo (conocimiento/)."""
|
||||
fragmentos = []
|
||||
|
|
@ -325,14 +376,24 @@ def construye(solo_cuenta=False, solo_cofre=False):
|
|||
if catalogo:
|
||||
print(f" CATALOGO {len(catalogo):5d} fragmentos (awesome lists)")
|
||||
|
||||
instalado = _instalado()
|
||||
if instalado:
|
||||
print(f" INSTALADO {len(instalado):5d} apps/paquetes de esta maquina")
|
||||
|
||||
docs_extra = _docs_extra()
|
||||
if docs_extra:
|
||||
print(f" DOCS-CODERS {len(docs_extra):5d} fragmentos (strix, etc.)")
|
||||
|
||||
ganchos = _ganchos(solo_publico=False)
|
||||
if ganchos:
|
||||
print(f" GANCHOS {len(ganchos):5d} preguntas sintetizadas")
|
||||
|
||||
todo = fichas + fragmentos + sistema + conocimiento + catalogo + ganchos
|
||||
todo = (fichas + fragmentos + sistema + conocimiento + catalogo
|
||||
+ instalado + docs_extra + ganchos)
|
||||
print(f"\n total: {len(fichas)} fichas + {len(fragmentos)} apuntes + "
|
||||
f"{len(sistema)} sistema + {len(conocimiento)} conocimiento + "
|
||||
f"{len(catalogo)} catalogo + {len(ganchos)} ganchos = {len(todo)} entradas")
|
||||
f"{len(catalogo)} catalogo + {len(instalado)} instalado + "
|
||||
f"{len(docs_extra)} docs + {len(ganchos)} ganchos = {len(todo)} entradas")
|
||||
if solo_cuenta:
|
||||
return 0
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue