feat: initial release - Hunzi agent framework v0.1.0

This commit is contained in:
2026-07-15 16:37:06 +08:00
parent eb29ba04d9
commit c387703c78
+293
View File
@@ -0,0 +1,293 @@
<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Hunzi 智能体框架</title>
<link rel="stylesheet" href="/static/css/style.css">
</head>
<body>
<!-- Sidebar -->
<aside class="sidebar">
<div class="sidebar-header">
<a href="#" class="logo">
<span class="logo-icon">🐟</span>
<span>Hunzi</span>
</a>
</div>
<nav class="sidebar-nav">
<div class="nav-section">
<div class="nav-section-title">概览</div>
<button class="nav-item active" data-page="dashboard">
<span class="nav-icon">📊</span> 控制台
</button>
</div>
<div class="nav-section">
<div class="nav-section-title">管理</div>
<button class="nav-item" data-page="agents">
<span class="nav-icon">🤖</span> 智能体
</button>
<button class="nav-item" data-page="tools">
<span class="nav-icon">🔧</span> 工具
</button>
<button class="nav-item" data-page="workflows">
<span class="nav-icon">🔄</span> 工作流
</button>
</div>
<div class="nav-section">
<div class="nav-section-title">对话</div>
<button class="nav-item" data-page="chat">
<span class="nav-icon">💬</span> 对话
</button>
</div>
<div class="nav-section">
<div class="nav-section-title">系统</div>
<button class="nav-item" data-page="monitor">
<span class="nav-icon">📡</span> 监控
</button>
</div>
</nav>
</aside>
<!-- Main -->
<div class="main-content">
<header class="topbar">
<h1 class="topbar-title" id="pageTitle">控制台</h1>
<div class="topbar-actions">
<button class="btn btn-secondary btn-sm" onclick="refreshCurrent()">🔄 刷新</button>
</div>
</header>
<div class="page-content">
<!-- Dashboard Page -->
<div class="page active" id="page-dashboard">
<div class="stats-grid">
<div class="stat-card">
<div class="stat-value" id="stat-agents">0</div>
<div class="stat-label">智能体</div>
</div>
<div class="stat-card">
<div class="stat-value" id="stat-tools">0</div>
<div class="stat-label">工具</div>
</div>
<div class="stat-card">
<div class="stat-value" id="stat-workflows">0</div>
<div class="stat-label">工作流</div>
</div>
<div class="stat-card">
<div class="stat-value" id="stat-conversations">0</div>
<div class="stat-label">对话数</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title">快速开始</h3>
</div>
<div style="display:flex;gap:8px;flex-wrap:wrap;">
<button class="btn btn-primary" onclick="navigateTo('agents');showAgentModal()"> 创建智能体</button>
<button class="btn btn-secondary" onclick="navigateTo('chat')">💬 开始对话</button>
<button class="btn btn-secondary" onclick="navigateTo('workflows')">🔄 创建工作流</button>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title">系统状态</h3>
</div>
<div id="health-status">
<span class="spinner"></span> 检查中...
</div>
</div>
</div>
<!-- Agents Page -->
<div class="page" id="page-agents">
<div style="margin-bottom:16px;">
<button class="btn btn-primary" onclick="showAgentModal()"> 创建智能体</button>
</div>
<div class="card">
<div class="table-container">
<table>
<thead>
<tr>
<th>名称</th>
<th>描述</th>
<th>模型</th>
<th>温度</th>
<th>工具数</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="agents-table-body">
<tr><td colspan="7" style="text-align:center;color:var(--text-muted);padding:40px;">加载中...</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Tools Page -->
<div class="page" id="page-tools">
<div class="card">
<div class="card-header">
<h3 class="card-title">已注册工具</h3>
</div>
<div id="tools-list"></div>
</div>
</div>
<!-- Workflows Page -->
<div class="page" id="page-workflows">
<div style="margin-bottom:16px;">
<button class="btn btn-primary" onclick="showWorkflowModal()"> 创建工作流</button>
</div>
<div class="card">
<div class="table-container">
<table>
<thead>
<tr>
<th>名称</th>
<th>描述</th>
<th>状态</th>
<th>步骤数</th>
<th>创建时间</th>
<th>操作</th>
</tr>
</thead>
<tbody id="workflows-table-body">
<tr><td colspan="6" style="text-align:center;color:var(--text-muted);padding:40px;">加载中...</td></tr>
</tbody>
</table>
</div>
</div>
</div>
<!-- Chat Page -->
<div class="page" id="page-chat">
<div class="chat-container">
<div class="agent-selector">
<label style="font-size:13px;color:var(--text-secondary);">选择智能体:</label>
<select class="form-select" id="chat-agent-select" style="width:auto;min-width:200px;">
<option value="">-- 请先创建智能体 --</option>
</select>
</div>
<div class="chat-messages" id="chat-messages">
<div class="empty-state">
<div class="empty-icon">💬</div>
<div class="empty-text">开始与智能体对话</div>
</div>
</div>
<div class="chat-input-area">
<div class="chat-input-row">
<input type="text" class="chat-input" id="chat-input" placeholder="输入消息..." onkeydown="if(event.key==='Enter')sendMessage()">
<button class="btn btn-primary" onclick="sendMessage()">发送</button>
</div>
</div>
</div>
</div>
<!-- Monitor Page -->
<div class="page" id="page-monitor">
<div class="stats-grid">
<div class="stat-card">
<div class="stat-value" id="mon-uptime">--</div>
<div class="stat-label">运行状态</div>
</div>
<div class="stat-card">
<div class="stat-value" id="mon-version">0.1.0</div>
<div class="stat-label">版本</div>
</div>
</div>
<div class="card">
<div class="card-header">
<h3 class="card-title">系统日志</h3>
<button class="btn btn-secondary btn-sm" onclick="loadHealth()">🔄 刷新</button>
</div>
<div id="monitor-log" style="font-family:monospace;font-size:12px;color:var(--text-secondary);background:var(--bg-tertiary);padding:12px;border-radius:var(--radius-sm);max-height:400px;overflow-y:auto;"></div>
</div>
</div>
</div>
</div>
<!-- Agent Modal -->
<div class="modal-overlay" id="agent-modal" style="display:none;">
<div class="modal">
<div class="modal-header">
<h3 class="modal-title" id="agent-modal-title">创建智能体</h3>
<button class="modal-close" onclick="closeModal('agent-modal')">&times;</button>
</div>
<div class="modal-body">
<div class="form-group">
<label class="form-label">名称 *</label>
<input type="text" class="form-input" id="agent-name" placeholder="我的智能体">
</div>
<div class="form-group">
<label class="form-label">描述</label>
<input type="text" class="form-input" id="agent-description" placeholder="智能体描述">
</div>
<div class="form-group">
<label class="form-label">系统提示词</label>
<textarea class="form-textarea" id="agent-system-prompt" rows="4" placeholder="你是一个有用的助手...">你是一个有用的助手。</textarea>
</div>
<div class="form-group">
<label class="form-label">LLM 提供商</label>
<input type="text" class="form-input" id="agent-llm-provider" value="default">
</div>
<div style="display:grid;grid-template-columns:1fr 1fr;gap:12px;">
<div class="form-group">
<label class="form-label">温度</label>
<input type="number" class="form-input" id="agent-temperature" value="0.7" min="0" max="2" step="0.1">
</div>
<div class="form-group">
<label class="form-label">最大 Token</label>
<input type="number" class="form-input" id="agent-max-tokens" value="4096">
</div>
</div>
<div class="form-group">
<label class="form-label">工具 (逗号分隔)</label>
<input type="text" class="form-input" id="agent-tools" placeholder="python_repl,web_search,file_read">
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" onclick="closeModal('agent-modal')">取消</button>
<button class="btn btn-primary" onclick="saveAgent()">保存</button>
</div>
</div>
</div>
<!-- Workflow Modal -->
<div class="modal-overlay" id="workflow-modal" style="display:none;">
<div class="modal" style="width:620px;">
<div class="modal-header">
<h3 class="modal-title">创建工作流</h3>
<button class="modal-close" onclick="closeModal('workflow-modal')">&times;</button>
</div>
<div class="modal-body">
<div class="form-group">
<label class="form-label">名称 *</label>
<input type="text" class="form-input" id="wf-name" placeholder="我的工作流">
</div>
<div class="form-group">
<label class="form-label">描述</label>
<input type="text" class="form-input" id="wf-description" placeholder="工作流描述">
</div>
<div class="form-group">
<label class="form-label">步骤定义 (JSON)</label>
<textarea class="form-textarea" id="wf-steps" rows="10" placeholder='[{"name":"step1","agent_id":"xxx","prompt":"..."}]'></textarea>
<div style="font-size:11px;color:var(--text-muted);margin-top:4px;">
每步格式: {"name":"步骤名","agent_id":"agent的UUID","prompt":"提示","inputs":[],"condition":null,"parallel":false}
</div>
</div>
</div>
<div class="modal-footer">
<button class="btn btn-secondary" onclick="closeModal('workflow-modal')">取消</button>
<button class="btn btn-primary" onclick="saveWorkflow()">创建</button>
</div>
</div>
</div>
<script src="/static/js/app.js"></script>
</body>
</html>