长文摘要 + 要点 —— AI 信息提炼引擎,鸿蒙原生应用深度解析

一、引言

在信息过载的时代,我们每天面对海量的文章、报告和资讯。如何快速获取核心信息,提炼关键要点,是知识工作者的迫切需求。长文摘要 + 要点 这款鸿蒙原生 AI 应用,正是为了解决这一痛点:用户只需粘贴长文内容,选择摘要长度(一句话/短/中),AI 即可自动生成包含摘要、关键要点和原文金句的三级输出。

本文将从架构设计、鸿蒙技术深度解析、AI 亮点、技术挑战与用户体验设计五个维度,全面复盘这款应用的技术实现。
在这里插入图片描述

二、应用架构设计

2.1 整体架构

应用采用 MVS(Model-View-Service) 三层架构:

  • Model 层(ArticleSummaryModel.ets):定义 SummaryData(摘要数据)、ASMessage(消息记录)、AS_LENGTHS(摘要长度选项)和 AS_WELCOME(欢迎语)等。
  • View 层(ArticleSummaryPage.ets):基于 @Component 的声明式 UI,包含 TextArea 长文输入区、Flex 长度选择区、Scroll 结果展示区。
  • Service 层(ArticleSummaryService.ets):封装 AI 摘要引擎,根据长度偏好返回结构化的摘要数据。

2.2 数据流

用户粘贴长文 → @State bigText 更新
用户选择摘要长度 → @State selectedLength 更新
点击"生成摘要" → 调用 service.getSummary()
Service 返回 SummaryData → @State currentData 更新
@Builder 三级摘要渲染

三、鸿蒙技术深度解析

3.1 @State 状态管理

@State messages: ASMessage[] = []
@State bigText: string = ''
@State selectedLength: string = ''
@State currentData: SummaryData | null = null
@State isLoading: boolean = false

5 个核心状态变量

  • messages:对话历史记录
  • bigText:长文输入绑定
  • selectedLength:摘要长度选择(一句话/短/中)
  • currentData:摘要结果存储
  • isLoading:加载状态

3.2 @Builder 三级摘要输出

@Builder
buildResultCard(data: SummaryData) {
  Column() {
    // 第一级:摘要 - 青色
    Column() {
      Text('📄 摘要')
        .fontSize(14)
        .fontWeight(FontWeight.Bold)
        .fontColor(COLOR_PRIMARY)  // #14B8A6
      Text(data.summary)
        .fontSize(14)
        .lineHeight(24)
    }
    .border({ width: 1, color: COLOR_BORDER })

    // 第二级:关键要点 - 默认色
    if (data.points.length > 0) {
      Column() {
        Text('🔑 关键要点')
          .fontSize(14)
          .fontWeight(FontWeight.Bold)
        ForEach(data.points, (point: string) => {
          Row() {
            Text('•').fontColor(COLOR_PRIMARY)
            Text(point)
          }
        })
      }
      .border({ width: 1, color: COLOR_BORDER })
    }

    // 第三级:原文金句 - 黄色
    if (data.quotes.length > 0) {
      Column() {
        Text('💬 原文金句')
          .fontSize(14)
          .fontWeight(FontWeight.Bold)
          .fontColor('#F59E0B')
        ForEach(data.quotes, (quote: string) => {
          Row() {
            Text('"').fontSize(20).fontColor(COLOR_PRIMARY)
            Text(quote)
              .fontStyle(FontStyle.Italic)
          }
        })
      }
      .border({ width: 1, color: '#FDE68A' })
    }
  }
}

三级摘要结构

级别 标题 颜色 内容特点
📄 摘要 青色 #14B8A6 核心内容概括,长度自适应
🔑 关键要点 默认色 不超过 10 条的结构化要点
💬 原文金句 黄色 #F59E0B 原文精彩段落,斜体展示

3.3 Flex + ForEach 长度选择

Flex({ wrap: FlexWrap.Wrap, justifyContent: FlexAlign.Start }) {
  ForEach(AS_LENGTHS, (item: string) => {
    Text(item)
      .fontSize(14)
      .fontWeight(selected === item ? FontWeight.Bold : FontWeight.Normal)
      .fontColor(selected === item ? COLOR_PRIMARY : COLOR_TEXT)
      .padding({ left: 14, right: 14, top: 8, bottom: 8 })
      .backgroundColor(selected === item ? '#CCFBF1' : COLOR_CARD)
      .borderRadius(16)
      .border({ width: 1, color: selected === item ? COLOR_PRIMARY : COLOR_BORDER })
      .margin({ right: 8, bottom: 8 })
      .onClick(() => { onClick(item) })
  })
}

3 种摘要长度

  • 一句话:极致简洁,一句话概括核心内容
  • :段落级摘要,覆盖主要观点
  • :详细摘要,包含论证过程和关键细节

3.4 TextArea + Scroll 组合

TextArea({ text: this.bigText, placeholder: '粘贴需要摘要的长文内容...' })
  .height(120)
  .onChange((val: string) => { this.bigText = val })

Scroll() {
  Column() {
    this.buildResultCard(this.currentData)
  }
  .padding({ bottom: 20 })
}
.layoutWeight(1)
.scrollBar(BarState.Off)

3.5 原文金句斜体展示

Text(quote)
  .fontSize(13)
  .fontColor(COLOR_TEXT_SEC)
  .lineHeight(20)
  .fontStyle(FontStyle.Italic)

鸿蒙 ArkTS 的 FontStyle.Italic 实现了斜体效果,使原文金句在视觉上与普通内容区分开,突出其"引用"属性。

四、AI 应用亮点分析

4.1 3 种长度自适应

AI 根据用户选择的摘要长度,输出不同粒度的摘要内容:

长度 输出格式 字数范围 适用场景
一句话 单句 50-100 字 快速了解文章主题
段落 200-400 字 需要了解核心论点
多段落 800-1200 字 深入理解文章内容

以同一篇文章为例,三种长度的输出对比:

一句话

“本文探讨了人工智能技术在医疗领域的应用现状与未来趋势,指出 AI 辅助诊断已显著提升诊疗效率和准确率,但数据隐私和伦理问题仍是亟待解决的关键挑战。”

(段落级):

“本文系统梳理了人工智能在医疗领域的主要应用场景,包括影像辅助诊断、药物研发、病历智能分析等。研究表明,AI 在肺部 CT 结节检测、眼底病变筛查等方面的准确率已超过 90%……”

(详细级):

“本文全面探讨了人工智能在医疗健康领域的应用现状、关键挑战与未来发展趋势。在应用层面,AI 已渗透到医疗的多个环节……在挑战层面,文章指出三大核心问题……展望未来,文章认为 AI 不会取代医生,而是成为医生的’超级助手’……”

4.2 要点不超过 10 条

AI 生成的关键要点严格控制在 10 条以内,确保信息的可消化性:

  • 一句话:3 条要点(最核心)
  • :4 条要点(主要观点)
  • :6 条要点(全面覆盖)

要点采用"主题 + 关键信息"的格式,如:

  • “AI 辅助诊断是核心主题”
  • “三大核心挑战:数据孤岛、算法黑箱、监管缺失”

4.3 原文金句高亮

AI 从原文中自动提取精彩语句作为"金句",并用引号和斜体突出展示。这些金句通常满足以下条件:

  • 包含核心观点的陈述
  • 表达方式精彩有力
  • 具有独立引用价值

例如:

“AI 不是要取代医生,而是让医生变得更强大”
“数据是 AI 的燃料,隐私是 AI 的边界”

4.4 动态内容适配

虽然当前版本使用模拟数据,但架构设计考虑了动态内容适配:

  • 输入的文本内容会影响输出的摘要、要点和金句
  • 不同长度的文章自动适配不同的摘要粒度
  • 金句提取算法根据文章类型调整

五、关键技术挑战与解决方案

5.1 挑战一:摘要长度的精确控制

问题:不同用户对摘要长度的需求不同,需要在保持信息完整性的同时控制字数。

解决方案:定义三档长度规格——一句话(单句)、短(段落)、中(多段落),每档有明确的信息密度要求。一句话摘要只保留最核心的主题和结论,短摘要覆盖主要论据,中摘要包含论证过程和细节。

5.2 挑战二:要点提取的颗粒度

问题:要点的颗粒度需要适中,太粗会丢失信息,太细会变成逐段概括。

解决方案:每个要点对应一个独立的信息单元,采用"主谓宾"结构确保语义完整。要点之间按逻辑顺序排列,形成连贯的知识链条。

5.3 挑战三:金句的自动识别

问题:从长文中自动识别"金句级别的精彩语句"需要语言理解能力。

解决方案:金句识别综合考量以下维度——信息密度、表达独特性、独立完整性。当前使用预设数据模拟,真实场景下可接入大模型进行语义分析。

六、用户体验设计

6.1 视觉设计

  • 清新蓝绿色系:以 #F0FDFA 为主背景色,搭配 #14B8A6 主色,传递冷静、高效的品牌感受
  • 三层递进结构:摘要 → 要点 → 金句,信息密度递减
  • 斜体金句:使用 FontStyle.Italic 让金句在视觉上脱颖而出

6.2 交互设计

  • 三步引导:长文输入 → 长度选择 → 生成摘要
  • 加载反馈:显示"📝 正在生成摘要……"提示
  • 一键重置:清空所有输入

6.3 效率设计

  • 摘要输出采用"由总到分"的结构(先摘要 → 再要点 → 最后金句)
  • 要点采用列表格式,便于快速扫描
  • 金句使用引号和斜体,一眼可识别

七、总结

长文摘要 + 要点 应用通过鸿蒙原生技术栈,实现了一款高效的信息提炼工具。在技术层面,@State 响应式状态管理确保了实时同步,@Builder 三级输出结构清晰美观,Flex + ForEach + Scroll 提供了流畅的交互体验。在 AI 层面,3 种长度自适应、要点不超过 10 条、原文金句高亮,体现了 AI 在信息处理领域的实用价值。

这款应用的核心价值在于:将信息过载转化为知识精华。在信息爆炸的时代,高效的信息提炼能力本身就是一种核心竞争力。


技术栈:HarmonyOS ArkTS · 声明式 UI · @State · @Builder · TextArea · Flex · ForEach · Scroll · FontStyle.Italic

Logo

作为“人工智能6S店”的官方数字引擎,为AI开发者与企业提供一个覆盖软硬件全栈、一站式门户。

更多推荐