作者: Alan

  • Anti-AIGC Rewriter 架构重构:内容优先模式

    当前系统采用「原位回填」方案:读入 docx → 逐段分类 → 调 LLM 重写 → 把新文本塞回原段 run。这种做法的核心矛盾是既要保全格式又要降 AIGC 率,两件事冲突严重——run 级格式保留约束了改写的自由度,而且 replace_paragraph_text_preserve_runs 在跨 run 长度变化时经常出毛病。

    背景与目标

    用户新需求明确:放弃细粒度格式保留,转向「内容优先」模式,只保留结构骨架(标题层级 + 参考文献/致谢/声明),正文做强重写,导出全新 docx。

    核心设计原则

    项目旧方案新方案(内容优先)
    格式策略保留 run 级字体/样式只保留标题层级 + 结尾区块
    图题/表题/表注强保不再强保,可酌情重写
    段内字体死保每个 run不保留,整段纯文本
    输出方式原位修改原 docx导出全新 docx
    System Prompt通用型大幅强化 6 条降 AIGC 规则

    架构总览

    ┌──────────────┐     ┌──────────────┐     ┌──────────────┐     ┌──────────────┐│  file_parser │────▶│ doc_analyzer │────▶│ llm_rewriter │────▶│ doc_builder  ││ (解析原文件) │     │ (结构识别)   │     │ (强重写引擎)  │     │ (构建新docx) │└──────────────┘     └──────────────┘     └──────────────┘     └──────────────┘

    四大模块职责

    1. file_parser.py — 文件解析层(保留+微调)

    • 已有 txt/docx/pdf 解析
    • 新增parse_docx_structured() 函数,返回结构化段落列表而非纯文本拼接
    • 每个段落对象包含:text, style_nameheading_level(1/2/3/None), is_list_item

    2. doc_analyzer.py — 结构识别器(新建)

    • 从 llm_service.py 中剥离段落分类逻辑(classify_paragraph_type, is_heading_like_text, is_trigger_match 等)
    • 负责将段落列表标记为以下类型之一:
      • heading — 一级/二级/三级标题(保留不改)
      • reference / acknowledgment / declaration — 结尾区块(保留不改)
      • body — 正文(强重写目标)
      • caption — 图题/表题(按新策略可酌情轻改或跳过)
    • 输出一个 AnalyzedDocument 对象:有序段落列表 + 各段类型标签

    3. llm_rewriter.py — 强重写引擎(从 llm_service.py 重构)

    • 全新 System Prompt 融入用户的 6 条核心规则:
      1. 极高文本波动率:长短句交错,绝不排比
      2. 提升困惑度:禁用「首先、其次」,替换为「不可否认的是、结合实际情况来看」
      3. 注入生涩感:学术术语准确,模拟本科生毕设口吻
      4. 核心语义不变:保留数据+论点
      5. 精准锚定参考文献标号 [1] [2]
      6. 绝对禁止废话(零对话模式)
    • 附加改写策略(融入 prompt):
      • 打破句式对称
      • 剔除过渡冗余(「众所周知」「值得注意的是」等)
      • 动作实体化(减少主谓宾,多用被动/无主语句)
      • 提升专业词汇密度
    • 保留:分块 smart_chunking、段内拆分 split_paragraph_into_rewrite_units
    • 保留:重试/相似度检测/回退机制(needs_retry, is_too_similar, should_fallback_to_source)
    • 删除:replace_paragraph_text_preserve_runs(不再需要 run 级回填)

    4. doc_builder.py — 新文档构建器(新建)

    • 接收 AnalyzedDocument + 重写结果
    • 创建全新 python-docx.Document()
    • 标题段:根据 heading_level 用 doc.add_heading(text, level=n) 添加
    • 正文段doc.add_paragraph(rewritten_text) 添加重写后的纯文本
    • 保留区块(参考文献、致谢等):原样添加
    • 可选:设置一个统一的学术论文样式模板(宋体正文 + 黑体标题等)

    文件变更清单

    [NEW] doc_analyzer.py

    • 从 llm_service.py 提取的结构识别逻辑
    • 定义 StructuredParagraph 和 AnalyzedDocument 数据类
    • analyze_document(paragraphs) → AnalyzedDocument

    [NEW] doc_builder.py

    • build_document(analyzed_doc, rewrite_results, output_path) → 生成新 docx

    [NEW] llm_rewriter.py

    • 全新 System Prompt + 重写策略
    • rewrite_body_paragraphs(analyzed_doc, client, model, reference_list) → AsyncGenerator 流式重写

    [MODIFY] llm_service.py

    • 大幅瘦身:移除段落分类逻辑(→ doc_analyzer.py)、移除 run 替换逻辑
    • process_paper_stream() 重构为编排层,调用上述三个模块
    • 保留 API key 工具函数 + generate_paper_stream()

    [MODIFY] file_parser.py

    • 新增 parse_docx_structured() 返回结构化段落对象列表

    [MODIFY] main.py

    • API 不变,内部调用链路更新

    用户审阅事项

    IMPORTANT

    导出新 docx 意味着原文件的所有图片、嵌入式表格、SmartArt 等非文本元素将不会携带到新文档中。 如果你的论文含有重要的图片/表格,需要在重写完成后手动从原文件复制过来。后续迭代可以考虑自动搬运图片,但本次重构先聚焦文本重写核心。

    NOTE

    图题和表题(如「图 1 系统架构图」)在新方案中默认跳过不重写、原样保留到新文档。如果你希望对它们也做轻改,可以告诉我。


    数据流详解

    是否用户上传 docx/txt/pdffile_parser: 解析docx?parse_docx_structured提取段落 + style + heading_levelparse_txt / parse_pdf提取纯文本doc_analyzer: 分类标注AnalyzedDocument每段带类型标签llm_rewriter: 逐段强重写仅处理 body 类型段落流式输出到前端doc_builder: 构建新 docx保存到 outputs/用户下载

    System Prompt 设计(核心)

    text你是核心学术期刊的特约文字校对专家,执行"学术语域重构与信息密度提升"任务。【绝对规则】1. 极高文本波动率:交替使用极短句(5-10字)和长复句(50字以上),   绝不使用排比结构,刻意打破句式对称。适当增加长句的从句嵌套深度,   模拟人类学者的复杂思考路径。2. 提升困惑度:禁用"首先、其次、再次、最后、一方面/另一方面"等连接词,   替换为"不可否认的是、结合实际情况来看、从另一维度审视、就学理而言"等   低频学术表达。逻辑连贯性应通过上下文语义自然衔接。3. 注入生涩感:术语必须准确,但行文应模仿真实本科生毕设的主观推导口吻,   带有轻微的"正在探索"感。将口语化表达转为规范学术概念   (例:把它分成几块 → 进行模块化解耦;效果更好 → 显著优化了某某指标)。4. 核心语义不变:保留所有关键数据、论点、实验结果。不得新增观点。5. 精准锚定参考文献:原文标号([1],[2]等)必须精准转移到重写后   对应论点的末尾,不得遗漏、不得错位。6. 零废话输出模式:直接输出重写后的正文。绝不允许包含任何解释性、   确认性或过渡性文字。【附加策略】- 剔除过渡冗余:删除"众所周知""在此大环境下""值得注意的是"等无意义连词。- 动作实体化:减少"我们设计了…"主谓宾结构,多用无主语句或被动语态  (例:我们使用了Jieba分词 → 研究引入Jieba分词引擎)。- 提升专业词汇密度:确保每段至少有2-3个精确的专业术语或方法名。【边界意识】标题、目录、文献引用项、致谢、声明类文本,不改写,原样返回。

    验证计划

    自动化测试

    1. 现有测试python -m pytest tests/test_llm_service.py -v(验证 split_paragraph_into_rewrite_units 回归)
    2. 新增单测
      • tests/test_doc_analyzer.py — 测试段落分类准确性(标题/正文/参考文献/图题)
      • tests/test_doc_builder.py — 测试从 AnalyzedDocument 构建 docx 的结构正确性

    手动验证

    1. 启动服务 bash start.sh
    2. 在浏览器中上传一个包含标题、正文、参考文献的 .docx 测试文件
    3. 点击重写,观察:
      • 流式输出是否正常
      • 标题是否被跳过(不被重写)
      • 参考文献区块是否被保留
      • 下载的新 docx 是否包含正确的标题层级
    4. 打开下载的 docx 检查格式结构
  • 从《王志安》困局——反思现今互联网

    为众人抱薪者,不可使其冻毙于风雪。首先从中,我们能看到王局是个人 ,活生生的人 。能看到中年大叔的说教,也有大叔作为记者的直言不讳。他也有作为男人的 事,比如换老婆等等,私生活不应 掺合其他事件分析 ,就事论事。上面youtube视频 解析了为何王局 被针对,从中可以反思出:

    做自媒体,无论在哪里,都要有风险意识,出了问题要 有公关,如果不公关,沉默虽然 可以不进入 对方的节奏,可以会处于一种默认的局面 。舆论预判,什么能说 ,在什么时候说,不能因为你是调查记者,就啥都说,这句话也是写给自己的,自勉。“在陌生的战场上,侦查永远在进攻之前”。

  • 受保護的內容: 正视欲望——压抑又渴望

    This content is password protected. To view it please enter your password below:

  • 每晚(经常)写reflection

    之前在学校,每天醒来总是拖着疲倦的身体,昏昏沉沉的,即使这几天也没产出什么。总是一种感觉自己很疲惫,总是没按照自己想要的方式度过。总是过度焦虑没有意义,或者说不重要的事。当白天的情绪,没有消解(整理清楚),把困扰和困惑带入到了睡梦中,半夜就会醒来,或者说没有把情绪消化好,带入到了潜意识。写reflection,是重启人生(洗澡也是)。

    • 我今天是什么样的心情
    • 我为什么会感觉到这样的心情(追问自己,把说不清的感性,变成一种理性)

    很多时候,我们发生生命的痕迹,不只是通过照片,因为照片是相对表面的,相对感性,看到的是一个感性的自己。写故事,是抽象的自己。看像是写一个自己或者他人故事,实际是写抽象的自己,自己愤怒,欲望,爱而不得。投入到故事当中,你再看这个故事,有个新的理解。

    思辨(考)的前提是勇气。有勇气问出那个别人不敢问的问题。每当我想要做一个事,无论是创业做学术还是什么,冥冥中有个声音你再告诉自己,你读了很多书了吗?思考要有合法性,你没有读很多书,那你没有资格思考这个东西,你没有达到这个学历思考这个东西等等,给自己加上了自己审判(大陆长大的孩子)。先去写,知道自己的进步是有过程的。

    当你意识到这个问题,就是问题的开始。

    真实的分辨:

    • 我的情绪是什么
    • 我的欲望是什么
    • 我的思考是什么
    • 什么是别人想让我做的
    • 什么是别人想让我感觉到的

    将内在权威和真实感受分离。

    发表书/观点的时候,就接受自己被卖,毕竟在这种二元对立的舆论环境。

  • tools——自动分析视频内容

    灵感来自百度网盘的ai看功能。大概率以后ai看功能都是付费的,youtube的视频直接一个链接给gemini,他会自动给你分析,b站的就不行。在ai时代,很多自媒体博主写的就是屎,没必要都看完,知道他大概就行,如果觉得有营养,再细看,珍惜时间就是珍惜生命。笔者,手搓一个ios应用(巨魔安装),后端放在Google cloud,详细开源在github:https://github.com/ityongsheng/VideoAnalysis

  • 把话说完

    不怕修改,就怕挤牙膏,一次性不把话说完。因为每次修改,无论AI还是人工,需要需要回忆之前做了啥,(AI会加载上下文,也就是token,也就是更多成本)。而且,🧑‍💻我的电脑硬盘已经很大了,跑着这么多程序,一两个月会清理缓存或者数据,毕竟大家都有自己隐私,我长时间保存也不好(嫌占内存)。发完后,先缓存,先备份,需要修改的时候,等问清楚,一次性做好,而且这样质量还高。重复性多次修改,也容易做出屎山。

  • 现在解决不了问题,不是你的问题

    笔者,现在很幸福。一直都很幸福。从成年以后的每一天都很幸福,是那种真切的可以感受到的幸福。高中暗恋一个女生,发现怎么样都吸引不到它的注意力,她回我个消息,血脉喷张的我能扛着自行车跑二里路缓解一下。可惜,我没这个机会。上大学后,我知道我大概率不喜欢小奶狗,也确实。有个高配置,长的更漂亮,情商更高,更可爱的她放在我面前,不只是替代品,也难以动情。某些时候隐隐约约那时候就知道,我只是欣赏,或者王二就是想玩玩,在青春校园,就想谈清纯的;在社会,想谈前凸后翘,身材曼妙的。

    写在最后,有些时候,不是你的问题,你在做别的时候,比如:健身,写作,阅读,音乐等的时候,问题就迎刃而解,事缓则圆。还有个事,大二喜欢的学姐,被🐷拱了,那人长的丑死了,那时候明白一个道理,女生有时候也不知道自己喜欢的到底是啥样,那种丑货竟然能行(因为一块在学生会共事过?)?得套多少个滤镜才吃的下去,真是饿了,吃的得有多差啊。

    还还还有个事,以后再写hhh

  • 专心三件事:自媒体(写作),A I,英语

    若让我重返二十岁,重新积累财富,我将专注于三个关键领域:自媒体、人工智能和英语。这些领域为普通人提供了快速掌握、有效应用并实现变现的最佳途径。我不会深入学习Python编程语言,也不会考取市场认可度较低的证书。

    自媒体的本质并非仅仅是运营账号,而是占据广告资源。许多人误认为自媒体等同于网红、露脸和博眼球,然而,自媒体更像是一种数字身份标识。过去常说“闷声发财”,但如今,沉默等同于主动消失。缺乏自媒体的存在,在他人眼中,您仅是一份简历,随时可被替代,价格透明,且难以进行谈判。

    然而,如果您能够持续在公共领域输出信息——无论是您经历过的挑战、尝试过的方法,还是记录的失败——您便是在“公开透明”。您无需成为专家,只需是正在解决问题的人。我观察到许多案例,账号粉丝数量并不多,但每月都能稳定获得咨询、项目和合作机会。这并非因为他们能力出众,而是因为客户选择他们,比选择陌生人更安心。简而言之,在这个时代,被看见才能拥有议价权。

    人工智能并非简单的工具,而是您可以负担得起的“高级员工”。真正懂得如何运用人工智能的人,从不与之比较效率。他们只做一件事:让人工智能为自己工作。以前撰写一篇内容,需要查阅资料、构建框架、修改逻辑,耗费一整天时间。而现在,只需将问题交给人工智能,即可在十分钟内获得初稿,您只需负责判断、取舍和调整方向。这意味着什么?这意味着您可以将那些枯燥、重复且消耗脑力的工作,全部外包。我观察到最典型的应用方式包括:将海外内容进行翻译和本地化,制作成付费资料;利用人工智能整理课程和访谈,销售知识合集;使用人工智能撰写初稿,自己仅负责进行最后的修改。人工智能的作用并非将您的能力从85分提升至95分,而是将一个60分的人提升至80分以上。这足以让您在市场上立足。

    英语并非简单的语言,而是信息差的体现。中文互联网竞争激烈,无需赘述。一个热点出现,数万人同时创作内容。然而,许多真正有价值的信息,最初并不出现在中文世界。英文世界会率先进行讨论,半年后才被引入中文世界,这段时间便是窗口期。掌握英语的人,相当于拥有了一台“时间机器”。我观察到许多实际操作案例:将海外教程转化为国内付费专栏;将国外趋势报告进行本地化咨询;从英文社区获取信息,创作中文爆款内容。您无需具备流利的口语能力,只需具备阅读、写作能力和借助翻译工具的能力即可。这微小的信息差,在赚钱方面,就是巨大的优势。

    这三项技能——自媒体、人工智能和英语——必须协同运作,才能发挥最大效力。自媒体帮助您建立信任和获取流量;人工智能帮助您提升效率;英语帮助您跳出内卷。它们并非并列关系,而是一个闭环。一个最简单且最稳健的路径是:在英文世界寻找信息;利用人工智能进行整理和加工;通过自媒体对外输出信息;吸引精准人群。

    变现策略

    一旦启动飞轮效应,您将发现自身工作效率将显著提升。

    许多人因未能遵循正确的顺序而未能取得预期成果。例如,有些人会花费半年时间学习英语,三个月时间研究人工智能,最终却一事无成。问题并非出在能力上,而在于顺序。正确的顺序只有一条:先行动,后提升。

    第一步,创建自媒体内容,并坚持发布,即使内容质量尚可。第二步,在遇到瓶颈时,再使用人工智能工具,此时您才能更清晰地了解其所能提供的帮助。第三步,当您开始遇到发展瓶颈,并希望拓展业务规模时,再进行英语学习。

    切勿过度思考,应先行动,后优化。

  • 量化痛苦,解决具体问题

    如何用AI快速赚到一笔钱,痛苦越具体,赚钱越容易
    真正能赚钱的人,都懂得量化痛苦而痛苦一旦被量化,就能被击穿。
    赚钱没那么难,先找一个东西卖起来。

    月薪5000的人说自己穷,这不是痛苦,是废话
    你真正的难题是每个月固定支出8000,有3000的缺口填不上,是想换手机但是账户里余额不到2000,是生病了都不敢请假,因为根本没什么储蓄, 这些才是能转化成交易的痛点。
    大部分人都卡在第一步, 他们把模糊的感觉当作问题本身,可是市场不会为你的感觉付钱,市场只会为解决具体缺口的方案付钱。

    要把抱怨转换成数据,你得做三件事
    第一件,去评论区
    打开随便哪个内容平台, 输入你熟悉领域的关键词,像35岁焦虑、带娃太累,下班没精力之类的都行,别去看那些爆款内容,直接看评论,把那些超过50字的评论复制下来,至少要收集200条。
    为什么得要200条
    因为要是不够这个数量, 那就没法提取出高频共性,而要是超过这个数量,处理成本就会太高,性价比也会跟着降低。

    第二件事情,是让AI帮你做数据穿透,把收集的评论交给AI, 然后问问它三个问题,
    这三个问题分别是这些人反复说的具体场景是什么,
    他们试过哪些办法却失败了,
    他们愿意给解决方案出多少钱心里有个底,
    这一步关键不是让AI写文案,而是让它从乱糟糟的信息里找出付费意愿最强的那20个痛点,
    AI的价值是干大量重复的活,但不是替你想事情。

    第三件事情,是生成能交易的最小方案
    拿到AI分析结果之后,不要急着去做那种全面的产品, 找出里面紧急程度最高、
    重复频率最大的1个痛点,设计一个专门解决这1个问题的方案,它可以是一份文档、一个操作清单、
    一次时长是30分钟的咨询。
    测试市场反应的办法很简单,回到你收集评论的地方,
    找到那些高赞评论,用你的方案去回复他们, 然后看看有多少人会主动私信你问详细内容。

    要是在10个人当中有3个愿意接着沟通,那这个方向就说明还可以,
    要是10个人里就只有1个只是应付式地回复一下,那就立刻换向下一个痛点去测试, 别浪费时间。

    整个流程的测试成本不会超过72小时,要是成功走通了,
    你手上就会有一个能重复售卖的小型解决方案, 有很多人会问,这么做能赚多少钱。

    这个问题本身就不对,你应该这样问,用同样的方式,我能够同时运行几条线,
    一个痛点对应一个方案,
    一个方案会带来一点小收入,要是5条线同时运行,每条线每个月能赚1000,那么总收入就是5000。

    关键不在于单笔交易的金额多少,而在于你是否可以把采集、分析、测试、交付这一系列操作做成标准的流程, 之后把它复制到不同的细分场景之中。

    AI的作用就是将你从重复的工作中解放出来,让你有精力去运行更多的线, 并不要想着躺着什么都不做,
    不要期望一下子就暴富,先让一个小方案运作起来,看到真金白银进账了, 你才知道下一步该怎么做。

  • Alan

    WeChat:harry9061031