{#if !initBusy && !initErr}

策略代码(Backtrader Python)

{saveStatus === 'saved' && `已保存${saveMsg ? ` · ${saveMsg}` : ''}`} {#if saveStatus === 'dirty'}有未保存修改{/if} {#if saveStatus === 'saving'}保存中…{/if} {#if saveStatus === 'conflict'}冲突{/if}

编辑器修改会自动保存(约 0.8 秒停顿后提交)。草稿代 {baseGeneration} · 回测与获取 AI 建议使用当前草稿快照

{ if (ev.key === 'Enter') void snapshot(); }} />
{#if conflictServer} 服务器上的草稿已被其他修改更新(代 {conflictServer.generation}),你正在编辑的本地内容不会自动覆盖。
{/if}

AI 助手

{#if aiErr} {aiErr} {/if} {#if aiResult}

建议解释 {aiResult.model}

tokens {aiResult.usage?.input_tokens ?? '—'} 入 / {aiResult.usage?.output_tokens ?? '—'} 出

{aiResult.explanation}

完整建议源码

{}} readOnly={true} label="AI 返回代码(只读)" height={280} />

与当前草稿的差异

{#if aiResult.base_generation !== baseGeneration} 草稿代 {aiResult.base_generation} 与当前 {baseGeneration} 不一致,接受会失败;请重新发起说明 {/if} {#if aiAcceptErr} {aiAcceptErr} {/if}
{/if} {#if aiNote} {aiNote} {/if}

版本历史

{#if !versionsBusy && versions.length === 0} {/if} {#if !versionsBusy && versions.length > 0}
{#each versions as v, i (v.id)} {/each}
时间 摘要 哈希 来源 操作
{fmtDateTime(v.created_at)} {v.message?.trim() || '(无说明)'} 版本代 {v.hash?.slice(0, 8) || '—'} {v.hash?.slice(0, 12)} {versionSourceLabel[v.source]}
{#if i + 1 < versions.length} {/if}
{/if}

版本为不可变记录,恢复均创建新草稿,从不改写历史。获取到最新草稿修改内容请刷新页面查看。

{#if comparing} (comparing = null)}> {/if} {/if}