生态第三方包

言章:Markdown

言章 1.0.1 的安全 Markdown 节点、HTML 渲染、目录、预算和可信扩展边界。

言章(yanxu-markdown)是言序的安全 Markdown 解析、结构化节点、目录和 HTML 渲染库。当前稳定版为 1.0.1:普通文字、代码、链接属性与标题锚点都通过言页的安全构造边界输出,原始 HTML 不会直接透传。

版本与安装

项目稳定值
包名言章
版本 / 公开标签1.0.1 / v1.0.1
最低言序1.1.12
稳定依赖言页 1.0.0,标签 v1.0.0,范围 ^1.0
构建目标字节码
yanbao add 言章 \
  --git https://github.com/yanxulang/yanxu-markdown.git \
  --rev v1.0.1 \
  --version '^1.0'
[依赖]
言章 = { git = "https://github.com/yanxulang/yanxu-markdown.git", 修订 = "v1.0.1", 版 = "^1.0" }

v1.0.1 是修复锁文件内容校验漂移后的正式补丁标签;不要继续固定旧的 v1.0.0。应提交生成的 言序.lock,让言章、言页及其修订与内容校验一同锁定。

核心能力:解析、渲染与目录

「包:言章」 言章;

 源码: 「# 言章 <安全>\n\n欢迎使用 **言序** 和 [文档](https://yanxu.dev)。」

 各节点:<> 言章.解析(源码);
 HTML: 言章.渲染节点(各节点);
 各目录:<> 言章.目录(源码);

 HTML;
 各目录;

HTML 中的 <安全>会被转义,受支持的 Markdown 标记正常渲染。只需要 HTML 时可直接调用 渲染HTML;需要检查或改写块结构时先调用 解析,再用 渲染节点

重复标题会在单份文档内生成确定且唯一的 Unicode 锚点:

 各项  言章.目录「# 入门\n\n## 入门\n\n## 入门」);

三个锚点依次为 入门入门-2入门-3。跨文档全局唯一仍需要调用方增加命名空间。

支持的语法与入口

支持范围包括:

  • 一至六级标题、段落和分隔线;
  • 平坦的有序/无序列表与引用;
  • 严格闭合的三个反引号围栏代码和行内代码;
  • 粗体、强调、删除线、链接和图片;
  • 唯一标题锚点与目录。
场景入口
直接得到安全 HTML渲染HTML
为不可信输入收紧预算渲染受限
检查或改写块节点解析解析受限
渲染调用方节点渲染节点渲染节点受限
只处理内联标记渲染内联渲染内联受限
生成目录目录目录受限
逐片写出 HTML流式渲染流式渲染节点
不使用异常控制流尝试解析尝试渲染

手工节点不是受信输入。渲染器会拒绝未知节点类型、缺失字段、错误字段类型、越界标题层级和非文字列表项目。

对不可信输入设置预算

 限制: {
    「最大输入字符」65536
    「最大行数」4096
    「最大块节点」2048
    「最大列表项目」512
    「最大内联深度」16
    「最大输出字符」262144
    「最大片段」8192
};

 HTML: 言章.渲染受限(源码,限制);

面向外部内容应使用受限入口,而不是把库的较大硬上限当作业务配额。输出预算按 Unicode 字符计数,网络响应或文件写出还需在应用层限制 UTF-8 字节与总耗时。

流式输出

 写响应片段(片段:):
    # 交给调用方拥有的有界写入器



 统计: 言章.流式渲染(源码,写响应片段,限制);
 统计【「块节点数」】;
 统计【「字符数」】;
 统计【「片段数」】;

流式 API 先完成 Markdown 块解析,再逐块输出 HTML;它减少完整 HTML 的额外收集,但不会消除完整节点列。回调是同步的,背压、取消、超时和外部写入错误由调用方处理。若后续片段失败,已经写出的片段不会自动撤回;需要原子正文时使用 渲染受限

链接与可信扩展

普通链接允许 HTTP、HTTPS、邮件、电话、相对地址和片段,并拒绝控制字符、脚本和数据协议。图片地址比普通链接更严格,还拒绝邮件、电话和片段地址。协议检查不验证主机信誉、重定向、同源或业务授权。

扩展块是显式信任升级:

 写可信片段(写入法:):
    写入法「<mark>已审计常量</mark>」);



 节点  言章.扩展块(写可信片段);

扩展输出仍受总输出预算约束,但不会被清洗或转义。生成器及其输入必须全部可信,不能把用户文字直接插入扩展片段。

错误、权限与安全边界

 结果: 言章.尝试渲染(源码);

 结果【「成功」
 结果【「错误」】【「代码」】;

公开失败使用稳定 YANZHANG_*代码;捕获抛出型入口后也可调用 错误详情。完整详情包含位置和踪迹,返回不可信客户端前应过滤。

言章清单不申请文件、网络、监听、环境、进程或原生扩展权限。它依赖的言页也固定在公开稳定标签;依赖图中的权限不会被页面代码动态扩大。

已知限制

  • 不是完整 CommonMark 或 GFM 实现,不支持嵌套列表、表格、脚注、任务列表和引用式链接。
  • 不解析、清洗或透传原始 HTML;未知 HTML 写法按普通文字转义。
  • 围栏代码只支持三个反引号,结束行修整后必须严格等于三个反引号。
  • URL 策略只判断字符与协议,不检查实际目标、重定向、同源或访问权限。
  • 流式接口不是增量 Markdown 解析器,也不提供异步背压、取消或事务式回滚。
  • 扩展块不会自动净化输入,只能用于已审计生成器和可信数据。

项目链接