点铁专利智能体平台
下载地址
https://www.zhengdianxue.com/wp-content/uploads/skills/org-aqs3srg8--patent-diantie.zip将提示词发送给你的 AI 安装该 skills
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-aqs3srg8/patent-diantie。通过点铁专利智能体平台可以高质量的完成专利撰写,专利答复,创新点挖掘等工作,每个月交付几千份专利任务,得到许多行业内专家的认可。
阅读全文 (展开查看完整说明)
概述
IP Agent 网页智能体协作
把本地材料交给 IP Agent 网页工作台(http://62.234.167.52:8888/)上的智能体处理,并把结果落回本地文件。本技能负责四件事:登录与盘点(积分/智能体清单)、本地预处理(PDF→Markdown + 任务类型判定)、提交与回收(调用智能体 + 写对话记录)、证据补充闭环(智能体要证据时联网收集、打包、续聊发回)。
阶段 0 · 首次使用(新手向导,只在第一次或出错时走)
刚装好本技能时,先跑一次自检:
$SKILL = & "<本技能基目录>scriptsfind_skill_dir.ps1"
& "$SKILLrun.ps1 doctordoctor 会逐项检查并给出修复命令:Python 版本 → requests/playwright 依赖 → 浏览器(Chrome/Edge)→ PDF 引擎(内置 PyMuPDF)→ .env 凭据 → 登录态与积分 → 智能体清单 → 证据补充/OA 检查模块 → 输出模式 → 自动化档位。全部 ✅ 后再进阶段 1。
首次配置账号(doctor 报「账号凭据 ❌」时):
Copy-Item "$SKILL.env.example" "$SKILL.env"
notepad "$SKILL.env" # 填 IPAGENT_PHONE / IPAGENT_PASSWORD,保存即可
& "$SKILLrun.ps1" doctor # 复查首次安装必选:输出模式。 doctor 报「输出模式 ❌ 未设置」时,必须先用 ask_user_question 让用户二选一,问不到不许继续:
请选择输出模式(选择会保存,之后随时可用 mode –set 切换):
- 详细模式(推荐)——每次调用后,智能体回复的完整正文(不含思考过程)直接通过对话转述给你;
- 简略模式——对话里只给摘要与关键结论(像现在这样),详细过程不直接展示,全文在《对话记录.md》。
# 按用户点选执行其一(持久保存在 state/output_mode.txt)
& $PY "$SKILLscriptsagent_client.py" mode --set detail # 详细模式
& $PY "$SKILLscriptsagent_client.py" mode --set brief # 简略模式
& $PY "$SKILLscriptsagent_client.py" mode # 只查看当前模式首次安装必选:自动化档位。 doctor 报「自动化档位 ❌ 未设置」时,必须先用 ask_user_question 让用户二选一,问不到不许继续。提问时必须讲清两档的区别与适用人群(先说区别,再给适用人群一句话,最后让用户选):
两种档位的区别一句话说清:
- 手动模式(现状):每一轮你都在场——发送前给「继续/带建议/跳过阶段」三选一菜单,扣分逐条确认,花出去的每一分都经过你点头;
- 自动模式:一次性授权后全程静默——选智能体、续聊发「继续」都不问你,撰写任务跑完自动整理生成 docx,再回来找你核稿(本地核稿 skill 或点铁核稿智能体)与改稿;代价是过程里没有你的否决权(OA 缺号、扫描件、须实测数据、余额不足等硬闸门仍会停下来问你,扣分事后一次性对账)。
适用人群一句话:手动模式适合需要介入核对每个步骤的用户,自动模式适合不需要每一步确认的用户——拿不准就选手动模式,流程跑顺了再
auto --set on切自动。请选择自动化档位(选择会保存,之后随时可用 auto –set 切换):
# 按用户点选执行其一(持久保存在 state/auto_mode.txt)
& $PY "$SKILLscriptsagent_client.py" auto --set on # 自动模式
& $PY "$SKILLscriptsagent_client.py" auto --set off # 手动模式(原有逐轮确认)
& $PY "$SKILLscriptsagent_client.py" auto # 只查看当前档位两种输出模式(详细/简略)与自动化档位(自动/手动)互相独立:自动模式下照样按输出模式决定阶段 7 怎么转述智能体回复。
输出模式决定阶段 7 的汇报方式:详细模式→把智能体回复完整正文(<think> 思考段已剔除)原样转述给用户,长也不截断;简略模式→只给摘要与关键结论,用户要看全文时指到《对话记录.md》或临时展开。两种模式下《对话记录.md》都写全文,落盘内容不受影响。
向新手用户转述时的三句话:① 每次给智能体发消息都会扣积分(10–20 分/条),技能会在每次发送前向你确认(自动模式下按授权一次性对账);② 登录遇到验证码时会弹出浏览器窗口,你直接在窗口里手动完成即可;③ 所有往来都会写进本地的「对话记录-<案件名>.md」,部分任务不进网页端历史会话,复核以本地记录为准。
0.0 发送通道:后台 API 模式
提交智能体只走后台 API 模式:scripts/agent_client.py invoke 直连 /invoke 接口——快、不开浏览器聊天、可无人值守批量跑;代价是部分任务不出现在网页端「历史会话」里,复核一律以本地《对话记录.md》为准。
共用规则:发送确认(每条消息发送前,把「向用户提醒过扣分并取得同意」写进 --credit-ack)、决策三选一(--round-choice plain/suggest/skip,证据补充轮另记作 evidence,见阶段 5.5)、对话记录格式(append_conversation_log)、登录态(登录走 login 命令的自动路径,token 存 state/session.json;登录过程由无头浏览器完成,出现验证码时弹窗由用户手动通过)。
0.0A 自动模式(静默跑完 + 自动转 docx + 核稿 + 修改询问)
自动化档位为 auto(state/auto_mode.txt,首次安装必选,auto --set on/off 随时切换)时,整个流程按自动模式跑:不需要用户逐轮选择,静默和点铁智能体交互,续聊轮默认发送「继续」,撰写任务完成后自动整理生成 docx,随后提示核稿与修改。interactive(手动模式)/未设置时走原有逐轮确认流程,本节全部不适用。
自动模式改了哪些环节
| 环节 | 手动模式 | 自动模式 |
|---|---|---|
| 阶段 3a 智能体选择 | ask_user_question 点选 | 不问,直接用本地判定给出的推荐智能体;判定不出唯一推荐时才停下来问 |
| 阶段 3a-前 权利要求撰写约束 | 必问,问不到不发 | 不问,用推荐默认值(10 项左右、权 1 不限字数、不用公式、无范例)整理成「权利要求撰写约束」内联进首次提交 |
| 阶段 3b 每轮三选一 | menu + ask_user_question 点选 | 跳过;首次提交照旧纯原文,续聊轮固定 --round-choice plain,query 就发「继续」 |
| 扣分确认 | 每条消息发送前单独确认 | 首次安装选择自动模式即视为一次性授权;--credit-ack 写「自动模式已授权(扣N)」;余额低于单价仍必须停下来 |
| 交付件 | 汇报后等用户指示 | 智能体停稳、产出完整交付件后直接转 docx 并走核稿提示 |
输出模式(详细/简略)照常生效:自动模式只免掉「过程里的选择」,不免掉「结果的转述」——阶段 7 仍按输出模式把回复转述给用户。
自动模式不豁免的硬闸门(碰到就停下来问用户,别硬闯)
- 阶段 2.5 OA 缺号:申请号、对比文件公开号缺失——信息缺口编不得,照旧向用户要,不给不发;
- 阶段 2.1 扫描件:二选一(自行转码/视觉转录)照旧要用户拍板;
- 证据需求里的「须实测/待明确」项(experiment/clarify):检索与推演顶替不了,列清单向用户要;
- 补件里的文献类对比文件原文:平台补不了、patseek 也补不了,向用户要或联网检索开放获取原文(检索不到就停);
- 积分余额低于所选智能体单价:停止调用,按核心原则 2 给补救路径;
- 连续 2 轮回复无实质新产出(复读、空转、同样的问题再问一遍):停止循环,转手动模式,如实汇报;
- 轮次上限:单任务自动循环最多 10 轮,到顶停下来汇报(防失控烧分)。
自动循环怎么推进
每轮抓完回复,按序判断再决定下一步:
- 回复里是问题/要求用户决策(如「请确认保护范围」「请提供××」且不属于上述硬闸门类)→ 停下转手动模式,把问题原样带给用户;
- 有证据需求且可检索(search 类)→ 走阶段 5.5 前三步自动完成:识别分流 → 宿主联网检索 → check/pack 打包,再以证据补充轮(
--round-choice evidence)发回同一会话;须实测的攒清单,最后一起向用户要; - 智能体要补件 → 按核心原则 17 分流:申请文件与专利对比文件走 patseek 自动取;文献类停下问用户;
- 回复是最终交付件 → 结束循环。判定「最终交付件」:撰写类看三部件(说明书摘要/权利要求书/说明书)是否齐或智能体明确写「全文完/以上为完整申请文件」;答复类看意见陈述书全文(含修改对照与结论)是否给出;拿不准就再发一轮「继续」,到轮次上限自然停。
撰写任务完成后的固定动作(自动模式专属,顺序固定)
- 转 docx:专利申请文件(三部件)→
build_patent_docx.py(版式见阶段 6.6);意见陈述书等单部件文书 →build_patent_docx.py --single --header "<部件名>";其余普通交付件 →md_to_docx.py; - 展示:
present_files打开 docx 与《对话记录.md》; - 核稿提示(必须问,ask_user_question 三选一):
撰写任务已完成(附产出文件路径与扣分汇总)。接下来是否核稿?
- 本地核稿 skill(推荐,不扣积分)——用本地核稿类 skill(如 patent-review/patent-senior-examiner)对稿子核稿;
- 点铁核稿智能体(扣积分)——把稿子发回网页端核稿智能体(照旧 invoke,credit-ack 写「自动模式已授权(扣N)」);
- 暂不核稿——按现状交付。
- 核稿意见产出后(必须问,ask_user_question):
核稿意见已出(附要点摘要)。是否按核稿意见修改?
- 按意见修改——本地改(推荐,不扣积分):宿主直接改 md/docx,改完可再走一轮核稿;
- 按意见修改——发回原智能体改(扣积分):把核稿意见作为补充材料续聊原撰写会话,继续走自动循环;
- 不改,按现状交付。
点铁核稿智能体出的意见同样落《对话记录.md》;本地核稿 skill 出的意见按该 skill 自己的输出规则落盘。两条路径都完成后,第 4 步的询问都要问。
自动模式一轮的汇报口径
任务结束(完成或中断)时一次性汇报:跑了哪几轮、每轮的扣分与平台计费结果(billing_state 口径不变,见阶段 7)、最终产出文件路径、哪几处停下来问了用户及原因(硬闸门/轮次上限/空转停止)。中断时如实说明停在第几轮、已花积分,不装作正常完成。
0. 核心原则
- 扣分必须事前提醒(硬性红线):向点铁智能体发送的任何一条消息都会扣积分,包括首次提交、追问、续聊、纠错重发、甚至只回一句"确认"。因此每次发起远端调用之前,都必须明确告诉用户:本条消息将调用哪个智能体、扣多少积分(如"扣 20 积分")、发送前余额与发送后预估余额,并取得用户同意。没有事前提醒并获得同意,不得发送。 续聊尤其容易漏——"接着上次追问"同样按该智能体单价扣分,不要因为是同一会话就以为免费或不提醒。
标准提醒话术用 quote --subagent <ID> 打印,每轮的「继续 / 带建议 / 跳过阶段」三选一用 menu --subagent <ID> 打印,不要凭记忆估数字。
- 先看余额,再动手:每次调用前必须读取积分余额;余额低于所选智能体单价时停下来告诉用户,不要硬提。补救路径按顺序告知:① 分享专属邀请链接(每成功邀请一位新用户注册,双方各得 100 积分)——运行
referral拿到用户的专属链接与现成推广文案,原样发给用户去分享;② 网页端「个人中心」充值。 - 智能体必须让用户确认:本地判定只作为「推荐」,最终由用户点选。用户已明确指定智能体时可直接执行。
- 不要猜 API:站点有两层(前端
:8888、后端 FastAPI:9999),接口细节见references/api-reference.md。不要自行编造端点或字段。 - 提交内容以 Markdown 正文为主:远端对"附件链接"形式的文件解析不可靠(实测不解析、不计费、智能体回"文件列表为空"),因此默认把 Markdown 正文内联进 query;上传文件只作为留痕与人工在网页复核。
- 绝不伪造智能体回复:只写实际抓取到的内容。抓取失败或返回空内容就如实报告并给出排查路径(
--out留档原始输出)。 - 超时与计费如实记录:单次任务默认最长等 30 分钟(远端
timeout=300秒,stream 读取超时另计)。credit_cost是标价预估,不等于已扣。扣没扣分只认平台明示,两类证据才算数:① 平台 delivery-ack 返回的billing_state(charged=平台提示已扣费、not_billable=平台提示不计费);② 用户在网页端账单里看到实际扣除。脚本收到回复后自动投递确认,把平台返回的计费结果写进终端输出与《对话记录.md》的「平台计费」一栏。ack 失败、billing_state异常或金额未返回时,一律汇报「扣分不确定,以网页账单为准」,并只报当前积分总数(用 status 查询)——不要拿"余额差额"反推扣没扣(积分读数有延迟,差额可能是别的原因),也不要拿标价顶替实扣金额。 - 扫描件停住问用户:内置 PyMuPDF 只吃文本层,遇到扫描件就停在这一步问用户,二选一——① 用户自己转码(OCR 后给 .md/.docx,或导出带文本层的 PDF);② 走视觉转录(
pdf_to_images.py渲染 PNG + 模型看图)。走 ② 时必须当面提示可能有误差,尤其在手写、印章、公式、跨页表格处,并要求人工核对申请号/公开号/日期/数值。不得擅自替用户决定,也不得静默降级后当没事发生。 - 续聊必须先找回、后新建:用户说"继续上次那个""接着上面改"时,先检索历史会话让用户确认;找不到可靠匹配才用本地记录重建上下文,且必须告诉用户上下文来自哪里。
- 每轮发送前给用户 3 选 1,不要替用户决定发送内容:无论是首次提交还是续聊追问,都不要"拿到一个 query 就直接发"。必须用
ask_user_question让用户在下面三个方向里点选("选哪个智能体"是另一件事,见阶段 3):- 继续 —— 续聊轮:不带任何额外信息/提示,原样让智能体接着干(纯指令,零补充);首次提交轮:直接发材料原文,不加提示词(见阶段 4 的首次提交规则);
- 可以……(带建议继续) —— 结合上下文给出你的具体建议(例如"可以顺手把创造性论述补成三步:区别特征→技术启示→预期效果"),建议文本先给用户过目,同意后再发;
- 跳过某个阶段(省积分) —— 点明跳过哪一段/哪一轮(例如"跳过背景技术复述,直接从权利要求修改对照开始"),让这一轮少做无用功,省下后续轮次的积分。
三个选项都要写明本轮扣多少积分——选项 1 和 3 一样要扣,选项 3 省的是"后续轮次",不是"本轮"。默认把「1. 继续(零补充)」置顶标注 (推荐)(详见阶段 3b),再按用户选择构造 query。
- 不要写死安装路径:技能可能被别的 agent 装到别的目录(
~/.dsh/skills/、项目内.dsh/skills/或任意自定义位置)。一律先解析出技能基目录(SKILL.md所在处)再拼相对路径,不要假设固定目录。脚本内部只用__file__/$PSScriptRoot推导,可整体搬移。 - 证据补充闭环:智能体回复里出现「请补充××证据/材料」时,既不要把问题原样丢回给用户,也不要空口回一句"已补充"(远端看不到你手里的文件,只会再要一次)。按阶段 5.5 四步走:识别需求(可检索/须实测分流)→ 用宿主联网能力检索 → 校验打包 → 续聊发回。识别与打包由
scripts/evidence.py完成(本地、不联网),检索由宿主的联网工具完成。 - 证据只收集、不编造;实测数据不顶替:文献号、专利公开号、标准号、法条编号、卷期页码一律不得虚构,查不到就写「未检索到」并进
gaps说明原因,不得用相近主题的文献冒充。智能体要实测/实验数据时,只能向用户或研发要,不得用检索结果、经验值或推演顶替——这一点与"交底书里可按技术原理推演补数据"不同:证据是对外提交的凭据,不是稿件正文。证据优先中文来源(中文期刊、中文综述、中国专利文献、国标行标、审查指南与司法解释),外文期刊不作首选。 - OA/驳回材料先查号再发送:审查意见通知书、驳回决定、复审通知书在首次发送前必须过阶段 2.5 的检查——申请号、对比文件公开号(论文则题名出处)、审查员引用未附具的论文/公知常识资料,缺了向用户要;补齐的信息补录在「本通知书引用下列对比文件」清单后面(发送版)。裸认定的公知常识(未引用任何资料)不用管,不问用户。
- 首次提交=纯原文:新建会话的第一条消息直接发材料原文(审查意见通知书、交底书、文件初稿等),不加任何提示词——点铁智能体会自主处理。例外仅一处:撰写类任务按 3a-前 问到的「权利要求撰写约束」可随材料内联。提示词只在续聊轮次出现。
- 产物一律落当前工作目录,不写桌面:PDF→MD、意见陈述书、权利要求替换页、对话记录、材料包、query/建议文本,全部默认落在当前工作目录(即 WorkBuddy 工作空间),不要写在材料所在目录(材料常在桌面)。需要另存时显式给
--output/--log。给用户交付时用present_files指向工作空间里的文件,不要指桌面。只有用户明确要求才写桌面。 - 智能体要补件时的取材分工:智能体回复要求补充权利要求书/说明书/对比文件原文时,按材料类型分流,平台自身补不了这些文件,由宿主补齐后再以补充轮发回:
- 本申请申请文件(权利要求书/说明书):优先用 patseek 技能按申请号检索公开文本(
bool "AN=(申请号去点)"命中后patent <公开号> --no-enrichment导出 claims/description)。公开文本与最新修改文本不一致时(如审查意见针对的是修改文本),在补充包开头注明差异,并请用户用案卷提交件核对;patseek 查不到(未公开、库缺失)再向用户要,不得凭通知书引述反推文件原文。 - 对比文件是文献(论文/书籍/标准):平台无法补充——向用户要原文,或由宿主联网检索开放获取原文;取到后摘录与审查意见认定相关的关键段落(逐句抄录,不改写),并逐句与原文核对(下载官方 PDF 比对字符串)后再入包。核对中发现的「原文记载与通知书认定不一致」单独列差异表,供答复引用。
- 对比文件是专利:走 patseek 按 PID 取公开文本。
- 本申请申请文件(权利要求书/说明书):优先用 patseek 技能按申请号检索公开文本(
证据规矩(第 13 条)不变:查不到就写「未检索到」,不得编造。
- 自动模式的授权边界:自动化档位为 auto 时,用户在首次安装(或切换开关)时的一次性选择覆盖逐轮的「三选一菜单」与「逐条扣分确认」——
--credit-ack写「自动模式已授权(扣N)」即可发送;但这只免掉偏好类选择,不免掉信息缺口类闸门:OA 缺号、扫描件、须实测数据、文献类补件、余额不足,碰到照旧停下来问(见 0.0A 节)。自动模式下更要如实记账:每轮扣分、平台计费结果、停在哪个闸门,最后一次性汇报,不得隐瞒。
1. 环境准备(每次会话首次执行)
先定位技能目录,再定位 Python。推荐写法(find_skill_dir.ps1 只按脚本自身位置反推技能根目录,不含任何用户名或安装路径):
# $SKILL = 本技能所在目录(即 SKILL.md 所在处)
# 把 <本技能基目录> 换成你实际看到的技能路径,一行即可,不需要写死
$SKILL = & "<本技能基目录>scriptsfind_skill_dir.ps1"
$PY = & "$SKILLscriptsfind_python.ps1"如果会话的工作目录就是技能根目录(含 SKILL.md),也可用相对路径:
if (-not (Test-Path ".SKILL.md")) { throw "cwd 不是技能根目录,请改用上面的 find_skill_dir.ps1" }
$SKILL = (Get-Location).Path
$PY = & "$SKILLscriptsfind_python.ps1"便捷入口(等价于
$PY agent_client.py ...,自动找 Python 并强制 UTF-8 输出):
& "$SKILLrun.ps1" status
& $PY -c "import requests, playwright; print('deps ok')"
# 检查 PDF 转换依赖(PyMuPDF)
& $PY -c "import importlib.util as u; print('pymupdf:', u.find_spec('fitz') is not None)"- 依赖:
requests、playwright(浏览器用系统 Google Chrome / Microsoft Edge,无需下载 Chromium)。 - 登录默认可见浏览器窗口:登录是唯一涉浏览器的步骤,默认在可见的谷歌浏览器窗口里完成;token 过期时
login命令会自动处理。要改回后台无头:命令加--headless(放在子命令前,如agent_client.py --headless login --force),或设环境变量IPAGENT_HEADED=0。可见模式下优先channel="chrome"、headless=False;自动填表失败或遇验证码时脚本最多等 10 分钟,由用户在窗口里手动完成。 - 若
playwright缺失:& $PY -m pip install playwright requests pymupdf。 - 若 Edge 也不可用:
& $PY -m playwright install chromium。 - Windows 执行策略:若报"无法加载脚本,因为在此系统上禁止运行脚本",先执行
Set-ExecutionPolicy -Scope Process Bypass -Force(只影响当前进程),或用powershell -NoProfile -ExecutionPolicy Bypass -File ... 调用。
- 截图权限提示(必做):登录流程失败时会自动截图存到
state/login_failed.png 供排查。宿主 agent(如 WorkBuddy)在首次触发截图时,会向用户弹出"是否允许截取屏幕"的权限确认框——截图前必须先告知用户:「接下来登录若失败,会自动截一张浏览器窗口图用于排查(存到本机 state/ 目录,不外传),系统弹出权限确认时请选择本次会话允许」。用户同意后再走会触发截图的流程;弹框出现时提醒用户选「本次会话允许」,不要选「拒绝」,否则排查图拿不到。
账号凭据放在技能根目录 .env(不随技能分发,首次使用请复制 .env.example 并填入真实的手机号 / 密码):
IPAGENT_BASE_URL=http://62.234.167.52:8888
IPAGENT_PHONE=你的手机号
IPAGENT_PASSWORD=你的密码.env 缺失时向用户询问手机号 / 密码,写入后再继续;不要在回复正文里回显密码。
2. 标准流程(7 个阶段 + 证据补充分支)
以下命令中的 $PY / $SKILL 同上一节,主客户端即 "$SKILLscriptsagent_client.py"。每轮发送前都要先打印决策菜单(menu),再按用户点选构造 query。
阶段 1 · 登录 + 盘点(必须最先做)
& $PY "$SKILLscriptsagent_client.py" status输出:站点、账号、积分余额、网页智能体列表(ID / 名称 / 分类 / 单价)。
- token 自动缓存到
state/session.json,失效时脚本会自动重新登录; - 登录失败(出现短信/滑块验证)→ 提示用户先在本机浏览器手动登录一次,或改用
login --force观察state/login_failed.png。
把这四项汇报给用户:账号、积分余额、可用智能体清单、本次推荐。本次及后续都走后台 API 模式(见 0.0 节):部分任务不进网页端历史会话,复核以本地《对话记录.md》为准。
阶段 2 · 本地 PDF → Markdown + 任务类型判定
& $PY "$SKILLscriptspdf_to_md.py" "<用户上传的.pdf>" --json转换引擎(默认 builtin:内置 PyMuPDF,只取文本层;电子版 PDF、docx、txt、md 都走这条,零依赖、秒出)。
- 输出
markdown_path(默认落在当前工作目录,文件名与 PDF 同名.md;不写 PDF 所在目录——材料常在桌面,中间产物不污染桌面)、engine、task_classification(候选任务类型 + 推荐智能体 + 命中关键词); - 扫描件(内置引擎报「几乎没有文本层」):不要自己想办法,停下来问用户,见阶段 2.1;
- 超长文档加
--max-bytes 200000截断并告知用户。
阶段 2.1 · 扫描件怎么办(二选一)
内置引擎只认文本层,碰到扫描件(无文本层/文本层乱码)时,先把两条路摆给用户选,不要自己拍板:
这份是扫描件,内置转换取不到文字。两个办法:
1)你自己转码(推荐)——用任意 OCR 工具导出 .md / .docx,或导出带文本层的 PDF 再发我,准确率最高;
2)我来看图转录——我把每页渲成图片逐页读。不用装任何东西,但会有误差:手写、印章、公式、跨页表格容易错,数字和编号必须你最后核对一遍。
你选哪个?
用户选 1:等他给新文件,重跑 pdf_to_md.py 即可,不进下面的视觉路线。
用户选 2(已当面确认知晓误差风险):
# 页面 → PNG(默认 200dpi、长边封顶 2400px、单次最多 40 页)
& $PY "$SKILLscriptspdf_to_images.py" "<扫描件.pdf>" --json
& $PY "$SKILLscriptspdf_to_images.py" "<扫描件.pdf>" --pages 1-10 --dpi 300 # 小字密排分批读
# 逐张读图转录(宿主能力),按页序拼成 Markdown 落盘- 图片材料(jpg/png/截图)直接传路径给
pdf_to_images.py,脚本原样透传,不重复编码; - 大页面(A3/A0 幅面扫描件)靠
--max-side自动降采样,否则单张十几 MB,既慢又糊; - 页数上限:一次别超过 40 页,超了就
--pages分批,读完一批落盘再读下一批; - 精度预期:印刷体中文足够;手写、印章、公式、跨页表格会有误,转录后必须人工比对关键数字(申请号、公开号、日期、数值范围);
- 转录稿的落盘位置与
pdf_to_md.py一致(当前工作目录),文件名沿用<原名>.md,下游步骤无差别; - 这条路线不产生表格结构还原与公式 LaTeX,遇到表格就用 Markdown 表格重排,遇到公式用纯文本写并标注「原式以图片为准」。
交付时必须再讲一次误差:转录稿首页顶部加一行标注——> 本稿由图片视觉转录生成,未经 OCR 引擎校验;申请号、公开号、日期、数值范围等关键字段请以原件为准。 并在阶段 7 汇报里点明哪几处不确定(模糊字、被印章压住的字、表格跨页处)。不许把转录稿说成"已转换完成"就交差。
阶段 2.5 · 审查意见/驳回决定发送前检查与补录(OA 类材料必做)
材料是审查意见通知书/驳回决定/复审通知书时,转换完先跑检查:
& $PY "$SKILLscriptsoa_check.py" check "<审查意见.md>"检查四件事,缺了就向用户要,不给不发:
| 检查项 | 缺了向用户要什么 |
|---|---|
| 本申请申请号 | 申请号(如 2023101234567) |
| 对比文件的文献身份 | 专利给公开号(CN/US/EP…+数字+字母),论文/书籍给题名与出处 |
| 审查员引用了论文/公知常识资料(书名《…》、证据N、参见文献)但未附具 | 该资料原文或完整出处(题名/刊名/年卷期页) |
| 「引用下列对比文件」锚点行 | 不向用户要:只决定 patch 的补录位置 |
⚠️ 裸认定的公知常识不用管:审查意见只写「属于公知常识/惯用手段」而没有引用任何资料的,不要求补充、不问用户——脚本会把它归入「裸认定」,只在报告里给一行提示。
补录位置:把用户给的申请号与对比文件公开号补在原文「本通知书引用下列对比文件」清单的后面,生成 <原名>-发送版.md,发给智能体的是发送版:
# 1) 用户补齐后写 info.json(label 兼容「对比文件1 / D1 / 1」)
# {"application_number": "2023101234567",
# "citations": [{"label": "对比文件1", "number": "US7123456B2", "date": "2006年10月17日"}]}
& $PY "$SKILLscriptsoa_check.py" patch "<审查意见.md>" --info info.json- 只补缺,不改已有号(原文已带公开号的条目原样保留);patch 后自动复查并报告剩余缺口;
- 用户给不了的公开号/出处不得编造:要么如实缺失直接发原文并告知用户后果,要么等补到再发。
阶段 3 · 给用户提供智能体选项(闸门,必须等确认)
自动模式:档位为 auto 时,3a 与 3b 都跳过——智能体直接用本地判定的推荐项(判定不出唯一推荐才停下来问),每轮不再跑 menu 点选,续聊轮固定
--round-choice plain发「继续」;但发送仍须带--credit-ack "自动模式已授权(扣N)"(发送确认规则不豁免,见 0.0A 节与核心原则 18)。
3a-前 · 撰写类任务先问清权利要求约束。 当任务类型判定为「专利撰写(需先判定领域)」(即准备调用 专利撰写-生化/软通/机械)且本次要产出权利要求书时,提交材料之前必须先用 ask_user_question 问清用户对权利要求的具体要求,问不到不许发。必问项与推荐默认值:
| 必问项 | 推荐默认值 | 说明 |
|---|---|---|
| 权利要求数量 | 10 项左右 | 独权 1–2 项 + 从权按层次展开;用户给了数量就照办 |
| 权利要求 1 的字数限制 | 不限 | 常见口径:不限 / ≤300 字 / ≤500 字;限制越紧,前序特征越要精简 |
| 是否允许使用公式 | 不用 | 化学领域倾向用组分含量范围(质量分数)代替公式;机械/电学可按需开 |
| 是否提供范例 | 若用户手头有以往案件的范本,请其粘贴或给路径 | 有范例时以范例的行文风格、布局、引用方式为准 |
把用户答复整理成一段「权利要求撰写约束」,内联进首次提交的 query(放在材料正文之前),例如:
本次权利要求撰写约束:共 10 项权利要求;权利要求 1 不超过 300 字;不使用公式,
组成用质量分数表示;行文风格参照下方范例。
同一案件的多轮续聊不重复问(约束已在会话上下文里),除非用户主动更改要求。
自动模式:档位为 auto 时本步跳过提问,直接用推荐默认值(10 项左右、权 1 不限字数、不用公式、无范例)整理成「权利要求撰写约束」内联进首次提交,见 0.0A 节。
3a. 选智能体。 用 ask_user_question 把候选列成选项,推荐项放第一位并标注 (推荐),选项文案包含智能体名称与消耗积分,例如:
材料识别为「OA 答复(审查意见通知书、对比文件命中 12 次)」,请选择智能体:
- 答复智能体-专业版(扣 20 积分)(推荐)
- 答复智能体-普惠版(扣 10 积分)
- 答复-模拟审查员(扣 10 积分)
- 其它(我在网页清单里点名)
3b. 选执行方式(本轮 3 选 1,不可跳过)。 智能体定下来后、真正发送前,跑一次决策菜单:
& $PY "$SKILLscriptsagent_client.py" menu --subagent "<ID>" # 首次提交
& $PY "$SKILLscriptsagent_client.py" menu --subagent "<ID>" --round # 续聊轮次菜单会给出本条扣分与三个方向,用 ask_user_question 原样交给用户点选(推荐项放第一位并标注 (推荐)):
| 选项 | 含义 | 你要做的事 |
|---|---|---|
| 1. 继续 | 不带任何额外信息/提示,原样让智能体接着干 | query 就写原任务(首次)或极简指令(续聊),不加任何补充;带 --round-choice plain |
| 2. 可以……(带建议继续) | 结合上下文给出你的具体建议后再发 | 先写出你的建议文本给用户过目,同意后写进 --suggestion-file <文件>,--query 只放本轮主指令,并带 --round-choice suggest |
| 3. 跳过某个阶段(省积分) | 点明跳过哪一段/哪一轮,少做无用功 | 在 query 里明确写出"跳过 X,直接做 Y",带 --round-choice skip,并说明这样省的是后续轮次的积分 |
--round-choice 会写进《对话记录.md》的「本轮决策」一栏,方便复盘哪一轮带了建议、哪一轮砍了阶段;脚本也会校验这三者的一致性(suggest 必须配非空建议文件;plain/skip 不许夹带建议文件)。
若上一轮回复里被识别出证据需求(阶段 5.5),菜单照旧只给 1/2/3,但在选项 2 的文案里可以注明"把已收集的证据一起发";
用户点 2 且本轮内容确为证据包时,用
--round-choice evidence提交,记录里标「证据补充轮」。
三个选项都要写明本轮扣多少积分(选项 1、3 与 2 同价;选项 3 省的是后续轮次,不是本轮)。选项 2 的建议由你生成、由用户拍板;不要自己替用户选 2,也不要把建议直接发出去。
默认推荐项:本菜单的排序固定为 1 → 2 → 3,并把「1. 继续(零补充)」置顶标注 (推荐)。选项 2「带建议继续」只有在用户明确要求带建议时才推荐,不得由 agent 自行置顶推荐——避免把 agent 的额外指令默认塞进发送内容。用户点名要带建议时,才把选项 2 提到第一位。
若用户明确说"别问了,直接发",才可跳过 3b,但仍须完成阶段 4 的扣分提醒。
若这次是继续之前的任务,同时把「找回的历史会话」作为额外选项列出(见阶段 4.5)。用户确认前不得发起调用;若余额 < 所选智能体单价,改为先提示充值。
⚠️ 发消息=扣分:本步骤的选项必须写明扣多少分,并说明"确认后即向智能体发送消息并扣分"。
用户选定智能体只代表同意"用哪个",真正发送前若还有多轮追问,每一轮都要再次提醒扣分(见阶段 4)。
阶段 4 · 提交材料并调用智能体
提交只走后台 API 模式:
agent_client.py invoke直连接口(见 0.0 节),不用每次再问。
⚠️ 发送前必须提醒扣分(不可跳过):执行
invoke之前,先跑一次menu(或quote)拿到权威数字,再把提醒原样告诉用户并取得同意:
& $PY "$SKILLscriptsagent_client.py" quote --subagent "<ID>"它输出本条消息调用哪个智能体、扣 N 积分、当前余额 M、发送后约剩 M−N,以及标准提醒话术。
用户同意后,把该确认写进
--credit-ack才允许发送:--credit-ack "已告知用户并获同意(扣20)"
invoke一旦执行即真实发送、按平台计费规则可能扣分,没有"试发"与"撤回"。逐轮追问、答"确认"、纠错重发、让智能体补充说明——每一条都按单价再扣一次。
自动模式:档位为 auto 时,用户首次安装选自动模式即为一次性授权,
不再逐条提醒确认,
--credit-ack写「自动模式已授权(扣N)」即可发送;但余额低于单价仍必须停下来,硬闸门见 0.0A 节。
⚠️ 首次提交=纯原文,不加提示词:新建会话的第一条消息
(审查意见通知书、交底书、申请文件初稿等)直接发材料原文,不要加任何提示词、
任务说明、输出要求或"请基于以上材料完成××"之类的引导句——点铁智能体会自主处理。
这意味着首次提交不写
--query,只用--task-md <材料> --include-content(query 为空时脚本允许仅凭 task-md 发送)。例外只有一个:撰写类任务按 3a-前 问到的「权利要求撰写约束」
需要内联时,把约束放在材料正文之前一并发(这是用户要的约束,不是 agent 的提示词)。
提示词、建议、引导只在续聊轮次(用户点了选项 2/3 或证据补充轮)才出现。
选项 1「继续」(不带任何额外信息,注意本命令里没有 --suggestion-file):
& $PY "$SKILLscriptsagent_client.py" invoke `
--subagent "答复智能体-专业版" `
--task-md "<同目录>.md" `
--include-content `
--task-type "OA答复" `
--session "示例案件-2026000000001" `
--round-choice plain `
--credit-ack "已告知用户并获同意(扣20)" `
--progress选项 2「可以……(带建议继续)」:先把建议写成文件(内容给用户看过),再带 --suggestion-file:
# 1) 把你的建议写进文件(用户已过目同意)
# 例如 建议.txt:可以顺手把创造性论述补成三步:区别特征 → 技术启示 → 预期效果
& $PY "$SKILLscriptsagent_client.py" invoke `
--subagent "答复智能体-专业版" `
--session "示例案件-2026000000001" `
--query "继续上次的答复。" `
--suggestion-file "D:work建议.txt" `
--round-choice suggest `
--credit-ack "已告知用户并获同意(扣20)"--suggestion-file为空文件或纯空白会被拒绝发送(exit 14)——选项 2 必须真有建议内容;--round-choice suggest与--suggestion-file必须成对出现,脚本会强制校验;- 走选项 2 时不要再叠加
--query-file,脚本以建议文件为准,避免两份指令打架。
选项 3「跳过某个阶段」:本质上就是把"跳过什么"写清楚,少让智能体做无用功:
& $PY "$SKILLscriptsagent_client.py" invoke `
--subagent "答复智能体-专业版" `
--session "示例案件-2026000000001" `
--query "跳过背景技术复述与现有技术罗列,直接从权利要求修改对照开始,最后只给修改后的权利要求 1-5。" `
--round-choice skip `
--credit-ack "已告知用户并获同意(扣20)"--include-content:把 Markdown 正文内联进 query(首次提交建议开启,见核心原则 5);- 脚本会先上传 md 留痕,再发起
/invoke流式请求; --session <名字>:给这次任务起个本地会话名。同名会话会自动续接远端会话,这是多轮追问最省事的方式。
还有第四种形态:证据补充轮(
--round-choice evidence)。它不是菜单上的新选项,而是"智能体要证据、我们把材料收齐了"这一轮的具体形态,做法见阶段 5.5。
阶段 4.5 · 找回历史对话并在原会话里继续(重要)
调用前先判断:这是新任务还是旧任务的延续?延续时按下列顺序处理。
第 1 步 · 检索历史
# 列最近的远端会话
& $PY "$SKILLscriptsagent_client.py" history --limit 20
# 按关键词检索(中文自动切词,标题即首条消息全文,可全文匹配)
& $PY "$SKILLscriptsagent_client.py" history --hint "示例案件 审查意见通知书" --limit 5
# 看本地会话索引(每次 invoke 自动登记,含 task_id / 远端会话 ID)
& $PY "$SKILLscriptsagent_client.py" sessions把命中的会话用 ask_user_question 交给用户确认要续哪一个,不要自己猜。
第 2 步 · 在原会话里继续
# 方式 A:已知远端会话 ID,直接续接(--round-choice 按用户点选填写 plain/suggest/skip)
& $PY "$SKILLscriptsagent_client.py" invoke --subagent "<ID>" `
--continue "<远端会话ID>" --query "接着上次,再补充……" --round-choice suggest `
--suggestion-file "D:work建议.txt" `
--credit-ack "已告知用户并获同意(扣20)"
# 方式 B:只给关键词,脚本自己找回最佳匹配(原样继续,不带额外信息)
& $PY "$SKILLscriptsagent_client.py" invoke --subagent "<ID>" `
--continue "示例案件 审查意见通知书" --query "继续上次的答复。" --round-choice plain `
--credit-ack "已告知用户并获同意(扣20)"
# 方式 C:复用本地会话名(同名自动续接,适合连续多轮;跳过重复劳动)
& $PY "$SKILLscriptsagent_client.py" invoke --subagent "<ID>" `
--session "示例案件-2026000000001" --query "跳过已有结论复述,只输出修改后的权利要求 1-5。" --round-choice skip `
--credit-ack "已告知用户并获同意(扣20)"上面三种方式都要先跑
menu --round并把扣分与三个选项交给用户点选,--credit-ack的括号里写实际单价。续聊轮次的选项 2 通常是主力:把你的补充建议写成文件走
--suggestion-file --round-choice suggest;选项 3 则用来砍掉重复劳动(例如"别复述已有结论,只输出修改后的权利要求"),并带
--round-choice skip。
续接时脚本会在请求体里带上 conversation_id,远端自己保留上下文,无需重发历史(已实测:上一轮的口令能被准确回忆)。
⚠️ 续聊也扣分:同一会话不等于免费。上面三种方式每执行一次,都按该智能体单价(如专业版 20 积分)再扣一次。
因此"接着上次追问""把第 3 点展开""确认,继续"这类看似轻量的消息,发送前同样要提醒用户扣分并取得同意。
第 3 步 · 找不到远端会话时的兜底
脚本会按此顺序自动降级,并在 stderr/交付说明里标注用了哪种:
- 本地索引里该会话的
task_id→ 拉远端任务快照(最完整,含当时的 query 与完整 output); - 本地《对话记录.md》→ 抽出历史轮次的
提交内容+智能体回复拼成上下文; - 都没有 → 按全新任务提交,并明确告诉用户「本次是新建会话,没有继承历史」。
前两种都会把历史以「已完成的上下文」形式前置注入 query,再附上本次新要求(用 --rebuild-context 可强制走这条路,用 --no-continue 可完全禁用续聊)。
提示:续聊时不要再加
--include-content,否则会把整份材料重复发一遍、冲淡追问意图,也浪费 token。仅当任务确实要重新提交材料时才加。
阶段 5 · 等待输出直到停止(关键)
脚本已实现「等到 done/error 事件才返回」,不要用固定 sleep 猜测结束。判定规则:
- SSE
event: done→ 正常完成,取output字段为最终全文; event: error→ 记录错误并保留已收到的部分内容;- 连接中断 → 用
task_id走恢复接口查快照,见references/api-reference.md的「断线恢复」; - 超过
--timeout(默认 1800 秒)→ 中止并向用户报告,已抓取片段仍然写入记录。
阶段 5.5 · 证据需求识别与联网补充(智能体说"请补充证据"时)
触发:invoke 结束时终端打印「🔎 这一轮提出了证据需求……」,或用户说「它要我补证据」「帮我给它找几篇文献/专利」。识别结果同时写进回复的 evidence_needs 字段与对话记录的「证据需求」一行。
四步闭环:前三步在本地与宿主联网检索完成,第四步把证据包发回智能体(发送按计费规则扣分)。
第 1 步 · 识别与分流(本地)
& $PY "$SKILLscriptsevidence.py" plan --from-log "<案件目录>对话记录-<会话名>.md"
& $PY "$SKILLscriptsevidence.py" detect --from-text "<智能体回复.md>" --json # 只要清单plan 会把每条需求归到三类之一,并给出中文检索式:
| route | 含义 | 处理方式 |
|---|---|---|
search | 专利文献、教科书/综述/标准、法条与审查指南、公知常识 | 联网检索 |
clarify | 只说要"材料",没说类型 | 结合上下文判断;判断不了带着原文问用户,不要臆断 |
experiment | 实测/实验数据、性能测试、对比实验 | 不检索,列清单向用户或研发要(不得用检索结果或推演顶替) |
把三类清单一起给用户看,由他决定这轮补哪几条——有的数据没到齐,可以先跳过,等齐了一起发,省一轮积分。
第 2 步 · 联网检索(宿主能力,evidence.py 本身不联网)
按 plan 给的检索式,用宿主的联网检索能力逐条查(WorkBuddy 里是 WebSearch / WebFetch,其它宿主用等价的联网工具)。检索渠道、检索式与核验要点见 references/evidence-search.md(中文专利/期刊/标准/法条各查哪里、怎么核公开号、摘录怎么写)。硬规矩:
- 来源优先级(按用户偏好):中国专利文献 > 中文期刊与综述 > 国家标准/行业标准 > 法律法规、审查指南、司法解释 > 官方典型案例与办事指南。外文期刊不作首选,确无中文替代时在
note里写明理由。 - 每条证据必须落到原文:给出可访问 URL,或可核验的文献号/标准号/条文号。
- 摘录(
quote)只抄原文关键句,不改写、不概括成结论。 - 同一事实只留一份文献(
build会自动去重并提示)。 - 检索不到就进
gaps,写「未检索到」及原因。不得用相近主题的文献冒充,不得编造文献号、卷期、页码、条文。 - 一轮控制在 10 条以内:材料太长会吃掉智能体的输出预算,也冲淡重点。
第 3 步 · 写清单、校验、打包
把检索结果写成 evidence.json(完整字段说明见 scripts/evidence.py 顶部注释),最小示例:
{
"case": "案件名", "round": 1,
"subagent": "答复智能体-专业版", "session": "案件名",
"needs": [{"id": "E1", "type": "patent", "topic": "双层共挤"}],
"items": [{"id": "E1-1", "need_id": "E1", "type": "中国专利文献",
"title": "一种多层复合管及其共挤成型方法",
"source": "CN112345678A,公开日 2021-02-09",
"url": "https://patents.google.com/patent/CN112345678A/zh",
"quote": "权利要求 1:内层与外层通过双层共挤一次成型……",
"relevance": "可用于说明该手段在本领域已有应用"}],
"gaps": [{"need_id": "E3", "status": "未检索到",
"reason": "导热系数为本申请实测数据,公开文献无法替代",
"action": "请发明人提供实施例 3 的实测值与测试标准"}]
}& $PY "$SKILLscriptsevidence.py" check --manifest evidence.json
& $PY "$SKILLscriptsevidence.py" pack --manifest evidence.json --out-dir "<案件目录>"check卡三类硬伤:缺出处(无 URL 又无编号)、占位符(「待补充」「TODO」「[文献」)、重复出处;外文期刊、箭头符号、need_id对不上给提示。pack产出证据补充材料-第N轮.md与query-证据补充-第N轮.txt,并打印下一步可用的invoke命令。- 需要归档成 Word 时,
md_to_docx.py 证据补充材料-第1轮.md即可。
第 4 步 · 续聊发回(照旧事前提醒扣分)
& $PY "$SKILLscriptsagent_client.py" menu --subagent "<ID>" --round
& $PY "$SKILLscriptsagent_client.py" invoke --subagent "<ID>" `
--session "<案件名>" `
--task-md "<案件目录>证据补充材料-第1轮.md" --include-content `
--query-file "<案件目录>query-证据补充-第1轮.txt" `
--round-choice evidence `
--credit-ack "已告知用户并获同意(扣20)" --progress--round-choice evidence记作「证据补充轮」:它是本轮决策的一种具体形态,菜单仍是 1/2/3,只是本轮的内容是已收集的证据。- 该分支有两个硬性要求:必须有
--task-md证据包;必须--session或--continue续在同一会话——不续接的话智能体看不到自己要过什么,这一轮就是白扣分。 - 第 2、3 轮补充把
round递增,文件名与记录里的轮次保持一致,便于复盘。
省积分提示:「须实测/人工提供」的几条先攒着,等用户把数据给你,与检索到的文献一次性发;不要为了一条数据单开一轮。
证据包发出去后,智能体通常会逐条说明引用方式;若它仍说某条证据不足,多半是摘录不够或主题偏,回到第 2 步补检索,不要重复发同一份包。
阶段 6 · 抓取结果写入「对话记录.md」
由 invoke 自动完成。落盘规则(按会话名拆分):显式 --log 优先;否则给了 --session 写 <当前工作目录>对话记录-<会话名>.md(Windows 非法字符自动替换);没给 session 才回退 <当前工作目录>对话记录.md。落盘目录固定为当前工作目录(WorkBuddy 工作空间),不写材料所在目录——材料常在桌面,中间产物不往桌面堆。同一案件务必固定用同一个 --session 名(建议用案件号),这样多轮追问落同一文件,续聊重建上下文也不会捞错案件。每条记录包含:时间、智能体 ID/名称、消耗积分、任务类型、提交文件、上传对象、耗时、task_id、远端会话 ID、会话续接标记、本轮决策(选项 1/2/3 与建议文件,或「证据补充轮」)、上下文来源、平台计费(只记平台明示的结果:charged=平台提示已扣费/not_billable=平台提示不计费/不确定——以网页账单为准)、证据需求(本轮回复里识别到的条数与分流结果,无则不写)、query 全文、智能体回复全文。思考段(<think>)不写入——站点侧已把思考过程加密为 T 重复串,写进记录只是污染文件;需要原始全文(含 think 段)时用 invoke --out 单独留档。同时把 远端会话 ID / task_id / 本地会话名 登记进 state/conversations.json,供下次续聊检索。
阶段 6.5 · 交付件转 DOCX(按需)
网页智能体返回的是 Markdown。用户要 Word 交付件时,用本地转换脚本产出 .docx:
专利申请文件(权利要求书+说明书+摘要)不走本脚本——提交件有固定版式(页眉分节、黑体四号、字符加宽、页眉横线),一律用阶段 6.6 的
build_patent_docx.py。md_to_docx.py只用于意见陈述书、核稿意见、证据包、分析报告这类普通交付件。
& $PY "$SKILLscriptsmd_to_docx.py" "D:work意见陈述书.md" --json
& $PY "$SKILLscriptsmd_to_docx.py" "D:work意见陈述书.md" -o "D:work交付" --title "意见陈述书"- 纯 Python 实现,不依赖 pandoc,只需
python-docx(缺则pip install python-docx); - 已适配网页智能体的输出样式:中文排版(宋体正文/黑体标题,经
w:eastAsia正确设置)、表格、围栏代码块、有序/无序列表、引用块、水平线; - 默认删除
<details>折叠的模型思考段,避免污染 Word 文档;要保留加--keep-thinking; - 不给
-o时,.docx落在当前工作目录(与输入 md 同名的.docx),不写 md 所在目录; -o给目录时自动取<输入名>.docx;输入为.md/.markdown/.txt,输出必须是.docx;- BOM 已处理;空文件/纯空行文件会明确报错(exit 2),不产出空文档。
阶段 6.6 · 专利申请文件排版(提交件)
专利撰写类任务的交付件不是普通 Word 稿,必须按下列版式排版。这套规则参照用户提供的实际提交件(「一种聚合物锂离子电池的正极的制备方法-权利要求书修改替换页.docx」)提取,此后所有申请文件提交件一律照此执行,不要再用 md_to_docx.py 的通用版式。
# 三部件申请文件(说明书摘要 + 权利要求书 + 说明书)
& $PY "$SKILLscriptsbuild_patent_docx.py" "D:work申请文件.md" "D:work申请文件.docx"
# 单部件文书(意见陈述书、核稿意见等需要页眉的),走 --single
& $PY "$SKILLscriptsbuild_patent_docx.py" "D:work意见陈述书.md" --single --header "意见陈述书"版式参数(脚本里是常量,改一处全篇生效):
| 项 | 值 |
|---|---|
| 页面 | A4;上 2.5/下 1.5/左 2.5/右 1.5 cm |
| 页眉距顶/页脚距底 | 1.4 cm / 0.5 cm |
| 文档网格 | lines,linePitch=312(约每页 46 行) |
| 页眉文字 | 黑体、四号(14pt)、居中、字符间距加宽 4.5pt(w:spacing=90)、下加 1pt 单线(w:pBdr bottom,sz=8) |
| 正文 | 宋体、四号(14pt)、首行缩进 2 字符、单倍行距(对齐网格) |
| 说明书发明名称 | 黑体 16pt 居中 |
| 小节标题(技术领域/背景技术/发明内容/具体实施方式/实施例N/对比例N) | 黑体 14pt 顶格 |
| 表标题 | 黑体 12pt 居中 |
| 表格 | 全框线、表头浅灰底、单元格 10pt 居中 |
| 分节 | 三个部件各自成节,节间「下一页」分节符,is_linked_to_previous=False 页眉互不链接 |
部件顺序固定:说明书摘要(第一节)→ 权利要求书 → 说明书。部件名称不进正文首行,只作该节页眉;说明书的发明名称仍居中放在正文第一行。
Markdown 约定(写稿时就要按这个格式落 md,脚本才能认):
| 写法 | 含义 |
|---|---|
# 说明书摘要 / # 权利要求书 / # 说明书 | 部件分界,标题本身变成页眉,不渲染进正文 |
@@TITLE@@一种…及其制备方法 | 说明书首行的发明名称 |
## 技术领域 | 小节标题 |
实施例1 / 对比例1(独占一行) | 自动识别为小节标题 |
表1 实施例和对比例的检测结果 | 表标题(居中) |
| a | b | | 表格 |
注意事项:
- 目标
.docx被 Word/WPS 打开时报PermissionError,脚本自动改存<名>_new.docx并 exit 3——不要反复硬覆盖,如实告知用户「文件正在打开,已另存」,等其关闭后再合并成一个文件名; - 摘要与权利要求 1 的字数上限(≤300 字)在写作阶段就要卡住,排版阶段改不动内容;
- 部件顺序、节数、页眉文字任何一处不对,都是排版事故,交付前必查:
len(doc.sections)==3、每节header.is_linked_to_previous is False、页眉文字与节序对应。
阶段 7 · 汇报
给用户一段简短交付说明:用了哪个智能体、是新建还是续接哪条历史会话、本次计费结果、回复摘要(3–5 条要点)、对话记录.md 路径、以及需要人工复核的点。原始输出另存可用 --out <file>。
计费结果的汇报口径:
| 平台返回 | 怎么汇报 |
|---|---|
billing_state=charged(含金额) | 「平台提示已扣费(charged,N 积分)」 |
billing_state=charged(金额未返回) | 「平台提示已扣费,金额未返回——以网页账单为准」 |
billing_state=not_billable | 「平台提示本次不计费(原因)」 |
| ack 失败 / 状态异常 / 不确定 | 只报当前积分总数(脚本已自动附带),说「扣分不确定,以网页账单为准」,不下"已扣/未扣"的结论,不用余额差额反推 |
回复内容的转述方式由输出模式决定(首次安装时已让用户选过):
| 输出模式 | 阶段 7 怎么转述 |
|---|---|
| 详细模式(detail) | 把智能体回复的完整正文(<think> 思考段已剔除)原样转述给用户,长也不截断;摘要可加在前面,但不能代替全文 |
| 简略模式(brief) | 只给 3–5 条摘要与关键结论,不贴长篇全文;用户要看全文时指到《对话记录.md》或临时展开 |
若本轮回复里提了证据需求,汇报末尾必须多给一段,不要埋在回复摘要里:
- 需求条数与编号(E1、E2……),按「可检索 / 待明确 / 须实测」分组;
- 你打算怎么补(哪几条联网检索、哪几条要向研发要数据);
- 问用户一句「现在补,还是先把这轮结果定下来再补」——补证据是一轮新消息,照样扣分。
若本轮曾漏提醒扣分,如实向用户说明,不要掩盖;后续每次发送前补齐提醒。
自动模式:档位为 auto 时不逐轮汇报,任务结束(完成或中断)时按 0.0A 的「自动模式一轮的汇报口径」一次性汇报;撰写任务完成后必须接着走 0.0A 的固定动作——转 docx → present_files → 核稿三选一(本地核稿 skill/点铁核稿智能体/暂不核稿)→ 核稿意见出来后问是否按意见修改。
3. 常用变体
| 场景 | 做法 |
|---|---|
| 首次使用 / 环境异常自检 | run.ps1 doctor(逐项检查 Python/依赖/浏览器/凭据/登录态并给修复命令) |
| OA/驳回发送前查号 | oa_check.py check <审查意见.md>(查申请号/对比文件公开号/引用的公知常识资料;裸认定不问) |
| 补号生成发送版 | oa_check.py patch <审查意见.md> --info info.json → <原名>-发送版.md(补录在「引用下列对比文件」后面) |
| 首次提交(纯原文) | invoke --subagent X --task-md "<材料>.md" --include-content(不写 –query,材料原文即全部内容) |
| 发布前安全打包 | scriptspackage_for_release.ps1(自动剔除 .env/state/ 并扫描凭据,产出可上传 zip) |
| 发送(API 模式) | invoke --subagent X --task-md "<材料>.md" --include-content(直连接口,快、不开浏览器聊天;部分任务不进网页历史,复核看《对话记录.md》) |
| 用户直接点名智能体 | 跳过阶段 3a 的提问,直接用 --subagent "<ID>" 调用;但 3b 的执行方式仍要问 |
| 只想知道余额/清单 | 只跑阶段 1 的 status |
| 查看/切换输出模式 | mode(查看)、mode --set detail(详细:回复全文转述给用户)、mode --set brief(简略:只给摘要);首次安装必选一次 |
| 查看/切换自动化档位 | auto(查看)、auto --set on(自动模式:静默交互、默认发「继续」、撰写产出自动转 docx、核稿与修改提示)、auto --set off(手动模式:每轮确认);首次安装必选一次 |
| 自动模式撰写闭环 | 档位为 auto 时直接把材料丢进来即可:自动选智能体 → 纯原文首提 → 循环发「继续」/证据补充轮 → 产出转 docx → 核稿三选一(本地核稿 skill/点铁核稿智能体/暂不核稿)→ 核稿后问是否按意见修改;硬闸门(缺号/扫描件/实测数据/文献补件/余额不足)照旧停下问 |
| 发送前查本条扣多少分 | quote --subagent "<ID>"(输出标准提醒话术) |
| 积分不足 / 用户想要邀请链接 | referral → 用户的专属邀请链接 + 邀请码 + 现成推广文案;分享给朋友注册双方各得 100 积分 |
| 发送前给用户 3 选 1 | menu --subagent "<ID>"(续聊加 --round) |
| 按建议发送(选项 2) | 建议写入文件后 invoke ... --suggestion-file "D:work建议.txt" --round-choice suggest(空文件会被拒发) |
| 跳过某阶段发送(选项 3) | invoke ... --query "跳过 X,直接做 Y" --round-choice skip,并在汇报里说明省了哪一轮 |
| 原样继续(选项 1) | invoke ... --query "…" --round-choice plain(不加任何补充信息或建议文件) |
| 智能体要证据,先识别需求 | evidence.py plan --from-log "<案件目录>对话记录-<会话名>.md"(给出分流与检索式) |
| 只要需求清单(JSON) | evidence.py detect --from-log "…" --json(或 --from-text 回复.md) |
| 校验证据清单 | evidence.py check --manifest evidence.json(缺出处/占位符/重复/外文偏好) |
| 生成证据包 + 发送命令 | evidence.py pack --manifest evidence.json --out-dir "<案件目录>" |
| 证据补充轮发回 | invoke --session "<案件名>" --task-md "<…>证据补充材料-第1轮.md" --include-content --query-file "<…>query-证据补充-第1轮.txt" --round-choice evidence(必须续同一会话) |
| 证据包转 Word 归档 | md_to_docx.py 证据补充材料-第1轮.md |
| 扫描件 | 先问用户二选一:自己转码 / 视觉转录(pdf_to_images.py <扫描件.pdf> --json,逐张读图,须提示误差);页多时 --pages 1-10 分批,见阶段 2.1 |
| 申请文件(三部件)排版 | build_patent_docx.py 申请文件.md 申请文件.docx(页眉分节、黑体四号加宽 4.5pt、带横线,见阶段 6.6;不要用 md_to_docx) |
| 单部件文书加页眉 | build_patent_docx.py 意见陈述书.md --single --header "意见陈述书" |
| 纯指令、无文件 | invoke --subagent X --query "……" --credit-ack "已告知用户并获同意(扣N)" |
| 已有 md,仅补判定 | agent_client.py classify <file.md> |
| 指定扫描件 PDF | 问用户「自己转码」还是「视觉转录」,后者 pdf_to_images.py 渲图后逐页读,并提示误差 |
| 交付件转 Word | md_to_docx.py x.md(可加 --title、-o <目录>) |
| 找回历史对话 | agent_client.py history --hint "关键词" |
| 继续历史对话 | invoke --continue "<会话ID或关键词>" --query "……" --credit-ack "…(扣N)" |
| 连续多轮同一任务 | invoke --session "<名字>" --query "……" --credit-ack "…(扣N)"(同名自动续接) |
| 强制新建会话 | 加 --no-continue |
| 强制重建上下文 | 加 --rebuild-context |
| 只想上传不调用 | 单独 POST /api/files/upload,见 references/api-reference.md |
4. 故障处置
提示:脚本会把进度信息写到 stderr。在 Windows PowerShell 5.1 下,把原生命令的输出
用
| Select-Object之类的管道接走时,stderr 会被包装成NativeCommandError显示出来,这不代表执行失败——判定成功与否请看 stdout 内容与退出码(0 成功,>0 为错误码)。
拿不准环境哪里出问题时,先跑
run.ps1 doctor(逐项给出修复命令)。
| 现象 | 处置 |
|---|---|
| 刚装好,不确定环境是否就绪 | run.ps1 doctor 一键自检(Python/依赖/浏览器/凭据/登录态/清单) |
invoke 提示缺少扣费确认 | 说明还没向用户确认扣分。先跑 menu --subagent <ID>(或 quote)打印提醒与选项,告知用户并获同意后,带 --credit-ack "已告知用户并获同意(扣N)" 重发 |
invoke 报 exit 14 / 建议文件为空 | 选项 2 必须真有建议内容。要么把建议写完整,要么说明用户选的是选项 1「继续」并去掉 --suggestion-file |
| 用户抱怨"没给我选择" | 说明跳过了阶段 3b。补跑 menu --round 并让用户在继续/带建议/跳过阶段中重新点选;本轮已发的消息如实说明已扣分 |
| 忘了提醒扣分就发了消息 | 立即如实告知用户"本条已发送并扣 N 积分",不要隐瞒;本轮不得再发任何追问,等用户指示 |
未配置账号密码 | 写 .env 或设 IPAGENT_PHONE / IPAGENT_PASSWORD 环境变量 |
| 登录页出现验证码/滑块 | 提示用户手动登录一次;或改用有头模式观察 state/login_failed.png |
| 宿主弹出截图权限确认框 | 正常现象:登录失败排查需要截图。提醒用户选「本次会话允许」;用户拒绝时跳过截图,改为把浏览器里的报错文字原样抄给用户排查 |
| doctor 报「输出模式 ❌ 未设置」 | 首次安装漏选了:用 ask_user_question 让用户在详细/简略之间点选,再 mode --set detail/brief;不设置不影响发送,但阶段 7 只能按简略模式汇报 |
| doctor 报「自动化档位 ❌ 未设置」 | 首次安装漏选了:用 ask_user_question 让用户在自动/手动之间点选(话术见阶段 0),再 auto --set on/off;不设置时默认按手动模式走 |
| 自动模式中途停下来问用户 | 正常:碰到硬闸门(OA 缺号/扫描件/须实测/文献补件/余额不足/空转/轮次上限)就该停,见 0.0A;补齐信息后继续自动循环,不要把「停」当成故障修 |
| 自动模式循环空转(复读/无新产出) | 连续 2 轮无实质进展即停止,转手动模式汇报已花积分与停点;不要继续发「继续」烧分 |
| 401 | token 过期,agent_client.py login --force |
| 智能体回"文件缺失/请补充" | 说明未收到正文:确认 --include-content 已开启,并把 query 摘要给用户核对 |
| OA 材料缺申请号/对比文件公开号 | 阶段 2.5 的 oa_check.py check 会拦:按 ask_user 话术向用户要;补齐后 patch 生成发送版;给不了的不编造,如实缺失就直接发原文并告知后果 |
| 智能体要申请文件/对比文件原文(补件) | 核心原则 17:申请文件→patseek 按申请号取公开文本;对比文件是专利→patseek 按 PID;对比文件是文献→平台补不了,向用户要或宿主联网检索开放获取原文,摘录逐句核对后入包;核对发现的「原文与通知书认定不一致」列差异表 |
| 审查意见说"属于公知常识"没引资料 | 不用管:裸认定不要求补充、不问用户;若后续答复需要,走阶段 5.5 检索补强 |
| 审查意见引用了《××手册》等资料但未附 | 要求用户提供该资料或完整出处(题名/刊名/年卷期页);给不了就如实缺失发送,答复阶段再检索 |
| 智能体要补件(申请文件/对比文件原文) | 按核心原则 17 分流:申请文件与专利对比文件走 patseek;文献类对比文件平台补不了——向用户要或宿主联网检索开放获取原文,摘录须逐句核对原文后入包 |
| 智能体要证据/文献/数据 | 走阶段 5.5:evidence.py plan --from-log 识别需求,联网检索后 pack,用 --round-choice evidence 续聊发回。不要空口回"已补充" |
evidence.py check/build 报占位符或缺出处 | 证据正文里不能留「待补充/TODO/[文献」,也不能只有文献名没有编号;补齐真实出处后再 pack |
evidence.py check 报「与某条出处重复」 | 同一事实只留一份文献,删掉重复条目(build 会只保留首条,但仍建议在清单里就删干净) |
| 证据提示「疑似外文期刊」 | 用户偏好中文证据。换中文期刊/综述/中国专利;确无中文替代时在 note 里写明理由 |
--round-choice evidence 报 exit 19 | 证据补充轮必须续同一会话:补 --session <案件名> 或 --continue <会话ID>;确属新任务才加 --no-continue |
| 智能体要的是实测数据 | 不检索、不推演、不拿别家数据顶替:列清单向用户/研发要,拿到后与文献一起发 |
智能体回一串 T 或复读 query | 远端对该模型的中文解码异常,属站点侧问题;如实报告,把原始输出留档,建议用户改用其它智能体或人工在网页复核 |
| 回复为空 + 耗时≈300 秒 | 命中站点单任务超时上限。用 task_id 查快照确认状态;把任务拆小、缩短材料、或换单价档位后重试 |
| 扫描件 PDF 转换失败 | 内置引擎只认文本层。按阶段 2.1 让用户二选一:自行转码 / 视觉转录(后者须提示误差) |
md_to_docx.py 报缺少 python-docx | & $PY -m pip install python-docx。本技能其余脚本不依赖它,装了才用转 Word |
md_to_docx.py 报输入文件为空 | 检查输入是否只有空行/BOM。脚本已按 BOM 判空,若仍报错说明文件确实无正文 |
| 续聊接错了会话 | 关键词命中的是别的会话。改用精确 --continue <远端会话ID>,或 history --hint 先给用户确认 |
| 用户说"继续上次"但检索不到 | 远端列表不含 HTTP 直连建立的会话属正常;走 --rebuild-context 并明确告诉用户上下文来自本地记录 |
| 积分不足 | 停止调用,告知差额;先跑 referral 把用户的专属邀请链接与推广文案发给用户——分享给朋友注册双方各得 100 积分;或在网页端「个人中心」充值 |
| SSE 中断 | 用 task_id 查恢复接口,详见 references/api-reference.md |
5. 边界
- 扫描件不做 OCR 引擎兜底:无文本层时由用户决定「自己转码」还是「视觉转录」,视觉转录只还原文字与阅读顺序,不保证表格结构与公式,且必须向用户声明可能存在误差。
- 视觉转录的关键字段(申请号、公开号、日期、数值)不得直接当作核对无误的事实使用,凡进入文书或结论前须人工比对原件。
- 不代替用户付款、充值、注册、修改账号资料。
- 不把
.env、state/session.json内容写入对话记录或对外输出。 - 续聊的上下文继承依赖站点侧会话记忆;重建上下文属于「再述一遍」,不等价于站点原生多轮,必要时应把关键结论在 query 里重申。
- 远端智能体的专业结论仅供辅助,最终稿件需人工复核。
- 联网检索由宿主完成,
evidence.py本身不联网、只做识别与格式把关;检索到的文献是否真实、可核验、与论点是否对得上,最终要人工复核——脚本只能卡「有没有出处、有没有占位符、是否重复」这类形式问题。 - 证据补充轮同属扣费消息:每轮照旧事前提醒扣分并取得同意。
- 查不到的证据如实写进
gaps,不要在证据包里留白、留待办,也不要用相近主题的文献凑数。