Files
writing-agent/web/index.html
T
moranandCursor beb4c332e6 打通 Boss 直聘落档挂载与真值→投影映射,并修正带 tools 时的推理强度。
落档自动把产物挂进 context_order;创作期用 declare_variable/declare_map 钉目录与分档;真值变更持续重投影。顺带强制 tools 请求 reasoning_effort=none,并支持消息 restart。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-09-09 17:50:07 +08:00

274 lines
15 KiB
HTML
Raw 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>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" />
<script>
(function () {
try {
var t = localStorage.getItem("wa-color-theme") || "modern";
if (!/^(paper|modern|dark|green)$/.test(t)) t = "modern";
document.documentElement.setAttribute("data-color-theme", t);
document.documentElement.setAttribute("data-theme", t);
var c = localStorage.getItem("wa-present-chrome") || "default";
if (!/^(default|messenger|book|terminal)$/.test(c)) c = "default";
document.documentElement.setAttribute("data-present-chrome", c);
} catch (e) {}
})();
</script>
</head>
<body data-lifecycle="design" data-nav-level="root">
<div class="layout">
<aside class="panel panel-rail" id="panel-books">
<button
type="button"
class="rail-expand"
id="btn-rail-expand"
aria-expanded="true"
aria-controls="rail-body"
title="展开侧栏"
>
<span class="rail-expand-label" id="rail-expand-label">书</span>
</button>
<div class="rail-body" id="rail-body">
<header class="panel-head rail-head">
<div class="rail-head-row">
<nav class="path-bar rail-path" id="book-path-bar" aria-label="位置">
<ol class="path-bar-list">
<li class="path-bar-item path-bar-item-current">
<span class="path-seg current" aria-current="page">目录</span>
</li>
</ol>
</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>
<button type="button" class="btn-sm rail-collapse" id="btn-rail-collapse" title="收起侧栏" aria-label="收起侧栏">‹</button>
</div>
</div>
<nav class="rail-tabs" id="rail-tabs" role="tablist" aria-label="本书侧栏" hidden>
<button type="button" class="rail-tab active" data-rail-tab="books" role="tab" aria-selected="true" title="本书">
<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-label">调度</span>
</button>
</nav>
</header>
<div class="rail-panels">
<div class="rail-tab-panel active" id="rail-panel-books" role="tabpanel" data-rail-panel="books">
<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>
</div>
</aside>
<main class="panel panel-main">
<div class="main-chrome" id="main-chrome">
<header class="main-head" id="main-head">
<div class="main-head-left" aria-hidden="true"></div>
<nav class="main-app-nav" aria-label="应用">
<a href="/modules.html">技能</a>
<a href="/shells.html">呈现壳</a>
<a href="/stats.html">Token</a>
<a href="/settings.html">设置</a>
</nav>
<div class="main-head-right">
<button type="button" class="btn-sm main-head-action" id="btn-save-instance" hidden>
保存定稿
</button>
<button type="button" class="btn-sm main-head-action" id="btn-save-play" hidden>
保存游玩
</button>
<button type="button" class="btn-sm main-head-action" id="btn-export" disabled>
导出
</button>
<details class="more-menu theme-menu" id="theme-menu">
<summary class="btn-sm more-menu-sum" id="theme-menu-sum" title="主题">
<span class="hamburger-icon" aria-hidden="true"></span>
</summary>
<div class="more-menu-panel" role="menu">
<div class="more-menu-label">主题</div>
<button type="button" class="more-menu-item more-theme-item" data-color-theme="paper" role="menuitem">
<span class="more-theme-icon" aria-hidden="true">📖</span>
<span class="more-theme-copy"><span class="more-theme-name">仿纸暖黄</span><span class="more-theme-desc">经典护眼</span></span>
</button>
<button type="button" class="more-menu-item more-theme-item" data-color-theme="modern" role="menuitem">
<span class="more-theme-icon" aria-hidden="true">✨</span>
<span class="more-theme-copy"><span class="more-theme-name">现代清爽</span><span class="more-theme-desc">干净明快</span></span>
</button>
<button type="button" class="more-menu-item more-theme-item" data-color-theme="dark" role="menuitem">
<span class="more-theme-icon" aria-hidden="true">🌙</span>
<span class="more-theme-copy"><span class="more-theme-name">夜间暗色</span><span class="more-theme-desc">黑底灰字</span></span>
</button>
<button type="button" class="more-menu-item more-theme-item" data-color-theme="green" role="menuitem">
<span class="more-theme-icon" aria-hidden="true">🍃</span>
<span class="more-theme-copy"><span class="more-theme-name">豆沙绿</span><span class="more-theme-desc">自然疗愈</span></span>
</button>
<div class="more-menu-sep" role="separator"></div>
<div class="more-menu-label">选壳</div>
<button type="button" class="more-menu-item more-theme-item" data-present-chrome="default" role="menuitem">
<span class="more-theme-copy"><span class="more-theme-name">默认</span><span class="more-theme-desc">跟随壳本身</span></span>
</button>
<button type="button" class="more-menu-item more-theme-item" data-present-chrome="messenger" role="menuitem">
<span class="more-theme-copy"><span class="more-theme-name">讯息</span><span class="more-theme-desc">气泡对话感</span></span>
</button>
<button type="button" class="more-menu-item more-theme-item" data-present-chrome="book" role="menuitem">
<span class="more-theme-copy"><span class="more-theme-name">书页</span><span class="more-theme-desc">阅读排版感</span></span>
</button>
<button type="button" class="more-menu-item more-theme-item" data-present-chrome="terminal" role="menuitem">
<span class="more-theme-copy"><span class="more-theme-name">终端</span><span class="more-theme-desc">等宽终端感</span></span>
</button>
</div>
</details>
</div>
</header>
</div>
<div class="main-stack">
<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"></div>
<div id="workspace-stage" class="workspace-stage" hidden aria-label="验收工作面"></div>
<div id="workspace-skills" class="workspace-skills" hidden>
<header class="workspace-skills-head">
<nav class="workspace-view-switch" aria-label="工作面">
<button type="button" data-skills-close>流程</button>
<span class="is-current" aria-current="page">技能</span>
</nav>
</header>
<iframe
id="workspace-skills-frame"
class="workspace-skills-frame"
title="技能池"
></iframe>
</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" id="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" id="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">
<span class="status" id="status-pill"><span class="status-dot" id="status-dot"></span><span id="status-text">—</span></span>
<div id="composer-main"></div>
</footer>
</div>
</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-creation-mode" required>
<option value="" selected disabled>请选择…</option>
<option value="recipe">Worker 式(工序图)</option>
<option value="dictate">Boss 直聘(对话直填)</option>
</select>
</label>
<p class="dialog-desc" id="creation-mode-desc" hidden></p>
<label class="field" id="field-director" hidden>
配方
<select id="select-director">
<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-play" data-action="play">用产物开玩</button>
<button type="button" class="context-menu-item" id="book-menu-save-instance" data-action="save-instance">保存定稿</button>
<button type="button" class="context-menu-item" id="book-menu-save-play" data-action="save-play">保存游玩</button>
<button type="button" class="context-menu-item" id="book-menu-export" data-action="export">导出</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="restart">从这里重开</button>
</menu>
<menu id="flow-node-menu" class="context-menu" hidden>
<button type="button" class="context-menu-item" id="flow-menu-view" data-flow-menu-action="view">查看产物</button>
<button type="button" class="context-menu-item" id="flow-menu-reenter" data-flow-menu-action="reenter">进入继续修改</button>
<button type="button" class="context-menu-item context-menu-danger context-menu-separator-before" id="flow-menu-delete" data-flow-menu-action="delete">删除产物</button>
</menu>
<dialog id="dialog-step-artifact" class="dialog dialog-wide" aria-labelledby="step-artifact-title">
<form method="dialog" class="context-trace-form">
<h2 id="step-artifact-title">产物</h2>
<div id="step-artifact-body" class="step-artifact-body"></div>
<div class="dialog-actions">
<button type="submit" class="btn btn-primary" value="close">关闭</button>
</div>
</form>
</dialog>
<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>