11. 项目管理与 Markdown 批注
本章说明 Plan / Report 的介面操作与批注功能。分析流程概览见 §1.3、§2。
11.1 项目与文件管理
在侧边栏的「Projects」区块,你可以建立与管理分析项目。
建立项目:
- 在「Projects」区块点击 + 按钮。
- 输入项目名称,点击确认。
- 新项目会出现在侧边栏,可在其下新建 Markdown 文件。
管理文件:
- 在项目名称上按右键,选择「New File」新建 Plan 或 Report 文件。
- 点击文件名称即可在主区域打开 Markdown 标签页。
- 右键选单提供打开、删除,以及设置/编辑别名(见 §11.2)。
- 右键选单亦提供 Export project…,可将该项目(可再勾选其他项目)打包为
.lantide档(见下方 §11.1.0)。
11.1.0 何时用哪种导出
四种 .lantide 导出的操作步骤见 §11.1.1–§11.1.3。先依你的目标选类型:
| 你的目标 | 用哪种 | 典型场景 |
|---|---|---|
| 共享分析脉络与结果 | Project | 跨团队审 Plan/Report、交接已 Execute 的结论;PM/业务导入后批注;备份单一分析产物 |
| 协作与在原环境接续工作 | Workspace | 同事接手同一批 SQL 标签页与连接设置;可选带 chat sessions、query ledger;换机或复制整个分析环境 |
| 跨工作区的 Agent 记忆 | Application profile | 迁移 User Memory、知识/memory 设置、可选 AI 偏好 |
| 换机一次搬齐 | Full backup | 多个工作区 + Application profile 合并为单一文件 |
一句话: Project 带这次分析的契约与交付;Workspace 带整个工作环境(默认不含本机 CSV/Parquet,可选打包);Application 带你是谁;四者都不含数据库密码与授权快取。
常见场景对照:
| 场景 | 建议 |
|---|---|
| 给主管/业务审口径、看 Report(可批注 Plan) | Project 导出/导入 |
| 周会对外只呈现数字、不需对方开 Lantide | Report 的 HTML Report(见 §10) |
| 分析师 A 交给 B 接手同一工作区(含 SQL 标签页) | Workspace(可勾 chat sessions) |
| 本机换电脑、完整迁移 | Workspace 或 Full backup |
| 只搬 Plan/Report,对方自行连数据 | Project |
常见误解:
- Project 不含实体数据档——收件方须在本机有相同数据、或自行 Rebind/连接后才能重跑 SQL。
- Workspace 默认不含 CSV/Parquet——接续查询通常要 Rebind 指向本机文件夹,或导出时勾选 Include physical data files。
- 导入后不能立刻查——须 Reconnect databases、Reconfigure MCP;无 physical data 时常需 Source Run 重建快取。
11.1.1 导出与导入项目(.lantide)
可将一个或多个项目的 Plan、Report、project_knowledge.md、Reference 档(ref_*.md;旧版 NN_reference.md 仍兼容)及相关 sidecar(进度、批注 *.annotations.json、HTML、viz)打包成单一 .lantide 档。适合共享分析脉络与结果(见 §11.1.0)。不包含工作区数据档、SQL 标签页、连接设置或对话纪录。
导出:
- 点击顶部列 UsersRound 图标 → Export… → Project;或在项目上右键 → Export project…(会预先勾选该项目)。
- 在对话框中勾选要导出的项目(至少一项),点击 Export…。
- 选择保存位置;默认档名为
proj_export_<日期>.lantide。
导入:
- 点击顶部列 UsersRound 图标 → Import… → Project。
- 选择
.lantide档(仅副档名须为.lantide,主档名任意)。 - 确认预览信息后,选择目标工作区;若项目名称已存在,可勾选 Rename on conflict 自动加上
(imported)或(2)等后缀。 - 点击 Import。成功后侧边栏项目列表会更新;不会自动切换项目焦点。请重新连接数据来源后再执行查询。
注意: HTML 报告若内含本机 localhost URL,导入后预览可能需在目前执行个体下重新产生或调整。
11.1.2 导出与导入工作区(Workspace .lantide)
可将整个工作区的设置(data.json、tabs.json、schema.json、连接与 MCP 设置、knowledge_queue、所有项目等)打包为 .lantide 档。适合协作接续工作或换机(见 §11.1.0)。默认不包含实体数据档;可选勾选 Include physical data files 将已注册的 CSV/Excel/Parquet 一并打包。不包含 user_knowledge.md 或全域 global_config.json。
导出:
- 点击顶部列 UsersRound 图标 → Export… → Workspace。
- 可选是否包含 agent query ledger、chat sessions、MCP cache。
- 实体数据(可选): 勾选 Include physical data files 后可选 Referenced in SQL tabs 或 All registered files;大于 50 MB 须二次确认,大于 10 MB 显示进度。
- 选择保存位置;默认档名为
ws_export_<日期>.lantide。
导入:
- 未含实体数据: 五步精灵 — Rebind 匹配本机已注册档。
- 含实体数据: 六步精灵 — 另含 Review files to extract(冲突:Replace/Rename imported/Keep existing);文件解压至所选文件夹。
完成后 Reconnect databases、Reconfigure MCP sources;必要时对相关标签页执行 Source Run。可选择是否切换至新工作区。
注意: 连接密码不会写入套件;实体数据 bundle 可能含敏感文件,请谨慎分享。
11.1.3 导出与导入应用配置文件与完整备份(Application / Full backup)
Application profile 可打包跨工作区的 user_knowledge.md(User Memory)、global_config.json 子集(knowledge/memory 设置),以及可选的 AI 偏好(ai_settings_config)。不包含 license_cache.json、实体数据档或工作区内容。
Full backup 将一个或多个工作区(嵌套 .lantide 子套件)加上 Application profile 合并为单一 .lantide 档,适合换机完整迁移。
导出 Application profile:
- UsersRound → Export… → Application profile。
- 可选是否包含 AI preferences;默认不含 API keys(勾选含 keys 时须二次确认)。
- 保存为
app_export_<日期>.lantide。
导入 Application profile(三步精灵):
- 选择
.lantide并预览(含 user memory 大小、是否含 API keys)。 - 选择 User Memory:Merge(去重合并)或 Replace(覆盖前备份至
.pre_import.bak)。 - 选择 Knowledge settings(global_config.knowledge):Merge 或 Replace;Memory 仅 merge;可选套用 AI preferences。
导出 Full backup:
- Export… → Full backup。
- 多选工作区;可选 ledger/chat/MCP cache、各工作区实体数据(与 Workspace 导出相同 scope),以及 Application 可选项。
- 多工作区时实体数据大小在导出前显示为 Size unknown until export(各 nested bundle 独立估算)。
- 保存为
full_backup_<日期>.lantide。
导入 Full backup:
- 选择 bundle 后,依序为每个内嵌工作区指定新名称与文件夹;含
physical_data的工作区须逐步处理文件冲突(同 Workspace Extract Wizard)。 - 最后设置 Application profile(User Memory/Knowledge settings/AI preferences)。
- 完成后依检查清单重新连接数据库、MCP;必要时对相关标签页执行 Source Run,并检查 AI Settings(含 localhost 提示)。
11.1.4 可选加密(passphrase)
四种 .lantide 导出(Project、Workspace、Application profile、Full backup)均可选择以 passphrase 加密外层套件。未勾选时产生的文件与旧版相同(明文 ZIP,档头 PK),可与旧版应用互相导入。
导出:
- 在 Export 对话框勾选 Encrypt bundle(或类似选项)。
- 输入 passphrase(至少 8 个字元)并在确认字段再输入一次。
- 介面会提示:遗失 passphrase 将无法还原内容,请自行安全保存。
导入:
- 选择
.lantide后,系统先 inspect 套件类型;若为加密档,会显示 header 中的低敏感摘要(例如项目数、内嵌工作区名称),并标注需解锁后才能看到完整预览。 - 输入 passphrase 并点击 Unlock;解锁过程可能需数秒(Argon2 金钥衍生)。
- 解锁成功后显示完整预览(bindings、warnings 等),再执行导入或 Rebind。
注意:
- Full backup 仅外层加密;内层各工作区子套件仍为明文 ZIP。
- 加密套件需要较多暂存磁碟空间(解密时会写入暂存 zip);完成后自动清理。
- Preview 与 Import 会各自解密一次(无跨步骤快取)。
11.2 文件显示别名(Display alias)
每份 Plan / Report 可设置一个显示别名(最多 30 字),方便在侧边栏与标签页标签上用语意化名称辨识文件,而不必记住 01_plan.md 这类档名。磁碟上的实际档名不变。
如何设置:
- 在侧边栏项目文件列上按右键,选择 Set alias(尚未设置)或 Edit alias(已有别名)。
- 在对话框中输入别名;留空并保存可清除别名。
- 亦可对已打开的 Markdown 标签页双击标签或于标签上右键 → Edit alias 进行编辑(SQL 标签页的双击/右键仍为重新命名标签页,行为不同)。
显示规则:
- 侧边栏:有别名时显示
別名 (01_plan);无别名时仅显示 stem(如01_plan)。鼠标暂留可看到完整提示。 - 标签页标签:显示
專案名稱/別名或專案名稱/01_plan(无别名时);鼠标暂留可看到完整标题。双击编辑时仍只编辑别名本体。 - 项目名称不可包含
/字元(建立与重新命名时皆会验证)。 - 同项目内别名不可重复;若与其他文件冲突,保存时会显示错误。
与 AI 的关系:
- AI 可透过
list_project_files与聚焦项目摘要看见file_name与display_alias的对照。 - 你可在对话中用别名指称文件(例如「打开 Q1 计划」);Agent 工具会解析到正确的 canonical 档名后再读写内容。
11.3 文件封存(Archived docs)
当你的项目中累积许多 Plan / Report 文件时,可以将暂时不需要的文件封存,让侧边栏主要列表保持简洁。封存不会删除文件,也不会搬动磁碟上的路径——文件仍然存在于同一项目中。
介面位置:
- 在侧边栏展开某个项目后,列表最上方会固定显示 Archived docs 群组(可点击标题列展开/收合)。
- 未封存的 Plan / Report 显示在 Archived docs 下方,顺序与文件编号一致。
- 封存区是否展开会依目前工作区 + 项目分别记住(存在本机浏览器中)。
如何封存与还原:
- 在一般列表中,将鼠标移入某个文件列时,列右侧会显示封存图标;点击后该档会移入 Archived docs。
- 在 Archived docs 区内,移入文件列时同样会显示**还原(解除封存)**图标,点击后文件会回到下方的一般列表。
- 备援操作:在触控装置或不便 hover 时,可右键文件列,选择 Archive 或 Unarchive 完成封存/还原。
- 点击图标或选单项时不会打开文件;点击档名列(列本身)仍可照常打开 Markdown 标签页。
- Plan 若处于 Executing / Executed 等锁定编辑状态,仍可封存或还原(仅变更侧边栏归类,不解锁内容)。
与 AI 的关系:
- 封存后的文件仍可由 AI 读取与打开;若你需要继续某份旧计划或报告,直接打开即可。
- 在已聚焦项目的前提下,传给 AI 的「项目文件摘要」会略过已封存档,并以未封存文件为主来理解目前工作脉络(例如 Agent 工具中的「最新 Plan/Report」也以未封存者为准)。
11.3.1 Reference docs(参照文件)
Reference 是项目内可编辑的大型参照本体(字段映射、状态码字典、join 说明等),与 Plan / Report 分开列在侧边栏 Reference docs 子树下。
| 概念 | 说明 |
|---|---|
| Reference 档 | ref_N.md(新建默认;旧版 NN_reference.md 仍兼容),一般 Markdown 编辑 |
| Intro(索引) | 写入 project_knowledge.md 的 ## Rules,格式 [Ref: file_name] Purpose: … When to read: … |
| Agent 读取 | 依索引的 When to read 呼叫 read_reference 按需加载全文 |
| Agent 修改 | 仅 patch_reference(小范围 find-replace);建立新 Reference 请用 UI |
Update Intro(工具列):
- Create by agent:送 artifact 给 Agent →
propose_knowledge→ 审批卡 → Apply 写入 Rules。 - Enter manually:直接填写 Purpose / When to read,不经审批卡。
- 尚无 Intro 时,Update Intro 以黄字提示;首次保存成功后会引导建立 Intro(可选 Not now,需二次确认)。
导出/导入: Project bundle(.lantide)与 Workspace 内嵌项目皆包含 Reference 档(ref_*.md)与 project_knowledge.md 中的 [Ref: …] 条目。
Compare view: 可在 Reference 文件列右键打开唯读对照窗口(无批注 sidecar)。Tab bar 与 Compare view 中 Reference 标签页以琥珀色 md 标记,与 Plan(蓝)、Report(绿)区分。
封存: 已封存的 Reference 默认不列入 Agent 主动读取范围;除非你在对话中明确要求,否则 Agent 不会依 [Ref: …] 索引加载已封存文件。
11.4 项目焦点模式(Project Focus)
聚焦 / 取消聚焦:
- 在侧边栏的项目列表中,每个项目右侧有眼睛图标(👁)。已聚焦的项目其绿色眼睛图标会常驻显示;未聚焦时,眼睛图标与排序箭头默认隐藏,需将鼠标暂留在该项目列上(或键盘使列内获得焦点)才会显示,避免列上挤满图标。
- 点击眼睛图标即可聚焦该项目——图标变为绿色,该项目列会以高亮背景标示。
- 再次点击同一项目的眼睛图标可取消聚焦。
- 点击其他项目的眼睛图标会自动切换焦点(同时间只能聚焦一个项目)。
手动排序项目:
每个项目列右侧的 ↑ / ↓ 与(未聚焦时的)眼睛图标相同,默认在暂留该列或列内 focus-within 时才显示;列表最上/最下的项目对应无效的箭头会隐藏。点击箭头可调整项目在列表中的显示顺序。排序结果会持久保存,重新整理页面后顺序不变。
自动切换焦点:
当你打开一个 Plan 或 Report 标签页时,如果该文件所属的项目与当前聚焦的项目不同,系统会自动切换焦点到该项目:
- AI 未在生成时: 焦点自动切换,界面右下角会显示 Toast 通知(例如「Focused project switched to "销售分析"」),附带 Undo 按钮可一键还原。
- AI 正在生成时: 系统会先弹出确认对话框,让你决定是否切换(切换不会中断 AI 生成,仅变更焦点)。
- 尚未聚焦任何项目时: 直接静默切换,不显示通知。
注意: 自动切换焦点仅在同一工作区内生效。打开其他工作区的标签页不会触发自动切换。
自动清理:
- 当被聚焦的项目被删除时,焦点会自动清除。
- 重新命名工作区时,焦点与排序设置会自动迁移至新名称,不会遗失。
提示: 焦点状态按工作区独立保存——不同工作区可以各自聚焦不同的项目,互不影响。
11.5 Markdown 双模式编辑
Markdown 标签页支持两种编辑模式,可从标签页工具列随时切换:
| 模式 | 说明 |
|---|---|
| Visual(所见即所得) | 使用 Milkdown 编辑器,直接以富文本方式编辑,所写即所见 |
| Markdown(原始码) | 使用 Monaco 编辑器,直接编辑 Markdown 原始码 |
标签页标签颜色区分: Plan 标签页的标签以蓝色显示,Report 标签页以绿色显示,Reference 标签页以琥珀色显示,与侧边栏的颜色一致,让你一眼就能区分不同类型的 Markdown 文件。
工具列版面(Plan / Report): 左侧为 Visual / Markdown 模式切换;中间为 Save 图标按钮(Tooltip 显示 Cmd/Ctrl+S;有未保存变更时图标右上角显示圆点)与 View options(含 Wide layout,仅 Visual 模式);右侧为 Progress、Resolve (N)(Astroid 图标 + 文字,见 §11.9)、Approve & Execute / HTML Report 等工作流按钮。Plan 处于 Executing 或 Executed 时隐藏 Save。
Plan / Report 手动关联(View options): 在 Visual 模式下,已 Executed 的 Plan 与 Report 的 View options 会依关联状态显示 Linked report: … / Linked plan: …(点击打开已配对文件;名称优先显示别名)或 Link generated report / Link source plan(从尚未配对的候选中手动绑定)。Planning/Executing 的 Plan 不显示此选项。手动 Link 只写入 plan sidecar 的关联 metadata,不会把 Plan 标成 Executed、也不会冻结 steps 或完成 Todo——正式执行完成仍须走 Execute 流程。
提示: 两种模式的内容会即时同步。在 Visual 模式下新建的批注,在 Markdown 模式中会显示为
<mark>HTML 标签。
11.5.1 Plan / Report 代码显示
本节功能仅适用于 Plan 与 Report 类型的 Markdown 文件,且需在 Visual 模式下使用。Raw Markdown 模式与 Chat 对话中的代码显示不在此节范围内。
单行 code(反引号):
- 不会显示装饰性反引号字元。
- 以浅色底色 pill 呈现,搭配等宽字体,与正文区隔。
多行 fenced code(`````):
- 以统一卡片外框呈现(工具列 + 代码区共用外观),具浅色底色与边框。
- 本版不提供语法高亮,仅单色文字与底色。
Code block 工具列(由左至右):
| 控制项 | 说明 |
|---|---|
| 收合 / 展开 | 仅隐藏或显示代码正文;工具列始终可见。默认为展开。 |
| 语言标签 | 显示 fence 所宣告的语言(例如 sql);若未指定语言则显示 text。 |
| Copy | 将区块内容复制到剪贴簿。成功时显示 Copied;失败时显示 Copy failed。 |
| Open in new SQL tab | 以区块内容打开新的临时 SQL 标签页(temp_tabN),并自动切换至该标签页。内容原样贴入编辑器;若为非 SQL 语言区块,请自行确认后再执行。 |
收合状态持久化: 在同一工作阶段内,若你收合某个 code block 后切换至其他标签页再切回,收合状态会保留(保存于记忆体中的 tab-ui-state,不写入项目档)。
Agent 修改内容后: 若区块内文变更,系统会视为新的 code block,默认重新展开。
唯读状态: Plan 处于 Executing、或文件已锁定时,你仍可使用收合、Copy 与 Open in new SQL tab,不会因此解锁正文编辑。
11.5.2 Report 表格与图表工具
本节功能仅适用于 Report 类型的 Markdown 文件,且需在 Visual 模式下使用(Raw Markdown 模式不提供表格工具列)。Plan 文件中的表格不会出现下列工具。
悬停工具列: 将鼠标移到 Report 内的表格上时,表格右上角会出现一组图标按钮(与表格一起浮动,长文卷动时仍对齐表格)。按钮上没有文字标签;将鼠标停在图标上可看到说明。图标顺序(由左至右):Bar chart → Line chart → Copy for Excel;若该表已绑定图表,最右侧为 Remove chart。
图表区工具列: 已建立图表后,图表区块右上角会出现另一组工具列。图标顺序(由左至右):Show values → Bar chart → Line chart → Copy for Excel → Remove chart。其中 Show values / Hide values 可切换是否在图上显示数值标签(默认关闭);标签文字与表格保存格所见一致(含 %、千分位等),绘图仍使用解析后的数值。
| 图标(hover 说明) | 用途 |
|---|---|
| Show values / Hide values | 切换是否在柱顶/点上显示数值标签(仅图表区工具列;默认关闭)。标签为表格保存格原文。 |
| Bar chart / Line chart | 依表格数据建立柱状图或折线图。点击后打开 字段对应(Column mapping) 对话框,确认字段角色后立即在表下以 ECharts 渲染图表。折线图为直角折线(非平滑曲线)。 |
| Copy for Excel | 将目前表格复制为 Tab 分隔文字(TSV),并加上 UTF-8 BOM,方便贴到 Microsoft Excel、Numbers 或 Google 试算表。表头为第一列,其后为数据列;显示内容与 Visual 模式所见一致(含 %、千分位等文字,不会自动转成数值格式)。 |
| Hide source table | 在已建立图表且源表仍显示时,可隐藏源表、只保留图表(设置会持久保存)。 |
| Remove chart | 在图表区工具列中移除图表绑定。 |
图表持久化: 每张表的图表绑定、hide_source_table 与 show_data_labels 设置存于项目 sidecar 档(01_report.viz.json,与 Report 同名前缀),关闭并重新打开 Report 仍会保留。应用程序不再提供全域「一次隐藏所有已建图表的源表」开关。
贴到 Excel 的步骤:
- 在 Report 标签页切换至 Visual。
- 将鼠标移到目标表格上,点击 Copy for Excel 图标。
- 在 Excel 中选取要贴上的保存格,按
Cmd/Ctrl + V贴上。
源表已隐藏时: 隐藏源表后,悬停表格区域不会再出现浮动工具列;请改在图表区块右上角的同一组图标中使用 Copy for Excel(数据仍来自该图表对应的表格)。
限制与注意:
- 含合并保存格(colspan / rowspan)的表格仍可复制,但系统会提示可能无法在 Excel 中完整还原版面;贴上后请自行检查。
- 此功能与 SQL 查询结果面板的 Export 不同:Export 会将查询结果存成文件;Copy for Excel 仅复制 Report 编辑器内的 Markdown 表格到剪贴簿。
- 若剪贴簿写入失败(权限或环境限制),会显示错误提示。
- 切换 Dark / Light 主题后,已渲染图表的轴线与标签配色可能短暂与目前主题不符;重新打开 Report 标签页或再次切换 Show values 可恢复正确配色。
提示: Report 在 Plan 执行中的唯读状态下仍可使用 Copy for Excel 与 Show values,不会修改 Markdown 正文。
11.6 Plan 状态机
Plan 文件拥有四个状态,透过工具列右侧按钮管理(Executed 与 Stopped 显示为唯读状态标签,非可点按钮):
| 状态 | 说明 |
|---|---|
| Planning | 可自由编辑的初始状态;若项目尚无 Plan 档,Agent 在 Planning 状态可使用 add_plan 建立新 Plan(update_plan 仅适用已存在的 Plan 档) |
| Executing | AI 正在执行分析计划,文件进入唯读 |
| Executed | AI 已完成分析,文件唯读,但仍允许新建与编辑批注。此时 Agent 状态指示器会回到「Project Focused」,你可以继续查看报告或开始新的分析计划 |
| Stopped | 尚未完成但已正式停止;文件唯读,保留停止原因、已完成的部分成果与 Progress,并可连到替代 Plan |
一键核准并启动 AI 执行: 当你在 Planning 状态完成 Plan 的审阅后,点击工具列的 Approve & Execute 按钮,系统会自动将 Plan 状态切换为 Executing,同时自动向 AI Agent 发送「开始执行」系统指令(对话中显示为 Execute plan),驱动 Agent 根据 Plan 内容开始逐步执行分析——你不需要手动切到 AI 面板输入指令。即使 AI 面板处于收起状态,系统也会自动展开面板并开始执行。
中断恢复(Continue): 如果 AI Agent 在 Executing 过程中被中断(例如会话超时、网络中断、关闭 AI 面板后再打开、或重新加载页面),Plan 不会卡在 Executing 状态无法继续。此时:
- 工具列的按钮会从「Executing...」旋转动画切换为 Continue 按钮(左侧)与下拉选单按钮(右侧),组成 split button。
- AI 状态指示器会显示「Paused — click Continue on plan」。
- 点击 Continue 按钮,系统会向 AI 发送与 Execute 不同的「续跑」系统指令(对话中显示为 Continue plan),明确要求 Agent 根据对话历史与已有快取结果从中断处继续,而不是从头重新执行。
提示: 你不需要回到 Planning 状态重新开始。Continue 机制确保 Plan 的 Executing 状态可以安全地恢复,AI 会基于已完成的快取结果继续后续步骤。
停止并重新规划(Stop & Replan): 若资料不可用、口径或方向已改变,或不应继续这次正式执行,请从 Executing Plan 的动作选单选 Stop & Replan…;Planning Plan 则可选 Stop Plan…。在确认视窗中必须填写停止原因与目前部分成果,并选择是否立即草拟替代 Plan。
- 停止后旧 Plan 会标为 Stopped,不会冒充已完成;其 SQL Steps、Todo 与已取得的正式 evidence 都会保留供审阅。
- 选择建立替代 Plan 时,新的 Plan 会回到 Planning,并带有与旧 Plan 的明确关系;请重新审阅后再 Approve & Execute。
- Stopped Plan 的 New Plan 可让你稍后再开始替代分析。它不会偷偷恢复旧的 execution grant 或继续跑已停止的工作。
注意: 在 Executing、Executed 与 Stopped 状态下,Plan 正文无法手动修改。若需修改计划,请以 Stop & Replan 开新 Plan,或对已完成交付物以批注提出小幅修订。
执行进度(Progress): 当 Plan 处于 Executing 或 Executed 时,工具列右侧会出现 Progress 图标按钮。点击后在工作区顶部显示 Execution Progress 内嵌面板,包含两个标签页:
- Todo:Agent 维护的执行待办清单(唯读),以 Circle / CircleCheck 图标标示未完成与已完成项目。
- Steps:Query Step Ledger 镜像的查询步骤列表(唯读),可点 View SQL 查看对应 SQL。
面板底部可拖拽调整高度(默认约 280px,范围约 140–560px);缩小窗口时显示高度会自动适应,放大后恢复你调整过的高度。
当 Agent 更新 Todo 或新建查询步骤时,Progress 按钮会显示红点提示;打开面板后红点消失。进度数据保存于 Plan 同名的 sidecar 档(*.progress.json),不写入 Plan 正文。
Analysis Lineage: 在 Plan 或 Report 工具列选 Analysis Lineage,可开启由 Plan → Markdown Report → HTML Report 组成的脉络图。点选节点可查看状态、正式 evidence 角色,以及已停止 Plan 的原因与部分成果,并直接开启对应 artifact。若目前文件有未储存修改,请先储存:Lineage 只反映已保存的版本。手动建立、且没有连结 Plan 的 Report 会明确显示没有 Plan evidence;历史链过长时可选 Load more,不会把缺失或歧义的关系假装成完整。
11.7 沉浸式批注功能
批注功能让你在 Markdown 文件中对特定段落标记意见,这些意见会随文件一同保存。
新建批注:
- 在 Visual 模式下,用鼠标选取(反白)你想批注的文字。
- 选取完成后,文字末端会出现一个批注图标按钮,点击它打开批注浮窗。
- 在浮窗的输入框中撰写你的批注内容。
- 点击 Enter 按钮或按下
Cmd/Ctrl + Enter送出批注。
送出后,被批注的文字会以半透明黄色高亮标示,右侧会出现对应的批注卡片。批注内容会立即写入同名的 sidecar 档(*.annotations.json),并在 Markdown 正文中写入 id-only <mark data-annotation-id="…"> 标签;Cmd/Ctrl + S 会一并保存含 mark 的 Markdown 与 sidecar。
批注卡片面板:
当文件中存在批注时,界面会自动分为左侧编辑区与右侧批注卡片面板。你可以拖曳中间的分隔线调整两侧宽度。
每张卡片的垂直位置会与左侧对应原文对齐,包含表格保存格内的批注(已修正旧版可能错至面板顶部的问题)。当文件版面变更时——例如收合或展开 code block、图表区块高度变化——右侧卡片位置会自动重新对齐。
每张卡片显示批注的文字内容,并提供以下操作:
| 操作 | 方式 |
|---|---|
| 编辑 | 双击卡片文字,或点击铅笔图标(仅 Open 状态) |
| 保存编辑 | 按下 Cmd/Ctrl + Enter,或点击卡片外任意位置(自动保存) |
| 删除 | 点击卡片上的 ✕ 按钮(仅 Open 状态) |
| Archive | 已 Resolved 或 Anchor outdated 的批注可归档清除(history 仍留于 sidecar dismissed[]) |
| Reopen | 将 Resolved 批注恢复为 Open(保留 Agent 回复与 history) |
| Re-anchor | Anchor outdated 时重新反白正文以恢复锚点(仅主窗口) |
| View changes | 已 Resolve 的批注可查看 Before/After 对照(Popover 或长文 Dialog) |
双向 Hover 高亮:
- 当鼠标移到被批注的文字上时,右侧对应的卡片会高亮。
- 当鼠标移到右侧卡片上时,左侧对应的文字高亮会加深。
- 多张卡片(尤其多笔 Resolved)垂直位置可能重叠;hover 左侧原文或右侧某张卡片时,该卡片会置顶并以不透明背景显示,方便阅读堆叠区块。
这让你能快速对照批注与原文的对应关系。
状态用语: 主窗口批注卡片上的 Anchor outdated 与 Compare view 内的 orphaned 指同一状态——正文 mark 遗失或无法对应时,批注 metadata 仍保留,需 Re-anchor(仅主窗口)或 Archive。
提示: 批注高亮由 Markdown 内
data-annotation-idmark 与编辑器 runtime map 共同驱动;sidecar 保存 comment、status、history 等 metadata(不再写入 UTF-16anchor.span)。旧项目若仍含data-commentinline mark,首次打开时会自动将批注 metadata 迁移至 sidecar;正文 id-only mark 的完整保留仍在逐步收敛,迁移过程可能先写入不含旧 inline tag 的干净 Markdown。
注意: 不支持对已有批注的文字范围再叠加批注(巢状批注)。如需修改批注范围,请先删除现有批注,再重新选取并新建。
11.8 AI 批注上下文(read_plan / read_report)
当你在 Plan / Report 中使用批注并呼叫 AI 时,Agent 透过 read_plan / read_report 取得:
- 磁碟正文
content(含 id-only<mark data-annotation-id>标签) - 批注 sidecar
annotations(含 open / resolved 状态、quote、history;忽略过期的anchor.span) open_annotation_count与annotation_summary(Action Required 任务清单)patch_guidance(resolve 模式 A/B 与 mark 边界规则)
Resolve Comments 流程使用专用工具 resolve_annotations,会原子更新 sidecar 与 Markdown 正文(保留 mark),并透过 sync_tab_content 刷新编辑器。
11.9 一键批注处理(Resolve Comments)
当文件中有多条批注需要 AI 统一处理时,你不需要手动逐条与 AI 沟通——当文件中存在批注时,工具列右侧会出现 Resolve (N) 按钮(Astroid 图标 + 文字,N 为待处理批注数;与右侧 AI 面板图标相同),一键驱动 AI 读取所有批注并修改文件。
操作方式:
- 在 Plan 或 Report 的 Markdown 标签页中,确认你已新建至少一条批注(此时工具列会显示 Resolve (1) 等按钮)。
- 点击 Resolve (N) 按钮(hover 可见完整说明,例如「Resolve N comments with AI」)。
- 系统会自动:
- 保存当前文件(确保 AI 读取的是最新版本)。
- 打开 AI 面板(若已收起)。
- 向 AI 发送批注处理请求,AI 会根据文件中所有批注的修改意见一次性更新文件内容。
按钮显示与停用:
| 情况 | 行为 |
|---|---|
| 文件中没有任何批注 | 按钮不显示 |
| Plan 处于 Executing 或 Executed | 按钮不显示(正文已锁定) |
| AI Agent 正在执行中 | 按钮显示但停用;提示 Agent is busy |
提示: Resolve Comments 与手动在 AI 对话中说「帮我处理批注」效果相同。AI 会透过
read_plan/read_report读取 sidecar 批注清单,再以resolve_annotations写回。处理完成后文件与 sidecar 会自动更新;Resolve (N) 计数来自 sidecar 的 open 批注数。
设计说明: Plan / Report、批注、Execute 边界见 Agent 时代的数据分析工作流 §三–§八。
11.10 Compare view(对照窗口)
Compare view 是独立的桌面子窗口,用于唯读并列查看 Plan、Report 或持久 SQL 标签页,方便双荧幕或宽荧幕工作流:在主窗口编辑与执行,在 Compare view 对照阅读。Compare view 内不提供 Markdown 工具列、不可执行 SQL、不可新建或修改批注。
11.10.1 适用内容与入口
| 内容类型 | 如何打开 Compare view |
|---|---|
| Plan / Report(项目 Markdown) | 侧边栏 Projects 中文件右键 → Open in compare view;或主窗口已打开的 Plan / Report 标签页右键 |
| 持久 SQL 标签页 | 侧边栏工作区 Persist 列表右键 → Open in compare view;或主窗口持久 SQL 标签页右键 |
| 封存文件 | Archived docs 内的 Plan / Report 与一般文件相同,右键可打开 |
不支持: 临时(Temp)SQL 标签页、快取表、MCP 数据表右键打开。
子选单结构:
Open in compare view ▸
New compare view
─────────────────────
Compare view 1
Compare view 2
- New compare view:建立新的对照窗口(最多 2 个实例:Compare view 1、Compare view 2)。
- 若两个实例皆已打开且未关闭,New compare view 会停用;需先关闭其中一个 OS 窗口后才能再新建。
- 每个 Compare view 内最多 5 个 compare tab;已满时对应项目停用,并提示
This compare view is full (5 tabs max).
若目标文件已在该 Compare view 中,系统会激活该 compare tab 并将 OS 窗口带到前景。
11.10.2 窗口与标签栏
- 新开的 Compare view 1 默认出现在主显示器右半;Compare view 2 在右半区域略为错位,避免与 view 1 完全重叠。你可将窗口拖到第二块荧幕。
- 窗口标题格式:
Compare view 1 — {目前 active tab 標題}。 - 标签栏布局(由左至右):☰ 汉堡选单 → Refresh → 可横向卷动的 compare tabs。
- 样式与主窗口标签栏一致(高度、字体)。
☰ 汉堡选单:
- 第一项 Refresh all:重整该 Compare view 内所有 compare tab。
- 其后为 tab 列表:点击可切换 active tab;每列右侧 × 可从 Compare view 移除(不关闭主窗口标签页)。
Refresh(左侧图标按钮):
- 仅重整目前 active 的 compare tab(tooltip:Refresh active tab)。
- 进行中图标会旋转;全部重整成功时可能显示
Compare view refreshed.。
11.10.3 唯读内容与批注
| 类型 | Compare view 行为 |
|---|---|
| Plan / Report | Visual 唯读 Markdown;无工具列、无 Progress 面板 |
| 持久 SQL | 上:唯读 SQL(跟随应用程序深/浅色主题);下:唯读查询结果表(不可 Run)。有结果、执行中或错误时,SQL 与结果区之间可拖曳分割调整高度 |
| 批注 | 读取 sidecar(*.annotations.json);显示 open / resolved / orphaned 卡片与高亮;View changes Popover 可用;卡片不可编辑、删除或 Re-anchor;鼠标 hover 仍可联动高亮 |
编辑、Execute、Save、新建批注、Resolve Comments 请回到主窗口对应标签页操作。
11.10.4 与主窗口的同步
- 若 compare tab 对应主窗口中仍打开的同一标签页(mirror),主窗口的内容变更(含未保存修改)会即时反映到 Compare view。
- 若你从侧边栏直接打开、主窗口尚未开该档,Compare view 以当下磁碟内容为准(standalone);之后在主窗口打开同一文件后会自动升级为 mirror。
- 关闭主窗口上的某个标签页不会关闭 Compare view;该 compare tab 会保留关闭当下的内容快照,仍可继续唯读查看。
来源状态提示(Info icon):
在 compare tab 标题旁,下列情况会显示 Info 图标(非主 TabBar 的 dirty 圆点):
| 情况 | Tooltip(英文) |
|---|---|
| 主窗口对应标签页有未保存修改 | Source tab has unsaved changes. |
| 磁碟上有较新的版本(常见于 Sidebar 直开后文件已被他人或外部更新) | A newer version is available on disk. Click Refresh to update. |
点 Refresh 或 Refresh all 可从磁碟重新加载。若主标签页有未保存修改,Refresh 仍会更新 Compare view,但不会覆写主窗口记忆体中的内容,并可能提示 Main tab has unsaved changes. Compare view refreshed from disk.。
11.10.5 Refresh 行为摘要
| 绑定方式 | Refresh 做什么 |
|---|---|
| Mirror + Plan / Report | 从项目文件重新读取;主标签页未 dirty 时同步回主窗口 |
| Mirror + 持久 SQL | 从工作区 persist API 重新读取 SQL;结果沿用主标签页当前结果(若主标签页未 dirty 则同步) |
| Standalone | 仅更新 Compare view 内显示,不影响主窗口 |
11.10.6 生命周期与限制
| 事件 | 行为 |
|---|---|
| 关闭主应用窗口 | 所有 Compare view 一并关闭 |
| 关闭 Compare view OS 窗口 | 仅关闭该实例;主窗口与另一 Compare view 不受影响 |
| 关闭 Compare view 内最后一个 tab | 保留空 Compare view 窗口(显示 placeholder) |
| 切换工作区 | 关闭所有 Compare view 并清空 compare tab 列表 |
| 同一执行期内关闭再开同编号 Compare view | 尽量还原上次窗口位置(跨重启还原尚未支持) |
提示: Compare view 是「读来对照、在主窗口改」——适合 Execute 时对照 Plan、验收 Report 时对照口径、或比较两份持久 SQL 结果。分析师工作流示例见 Plan → Execute → Report。