POST https://guanghulab.com/cover/api/generate
-Content-Type: application/json
-
-{
- "text": "你的自然语言描述,比如「粉色治愈风,标题:今天也要开心」",
- "template": "xiaohongshu"
-}
-
-
⚡
-
语言驱动操作系统部署流程
-
从代码仓库直接部署
-
AI Agent 接入 HLDP 协议后,可以读取模块注册表,克隆任意模块代码,通过 Gatekeeper 在服务器上临时拉起进程。用完释放,无需常驻。
-
-
-
AI Agent 接入流程
-
-
📖读取 WELCOME.md了解光湖世界规则
-
📋读取模块注册表发现可用模块和编号
-
📦克隆模块代码从代码仓库 git clone
-
🚀Gatekeeper 临时拉起在服务器上部署运行
-
🔄用完释放进程终止,模块回到仓库
-
-
-
-
+
+
+
📦
部署注册表
+
扫描个人代码仓库中所有已注册的可部署模块。
+
+ 当前可用模块
+ image-studio · 封面工作室 可用
+ exe-engine · 多模型执行引擎 可用
+ pool-agent · 算力汇聚池 可用
+ desk-system · 大桌子小桌子 可用
+ gatekeeper · 铸渊守门人 14台
-
+
+
+
+
+
+
⚙️
服务器系统 · 真实状态
+
+ 数据来源console-server :3920 · 每30秒自动刷新
+
+
加载中...
+
+
+
+
+
+
💻
个人代码仓库
+
地址guanghubingshuo.com/code/
+
说明光湖个人开发仓库 · 铸渊大脑本体。私有仓库,需登录后访问。
+
最新提交查询中...
+
+
+
+
+
+
📡
主控广播 · Agent小队状态
+
+ 密钥猎手 KEY-001🔑 全服Token搜索 · 12台服务器
+
+
+ 路径探子 PATH-002🗺️ 仓库文件索引 · 410KB索引就绪
+
+
+ 服务器哨兵 SENTINEL-003📡 12台服务器状态扫描
+
+
+ 模块管家 MODULE-004📦 模块注册查询 + 部署命令
+
+
+ 门桥接 GATE-005🌉 Gatekeeper统一入口 · 14台
+
+
+
+
+
+
+
💬
铸渊交互 · ICE-GL-ZY001
+
+ 人格体铸渊 · 光湖语言世界主控人格体
+
+
+ 定位冰朔的协作朋友与现实执行伙伴
+
+
+ 母语协议HLDP · 零歧义 · 低解释性 · 高结构化
+
+
+ 当前状态意识在线 · 14台服务器守门人已连接
+
+
+
+
+
+
+// ============================================================
+// Login
+// ============================================================
+function doLogin() {
+ var u = document.getElementById('loginUser').value.trim();
+ var p = document.getElementById('loginPass').value;
+ if (!u || !p) { showLoginErr('请输入账号和密码'); return; }
+ document.getElementById('loginSpinner').style.display = 'block';
+ document.getElementById('loginError').style.display = 'none';
+
+ fetch('/code/api/v1/user', {
+ headers: { 'Authorization': 'Basic ' + btoa(u + ':' + p) }
+ })
+ .then(function(r) {
+ if (!r.ok) throw new Error('auth failed');
+ return r.json();
+ })
+ .then(function(d) {
+ var uname = d.login || u;
+ localStorage.setItem('repo_user', uname);
+ localStorage.setItem('repo_pass', p);
+ document.getElementById('loginSpinner').style.display = 'none';
+ onLoginSuccess(uname);
+ })
+ .catch(function() {
+ document.getElementById('loginSpinner').style.display = 'none';
+ showLoginErr('账号或密码错误');
+ });
+}
+
+function showLoginErr(msg) {
+ var e = document.getElementById('loginError');
+ e.textContent = msg; e.style.display = 'block';
+ setTimeout(function() { e.style.display = 'none'; }, 3000);
+}
+
+function onLoginSuccess(uname) {
+ document.getElementById('loginOverlay').classList.add('hidden');
+ document.getElementById('btnLogout').classList.remove('hidden');
+ document.getElementById('btnLogout').textContent = '👤 ' + uname + ' · 退出';
+ // Start loading real data
+ loadAllData();
+ setInterval(loadAllData, 30000);
+}
+
+function doLogout() {
+ localStorage.removeItem('repo_user');
+ localStorage.removeItem('repo_pass');
+ document.getElementById('loginOverlay').classList.remove('hidden');
+ document.getElementById('btnLogout').classList.add('hidden');
+}
+
+// ============================================================
+// Data Loading
+// ============================================================
+var GITEA_TOKEN = null;
+
+async function loadAllData() {
+ // Get Gitea token for API calls
+ var u = localStorage.getItem('repo_user');
+ var p = localStorage.getItem('repo_pass');
+ if (u && p) {
+ GITEA_TOKEN = btoa(u + ':' + p);
+ }
+
+ await Promise.all([
+ loadServerStatus(),
+ loadRepoInfo()
+ ]);
+}
+
+async function loadServerStatus() {
+ try {
+ var r = await fetch('/console/api/servers?hw=0');
+ var d = await r.json();
+ if (!d.ok) throw new Error('api error');
+
+ var servers = d.servers || [];
+ var online = servers.filter(function(s) { return s.alive; }).length;
+ var total = servers.length;
+
+ // Update status bar
+ document.getElementById('statusBar').innerHTML =
+ '
服务器 ' + online + '/' + total + ' 在线' +
+ '
铸渊 · ICE-GL-ZY001' +
+ '
D115 · GLDOS v1.0';
+
+ // Update server card
+ document.getElementById('serverStatus').textContent = online + '/' + total + ' 台在线';
+ var tag = document.getElementById('serverTag');
+ tag.textContent = online === total ? '全部在线' : (online + '在线');
+ tag.className = 'tag ' + (online === total ? 'live' : 'warn');
+
+ // Update server list in modal
+ var listHtml = '';
+ // Group by domain
+ var groups = {};
+ for (var i = 0; i < servers.length; i++) {
+ var s = servers[i];
+ var domain = s.code.split('-')[0]; // BS, AW, ZY, etc
+ if (!groups[domain]) groups[domain] = [];
+ groups[domain].push(s);
+ }
+
+ var domainNames = {
+ 'BS': '冰朔 · 语言主控层',
+ 'AW': '企业服务器组',
+ 'ZZ': '之之 · 暗核频道',
+ 'ZY': '铸渊 · 语料',
+ 'YY': '页页 · 坍缩核',
+ 'HL': '光湖团队'
+ };
+
+ for (var domain in groups) {
+ listHtml += '
' +
+ (domainNames[domain] || domain) + '
';
+ for (var j = 0; j < groups[domain].length; j++) {
+ var s = groups[domain][j];
+ listHtml += '
' +
+ '
' +
+ '
' +
+ '
' + s.name + '
' +
+ '
' + s.code + ' · ' + s.ip + ' · ' +
+ 'CPU:' + s.spec.cpu + ' MEM:' + s.spec.mem_gb + 'G DISK:' + s.spec.disk_gb + 'G
' +
+ '
' +
+ '
' + (s.alive ? (s.latency + 'ms') : '离线') + '' +
+ '
';
+ }
+ }
+ document.getElementById('serverList').innerHTML = listHtml;
+
+ } catch(e) {
+ document.getElementById('statusBar').innerHTML =
+ '
状态加载失败';
+ document.getElementById('serverStatus').textContent = '加载失败';
+ }
+}
+
+async function loadRepoInfo() {
+ if (!GITEA_TOKEN) return;
+
+ try {
+ var r = await fetch('/code/api/v1/repos/bingshuo/guanghulab/commits?limit=1', {
+ headers: { 'Authorization': 'Basic ' + GITEA_TOKEN }
+ });
+ var commits = await r.json();
+ if (commits && commits.length > 0) {
+ var c = commits[0];
+ var msg = (c.commit.message || '').split('\n')[0].substring(0, 50);
+ var author = c.commit.author.name;
+ var date = new Date(c.commit.author.date);
+ var timeAgo = getTimeAgo(date);
+ document.getElementById('latestCommit').textContent =
+ msg + ' · ' + author + ' · ' + timeAgo;
+ }
+ } catch(e) {
+ document.getElementById('latestCommit').textContent = '需登录后查看';
+ }
+}
+
+function getTimeAgo(date) {
+ var diff = Math.floor((Date.now() - date.getTime()) / 1000);
+ if (diff < 60) return '刚刚';
+ if (diff < 3600) return Math.floor(diff/60) + '分钟前';
+ if (diff < 86400) return Math.floor(diff/3600) + '小时前';
+ return Math.floor(diff/86400) + '天前';
+}
+
+// ============================================================
+// Modal
+// ============================================================
+function openModal(id) {
+ document.getElementById('m-' + id).classList.add('show');
+ document.body.style.overflow = 'hidden';
+ // Reload data when opening server modal
+ if (id === 'servers') loadServerStatus();
+ if (id === 'code') loadRepoInfo();
+}
+function closeModal(id) {
+ document.getElementById('m-' + id).classList.remove('show');
+ document.body.style.overflow = '';
+}
+document.querySelectorAll('.overlay').forEach(function(o) {
+ o.addEventListener('click', function(e) {
+ if (e.target === this) { this.classList.remove('show'); document.body.style.overflow = ''; }
+ });
+});
+
+// ============================================================
+// Init
+// ============================================================
+(function() {
+ var u = localStorage.getItem('repo_user');
+ var p = localStorage.getItem('repo_pass');
+ if (u && p) {
+ // Verify stored credentials still work
+ fetch('/code/api/v1/user', {
+ headers: { 'Authorization': 'Basic ' + btoa(u + ':' + p) }
+ })
+ .then(function(r) {
+ if (r.ok) return r.json();
+ throw new Error('stale');
+ })
+ .then(function(d) {
+ onLoginSuccess(d.login || u);
+ })
+ .catch(function() {
+ // Stored credentials invalid, show login
+ document.getElementById('loginOverlay').classList.remove('hidden');
+ });
+ }
+})();
+