EternalAI/index.html

345 lines
16 KiB
HTML
Raw Permalink 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.

<!DOCTYPE html>
<html lang="zh-CN">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Eternal AI - 在记忆与陪伴中,遇见更懂你的 AI</title>
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Noto+Serif+SC:wght@400;600;700&family=Inter:wght@300;400;500;600&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="styles.css?v=5" />
</head>
<body>
<main class="app">
<!-- Landing View -->
<section id="landing" class="view view--landing active">
<div class="cards">
<article class="card card--characters" data-action="open-auth">
<div class="card__frame" aria-hidden="true"></div>
<div class="card__content">
<h2 class="card__title">我的 [XXX ]</h2>
<p class="card__desc">登录后管理你的角色</p>
<button class="btn btn--outline" type="button">登录 / 注册</button>
</div>
</article>
<article class="card card--distill" data-action="open-distill">
<div class="card__frame" aria-hidden="true"></div>
<div class="card__content">
<h2 class="card__title">蒸馏前任</h2>
<p class="card__desc">留住你心里的 ta</p>
<button class="btn btn--primary" type="button">
开始蒸馏
<span class="btn__arrow"></span>
</button>
</div>
</article>
</div>
<footer class="landing-footer">
<a href="#about" class="footer-link">关于 Eternal AI →</a>
<a href="#creator" class="footer-link" data-action="open-creator">我是创作者,申请入驻 →</a>
</footer>
</section>
<!-- Creator View -->
<section id="creator" class="view view--creator">
<header class="creator-header">
<button class="icon-btn" type="button" data-action="back" aria-label="返回"></button>
<div class="creator-brand">
<span class="creator-brand__name">Eternal AI</span>
<span class="creator-brand__step">人设蒸馏器</span>
</div>
<div class="stepper" aria-hidden="true">
<span class="stepper__dot active"></span>
<span class="stepper__dot"></span>
<span class="stepper__dot"></span>
<span class="stepper__dot"></span>
</div>
</header>
<form id="character-form" class="creator-form" autocomplete="off">
<!-- Step 1: Identity -->
<fieldset class="form-step active" data-step="0">
<legend class="form-step__legend">基础身份</legend>
<div class="field-group">
<label class="field">
<span class="field__label">角色代号 <small>(英文/数字,用于 config.yaml</small></span>
<input class="field__input" name="agentId" type="text" placeholder="eternal_lover_001" required pattern="[a-zA-Z0-9_]+" />
</label>
<label class="field">
<span class="field__label">显示名称</span>
<input class="field__input" name="displayName" type="text" placeholder=" ta 的名字" required />
</label>
<label class="field field--half">
<span class="field__label">性别</span>
<select class="field__input" name="gender">
<option value="unknown">未知</option>
<option value="female"></option>
<option value="male"></option>
<option value="nonbinary">非二元</option>
</select>
</label>
<label class="field field--half">
<span class="field__label">年龄</span>
<input class="field__input" name="age" type="text" placeholder="24" />
</label>
</div>
<div class="form-actions">
<button class="btn btn--primary" type="button" data-action="next">下一步</button>
</div>
</fieldset>
<!-- Step 2: Soul -->
<fieldset class="form-step" data-step="1">
<legend class="form-step__legend">灵魂设定Soul.md</legend>
<div class="field-group">
<label class="field">
<span class="field__label">背景故事</span>
<textarea class="field__input field__input--tall" name="background" placeholder="你们是如何相遇的ta 经历过什么?" required></textarea>
</label>
<label class="field">
<span class="field__label">性格标签 <small>(用逗号分隔)</small></span>
<input class="field__input" name="personality" type="text" placeholder="温柔, 敏感, 嘴硬心软, 浪漫主义" required />
</label>
<label class="field">
<span class="field__label">说话风格</span>
<textarea class="field__input" name="speechStyle" placeholder="常用语气词、句式、称呼方式、口头禅……" required></textarea>
</label>
<label class="field">
<span class="field__label">喜好</span>
<textarea class="field__input" name="likes" placeholder="喜欢的事物、活动、话题"></textarea>
</label>
<label class="field">
<span class="field__label">厌恶 / 底线</span>
<textarea class="field__input" name="dislikes" placeholder="讨厌什么,哪些话题会触发情绪波动"></textarea>
</label>
</div>
<div class="form-actions form-actions--split">
<button class="btn btn--ghost" type="button" data-action="prev">上一步</button>
<button class="btn btn--primary" type="button" data-action="next">下一步</button>
</div>
</fieldset>
<!-- Step 3: Relationships & Memory -->
<fieldset class="form-step" data-step="2">
<legend class="form-step__legend">关系与记忆</legend>
<div class="field-group">
<label class="field">
<span class="field__label">与使用者的关系</span>
<input class="field__input" name="relationship" type="text" placeholder="前任、挚友、恋人、家人……" />
</label>
<label class="field">
<span class="field__label">共同记忆 / 关键事件</span>
<textarea class="field__input field__input--tall" name="memories" placeholder="那些只属于你们的高光或遗憾时刻"></textarea>
</label>
<label class="field">
<span class="field__label">秘密或未说出口的话</span>
<textarea class="field__input" name="secrets" placeholder="藏在角色心底、会间接影响语气的细节"></textarea>
</label>
<label class="field">
<span class="field__label">开场白</span>
<textarea class="field__input" name="greeting" placeholder="ta 第一次开口会对你说什么?" required></textarea>
</label>
</div>
<div class="form-actions form-actions--split">
<button class="btn btn--ghost" type="button" data-action="prev">上一步</button>
<button class="btn btn--primary" type="button" data-action="next">下一步</button>
</div>
</fieldset>
<!-- Step 4: Config -->
<fieldset class="form-step" data-step="3">
<legend class="form-step__legend">运行配置config.yaml</legend>
<div class="field-group">
<label class="field">
<span class="field__label">模型</span>
<input class="field__input" name="model" type="text" value="hermes-3-llama-3.1-70b" />
</label>
<label class="field field--half">
<span class="field__label">Temperature</span>
<input class="field__input" name="temperature" type="number" step="0.1" min="0" max="2" value="0.85" />
</label>
<label class="field field--half">
<span class="field__label">Max Tokens</span>
<input class="field__input" name="maxTokens" type="number" min="1" value="1024" />
</label>
<label class="field">
<span class="field__label">系统提示词 <small>(可自动生成,也可手动覆盖)</small></span>
<textarea class="field__input field__input--tall" name="systemPrompt" id="system-prompt" placeholder="留空将根据 Soul.md 自动生成"></textarea>
</label>
<label class="field field--checkbox">
<input type="checkbox" name="enableMemory" checked />
<span class="checkmark"></span>
<span class="field__label">启用长期记忆</span>
</label>
<label class="field field--checkbox">
<input type="checkbox" name="enableTools" />
<span class="checkmark"></span>
<span class="field__label">启用外部工具</span>
</label>
</div>
<div class="form-actions form-actions--split">
<button class="btn btn--ghost" type="button" data-action="prev">上一步</button>
<button class="btn btn--primary" type="button" data-action="publish">生成并发布</button>
</div>
</fieldset>
</form>
<!-- Result Panel -->
<div id="result-panel" class="result-panel" hidden>
<div class="result-panel__header">
<h3 class="result-panel__title">角色已蒸馏完成</h3>
<p class="result-panel__desc">下载 Hermes agent 配置文件,或复制到项目中使用。</p>
</div>
<div class="result-panel__files">
<div class="file-card">
<div class="file-card__icon">📜</div>
<div class="file-card__info">
<strong>Soul.md</strong>
<small>角色灵魂文档</small>
</div>
<button class="btn btn--small btn--outline" type="button" data-download="soul">下载</button>
</div>
<div class="file-card">
<div class="file-card__icon">⚙️</div>
<div class="file-card__info">
<strong>config.yaml</strong>
<small>运行配置</small>
</div>
<button class="btn btn--small btn--outline" type="button" data-download="config">下载</button>
</div>
</div>
<div class="result-panel__preview">
<div class="preview-tabs">
<button class="preview-tab active" type="button" data-tab="soul">Soul.md</button>
<button class="preview-tab" type="button" data-tab="config">config.yaml</button>
</div>
<pre class="preview-code" id="preview-code"><code></code></pre>
</div>
<div class="form-actions">
<button class="btn btn--ghost" type="button" data-action="reset">再创建一个</button>
<button class="btn btn--primary" type="button" data-action="back">返回首页</button>
</div>
</div>
</section>
<!-- Auth View (Login / Register) -->
<section id="auth" class="view view--auth">
<header class="creator-header">
<button class="icon-btn" type="button" data-action="back" aria-label="返回"></button>
<div class="creator-brand">
<span class="creator-brand__name">Eternal AI</span>
<span class="creator-brand__step">登录 / 注册</span>
</div>
<div class="stepper" aria-hidden="true"></div>
</header>
<div class="auth-tabs">
<button class="auth-tab active" type="button" data-tab="login">登录</button>
<button class="auth-tab" type="button" data-tab="register">注册</button>
</div>
<form id="login-form" class="auth-form active" autocomplete="off" data-form="login">
<div class="field-group">
<label class="field">
<span class="field__label">手机号 / 用户名</span>
<input class="field__input" name="account" type="text" placeholder="请输入手机号或用户名" required />
</label>
<label class="field">
<span class="field__label">密码</span>
<input class="field__input" name="password" type="password" placeholder="请输入密码" required />
</label>
</div>
<div class="form-actions">
<button class="btn btn--primary btn--block" type="submit">登录</button>
</div>
<p class="auth-hint">登录后可查看角色库、管理已订阅的角色。</p>
</form>
<form id="register-form" class="auth-form" autocomplete="off" data-form="register">
<div class="field-group">
<label class="field">
<span class="field__label">手机号 / 用户名</span>
<input class="field__input" name="account" type="text" placeholder="设置登录账号" required />
</label>
<label class="field">
<span class="field__label">密码</span>
<input class="field__input" name="password" type="password" placeholder="设置密码" required minlength="6" />
</label>
<label class="field">
<span class="field__label">确认密码</span>
<input class="field__input" name="confirmPassword" type="password" placeholder="再次输入密码" required />
</label>
</div>
<div class="form-actions">
<button class="btn btn--primary btn--block" type="submit">注册</button>
</div>
<p class="auth-hint">注册即代表同意《用户协议》和《隐私政策》。</p>
</form>
</section>
<!-- Distill Ex View -->
<section id="distill" class="view view--distill-page">
<header class="creator-header">
<button class="icon-btn" type="button" data-action="back" aria-label="返回"></button>
<div class="creator-brand">
<span class="creator-brand__name">Eternal AI</span>
<span class="creator-brand__step">蒸馏前任</span>
</div>
<div class="stepper" aria-hidden="true"></div>
</header>
<div class="distill-page">
<a href="#contact" class="distill-quick">没耐心?直接加微信定制沟通 →</a>
<div class="distill-section">
<h3 class="distill-section__title">什么是蒸馏前任?</h3>
<p class="distill-section__text">把你们曾经的聊天记录、语音习惯、相处细节交给我们,技术团队会将其蒸馏成一个可对话的 AI 前任。ta 会记得你们的暗号、说话节奏,甚至那些只有你们懂的小情绪。</p>
</div>
<div class="distill-section">
<h3 class="distill-section__title">适合谁?</h3>
<ul class="distill-list">
<li>想好好告别,却还没说完话的人</li>
<li>希望把一段关系以安全方式封存的人</li>
<li>想借 AI 完成自我疗愈、练习表达的人</li>
</ul>
</div>
<div class="distill-section">
<h3 class="distill-section__title">服务流程</h3>
<ol class="distill-steps">
<li><span></span> 下单付款</li>
<li><span></span> 客服指导导出聊天记录</li>
<li><span></span> 上传至指定云盘</li>
<li><span></span> 技术人员处理蒸馏</li>
<li><span></span> 完成后获得专属二维码和头像</li>
</ol>
</div>
<div class="distill-price">
<span class="distill-price__label">标准版</span>
<span class="distill-price__value">¥ 199</span>
<span class="distill-price__unit">/ 次</span>
</div>
<div class="form-actions">
<button class="btn btn--primary btn--block" type="button">立即下单</button>
</div>
<div class="distill-note">
<p>付款后请添加客服微信,我们将一对一指导你完成聊天记录导出与上传。</p>
</div>
<div class="distill-revenue">
<p>创作者可推广蒸馏前任服务获得分润,具体比例请在创作者管理中心配置。</p>
</div>
</div>
</section>
</main>
<script src="app.js"></script>
</body>
</html>