feat(studio): R3 step_respond、运行页 UX 与 R4 思考流式

新增 worldbook 步骤 LLM 回复(thinking/draft/questions/evaluation),
运行页聊天区与产物/选项联动;评价区标签改为「评价与修改建议」;
流式开关开启时 NDJSON 推送思考内容,完成后拆分更新各字段。

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
2026-05-31 22:07:42 +08:00
parent fa6907fb8d
commit f3792915a3
20 changed files with 1639 additions and 304 deletions

View File

@@ -6,70 +6,119 @@
overflow: hidden;
}
.studio-run-header {
.studio-run-preview__meta {
display: flex;
align-items: center;
gap: var(--spacing-sm);
padding: var(--spacing-md) var(--spacing-lg);
border-bottom: 1px solid var(--color-border-light);
background: var(--color-bg-secondary);
flex-shrink: 0;
flex-wrap: wrap;
}
.studio-run-header-icon {
font-size: 1.25rem;
}
.studio-run-header-title {
margin: 0;
font-size: 1.1rem;
font-weight: 600;
margin-right: auto;
}
.studio-run-toolbar {
display: flex;
align-items: center;
gap: var(--spacing-md);
flex-wrap: wrap;
}
.studio-run-label {
display: flex;
align-items: center;
gap: var(--spacing-xs);
font-size: 0.8rem;
gap: var(--spacing-sm) var(--spacing-md);
font-size: 0.75rem;
color: var(--color-text-muted);
}
.studio-run-select {
padding: var(--spacing-xs) var(--spacing-sm);
border-radius: var(--radius-md);
.studio-run-preview__character {
color: var(--color-text-secondary);
}
.studio-run-tool-option.is-selected {
border-color: var(--color-accent);
background: var(--color-accent-ultra-light);
}
.studio-run-tool-copy {
margin-top: var(--spacing-sm);
display: flex;
flex-direction: column;
gap: var(--spacing-xs);
}
.studio-run-tool-copy__head {
display: flex;
align-items: center;
justify-content: space-between;
gap: var(--spacing-sm);
}
.studio-run-tool-copy__label {
font-size: 0.72rem;
color: var(--color-text-muted);
}
.studio-run-tool-copy__btn {
padding: 2px var(--spacing-sm);
border: 1px solid var(--color-border);
border-radius: var(--radius-sm);
background: var(--color-bg-secondary);
color: var(--color-text-primary);
font-size: 0.72rem;
cursor: pointer;
font-family: inherit;
}
.studio-run-tool-copy__btn:hover {
border-color: var(--color-accent);
color: var(--color-accent);
}
.studio-run-tool-copy__textarea {
width: 100%;
padding: var(--spacing-sm);
border: 1px solid var(--color-border-light);
border-radius: var(--radius-sm);
background: var(--color-bg-primary);
color: var(--color-text-primary);
font-size: 0.78rem;
font-family: inherit;
line-height: 1.45;
resize: vertical;
}
.studio-run-tool-copy__hint {
font-size: 0.68rem;
color: var(--color-accent);
}
[data-color-theme='dark'] .studio-run-message.role-assistant,
[data-color-theme='dark'] .studio-run-message.role-system {
background-color: rgba(45, 45, 48, 0.5);
color: var(--color-text-primary);
}
[data-color-theme='dark'] .studio-run-message.role-user {
background: rgba(212, 167, 106, 0.1);
}
[data-color-theme='dark'] .studio-run-icon-btn,
[data-color-theme='dark'] .studio-run-tool-option {
background: var(--color-bg-tertiary);
color: var(--color-text-primary);
font-size: 0.875rem;
min-width: 160px;
border-color: var(--color-border);
}
.studio-run-new-btn {
padding: var(--spacing-xs) var(--spacing-md);
border-radius: var(--radius-md);
border: none;
background: var(--color-accent);
color: var(--color-text-inverse, #fff);
font-size: 0.875rem;
cursor: pointer;
[data-color-theme='dark'] .studio-run-list-item {
background: var(--color-bg-tertiary);
}
.studio-run-new-btn:hover:not(:disabled) {
opacity: 0.9;
[data-color-theme='dark'] .studio-run-list-action {
background: var(--color-bg-elevated);
color: var(--color-text-secondary);
}
.studio-run-new-btn:disabled {
opacity: 0.5;
cursor: not-allowed;
[data-color-theme='dark'] .studio-run-product-main__body,
[data-color-theme='dark'] .studio-run-variables__row,
[data-color-theme='dark'] .studio-run-guidance-form {
background: var(--color-bg-tertiary);
border-color: var(--color-border);
}
[data-color-theme='dark'] .studio-run-form-input,
[data-color-theme='dark'] .studio-run-insertion-entry,
[data-color-theme='dark'] .studio-run-tool-carousel {
background: var(--color-bg-elevated);
color: var(--color-text-primary);
}
[data-color-theme='dark'] .studio-run-banner.error {
background: rgba(239, 68, 68, 0.15);
color: #f87171;
}
.studio-run-banner {
@@ -290,11 +339,6 @@
white-space: nowrap;
}
.studio-run-preview__meta {
font-size: 0.75rem;
color: var(--color-text-muted);
}
.studio-run-preview__body {
flex: 1;
min-height: 0;