鸿蒙 PC Markdown 编辑器 1.0 候选阶段工程规划
鸿蒙 PC Markdown 编辑器 1.0 候选阶段工程规划仓库地址https://gitcode.com/VON-/codex_md_oh计划提交75d4060。进入基线G3 分享缓存收口与设备测试记录49241e2。为什么没有真机仍然可以继续工程开发OhMarkdown 的目标是鸿蒙 PC 优先真机验证当然不能省略。但“没有真机”和“所有开发必须停止”不是同一个结论。即时渲染是否共享同一文本缓冲区、版本历史是否有界、多窗口会话是否相互隔离、撤销是否保留源码这些核心风险可以先通过代码、Chromium、HarmonyOS 模拟器和自动化测试下降。真正不能做的是把模拟器写成真机把打印预览写成 PDF 文件把系统分享面板写成接收应用成功。G4 采用条件阶段流转研发工作继续发布资格不提前。G3 没有获得的外部证据全部保留到 RC 硬门槛竞争优势记分卡也不会因为阶段名称改变而自动加分。这种处理比无限期冻结更务实也比虚假完成更严格。工程可以继续积累可测试能力一旦获得真机优先执行积压矩阵任何数据丢失、权限、输入法或系统服务问题都暂停新功能。G4 的产品目标不是堆功能1.0 候选阶段包含即时渲染、结构化编辑、版本历史、多窗口、无障碍、性能、安全和发布准备。它们看起来像七八个独立模块实际围绕同一个目标让用户在鸿蒙 PC 上长期处理真实 Markdown而不是只完成一次演示。即时渲染提升专注写作版本历史降低误操作成本多窗口适合对照资料与多个工作区无障碍与键盘效率决定高频使用兼容性和安全决定文档能否长期迁移。任何一项若破坏原始 Markdown、换行或外部修改保护都会抵消表面功能带来的价值。因此 G4 的排序不是先做最显眼的动画而是先锁定文本事实来源再扩展显示与操作先定义历史边界再保存快照先建立窗口状态隔离再打开第二个窗口。当前应用基线下图来自 OhMarkdown 在 HarmonyOS MateBook Pro 2in1 模拟器中的真实主窗口。当前已经具备活动栏、工作区侧栏、多标签、源码/分栏/预览、命令入口和状态栏G4 不需要重新设计一套工作台。这张图证明 G4 有稳定承载面不证明真机性能或多窗口完成。即时渲染会成为现有视图模式的新成员版本历史适合进入侧栏或独立工具面多窗口复用同一工作台组件但每个窗口必须拥有独立会话。保持界面连续性也有产品价值。用户不需要因为进入 1.0 候选重新学习文件树、标签和保存流程研发则可以用现有 Playwright 与模拟器证据做回归对照。同一文本事实来源是第一原则OhMarkdown 当前 Web 编辑器把 CodeMirrorEditorState作为编辑期事实来源。源码、分栏和预览不会分别维护正文。G4 的即时渲染必须继续遵守这一点视觉隐藏 Markdown 标记可以由 Decoration 完成但不能把预览 DOM 变成另一个可编辑模型再反向序列化 Markdown。typeViewModesource|split|preview;interfaceEditorSessionSnapshot{state:EditorState;dirty:boolean;revision:number;}functiongetDocument():string{returneditor.state.sliceDoc();}G4-02 会把live加入模式协议但正文仍来自editor.state.doc。切换前后getDocument()必须完全相等撤销历史不重建保存基线不改变原生 Bridge 也不能收到一份由 DOM 推导的文本。这条原则是 OhMarkdown 相对传统富文本 Markdown 编辑器的重要优势显示效果可以演进文件语义始终可审计。即时渲染为何使用 DecorationCodeMirror 6 的 Decoration 与 ViewPlugin 能在不修改文档内容的前提下隐藏标记、替换视觉节点或增加部件。标题的#、强调的**、链接目标和图片语法都可以按光标位置决定显示方式。用户进入结构时恢复必要标记离开后只隐藏可安全推导的部分。constliveRenderingCompartmentnewCompartment();functioncreateEditorState(content:string):EditorState{returnEditorState.create({doc:content,extensions:[basicSetup,markdown({base:markdownLanguage}),liveRenderingCompartment.of([])]});}functionsetLiveRendering(enabled:boolean):void{editor.dispatch({effects:liveRenderingCompartment.reconfigure(enabled?createLiveRenderingExtension():[])});}这段代码表示目标结构不代表首个提交已经完成。实现时仍需处理组合输入、选择范围、语法树更新、屏幕阅读、复制和超长文档预算。文章把计划与现状分开避免将设计代码误写成已落地能力。首个纵切为什么只覆盖标题和强调Markdown 即时渲染的复杂度会快速扩散。链接包含标签与目标图片涉及异步资源代码块有语言高亮和围栏列表会改变 Enter 与缩进表格需要列布局。如果一次覆盖全部语法任何输入问题都难以定位。G4-02 只建立模式、命令、状态同步和 Decoration 框架首批覆盖 ATX 标题与成对强调标记。两类结构足以验证光标进入后恢复标记、光标离开后视觉简化、中文输入不跳动、撤销不变、保存不变和模式切换不重建文档。未覆盖语法继续显示源码。即时渲染不是非黑即白局部保守回退比错误隐藏更安全。后续 G4-03 再逐项加入链接、图片、引用、列表、代码块与任务列表每一类都有独立语料和文章。大文档必须继续降级当前编辑器在五兆代码单元以上启用minimalSetup关闭 Markdown 解析、自动换行、预览和导出增强。即时渲染依赖语法树与 Decoration更不能绕过保护模式。constLARGE_DOCUMENT_CHARACTER_THRESHOLD5*1024*1024;functioncreateEditorState(content:string):EditorState{constuseLargeDocumentSetupcontent.lengthLARGE_DOCUMENT_CHARACTER_THRESHOLD;returnEditorState.create({doc:content,extensions:[useLargeDocumentSetup?minimalSetup:basicSetup,useLargeDocumentSetup?[]:markdown({base:markdownLanguage}),useLargeDocumentSetup?[]:EditorView.lineWrapping]});}G4 会把即时渲染命令也接入!largeDocumentMode条件。大文档仍优先保住源码编辑与保存不为了展示效果重新引入语法树、DOM 或全量历史快照。产品优势来自可预测不来自在极限文件上偶尔成功。结构化编辑必须是一笔事务列表延续、缩进、自动配对和表格命令会直接修改源码与纯显示 Decoration 不同。每个命令必须计算明确的changes与selection作为一次 CodeMirror transaction 提交用户按一次撤销就能恢复操作前状态。例如表格增加一列不能先改表头、再改分隔线、最后逐行改正文让撤销分成几十次也不能格式化整张表而破坏用户有意保留的空格。G4-04 采用局部、最小修改无法可靠解析时拒绝命令并保持正文不变。中文输入法组合期间不运行自动配对或列表命令。快捷键与 Enter/Tab 处理必须识别 composition 状态避免候选尚未提交时插入 Markdown 标记。现有中文剪贴板和快捷键设备回归会继续作为基础门禁。版本历史不是第二份文档数据库版本历史的事实来源仍是用户 Markdown 文件和当前 CodeMirror 缓冲区。历史记录是可丢弃、可重建的辅助副本损坏不能阻止用户打开原文。首版不引入数据库、Git 或云同步而是使用应用沙箱中的有界快照、内容哈希和元数据。interfaceVersionHistoryRecord{version:number;documentIdentity:string;sourceFingerprint:string;contentHash:string;content:string;createdAt:number;}这只是数据需求草图正式实现前还要形成独立 ADR确定文档身份、上限、原子替换、隐私和迁移。恢复历史时不会直接静默覆盖磁盘它会把历史正文载入当前会话并标记未保存用户明确保存后才进入现有冲突保护链。版本历史如果让外部修改保护失效就不是安全功能。G4-05 必须复用文件指纹和保存前重读而不是另建绕过 DocumentService 的写入路径。历史清理要有容量预算每次按键保存完整快照会快速膨胀尤其是图片链接多、正文长的技术文档。首版需要组合时间间隔、内容哈希去重、单文档数量、单文档字节和全局字节预算。超过预算时按明确顺序清理当前打开版本和最近恢复点优先保留。清理失败不应删除用户原文也不能让普通保存失败但历史写入失败必须反馈不能显示一个实际不存在的版本。敏感正文仍只在本地沙箱日志不记录文件名、路径与内容。具体数字要根据模拟器压力和未来真机结果确定不在规划文章中伪造。设计阶段先定义可测试接口和失败语义再决定默认 20、50 或 100 个版本。多窗口首先是状态隔离在 PC 上打开第二个窗口不难困难的是两个窗口是否意外共享活动标签、当前工作区、侧栏宽度、搜索任务、自动保存计时器和 Web Controller。G4-06 要求每个窗口拥有独立会话不能把当前正文放进进程级全局变量。现有DocumentSession已经为标签隔离提供基础exportinterfaceDocumentSession{id:string;name:string;uri:string;content:string;dirty:boolean;revision:number;fingerprint:DocumentFingerprint|undefined;}exportconstMAX_OPEN_DOCUMENT_SESSIONS:number12;多窗口会在窗口范围持有会话集合。若同一文件在两个窗口打开磁盘写入仍由文件指纹和保存前重读保护不能用进程内消息假设另一个窗口一定同步。模拟器先验证状态模型物理窗口管理、触控板和系统文件关联留到真机 RC 闸门。会话恢复不能恢复错误权限重启后可以恢复标签名称、URI、工作区和视图模式但系统授予的文件能力可能已失效。应用必须重新验证 URI可读才加载失效时显示可恢复提示让用户重新选择文件不能绕过系统授权去猜测绝对路径。未保存正文继续使用 RecoveryService 的原子记录已保存标签则从磁盘读取。会话布局与正文恢复是不同数据布局损坏可以回到默认窗口正文恢复损坏必须保护当前文件并给出明确失败。G4 不会为“看起来恢复完整”而把用户所有打开文件复制进永久数据库。会话恢复只保存完成任务所需的最小元数据。无障碍不是阶段末补标签即时渲染隐藏标记后屏幕阅读器是否还能理解标题、链接与代码块多窗口打开后焦点落在哪里版本历史差异是否能用键盘选择这些问题会影响组件设计。G4-07 虽然是独立步骤但规则从 G4-02 就开始执行。图标按钮继续有可访问名称和 Tooltip核心工作流全键盘完成焦点返回编辑器。系统字体放大时工具栏、搜索选项和状态栏不能截断。RTL、Emoji、组合字符和超长中文文件名进入兼容语料Decoration 不能按 UTF-8 字节计算 CodeMirror 的 UTF-16 偏移。没有真机时可以完成 DOM/ArkUI 语义检查、键盘回归和字体布局截图系统屏幕阅读器与物理输入仍保留待验不能写成全部通过。质量工程必须绑定每个小阶段G4 不会等所有功能完成才统一测试。每个纵切至少运行相关定向用例、Playwright 全量、Debug HAP、ArkTS UnitTestBuild、ohosTest HAP 构建、模拟器可执行用例和 diff check。涉及系统能力时增加外部应用或系统界面证据。即时渲染的关键断言不是“看起来漂亮”而是切换前后源码相等、撤销历史保留、保存基线不变、组合输入稳定、未覆盖语法回退。版本历史要做损坏、空间不足和外部冲突多窗口要做状态串扰与同文件保存竞争。性能数字按环境分组。Chromium 可以做算法回归模拟器可以做 ArkTS/ArkWeb 整链真机才能形成 Release P95。三类结果不会互相冒充。G4 的架构边界初始保持 Level 2、D2继续使用 ArkUI、ArkWeb、CodeMirror 和当前 entry 模块在现有服务边界增加真实需要的历史或窗口能力。不拆 HAR不引入通用事件总线、全局状态框架或仓储层。出现以下情况必须暂停并记录新 ADR即时渲染需要第二文本模型版本历史必须引入数据库多窗口需要重构应用模块跨窗口同步需要新持久化协议任何方案要求开放 ArkWeb 文件或网络能力。边界的目的不是拒绝合理架构升级而是避免在功能压力下悄悄改变文件安全模型。真正需要升级时应先把收益、迁移、失败和回退写清楚。外部债务如何并行保留G4 开发期间G3 的 PDF、Markdown 分享接收方、鸿蒙 PC 真机、竞品统一任务、50-100 人封闭测试、规模化强杀、远程 CI 和内部连续试用继续保留。它们不会阻止每一行代码却会阻止 RC 退出和公开发布。状态表必须同时显示“G4 已启动”和“发布硬门槛未满足”。如果只写前者会让团队误判产品成熟度如果只写后者又会让可执行工程停滞。条件流转的价值就在于把两个事实同时保存。第四阶段文章怎样同步第四阶段不预设固定 20 篇也不等阶段结束再集中写。每完成一个可独立验收的小阶段立即增加一篇独立技术文章。标题包含鸿蒙与 PC正文不少于 5000 字符包含公开仓库、真实代码、提交哈希、测试结果和至少一张应用内部图片。文章不能用设计稿冒充实现。本文是 G4-01 计划与条件闸门的完成记录代码示例中凡属目标结构均明确标注G4-02 完成后会另写即时渲染基础文章使用最终代码和模拟器截图。文章仍仅保存在本地忽略目录不推送公开仓库。下一步工程动作G4-02 首先增加live视图模式、命令路由与可动态重配置的 Decoration 容器再实现标题与强调的最小视觉规则。测试会先锁定模式切换不改正文、光标进入恢复标记、中文输入与撤销稳定、大文档禁用。该纵切通过后才扩大链接、图片、引用、列表和代码块。每扩大一种结构都需要语法边界、选择行为、复制、无障碍和错误回退证据。这样即时渲染不会变成一次高风险重写而是一系列可验证增量。结论鸿蒙 PC 真机缺失改变了验证排期不改变产品标准。OhMarkdown 通过 ADR-0003 将 G3 标记为研发条件通过保留所有外部债务为 RC 硬门槛并以提交75d4060启动 G4-01。G4 的核心路线已经明确同一 CodeMirror 文本事实来源上的即时渲染有界且不覆盖外部修改的版本历史窗口范围隔离的多窗口以及贯穿每个纵切的无障碍、性能、安全和文章记录。下一步进入即时渲染基础而公开发布仍必须等待真实系统、真实设备和真实用户证据。

相关新闻

Fast-WAM 方法原理详解:把“想象未来”留在训练中

Fast-WAM 方法原理详解:把“想象未来”留在训练中

Fast-WAM 要解决的不是“怎样更快地生成未来视频”,而是一个更根本的问题: World Action Model(WAM)的收益,到底主要来自训练时学习预测未来,还是来自推理时真的把未来视频生成出来? 传统 WAM 常…

2026/7/22 11:31:51阅读更多 →
大模型API代币消耗陷阱与成本优化实战指南

大模型API代币消耗陷阱与成本优化实战指南

最近在折腾大模型 API 调用时,我遇到了一个让所有开发者都头疼的问题:明明想方设法优化提示词、精简输入输出,结果在反复调试的过程中,代币消耗反而比预期高出好几倍。这就像为了省油而不断调整驾驶方式,最后却发现油表…

2026/7/22 11:31:51阅读更多 →
机器学习入门:从理论到实践的系统学习指南

机器学习入门:从理论到实践的系统学习指南

机器学习是让计算机系统通过数据自动改进性能的科学,它让计算机能够从经验中学习,而不是仅仅依赖明确的编程指令。在实际项目中,机器学习已经广泛应用于推荐系统、图像识别、自然语言处理等领域,但很多初学者在入门时容易陷入两个…

2026/7/22 11:31:51阅读更多 →
从命令行管理文件

从命令行管理文件

1. 怎么理解“ Linux 中一切皆文件"? Linux 是如何组织文件的?答:(1)意思是Linux可以把硬件设备、进程、网络连接等都抽象成文件来操作。(2)Linux用目录树结构组织文件,最顶层是根目录…

2026/7/22 12:32:00阅读更多 →
模块4:网络管理及互联网通信实战

模块4:网络管理及互联网通信实战

模块4:网络管理及互联网通信实战面向 Linux 云计算工程师的面试/实战进阶笔记。本篇全部示例均可运行,关键结论均来自对真实云主机的实连采集(非虚构)。配套源码已开源,文末附仓库地址与复现方法。0. 实验环境与开篇说…

2026/7/22 12:32:00阅读更多 →
低代码平台在数据可视化场景的应用:AI辅助的图表推荐与配置生成

低代码平台在数据可视化场景的应用:AI辅助的图表推荐与配置生成

低代码平台在数据可视化场景的应用:AI辅助的图表推荐与配置生成 数据可视化的开发瓶颈不在图表库本身,而在于「选择什么图表」和「如何配置图表参数」。ECharts、AntV 等图表库提供了丰富的配置项,但开发者需要花费大量时间在文档和实践之间…

2026/7/22 12:32:00阅读更多 →
移动端Hybrid应用的性能治理:WebView启动、离线包与JSBridge调优

移动端Hybrid应用的性能治理:WebView启动、离线包与JSBridge调优

移动端Hybrid应用的性能治理:WebView启动、离线包与JSBridge调优 Hybrid 应用在「跨平台效率」和「原生体验」之间长期存在张力。性能治理的核心不是消除 WebView 与 Native 的差距,而是在可接受成本内,将可感知的性能指标压到用户可忽略的水…

2026/7/22 12:32:00阅读更多 →
AI工具复盘总踩坑?这7个致命盲区90%团队至今未察觉:从数据漂移到ROI失真全拆解

AI工具复盘总踩坑?这7个致命盲区90%团队至今未察觉:从数据漂移到ROI失真全拆解

更多请点击: https://codechina.net 第一章:AI工具月度复盘的核心价值与认知重构 在快节奏的技术演进中,AI工具的迭代周期已压缩至以周甚至天为单位。若仅依赖直觉或碎片化体验评估工具效能,极易陷入“工具疲劳”与“能力错配”的…

2026/7/22 12:32:00阅读更多 →
Python在线代码运行工具评测与使用指南

Python在线代码运行工具评测与使用指南

1. Python在线代码运行工具的价值与选择标准对于Python初学者和需要快速验证代码片段的开发者来说,在线代码运行工具简直是救命稻草。不用折腾本地环境配置,打开浏览器就能写代码、看结果,这种即时反馈的学习体验实在太重要了。好的Python在线…

2026/7/22 12:29:59阅读更多 →
Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 0:53:59阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 0:53:59阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 0:53:59阅读更多 →
中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业小程序开发公司怎么选:预算、上手和售后避坑指南

中小企业做小程序,最常见的矛盾是预算有限,但又不希望功能太单薄;没有技术团队,但又希望后续能自己运营;想快速上线,又担心隐性收费和售后失联。选型时如果只看“低价套餐”或“案例数量”,很容…

2026/7/22 0:01:17阅读更多 →
GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

GEO优化如何沉淀长期内容资产?广拓时代谈AI搜索时代的内容ROI

企业做营销,最怕钱花完了,资产没有留下。 效果广告能带来一段时间的曝光,但预算停止后,流量往往也随之停止。短视频内容可能在几天内冲高,也可能很快沉下去。AI搜索时代,企业需要重新思考一个问题&#xff…

2026/7/22 0:01:17阅读更多 →
Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复

Agent 终态判定:何时该停止思考、给出最终回复 一、你的 Agent 在"再想想"的循环里绕了 12 轮,用户已经关窗口了 Agent 与人最大的区别是:人知道什么时候该停下来给答案,Agent 会一直"想"下去。你给 Agent 接…

2026/7/22 0:01:17阅读更多 →
YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

YOLOv8推理性能优化:从1.2FPS到35FPS的全链路加速实践

如果你在部署 YOLOv8 时,发现推理速度只有可怜的 1-2 FPS,而别人的演示视频却能跑到 30 FPS 以上,那么问题很可能不在模型本身,而在于你的整个处理链路。很多开发者拿到一个训练好的 YOLOv8 模型后,会直接使用官方示例…

2026/7/21 22:53:50阅读更多 →
Coze与Dify对比指南:低代码AI应用开发从入门到实战

Coze与Dify对比指南:低代码AI应用开发从入门到实战

1. 从零到一:为什么你需要了解 Coze 和 Dify?如果你对 AI 应用开发感兴趣,但一看到“大模型”、“智能体”、“工作流”这些词就头疼,觉得门槛太高,那这篇文章就是为你准备的。很多开发者,包括我自己&#…

2026/7/21 18:53:30阅读更多 →
AI生图工具怎么选?2026年6月版实测对比

AI生图工具怎么选?2026年6月版实测对比

做自媒体的朋友应该都有体会:配图一直是个让人头疼的问题。2026年,AI生图工具已经非常成熟了,但工具太多反而不知道怎么选。以下是截至2026年6月我对主流AI生图工具的实测对比。Midjourney V8.1:速度之王2026年6月11日&#xff0c…

2026/7/21 18:53:30阅读更多 →