写作¶
写作使用统一工作区,不再切换到独立写作模式。文件树在「论文库」下方将 thesis/ 显示为「写作」,展开后直接列出项目文件夹和源文件。旧的模式偏好不再恢复独立工作面。编译、编辑器、SyncTeX 和引用能力继续复用现有实现,见 LaTeX。
项目与文件¶
「写作」根目录可以直接放项目,也可以创建多层分类,例如 thesis/2026/投稿/论文A/。右键「写作」或现有分类目录,选择「新建文件夹」即可增加分类。分类行右侧的加号创建项目,填写名称、选择模板和引擎后,主文件生成在独立项目目录里。模板来源和打包方式见 写作模板。
新项目的根目录包含 agentero.project.json。配置保存项目 ID、名称、相对于根目录的主文件路径和编译引擎。项目行使用书本图标,右侧齿轮打开项目设置。主文件可以位于 src/paper.tex,正式编译默认从项目根目录解析引用。项目和分类移动后,配置中的项目 ID 随目录保留。项目内文件夹用于章节和素材,例如 chapters/methods/。
点击项目名称会展开其文件树并恢复该项目最近编辑的源码。本次会话没有记录时打开主文件。主文件缺失时仍可展开目录、新建文件并在项目设置中选择入口。项目内的 .tex、.bib、.sty、图片、Markdown 和素材 PDF 在左侧打开,右侧显示该项目的编译预览。旧稿件继续走原有本地流程,项目目录和文件保持原样。
点击当前编译配置生成的 PDF(包括 main.pdf 和自定义输出目录、文件名)恢复所属项目的源码和预览,不另开普通 PDF 标签。其他素材 PDF 在左侧查看。各项目独立解析主文件,不会根据相同文件名跳到其他项目。
项目编辑区临时铺满中间工作区,其他阅读分栏隐藏;切回项目外的论文或笔记时恢复原分栏位置和宽度,不关闭已有文档。预览顶部沿用编译、引擎、诊断、历史和上传工具栏;分栏比例与工具排版不变。源码定位 PDF 优先使用当前项目内嵌预览。
源码与 PDF 分隔条约三分之一高度处的按钮使用随主题切换的浮层配色,悬停时显示手形光标;按钮独立于拖拽区域,点击不会调整分栏宽度。→ 按源码光标定位 PDF,不读取或同步源码选区;在源码或 PDF 中开始选择时,另一侧的选区会收起,同一时间只保留一侧的选区。在 PDF 中划选、单击或双击只选择/记录 PDF 位置,不会移动源码光标,也不会在源码编辑器里带出原生选区;反向定位只由 ← 按钮或 ⌘/Ctrl + 点击触发。← 优先使用当前 PDF 最近一次点击的页内位置。⌘/Ctrl + 点击 PDF 定位对应源码。悬停或键盘聚焦箭头时,在右侧显示跳转方向提示;← 额外提示用 ⌘/Ctrl + 点击可更准确地定位,→ 显示定位快捷键。缩放或滚动不会改变已记录的 PDF 坐标。尚未点击时,← 使用当前页可见区域中心;重新加载 PDF 后清除旧位置。此同步能力适用于编译后的 PDF,实时预览尚未接入。
PDF 上方一行的左边是编译按钮和黄色叹号入口。编译中按钮保持主色,文字是「正在编译…」,加载指示和右侧下拉外观一致;菜单里的再次编译、强制重建和清理不可用,停止编译仍可用。编译结束、失败或取消后按钮马上回到「编译」,成功时短暂显示「编译成功」,不会一直转圈;成功后右侧 PDF 原地刷新为新内容,保持当前页码与缩放。编译按钮旁的下拉菜单里,「实时预览」上方是 LaTeX 引擎列表,显式项目在项目设置中更改引擎,旧项目可直接从下拉菜单选择。实时预览需要 LuaLaTeX 和 realtime-tex 支持文件,打开后 PDF 右上角显示带状态圆点的「实时预览」卡片;点叹号打开问题小卡片,列出编辑器检查与编译日志里的警告和错误,卡片底部的「编译日志」进入完整列表:左边是问题,右边是原始日志,点一条会跳到源文件并滚到对应日志。编译失败时叹号变红,错误留在卡片里,不再另弹 toast;改好后重新编译,叹号恢复黄色。最右侧是带文字的历史与上传按钮。源文件保存后自动编译,⌘S 手动保存也会触发一次编译。旧项目沿用主文件的 % !TEX program、上次选择和模板要求推断引擎。新项目创建时可使用模板默认引擎,也可手动选择。每个项目单独绑定自己的 GitHub 仓库:还没连接仓库时,点上传打开设置对话框,在里面填这个项目的仓库、选上传时机并上传。上传可以是手动、每次编译后,或每 5、15、30、60 分钟。默认是每次编译后;还没填写仓库时不会上传,定时上传跟随当前打开的项目。PDF 底部悬浮页码、缩放滑动条和页面背景,位置与顺序和阅读里的 PDF 一致。论文库、笔记与写作文档共用工作区。
「历史」打开修改历史对话框:左边是每次上传,右边是这一版改动的文字。可以回退到选中的那一版,回退只改工作区里的文件,不删掉之后的上传记录。列表顶部是还没上传的修改。保存源文件不会另记一份本地快照。历史差异由 loadWritingGitDiff 读取 Git patch,前端直接展示,不再维护本地快照的行差异算法。上传只提交当前项目的目录(仓库根就是当前项目目录)并推送到它自己的仓库,编译产物和 PDF 不上传。项目之间各有独立仓库和上传记录,不会混进彼此的结果,历史也只列出这个项目。没有改动时不会多出一条记录。还没登录时,由本机 Git 打开系统登录窗口。没有 Git,或写作目录和远端改动对不上时,不会覆盖任何一边,自动上传也会停下来,等你再点一次上传。
项目文件夹在应用外移走或删除后,文件树随文件监听刷新。thesis/ 这一层是书架,不当作项目。Windows 上编译把引擎输出写到临时文件再读,避免 pdfTeX 在管道上 fflush 失败。
Agent 与同步边界¶
文件树上不再提供编译。写作时 Agent 的默认上下文是当前打开的稿件,不再沿用阅读里的论文。空对话提供续写、收紧文字、检查论证,以及从文库起草带引用的下一段。源码和编译后的 PDF 都可以划词后加入对话或快速提问。编译问题列表里可以把这一条交给 Agent,并带上所在文件和行。Agent 回复里指向 thesis/ 源文件的链接会在工作区编辑器里打开。同步不会替你创建 GitHub 仓库,也不会在应用里保存密码。
诊断共享类型定义在 src/lib/tex/editor-diagnostic.ts,编辑器 UI 和 lint bridge 均依赖该契约,避免 lib 层反向依赖组件。
文件或目录移动后,Writing 会话与 TeX 编译根设置共用 lib/core/path.ts 的 createPathRemapper 更新路径;保留按顺序首个匹配、忽略大小写与目录边界匹配语义,未命中路径保持原样。
项目云协作¶
项目云协作与云编译目前仅供内部桌面构建测试,与登录入口共用 VITE_AGENTERO_ACCOUNT_SURFACE 构建开关。公开安装包显式关闭。关闭时,文件树与编译工具栏隐藏云项目入口,已绑定的本地副本也按普通本地文件打开,协作绑定留在 Vault 中供内部构建重新连接。
本地内部测试使用以下命令。内部安装包可用同一个环境变量运行 pnpm tauri build。
VITE_AGENTERO_ACCOUNT_SURFACE=1 pnpm tauri dev
显式项目的编译工具栏有云图标。打开后可登录 Agentero,再选择「启用云协作」。应用先保存编辑器缓冲,再上传当前项目根目录内的源码、目录和素材。生成的 PDF、编译缓存、隐藏配置和本地冲突副本留在本机。分类目录、兄弟项目和整个 Vault 不参与上传。
要在另一台电脑打开已有项目,点击目标分类行右侧的「打开云项目」,选择有权访问的项目和本地文件夹名。已有同 ID 的本地目录只有在文件与云版本一致时才会重新连接。两份内容不一致时先将本地项目复制为新的 ID,再移开原目录,之后可以下载云版本。
打开共享项目后,CodeMirror 使用共享文本和远端光标。修改写入该 Vault 的 .agentero/writing-cloud.sqlite,再投影到普通源码文件。桌面关闭前会等待 SQLite 保存。离线时有编辑权限的本地副本可以继续改,连接恢复后会同步。云图标只有在服务端确认完整状态且本地文件已投影后才显示「云项目已保存」。同一台电脑上,一个共享项目同时由一个窗口维护。
应用运行并打开项目时,外部文件编辑也会同步。互不重叠的修改可以合并。如果两边改了同一区域,应用在项目内的 Agentero Conflicts 保存外部副本,再投影共享内容。外部改动较复杂时可能需要手动合并。关闭桌面期间的修改会在下次打开项目时重新对账。
目前共享项目所在的 Vault 需要先断开 Vault Sync。项目加入云协作后,Vault Sync 和这个项目的 Git 上传与恢复会暂停,以防两套写入同时修改源码。同步完成后可从云图标选择「保留本地文件并断开协作」。最后一个共享副本断开后,这个 Vault 可以重新配置 Vault Sync。断开只移除当前电脑的协作绑定,云项目及其他成员保留。
共享项目可以从预览工具栏切到「云编译」。点击「云编译」会先同步本机编辑并确认服务端保存,再排队编译该版本的项目文件。编译期间或失败后,右侧继续显示上一次成功的 PDF,并标明它的版本号。云编译工具栏可以取消正在运行的任务、打开编译日志和双向定位。跳转使用 PDF 对应版本的源码位置,源码已改动时会提示版本差异。点左上角「本地编译」可切回桌面编译。