- 节点循环:配方开局直坐 DAG 第一步;验收后先问下一步意向,再确认开干并可钉编排参数;「按意见修改」只重跑当前节点。 - 询问分流:能力 opening 走说话面引导,可跳过追问按题干去重;追问与产物同轮挂载,避免拆成两段历史。 - 运行时:补强 revision 重跑、创作流程合并/进度指针、工具循环与 worker 执行;新增运行日志与 web:watch。 - 前端:统一等待态文案与底栏主按钮,完善询问卡/产物验收/呈现壳样式与交互。 - 同步世界模拟器模块提示、编排文档与相关测试。 Co-authored-by: Cursor <cursoragent@cursor.com>
166 lines
8.7 KiB
HTML
166 lines
8.7 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="zh-CN">
|
||
<head>
|
||
<meta charset="UTF-8" />
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||
<title>Writing Agent</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+Sans+SC:wght@400;500;600;700&family=Noto+Serif+SC:wght@500;600;700&display=swap"
|
||
rel="stylesheet"
|
||
/>
|
||
<link rel="stylesheet" href="/styles.css" />
|
||
</head>
|
||
<body data-lifecycle="design">
|
||
<div class="layout">
|
||
<aside class="panel panel-rail" id="panel-books">
|
||
<header class="panel-head rail-head">
|
||
<button type="button" class="rail-toggle btn-sm" id="btn-rail-toggle" title="展开 / 收起侧栏" aria-label="展开或收起侧栏">‹</button>
|
||
<nav class="rail-tabs" id="rail-tabs" role="tablist" aria-label="侧栏">
|
||
<button type="button" class="rail-tab active" data-rail-tab="books" role="tab" aria-selected="true" title="作品">
|
||
<span class="rail-tab-icon" aria-hidden="true">书</span>
|
||
<span class="rail-tab-label">作品</span>
|
||
</button>
|
||
<button type="button" class="rail-tab" data-rail-tab="log" role="tab" aria-selected="false" title="调度">
|
||
<span class="rail-tab-icon" aria-hidden="true">志</span>
|
||
<span class="rail-tab-label">调度</span>
|
||
</button>
|
||
</nav>
|
||
<div class="panel-head-actions rail-head-actions">
|
||
<button type="button" class="btn-sm" id="btn-new-book" title="新建">+</button>
|
||
<span class="burst-badge" id="burst-badge" hidden></span>
|
||
</div>
|
||
</header>
|
||
|
||
<div class="rail-panels">
|
||
<div class="rail-tab-panel active" id="rail-panel-books" role="tabpanel" data-rail-panel="books">
|
||
<nav class="path-bar" id="book-path-bar" aria-label="面包屑" hidden></nav>
|
||
<div class="book-list" id="book-list"></div>
|
||
<div id="book-box-overlay" class="book-box-overlay" hidden aria-hidden="true"></div>
|
||
</div>
|
||
<div class="rail-tab-panel" id="rail-panel-log" role="tabpanel" data-rail-panel="log" hidden>
|
||
<div id="agent-focus" class="agent-focus"></div>
|
||
<div id="tool-trace" class="tool-trace" hidden></div>
|
||
<div id="agent-timeline" class="agent-timeline"></div>
|
||
</div>
|
||
</div>
|
||
</aside>
|
||
|
||
<main class="panel panel-main">
|
||
<header class="main-head" id="main-head">
|
||
<div class="main-head-left">
|
||
<h1 class="work-title" id="work-title">未打开作品</h1>
|
||
<span class="work-meta" id="work-meta"></span>
|
||
</div>
|
||
<div class="main-head-center">
|
||
<div class="lifecycle-toggle" id="lifecycle-toggle" role="group" aria-label="创作 / 游玩">
|
||
<button type="button" class="lifecycle-btn active" data-stage="design">创作</button>
|
||
<button type="button" class="lifecycle-btn" data-stage="play" disabled>游玩</button>
|
||
</div>
|
||
</div>
|
||
<div class="main-head-right">
|
||
<button type="button" class="btn-sm" id="btn-save-instance" hidden>保存定稿</button>
|
||
<button type="button" class="btn-sm" id="btn-save-play" hidden>保存游玩</button>
|
||
<button type="button" class="btn-sm" id="btn-export" disabled>导出</button>
|
||
<span class="status" id="status-pill"><span class="status-dot" id="status-dot"></span><span id="status-text">—</span></span>
|
||
<details class="more-menu">
|
||
<summary class="btn-sm more-menu-sum" title="更多页面">更多</summary>
|
||
<div class="more-menu-panel" role="menu">
|
||
<a class="more-menu-item" href="/modules.html" role="menuitem">技能</a>
|
||
<a class="more-menu-item" href="/shells.html" role="menuitem">呈现壳</a>
|
||
<a class="more-menu-item" href="/stats.html" role="menuitem">Token</a>
|
||
<a class="more-menu-item" href="/settings.html" role="menuitem">设置</a>
|
||
</div>
|
||
</details>
|
||
</div>
|
||
</header>
|
||
|
||
<div class="main-body">
|
||
<section class="panel-feed" id="panel-feed">
|
||
<div id="skill-picker" class="skill-picker" hidden></div>
|
||
<div id="message-feed" class="message-feed">
|
||
<p class="empty">点击左侧 + 新建作品</p>
|
||
</div>
|
||
<div id="workspace-stage" class="workspace-stage" hidden aria-label="验收工作面"></div>
|
||
<div id="questions-card-host" class="questions-card-host" hidden></div>
|
||
</section>
|
||
<aside id="coord-rail" class="coord-rail" hidden aria-label="此前对话">
|
||
<button
|
||
type="button"
|
||
class="coord-rail-toggle"
|
||
id="btn-coord-toggle"
|
||
aria-expanded="false"
|
||
title="展开 / 收起此前对话"
|
||
>
|
||
<span class="coord-rail-toggle-label">对话</span>
|
||
<span id="coord-drawer-count" class="coord-drawer-count"></span>
|
||
</button>
|
||
<div class="coord-rail-panel">
|
||
<header class="coord-rail-head">
|
||
<span class="coord-rail-title">此前对话</span>
|
||
<button type="button" class="btn-sm coord-rail-collapse" id="btn-coord-collapse" title="收起" aria-label="收起此前对话">›</button>
|
||
</header>
|
||
<div id="coord-drawer-body" class="coord-drawer-body"></div>
|
||
</div>
|
||
</aside>
|
||
</div>
|
||
|
||
<footer class="composer" id="composer"></footer>
|
||
</main>
|
||
</div>
|
||
|
||
<dialog id="dialog-new-book" class="dialog">
|
||
<form method="dialog" id="form-new-book">
|
||
<h2>新建作品</h2>
|
||
<p class="dialog-desc">选择配方,再起名。配方是本局方法起点,之后按对话谈成工作流计划与运行规格(可调味)。</p>
|
||
<label class="field">
|
||
配方
|
||
<select id="select-director" required>
|
||
<option value="">加载中…</option>
|
||
</select>
|
||
</label>
|
||
<p class="dialog-desc" id="director-desc" hidden></p>
|
||
<label class="field">
|
||
名称
|
||
<input id="input-book-title" type="text" placeholder="未命名作品" maxlength="80" autofocus />
|
||
</label>
|
||
<div class="dialog-actions">
|
||
<button type="button" class="btn" value="cancel" id="btn-cancel-new">取消</button>
|
||
<button type="submit" class="btn btn-primary" id="btn-create-book">创建</button>
|
||
</div>
|
||
</form>
|
||
</dialog>
|
||
|
||
<menu id="book-action-menu" class="context-menu" hidden>
|
||
<button type="button" class="context-menu-item" id="book-menu-open" data-action="open">打开</button>
|
||
<button type="button" class="context-menu-item" id="book-menu-rename" data-action="rename">重命名</button>
|
||
<button type="button" class="context-menu-item" id="book-menu-duplicate" data-action="duplicate">复制备份</button>
|
||
<button type="button" class="context-menu-item" id="book-menu-select" data-action="select-mode">多选</button>
|
||
<button type="button" class="context-menu-item context-menu-danger" id="book-menu-delete" data-action="delete">删除</button>
|
||
</menu>
|
||
|
||
<menu id="msg-action-menu" class="context-menu" hidden>
|
||
<button type="button" class="context-menu-item" id="msg-menu-context" data-msg-menu-action="view-context" hidden>查看上下文</button>
|
||
<button type="button" class="context-menu-item" id="msg-menu-edit" data-msg-menu-action="edit">编辑</button>
|
||
<button type="button" class="context-menu-item" id="msg-menu-copy" data-msg-menu-action="copy">复制</button>
|
||
<button type="button" class="context-menu-item context-menu-separator-before" id="msg-menu-rollback" data-msg-menu-action="rollback" hidden>回退到这里</button>
|
||
<button type="button" class="context-menu-item context-menu-danger" id="msg-menu-delete" data-msg-menu-action="delete">从这里重开</button>
|
||
</menu>
|
||
|
||
<dialog id="dialog-context-trace" class="dialog dialog-wide" aria-labelledby="context-trace-title">
|
||
<form method="dialog" class="context-trace-form">
|
||
<h2 id="context-trace-title">上下文调用日志</h2>
|
||
<p class="dialog-desc" id="context-trace-meta"></p>
|
||
<pre id="context-trace-body" class="context-trace-body"></pre>
|
||
<div class="dialog-actions">
|
||
<button type="button" class="btn" id="btn-copy-context">复制全文</button>
|
||
<button type="submit" class="btn btn-primary" value="close">关闭</button>
|
||
</div>
|
||
</form>
|
||
</dialog>
|
||
|
||
<script type="module" src="/app.js"></script>
|
||
</body>
|
||
</html>
|