mcpField
P
ppw:team

ppw:team

github.com/lylll9436文档处理39074 次安装31 周前更新
代码仓库

关于 ppw:team

ppw:team 是用于按章节编排论文处理的 Skill,面向需要运行 translation、polish 或 de-ai 的用户。当前版本将论文拆分并通过单个子代理处理选定章节,以质量确认门控概念验证;完整并行处理尚未实现。

主要功能

  1. 01拆分 LaTeX 或 Markdown 论文章节
  2. 02支持 guided 和 direct 模式
  3. 03校验目标 Skill 与文件格式
  4. 04运行单章节子代理概念验证
  5. 05记录清单、备份和处理状态

适用场景

  1. 01对论文章节进行翻译处理
  2. 02逐章润色或降低 AI 文风
  3. 03先验证子代理输出质量再继续

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/lylll9436/paper-polish-workflow-skill --skill ppw:team

安装后在 Claude Code 中输入/ppw:team确认已加载。

详细介绍

用途

此 Skill 通过将论文拆分为 H1 章节,并向子 Agent 分派符合条件的 Skill,来协调并行论文处理。在 Phase 19(当前阶段),它通过在一个章节上运行单个子 Agent,验证概念验证关卡。跨所有章节的完整并行分派将在 Phase 20 进行。

触发条件

在以下情况激活: 调用 ppw:team [skill] [file]。

示例:

  • “ppw:team polish paper.tex” / “团队模式润色论文”
  • “ppw:team translation draft.md” / “并行翻译论文各章节”
  • “ppw:team de-ai paper.tex”

模式

模式默认值行为
guided是拆分 -> 用户确认章节 -> 用户选择概念验证章节 -> 运行概念验证 -> 用户确认质量
direct跳过确认,自动选择所有正文章节,并选择第一章进行概念验证

模式推断: 触发内容中包含“直接”或“direct”时,切换为 direct 模式。

参考资料

required: [] -- 此 Skill 本身不生成学术文本。它负责协调其他 Skill,这些 Skill 会在运行时加载各自的参考资料。协调器不需要参考文件。

询问策略

guided 模式 -- 通过 AskUserQuestion 设置三个交互点:

  1. 拆分后选择章节(multiSelect)
  2. 从选定章节中选择概念验证章节(单选)
  3. 确认概念验证质量(批准/重试/退出)

direct 模式 -- 跳过全部三项:自动选择所有正文章节(排除前言和参考文献),自动选择第一章正文进行概念验证,并自动批准概念验证输出。

工作流

步骤 0:工作流记忆(仅记录)
  • 跳过模式检测 -- 协调器不适合自动推荐 direct 模式。
  • 在步骤 1 验证后记录(见步骤 1)。
步骤 1:解析参数并验证
  • 解析 $ARGUMENTS,提取:Skill 名称(第一个词)和文件路径(其余词)。
  • 根据白名单验证 Skill 名称:["translation", "polish", "de-ai"]
  • 如果 Skill 不在白名单中,使用确切消息拒绝:“[Skill] 需要完整论文上下文,无法并行运行。请直接运行 /ppw:[skill]。”
  • 验证文件存在且格式为 .tex 或 .md。如果找不到文件或格式不正确,报告错误并停止。
  • 读取论文文件内容。
  • 记录工作流: 将 {"skill": "ppw:team", "ts": "<ISO timestamp>"} 追加到 .planning/workflow-memory.json。如果文件不存在,则创建为 []。如果日志长度 >= 50,则删除最旧条目。
步骤 2:创建工作目录
  • 创建 .paper-team/ 目录结构:sections/、output/。
  • 如果 .paper-team/ 已存在:在 guided 模式下询问是否覆盖或取消;在 direct 模式下静默覆盖。
  • 备份原论文:.paper-team/{filename}-backup-{YYYYMMDD-HHmm}.{ext}(添加时间戳,避免重复运行时覆盖)。
  • 初始化 .paper-team/manifest.json:
{
  "version": "1.0",
  "created": "<ISO timestamp>",
  "source_file": "<original file path>",
  "source_format": "tex|md",
  "target_skill": "<skill name>",
  "sections": [],
  "poc": { "section_id": null, "status": "pending", "timestamp": null },
  "backup": "<backup filename>"
}
步骤 3:将论文拆分为多个部分

对于 .tex 文件:

  • 前言:从文件开头到 \begin{document}(含)之间的所有内容。标记为“00 - 前言”。
  • 参考文献:从 \bibliography{} 或 \printbibliography 到 \end{document} 之间的内容。标记为“99 - 参考文献”。
  • 章节边界:每个 \section 命令。匹配 \section,后跟可选的 *、可选的 [...],然后是 {...}。忽略以 % 开头的行(LaTeX 注释)。
  • \begin{document} 与第一个 \section{} 之间的内容为“00 - 章节前内容”(去除首尾空白后非空时)。
  • 每个章节:从 \section{标题} 所在行开始,到下一个 \section{ 或参考文献边界之前一行为止。

对于 .md 文件:

  • Frontmatter:第一个 # 标题之前的内容。标记为“00 - Frontmatter”(非空时)。
  • 在以 # 开头的行处分割(H1 标题)。
  • 每个 H1 标题及其内容,直到下一个 # ,构成一个章节。

章节文件命名:{NN}-{sanitized-title}.{ext},其中 NN = 补零后的序号,sanitized-title = 标题转为小写、空格替换为连字符、移除特殊字符,最多 50 个字符。前言:00-preamble.{ext}。章节前内容:00-presection.{ext}。参考文献:99-bibliography.{ext}。Frontmatter:00-frontmatter.md。

边缘情况:

  • 没有 \section{} 命令:将整个正文视为“01 - 完整正文”。
  • 只有一个章节:警告用户并行处理没有意义;仍继续执行 PoC。
  • 空章节(边界之间没有内容):跳过,不创建文件。

将每个章节写入 .paper-team/sections/{filename}。更新 manifest.json 的 sections 数组,为每个章节添加 { "id": "NN", "title": "...", "file": "sections/filename", "selected": false, "status": "pending" }。

步骤 4:选择章节

**引导模式:**通过 AskUserQuestion 的 multiSelect 展示所有检测到的章节:

AskUserQuestion({
  question: "Select sections to process with ppw:{skill}:\n选择要用 ppw:{skill} 处理的章节:",
  multiSelect: true,
  options: [
    { label: "NN - Title", description: "brief description or first line" }
  ]
})

更新 manifest.json,将所选章节的 selected 设为 true。

**直接模式:**自动选择除 id 为 "00"(前言/章节前内容/Frontmatter)和 "99"(参考文献)以外的所有章节。相应地更新 manifest。向用户显示所选章节。

步骤 5:选择 PoC 章节

**引导模式:**通过 AskUserQuestion 展示所选章节(单选):

AskUserQuestion({
  question: "Select one section for proof-of-concept test:\n选择一个章节进行概念验证测试:",
  options: [
    { label: "NN - Title", description: "will be processed by a subagent" }
  ]
})

**直接模式:**自动选择第一个已选章节(所选章节中 NN 编号最小的章节)。

步骤 6:执行 PoC 门禁
  • 从 .claude/skills/ppw-{skill}/SKILL.md 读取目标 Skill 的 SKILL.md。如果未找到,报告错误:“在 .claude/skills/ppw-{skill}/SKILL.md 中找不到 Skill ppw:{skill}”,并停止。
  • 从 .paper-team/sections/{file} 读取所选章节文件。
  • 构造子 Agent 提示词(使用此模板原文,并填入占位符):
You are executing a paper section processing task in direct mode.

## Skill Instructions

{FULL CONTENT OF TARGET SKILL.MD INSERTED HERE}

## Task

Process the following paper section file using the Skill instructions above.

- Input file: .paper-team/sections/{section-filename}
- Mode: direct (skip all AskUserQuestion calls, skip Workflow Memory Step 0)
- Write output to: .paper-team/output/{section-filename}
- Do NOT ask the user any questions. Proceed with defaults.
- Load all required references as specified in the Skill instructions.
- Produce output as if you were running the Skill directly on this section.
- If the Skill normally edits in-place, instead write the processed output to the output path above.
  • 使用此提示词,通过 Agent 工具启动一个子 Agent。
  • 等待子 Agent 完成。
  • 更新 manifest.json:将 poc.section_id、poc.status 设为 "completed",将 poc.timestamp 设为当前 ISO 时间戳。将该章节的 status 设为 "completed"。
步骤 7:确认 PoC 质量

**引导模式:**从 .paper-team/output/{file} 读取子 Agent 输出。向用户显示一段简短摘录(前 20–30 行)。然后询问:

AskUserQuestion({
  question: "PoC gate: Is the subagent output quality acceptable?\n概念验证:子代理输出质量是否可接受?",
  options: [
    { label: "Approved - PoC gate passed", description: "Quality is comparable to main-session execution" },
    { label: "Retry", description: "Re-run PoC on the same section" },
    { label: "Exit", description: "Stop orchestration, quality is not acceptable" }
  ]
})
  • **批准:**将 manifest.json 中的 poc.status 更新为 "passed"。显示:“PoC 门禁已通过。ppw:team 编排器已通过验证。若要并行处理所有章节,请使用第 20 阶段的并行分发(即将推出)。”
  • **重试:**返回步骤 6。最多循环 3 次,然后建议退出。
  • **退出:**将 manifest.json 中的 poc.status 更新为 "failed"。显示消息,并建议直接运行 Skill:“/ppw:{skill} {file}”

**直接模式:**自动批准(将 poc.status 设为 "passed"),显示输出的前 10 行和成功消息。

输出契约

输出格式条件
section_files.paper-team/sections/ 中的独立文件第 3 步后始终生成
manifest.paper-team/manifest.json始终生成,并在整个工作流中持续更新
poc_output.paper-team/output/ 中的单个文件第 6 步后生成

边缘情况

情况处理方式
论文没有 \section{} 命令将整个正文视为一个章节“01 - Full Body”
论文只有一个章节提示并行处理没有益处;继续执行 PoC
文件路径包含空格在所有读取/写入操作中为文件路径加引号
.paper-team/ 已存在询问是否覆盖或取消(引导模式)/静默覆盖(直接模式)
子 Agent 失败或超时报告错误,并建议重试或退出
\section*{}(无编号)作为章节边界匹配(模式包含可选的 *)
\section[short]{long}(可选参数)作为章节边界匹配(模式包含可选的 [...])
空章节(边界之间没有内容)跳过空章节,不创建文件

回退方案

场景回退方案
结构化交互不可用通过纯文本提问来选择章节
Agent 工具失败报告错误;建议直接在该章节上运行 Skill
找不到目标 Skill 的 SKILL.md报告:“在 .claude/skills/ppw-{skill}/SKILL.md 中找不到 Skill ppw:{skill}”
.planning/workflow-memory.json 缺失追加内容前将其创建为 []

Skill:ppw-team 约定:references/skill-conventions.md

评论

支持 Markdown