先分清这两个功能
插件里的两个功能互相独立。只想用「模拟输入」的话,后面所有关于 Key 和账号的内容都可以跳过。
| 功能 | 干什么 | 要配 API Key 吗 | 要联网 / 花钱吗 |
|---|---|---|---|
| 模拟输入 | 把输入框里的文本,一个字一个字敲进 PTA 的作答区 | 不需要 | 不联网,不花钱 |
| AI 助手 | 读题、写代码、本地编译跑样例、提交并读回判题结果 | 需要,自己申请一个 | 要联网,按模型用量计费 |
装上它
插件没有签名,所以每个浏览器的装法都不一样。按你实际用的浏览器选一栏,别混着来。
pta-assist-v1.0.zip 必须先解压。Chromium 系只认「解压后的文件夹」,直接选 zip 会报「无法加载清单」。找到下载入口
官网上点「PTA 助手」卡片就能进项目页,GitHub Release 页面在卡片里。



Assets。按你用的浏览器挑一个下载就行:Chrome / Edge / Brave / Vivaldi / Opera 下载 zip,Firefox / Zen / LibreWolf / Waterfox 下载 xpi。
解压,注意选对目录
Windows 上右键 →「全部解压缩」,macOS 双击会自动解出一个文件夹。解压后打开文件夹,你会看到下面这些东西:

manifest.json 和 background.js、content.js 在同一层。待会儿要选的就是这一层。解压目录/解压目录/manifest.json 这种套了两层的,请选里层那个。选到外层没有 manifest.json 的目录,浏览器只会报「无法加载清单」。
- 解压 zip(前面已经做完)。
- 打开扩展管理页:Chrome 是
chrome://extensions,Edge 是edge://extensions,Brave / Vivaldi / Opera 各有各的。 - 打开左下角的「开发者模式」/「开发人员模式」。
- 点「加载已解压的扩展程序」/「加载解压缩的扩展」,选中解压出来、里面有
manifest.json的那个文件夹。 - 装好后到拼图图标里找到「PTA 助手」,点图钉固定到工具栏。


manifest.json 的目录。
- 下载 Release 里的
.xpi文件,这一步不用解压。 - 地址栏打开
about:config,在搜索框里输入xpinstall.signatures.required,把它从true改成false。这一步是让 Firefox 允许装没签名的扩展。 - 把刚下载的
.xpi直接拖进 Firefox 窗口。 - 工具栏的拼图图标里找到「PTA 助手」,点图钉固定到工具栏。
about:debugging#/runtime/this-firefox,右上角点「临时载入附加组件…」,选刚下载的 .xpi 就行 —— 唯一的问题是关掉浏览器就没了,下次启动要再载一遍。功能一 · 模拟输入
这个功能不调模型、不需要 API Key、不联网。它只干一件事:把输入框里的文本,一个字一个字敲进 PTA 的作答区。
典型场景是:代码在别处写着(聊天记录、笔记、别的题目页),整段复制过来,再用「输入」送进作答区。手机上敲代码不方便时也常用。
三步
- 点工具栏上的插件图标,打开悬浮窗。
- 把要输的文本整段粘进下面的输入框(悬浮窗自己的输入框,不是 PTA 的作答区)。
- 点「输入」按钮。
输进去之前
12345- 1悬浮窗的输入框,先把代码粘到这里
- 2PTA 的作答区,此刻还是空的
- 3「输入」按钮 —— 把上面那段文本敲进作答区
- 4「发送」按钮 —— 这是 AI 功能,和「输入」不是一回事
- 5工具栏上的拼图图标,点它开关悬浮窗
输进去之后
1234- 1写入结果:先 focus 编辑器再逐字符派发事件,写完还会回读一遍确认写入的行数和目标一致
- 2作答区已经被填上了,行号和代码都在
- 3「输入」可以反复点,每次都用当前输入框的内容覆盖作答区
- 4输入框空了,所以「发送」是灰的
「输入」和「发送」的区别
| 按钮 | 文本去哪 | 要不要 API Key | 联网吗 |
|---|---|---|---|
| 输入 | 直接敲进 PTA 作答区 | 不需要 | 不联网 |
| 发送 | 发给模型,回答显示在悬浮窗里 | 需要 | 要联网 |
两个按钮挨在一起,但完全是两件事。用「输入」时别点成「发送」。
- 代码长的时候要等一会,它是逐字符敲的,过程中别去操作作答区。
- 每次点「输入」都是整段覆盖,会替换掉作答区里原有的内容。
- 输完看一眼「回读比对」那行,报「N 行与目标一致」才说明真的写进去了。
- 这个功能在哪个页面都能用,不限于题目页。
功能二 · AI 助手
这是插件的主功能。它能读题面、读写你的作答区、用内置的 C 编译器本地跑样例,还能替你提交并读回判题结果。用之前要先配一次 API Key。
先认识一下悬浮窗
12345678- 1标题栏。右边依次是「新会话」「设置」「关闭」
- 2开场提示,点工具栏图标可以随时开关这个窗
- 3输入框。
Enter发送,Shift + Enter换行 - 4「输入」—— 功能一,写入作答区
- 5「发送」—— 发给模型
- 6PTA 的语言选择,插件会跟着这里的设置走
- 7「提交本题作答」,插件替你提交时点的是它
- 8PTA 的作答区,插件能直接读它、也能覆写它
- 悬浮窗可以拖标题栏移动、拉右下角改大小,位置和尺寸会被记住。
- 双击标题栏或双击工具栏图标可以恢复默认位置和大小。
- 「新会话」会清空当前对话,但不会影响你作答区里的代码。
配置:先拿到 API Key
插件本身不带模型,得连一个模型服务。默认接的是硅基流动(SiliconFlow),接口是 OpenAI 兼容格式,所以换别的服务也可以,只要填对应的地址。
- 打开硅基流动官网,注册并登录。
- 进「账户管理 → API 密钥」,新建一个,描述随便填(比如
pta)。 - 密钥只在创建时完整显示,当场复制下来。
- 顺便去「模型广场」看一眼有哪些模型,把想用的模型 ID 复制下来。
- 回到插件的设置页,填 API Key,接口地址和模型一般已经有默认值,确认一下再保存。




填进插件里
123456- 1账号卡片,只用来显示插件当前登录的是谁
- 2API Key,粘贴刚才复制的密钥;右边的眼睛图标可以显示 / 隐藏
- 3接口地址,默认硅基流动,旁边就有个「教程」按钮
- 4插件自己给的教程入口,不会把你带去别的地方
- 5模型,填模型 ID,比如从模型广场复制的那个
- 6「保存」写进本地存储,「返回对话」回聊天窗
1234- 1API Key 输入框
- 2接口地址,和硅基流动默认的一致就不用改
- 3模型 ID
- 4密钥只存在浏览器本地的插件存储里,不会发到接口地址以外的任何地方
.../v1 之类的基础地址、「模型」换成它那边的模型 ID 就行,插件不用改。让它做一道题
打开题目页,开悬浮窗,输入问题,点「发送」。这一步之后就不用管了。
123- 1输入「帮我做题」
- 2点「发送」
- 3作答区现在是空的,等下会被自动填上
12345- 1顶栏实时显示这次会话花了多少 token(输入 / 输出分开算)
- 2「本地实测」:它用插件内置的 C 编译器把代码跑了,拿真实输出和样例比
- 3写入后的自动检查结论。这里它自己说明了那条「样例不一致」是误报
- 4它会先问你要不要提交,不会自己悄悄点
- 5作答区已经被写入了生成的代码
你回一句「好」,它就会提交,然后把结果带回来。
1234- 1
submit_answer:替你点了「提交本题作答」,并等判题结果 - 2
close_dialogs:把判题弹窗关掉,不给你留一堆弹窗 - 3提交结果,连题目、用时、得分一起汇报,最后还给了小结
- 4右侧是 PTA 自己的判题详情,每个测试点的用时和得分
接着追问和改代码
作答区里已经有代码了,直接开新会话问就行 —— 它能读到你作答区里的当前内容。
12- 1输入「代码有什么问题吗」
- 2右侧作答区里的现有代码,它读的就是这份
123- 1按「最关键」到「次要」排序的问题清单,每条都配了代码片段
- 2「↑ 回到顶部」,长对话里不用一直往下滑
- 3「停止」按钮,生成中可以随时打断
123- 1两个选项按钮:「改,写入作答区」/「先别改,只讲思路」。你来决定它动不动手
- 2不想等就点「停止」
- 3选「写入」之后,作答区会被更新
1234- 1三组自测的输入 / 实际输出,都是本地编译器真跑出来的
- 2哪条自动检查不可信、为什么,它会讲清楚,而不是让你猜
- 3「你说一声我再点提交」—— 提交这一步始终要你点头
- 4作答区已经同步成改好的版本
几个好用的问法
| 你想要的 | 可以这么问 |
|---|---|
| 只要思路,别直接给答案 | 「先讲思路,不要写代码」 |
| 把自己的代码改对 | 「看看我作答区里的代码有什么问题」 |
| 换个写法 | 「用另一种思路重写一遍」 |
| 查细节 | 「题目里那个边界条件是什么意思」 |
| 别乱动我的代码 | 「只讲思路,别写入作答区」 |
常见问题
按现象查,大部分问题在这里。
点图标没反应
两个常见原因:一是页面是在装插件之前打开的,刷新一下就行;二是 chrome:// 这类浏览器内部页面不允许注入,这是正常现象,换个普通网页试试。
工具栏上找不到图标
它默认不固定。点拼图图标,在列表里找到「PTA 助手」,点图钉。
加载扩展报「无法加载清单」
九成是选错目录了。要选里面直接有 manifest.json 的那一层。另外确认 zip 真的解压过了,直接选 zip 也会报这个。
「输入」点了没反应,作答区还是空的
先确认你在的是有作答区的页面(题目页),然后看悬浮窗里那条写入结果的提示。另外输入长代码时它要敲一会儿,别急着重复点。
「输入」把原有代码覆盖了
「输入」是整段覆盖,不是追加。要保留原代码就别用这个功能,直接在作答区里编辑。
发送之后报网络错误
三样挨个查:API Key 复制全了没(最常见是少了结尾几个字符)、接口地址对不对、账户里还有没有余额。
回答报模型不存在
「模型」那一栏填的是模型 ID,不是你在模型广场看到的展示名。回到模型详情页点标题旁的复制按钮重新取一次。
AI 功能完全用不了,但「输入」正常
这说明插件装好了、悬浮窗也能开,问题基本都在配置上:回去检查 API Key、接口地址、模型三项。
它报「样例不一致」,但代码看着没问题
这种情况偶发,原因多半是它抓样例时把题面里的非输入内容也喂进去了(题面里常有 [ out ] 这种占位)。让它自己解释,或者要求它用你给的输入单独跑一遍。
它不肯改我的代码
它在等你点选项。要么在那个选择框里点「改,写入作答区」,要么问的时候直接说「允许你修改作答区」。
用之前值得知道的几件事
都是实测下来的结论,不是免责声明模板。
API Key 会泄露吗
它存在浏览器本地的插件存储里,只在你点保存之后发给设置里那个接口地址。设置页底部的说明就是这么写的。
本地编译器要联网吗
不用。编译和运行都在插件里完成,不出网 —— 所以它能拿到真实的编译器报错文本,而不是模型猜出来的。
它会自己交卷吗
不会。提交这一步它一定会先问你,你回一句「好」才点。这是刻意留的。
生成的代码能直接交吗
别直接交。它给的正误结论是模型判断,平台判题才是真的。它自己也会因为自动检查误报而给你错的结论,所以提交前自己再核一遍。
和「模拟输入」有关系吗
没关系,这是两个独立功能。只用「输入」的话,插件不用配任何 Key,也不联网。