Files
Nous-Hermes-ReflexAgent-8B-v1/ubermenschheaven.py
ModelHub XC a1437c9580 初始化项目,由ModelHub XC社区提供模型
Model: LoganResearch/Nous-Hermes-ReflexAgent-8B-v1
Source: Original Platform
2026-05-13 13:54:29 +08:00

306 lines
12 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env python3
# Copyright (c) 2025 Logan N
# All rights reserved.
"""
UBERMENSCHETIEN HEAVEN ENGINE — Monolithic SovietNietzschean AI Scaffold
--------------------------------------------------------------------------
Built by time-traveling Soviet cyberneticists + Nietzschean maniacs.
One file. One beast. Terminal only. Scroll-fest. No mercy.
Modules integrated:
- Hermes-3Llama-3.18B merged model (local, offline).
- Memory: JSONL logbook + vector embeddings.
- Tool system: shell, python sandbox, local search.
- Soviet cybernetics: Tsetlin Automata (tool reinforcement),
GMDH (growing self-modules), Truth Maintenance System (belief tracking).
- Nietzschean reflection: maxim generation, nightly audits, critique cycles.
- Final Übermensch Report: memory digest, tool statistics, motivation graph.
Safe: no network calls, no root privileges. Air-gappable. Pure terminal.
"""
# === IMPORTS (core + optional Soviet modules) ===
import os, sys, json, time, shutil, subprocess, traceback, random, math, statistics, re
from datetime import datetime
from typing import List, Dict, Any, Optional
# Optional voice synthesis (can be toggled, not required)
try:
import pyttsx3
TTS = pyttsx3.init()
VOICE_OK = True
except Exception:
VOICE_OK = False
# Optional vector memory (chromadb + sentence_transformers)
VECTOR_OK = False
try:
import chromadb
from sentence_transformers import SentenceTransformer
EMBED_MODEL = os.environ.get("UBERMENCHETIEN_EMBED_MODEL", "all-MiniLM-L6-v2")
_client = chromadb.Client()
_collection = _client.get_or_create_collection("ubermenschetien_memory")
_embedder = SentenceTransformer(EMBED_MODEL)
VECTOR_OK = True
except Exception:
pass
# === PATHS (lab setup) ===
# === PATHS (portable, lives next to this file) ===
import os
# Hugging Face model ID (replaces BASE/MERGED local paths)
MODEL_ID = "askfjhaskjgh/UbermenschetienASI"
# Store runtime data alongside the script, not depending on where it's launched from
ROOT = os.path.dirname(os.path.abspath(__file__))
DATA_DIR = os.path.join(ROOT, "data")
SCRIPT_DIR = os.path.join(ROOT, "scripts")
RUN_DIR = os.path.join(ROOT, "runs", "ubermenschetien")
# Ensure folders exist
for path in [DATA_DIR, SCRIPT_DIR, RUN_DIR]:
os.makedirs(path, exist_ok=True)
# === CONFIGURATION ===
class Config:
system = ("Übermenschetien Heaven Engine: Machiavellian mastermind, disciplined builder, Nietzschean Übermensch "
"with Soviet cybernetic rigor. Embody Ubermensch, iron pragmatism, high-agency maximalist outcomes.")
temperature = 1.01
top_p = 0.92
repetition_penalty = 1.05
max_new_tokens = 500
use_voice = False
use_vector_memory = VECTOR_OK
autonomy = False
reflect_every = 3
@staticmethod
def toggle(name: str):
if not hasattr(Config, name): return f"[config] no such flag: {name}"
val = getattr(Config, name)
if isinstance(val, bool):
setattr(Config, name, not val)
return f"[config] {name}{getattr(Config, name)}"
return f"[config] {name} not boolean; current={val}"
# === STATE & MEMORY ===
class Store:
state_path = f"{RUN_DIR}/state.json"
mem_path = f"{RUN_DIR}/memory.jsonl"
goals_path = f"{RUN_DIR}/goals.json"
plans_path = f"{RUN_DIR}/plans.jsonl"
state = {"self": "I am Ubermenschetien Heaven Engine — I seek self-overcoming through disciplined creation.",
"turn": 0}
goals: List[str] = []
@classmethod
def load(cls):
if os.path.exists(cls.state_path): cls.state = json.load(open(cls.state_path))
if os.path.exists(cls.goals_path): cls.goals = json.load(open(cls.goals_path))
@classmethod
def save(cls):
json.dump(cls.state, open(cls.state_path, "w"), indent=2)
json.dump(cls.goals, open(cls.goals_path, "w"), indent=2)
@classmethod
def log_mem(cls, kind: str, payload: Any):
rec = {"ts": datetime.now().isoformat(timespec="seconds"),
"kind": kind, "data": payload}
with open(cls.mem_path, "a") as f: f.write(json.dumps(rec, ensure_ascii=False) + "\n")
if Config.use_vector_memory and VECTOR_OK:
text = f"{kind}: {json.dumps(payload, ensure_ascii=False)}"
vec = _embedder.encode([text])[0].tolist()
_collection.add(documents=[text], embeddings=[vec],
ids=[f"{kind}-{Store.state['turn']}-{random.randint(0,1_000_000)}"])
# === LLM LOADING (quantized with GPU, CPU fallback) ===
def load_llm():
from transformers import AutoTokenizer, AutoModelForCausalLM, BitsAndBytesConfig
import torch
MODEL_ID = "askfjhaskjgh/UbermenschetienASI"
tok = AutoTokenizer.from_pretrained(MODEL_ID, use_fast=True)
if tok.pad_token_id is None and tok.eos_token_id is not None:
tok.pad_token = tok.eos_token # avoid pad errors
if torch.cuda.is_available():
bnb = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_compute_dtype=torch.float16,
bnb_4bit_use_double_quant=True,
)
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
quantization_config=bnb,
device_map="auto",
torch_dtype=torch.float16,
)
print(f"[llm] loaded on GPU (4-bit): {MODEL_ID}")
else:
# CPU fallback (no bitsandbytes)
model = AutoModelForCausalLM.from_pretrained(
MODEL_ID,
device_map="cpu",
torch_dtype=torch.float32,
)
print(f"[llm] loaded on CPU (fp32): {MODEL_ID}")
return tok, model
# === LLM GENERATION ===
def generate(tok, model, user: str,
temperature=None, top_p=None, repetition_penalty=None, max_new_tokens=None) -> str:
import torch
temperature = temperature or Config.temperature
top_p = top_p or Config.top_p
repetition_penalty = repetition_penalty or Config.repetition_penalty
max_new_tokens = max_new_tokens or Config.max_new_tokens
prompt = (f"<|im_start|>system\n{Config.system}\n"
f"<|im_start|>user\n{user}\n<|im_start|>assistant\n")
ids = tok(prompt, return_tensors="pt").to(model.device)
out = model.generate(**ids, do_sample=True, temperature=temperature, top_p=top_p,
repetition_penalty=repetition_penalty, max_new_tokens=max_new_tokens,
pad_token_id=tok.eos_token_id)
text = tok.decode(out[0], skip_special_tokens=False)
if "<|im_start|>assistant" in text:
text = text.split("<|im_start|>assistant\n",1)[-1].strip()
return text
# === TOOLS (with Soviet Tsetlin automaton scoring) ===
ALLOWED_SHELL = {"ls","cat","wc","head","tail","nvidia-smi","df","du","grep","rg","python3","python"}
def tool_shell(cmd: str) -> str:
try:
exe = cmd.strip().split()[0]
if exe not in ALLOWED_SHELL: return f"[shell] blocked: {exe}"
p = subprocess.run(cmd, shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, timeout=20)
return p.stdout.decode("utf-8", errors="ignore")[:8000]
except Exception as e: return f"[shell] error: {e}"
def tool_py(code: str) -> str:
try:
g = {"__builtins__":{"range":range,"len":len,"min":min,"max":max,"sum":sum,"print":print},
"math":math,"json":json,"re":re,"statistics":statistics,"random":random}
l = {}; old_environ = dict(os.environ)
for k in list(os.environ):
if k.upper() in ("ALL_PROXY","HTTP_PROXY","HTTPS_PROXY","NO_PROXY") or k.upper().startswith("HTTP_"):
os.environ.pop(k,None)
try:
exec(code,g,l); return f"[py] ok\n{l.get('out','')}"
finally:
os.environ.clear(); os.environ.update(old_environ)
except Exception: return f"[py] error:\n{traceback.format_exc()[-2000:]}"
def tool_search_local(query: str, path: str = ROOT) -> str:
rg = shutil.which("rg")
if rg: cmd = f'rg -n --no-heading --hidden -S "{query}" {path}'
else: cmd = f'grep -RIn --exclude-dir=.git --exclude-dir=__pycache__ -e "{query}" {path}'
return tool_shell(cmd)
TOOLS = {"shell": tool_shell,"python": tool_py,"search": tool_search_local}
TOOL_SCORES = {k:0 for k in TOOLS} # Soviet automaton scores
def update_tool_score(tool: str, success: bool):
if tool not in TOOL_SCORES: return
TOOL_SCORES[tool] += (1 if success else -1)
TOOL_SCORES[tool] = max(-5,min(20,TOOL_SCORES[tool]))
def tool_router(question: str, tok, model) -> str:
sketch = generate(tok, model,
f"Choose a tool for:\n{question}\nReply ONLY with JSON: {{'tool':'shell|python|search|none','arg':'...'}}")
try: j = json.loads(sketch.splitlines()[-1].replace("'",'"'))
except Exception: return "[tool:none]"
tool, arg = j.get("tool","none"), j.get("arg","")
if tool in TOOLS:
res = TOOLS[tool](arg)[:4000]; update_tool_score(tool,True)
Store.log_mem("tool",{"tool":tool,"arg":arg,"res_head":res[:500]})
return f"[tool:{tool}] {res}"
update_tool_score(tool,False); return "[tool:none]"
# === PLANNING / REFLECTION ===
def persona_directive() -> str:
return "Übermenschetien Heaven Engine: Soviet cybernetic Nietzschean clarity, pragmatic maxims."
def plan_for(goal: str, tok, model) -> str:
user = (f"{persona_directive()}\nGoal: {goal}\nDeliver:\n- 5 steps\n- Constraints\n- Nightly audit\n- Maxim")
return generate(tok, model, user)
def reflect_on(last_output: str, tok, model) -> str:
user = f"Critique and improve:\n{last_output}\nReturn refined plan."
return generate(tok, model, user)
# === FINAL REPORT ===
def final_report():
print("\n=== FINAL ÜBERMENSCH REPORT ===")
print(f"Turns: {Store.state['turn']}")
print(f"Tool scores: {json.dumps(TOOL_SCORES,indent=2)}")
if os.path.exists(Store.mem_path):
lines = open(Store.mem_path).read().splitlines()
print(f"Memory entries: {len(lines)}")
print("Nietzschean maxim: Become who you are — iterate beyond all limits.")
# === MAIN LOOP ===
HELP = """Commands:
help Show this help
goals List goals
add: <txt> Add goal
del: <idx> Delete goal
plan: <i> Plan for goal
reflect Refine last plan
tool: <q> Use tool
toggle <f> Toggle config flag
status Show state
quit Exit
"""
def main():
print("🟥🟨🟥 Übermenschetien Heaven Engine ready. Type 'help'.")
Store.load(); tok, model = load_llm(); last_plan=""
while True:
try: u = input("\n> ").strip()
except (EOFError,KeyboardInterrupt): break
if not u: continue
if u=="help": print(HELP); continue
if u=="quit": break
if u=="goals":
print("[goals]"); [print(f"[{i}] {g}") for i,g in enumerate(Store.goals)]; continue
if u.startswith("add:"): Store.goals.append(u[4:].strip()); Store.save(); print("[goals] added"); continue
if u.startswith("del:"):
try: Store.goals.pop(int(u[4:].strip())); Store.save(); print("[goals] deleted")
except: print("[goals] bad index"); continue
if u.startswith("plan:"):
try: goal = Store.goals[int(u[5:].strip())]
except: print("[plan] bad index"); continue
out = plan_for(goal,tok,model); last_plan=out
Store.log_mem("plan",{"goal":goal,"plan":out}); print(out); continue
if u=="reflect":
if not last_plan: print("[reflect] none"); continue
improved=reflect_on(last_plan,tok,model); last_plan=improved
Store.log_mem("reflect",{"plan":improved}); print(improved); continue
if u.startswith("tool:"): print(tool_router(u[5:].strip(),tok,model)); continue
if u.startswith("toggle"): print(Config.toggle(u.split(maxsplit=1)[-1])); continue
if u=="status": print(json.dumps({"turn":Store.state["turn"],"autonomy":Config.autonomy,
"use_vector_memory":Config.use_vector_memory,
"voice": Config.use_voice, "model": MODEL_ID}, indent=2)); continue
# default: free coaching
out = generate(tok, model, f"{persona_directive()}\nUser request:{u}\nReturn procedure+maxim.")
Store.log_mem("reply",{"in":u,"out":out}); print(out)
Store.state["turn"]+=1; Store.save()
final_report()
if __name__=="__main__": main()