凌晨一点,我在 Overleaf 里第二次点下 Recompile,页面右上角还在转圈。上一次报错是File main.bib not found,改完之后又变成Undefined control sequence。论文明明只改了几句话,编译却像拆雷一样。旁边还开着 DeepSeek Harness 的会话面板,为了这篇论文,我已经在它和 Overleaf 之间来回切换了两个小时。
这不是我第一次在写论文时被 LaTeX 卡住,也不是第一次觉得“写论文”最累的部分根本不是“写”。真正消耗精力的,是反复修改、反复编译、反复校对,以及在不同工具之间来回切换上下文。
后来我把 DeepSeek Harness(下文简称 DSH)正式接进这个流程,用来在 Overleaf 里辅助写稿和改稿。试了几个月后,我的判断是:这两个工具的组合,真正价值不是让 AI 替你写论文,而是把“写作—修改—编译—再修改”这个循环变得可控、可追溯、可复用。这篇文章就来讲讲我是怎么搭这个流程的,以及哪些地方值得做,哪些地方是坑。
1. 先搞清楚这个组合真正解决的是哪一类论文工作
1.1 Overleaf 管排版,DSH 管什么
Overleaf 是现在学术界用得最广的在线 LaTeX 写作平台。它解决的核心问题是排版和协作:你不需要在本地安装一整套 TeX 发行版,打开浏览器就能写,项目里的.tex、.bib、.sty、图片文件都在同一个云端项目里,编译结果实时可见,还能通过分享链接让别人在线审阅和修改。
DSH 的情况不太一样。从它的名称和社区讨论来看,它是一个围绕 DeepSeek 模型的交互式应用层,可以理解成一个带工作区、会话归档和插件机制的 AI 工作台。它装在你本地,可以走桌面端,也可以做本地部署。和浏览器里普通聊天窗口最大的区别是:它能保存工作区结构,归档历史对话,还能通过插件扩展能力。
一个是排版和协作的容器,一个是生成和修改文本的工作台。这两个工具本来各有用途,但论文写作恰好是同时需要“精确排版”和“自由改写”的场景,所以它们天然互补。
1.2 写论文的真正瓶颈不是打字,是反复修改
如果你只是要写一段话,任何一个 AI 对话界面都能做到。但论文不一样。论文有结构、有格式、有引用、有图表,还有期刊模板要求。你把一段 AI 生成的内容粘进 Overleaf,很可能因为它带了多余空格、特殊 LaTeX 字符,或者引用了不存在的标签,导致整个项目编译失败。
所以真正的问题不是“AI 能不能写”,而是“如何在 AI 生成内容和 LaTeX 排版规则之间建立一个稳定的衔接机制”。DSH 的价值就在这里:它可以围绕一个论文项目反复工作,不是一次性问答,而是每一次修改都基于前面的对话上下文。你改完一段,告诉它哪里好哪里不好,它会按你的标准和风格继续调整。这种能力单靠 Overleaf 自带的协作和修订模式是做不出来的。
一个核心判断:这个组合的价值不在“更快”,而在让复杂任务变得可控、可复用、可迭代。如果你想抄一段话,不需要 DSH;如果你想连续十轮修改同一段引言,并且每次都清楚改了哪里、为什么改,那 DSH 才有意义。
2. 搭建最小可用工作流:从空项目到第一版修改
2.1 准备工作:Overleaf 项目和 DSH 环境
先确认两个前置条件。
Overleaf 这边,你需要一个已经能正常编译的项目。如果从零开始,建议直接在 Overleaf 里选一个和目标期刊接近的模板,不要自己搭,因为模板决定了很多格式层面的细节。如果是从现有论文迁移,注意导入的是一个.zip压缩包,里面通常包含.tex源文件、.bib参考文献、图片文件夹和可能的.sty样式文件。导入后在左上角菜单里确认主文件路径,再试编译一次。这一步是为了确认项目的基线是干净的,后面所有 AI 辅助工作都建立在这个基线上。
DSH 这边,常见安装方式有桌面版和 Docker 本地部署两种。如果你只是写论文,桌面版通常够用。安装时如果卡住,最常见的两个位置是依赖下载阶段和pnpm dsh web启动阶段。前者多半是网络问题,后者多半是端口被占用或 Node 版本不匹配。这里先不展开,后面排查部分会专门讲。
注意:先跑通一条最小链路,再考虑批量任务。不要一上来就把整篇论文丢进去。
2.2 把任务拆成三个区:生成区、排版区、验证区
我一般会把整个流程分成三个区,避免 AI 直接操作整个文件。
- 生成区:在 DSH 里写提示词,让模型生成或改写文本、LaTeX 代码片段。
- 排版区:把生成的文本粘贴到 Overleaf 对应的
.tex文件里,替换或插入对应位置。 - 验证区:在 Overleaf 里重新编译,检查是否有报错、格式是否正常、引用是否还在。
为什么要这样拆?因为 AI 生成的内容在对话窗口里看得再漂亮,进入 LaTeX 环境后可能完全是另一回事。%在 LaTeX 里是注释符,_在数学环境外会报错,中文和英文之间的空格处理、模板自带的字体配置,都可能导致编译问题。你在验证区检查的不是内容好不好,而是内容能不能被项目接受。
2.3 第一次实操:让 DSH 改写一段摘要
有了三个区的概念,我们走一次最小实操。
假设你要改写 Overleaf 项目里的论文摘要。先在 Overleaf 里把原文复制出来,然后在 DSH 里新建一个会话,给它一个结构化的请求:
你是论文写作助手。我会给你一段论文摘要的当前版本。 当前版本: [粘贴原文] 请按下面要求改写: 1. 保持学术风格,不要增加新的技术内容。 2. 每句话控制在 25 个词以内。 3. 不要使用 "in this paper" 开头。 4. 直接输出 LaTeX 文本,不要 Markdown 标题。 如果原文里有 \cite{}、\ref{} 这样的 LaTeX 命令,必须原样保留。这里的关键不是让模型写得多华丽,而是给它足够多的约束。写完以后,切换到 Overleaf,找到摘要对应的位置,粘贴进去,重新编译。这一步如果编译通过,说明你的最小工作流已经跑通了。如果失败,先不要调内容,优先检查特殊字符和格式问题。
3. 进阶使用:从润色到批量修订的四类常见任务
3.1 润色语言:把中式英语改成地道的学术表达
学术写作里最常出现的需求是润色。中文作者写英文论文,很容易出现三类问题:句子过长、从句套从句;表达冗余;以及直接把中文逐字翻译成英文。
用 DSH 润色时,我会要求它做两件事:一是重构句式,二是保持专业术语不变。具体到提示词,要给它一个“目标风格”的锚点:
请将下面的论文段落润色为更适合英文期刊的学术表达。 要求: - 保留所有 LaTeX 命令、公式、引用标签。 - 避免以 This paper、We can see 开头。 - 每段最多 6 行。 - 润色后给出 2 个版本:一个保守版,一个更流利版。 - 最后用 3 条说明你改了什么,为什么这样改。最后一条很重要。如果模型只给结果,你没办法判断它的改写是否改变了原意。让它说明改动理由,你才能快速确认哪些可以接受、哪些需要否决。
3.2 解释编译错误:让 DSH 当 LaTeX 排错助手
Overleaf 里的报错信息往往非常简短,比如Undefined control sequence、Missing $ inserted、File not found。新手看到这些信息的第一反应是上网搜,但很多时候搜到的答案和你的项目环境并不匹配。
这时候可以把报错信息连同上下文一起丢给 DSH:
我在 Overleaf 编译论文,遇到下面的报错: [粘贴报错日志] 我的项目使用 [期刊/会议] 模板,主文件是 main.tex,报错位置在 [章节/文件]。 请帮我分析: 1. 这个报错最可能的原因是什么? 2. 按照可能性从高到低列出排查步骤。 3. 给出一个最小修改示例。 4. 如果有需要确认的项目文件,告诉我应该检查什么。注意:不要在提示词里只给报错信息而不给项目上下文。模型不知道你的模板、你的宏包加载顺序,也不知道你最近改了什么。上下文越完整,诊断越准确。
3.3 生成复杂元素:表格、公式、TikZ 代码
写论文时,表格和公式是最容易让人崩溃的部分。表格的列宽、对齐、跨页,公式的编号和对齐,都需要反复调。用 DSH 生成这类代码时,我建议先在 Overleaf 里单独建一个测试文件,把生成的代码放进去试编译,确认没问题之后再挪到主文件里。
比如说,你要生成一个三线表:
\documentclass{article} \usepackage{booktabs} \begin{document} \begin{table}[htbp] \centering \caption{实验参数} \begin{tabular}{lcc} \toprule 参数 & 数值 & 说明 \\ \midrule A & 0.1 & 学习率 \\ B & 128 & 批量大小 \\ C & 3.5 & 温度 \\ \bottomrule \end{tabular} \end{table} \end{document}这是常见的示例结构,实际用的时候要根据你的模板调整。关键是先在独立文件里验证代码能编译,再合并到主文件,不要直接在完整论文里试错。
3.4 批量修订:先小样本,再整篇
当你需要修改整篇论文的语言风格时,不要一次性把全文贴给模型。一是上下文长度有限,二是模型对超长文本的修改一致性会下降。
更稳妥的做法是:
- 先选一小节(比如 200 到 300 词)做润色,确认输出符合预期。
- 把这一节的修改经验作为“风格示例”,放回 DSH 的会话里,告诉它“按照这个风格继续改下一节”。
- 分批处理每一节,每次处理完都粘贴到 Overleaf 里编译。
- 如果项目开启了修订模式,对比修改前后的差异,逐条确认。
批量操作的关键是每一步都要能回退。Overleaf 有版本历史,DSH 有会话归档,两者配合才能保证改坏了还能回去。
4. 关键参数与常见坑点
4.1 上下文管理:不要一次性喂整篇论文
这是最容易踩的坑。
很多人拿到 DSH 的第一反应是把整篇论文丢进去,让它“通读全文然后修改”。效果通常不理想。模型在长上下文里会丢失注意力分布,开头和结尾的内容可能改得比较仔细,中间部分容易被忽略,而且整篇同时修改时风格一致性很难控制。
我建议的做法是“先给目录,再按需展开章节”。你可以在第一个消息里告诉模型论文的整体结构,包括目标期刊、章节标题、每章大概内容,然后每次只讨论一个章节。这样模型有全局认知,但每次只处理一个局部任务,质量会稳定很多。
4.2 LaTeX 逃逸与格式问题
AI 生成的文本里经常出现 LaTeX 不能直接处理的字符。常见的坑包括:
%、&、#、_、$、{、}这些特殊字符,如果不在数学环境或命令里,会直接导致编译报错。- 中文论文里,AI 可能生成多余的半角空格,导致排版不整齐。
- 从聊天界面复制文本时,容易带进 Markdown 语法痕迹,比如
**加粗**或###标题。
解决方法也很简单:在提示词里明确要求“输出纯 LaTeX 文本,不要 Markdown 格式”,并且在粘贴到 Overleaf 后,先检查有没有多余的符号,再编译。
4.3 安装与网络问题
DSH 安装过程常见的卡住点有两个。一个是下载依赖时卡在某个包上,另一个是执行pnpm dsh web启动前端时一直转圈。前者通常和网络环境有关,可以检查镜像源和网络配置;后者则需要确认 Node 版本、端口占用和项目依赖是否完整。
如果你用的是本地部署方案,还要注意磁盘空间和内存占用。生成模型文件、索引文件、会话归档都可能占用不少空间。跑了几十轮对话之后,如果发现响应变慢,先检查工作区目录是不是已经堆了太多历史记录。
4.4 版本与协作
DSH 的会话归档功能,我建议养成随手归档的习惯。每完成一个章节的修改,就把关键对话归档,备注好时间、章节和改动方向。这样下次打开 DSH 时,不用重新拼装上下文,直接找到对应历史会话继续操作。
Overleaf 那边也有类似机制。每次大改之前,建议在 Overleaf 的版本历史里创建一个快照,或者在文件名里标注版本。不要依赖 AI 生成的引用列表和参考文献,实际提交前一定要对照原始文献确认。
5. 排查链路:当流程跑不通时,先查哪一层
如果你在 Overleaf 里粘完 DSH 生成的内容后编译失败了,不要慌,也不要立刻把整段代码删掉。按照下面的顺序排查。
第一步:确认报错位置。Overleaf 会标出第一次出错的代码行,先看那一行是什么内容。如果它正好是你刚粘贴进去的文本,那大概率是特殊字符或逃逸问题。
第二步:检查输入格式。你粘贴给模型的内容是不是包含不可见字符?模型输出的内容是不是多了 Markdown 代码块标记?有没有从 PDF 或 Word 里复制进来时带到换行符?这些都会影响最终文本质量。
第三步:检查环境和依赖。你的项目模板有没有加载相应的宏包?比如用了booktabs的表格,模板里却没有\usepackage{booktabs},那编译一定会报错。生成代码时要说清模板环境,或者先在测试文件里验证。
第四步:检查参数和配置。如果你批量处理多个章节,是否同时修改了多个文件?是否改了同一个标签导致引用冲突?如果 AI 为你生成了新的\label{},确保主文件里没有重复标签名。
第五步:确认工具边界。有些问题并不是 DSH 的错误,而是它设计上就不适合某些任务。比如让它精确计算图表内的数据,或者让它处理非常小众的宏包,它可能并不了解。这种情况换一种提问方式,或者手动修改,比反复追问更高效。
| 现象 | 优先检查 | 常见原因 |
|---|---|---|
| 粘贴后编译报错 | 刚粘贴的那段文本 | 特殊字符、Markdown 痕迹 |
| 引用显示问号 | .bib文件、\cite{}标签 | 标签名不匹配、未编译两次 |
| 编译超时 | 宏包加载、图表代码 | 无效循环、宏包冲突 |
| DSH 卡在启动 | Node 版本、端口占用 | 依赖不完整、工作区过大 |
| 修改结果不稳定 | 提示词约束、上下文长度 | 一次处理太多内容 |
这张表是我实际使用中最常见的问题和排查优先级的整理。你可以把它当成检查清单,先按行从上到下过一遍。
6. 这个方案能做什么,不能做什么
6.1 适用边界
Overleaf × DSH 的组合,最适合以下几类人:
- 写英文论文但觉得语言表达不自然,需要一个稳定的改写助手。
- 对 LaTeX 不熟,经常被编译报错打断思路,需要解释和示例。
- 论文修改有多轮,希望把每次修改的经验和会话归档保留下来。
- 在 Overleaf 上协作,希望通过 AI 快速生成候选文本,再由人工确认。
它不适合的场景也很明显:
- 不能替代真实的实验和数据分析。AI 可以帮你写实验章节的文字,但实验数据必须来自你的实际工作。
- 不能替代同行评审的判断。模型可能会生成听起来合理但实际上有误的内容,比如引用错误、公式推导不严谨。
- 不适合把 AI 生成内容直接提交为最终版本。任何 AI 辅助的修改,都必须经过编译验证和人眼确认。
6.2 长期价值:把临时经验沉淀成论文工作流
我用这个组合一段时间后,最大的收获不是省了多少时间,而是把“写论文”这件事从一种临时的、依赖状态的体力活,变成了一种可沉淀的工作流。
具体来说,我在 DSH 里建了一个论文专用工作区,里面放了几个固定模板:
- 摘要改写模板
- 引言逻辑检查模板
- 编译错误诊断模板
- 图表 LaTeX 代码生成模板
每次开新论文,不需要重新描述需求,直接复用这些模板,先确认项目上下文,再按需修改。同时,我把每次改稿时模型给出的“改写理由”复制到 Overleaf 项目里的一个说明文件里,这样回头看的时候,能知道自己当时为什么做这个修改。
这就是 DSH 和 Overleaf 组合的真正价值:不是简单的“AI 代写”,而是把写作过程组织成一条可以看到输入、输出、原因和结果的流水线。Overleaf 保证了排版和协作的稳定性,DSH 保证了修改逻辑的连续性和可追溯性。两边的数据通过“一段文本 + 一次编译 + 一个归档对话”串起来,整个流程就不再是黑盒。
如果你现在也想试,我的建议是从最小链路开始:先在 Overleaf 里准备一个能编译的模板项目,然后在 DSH 里建一个会话,选择一段摘要或一个小节,做一次改写,粘贴回 Overleaf,编译,观察结果。先跑通这一次,再考虑要不要扩展到整篇论文。毕竟,工具是拿来用的,不是让你在安装和配置里消耗掉本应写作的时间。