Repository navigation
Expand file tree
/
Copy pathindex.html
More file actions
76 lines (76 loc) · 22.4 KB
/
Copy pathindex.html
File metadata and controls
76 lines (76 loc) · 22.4 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
<!doctype html>
<html lang="zh-CN">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="color-scheme" content="light dark">
<title>言</title>
<script src="./theme-boot.js"></script>
<link rel="icon" href="./icon.svg" type="image/svg+xml">
<link rel="stylesheet" href="./vendor/katex/katex.min.css">
<link rel="stylesheet" href="./app.css">
</head>
<body>
<div id="bridgeGate" class="bridge-gate" role="status" aria-live="polite"><span class="seal">言</span><h1>等候本机桥接</h1><p>运行 start.cmd,言会在 <code id="bridgeGateUrl">http://127.0.0.1:8787</code> 打开</p></div>
<div class="app">
<aside id="sidebar" class="sidebar"><div class="sidebar-inner">
<div class="brand-row"><div class="brand-mark wide">言</div><button id="collapseSidebar" class="icon-btn collapse-btn" title="收起侧栏">‹</button></div>
<div id="modeSeal" class="mode-seal" data-mode="chat" role="status" aria-label="当前为言 · 对谈"><span class="rail-icon">言</span><span class="wide">对谈</span></div>
<button id="newChat" class="rail-btn new-chat" title="另起一段对话"><span class="rail-icon"><svg class="brush" data-brush="newpage" viewBox="0 0 20 20" aria-hidden="true"></svg></span><span class="wide">翻页</span></button>
<button id="openLibrary" class="rail-btn library-open" title="卷宗"><span class="rail-icon"><svg class="brush archive-icon" data-brush="scroll" viewBox="0 0 20 20" aria-hidden="true"></svg></span><span class="wide">卷宗</span><span id="libraryCount" class="wide count"></span></button>
<button id="openGroups" class="rail-btn" title="分组"><span class="rail-icon"><svg class="brush" data-brush="groups" viewBox="0 0 20 20" aria-hidden="true"></svg></span><span class="wide">分组</span><span id="groupsCount" class="wide count"></span></button>
<div class="history-head wide"><span>对话历史</span><span class="history-head-line"></span><button id="historySearchToggle" class="icon-btn" title="查找对话" aria-label="查找对话"><svg class="brush" data-brush="search" viewBox="0 0 20 20" aria-hidden="true"></svg></button></div>
<div id="historySearchWrap" class="history-search-wrap wide hidden"><input id="historySearch" class="history-search" placeholder="按标题或正文查找" aria-label="查找对话"><button id="historySearchClose" class="icon-btn" title="关闭查找">×</button></div>
<div id="history" class="history wide"></div>
<div class="sidebar-footer"><button id="openSettings" class="settings-open" title="设置"><span class="rail-icon"><span id="avatar" class="avatar">客</span></span><span id="displayNameSidebar" class="wide name">访客</span><span class="wide gear-wrap"><svg class="brush gear" data-brush="tune" viewBox="0 0 20 20" aria-hidden="true"></svg></span></button></div>
</div></aside>
<div id="sidebarScrim" class="sidebar-scrim hidden" aria-hidden="true"></div>
<main class="main">
<header class="topbar">
<div style="display:flex;align-items:center;gap:6px"><button id="mobileMenu" class="icon-btn mobile-menu hidden" title="打开侧栏">☰</button><div id="modelMenu" class="model-menu hidden" role="dialog" aria-label="选择模型与思考深度"></div></div><div id="runningHead" class="running-head" title="回到开头"><span class="running-head-title"></span><small class="running-head-meta"></small><span class="running-head-intent"></span></div><button id="trailFold" class="trail-fold-head" type="button" title="收起这段行迹" tabindex="-1">收起行迹</button>
<div class="top-actions"><div id="clepsydra" class="clepsydra hidden"><button class="clepsydra-btn" type="button" aria-haspopup="true" aria-expanded="false"><svg class="brush" viewBox="0 0 20 20" aria-hidden="true"></svg><span class="clepsydra-n"></span></button><div class="clepsydra-list hidden" role="dialog" aria-label="候"></div><span class="top-sep" aria-hidden="true"></span></div><button id="themeToggle" class="theme-toggle" type="button" title="落墨 · 暗色" aria-label="切换明暗" data-theme="light"><svg class="brush" data-brush="theme" viewBox="0 0 20 20" aria-hidden="true"></svg></button><span class="top-sep" aria-hidden="true"></span><button id="quotaStatus" class="quota" aria-label="余墨"><svg id="quotaInk" class="brush quota-ink" viewBox="0 0 26 14" aria-hidden="true"></svg><span class="quota-tip" aria-hidden="true"><span><span class="quota-label">余墨</span><b id="quotaText">未设</b></span><small id="quotaNote"></small></span></button></div>
</header>
<section id="welcome" class="welcome"><div class="welcome-inner"><div class="eyebrow"><span class="seal">言</span><span id="welcomeMode">对谈</span><span id="welcomeTerm" class="welcome-term"></span></div><h1 id="greeting">落笔,便有回声</h1><p id="welcomeSub">长问慢答,尽付纸墨</p><div id="welcomeChips" class="welcome-chips"><button id="workdirChip" class="chip hidden" type="button"><span class="chip-glyph">目录</span><span class="chip-text"></span><span class="chip-caret">▾</span></button><button id="approveChip" class="chip hidden" type="button"><span class="chip-text"></span></button></div><div class="composer"><div id="welcomeQuote" class="composer-quote hidden"><div class="composer-quote-body"><span class="composer-quote-text"></span><span class="composer-quote-shot"></span></div><button class="composer-quote-close" type="button" data-quote-close title="移除引文" aria-label="移除引文">✕</button></div><div id="welcomeAttachments" class="attachment-list hidden"></div><textarea id="welcomeInput" rows="1" placeholder="落墨于此"></textarea><div class="composer-row"><div class="composer-left"><button class="text-btn attach-trigger" type="button" title="附件" aria-label="附件" aria-haspopup="menu"><span>+</span></button><button id="welcomeGroup" class="group-tag hidden" type="button" title="新对话归入此组 · 撤去"><span class="group-tag-seal" aria-hidden="true">集</span><span class="group-tag-name"></span><span class="group-tag-x" aria-hidden="true">✕</span></button></div><div class="composer-right"><div class="model-wrap"><button class="model-trigger" type="button" title="选择模型与思考深度"><span class="model-dot"></span><span class="model-name">尚未接入模型</span><span class="model-extra"></span><span class="model-caret">▾</span></button></div><button class="send-btn send-trigger" title="发送"><span class="seal-glyph" aria-hidden="true">寄</span></button></div></div></div><div id="welcomeNotice" class="welcome-notice hidden" role="status"></div><div class="suggestions"></div></div></section>
<section id="chat" class="chat hidden"><div id="chatScroll" class="chat-scroll"><div class="chat-inner"><div class="chat-title"><h1 id="chatTitle" contenteditable="plaintext-only" spellcheck="false" title="修改标题"></h1><div id="chatMeta"></div></div><div id="messages"></div></div></div></section>
<div id="chatScrollGrabber" class="chat-scroll-grabber hidden" aria-hidden="true"></div>
<section id="groups" class="library-page hidden"></section>
<section id="library" class="library-page hidden"><div class="library-inner"><div class="page-head"><svg class="brush" data-brush="scroll" viewBox="0 0 20 20" aria-hidden="true"></svg><h1>卷宗</h1><span id="libraryCountText" class="page-facts"></span><div class="page-acts"><button id="libraryNewDir" type="button">新建夹</button><button id="libraryAdd" type="button">收入文件</button></div></div><div class="page-sub"><div id="libraryCrumbs" class="library-crumbs" aria-label="卷宗里的位置"></div><div class="library-kinds"><button type="button" data-library-kind="all" class="active">全部</button><button type="button" data-library-kind="image">画</button><button type="button" data-library-kind="text">文</button><button type="button" data-library-kind="audio">音</button><button type="button" data-library-kind="video">影</button><button type="button" data-library-kind="file">卷</button></div><input id="librarySearch" class="page-find" placeholder="按文件名查找" aria-label="查找卷宗"></div><div id="libraryGrid" class="strips"></div><p id="libraryLead" class="library-foot"></p></div></section>
<nav id="outline" class="outline hidden" aria-label="按问题跳转"></nav>
<button id="jumpBottom" class="jump-bottom hidden" type="button" title="回到最新" aria-label="回到最新">↓</button>
<button id="stagePin" class="stage-pin hidden" type="button" aria-label="游目"><svg class="brush stage-pin-ink" viewBox="0 0 22 56" aria-hidden="true"></svg><span class="quota-tip stage-pin-text" aria-hidden="true">游目</span></button><div id="listenPendant" class="listen-pendant hidden"></div>
<div id="quoteTip" class="quote-tip hidden" role="toolbar" aria-label="对所选文字"><button type="button" data-tip="quote" title="引为下一问的引文">引用</button><span class="quote-tip-sep" aria-hidden="true"></span><button type="button" data-tip="note" title="就此处另开旁注,不入正文">旁注</button></div><div id="composerArea" class="composer-area hidden"><div id="approvalBar" class="approval-bar hidden" data-step-id="" role="status" aria-live="polite"></div><div id="helperBar" class="helper-bar hidden" role="status" aria-live="off"></div><div class="composer"><div id="composerQuote" class="composer-quote hidden"><div class="composer-quote-body"><span class="composer-quote-text"></span><span class="composer-quote-shot"></span></div><button id="composerQuoteClose" class="composer-quote-close" type="button" data-quote-close title="移除引文" aria-label="移除引文">✕</button></div><div id="attachments" class="attachment-list hidden"></div><textarea id="chatInput" rows="1" placeholder="续言于此"></textarea><div class="composer-row"><div class="composer-left"><button class="text-btn attach-trigger" type="button" title="附件" aria-label="附件" aria-haspopup="menu"><span>+</span></button><button id="workAuto" class="text-btn hidden" type="button"></button><button id="chatGroup" class="group-tag hidden" type="button" title="所在分组"><span class="group-tag-seal" aria-hidden="true">集</span><span class="group-tag-name"></span></button></div><div class="composer-right"><div class="model-wrap"><button class="model-trigger" type="button" title="选择模型与思考深度"><span class="model-dot"></span><span class="model-name">尚未接入模型</span><span class="model-extra"></span><span class="model-caret">▾</span></button></div><button id="chatSend" class="send-btn send-trigger" title="发送"><span class="seal-glyph" aria-hidden="true">寄</span></button></div></div></div><div class="composer-foot"><button id="contextGauge" class="context-gauge hidden" type="button" aria-label="当前上下文大小"><span class="context-gauge-label">上下文</span><span class="context-gauge-tilde">≈</span><span class="context-gauge-value"></span><span class="context-gauge-window"></span></button></div></div>
<input id="fileInput" type="file" multiple class="hidden">
<input id="libraryFileInput" type="file" multiple class="hidden">
<input id="importInput" type="file" accept="application/json,.json" class="hidden">
</main>
<aside id="sidePanel" class="side-panel hidden" aria-label="旁注">
<div class="side-head"><button id="sideBack" class="side-back" type="button" title="回到旁注目录"><span aria-hidden="true">‹</span>目录</button><span class="side-back-sep" aria-hidden="true"></span><span class="seal side-seal" aria-hidden="true">注</span><div class="side-title"><strong>旁注</strong><small>不入正文</small></div><span id="sideNav" class="branch-nav side-nav"></span><span class="side-tools"><button id="sideExpand" class="icon-btn" type="button" title="铺满整页" aria-label="铺满整页" aria-pressed="false"><svg class="brush" data-brush="wide" viewBox="0 0 20 20" aria-hidden="true"></svg></button><button id="sideRemove" class="icon-btn" type="button" title="移除这条旁注" aria-label="移除这条旁注"><svg class="brush" data-brush="strike" viewBox="0 0 20 20" aria-hidden="true"></svg></button><button id="sideClose" class="icon-btn" type="button" title="收起">×</button></span></div>
<button id="sideAnchor" class="side-anchor" type="button" title="回到出处"><span class="side-anchor-text"></span></button>
<div id="sideScroll" class="side-scroll"><div id="sideMessages" class="side-messages"></div></div>
<div class="side-composer"><div class="composer"><textarea id="sideInput" rows="1" placeholder="就此处追问"></textarea><div class="composer-row"><div class="composer-right"><div class="model-wrap"><button class="model-trigger" type="button" title="选择模型与思考深度"><span class="model-dot"></span><span class="model-name">尚未接入模型</span><span class="model-extra"></span><span class="model-caret">▾</span></button></div><button id="sideSend" class="send-btn" type="button" title="发送"><span class="seal-glyph" aria-hidden="true">寄</span></button></div></div></div></div>
</aside>
<aside id="stagePanel" class="stage-panel hidden" aria-label="游目">
<div id="stageGrip" class="stage-grip" title="拖动调宽窄"></div>
<div class="stage-head"><div id="stageTabs" class="stage-tabs" role="tablist"></div><button id="stageNewTab" class="stage-new" type="button" title="新建标签页" aria-label="新建标签页">+</button><span class="stage-tools"><button id="stageMenuBtn" class="stage-tool" type="button" title="更多:查找、缩放、历史、下载、适应页面、设置" aria-label="更多" aria-haspopup="menu"><svg class="brush" data-brush="tune" viewBox="0 0 20 20" aria-hidden="true"></svg></button><button id="stagePen" class="stage-tool" type="button" title="圈点:圈出网页的一块引给执事(按住 Alt 亦可)" aria-label="圈点" aria-pressed="false"><svg class="brush" data-brush="edit" viewBox="0 0 20 20" aria-hidden="true"></svg></button><button id="stageWide" class="stage-tool" type="button" title="铺满整页" aria-label="铺满整页" aria-pressed="false"><svg class="brush" data-brush="wide" viewBox="0 0 20 20" aria-hidden="true"></svg></button><button id="stageClose" class="icon-btn" type="button" title="收起">×</button></span></div>
<div id="stageNav" class="stage-nav"><button type="button" data-stage-nav="back" title="后退" aria-label="后退"><svg class="brush" data-brush="back" viewBox="0 0 20 20" aria-hidden="true"></svg></button><button type="button" data-stage-nav="forward" title="前进" aria-label="前进"><svg class="brush" data-brush="forward" viewBox="0 0 20 20" aria-hidden="true"></svg></button><button type="button" data-stage-nav="reload" title="重新载入" aria-label="重新载入"><svg class="brush" data-brush="reload" viewBox="0 0 20 20" aria-hidden="true"></svg></button><button id="stageAddr" class="stage-addr" type="button" aria-label="网址"></button><input id="stageUrl" class="stage-url hidden" spellcheck="false" autocomplete="off" aria-label="网址"><span id="stageFind" class="stage-find hidden" role="search"><span class="stage-find-label">查找</span><input id="stageFindInput" spellcheck="false" autocomplete="off" aria-label="在此页查找"><span id="stageFindCount" class="stage-find-count"></span><button type="button" data-stage-find="-1" title="上一处(Shift+Enter)" aria-label="上一处">↑</button><button type="button" data-stage-find="1" title="下一处(Enter)" aria-label="下一处">↓</button><button type="button" data-stage-find="close" title="收起(Esc)" aria-label="收起查找">×</button></span><span id="stageBusy" class="stage-busy hidden" tabindex="0"><span>执事</span><span id="stageSteps" class="stage-steps"></span></span><button id="stageMarks" class="hidden" type="button" title="收藏" aria-label="收藏"><svg class="brush" data-brush="mark" viewBox="0 0 20 20" aria-hidden="true"></svg></button></div>
<div id="stageView" class="stage-view"><div id="stageSheet" class="stage-sheet"><img id="stageFrame" class="stage-frame" alt="" draggable="false"><svg id="stageInk" class="stage-ink" aria-hidden="true"></svg><div id="stageLabels" class="stage-labels" aria-hidden="true"></div><div class="stage-corners" aria-hidden="true"><i></i><i></i><i></i><i></i></div></div><i id="stagePickAt" class="stage-pick-at" aria-hidden="true"></i><textarea id="stageKeys" class="stage-keys" aria-label="向游目里的网页输入" tabindex="-1"></textarea><div id="stageEmpty" class="stage-empty hidden"></div><div id="stageDialog" class="stage-dialog hidden"></div><div id="stageLetter" class="stage-letter hidden"></div></div>
</aside>
<div id="helperModal" class="helper-viewer hidden" role="dialog" aria-modal="true" aria-label="差遣" tabindex="-1">
<div class="helper-viewer-head"><span class="seal helper-head-seal" aria-hidden="true">遣</span><div class="helper-head-title"><strong id="helperTitle">差遣</strong><small id="helperPanelSub"></small></div><button id="helperFoldHead" class="helper-fold-head" type="button" title="收起帮手的行迹,只看回报">收起行迹</button><span id="helperNav" class="branch-nav helper-nav"></span><div class="file-viewer-actions"><button id="helperClose" class="file-viewer-close" type="button" title="合起,回到行迹里这一步">✕</button></div></div>
<div id="helperList" class="helper-list hidden"></div>
<div id="helperScroll" class="helper-stage"><div class="helper-sheet"><div id="helperPanelBody" class="helper-panel-body"></div></div></div>
</div>
</div>
<div id="settingsModal" class="modal hidden" role="dialog" aria-modal="true" aria-label="设置"><div class="modal-panel"><button id="closeSettings" class="icon-btn close-modal" title="关闭">×</button><nav class="settings-nav"><div class="settings-nav-title">设置</div><button class="tab-btn active" data-tab="general" data-tip="显示名称、数据存放位置与备份"><svg class="brush" data-brush="general" viewBox="0 0 20 20" aria-hidden="true"></svg>通用</button><button class="tab-btn" data-tab="appearance" data-tip="配色与外观"><svg class="brush" data-brush="appearance" viewBox="0 0 20 20" aria-hidden="true"></svg>个性化</button><button class="tab-btn" data-tab="models" data-tip="接入模型:接口、API Key、用量上限"><svg class="brush" data-brush="models" viewBox="0 0 20 20" aria-hidden="true"></svg>模型</button><button class="tab-btn" data-tab="presets" data-tip="把提示词、模型和权限存成一套,开新对话时选用"><svg class="brush" data-brush="presets" viewBox="0 0 20 20" aria-hidden="true"></svg>预设</button><button class="tab-btn" data-tab="tools" data-tip="模型能动手的边界:沙箱、指令权限、文件范围"><svg class="brush" data-brush="tools" viewBox="0 0 20 20" aria-hidden="true"></svg>工具</button><button class="tab-btn" data-tab="duty" data-tip="给拟标题、审查、生图这几件事单独指定模型"><svg class="brush" data-brush="duty" viewBox="0 0 20 20" aria-hidden="true"></svg>专司</button><button class="tab-btn" data-tab="env" data-tip="给模型备好 Python、Node 等运行工具"><svg class="brush" data-brush="env" viewBox="0 0 20 20" aria-hidden="true"></svg>环境</button><button class="tab-btn" data-tab="mcp" data-tip="接入外部服务,让模型多些工具可用"><svg class="brush" data-brush="mcp" viewBox="0 0 20 20" aria-hidden="true"></svg>MCP</button><button class="tab-btn" data-tab="skills" data-tip="写好的专项做法,模型需要时取来照着做"><svg class="brush" data-brush="skills" viewBox="0 0 20 20" aria-hidden="true"></svg>Skill</button><button class="tab-btn" data-tab="stage" data-tip="模型用的浏览器,收在右侧一栏"><svg class="brush" data-brush="stage" viewBox="0 0 20 20" aria-hidden="true"></svg>游目</button><button class="tab-btn" data-tab="memory" data-tip="模型跨对话记住的事,可以查看和修改"><svg class="brush" data-brush="memory" viewBox="0 0 20 20" aria-hidden="true"></svg>记忆</button><button class="tab-btn" data-tab="guide" data-tip="言的使用说明"><svg class="brush" data-brush="guide" viewBox="0 0 20 20" aria-hidden="true"></svg>文档</button><div class="settings-nav-spacer"></div><div class="settings-nav-foot">言之有物<br>字字留痕</div></nav><div id="settingsContent" class="settings-content"></div></div></div>
<div id="dropVeil" class="drop-veil hidden"><div class="drop-sheet"><span class="drop-seal">添</span><span class="drop-copy"><strong id="dropTitle">松手,置于案上</strong><small id="dropHint">图片、文档与代码文件 · 单次共 64 MB</small></span></div></div>
<div id="confirmModal" class="modal hidden" role="alertdialog" aria-modal="true" aria-labelledby="confirmTitle"><div class="confirm-panel"><span class="seal">问</span><h3 id="confirmTitle"></h3><p id="confirmBody"></p><div class="confirm-actions"><button id="confirmCancel" class="outline-btn">取消</button><button id="confirmOk" class="danger-btn solid">确定</button></div></div></div>
<div id="imageViewer" class="image-viewer hidden" role="dialog" aria-modal="true" aria-labelledby="imageViewerName"><div class="image-viewer-head"><span class="seal" aria-hidden="true">画</span><span id="imageViewerName" class="image-viewer-name"></span><div class="image-viewer-actions"><button id="imageViewerZoom" type="button">原图</button><button id="imageViewerDownload" type="button">下载</button><button id="imageViewerClose" class="image-viewer-close" type="button" title="关闭" aria-label="关闭图片">×</button></div></div><div id="imageViewerStage" class="image-viewer-stage"><img id="imageViewerImage" class="image-viewer-image" alt=""></div><div id="imageViewerStrip" class="image-viewer-strip hidden"></div></div>
<div id="fileViewer" class="file-viewer hidden" role="dialog" aria-modal="true" aria-labelledby="fileViewerName"><div class="file-viewer-head"><span class="seal" aria-hidden="true">览</span><span id="fileViewerName" class="file-viewer-name"></span><div class="file-viewer-actions"><button id="fileViewerDownload" type="button">下载</button><button id="fileViewerClose" class="file-viewer-close" type="button" title="关闭" aria-label="关闭预览">×</button></div></div><div id="fileViewerStage" class="file-viewer-stage"></div></div>
<div id="toast" class="toast hidden"></div>
<audio id="listenAudio" preload="metadata" hidden></audio>
<script src="./vendor/marked.umd.js"></script>
<script src="./vendor/purify.min.js"></script>
<script src="./vendor/highlight.min.js"></script>
<script src="./support.js"></script>
</body>
</html>