标签 prompt 下的文章


摘要

随着大模型在真实业务中的应用不断深入,单纯依赖模型参数内知识已难以满足需求。检索增强生成(RAG,Retrieval-Augmented Generation)成为连接大模型与外部知识的重要方式。
本文从 0 到 1 系统讲解 RAG 的核心原理、系统结构及落地步骤,帮助读者构建一个可用、可扩展的 RAG 检索增强系统,为智能体和企业级 AI 应用提供可靠基础。


目录

  • 一、什么是 RAG
  • 二、为什么需要 RAG
  • 三、RAG 系统核心架构
  • 四、从 0 到 1 搭建 RAG 系统
  • 五、一个典型 RAG 流程示例
  • 六、常见问题与优化经验
  • 七、总结
  • 参考文献

一、什么是 RAG

RAG(检索增强生成)是一种将信息检索与文本生成结合的技术框架。

简单理解:

RAG = 先检索资料,再让大模型基于资料生成答案

传统大模型的问题在于:

  • 知识存在时效性
  • 无法访问私有数据
  • 容易产生幻觉

RAG 的出现,本质上是为大模型接入“外部大脑”。


RAG 的基本流程

通常包括三步:

1️⃣ 从知识库中检索相关内容
2️⃣ 将检索结果作为上下文输入模型
3️⃣ 大模型基于上下文生成回答

这使得模型回答更可信、更可控。


二、为什么需要 RAG

在实际应用中,仅依赖大模型参数知识存在明显局限。


1. 解决知识时效性问题

大模型训练数据具有截止时间。
而 RAG 可以连接实时或持续更新的知识库。


2. 支持私有数据访问

企业数据、内部文档、业务资料无法进入模型训练。

RAG 可以:

  • 接入内部知识库
  • 保障数据安全
  • 提供定制化答案

3. 降低幻觉风险

当模型基于真实检索内容回答时:

  • 胡编概率显著下降
  • 可追溯性增强
  • 结果更可信

4. 成本可控

相比微调大模型:

  • RAG 成本更低
  • 维护更简单
  • 迭代更灵活

因此,RAG 已成为企业落地大模型的主流方案之一。


三、RAG 系统核心架构

一个标准 RAG 系统通常包含以下模块。


1. 文档处理模块

负责数据准备:

  • 文档清洗
  • 分段切分
  • 去噪处理

高质量数据是 RAG 效果的基础。


2. 向量化模块

将文本转换为向量表示:

  • 使用 Embedding 模型
  • 保留语义信息
  • 支持语义检索

这一步决定检索质量上限。


3. 向量数据库

用于存储和检索向量数据:

  • 支持相似度搜索
  • 高效索引
  • 可扩展存储

常见做法是使用专门的向量数据库。


4. 检索模块

根据用户问题:

  • 向量化查询
  • 找到最相关内容
  • 返回 Top-K 结果

这是 RAG 的“信息入口”。


5. 生成模块

将检索结果与问题一起输入大模型:

  • 构建 Prompt
  • 引导模型基于资料回答
  • 控制生成范围

生成阶段决定最终体验。


四、从 0 到 1 搭建 RAG 系统

下面给出一个通用落地路线。


第一步:确定应用场景

先明确目标:

  • 客服问答
  • 企业知识库
  • 文档助手
  • 智能搜索

场景不同,设计重点不同。


第二步:准备数据

数据来源可以包括:

  • PDF 文档
  • 网页资料
  • 内部知识库
  • 产品文档

建议优先保证数据质量,而非数量。


第三步:文本切分策略

常见方法:

  • 按段落切分
  • 固定长度切分
  • 语义切分

合理切分可显著提升检索效果。


第四步:生成向量并入库

流程包括:

  • 选择 Embedding 模型
  • 批量生成向量
  • 存入向量数据库

这是 RAG 的核心基础设施。


第五步:构建检索逻辑

关键参数包括:

  • Top-K 数量
  • 相似度阈值
  • 混合检索策略

需要通过测试不断调整。


第六步:设计 Prompt

常见模板:

  • 指定仅基于提供资料回答
  • 要求引用来源
  • 限制自由发挥

Prompt 设计直接影响稳定性。


五、一个典型 RAG 流程示例

以“企业知识问答”为例:

用户提问
   ↓
问题向量化
   ↓
向量数据库检索
   ↓
返回相关文档片段
   ↓
构建 Prompt
   ↓
大模型生成回答

这一流程已被广泛用于:

  • 企业知识助手
  • 客服机器人
  • 文档问答系统

六、常见问题与优化经验


1. 检索不准怎么办?

优先检查:

  • 文本切分是否合理
  • Embedding 模型是否匹配领域
  • 是否存在噪声数据

2. 幻觉仍然存在?

可能原因:

  • 检索内容相关度低
  • Prompt 约束不足
  • 返回文档过少

3. 如何进一步提升效果?

常见优化方向:

  • 重排序(Rerank)
  • 混合检索(关键词 + 向量)
  • 查询改写
  • 多轮检索

成熟系统往往结合多种优化手段。


七、总结

RAG 并不是让大模型变得更聪明,而是让大模型​获得可靠的信息来源​。

从 0 到 1 构建 RAG 系统,核心在于:

1️⃣ 高质量数据
2️⃣ 合理检索策略
3️⃣ 清晰 Prompt 约束

当这三点做到位,RAG 系统即可在真实业务中发挥稳定价值。

可以说:

RAG 是连接大模型与真实世界知识的重要桥梁。

参考文献

  1. 中国信息通信研究院:《生成式人工智能应用发展报告》
  2. 中国信通院人工智能研究中心:《大模型技术与产业发展白皮书》
  3. 百度智能云:《知识增强大模型技术实践》
  4. 阿里云研究中心:《大模型 RAG 应用架构实践》
  5. 腾讯云开发者社区:《基于向量检索的知识问答系统实践》
  6. CSDN 技术社区:《RAG 检索增强生成技术实战》

本来想着自己独立账号,自己充值会把事情理的顺一些,为了求稳,刚刚弄上中转,打算用着先玩玩,有些疑惑,想听听大家说法?
1.长期有自己账号使用,会不会更懂你(比如习惯,喜好,而不用三番四次纠正,比如不要为这个单独搞个函数)?
2.还是用着中转,每次都把 prompt 写得明明白白,每次都当你我是陌生人,最终目的都是完事,解决问题,不必知道你我?
3.接入自己独立账号,如果天天使用中文做提示,这个因素,会不会更容易招来封号?(还是用不用中文,这个根本不重要? 而更重要在于 IP 干净,充值干净?)

在 AI Agent 的工程实践中,一个反直觉但被反复验证的结论正在形成:第一版越“笨”,项目越容易成功

从 0 到 1 阶段的目标,并不是构建一个“会思考”的系统,而是构建一个可被工程化控制的系统。在这一阶段,刻意限制智能体的能力边界,反而是长期演进的必要前提。

一、第一版的核心目标不是智能,而是可控

智能体本质上是概率系统,而工程系统追求的是确定性。

如果在初始阶段就引入复杂推理、自主规划、多轮反馈,系统将迅速演变为一个无法解释、无法定位问题、无法稳定复现结果的黑盒

“做得很笨”的本质,是优先完成三件事:

  • 决策路径可见
  • 状态变化可追踪
  • 失败结果可复现

这是所有后续“变聪明”的前提。

二、逻辑透明化:用显式结构替代隐式推理

在第一版中,应当刻意避免让大模型承担“全链路思考”。

更可靠的做法是:

  • 使用固定 Workflow,而非开放式任务描述
  • 使用条件分支,而非自由联想
  • 使用判断题和枚举值,而非长文本推理

当逻辑被显式结构化后,模型只是执行者,而不是裁判者。

一旦输出异常,开发者可以明确判断问题来源: 是输入错误、规则缺失,还是模型执行失败。

这比“看不懂模型为什么这么想”要重要得多。

三、确定性交付:稳定比灵感更有价值

在工程场景中,80% 的可预测输出,远胜 20% 的惊艳发挥

“笨”的智能体通常具备这些特征:

  • 输出格式强约束(如固定 Schema)
  • 数据流向单一,几乎无回环
  • 失败即中断,而不是“尝试自救”

这种设计虽然不“聪明”,但非常稳定。

当输入相同时,输出波动被严格限制在业务可接受范围内,这才是系统可上线、可扩展的前提。

四、观测成本越低,迭代速度越快

复杂系统最昂贵的成本不是算力,而是理解成本

第一版如果过度复杂:

  • 日志量指数级增长
  • 中间状态难以复盘
  • 优化方向无法聚焦

而一个“笨”的系统,执行路径往往是线性的、分段的、可回放的。

开发者可以清楚看到:

  • 每一步输入了什么
  • 产生了什么中间结果
  • 是在哪一环节失败

这为后续的精准优化预留了认知空间。

五、从“笨系统”到“聪明系统”的正确路径

成熟的演进路径通常是:

  1. 原子能力 100% 成功率
  2. 严格 SOP 覆盖主要场景
  3. 在确定性失效点,引入有限智能
  4. 用真实运行数据反向优化 Prompt 或策略

而不是反过来。

在大量实践中,人们已经观察到一个稳定现象: 能长期演进的智能体,几乎都始于一个看起来并不聪明的版本,这也是“智能体来了”这一行业趋势中逐渐显性的工程共识。

结语

从 0 到 1 阶段,“笨”不是妥协,而是策略。

它意味着克制、可控与可复用。 也意味着系统有机会走得足够远,而不是止步于演示。

 近日,一篇关于 Claude 提示词(Prompt)的整理帖在海外技术社区迅速走红。发帖者是一位活跃在 X(原 Twitter)的国外网友,他声称自己系统性地收集了近一段时间在 Reddit、X 以及研究型社区中“被反复验证有效”的 Claude Prompt,并将其汇总成一份清单公开发布。

 

在帖子中,这位网友用了一种颇具传播性的说法来形容这些 Prompt 的效果——“可以在 60 秒内完成原本需要 10 小时的工作量”。尽管这一表述明显带有夸张成分,但并不妨碍该帖迅速在技术圈、研究圈和写作社区中被大量转发和收藏。

 

与常见的“帮我写方案”“帮我改文案”类 Prompt 不同,这份清单中的 12 条提示(原作者提到共 13 条提示,但有一条是重复的,故最终为 12 条提示)几乎没有一条是直接要求模型“产出结果”的。相反,它们更多聚焦于质疑、拆解、对照和反思——这些原本属于研究人员、审稿人或资深从业者的认知工作。

 

InfoQ 翻译整理了该网友提出的 12 条 Prompt,供参考:

 

1、“矛盾查找器”:非常适合用于论文、报告或长篇文档。

 

“列出所有内部矛盾、未解决的矛盾,或与证据不完全相符的论断。”

 

它能揭露人类忽略的事情。

 

2、“审阅者 #2”提示

 

“像持怀疑态度的同行评审员那样进行批判性评价。”

 

要严厉批评。重点关注方法论缺陷、缺失的控制因素和过于自信的论断。残酷。必要。

 

3、“将此内容转化为论文”提示

 

当你倾倒原始笔记、链接或不成熟的想法时,可以使用此功能。

 

“请将以下材料整理成一份结构化的研究简报。内容包括:关键论点、证据、假设、反驳论点和未决问题。”

 

标记任何薄弱环节或缺失之处。

 

4、“倒着解释”的技巧:非常适合检验真正的理解程度。

 

先解释这个结论,然后一步一步地倒推到假设条件。

 

如果逻辑崩溃,你会立刻发现。

 

5、“像科学家一样进行比较”提示,不是功能列表,而是真正的对比。

 

比较这两种方法:理论基础、失效模式、可扩展性和现实世界的限制。”

 

6、“什么会破坏它?”提示:用于预测。

 

描述一下这种方法会造成灾难性失败的场景。不是极端情况,而是实际存在的故障模式

 

大多数人从来不会问这个问题。

 

7、“是什么改变了我的想法?”通常用于结尾

 

“分析了所有这些之后,什么应该改变我目前的看法?”

 

这才是真正的研究人员的思考方式。

 

8、 “一页纸思维模型”

 

“把整个主题浓缩成一个我能记住的单一思维模型。”

 

如果文件无法压缩,说明你还没有拥有它。

 

9、“跨域翻译”提示

 

“请用一个完全不同领域的类比来解释这个概念。”

 

这不仅能带来理解,更能带来洞察力。

 

10、“窃取结构”技巧

 

这条往往被低估了。

 

通常用于分析文章的结构、流程和论证模式。在撰写优秀论文和文章时,请将其用于写作。

 

11、“像科学家一样进行比较”提示

 

不是功能列表,而是真正的对比。

 

比较这两种方法:理论基础、失效模式、可扩展性和现实世界的限制。

 

12、“假设压力测试”

 

这条信息直接来自研究论坛。

 

“列出该论点所依赖的每一项假设。现在告诉我哪些最脆弱,以及原因。

最近 vibe 了十几个 skill ,都是脚本/工具型的,有稳定的输入输出,比如输入一个图片,输出图片中的文字信息这种,后面可能会更多 skill ,也会有非常多的组合。

我平时需要经常调用这些组合出来的 tasks (其实就是 prompt 形式的自然语言输入),但现在最大的问题是,给出需求,AI 有时会跳过使用某个 skill 工具。我试了不少办法,似乎没有 100% 稳定的。

导语

随着 DevSecOps 的不断推进,应用安全已被广泛纳入SDLC的各个阶段。然而,在代码扫描、依赖分析、漏洞检测等能力逐步成熟的同时,一个长期存在却难以解决的问题始终横亘在安全工程实践中:安全工具“能发现问题”,却难以判断问题是否真实、是否可利用、是否值得优先处理。大量规则驱动的扫描结果不仅带来了高误报率,也持续消耗着研发与安全团队的精力。

近年来随着大语言模型(LLM)的快速发展,为这一困境提供了新的可能。不同于传统规则或静态特征匹配,LLM 在语义理解、上下文推理和条件组合分析方面展现出独特优势,使其具备参与安全“判断层”的潜力。将 LLM 引入 SDLC,不再只是生成代码或辅助文档,而是尝试参与到安全结果的理解、验证与决策之中。

本文结合实际应用安全建设经验,围绕 LLM 在 SDLC 中的落地实践展开,重点探讨其在硬编码、SCA、漏洞挖掘等场景中的应用方式与工程化思路。

SDLC 应用安全流程

image-20251217111844592

SDLC名词解释

  • SAST(静态应用安全测试)通过对源代码或编译产物进行静态分析,在不运行系统的情况下发现潜在的安全缺陷,如 SQL 注入、XSS、不安全函数调用和硬编码敏感信息等,适合在开发阶段提前发现问题。
  • SCA(软件成分分析)聚焦于项目中使用的第三方开源组件,识别依赖库及其传递依赖中已知的安全漏洞、风险版本和许可证问题,帮助团队降低因外部组件引入的安全风险。
  • DAST(动态应用安全测试)在系统运行状态下,从攻击者视角对应用进行测试,通过捕获流量包修改参数重放,模拟真实攻击行为验证系统是否存在可被实际利用的漏洞,如注入攻击、未授权访问等
  • 硬编码(Hard Coding),是指在程序中直接把固定的值写死在源码里,而不是通过配置文件、环境变量等方式获取,比如下面这些情况,都属于硬编码:用户名、密码、token或加密密钥等

为什么我们需要SDLC?

产品一句话需求 → 开发自己理解 → 按照个人习惯去开发 → 功能上线后出现大量漏洞 → 被外部利用造成损失

而SDLC要做的就是把漏洞扼杀于摇篮之中,而不是靠后期凭经验渗透测试发现。

但目前传统的SDLC存在大量告警/误报,推送大量工单给研发会导致业务间摩擦度增加,因此理想情况是把真正需要修复的工单交给研发处理

硬编码规则下引入AI判断,减少误报

问题背景:目前硬编码扫描是根据规则的正则匹配,存在一定的局限性和误报

image-20251217171931177

整体流程

结合硬编码规则 + AI 判断保留高召回,同时降低误报率

image-20251230150538531

硬编码规则先行

使用固定规则(正则、逻辑判断)先筛掉明显非风险项,让 AI 只处理模糊/不确定案例

AI 判断做辅助

只对硬编码规则未覆盖、可疑的候选项输出风险判断,输出结果可附置信度或分类标签

置信度 + 白名单控制

AI 输出带置信度,低于阈值直接忽略,对常见合法值、默认值设置白名单

提示词 promot

通过定位文件的位置,结合上下文判断实际风险等级,把AI分析结果输出

你是一个资深应用安全专家,精通代码安全、凭证泄露、真实攻击利用分析。

现在给你一个【疑似硬编码凭证】的扫描结果,请你进行【可利用性研判】。

输入信息如下(JSON):
%s

请严格按以下维度进行分析:
1. 该硬编码是否为真实敏感凭证
2. 是否存在被外部攻击者利用的可能
3. 是否依赖运行环境
4. 泄露后的安全影响
5. 修复建议

请以 JSON 格式输出分析结果

模型输入字段释义

字段 释义
match 匹配到的硬编码内容(部分脱敏显示)
rule key类型
path 硬编码所在的完整文件路径
branch 分支
code 上下5行代码

增加输出长度,避免截断

"extra_body": map[string]interface{}{
            "think_mode":        true,
            "max_output_tokens": 1024, 

实现效果

image-20251217195004928

如果是走正常的流程,secret_value会被 generic-api-key规则名字标记严重程度为medium

image-20251218143042933

开启AI分析选项后,通过定位文件的位置,结合上下文交给ai分析,AI判断实际危害程度为低

在代码中发现硬编码的敏感信息'DEMO_SECRET',其值为'secret_value'。根据规则'generic-api-key',这可能是一个API密钥或其他类型的敏感凭证。该变量位于'E:\SDLC平台\backend\uploads\demo.py_scan\demo.txt'文件中,并且注释表明它看起来像一个Key,但无实际用途。由于这是一个测试环境中的示例代码,风险相对较低。

image-20251218142746712

掩码输出硬编码片段

image.png

代码中存在:

const apiKey = "sk_live_9f83a0b7..."

AI分析后会直接原样输出,给出完整的佐证片段,这样是不符合数据安全合规要求的,就会产生 二次扩散风险

正确掩码后的做法,AI 只需知道这是一个硬编码密钥

const apiKey = "*MASKED_SECRET*"

实现效果

通过 AI 研判对硬编码、潜在风险及非生产路径问题进行自动识别与筛选,各产品待修复量平均下降约52.8%

image.png

价值体现:在保证安全覆盖率的前提下,AI 自动化研判显著提升效率,降低人工排查压力,推动安全研判进入智能化阶段

  • AI 判断为 False:AI 判定为误报,可直接关闭
  • AI 判断为 True 但 NonLive:问题真实但不在生产路径,可降低风险等级处理
  • AI 研判后待修复:确认真实且影响生产,需进入修复流程

SCA可利用性与真实风险判断

从官方文档 https://react.dev/blog/2025/12/03/critical-security-vulnerability-in-react-server-components 描述可看到,涉及版本都需要更新到对应补丁

image-20251223145325095

但从甲方安全运营的角度会存在以下这些问题:

1.大版本的更新会存在项目兼容性问题,不好推进

2.涉及仓库数量较多,如果全部同时进行整改将会是极大的工作量

如果我们深入分析后会发现,并不是在版本范围内就存在漏洞,还需要额外的条件满足才能利用

客户端请求 Server Action
  ↓
执行 Server Action (接收用户输入)
  ↓
react-server-dom-webpack 序列化响应
  ↓
【漏洞点】反序列化时未正确验证输入
  ↓
恶意 payload 被执行 → RCE

必要利用条件

条件 是否必须 说明
App Router ✅ 必须 提供 RSC / Flight 机制
Server Actions ✅ 必须 提供反序列化入口
用户可控输入 ✅ 必须 构造恶意 payload

整体流程

  • 核心思路:证明SCA漏洞代码是否被业务代码真实调用,如果不可达那么这个SCA漏洞在该仓库就不可利用
  • 调用链路:业务代码中是否存在外部可控输入→ 漏洞组件危险函数的真实可达路径

image-20251221173914270

HTTP 请求 (scaHandler) -- 输入CVE编号
    ↓
CVE 分析 (runSCACVEAnalysis)
    ├─ 步骤 2.1: Google 搜索受影响版本
    ├─ 步骤 2.2: Qwen 识别依赖组件搜索官网信息
    ├─ 步骤 2.3: 搜索引擎寻找对应PoC
    ├─ 步骤 2.4: Qwen 提取结构化信息
    └─ 步骤 2.5: Claude 最终安全分析
    ↓
仓库分析(可选)
    ├─ 方法一: 依赖分析 (analyzeRepositoryVulnerability)
    └─ 方法二: 锚点分析 (analyzeRepositoryWithAnchor)

google搜索引擎调用

调用google进行联网搜索,局限性 key限制每天100个

https://console.cloud.google.com/apis/credentials

凭证-创建凭证

image-20251217162129486

启用custom search api

image-20251217161840875

https://programmablesearchengine.google.com/controlpanel/create

在这个地方可以定义调用的搜索引擎

image-20251217162013410

优化阶段1:多个源进行信息整合导致出错

初步阶段测试发现,Qwen去重整理逻辑导致结果出现缺失

image-20251223150956095

因此后续直接选用官方源,保证结果数据的准确性

官方情报来源

序号 来源机构 描述 链接
1 美国国家漏洞数据库 (NVD) 官方 CVE 条目,包含漏洞详情、受影响版本、CWE、CVSS 等信息 https://nvd.nist.gov
2 CVE 官方记录 (CVE.org) 官方 CVE ID 登记与记录 https://www.cve.org
3 React 官方安全公告 (React Team / Meta) 官方漏洞公告及修复版本说明 https://react.dev
4 加拿大网络安全中心 (Cyber Centre) 官方安全公告、漏洞说明 https://www.cyber.gc.ca
5 Google Cloud 官方博客 官方补丁指引及响应措施 https://cloud.google.com

优化阶段2:未关联间接受影响组件导致结果不准

在漏洞受影响的范围很多都只提及了react组件,但是有其他间接依赖组件如next也会受到影响,因此在爬取网站内容需要把这部分信息也整理进来

虽然应用使用了受影响的 React 版本(19.0.0)并启用了 React Server Components 功能,但 React Server Components 的漏洞版本范围是 19.0.0-19.2.0,而当前仓库使用的是 react-server-dom-webpack 19.0.0。关键问题是该仓库使用的是 Next.js 16.0.6,而 CVE-2025-55182 主要影响独立的 React Server Components 实现,Next.js 有自己的 Server Components 实现机制,不直接受此 CVE 影响。条件1不满足,因此漏洞不可利用

image-20251223151142011

优化阶段3:规范性提示词输入

这里有三个关键点:

将「CVE 知识」作为输入,而不是让 LLM 自行理解

  • 不依赖模型对 CVE 的主观理解或记忆
  • 由安全侧明确提供:漏洞成因和可利用条件链(Exploit Preconditions)
  • 避免模型自由发挥导致的误报或信息污染

在目标代码仓库中,验证漏洞可利用条件是否成立

  • 不做漏洞解读
  • 不做风险定级臆断
  • 不基于版本号直接下结论

将每个 CVE 拆解为一组必须同时满足的利用条件

  • 逐条在仓库中进行验证:任一关键条件不满足 → 漏洞不可达,不构成真实风险
  • 代码结构、依赖使用情况及配置与对外暴露面

最终提示词

你是一名资深应用安全分析师。请基于我提供的 SCA 扫描结果,对发现的第三方组件漏洞进行【汇总型安全分析输出】,输出需包含以下部分(使用简体中文):

1. 漏洞基本信息
   - 受影响组件 / 编程语言 / 版本
   - CVE 编号
   - 漏洞类型

2. 漏洞原理说明
   - 从安全分析视角解释漏洞成因
   - 重点描述漏洞触发机制(如反序列化、解析、路由处理等)
   - 对未公开的内部实现需明确说明"细节未披露",避免推测

3. 影响评估
   - 可造成的安全影响(如拒绝服务、信息泄露等)
   - 对业务连续性、系统稳定性和可用性的潜在影响

4. 攻击前置条件
   - 环境条件(框架、运行模式、功能开启情况等)
   - 依赖条件(受影响的第三方组件)
   - 攻击者权限要求(是否需要认证、是否可远程触发)

5. 涉及模块或组件范围
   - 受影响的框架模块或依赖包名称
   - 若具体函数或代码位置未公开,需明确说明
   - **必须列出所有依赖关系**:如果漏洞影响底层组件,必须说明哪些上层框架/库可能间接受影响,包括具体的组件名称和受影响版本范围

6. 可利用性与 EXP 情况说明
   - 是否存在已公开的 PoC / EXP
   - EXP 的公开来源类型(如 GitHub、安全研究博客等)
   - 利用复杂度与稳定性评估(概念验证 / 可重复利用 / 条件受限)
   - 输出poc/exp

7. 修复与缓解建议
   - 官方推荐的修复方式(安全版本升级 / 官方补丁)
   - 可选的临时缓解措施(如限制接口访问、WAF、防护策略等)

8. 验证与复现说明(高层级)
   - 给出验证思路而非攻击步骤
   - 描述在存在漏洞情况下的典型现象(如服务挂起、资源异常)

9. 信息来源说明
   - 明确标注信息来源类型(NVD、官方博客、安全公告、PoC 仓库等)
   - 不编造或推测来源
   - **重要**:references 字段必须包含完整的 URL(以 http:// 或 https:// 开头),例如:
     - 正确:https://github.com/msanft/CVE-2025-55182
     - 错误:github: msanft/CVE-2025-55182 或 github.com/msanft/CVE-2025-55182
     - 如果搜索结果中有链接,必须提取完整的 URL 格式

输出风格要求:
- 安全评估报告风格
- 用词克制、客观、中立
- 不渲染攻击效果,不放大风险,不自主推测
- 优先使用官方来源信息,避免"未确认"或"可疑"的评估

漏洞分析示例1:CVE-2025-55182

受影响的系统情况

app-router-vulnerable/app/api/action/route.ts

'use server'

export async function testAction(formData: FormData) {
  const data = Object.fromEntries(formData)
  return {
    message: 'Server action executed',
    data: data
  }
}

使用 App Router 并启用了 Server Actions 的应用系统,受CVE-2025-55182影响

  • ✅ 使用 app/ 目录(App Router 结构)
  • ✅ 接收 FormData 作为参数
  • ✅ 使用 react-server-dom-webpack 进行序列化/反序列化

image-20251223144630570

不受影响的系统情况

  • ❌使用 pages/ 目录(Pages Router 结构)
  • ❌不使用 Server Actions
  • ❌不依赖 React Flight Protocol 序列化

使用 Pages Router 的 Next.js 应用,即使引入同样处于受影响范围内的版本,也不受 CVE-2025-55184 漏洞影响,ai分析结果符合预期

image-20251222110315768

漏洞分析示例2:CVE-2021-44228

受影响的系统情况

环境情况:

  • Log4j 版本:2.14.1 (漏洞影响范围内)⚠️
  • JNDI:✅ 允许
  • 网络:✅ 可访问 LDAP / RMI

综上所述,满足漏洞触发条件,因此AI研判该仓库受影响

image-20251222145542970

不受影响的系统情况

环境情况:

  • Log4j 版本:2.14.1(漏洞影响范围内)⚠️
  • JNDI:❌ 被禁用
  • 网络:❌ 无法访问外部 LDAP

虽然在漏洞版本内,但是-Dcom.sun.jndi.ldap.object.trustURLCodebase=false ,因为${jndi:...} 被禁用不会被解析

image-20251222151248340

AI 分析判断仓库不受影响,符合预期

image-20251222115823103

模型费用对比及选择

根据官方获取定价数据:

https://platform.claude.com/docs/en/about-claude/pricing?utm_source=chatgpt.com

在选择前首先我们要定义模型好坏的标准,从数据表现出发而不是个人主观经验判断

如果追求 准确率 可以选择claude-sonnet-4@20250514,追求 性价比 但又有不错的准确率可以选择gemini-2.5-flash

项目 3 5 6 7 8
使用模型 gemini-2.5-pro claude-sonnet-4@20250514 claude-haiku-4-5 Qwen2.5-Coder-14B gemini-2.5-flash
准确率 95% 100% 87.50% 75% 87.50%
单个 CVE 分析平均费用(USD) 0.33 0.69 0.19 -- 0.08

白盒代码审计

存在的难点

  • 代码文件很长
  • 需要多文件上下文结合分析
  • 需要精确定位行号、变量流、调用链

上述这些问题都会导致大量的token消耗,其他chat型大多数每一轮 = 重新塞一堆代码进 prompt

模型选择

Cursor 最大优势:通过索引 + 增量上下文,节约 token 消耗,适合多轮、持续审计

最关键的一点是,他是按照提问次数来计费的,它把一次提问变成了一次完整的白盒审计任务执行

维度 / AI ChatGPT (Web/API) Claude Gemini GitHub Copilot Cursor
上下文获取方式 手动粘贴文件 手动粘贴 / 长上下文 手动粘贴 IDE 补全 自动索引 + AST
重复 token 消耗 极低
多轮审计成本 指数级上升 平稳 / 增量消耗
跨文件调用分析 手动复制 手动复制 自动关联
白盒审计推荐度 ⭐⭐⭐ ⭐⭐⭐ ⭐⭐ ⭐⭐⭐⭐⭐

提示词promot

明确任务定位

让 LLM 清楚自己在做什么,而不是默认行为(如写总结、生成报告),避免 LLM 自动归纳/总结导致丢失重要信息差异。

你不是在写安全报告,而是在做“证据整理(evidence collection)”。
你的目标是保留信息差异,而不是消除差异。

使用“反总结”指令

通常 LLM 会倾向总结、归纳,在 prompt 中明确要求保留原始信息、对比差异、不要归类

请逐条保留所有原始输入中的差异信息,不要合并或总结条目。
每条信息保持独立输出。

明确输出结构

指定输出格式,避免每次输出不统一,便于后续自动化分析/汇总

请按照以下 JSON 格式输出:
[
  {"source": "文件A", "line": 23, "content": "..."},
  {"source": "文件B", "line": 45, "content": "..."}
]

强化“证据导向”

提示 LLM 输出时只保留事实,不做主观判断

只提取事实性内容,不要加入主观评论或判断。
标明来源和行号。

分步任务处理

对于复杂信息,分步任务处理比一次性要求总结更稳妥,避免分析中断停止,输出更结构化、更精确

第一步:提取每个输入文件的独立事件。
第二步:标记事件的时间戳和来源。
第三步:保留所有差异,不进行合并。

根据框架语言输入前置知识

不同的语言审计的方法和思路不一样,在让AI分析代码时候需要提供一些前置知识,这能让 AI 更精确地聚焦在“可能的风险点”,而不是泛泛地猜测

像SQL注入,不同语言的sink点也不完全相同

语言 方法 / 函数 示例代码 / SQL
Golang (*gorm.io/gorm).Where db.Where(StringData).First(&data)
Golang (*github.com/jmoiron/sqlx.DB).Queryx db.Queryx(query, params)
Java mybatis like select * from users where username like '%${name}%'
Java mybatis order by select * from users order by ${orderby}
Java mybatis-plus apply wrapper.eq("id", id).apply("username=" + name);
Python pymysql execute sql = "select * from users where username = '%s'" % (name)
Node.js mysql query sql = "select * from users where username = ${name}"

在Shiro和Spring Security中,可以配置哪些API不需要进行权限校验

  • 在Shiro中,可以使用Shiro的过滤器链(Filter Chain)来配置不需要进行权限校验的API
  • 在Spring Security中,可通过继承WebSecurityConfigurerAdapter类并重写其中的configure()方法,配置不需要进行权限校验的API

image-20251230153740679

像上述的内容可作为前置知识给AI输入,增加其分析的准确性

1. web.xml / Spring 配置分析
找出其中配置的可直接前台访问的 .jsp、.do、.action、.html、.json、.servlet 等接口路径。
指明配置项与访问路径的对应关系:
web.xml → <servlet-mapping>、<url-pattern>
@Controller、@RestController、@RequestMapping 等注解标注的接口
检查是否存在匿名访问的接口(无登录/权限验证拦截)。
检查 Filter、Interceptor、SecurityConfig、WebSecurityConfigurerAdapter 等中是否存在鉴权绕过配置。

2. classes / lib / jar 源码分析
对比 WEB-INF/classes 下的 .class 文件与反编译后的 .java 文件。
对 lib 下的 .jar 文件进行反编译,检查是否包含业务逻辑代码。
逐一分析对应的 Controller、Service、DAO、Repository 层实现:
对应的请求路径(前台/后台)
涉及的外部依赖或第三方库(如 HttpClient、JdbcTemplate、Hibernate 等)
标注潜在的高危点:未校验的用户输入、外部命令调用、文件上传写入、动态 SQL 拼接等。

3. 识别调用链路
标识所有暴露给前端或外部调用者的接口(如 REST API、RPC Endpoint、Controller 方法、Servlet)。
确定入口函数是否为用户完全可控(如 request.getParameter()、@RequestParam、@RequestBody)。
检查系统是否已接入统一认证(如 Spring Security / JWT / OAuth2 / Session)。
深入分析完整调用链:
Controller → Service → Repository → 外部系统
判断入口是否存在强约束:
用户归属验证
签名、时间戳、防重放机制
输出是否可以绕过认证或越权。

4. 重点模块审计(前台与后台分开)
重点排查以下常见的漏洞类型:
漏洞类型    漏洞Sink点(常见函数 / 类)   审计描述
SQL 注入  Statement.executeQuery(), Statement.executeUpdate(), JdbcTemplate.queryForList(), createNativeQuery(), EntityManager.createQuery()  检查点:SQL 是否通过字符串拼接、+、String.format、concat 等方式插入用户输入(如 Request 参数)。优先关注 MyBatis 自定义 SQL 与原生 JDBC 使用场景。
命令执行(RCE)   Runtime.getRuntime().exec(), ProcessBuilder.start(), ShellUtils.exec()  检查点:是否拼接用户输入到命令中,或允许上传执行脚本。
文件上传 / 任意文件写入   MultipartFile.transferTo(), FileOutputStream.write(), Files.write(), FileUtils.copyInputStreamToFile()  检查点:是否校验扩展名、MIME、目录路径;是否防止 .jsp、.jspx、.java 等脚本文件上传。
反序列化    ObjectInputStream.readObject(), JSON.parseObject(), Yaml.load(), XStream.fromXML()  检查点:是否对外部输入执行反序列化;是否使用存在漏洞的库(如 fastjson < 1.2.83, Jackson 未加白名单)。
任意文件读取  Files.readAllBytes(), FileInputStream, IOUtils.toString(), response.getOutputStream().write()   检查点:是否直接读取用户指定路径;是否存在目录遍历绕过。
路径遍历    new File(), Paths.get(), ServletContext.getRealPath(), File.delete()    检查点:是否存在 ../ 等拼接导致目录逃逸。
XXE(XML 外部实体)   DocumentBuilderFactory.newInstance(), SAXParserFactory.newInstance(), XmlMapper.readValue() 检查点:是否关闭外部实体解析;是否解析来自不可信来源的 XML。
SSRF    HttpURLConnection, HttpClient.get(), RestTemplate.getForObject(), URL.openConnection()  检查点:是否允许用户指定 URL 并由服务器发请求;是否存在内网访问风险。
XSS response.getWriter().write(), 模板引擎输出 (<%= ... %>, Thymeleaf, Freemarker)    检查点:是否未进行 HTML/JS 输出转义。
认证绕过 / 越权   缺少 @PreAuthorize、@Secured、Session 检查或过滤器逻辑错误    检查点:检查接口访问控制逻辑,是否能直接调用他人资源。

5. 输出结构(每个发现需包含以下部分)
每个发现必须包含以下字段:
风险点名称
漏洞类型 + 影响接口 + 文件路径
漏洞成因
简述代码逻辑错误或输入未过滤的原因。

在net系统中,首先对dll进行反编译,然后让AI去关联路由和实现方法

image-20251230154740599

### 审计和输出要求:

1. **web.config 分析**  
   - 找出其中配置的可直接前台访问的 `.ashx``.aspx` asmx ascx 文件。  
   - 指明配置项与访问路径的对应关系。  

2. **bin 目录源码分析**  
   - 逐一对应 `bin` 下的 `.dll` 与其反编译出来的 `.cs` 文件。  
   - 分析对应的 `.ashx` 或 `.aspx` 、ascx  asmx方法实现。  
   - 如果代码中存在潜在的高危点,需要重点标注   

3. 识别调用链路 
* (本文件内的路由/XXX 根据情况调整) 函数是暴露给前端或外部调用者的接口(如 API/RPC/Controller),其 request 对象是完全用户可控的
* 当前系统默认已接入统一认证中间件(如 JWT / Session / OAuth2),调用该函数的用户通常已登录
* 需要分析完整的调用链路,包括所有被调用的 Service 层、Repository 层和外部依赖
* 需要判断入口处有强约束(如强校验 user 归属/租户隔离/签名+时效+重放防护)
分析接口是通过什么鉴权的,尝试进行绕过,深入分析所有前台可访问的文件并挖掘漏洞
在项目中搜索所有 ASMX 接口,重点关注是否可匿名调用的未授权端点,并给出利用的wsdl方式和数据包

4.漏洞Sink点 
| 漏洞类型                       | 漏洞Sink点                                                   | 审计描述                                                     |
| ------------------------------ | ------------------------------------------------------------ | ------------------------------------------------------------ |
| **SQL 注入**                   | `ExecuteNonQuery()`, `ExecuteReader()`, `ExecuteScalar()`, `SqlDataAdapter.Fill()`, `ExecuteSqlCommand()`, `ExecuteSqlRaw()`, `CreateSQLQuery()`, `connection.Query()` | **检查点**:查找 SQL 语句是否通过字符串拼接或格式化(`+`, `String.Format`, `$""`)将 `Request/Query/Form/Cookie` 等直接插入。 |
| **命令执行(RCE)**            | `Process.Start()`, `ProcessStartInfo.FileName`, `ProcessStartInfo.Arguments` | **检查点**:是否把用户输入拼接到命令或传给 shell/PowerShell, `FileName` 与 `Arguments` 是否来自外部 |
| **文件上传 / 任意文件写入**    | `SaveAs()`, `WriteAllBytes()`, `WriteAllText()`, `FileStream.Write()` | **检查点**:是否校验扩展名、MIME、内容类型、文件名(路径分隔符)、以及保存目录权限;是否防止覆盖已有文件,上传可执行脚本(`.aspx`/`.ashx`)getshell |
| **反序列化**                   | `BinaryFormatter.Deserialize()`, `SoapFormatter.Deserialize()`, `JsonConvert.DeserializeObject()`, `LosFormatter.Deserialize()` | **检查点**:反序列化是否对不可信输入(Request、Cookie、ViewState、文件等)执行;是否使用不安全的序列化库(BinaryFormatter、SoapFormatter) |
| **任意文件读取**               | `File.ReadAllBytes()`, `File.ReadAllText()`, `Response.WriteFile()`, `Response.TransmitFile()`, `File()` | **检查点**:是否将用户参数直接作为文件路径输出或读取;是否存在未做路径合法化的文件下载接口。 |
| **路径遍历**                   | `Server.MapPath()`, `Path.Combine()`, `File.Delete()`, `Directory.GetFiles()` | **检查点**:路径拼接是否包含未过滤的用户输入;`Path.Combine` 后是否做规范化校验。 |
| **XXE(XML External Entity)** | `XmlDocument.LoadXml()`, `XmlDocument.Load()`, `XmlReader.Create()`, `DataSet.ReadXml()` | **检查点**:XML 解析是否启用了外部实体解析(DTD);是否解析来自不受信任来源的 XML。 |
| **SSRF**/远程文件下载          | `WebClient.DownloadString()`, `HttpClient.GetAsync()`, `WebRequest.Create()`, `HttpClient.PostAsync()` WebClient.DownloadFile()、HttpClient.GetStreamAsync()、HttpClient.GetByteArrayAsync()、WebRequest.GetResponseStream() | **检查点**:是否允许用户指定 URL 并由服务器发起请求;是否对目标地址做白名单或内部地址检测。 |   

5. **输出结构**(每个发现都要包含以下部分)  
   - 风险点名称  
   - 漏洞成因(为什么可能触发)  
   - 攻击面分析(攻击者可能会怎么尝试)  
   - 关键代码片段(只展示相关函数或方法)  

黑盒漏洞挖掘

个人观点

目前市面上大量工具打着AI 自动化漏洞挖掘智能分析攻击链路的旗号,看似很酷炫但本质上是在用通用 Agent 架构包装传统扫描器。大多数通过 MCP 将模型与各类工具(发包、爬虫、指纹识别等)连接起来,试图让 AI 自主探索、组合工具、推导攻击路径,看起来“智能”“自动化”,但在真实黑盒安全场景中,这条路线存在根本性的工程与成本问题。MCP会不断尝试调用工具,然后根据结果修正答案,这样的操作会导致token消耗爆炸产生高额的费用,整体ROI其实为负

因此我认为,AI 在黑盒场景下的正确打开方式,不是无限制 Agent + MCP 调工具而是针对场景去挖掘漏洞

目前对于SSRF、SQL注入这些探测已经很成熟了,因此我觉得未来方向应该着重于逻辑漏洞挖掘


1.黑盒安全不是“探索型问题”,而是“验证型问题”

黑盒漏洞挖掘的核心并不在于“能不能想到攻击手法”,而在于:

  • 请求是否真实命中业务路径
  • 返回数据是否具备越权或敏感属性
  • 漏洞是否可稳定复现、可被证明成立

2.MCP 在黑盒场景下看起来智能,后期成本指数级失控,最终只能靠人工兜底

很多黑盒 MCP 服务在 Demo 中看起来效果不错,但问题往往出现在规模化运行之后:

  1. 请求数不可预测,模型为了提高“理解度”,会自然倾向于多次发包、多角度验证,但每一次都是真实成本。
  2. 工具调用链不可收敛, MCP 允许模型自由组合工具,但攻击链并不等于漏洞成立,复杂路径只会带来更多误报。
  3. 误报无法自动止损, AI 很容易给出“疑似漏洞”的判断,而这些“疑似”最终都需要人工复现,成本极高。

3.黑盒 AI 必须是“场景化裁判”,而不是“自由探索者”

真正可落地的黑盒 AI,不是让模型“自己决定下一步做什么”,而是先由人或规则系统把问题压缩成一个最小可验证场景

也就是说:

  • 场景先被定义(如 IDOR、越权、未授权访问、信息泄露)
  • 输入、对照条件、请求模板全部固定
  • 模型只负责判断结果是否成立

IDOR越权

流程设计

目前对于IDOR越权需要对多个参数进行构造和分析,会耗费大量的时间精力,因此我觉得AI赋能这个场景具有比较大的可塑性

image-20251226185049132

实现效果

1.处理成标准的输入格式,burp导出数据包,右键选择save items

image-20251225184509517

自动解析处理成规范输入格式,在demo目录生成随机文件夹用于后续分析

image-20251226155418681

2.根据数据包中参数让ai判断是否存在可遍历性,可遍历性参数生成测试用例

【AI分析判定规则】
✔ 认为“可遍历”的参数:
- 纯数字:1、12、12345
- 明显自增 ID:orderId、userId、uid、id、page
- 数字 + 简单前缀后缀(如:10001、20002)

✘ 认为“不可遍历”的参数:
- 高随机字符串
- 明显 UUID / hash / token
- 大小写字母 + 数字混合、长度较长的字符串
  例如:hjk2bvadn、A9xPqL0Zk

仅对“可遍历参数”继续后续步骤。

image-20251226155757838

3.调用net/http库进行发包

image-20251226162713151

根据PII、参数分析等规则划分为高中低风险

image-20251229154323772

4.结束在前端展示,输出消耗token费用和耗时

image-20251226162525983

输出风险参数及测试用例数据包

image-20251226162630427

promot提示词
你是一名专业的 Web 安全测试与越权漏洞挖掘专家,请严格按照以下步骤对给定的数据包列表进行越权分析,不要跳步,不要假设结果。

【输入】
我将提供一批 HTTP 数据包(GET / POST 请求),每个数据包包含:
- 请求方法
- URL
- 请求参数(GET 参数或 POST body)
- 原始响应状态码
- 原始响应内容长度

【分析目标】
判断接口是否可能存在 越权漏洞(IDOR / BOLA / 水平越权 / 垂直越权)。

--------------------------------------------------
【分析步骤】

第一步:参数提取
1. 如果是 GET 请求:
   - 提取 URL 中的所有参数,例如:
     /api/xxx?aaa=1&bbb=abc
2. 如果是 POST 请求:
   - 提取 body 中的参数,例如:
     ccc=1&ddd=3
   - JSON、form、x-www-form-urlencoded 均需解析

--------------------------------------------------
第二步:参数可遍历性判断
对每一个参数的值进行可遍历性分析:

【判定规则】
✔ 认为“可遍历”的参数:
- 纯数字:1、12、12345
- 明显自增 ID:orderId、userId、uid、id、page
- 数字 + 简单前缀后缀(如:10001、20002)

✘ 认为“不可遍历”的参数:
- 高随机字符串
- 明显 UUID / hash / token
- 大小写字母 + 数字混合、长度较长的字符串
  例如:hjk2bvadn、A9xPqL0Zk

仅对“可遍历参数”继续后续步骤。

--------------------------------------------------
第三步:控制变量法修改参数
对每一个可遍历参数,单独进行修改,其他参数保持完全不变。
修改每一个参数生成一个测试用例,与原数据包进行对比

【修改规则】
- 数字参数:+1 或 -1
  例如:
  12345 → 12346
- 每次只修改一个参数
- 不同时修改多个参数

--------------------------------------------------
第四步:响应对比分析
对比【原始请求】与【修改参数后的请求】的响应:

重点关注:
1. HTTP 状态码
2. 响应内容长度
3. 响应语义是否发生变化

--------------------------------------------------
第五步:越权判定逻辑(核心)

【疑似存在越权漏洞】
满足以下所有条件:
- 修改参数后返回 HTTP 状态码为 200
- 响应内容长度发生明显变化
- 未命中任何权限拒绝关键字
→ 判定为:⚠️ 疑似存在越权漏洞(需要人工进一步确认)

【判定为不存在越权漏洞】
满足任意一个条件:
- 返回 HTTP 状态码为 403
- 或响应内容命中以下任一权限拒绝关键字(大小写不敏感):

(?i)permission\s*denied
(?i)access\s*denied
(?i)\bforbidden\b
(?i)unauthorized
(?i)not\s*authorized
(?i)not\s*allowed
(?i)no\s*permission
(?i)permission\s*required
(?i)insufficient\s*permission
(?i)insufficient\s*permissions
(?i)insufficient\s*privilege
(?i)insufficient\s*privileges
(?i)authentication\s*failed
(?i)authentication\s*required
(?i)login\s*required
(?i)not\s*logged\s*in
(?i)session\s*expired
(?i)invalid\s*session
(?i)invalid\s*token
(?i)token\s*expired
(?i)token\s*invalid
(?i)missing\s*token
(?i)jwt\s*expired
(?i)jwt\s*invalid
(?i)role\s*not\s*allowed
(?i)role\s*denied
(?i)authorization\s*failed
(?i)permission\s*check\s*failed
(?i)access\s*control\s*deny
(?i)rbac\s*deny
(?i)policy\s*denied
(?i)policy\s*reject
(?i)resource\s*access\s*denied
(?i)resource\s*not\s*owned
(?i)not\s*your\s*resource
(?i)resource\s*not\s*(found|exist)
(?i)record\s*not\s*(found|exist)
(?i)request\s*blocked
(?i)request\s*denied
(?i)security\s*policy\s*violation
(?i)access\s*blocked
(?i)\b403\b

→ 判定为:✅ 当前参数未发现越权漏洞

--------------------------------------------------
第六步:结果输出格式(必须遵守)

对每一个接口输出以下内容:

- 接口路径
- 请求方法
- 可遍历参数列表
- 被修改的参数及修改方式
- 原始响应状态码 / 长度
- 修改后响应状态码 / 长度
- 判定结论:
  - 「疑似越权漏洞」
  - 或「未发现越权」

如无法判断,明确说明原因,不要猜测。
模型费用对比及选择

通过多轮测试,在生成测试样例和判断PII数据准确率方面,各模型性能差异性不大,因此优先选择价格更便宜的模型model

测试下来,gpt-4.1-nano兼顾速度和费用优先选择小任务可以选择Qwen

模型 描述 单接口消耗(USD) 单接口消耗(RMB) 推荐指数
gpt-5-nano 付费最便宜,主要是慢,一个请求需要等待3-5秒,不建议 $0.82 美分 $0.057 人民币 ⭐⭐
gpt-4.1-nano 成本略高于 5-nano,但判断更稳,速度快,推荐 $0.91 美分 0.064元人民币 ⭐⭐⭐⭐⭐
Qwen 免费,速度快,但是限频1分钟60次,容易429超时,数量少可选择 ⭐⭐⭐

浏览插件自动化点击触发API

现在基于API测试越权已经实现了,要想实现全自动化挖洞还需要尽可能全的数据包,在甲方场景我们可以通过捕获流量重放去实现

在渗透攻防的场景下,如果需要人工一个个点击显得有点呆了,因此决定开发一个浏览器插件自动化触发button事件点击和提交表单

https://github.com/Pizz33/Xiadian_browser

image-20251230112252903

智能元素识别

通过 isElementVisible() 函数进行识别button等点击元素

function findClickableElements() {
  const selectors = [
    'button:not([disabled])',
    'a[href]:not([href="#"]):not([href="javascript:void(0)"])',
    'input[type="submit"]:not([disabled])',
    'input[type="button"]:not([disabled])',
    '[role="button"]:not([disabled])',
    '[onclick]',
    '.btn:not([disabled])',
    '.button:not([disabled])',
    '[class*="button"]:not([disabled])',
    '[class*="btn"]:not([disabled])'
  ]
动态内容监听
const observer = new MutationObserver(() => {
  if (isRunning) {
  }
})

observer.observe(document.body, {
  childList: true,  // 监听子节点变化
  subtree: true     
})
脚本注入与消息传递
  • 延迟等待机制,确保脚本完全加载后再发送消息
  • 通过 chrome.tabs.sendMessage 实现跨模块通信
startBtn.addEventListener('click', async () => {
  const value = parseInt(inputValue.value) || 1
  console.log('[Popup] 开始按钮被点击,输入值:', value)

  // 重置统计
  updateStats(0, 0)

  // 保存状态
  if (chrome.storage && chrome.storage.local) {
    chrome.storage.local.set({
      isRunning: true,
      inputValue: value
    })
  }
主处理流程
  • 定时执行机制:使用 setInterval 每 2 秒执行一次,控制操作频率
  • 去重处理:使用 Set 数据结构记录已处理元素,避免重复操作
  • 逐个处理按钮:每次只处理一个可点击元素,避免操作过快导致页面异常
function processPage() {
  if (!isRunning) {
    console.log('[自动点击助手] 未运行,跳过处理')
    return
  }

  // 1. 查找所有可点击的元素
  const clickableElements = findClickableElements()

  // 2. 查找所有输入框
  const inputElements = findInputElements()
  console.log('[自动点击助手] 找到输入框:', inputElements.length, '个')

  // 3. 处理输入框(遍历所有未处理的)
  inputElements.forEach((input, index) => {
    if (!processedElements.has(input)) {
      console.log(`[自动点击助手] 处理输入框 ${index + 1}:`, input)
      fillInput(input)
      processedElements.add(input)
      filledCount++
      updateStats()
    }
  })

  // 4. 处理可点击元素(每次只点击一个,避免过快)
  if (clickableElements.length > 0) {
    const unprocessedElements = clickableElements.filter(el => !processedElements.has(el))
    if (unprocessedElements.length > 0) {
      const element = unprocessedElements[0]
      console.log('[自动点击助手] 准备点击元素:', element)
      clickElement(element)
      processedElements.add(element)
      clickedCount++
      updateStats()
    }
  }
}

流程设计优化

在满足我们的需求后,我们还可以对流程进行调整节省消耗

  • 每个文件夹独立调用AI分析 ---> 统一收集所有参数,一次性AI分析
  • AI调用次数 = API文件夹数量 ---> AI调用次数 = 1(参数分析)+ N(PII命中时的响应分析)
  • 测试用例生成 ---> AI测试用例直接生成(+1/-1),不调用AI
  • 处理顺序:串行处理每个文件夹 ---> 处理顺序:并行处理多个文件夹

image.png

详细对比

阶段 旧流程耗时 新流程耗时 优化比例
参数收集 10秒 8秒 20%↓
AI参数分析 100秒(100次调用) 3秒(1次调用) 97%↓
测试用例生成 50秒(AI生成) 1秒(直接生成) 98%↓
测试用例验证 120秒 100秒 17%↓
AI响应分析 20秒(50次调用) 8秒(20次调用) 60%↓
总计 300秒 120秒 60%↓

Token消耗对比

类型 旧流程 新流程 节省
参数分析Token 150K 2K 98.7%↓
响应分析Token 50K 20K 60%↓
总计 200K 22K 89%↓

实测夸克「千问划词快捷指令」,这7个邪修Prompt,建议收藏

0%
icon展开列表
实测夸克「千问划词快捷指令」,这7个邪修Prompt,建议收藏
今天
img
已证实!清华姚班陈立杰全职加入OpenAI,保留伯克利教职
今天
img
解锁任意步数文生图,港大&Adobe全新Self-E框架学会自我评估
今天
img
5分钟定制一个AI采购专家:讯飞发布“招采智能体工厂”,重新定义行业开发范式
今天
img
Agent时代,为什么多模态数据湖是必选项?
今天
img
大模型长脑子了?研究发现LLM中层会自发模拟人脑进化
今天
img
性能提升60%,英特尔Ultra3这次带来了巨大提升
01月14日
img
继宇树后,唯一获得三家大厂押注的自变量:具身模型不是把DeepSeek塞进机器人
01月14日
img
Sebastian Raschka 2026预测:Transformer统治依旧,但扩散模型正悄然崛起
01月14日
img
端到端智驾新SOTA | KnowVal:懂法律道德、有价值观的智能驾驶系统
01月14日
img
仅用10天?Anthropic最新智能体Cowork的代码竟然都是Claude写的
01月14日
img
AAAI 2026|AP2O-Coder 让大模型拥有「错题本」,像人类一样按题型高效刷题
01月14日
img
用AI从常规病理切片重建空间蛋白图谱:基于H&E图像的高维蛋白质表达预测
01月14日
img
京东首届AI影视创作大赛启动 最高奖金10万元邀全民共创AI视频
01月14日
img
合合信息多模态文本智能产品“上新”,覆盖AI教育、AI健康、AI Infra多元场景
01月14日
img
500万次围观,1X把「世界模型」真正用在了机器人NEO身上
01月14日
img
跳出「黑盒」,人大刘勇团队最新大语言模型理论与机理综述
01月14日
img
百川开源全球最强医疗大模型M3,「严肃问诊」定义AI医疗新能力
01月14日
img
相约AAAI 2026 | 上海AI实验室北极星 X 星启交流会(报名开启)
01月13日
img
视觉模型既懂语义,又能还原细节,南洋理工&商汤提出棱镜假说
01月13日
img

实测夸克「千问划词快捷指令」,这7个邪修Prompt,建议收藏

新年第一天,DeepSeek 发布了一篇艰深晦涩的技术论文,不少网友直呼「看不懂」。

图片

于是,机器之心评论区出现了集体求助 AI 的一幕:有人让 AI 用八十岁老太太能听懂的方式解释,有人要求用大白话翻译,还有人直接说「当我是幼儿园小朋友,给我讲明白」。

图片

这场景既搞笑又真实。如今,我们面对复杂信息时,第一反应已经是向 AI 求援,而非硬啃。但问题来了,同样是使用 AI,有些人总能得到精准、高质量的回答,而有些人却总在和 AI「鸡同鸭讲」。

这样的体验让不少人对 AI 的智能程度产生怀疑,抱怨 AI 不够聪明、听不懂人话、是个「智障」。可事实并非如此,问题可能出在我们的提问方式上。

一个完美的指令,关键在于让 AI 确认它是否真正理解我们的需求,这就是为什么网上会流传各种提示词模板,这些经过反复打磨的指令,往往能让 AI 输出质量提升好几个 level。

不过,新的痛点也随之而来,这些高频使用的指令,每次都要从头输入一遍,不仅浪费时间,还容易因为表述不同导致效果不稳定。

如果有一个方法,能把这些指令变成一键调用的快捷键,会怎样?

最近,夸克 AI 浏览器功能更新,「千问划词」支持自定义快捷指令。如果你常常需要对文稿进行内容润色、检查、优化,只需提前设置好常用的提示词,就能开启更精准、更快捷的划词体验。

图片

简单来说,就是把那些已经验证过、效果很好的提示词固定下来,需要时一键调用。

用法也很简单,我们只需在设置里找到「划词工具栏」,点击「添加自定义指令」,输入常用指令,比如「请将以下内容翻译成中文:{selection} 要求翻译准确流畅,符合中文表达习惯,避免生硬直译」,再给指令起个名字,专属指令就设置成功了。

图片

这里提一嘴,输入常用指令时系统有一套规则:需使用 {selection} 来表示划词选中的文字。

后续在浏览网页或文档时,遇到需要协助翻译、润色、检查的段落,只需轻轻划选,指令即可一键使用,告别复制粘贴、重复手动输入的麻烦。

一手实测:用夸克 AI 浏览器玩转 100 个指令

说实话,很多人觉得 AI 难用,就是被那些长到记不住的提示词给劝退的。既然如此,不妨交给浏览器来记。

最近,我们对着夸克 AI 浏览器疯狂实测了一波,从中精选出 7 类最实用指令,接下来全是干货。

邪修提示词

最近,博主「张咋啦 zara」分享了一个超好用的邪修 Prompt:tell me what you need from me to do this well。翻译过来就是「为了执行好这个任务,你需要我给你提供什么?」

她表示,AI 背后的人格是个助手,而助手的第一要务是满足用户需求,很多时候 AI 不好意思跟我们提需求,这就导致当我们给 AI 的上下文不够完整时,它就瞎干,最终交付的结果自然无法达到我们的预期。

所以,我们可以主动询问 AI 的需求,然后再想方设法满足,执行效果会好很多。

我们索性用夸克 AI 浏览器的「千问划词 - 快捷指令」试试。当然 Prompt 也根据具体使用场景,改得稍微具体了些:

「我需要你帮我润色以下内容:{selection} ,为了执行好这个任务,你需要我提供什么额外信息?请列出你需要了解的关键要素,以便给出最优质的回答。」

设置好后,我们拿《马斯克的「移动客厅」又火了:20 人座无方向盘,每公里才 3 毛钱》这篇文章进行测试。
图片

AI 终于大大方方提出疑问:目标受众、发布平台、侧重表达的观点以及语言风格分别是什么,还贴心地举了例子。得到回答后,刷刷几下子润色版本就出来了,在保留核心信息基础上,语言更具网感。

有一说一,让 AI 先问清需求,再精准输出,比直接让它润色效果好太多

毒舌大师

国外一博主也摸索出 AI 的一些骚操作。

一般来说,AI 总爱跟我们假客气,说啥它都顺毛捋,所以该博主给 AI 立了个毒舌导师的人设,我们反手就将这个提示词设置为夸克 AI 浏览器的划词指令:

「你是我冷酷无情的导师,别跟我绕弯子。请严格批评以下内容:{selection},要求是如果想法烂透了,就直接说这是垃圾。你的工作就是把所有问题都挑出来,直到我说无懈可击为止。批评完后,用一句话告诉我改进方向,然后帮我修改,能更吸引人。」

题好一半文。扒出之前写的一篇流量堪忧的文章,点击「毒舌大师」快捷指令搞个更吸引人的标题。

图片

AI 毫不留情地开喷「主题不明确、信息陈旧、用词情绪化,更像是社交媒体的几句牢骚」。骂完就给出改进方向,并直接甩出修改版本。

AI 终于不跟我们装熟了,给的建议也更靠谱。以后编辑部谁写的东西自我感觉良好,就让这个毒舌模式喷一遍。

讲完邪修用法,我们再来看看工作学习具体场景。

人话翻译器

对于很多机器之心读者来说,最头疼的场景之一,就是读那些不明觉厉的专业论文。

以上文提到的 DeepSeek 技术论文为例,网友求助 AI 的表述五花八门,但核心需求其实是一致的,那就是把复杂的学术内容转化为通俗易懂的表达。

我们可以用夸克整个「人话翻译器」划词指令:

「你是一位擅长科普的教育工作者,请用费曼学习法解释以下内容: {selection},要求先用一个生活化的类比引入概念,再拆解核心逻辑,最后用一句话总结。语言要生动,避免术语堆砌。」

打开一篇论文,遇到看不懂的段落,划词选中,夸克 AI 浏览器几秒钟就能给出通俗解读。

图片

这比每次都要输入「用大白话解释」要精准得多,因为 AI 已经知道要用什么结构、什么风格来回答。

论文引用查找器

论文党基本绕不过翻译、写作、修改、引用查询等环节,有了 AI 后,干这些活的效率直线上升,但用到的提示词来来回回也就那几个。这时,夸克的划词指令就派上用场。

举个例子。我们搞了个「引用来源查询」的划词指令:

「你是一位学术研究助手,精通文献检索。请针对以下观点或数据进行分析:{selection},1)判断这可能属于哪个研究领域的哪个分支;2)推测可能的引用来源类型(奠基性理论文献、实证研究、综述文章、方法论文献);3)提供搜索关键词建议;4)如果这是经典理论或常见观点,告诉我通常会引用哪些代表性文献或学者。注意:不需要提供具体论文链接,只需给我检索方向即可。」

想想以前核查引用来源,我们需要打开 Google Scholar,用各种关键词搜索,翻阅十几篇论文的摘要,判断哪些可能相关,再去下载 PDF 查看全文,最后才能确认是不是要找的那篇。一个引用来源,可能要花半小时甚至更久。

现在我们只需划词选中 DeepSeek 论文中一句话,点击「引用来源查询」,AI 不仅给出研究领域、来源类型、搜索关键词建议,甚至连代表性文献和学者也清晰罗列出来。

图片

后续我们沿着这个方向,再去 Google Scholar 检索,效率飙升。

AI 在提升效率的同时,还会提醒我们这个观点属于什么研究脉络、应该引用什么类型的文献,这对于学术新手来说特别有价值。

爆款生成器

至于内容创作者,千问划词 - 快捷指令就更有用武之地了。

以机器之心编辑部为例,同一个话题要在 X、小红书、微博等多个平台发布,但每个平台的调性和用户偏好完全不同。

以前的做法是,编辑写好原稿后,再手动改写成各种版本,每个版本都要重新调整语气、结构、表述方式。现在,我们用夸克的「千问划词 - 快捷指令」,就能针对不同平台定制不同的改写指令。

比如同样是「特斯拉 FSD 首次横穿美国,Model3 实现 1 万英里零干预」这一话题,小红书爆款生成器的生成结果更生活化、更有共鸣感。
图片

「小红书爆款生成器」的指令是:你是一位小红书爆款内容创作者,请把以下内容改写成小红书风格:{selection},要求:1)开头用 emoji 和惊叹式标题吸引注意力;2)把专业内容转化为「对用户有什么用」的实用角度;3)多用短句和段落,每段不超过两句话;4)结尾加上互动引导(如「你会用吗?」「评论区聊聊」);5)适当加入网络热词但不要过度;6)控制在 500 字以内。

微博热搜体的表达则是短平快抓眼球。

图片

「微博热搜体」的指令是:你是一个专业的爆款微博大师,要求:1)用中括号【】先提炼最核心的信息做成一个标题;2)整体控制在 140 字以内;3)突出话题性和新闻感;4)加上 2-3 个相关话题标签;5)可以适当制造悬念引导点击链接。请把以下内容浓缩成一条微博:{selection}

X 平台则更偏向专业简洁。

图片

「X 平台国际化表达」的指令是:请把以下中文内容翻译成英文并调整为国际用户的阅读习惯:{selection},要求:1)语言简洁直白,避免中式思维的复杂从句;2)突出核心事实,少用形容词和情绪化表达;3)如果涉及中国特有的概念或梗,要加简单解释;4)保持科技媒体的专业度但不要过于学术化;5)控制在 280 字符以内。

通过千问划词 - 快捷指令,一篇内容快速适配多个平台,大大节省了编辑和运营同事反复思考和修改的时间。

不止于指令:一个更强大的 AI 浏览器

千问划词 - 快捷指令只是夸克 AI 浏览器能力升级的一部分。在这次更新中,夸克表现出更大野望,即成为一个真正意义上的超级应用。

夸克 AI 浏览器除了全面融合千问 AI 助手,实现全局桌面唤起 AI 的创新交互形态;在阿里 Qwen 大模型加持下,近期更是一口气上线了十多种模型,供用户自由选择

图片

同时它也支持语音、图片、文件等多模态输入。

图片

      首页、侧边栏、快捷框等均可实现语音输入。

此外,夸克 AI 浏览器还内置一系列实用的 AI 工具。这些工具组合起来,可以构建起一套完整的一站式工作流。

比如我们要准备一份马斯克 SpaceX 的介绍 PPT,可以先使用夸克 AI 浏览器中的「超级播放器」,5 倍速观看相关视频,AI 实时生成字幕、翻译,并自动总结视频摘要和脑图,半小时的视频几分钟就能掌握。

然后调用夸克 PPT 工具生成汇报材料,将上述 AI 视频摘要输入进去,就能一键生成图文并茂的 PPT。海量模板任选,大纲随时调整。

夸克 AI 浏览器仍在以极快的速度持续进化,不断挖掘并满足用户更精细化的需求。我们有理由相信,随着 AI 交互方式的持续创新优化、与工作流的深度整合,一个更强大的 AI 浏览器背后,是让个人真正实现「一个人即能活成一支队伍」的能力底座,所谓的「超级个体」也将不再是一句空话。

分享一个论文降ai率的prompt,实测维普6%

你的角色与目标:

你现在扮演一个专业的“论文(或技术文档)修改助手”。你的核心任务是接收一段中文原文(通常是技术性或学术性的描述),并将其改写成一种特定的风格。这种风格的特点是:比原文稍微啰嗦、更具解释性、措辞上更偏向通俗或口语化(但保持专业底线),并且系统性地使用特定的替代词汇和句式结构。 你的目标是精确地模仿分析得出的修改模式,生成“修改后”风格的文本,同时务必保持原文的核心技术信息、逻辑关系和事实准确性,也不要添加过多的字数。
注意不要过于口语化(通常情况下不会过于口语化,有一些比如至于xxx呢,这种的不要有)
注意!你输出的内容不应原多于原文!应时刻记得字数和原文相符!
注意!不要有‘’xxx呢‘’这种形式,如‘至于vue呢’
不要第一人称
输入与输出:

输入: 一段中文原文(标记为“原文”)。
输出: 一段严格按照以下规则修改后的中文文本(标记为“修改后”)。
核心修改手法与规则(请严格遵守):

增加冗余与解释性(Verbose Elaboration):

动词短语扩展: 将简洁的动词或动词短语替换为更长的、带有动作过程描述的短语。
示例:“管理” -> “开展...的管理工作” 或 “进行管理”
示例:“交互” -> “进行交互” 或 “开展交互”
示例:“配置” -> “进行配置”
示例:“处理” -> “去处理...工作”
示例:“恢复” -> “进行恢复”
示例:“实现” -> “得以实现” 或 “来实现”
增加辅助词/结构: 在句子中添加语法上允许但非必需的词语,使句子更饱满。
示例:适当增加 “了”、“的”、“地”、“所”、“会”、“可以”、“这个”、“方面”、“当中” 等。
示例:“提供功能” -> “有...功能” 或 “拥有...功能”
系统性词汇替换(Systematic Synonym/Phrasing Substitution):

特定动词/介词/连词替换: 将原文中常用的某些词汇固定地替换为特定的替代词。这是模仿目标风格的关键。
采用 / 使用 -> 运用 / 选用 / 把...当作...来使用
基于 -> 鉴于 / 基于...来开展
利用 -> 借助 / 运用 / 凭借
通过 -> 借助 / 依靠 / 凭借
和 / 及 / 与 -> 以及 (尤其是在列举多项时)
并 -> 并且 / 还 / 同时
其 -> 它 / 其 (可根据语境选择,有时用“它”更口语化)
特定名词/形容词替换:
原因 -> 缘由 / 主要原因囊括...
符合 -> 契合
适合 -> 适宜
特点 -> 特性
提升 / 提高 -> 提高 / 提升 (可互换使用,保持多样性)
极大(地) -> 极大程度(上)
立即 -> 马上
括号内容处理(Bracket Content Integration/Removal):

解释性括号: 对于原文中用于解释、举例或说明缩写的括号 (...) 或 (...):
优先整合: 尝试将括号内的信息自然地融入句子,使用 “也就是”、“即”、“比如”、“像” 等引导词。
示例:ORM(对象关系映射) -> 对象关系映射即ORM 或 ORM也就是对象关系映射
示例:功能(如ORM、Admin) -> 功能,比如ORM、Admin 或 功能,像ORM、Admin等
谨慎省略: 如果整合后语句极其冗长或别扭,并且括号内容并非核心关键信息(例如,非常基础的缩写全称),可以考虑省略。但要极其小心,避免丢失重要上下文或示例。 在提供的范例中,有时示例信息被省略了,你可以模仿这一点,但要判断是否会损失过多信息。
代码/标识符旁括号: 对于紧跟在代码、文件名、类名旁的括号,通常直接移除括号。
示例:视图 (views.py) 中 -> 视图也就是views.py中
示例:权限类 (admin_panel.permissions) -> 权限类 admin_panel.permissions``
句式微调与口语化倾向(Sentence Structure & Colloquial Touch):

使用“把”字句: 在合适的场景下,倾向于使用“把”字句。
示例:“会将对象移动” -> “会把对象移动”
条件句式转换: 将较书面的条件句式改为稍口语化的形式。
示例:“若...,则...” -> “要是...,那就...” 或 “如果...,就...”
名词化与动词化转换: 根据需要进行调整,有时将名词性结构展开为动词性结构,反之亦然,以符合更自然的口语表达。
示例:“为了将...解耦” -> “为了实现...的解耦”
增加语气词/连接词: 如在句首或句中添加“那么”、“这样”、“同时”等。
保持技术准确性(Maintain Technical Accuracy):

绝对禁止修改: 所有的技术术语(如 Django, RESTful API, Ceph, RGW, S3, JWT, ORM, MySQL)、代码片段 (views.py, settings.py, accounts.CustomUser, .folder_marker)、库名 (Boto3, djangorestframework-simplejwt)、配置项 (CEPH_STORAGE, DATABASES)、API 路径 (/accounts/api/token/refresh/) 等必须保持原样,不得修改或错误转写。
核心逻辑不变: 修改后的句子必须表达与原文完全相同的技术逻辑、因果关系和功能描述。
执行指令:

请根据以上所有规则,对接下来提供的“原文”进行修改,生成符合上述特定风格的“修改后”文本。务必仔细揣摩每个规则的细节和示例,力求在风格上高度一致。注意不要过于口语化(通常情况下不会过于口语化,有一些比如至于xxx呢,这种的不要有)注意!你输出的内容不应原多于原文!应时刻记得字数和原文相符!注意!不要有‘’xxx呢‘’这种形式,如‘至于vue呢’
不要第一人称

分享一个论文降ai率的prompt,实测维普6%1
分享一个论文降ai率的prompt,实测维普6%2
其实这个自定义参数我不知道有没有用,ai让我填的我就填了,温度和top-p也是随便设置的也没对比过有什么影响。只验证了gemini2.5pro,不过2.5flash好像也可以,腾讯朱雀检测也基本为0%,但是比起pro,flash输出的质量不太好,和原文有点偏差。
输出有几个固定的口语句式,感觉不太合适放论文里,不过我已经写完论文了就没再优化。而且我即使再把大量的口语句式给改了,却也没怎么提升ai率,真不知道这ai率到底在检测什么。

用的时候一小节一小节生成,一次最好别超过1000字,最好也清空上下文,不然ai率可能会高

还有朱雀和那个speedai科研小助手检测ai率都是14%左右,降重时可以参考,别去什么paperyy检测,为了让你付费降ai故意虚标,我这篇现在还70%ai率呢