thesis-creator について
中国の大学生向けに、作業環境の初期化から文献検索、執筆、校閲、図表作成、Word 出力までを段階的に支援する論文執筆スキルです。状態管理、品質ゲート、引用チェックを備え、成果物をユーザーのプロジェクト内の `thesis-workspace/` に保存します。
主な機能
- 01段階に沿った論文執筆フロー管理
- 02複数ソース検索と DOI 検証
- 03作業環境の状態管理と品質ゲート
- 04図表の生成、レンダリング、検証
- 05Markdown 草稿の統合と Word 出力
活用シーン
- 01論文アウトラインから章ごとの執筆へ進む
- 02論文の参考文献プールを構築して検証
- 03論文の図表を作成し PNG にレンダリング
- 04草稿を統合して Word 文書を出力
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ stars-oc/ thesis-creator --skill thesis-creatorインストール後、Claude Code で/thesis-creatorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
.openskills.json.gitignoreLICENSECONTRIBUTING.mdREADME.mdconfig/.thesis-config.yamldocs/ROADMAP.mdCHANGELOG.mdusage_guide.mddocs/plans/2026-06-01-docx-toc-design.md2026-06-01-docx-toc.mdprompts/humanizer_guidelines.mdreducer_guidelines.mddiscussion_guide.mdreference_citation_prompt.mder_textbook_single_entity_dot.mdpost_replace_optimization.mdimage_generation.mdaigc_reducer_prompt.mdidiom_replacement_dict.mdwriter_guidelines.mdreference_format_gbt7714.mdthesis_structure.mdwriting_standards.mdreferences/README.mdreferences/examples/README.mdreferences/guidelines/README.mdreferences/prompt/background_template.mdtemplate.mdREADME.md詳細
论文创作 Agent 系统
面向中国本科生的毕业论文全流程写作辅助系统。
核心原则
重要
工作区隔离原则:AI 始终在用户项目目录下的
thesis-workspace/工作。所有产出文件都在用户工作区内。
触发条件
| 触发语 | 执行动作 |
|---|---|
| 「帮我写论文,主题是…」 | 全流程(Step 0-9) |
| 「帮我降重这段文字:…」 | 仅 Step 5 |
| 「降低这段的 AIGC 率:…」 | 仅 Step 6:必须输出“处理前计划 → 改写文本 → 清单自检”,并按场景化重写、自然承接、轻冗余控制和高密度句拆解处理,不得只给改写结果 |
| 「检测这段文字的 AIGC 率」 | AIGC 检测 |
| 「帮我生成论文大纲」 | Step 0-3 |
| 「初始化工作区」 | Step 0(工作区不存在直接初始化) |
| 「继续」 | 仅在当前步骤的强制交互点、前置校验和质量门禁均已满足后继续流程 |
| 「生成摘要」 | Step 4(仅摘要部分) |
| 「生成图片」「生成图表」 | Step 8 |
| 「导出 Word」「导出文档」 | Step 9 |
| 「一键导出」 | Step 8+9 |
工作流程概览
flowchart LR
A[Step 0: 初始化] --> B[Step 1-2: 准备]
B --> C[Step 3: 大纲]
C --> D[Step 3→4: 文献搜索与建池]
D --> E[Step 4: 撰写]
E --> F[Step 5-6: 降重]
F --> G[Step 7: 合并检测]
G --> H[Step 8: 图片生成]
H --> I[Step 9: 导出Word]
⚠️ 流程顺序:大纲确认 → 文献搜索与建池 → 正文写作 → 合并 → 图片生成 → 导出 Word 状态文件路径:
thesis-workspace/.thesis-status.json若文件不存在,status_manager.py会自动创建。推荐统一入口:
scripts/core/lifecycle.py(整合日志 + 状态管理)
继续与暂停点规则
重要
「继续」不是跳过按钮。 若当前流程仍存在强制交互点、前置校验或质量门禁未完成,则必须先完成对应动作,再允许进入下一步。
不可跳过的暂停点
- Step 0 初始化后:必须先运行
python scripts/core/lifecycle.py --workspace thesis-workspace/ --check-workspace,并检查thesis-workspace/references/prompt/background.md是否已补全;工作区必须通过脚本初始化并从config/.thesis-config.yaml复制生成thesis-workspace/.thesis-config.yaml,同时生成thesis-workspace/.thesis-status.json、thesis-workspace/logs/、thesis-workspace/scripts/charts/render.py、thesis-workspace/workspace/final/images/sources与thesis-workspace/workspace/references/images.yaml;未完成时只能提示用户编辑,禁止直接推进到 Step 1/3。 - Step 3 大纲确认后:必须先询问用户文献数量(20-30 / 30-50 / 15-20),并展示搜索耗时预估后,进入 Step 3→4 之间的“文献搜索与建池”阶段;该阶段不是独立 Step,但后续在 Step 4/6/7 中如发现文献不足、语种比例失衡或文献失效,必须允许回流补池后再继续写作或检测。
- Step 4 每章写作时:必须先完成 Stage 1 要点规划,待用户确认后才能进入 Stage 2 扩写;如果当前仍停留在 Stage 1,用户回复「继续」只能视为确认本章要点,不能跳过更早的未完成门禁。
- Step 7 合并检测后:若同一
ref_id在终稿中重复出现,必须硬阻断并回退修正,禁止带重复引用进入 AIGC 检测;若 AIGC 检测未通过,必须回退到 Step 5/6 继续改写与审校,禁止进入 Step 8 图片生成或 Step 9 导出。 - Step 8 图片生成前:必须按“抽取图片需求 → 准备源码文件 → 大模型填写
.dot/.mmd/.puml→ 渲染 PNG → 回填[image_N]→ 完整性验证”执行;使用scripts/charts/manifest_builder.py、source_writer.py、render.py、markdown_updater.py、validate.py,最终已渲染 AI 图片不得残留[image_N]。
详细步骤(按需加载)
| 步骤 | 说明 | 详细文档 |
|---|---|---|
| Step 0 | 工作区初始化 | workflows/step_0_init.md |
| Step 3 | 生成论文大纲 | workflows/step_3_outline.md |
| Step 4 | 分章节撰写 | workflows/step_4_writing.md |
| Step 6 | 审校润色 | workflows/step_6_review_polish.md |
| Step 7 | 合并与检测 | workflows/step_7_merge_detect.md |
| Step 8 | 图片生成与渲染(ER图默认读取 background.md,优先输出教科书风格 DOT,信息不足时尽量生成并 warning) | workflows/step_8_image.md |
| Step 9 | 文档导出 | workflows/step_9_export.md |
| 参考文献 | 文献池管理 | workflows/reference_workflow.md |
参考文献(独立存放)
核心改进:文献池独立存放在
workspace/references/verified_references.yaml文献校验状态:verified_doi / verified_metadata_only / broken_doi_metadata_ok / missing_doi_unverified / invalid_reference规则说明:无 DOI 不等于假文献;允许通过元数据验证的真实文献继续进入文献池。
画像要件一覧
- 本文の画像プレースホルダーは、
[image_1]、[image_2]などの形式に統一します - 画像要件一覧は
workspace/references/images.yamlに記録します workspace/references/images.yamlでは構造化フィールドを使用し、少なくともid、title、chapter、section、source、diagram_type、engine、purpose、fact_source、placement、status、description、source_file、output_file、render_statusを含める必要があります。任意のprompt_hintは LLM によるソースコード生成のガイドに使用でき、dot_modeは ER 図の DOT サブモードを単一画像に適用する場合に使用できます- Step 4 では
[image_N]とimage-requirement画像要件ブロックの記録のみを行い、Step 8 でimages.yamlを生成し、ソースファイルを準備し、LLM に.dot/.mmd/.pumlの記入を依頼して PNG をレンダリングし、Markdown の画像参照を更新します - アーキテクチャ図、モジュール図、フローチャート、ER 図などの AI 画像は、必ず manifest に記録してから作成します。ユーザー提供の画像は、一覧に
source=userと補完待ちの状態を明記する必要があります - 図表エンジンは図の種類に応じて明確に割り当て、自由に変更しません。フローチャート/アクティビティ図/ユースケース図/シーケンス図/クラス図 → PlantUML (
.puml);ER 図は.thesis-config.yamlのer_modeling.graph_typeで決定し、デフォルトは Graphviz DOT (.dot) の教科書的な Chen スタイル、erdの場合は MermaiderDiagramを出力します。diagram_type=overall_erは必ず最初に表示し、エンティティ、リレーション、および1:1/1:Nのカーディナリティのみを表示します。リレーションの菱形ノードは、外部キー項目またはエンティティの意味に基づいて「所有する」「含む」などの名前を付け、「関連」と一律に表記してはならず、項目も表示しません。diagram_type=entity_erは.thesis-config.yamlのer_modeling.dot_mode=textbook-single-entity-ringまたはimages.yamlの単一画像用dot_modeで、単一エンティティの項目を周囲に配置する DOT 表示を有効にできます。単一画像の設定が全体設定より優先されます。アーキテクチャ図 → ユーザーが自ら生成/GPT image の後に追加 (source=user);モジュール図 → Mermaid (.mmd);ユーザーのスクリーンショット →user - フローチャートを PlantUML で生成する場合に限り、以下の固定プロンプトテンプレートを付け、テーマを現在の図表タイトルまたは用途の説明に置き換えます:
请生成一个用于毕业论文的PlantUML流程图,主题为“{{图表主题}}”。要求:
- 使用activity diagram
- 所有节点使用中文
- 起止节点使用“开始”“结束”
- 逻辑严谨,体现完整业务流或上下文流转机制
- 包含必要循环(如存在用户持续操作、重试或追问)
- 避免语法歧义(防止被解析为class diagram)
- 图结构简洁,不超过3层嵌套
- 判断分支连线必须明确标注 Y/N
- 全图只保留一个最终结束节点,所有分支和普通路径最终汇入该结束节点
- 适合论文插图展示
只输出PlantUML代码。
- Mermaid フローチャートをデフォルトでは使用しません。一般的なフローチャートも PlantUML を優先します。
- テスト図を生成する場合、または「フローチャートを生成」などの指示に単独で応答する場合、デフォルトではソースを
thesis-workspace/workspace/final/images/sources/内の対応する.puml/.dot/.mmdファイルに書き込み、コンソールに図表のソースコード全体を直接出力しません。ユーザーが「コードのみを出力」と明示した場合に限り、ソースコードをテキストで直接返します。
ワークフロー
- Step 3 でアウトラインを確認した後、文献数を尋ねます(デフォルトは 20~30 件)
- 複数のソースを検索:Semantic Scholar + CrossRef + OpenAlex
- DOI を検証:4xx エラーステータスコードを判定します
- 統合・重複排除:複数のソースの結果を統合し、関連度に基づいて最も関連性の高い x 件を選びます(
scripts/references/reference_merger.py) - 執筆時は文献プールから未使用の引用を選びます
- 文献検索とプール構築の段階では、再利用のために前の段階へ戻れます:Step 4/6/7 のいずれかで、現在の章に利用可能な未使用文献が不足している、文献の検証に失敗した、言語比率が基準を満たさない、または引用密度が不足している場合は、その段階に戻って検索を補い、
workspace/references/verified_references.yamlを増分更新する必要があります - 各文献は文書全体で 1 回のみ引用できます:ある
ref_idが本文で一度使用されたら、必ず使用済みとしてマークし、以降の章で再使用してはなりません。Step 7 で重複したref_idが見つかった場合は、必ず処理をブロックします - 中国語文献の品質が不十分な場合は、手動での補完を促します:自動取得ソースで中国語文献の割合 >65% を満たせない場合は、CNKI、万方、大学図書館などの外部の信頼できるソースから、実在する中国語文献を手動で補うようユーザーに促す必要があります。捏造は禁止です
- 文献 YAML の出力は安全に解析できる必要があります:タイトルに英語のコロン、中国語のコロン、括弧などの特殊文字が含まれていても、
yaml.safe_load()で読み込めなければなりません
詳しくは workflows/reference_workflow.md を参照してください
ユーザーワークスペースのディレクトリ構造
thesis-workspace/
├── README.md # 工作区使用说明
├── .thesis-config.yaml # 配置文件
├── references/ # 参考资料(用户放入)
│ ├── templates/ # 学校模板
│ ├── examples/ # 范文
│ ├── guidelines/ # 规范
│ └── prompt/background.md # 论文背景(必填)
├── workspace/ # 论文产出
│ ├── outline.md # 大纲
│ ├── references/ # 参考文献池(独立)⭐
│ │ ├── verified_references.yaml # 已验证文献池
│ ├── cited_references.json # 引用记录(每章引用的ref_id)⭐
│ ├── drafts/ # 初稿(仅含临时引用编号,无参考文献列表)⭐
│ │ ├── 参考文献.md # 合并阶段生成的参考文献(独立MD文件,GB/T 7714格式)⭐
│ ├── final/ # 终稿
│ │ ├── 论文终稿.md # 终稿(引用编号已重排)
│ │ ├── 论文终稿.docx
│ │ └── images/ # 图片
│ └── reports/ # 报告
├── logs/ # 日志
└── .thesis-status.json # 状态
⭐ は今回の更新で追加または変更されたファイルを示します
Markdown 見出し出力の厳格な制約(Markdown→Word マッピング)
重要
生成する Markdown は Pandoc/python-docx/markdown-it/Typora/VSCode Markdown で正しく認識され、Word の Heading 1~4 にマッピングされる必要があります。また、自動目次、ナビゲーションウィンドウ、見出しの折りたたみ、アウトライン表示をサポートする必要があります。
見出しの生成規則
| Markdown 構文 | Word のマッピング | 説明 |
|---|---|---|
# 标题名称 | Heading 1 | 章レベルの見出し(要旨、第N章、結論など) |
## 标题名称 | Heading 2 | 節レベルの見出し(1.1、4.2 など) |
### 标题名称 | Heading 3 | 小節レベルの見出し(1.2.1、4.4.1 など) |
#### 标题名称 | Heading 4 | 段落レベルの見出し(5.2.1 など) |
形式上の厳格な制約:見出し記号 # の後には必ずスペースを 1 つ入れます。正しい例:## 研究背景;誤った例:##研究背景。
禁止事項(見出しの模倣禁止)
以下の方法は形式エラーとみなされ、見出し階層の模倣に使用してはなりません:
| 禁止される方法 | 説明 |
|---|---|
| 太字テキスト | **第一章 绪论** は見出しではありません |
| 番号+通常の段落 | 1.1 研究背景 は ## がないため見出しではありません |
| リスト項目 | - 第一章 绪论 は見出しではありません |
| 表の見出し | 表内のテキストは見出しではありません |
| 単にフォントサイズを大きくする | HTML <font size> は見出しではありません |
| 中国語の記号で階層を模倣する | ===系统设计=== は見出しではありません |
| HTML タグ | <h1> などは見出しではありません |
階層の制約
見出しは厳密な階層構造に従う必要があり、階層を飛ばしてはなりません:
正确:# → ## → ### → ####
错误:# → ###(跳过 ##)
論文構成の見出し例
# 摘要
# Abstract
# 第一章 绪论
## 1.1 研究背景
## 1.2 国内外研究现状
# 第二章 系统分析
# 第三章 系统设计
# 第四章 系统实现
# 第五章 测试与分析
# 结论
# 参考文献
出力の制約
- 出力は純粋な Markdown 本文でなければなりません
- 本文を
markdownコードブロックで囲んではなりません - 説明文(「以下は論文の内容です」など)を出力しないでください
- 前置きの文言を出力しないでください
互換性の要件
生成結果は Markdown → docx 変換プロセスと互換性があり、pypandoc.convert_file() または python-docx で変換した後に Word の目次を自動生成できる必要があります。
最終目標
エクスポートされた docx 文書は、以下の要件を満たす必要があります:
- Word の「参考資料 → 目次」から目次を自動生成できる
- Word の「ナビゲーションウィンドウ」に章の階層が表示される
- 見出しを折りたためる
- 見出しにアウトラインレベルが設定されている
- Heading 1~4 が自動認識される
防错机制
| 问题 | 影响 | 处理 |
|---|---|---|
| 缺少规定动作章节 | 致命 | 自动补充 |
| 设计实现未分离 | 致命 | 强制拆分 |
| 章节顺序错误 | 致命 | 强制调整为:系统分析→系统设计→系统实现→系统测试→总结与展望 |
| 使用 LLM 上下文合并文档 | 致命 | 必须使用 merge_drafts.py 脚本 |
| 图表不足 | 严重 | 提示补充 |
| 数据库表数量不足 | 严重 | 检查 background.md 表定义,确保 ≥11 张表 |
| 未执行状态管理脚本 | 致命 | 每个 Step 必须通过 lifecycle.py 或 status_manager.py 记录状态,禁止大模型自行维护状态 |
| 日志未通过脚本记录 | 严重 | 所有流程日志必须通过 logger.py 输出,禁止大模型自行生成日志内容 |
| 文献链接 404 | 严重 | 合并前执行 reference_validator.py --check-404,404文献必须替换 |
| 图片文件缺失 | 严重 | Step 8 完成后检查 images/ 目录,所有占位符必须有对应 PNG 文件 |
| 参考文献虚构 | 严重 | DOI验证+重生成 |
| 参考文献数量超标 | 严重 | 按相关度截取 |
| 参考文献缺少中英文 | 严重 | 中文和英文文献都必须包含,缺少则触发补充搜索 |
| 参考文献 YAML 解析失败 | 严重 | reference_merger.py 必须使用安全 YAML 输出,特殊字符标题保存后仍可 yaml.safe_load() |
| 中文文献比例不足 | 严重 | 自动源不足时提示从 CNKI、万方、学校图书馆人工补充真实中文文献,禁止伪造 |
| 引用复用同一 ref_id | 严重 | 同一篇文献整篇仅允许引用一次,发现重复占用必须硬阻断并回流补池改写引用 |
| AI模板词超标 | 中等 | 按 Step 6 的 AIGC 标准流程处理:先做处理前计划,再按”场景化重写 → 结构重组 → 细节注入 → 自然承接与轻冗余 → 高密度句拆句解释 → 语言去模板化”改写,最后输出清单自检;禁止只做同义替换、删词式压缩或只给改写结果 |
| 标题未使用 Markdown # 语法 | 致命 | 所有标题必须用 # / ## / ### / ####,禁止加粗文本/序号段落/中文符号模拟标题 |
| 标题层级跳跃 | 严重 | 禁止跨级(如 #→###),必须逐级(#→##→###→####) |
| 标题符号后无空格 | 严重 | #标题 必须修正为 # 标题,符号后必须保留一个空格 |
| AIGC 降低缺少自检清单 | 严重 | 必须补齐处理前计划、改写文本、自检表;自检项出现“未通过”时继续局部修正,不得交付为最终版 |
| 章节内自建参考文献列表 | 中等 | 删除,合并阶段统一生成 |
| background.md 为空或未完善 | 致命 | 提示用户编辑 thesis-workspace/references/prompt/background.md,禁止控制台交互式输入 |
| ER 图事实源不一致 | 严重 | Step 8 的 ER 图默认读取 background.md,仅 ER 图受 thesis-workspace/.thesis-config.yaml 的 er_modeling 配置影响;默认输出教科书 Chen 风格 DOT(实体矩形、属性椭圆、联系菱形),总体 ER 图必须第一个展示,且只展示实体、联系与 1:1 / 1:N 基数;关系菱形节点必须结合外键字段或实体语义命名,如“拥有”“包含”,不得统一写成“关联”;DOT 输出不要显式使用 label= |
Prompt 文件(写作时加载)
| 文件 | 说明 | 加载时机 |
|---|---|---|
prompts/writer_guidelines.md | 写作规范 | Step 4 |
prompts/aigc_reducer_prompt.md | AIGC 表达质量优化与深度人工化流程,按场景化重写、自然承接、轻冗余控制和高密度句拆句解释执行 | Step 6 |
prompts/humanizer_guidelines.md | 人工化改写细则与风险边界,约束自然过渡、轻冗余和拆句解释不得破坏学术语体 | Step 6 |
prompts/reference_citation_prompt.md | 引用铁律 | Step 4 |
workspace/references/verified_references.yaml | 文献池 | 必须加载 |
Script 文件
| 文件 | 说明 |
|---|---|
scripts/references/reference_engine.py | 多源搜索 + DOI验证 |
scripts/references/reference_merger.py | 文献合并去重 + 选出最相关 x 篇 |
scripts/document_exporter/ | Word导出 + 图片插入 |
scripts/content/merge_drafts.py | 章节合并 |
scripts/aigc/detect.py | AIGC检测 |
scripts/aigc/technical_detect.py | 技术论文 AIGC 检测 |
scripts/charts/manifest_builder.py | 从正文 [image_N] 与 image-requirement 生成或更新 images.yaml |
scripts/charts/source_writer.py | 根据 images.yaml 准备并校验 .mmd/.dot/.puml 源码文件 |
scripts/charts/render.py | 按 Mermaid、Graphviz、PlantUML 渲染 PNG |
scripts/charts/markdown_updater.py | 将已渲染图片回填为 Markdown 图片引用 |
scripts/charts/validate.py | 校验源码、PNG、占位符和用户待补截图状态 |
致谢
致谢生成位于 Step 4(与摘要同阶段),输出文件为 workspace/drafts/致谢.md,由 merge_drafts.py 在合并阶段自动纳入终稿。
注意:致谢不计入七章正文结构,但属于论文交付的必备内容之一。