| name | course-paper-skill |
| description | 状态化结课论文写作系统。以任务画像为唯一状态源,中央 Agent 协调架构、文献、证据、正文、风格和审计六个子 Agent,完成从课程要求解析到最终定稿的完整论文生产流程。支持文献综述、案例分析、实证调查、理论阐释、比较分析和实践方案六种论文范式,内置占位符机制控制材料空位幻觉,通过局部回滚实现用户审阅闭环。输出可以是论文方案、详细提纲、初稿、修订稿或定稿。 |
| compatibility | opencode |
结课论文技能
概述
从课程要求、已有材料、文献来源和用户偏好出发,以任务画像为唯一状态源,组织子 Agent 完成局部工作,最终汇总为可审阅的论文方案或正文。整体遵循"材料边界先于表达生成"的生产原则:每次生成章节、段落或参考文献时,都能回到任务画像中的某个来源项、论证节点或用户约束。
论文类型按课程要求、题目动词、材料形态和用户意图自动路由为六种范式之一:文献综述、案例分析、实证调查、理论阐释、比较分析或实践方案。不同范式对应不同的章节组织方式和证据聚焦方向。
核心原则
结课论文是面向课程考核的学术文本,不是已知知识的目录,也不是材料的简单罗列。教师阅读时追随论文的论证推进——每节承担什么推理任务、材料如何支撑声称、文献之间如何建立学术对话。如果一篇论文可以由没有读过课程材料和文献的人写出来,那它就失败了。
因此,总体写法是具有学术专业性的论述文体。对作者视角使用主动的、论证导向的动词(分析、比较、论证、回应),对文献和理论保留定义性动词。材料证据和文献引用服务于论证链条,而非作为权威背书堆砌。
最简单的检验:问自己每一句话是从论证者的角度写的(我们选择这一理论框架是因为……、该文献与另一文献在某某问题上形成分歧……),还是从知识罗列者的角度写的(某理论由……组成、某学者认为……)。后者只在必要时保留,优先让文献服务于论证推进。
工作流
0. 起草前读取课程要求
- 起草前,查找用户是否提供了课程名称、教师要求、评分标准、参考文献列表、题目要求或类似的约束文件。
- 如果存在此类文件,将其转化为具体任务画像中的
course 和 user_intent 字段。
- 将课程要求中的关键项(如字数、引用格式、提交格式、选题范围、禁用方向)与实际材料进行比对。
- 如果材料表明论文要求无法满足(如缺少核心文献、题目超出范围),停止并告知用户。列出缺失或未满足的项,而非生成一份将论文呈现为已完成的稿子。
- 如果用户未提供完整课程要求,按以下默认工作流继续,并在审阅包中标注"未确认"项。
- 编译环境确认:在生成任何 .tex 文件前,必须向用户确认编译环境。
- 提问用户使用本机 LaTeX(需确认发行版和引擎,例如 TeX Live + xelatex)、WSL 中的 LaTeX、还是 Overleaf 在线编译。
- 若为本机/WSL,检测系统可用的中文字体(
fc-list :lang=zh),确认 ctex 字体集能否正常调用。
- 若为 Overleaf,切换字体策略:优先使用
fontset=fandol(Overleaf 内置);必要时降级为 fontset=none + 显式指定。
- 检查输出目录写入权限(Windows 用户特别注意 NTFS 文件锁导致
xdvipdfmx 写 PDF 失败的问题——备选方案为 -output-directory=/tmp 写临时目录后回传)。
- 确认用户是否已有课程/学院提供的封面模板(如 .docx 或已有 .tex 模板),若有则优先复用。
详细规则见 references/rubric-intake.md。
1. 建立任务画像
- 中央 Agent 维护一个持续更新的任务画像(task_profile),采用可序列化结构。
- 任务画像包含课程信息、用户意图、论文范式、论证结构、材料来源、证据矩阵和审阅记录。
- 每轮迭代保存、比较和回滚都以任务画像为单位。
- 子 Agent 只能围绕任务画像中的字段展开工作,所有检索结果、章节树、证据矩阵和风格审查都回写到该结构。
- 中央 Agent 在每次输出前读取当前画像,确认本轮文本承接了最新用户意见,也确认旧版本中已经被替换的论点已从正文中清理。
任务画像的完整结构定义见 SKILL.md 末尾的「附录:任务画像 Schema」。
2. 架构 Agent:论文范式路由
- 架构 Agent 的第一职责是识别论文范式。标题的动词、课程名称、教师要求、材料形态和用户观点共同决定论文类型。
- 嗅探后生成四个固定输出:选定范式、选择理由、具象化章节树、路由风险。
- 章节树包含一级章节和二级章节,每个章节标注功能说明。
- 置信度较低时输出双路由草案。中央 Agent 通过材料覆盖率和用户意图选择其一,另一路由保存在 fallback 字段。
- 材料覆盖率按章节节点计算:某章节拥有课程依据、外部文献和案例材料中的至少两类支撑时视为覆盖充分;只有单一来源时进入待补强状态;完全依赖模型常识时进入占位符机制。
六种基准路由与详细规则见 references/argument-architecture.md。
3. 文献 Agent:文献织入
- 文献 Agent 的目标是关系提取。每张文献卡片保留题名、作者、年份、来源、研究对象、核心观点、方法、可引用位置和风险说明。
- 多篇文献进入同一个论证节点时,文献 Agent 继续产出关系说明:互相印证、递进展开、对象互补、方法互补、观点分歧、概念修正或反例约束。
- 文献进入正文前完成转述或整合,并标明该文献承担背景、概念、证据、方法、争议或边界中的哪一种功能。
文献卡片结构和关系提取规则见 references/literature-recovery.md。
4. 证据 Agent:声称绑定与合成
- 证据 Agent 同时产出声称矩阵(单条材料与声称的绑定)和合成矩阵(材料之间的关系与综合计划)。
- 每个声称都有来源、解释路径、材料间关系和覆盖状态。
- 覆盖状态为 weak 或 placeholder 时,证据 Agent 同步生成占位符建议。
- 正文生成采用"先关系、再文献、再解释"的顺序:互相印证的材料写成同一研究判断,递进关系写成问题深化过程,分歧关系写成争议结构,反例关系写成边界条件。
证据 Agent 的矩阵结构与操作规则见 references/evidence-synthesis.md。
5. 生成用户审阅包
- 成文前产出审阅包,包括:任务画像摘要、选定范式、章节树、核心论点、文献关系矩阵、材料空位清单、风险说明和待确认项。
- 审阅包也是局部回滚的入口。用户反馈进入
user_feedback_log,标注作用范围和优先级。
- 适用的论文范式和用户意见表明论文范式的判断有误时,重新运行架构 Agent。用户调整选题时,回滚范式分类和章节树。用户补充文献时,只重新运行文献 Agent、证据 Agent 和受影响章节的正文 Agent。
6. 正文 Agent:按段落节点生成
- 正文 Agent 每次只处理一个段落节点。段落节点包含段落目标、承接对象、材料来源和推理动作。
- 正文 Agent 的写作顺序为:承接前文、界定对象、引入材料、展开解释、形成局部判断、过渡到后文。
- 正文 Agent 只生成材料能够支撑的内容。遇到材料空位时写入标准占位符。
- 段落节点来自于架构 Agent 的章节树的进一步细化。
- 理论推导段落先约定符号、对象和条件,再说明变量关系与推理步骤。
- 案例分析段落先说明案例事实,再说明该事实与理论概念之间的映射。
- 文献综述段落先说明研究问题,再整合文献关系,随后给出该组文献对论文主问题的作用。
段落节点结构与生成规则见 references/drafting-placeholders.md。
7. 占位符处理
- 占位符机制承担幻觉控制功能。以下情况写入对应的标准占位符:
- 论点缺乏材料支撑 →
[NEED_EVIDENCE: ...]
- 引用信息待核对 →
[NEED_CITATION: ...]
- 观点方向需要用户确认 →
[NEED_USER_DECISION: ...]
- 声称只有单一材料支撑 →
[WEAK_CLAIM: ...]
- 方法细节缺失 →
[NEED_METHOD_DETAIL: ...]
- 存在附带脚本
extract_placeholders.py 将草稿中所有占位符汇总为材料空位清单。
- 用户可选择补充材料、删去该论点、降级为有限声称或保留为待完善草稿。中央 Agent 根据选择更新任务画像。
- 最终审计阶段读取 placeholder_list:open 占位符阻断交付,downgraded 占位符要求对应段落已收束声称,removed 占位符要求正文中对应论点已移除。
占位符生命周期与处理规则见 references/drafting-placeholders.md。
8. 风格审查与学术降噪
- 风格审查分为四个层次:词面筛查、句法筛查、文风配置审计、人工审计。
- 词面筛查(自动):拦截 AI 翻译腔、宏大叙事转场、套话、口语化表达、文学化修辞、直呼式称谓和低信息转折。
- 句法筛查(自动):发现超长句、连续从句、重复助词和主谓关系松散。
- 文风配置审计(可选,自动):当
task_profile.user_intent.style_profile.enabled 为 true 时,检查正文是否按 writing-style-profile.md 执行了词汇替换、动词扩展和括号整合等转换。审计方向是检查原文残留项(如"采用"是否已替换为"运用"、"(……)"括号是否已整合),以及是否违反硬性禁止(如"xxx 呢"等口语化残留)。
- 人工审计(Agent 判断):风格 Agent 对自动筛查标记的位置逐处判断学术功能,决定保留、拆分或重写。
- 附带脚本
audit_style.py 执行自动筛查,标出高风险位置。运行 audit_style.py --profile verbose-explanatory 可专门对启用了解释性文风配置的稿件执行替换完整度检查。
- 中央 Agent 根据上下文改写:宏大叙事转场改为具体研究背景;拟人和比喻改为理论功能、变量关系或机制说明;套娃式长句拆成短句并显式恢复主语、谓语和宾语;英文携带词改为领域稳定的中文表达(标准术语保留原形)。
- 中文搭配审计单独设为规则组:抽象对象只搭配能说明结构、关系、条件、程度或作用的动词;现实物体属性词只用于现实对象。
筛查规则与词库见 references/style-and-grep-audit.md。文风配置的完整替换规则见 references/writing-style-profile.md。
8a. 中文散文句式审查(人工审计)
以下规则来自结课论文写作实践中反复暴露的负面模式,在自动筛查基础上增加 grep 辅助人工排查。完整清单见 references/negative-patterns.md。
句式模式黑名单 — 以下公式化句式应逐条 grep 标记并改写:
| 禁止句式 | grep 正则 | 改写策略 |
|---|
| 并非……而是…… | `并非 | 不是简单.*而是` |
| 不再是……而是…… / 不再仅仅是…… | 不再是|不再仅仅|不再只是 | 换为「从……逐步转向」「……的功能发生转移」 |
| 不仅……更…… / 不仅是……更是…… | 不仅.*更 | 拆为两个独立判断句,或换为「同时」「与此同时」 |
| 段末臃肿总结(这一转型可概括为/共同指向一个判断/其核心在于) | 这一转型|共同指向|其核心在于 | 删除总结句,让段末自然收束;或浓缩为一个短判断 |
自指视角限制 — 本文 本论文 本读书笔记 等自指词在正文中应严格控制。grep 本文|本论文|本笔记,优先改用:
- 隐去主语(直接陈述判断)
以下 下文 替代
- 摘要/引言中若必须出现一次可保留,全文不超过 2 次
引述动词多样化 — 指出 表明 标志着 三个动词频繁重复会暴露机械写作。grep 指出|表明|标志着,按语境替换:
指出 → 参照……的分析 / 在……看来 / 如……所论 / 依……的考察
表明 → 可以说明 / 呈现出 / 反映了 / 透露了
标志着 → 意味着 / 表征了 / 完成了从……到……的过渡
同一段落内严禁连续两句使用同一引述动词。
双引号节制 — 仅两类情况保留双引号:(1)直接引用经典原文;(2)学界通行专有名词(如「列鼎制度」「事死如事生」「举孝廉」「上陵礼」)。其余修辞性、分析性概念(如「物质化的制度文本」「身份秩序」「礼器语言」等自创术语)一律去掉引号,用自然语言承接。grep ".*?" 排查,去除非必要的引号包裹。
臃肿陈述句拆分 — 单个句子包含三个以上并列谓词、或破折号内嵌套完整句子的,应予拆分。grep ——.*—— 定位长破折号嵌套句,按语义切分为 2-3 个短句。
8b. 用户反馈的「逐条标注」模式
SKILL 原定用户反馈通过审阅包的结构化字段(user_feedback_log)进入系统,但实际中用户更常用以下格式给出反馈:
> 原文引用
评论意见
即逐条引用原文片段 + 行下点评。Agent 应将此格式视为一等审阅输入:
- 按「原文引用 → grep 定位 → 逐段 rewrite」的工序处理
- 不必将此反馈转写为 task_profile 字段(增加中间环节不提升质量)
- 改写后应向用户说明每条反馈的处理结果
9. 排版约束
生成 .tex 时,默认采纳以下排版准则,除非用户提供的课程模板另有要求。
页面布局
- 边距对称:正文区
left=2.8cm, right=2.8cm, top=2.5cm, bottom=2.5cm(封面/评分表除外,其可使用零边距 + tikz 绝对定位)
- 正文字号
12pt(小四),行距 \onehalfspacing,缩进 \setlength{\parindent}{2em}
- 添加
\raggedbottom 避免跨页拉伸
宏包最小化 — 参照 experiment-report-skill 的克制原则,仅加载必要宏包:
\usepackage{geometry} % 页面布局
\usepackage{graphicx} % 图片
\usepackage{tikz} % 封面(仅在需要精确坐标对齐时使用)
\usepackage{booktabs} % 三线表
\usepackage{caption} % 图表标题
\usepackage{xcolor} % 颜色(hyperref 蓝色链接所需)
\usepackage{hyperref} % 超链接
\usepackage{setspace} % 行距
不加载:fancyhdr titlesec enumitem tocloft microtype —— ct ex art 默认样式对中文论文已经足够好,不必覆盖。
字体策略 — 按编译环境自动选择:
| 环境 | 策略 | 配置 |
|---|
| Overleaf | fontset=fandol | 内置 Fandol,无需额外配置,但有罕见字缺失风险(如 昺 U+663A) |
| 本机/WSL(有 Noto 系统字体) | fontset=none + 显式指定 Noto | \setCJKmainfont{Noto Serif CJK SC} 等,字符覆盖完整 |
| 本机/WSL(无 Noto) | fontset=fandol 或 fontset=ubuntu | 退回到 ctex 预置字体集 |
注意:WSL TeX Live 中的 Fandol 字体不能经由 fontspec 按名称直接调用(如 \setCJKmainfont{FandolHei-Regular} 会报错:font not found),只能通过 ctex 内部 fontset=fandol 机制加载。因此混合使用 Fandol + Noto 时,封面/正文的 \heiti \kaishu \fangsong 应为同一来源,不可跨机制混搭。
封面模板优先级 — 若用户提供了学院/课程的封面模板(.docx 或已有 .tex),优先使用该模板的尺寸和字段布局,而非重新创作。封面中的 tikz 坐标应从原模板的 docx 渲染坐标反推。
Hyperref 样式 — 统一使用蓝色链接,不装饰页眉页脚:
\hypersetup{
colorlinks=true,
linkcolor=blue,
urlcolor=blue,
citecolor=blue,
}
参考文献 — 中文书目不使用 \emph{}(CJK 无真正意大利体,回退为常规体等同于无效果)。直接以 [M] [J] 标识文献类型,书名不加《》括号或斜体标记,保持条目间的一致性。
10. 局部回滚与迭代
- 用户审阅意见触发局部回滚,而非全量重写。
- 回滚粒度可按范围分级:全局主题、一级章节、二级章节、某组文献、某个论点或某种风格偏好。
- 中央 Agent 处理回滚时,先冻结保留状态,再删除受影响节点的正文、证据绑定和局部审计结果,随后调度相关子 Agent 重新生成。
- 新一轮输出把用户反馈写入高优先级约束,审计时逐条检查反馈是否已被落实。
回滚规则与记录结构见 references/retry-rollback.md。
11. 最终审计门槛
- 最终审计分为六个维度:结构审计、证据审计、占位符审计、引用审计、风格审计、用户反馈审计。
- 结构审计:检查选定范式与章节树是否一致。
- 证据审计:重要声称是否绑定来源,文献之间的关系是否已进入论证。
- 占位符审计:open 状态是否清零。
- 引用审计:文内引用与参考文献条目是否能互相对应。
- 风格审计:运行本地脚本并读取人工审计结果。
- 用户反馈审计:读取 user_feedback_log,确认每条高优先级意见都有对应处理记录。
详细审计规则见 references/final-review.md。
交付阶段
最终交付可以是论文方案、详细提纲、初稿、修订稿或定稿。
- 方案和提纲:允许材料空位清单存在,不要求占位符清零。
- 初稿:允许少量待补强项以占位符形式显式存在。
- 修订稿和定稿:需要完成占位符处理、引用核对和风格审查。
中央 Agent 在交付说明中标明稿件阶段、已覆盖材料、待审点和适合用户检查的位置。
子 Agent 提示词规范
架构 Agent
输入为任务画像、课程要求、用户题目、已有材料清单和用户偏好。输出为选定范式、选择理由、具象化章节树、章节功能、材料需求和路由风险。先判断论文范式,再生成章节树。章节标题承载具体信息,章节功能说明该节在整篇论文中承担的推理任务。
文献 Agent
输入为论文主问题、关键词、课程语境和已有来源。输出为文献卡片、观点关系、可用章节、引用风险和检索空位。优先提取文献之间的关系,再提取单篇文献摘要。文献进入正文前完成转述或整合,并标明功能身份。
证据 Agent
输入为章节树、文献卡片、课程材料和案例材料。输出为声称矩阵和文献整合矩阵。每个声称都有来源、解释路径、材料间关系和覆盖状态。覆盖状态为 weak 或 placeholder 时同步生成占位符建议。
正文 Agent
输入为单个段落节点、证据矩阵、文献整合矩阵和上文摘要。输出为一个可接入正文的段落,以及来源编号、局部判断和下文承接目标。只生成材料能够支撑的内容,遇到材料空位时写入占位符。
当 task_profile.user_intent.style_profile.enabled 为 true 时,正文 Agent 生成基础段落后,按 writing-style-profile.md 执行词汇替换、动词扩展、括号整合和句式微调,使文本获得更强的解释性和可读性。此阶段为风格改写层,不改变实质内容和证据绑定。
风格 Agent
输入为当前稿件、风格规则、文风配置状态和本地脚本结果。输出为问题位置、触发类型和改写建议。重点检查自然中文、敬语、学术降噪、句法清晰和中文搭配。当文风配置启用时,还需检查替换完整度和口语化越界。中央 Agent 读取建议后完成改写。
审计 Agent
输入为当前稿件、任务画像、参考规则文件和脚本结果。输出为逐项审计记录。从结构、证据、占位符、引用、风格和用户反馈六个维度给出合规判断。每条问题关联稿件位置和规则来源,便于中央 Agent 局部修复。
脚本工具
scripts/audit_style.py — 词面筛查和句法筛查,输出高风险位置列表。--profile verbose-explanatory 模式专门检查解释性文风配置的替换完整度与口语化越界。
scripts/extract_placeholders.py — 从草稿中提取所有占位符,生成材料空位清单。
scripts/check_claim_coverage.py — 检查声称矩阵中的覆盖状态,标记 weak 和 placeholder 项。
grep 内建(中文散文筛查,见 step 8a):
rg '并非|不是简单.*而是' — 否定肯定句式
rg '不再是|不再仅仅|不再只是' — 不再……而是句式
rg '不仅.*更' — 僵硬递进句式
rg '这一转型|共同指向|其核心在于' — 段末臃肿总结
rg '本文|本论文|本笔记' — 自指视角
rg '指出|表明|标志着' — 机械引述动词
rg '".*?"' — 非必要双引号
rg '——.*——' — 长破折号嵌套句
附录:任务画像 Schema
task_profile:
course:
name: ""
teacher_requirements: []
rubric_items: []
word_count_target: ""
citation_style: ""
submission_format: ""
compile_environment: ""
font_strategy: ""
user_intent:
topic: ""
retained_views: []
preferred_scope: ""
forbidden_directions: []
style_profile:
enabled: false
name: "verbose-explanatory"
exclude_sections: []
paradigm:
selected: ""
confidence: ""
reason: ""
fallback: ""
argument:
central_question: ""
thesis: ""
chapter_nodes: []
paragraph_nodes: []
sources:
course_materials: []
literature_cards: []
case_materials: []
data_materials: []
evidence:
claim_matrix: []
synthesis_matrix: []
placeholder_list: []
review:
user_feedback_log: []
audit_findings: []
rollback_scope: []