高风险分块与「精确命中」保护:为何有时跳过写回

简介: 本文解析保密检查功能实现:基于内置助手`analysis.security-check`,通过结构化提示词、分块处理与正则抽取命中片段,实现高风险内容识别与批注。强调上下文研判、精确锚点及非定密属性,适用于技术理解与内部培训。(239字)

摘要

本文围绕标题所述主题,结合本仓库当前源码行进行说明。仅供技术理解与内部培训,不构成定密、法务或密码测评结论。文中代码块均摘自本地仓库对应路径与行号。

正文

0. 结论先行

结论先行:保密检查由内置助手触发大模型按模板输出审查意见,程序再从摘要中抽取命中片段并尝试挂批注。长文档依赖分块与结构化 JSON 提示。下文每节先说明要点,紧接着给出仓库中的对应源码片段。

本篇标题:高风险分块与「精确命中」保护:为何有时跳过写回

1. 助手标识与默认写回方式

保密检查对应内置助手 id 为 analysis.security-check。下列片段展示其在注册表中的默认动作与输入来源等字段,便于与界面行为对照。

// src/utils/assistantRegistry.js 第653-667行
  {
   
    id: 'analysis.security-check',
    label: '保密检查',
    shortLabel: '保密检查',
    group: 'analysis',
    modelType: 'chat',
    defaultModelCategory: 'chat',
    supportsRibbon: true,
    defaultDisplayLocations: ['ribbon-main'],
    allowedActions: ['comment', 'link-comment', 'insert', 'append', 'none'],
    defaultAction: 'link-comment',
    defaultOutputFormat: 'markdown',
    defaultInputSource: INPUT_SOURCE_DOCUMENT,
    description: '基于关键词和上下文检查文档中的涉密、涉军、单位名称、密级标识和敏感业务信息风险。',

2. 研判原则写入提示词模板

研判原则与风险级别枚举写在 userPromptTemplate 的长模板中,模型据此输出 Markdown 小节。下列片段为模板中研判原则与风险级别相关行。

// src/utils/assistantRegistry.js 第704-713行
研判原则:
1. 关键词命中不等于泄密,必须结合上下文判断,不要机械命中即报高风险
2. 对常见公开词、泛化称谓、新闻公开语境、教材示例语境,要谨慎降噪,避免误报
3. 仅依据原文内容作出审慎判断,不要臆测背景、来源、真实单位或法律结论
4. 对每项风险必须说明:命中片段、风险类别、风险级别、判断依据、建议处理方式
5. 风险级别统一使用:
   - 高风险:直接出现密级标识、具体部队/单位身份、具体部署计划、未公开内部编号、明确敏感联系人信息等
   - 中风险:出现敏感关键词且上下文指向内部事项,但是否涉密仍需人工确认
   - 低风险或待人工复核:存在可疑词或敏感线索,但公开性、敏感性、上下文不足,暂不能直接判定
6. 如果文本未发现明显保密风险,明确写“未发现明显保密风险”

3. Ribbon 按钮如何启动该助手

功能区按钮在 ribbon 的 OnAction 分支中调用 executeAssistantFromRibbon,并传入 taskTitle。

// src/components/ribbon.js 第3364-3370行
    // 脱密分组
    case 'btnDocumentDeclassifyCheck':
      executeAssistantFromRibbon('analysis.security-check', {
    taskTitle: '保密检查' }).catch((e) => {
   
        console.error('保密检查失败:', e)
        alert('保密检查失败: ' + (e?.message || e))
      })
      break

4. 任务运行器中的专项提示

对保密检查助手,任务运行器追加一条最佳实践说明,强调关键词命中须结合上下文分级。

// src/utils/assistantTaskRunner.js 第310-312行
  if (assistantId === 'analysis.security-check') {
   
    return '保密检查时,关键词命中必须结合上下文分级判断;避免武断下结论,并明确哪些内容需要人工复核。'
  }

5. 结构化批次系统提示骨架

长文档走结构化 JSON 批次时,buildStructuredBatchInstruction 拼接 schemaVersion、模式说明与 ChunkText 约束。

// src/utils/assistantStructuredPipeline.js 第90-104行
export function buildStructuredBatchInstruction(assistantId, options = {
   }) {
   
  const mode = getStructuredAssistantMode(assistantId)
  return [
    `你必须只输出一个合法 JSON 对象,schemaVersion 固定为 "${
     STRUCTURED_PIPELINE_SCHEMA_VERSION}"。`,
    '不要输出 Markdown,不要输出 JSON 之外的解释。',
    getModeSpecificInstruction(mode, options),
    getStructuredJsonAnchorExtraRules(assistantId, options.documentAction),
    '你将收到一个带 ChunkMeta / LineMap / ChunkText 的结构化原文块,所有定位都必须以 ChunkText 为唯一依据。',
    String(options.documentAction || '').trim() === 'replace'
      ? '当文档动作是 replace 时,只有在 originalText 可以从 ChunkText 中精确截取时才输出 replace;否则改为 comment。'
      : '',
    '统一 JSON 结构如下:',
    '{"schemaVersion":"","mode":"","summary":"","content":"","operations":[{"type":"replace|comment|insert-after|prepend|append|none","target":"absolute-range|chunk-relative-range|text-anchor|paragraph-range","start":0,"end":0,"originalText":"","replacementText":"","commentText":"","reason":"","suggestion":"","confidence":"high|medium|low","paragraphIndex":0,"prefix":"","suffix":"","sentence":""}]}',
    '若没有可执行操作,operations 返回 [];若没有正文结果,content 返回空字符串。'
  ].filter(Boolean).join('\n')

6. 从 Markdown 摘要抽取命中片段

程序不直接信任自由格式,而用 extractHitFragmentsFromSecurityCheckMarkdown 做多模式正则抽取,供后续批注锚点。

// src/utils/structuredCommentPolicy.js 第22-52行
export function extractHitFragmentsFromSecurityCheckMarkdown(markdown) {
   
  const text = String(markdown || '')
  const out = []
  const seen = new Set()
  const add = (raw) => {
   
    let t = String(raw || '').trim()
    t = t.replace(/^[`「'"“]+|[`'"”]+$/g, '').replace(/\*\*/g, '').trim()
    if (t.length < 2 || seen.has(t)) return
    if (/^(无|暂无|未发现|没有|不适用)\s*$/u.test(t)) return
    seen.add(t)
    out.push(t)
  }
  let m
  // 模型常见变体:- **命中片段:** `原文`(加粗标签 + 中英文冒号 + 反引号)
  const reBacktickPatterns = [
    /\*\*命中片段[:]\*\*\s*`([^`\n]+)`/g,
    /[-*]\s*\*\*命中片段[::]\*\*\s*`([^`\n]+)`/g,
    /[-*]\s*\*{
   1,2}\s*命中片段\s*\*{
   1,2}\s*[:]\s*`([^`\n]+)`/g,
    /命中片段\s*\*{0,2}\s*[::]\s*\*{0,2}\s*`([^`\n]+)`/g
  ]
  for (const reBacktick of reBacktickPatterns) {
   
    while ((m = reBacktick.exec(text)) !== null) add(m[1])
  }
  const reLinePatterns = [
    /[-*]\s*\*\*命中片段[:]\*\*\s*(?!`)([^\n]+)/g,
    /[-*]\s*命中片段[::]\s*(?!`)([^\n]+)/g
  ]
  for (const reLine of reLinePatterns) {
   
    while ((m = reLine.exec(text)) !== null) add(m[1])
  }
  return out

7. 保密检查在结构化 JSON 下的额外锚点规则

getStructuredJsonAnchorExtraRules 为保密检查追加「命中片段须逐字来自 ChunkText」等说明,与批注类文档动作组合使用。

// src/utils/structuredCommentPolicy.js 第119-127行
export function getStructuredJsonAnchorExtraRules(assistantId, documentAction = '') {
   
  const id = String(assistantId || '').trim()
  const act = String(documentAction || '').trim()
  const parts = []
  if (id === ANALYSIS_SECURITY_CHECK_ID) {
   
    parts.push([
      '保密检查:须将完整审查结论写入 JSON 的 summary 字段;summary 内仍使用模板要求的 Markdown 小节(## 高风险项 等)。',
      '每条风险项必须包含「命中片段」且反引号内为 ChunkText 中的连续原文(逐字照抄);推荐格式:- **命中片段:** `原文片段`(加粗与否均可,反引号内必须与正文一致);operations 可留空 []。'
    ].join('\n'))

8. 与定密流程的边界

README 已说明检查结论仅为辅助参考。实现上判断来自大模型与提示词,不包含法定密级鉴定接口。组织对外处置仍须走正式流程。

相关文章
|
1天前
|
JSON 数据安全/隐私保护 数据格式
模型输出 Markdown 后,系统如何抽取「命中片段」做锚点批注
本文详解保密检查功能实现:内置助手(id: analysis.security-check)调用大模型输出Markdown审查意见,系统通过多模式正则从摘要中精准抽取「命中片段」作为批注锚点;长文档采用结构化JSON分块处理,强调上下文分级研判与原文逐字匹配,仅作技术辅助参考。
|
1天前
|
程序员 数据库 数据安全/隐私保护
程序员进阶工程师必备技能之架构落地与组件封装(一)
教程来源 https://oplhc.cn/ 本文剖析程序员从“写代码”到“做架构”的关键跃迁,直击3–5年开发者面临的系统僵化困境。揭示架构本质是解决“如何组织”而非“如何实现”,详解组件封装、分层设计(四层/六边形/CQRS)、五大核心原则及落地实践,助你构建可维护、易扩展、高协作的复杂系统。
|
1天前
|
JSON 数据安全/隐私保护 数据格式
「保密检查」助手如何向模型描述风险类别与研判原则
本文详解“保密检查”助手的技术实现:从助手注册、研判原则提示词设计,到Ribbon触发、结构化JSON批处理及命中片段抽取逻辑,强调上下文分级判断与人工复核边界,仅供内部技术理解与培训使用。(239字)
|
2天前
|
人工智能 弹性计算 数据库
阿里云新用户和老用户十大最新活动参考:云服务器抢购与特惠,域名注册优惠,AI产品特惠,百炼优惠券等
阿里云2026年面向新老用户推出的活动覆盖计算、存储、数据库、AI等全品类。云服务器方面,轻量应用服务器38元/年限量抢购,经济型e实例99元/年、u1实例199元/年续费同价;另有多规格实例低至3折起。组合购套餐覆盖建站、电商等场景,低至38元起。AI领域,Qwen3.7-Max推理服务限时5折,HappyHorse视频模型8折,新用户享7000万免费tokens。此外还有Token Plan多档订阅、百炼"先用后返"返券、160+云产品最长12个月免费试用等权益,构建从基础算力到前沿AI的完整福利矩阵,助力各类用户低成本上云与AI创新。
|
2天前
|
人工智能 弹性计算 API
从入门到精通!阿里云三种方式部署Hermes Agent完整步骤汇总
随着AI智能体技术快速普及,Hermes Agent凭借自进化学习、持久记忆、多工具协同的核心能力,成为开发者与企业搭建自动化任务平台的热门选择。不同于普通对话机器人,Hermes能够自主拆解任务、调用浏览器、代码解释器、文件管理等工具,实现办公自动化、项目开发、数据分析等全场景落地。
106 2
|
2天前
|
人工智能 自然语言处理 监控
阿里云百炼千问Qwen3.7-Max全面解析:核心能力、技术特性与订阅使用全指南
在智能应用与AI智能体飞速发展的2026年,大模型的推理能力、长文本处理、多模态理解以及工具调用能力,已经成为企业开发、科研创作、自动化办公的核心刚需。阿里云百炼正式推出**Qwen3.7-Max**旗舰大模型,作为通义千问系列综合实力最强的版本,直接对标国际主流高端闭源大模型,专为复杂逻辑推理、长周期自主任务、多模态分析、企业级业务场景打造。
200 3
|
1天前
|
人工智能 开发工具 git
Claude Code 新手极速上手指南 从安装到国产模型配置教程+常用命令详解
在AI编程工具快速迭代的当下,Claude Code凭借终端原生、任务驱动、自主规划执行的独特优势,已经成为开发者必备效率工具。和传统IDE代码补全插件不同,它不需要依赖笨重图形界面,全程在终端运行,能够自主读懂项目结构、拆解开发任务、批量修改文件、执行终端指令、管理Git版本仓库,覆盖从项目初始化、代码编写、Bug修复到项目部署全流程。
107 0
|
1天前
|
存储 弹性计算 安全
阿里云服务器8核16G配置价格:不同实例原价收费标准,热门实例活动价格与省钱选购指南
阿里云8核16G云服务器收费价格与选购指南:该配置涵盖经济型e、通用算力型u1/u2i/u2a、计算型c9i/c9a等多款实例,原价最低319.68元/月起,活动优惠价最低5,958.52元/年(1年合约)。本文对比了各实例的原价收费标准,同时提供省钱策略,建议根据业务负载选型,并结合长期合约与优惠券实现成本最优。
|
23小时前
|
存储 安全 数据安全/隐私保护
数据加密与防泄密系统如何协同建设:为什么只做其中一个通常不够
企业数据安全常陷于“只加密”或“只防泄密”的单点困境:加密保文件离手后安全,却控不住使用中泄露;DLP管流转过程,却无法约束流出后的数据。Ping64创新融合二者,以敏感识别为起点,打通加密保护、行为控制、审批审计,构建闭环协同治理体系,实现静态防护与动态管控一体化。
|
1天前
|
JSON 数据安全/隐私保护 数据格式
结构化分批(ChunkMeta)如何约束模型只依据 ChunkText 定位
本文解析保密检查功能实现:通过内置助手`analysis.security-check`,结合结构化分块(ChunkMeta)与严格提示词约束,确保大模型仅依据`ChunkText`原文定位风险片段;支持JSON结构化输出、多模式正则抽取命中内容,并明确技术辅助边界——不替代法定密级鉴定。

热门文章

最新文章