12 篇文章带有标签 “markdown”

Markdown 渲染器是什么

Markdown 渲染器是一款纯前端的在线 Markdown 转 HTML 工具。它调用 GitHub Markdown API 进行渲染,支持 GitHub Flavored Markdown (GFM) 标准,输出干净的 HTML 代码和实时预览,无需安装任何软件,打开浏览器即可使用。

核心功能

  • GitHub API 渲染:调用 GitHub 官方 Markdown API,渲染结果与 GitHub 页面保持一致。
  • GFM 模式切换:支持标准 Markdown 和 GitHub Flavored Markdown 两种模式,一键切换。
  • 实时预览:渲染后的结果即时显示在预览区,包括代码高亮、表格、引用块等样式。
  • 自动清理 HTML:可选清理隐藏元素(aria-hidden、nofollow 等),整理 heading 结构,输出更干净的 HTML。
  • 自动生成目录:根据文章中的 h2-h6 标题自动提取并生成可点击的目录导航。
  • 复制 HTML:一键复制清理后的 HTML 源码,方便粘贴到博客或编辑器中。
  • 复制富文本:一键复制带格式的富文本,可直接粘贴到 Word、Notion、邮件等支持富文本的地方。
  • 自动保存:输入内容自动保存到浏览器 localStorage,刷新页面不丢失。

使用方式

  1. 打开 Markdown 渲染器
  2. 在编辑区粘贴需要渲染的 Markdown 文本。
  3. 根据需要勾选"使用 GitHub Flavored Markdown (GFM)"。
  4. 点击渲染按钮,预览区和 HTML 输出区会同步更新。
  5. 点击复制 HTML复制富文本获取渲染结果。

Open Knowledge Format (OKF)

版本 0.1 — 草案

OKF 是一种开放、对人类和智能体友好的格式,用于表示知识——即围绕数据和系统的元数据、上下文和精心整理的洞察。它旨在由人类编写、由智能体生成、跨组织交换,并由两者共同消费。

该格式有意保持极简:一个由 Markdown 文件和 YAML 前置元数据组成的目录。没有 Schema 注册中心,没有中央权威机构,也不需要任何特定工具。如果你能 cat 一个文件,你就能读取 OKF;如果你能 git clone 一个仓库,你就能分发它。

1. 动机

面向 AI 智能体的知识表示领域正在快速演进,许多互不兼容的约定正在涌现。OKF 的立场是,知识最好用常见、已建立的格式来表示,这些格式应具备以下特性:

  • 无需工具即可被人类阅读
  • 无需定制 SDK 即可被智能体解析
  • 可在版本控制中进行差异比较
  • 可跨工具、组织和时间迁移

该格式保持最低限度的主观性。它仅标准化一小套结构约定,使知识语料库能够自我描述——除此之外的一切留给生产者自行决定。

目标

  1. 定义一种通用格式,增强型智能体可以写入其中。
  2. 告知消费型智能体应如何读取和遍历它。
  3. 促进知识跨系统和组织的交换
  4. 标准化少量必需字段,使内容能够被有意义地消费。

非目标

  • 定义固定的概念类型分类体系。
  • 规定存储、服务或查询基础设施。
  • 取代领域特定 Schema(Avro、Protobuf、OpenAPI 等)——OKF 引用它们,而非包含它们。

使用 Claude Code:HTML 超乎寻常的妙用

Thariq: Using Claude Code: The Unreasonable Effectiveness of HTML

Markdown 已成为智能体(agent)与我们沟通时占主导地位的文件格式。它简单、可移植,具备一定的富文本能力,且易于编辑。Claude 甚至已经相当擅长在 Markdown 文件中使用 ASCII 绘制图表。

但随着智能体变得越来越强大,我感到 Markdown 已成为一种受限的格式。我发现自己很难阅读超过一百行的 Markdown 文件。我想要更丰富的可视化效果、色彩和图表,并且希望能轻松分享它们。

我也越来越不亲自编辑这些文件,而是将它们用作规格说明、参考文件、头脑风暴输出等。当我确实需要编辑时,我通常会让 Claude 来编辑,这就削弱了 Markdown 最大的一个优势。

我开始更偏爱 HTML 作为输出格式,而不是 Markdown,并且越来越多地看到 Claude Code 团队中的其他人也在使用它。以下就是原因。

(如果你想先看一些示例,可以在这里看到一大堆:https://thariqs.github.io/html-effectiveness ,不过记得回来看更多关于"为什么"的内容。)

为什么选择 HTML?

信息密度

与 Markdown 相比,HTML 能够传达更丰富得多的信息。

LLM Wiki:基于大语言模型的个人知识库构建模式

使用大语言模型(LLM)构建个人知识库的模式。

这是一份概念文件,设计用于复制粘贴到你自己的 LLM 智能体中(例如 OpenAI Codex、Claude Code、OpenCode / Pi 等)。它的目标是传达高层级的理念,而具体细节将由你的智能体与你协作构建。

核心理念

大多数人与 LLM 和文档打交道的体验看起来像是 RAG:你上传一批文件,LLM 在查询时检索相关片段,然后生成答案。这确实有效,但 LLM 每次都要从零开始重新发现知识,没有任何积累。当你问一个需要综合五份文档的微妙问题时,LLM 必须每次都找到并拼凑相关片段,没有任何东西被沉淀下来。NotebookLM、ChatGPT 文件上传以及大多数 RAG 系统都是这样工作的。

这里的理念不同。与其仅在查询时从原始文档中检索,LLM 增量式地构建并维护一个持久的维基 —— 一个结构化的、相互关联的 Markdown 文件集合,位于你和原始来源之间。当你添加新来源时,LLM 不只是将其索引以备后用。它会阅读来源,提取关键信息,并将其整合到现有维基中 —— 更新实体页面、修订主题摘要、标注新数据与旧主张的矛盾之处、强化或挑战不断演进的综合结论。知识被编译一次,然后保持最新,而不是每次查询都重新推导。

这就是关键区别:维基是一个持久的、复合增长的产物。

WikiLLM:基于 LLM 驱动的个人知识库

WikiLLM

利用 LLM 构建个人知识库的系统。WikiLLM 将原始素材"编译"成结构化、交叉链接的高质量中文 Wiki,可在 Obsidian 中查看。

本项目基于 Andrej Karpathy 提出的理念构建。详见:LLM Knowledge Bases

项目概述

WikiLLM 的工作流包括:

  1. 数据摄入:源文档(文章、论文、代码库、数据集、图像)被索引到 raw/ 目录
  2. Wiki 编译:LLM 增量地"编译"原始数据成 markdown 文件的 wiki,包含摘要、反向链接、分类概念和相互链接的文章
  3. IDE:Obsidian 用作前端查看原始数据、编译后的 wiki 和可视化
  4. 问答:LLM 可以通过研究相关数据来回答针对 wiki 的复杂问题
  5. 输出:结果渲染为 markdown 文件、Marp 幻灯片或 matplotlib 图像,可在 Obsidian 中查看
  6. Linting:LLM"健康检查"发现不一致、填补缺失数据、建议新文章候选
  7. 额外工具:诸如 wiki 上的朴素搜索引擎等额外工具

核心原则

  • LLM 编写和维护所有 wiki 数据;手动编辑很少见
  • 用户探索和查询被归档回 wiki 以增强它
  • 系统专注于 markdown 文件和 Obsidian 兼容格式
  • 图像被下载到本地 以便 LLM 轻松引用

目录结构

Andrej Karpathy:大语言模型构建个人知识库的实践指南

最近我发现一个非常实用的方法:利用大语言模型(LLM)为各类感兴趣的研究方向搭建个人知识库。这样一来,我近期消耗的模型令牌中,用于处理代码的占比大幅减少,更多被用于处理知识(以 Markdown 文件和图片形式存储)。最新的大语言模型在这方面表现十分出色。具体做法如下:

数据导入

我先将各类源文件(文章、论文、代码仓库、数据集、图片等)归档到 raw/ 目录下,再通过大语言模型逐步“编译”生成一份知识库,这份知识库本质就是按目录结构组织的一系列 .md 文件。 知识库会包含 raw/ 目录下所有数据的摘要、反向链接,还会将数据按概念分类、撰写对应词条并完成相互关联。 为把网页文章转为 .md 文件,我习惯使用 Obsidian 网页剪藏插件,同时通过快捷键将相关图片批量下载到本地,方便大语言模型直接调用。

集成开发环境

我把 Obsidian 当作前端 IDE,既能查看原始数据、编译后的知识库,也能查看衍生的可视化内容。 需要重点说明的是:整个知识库的内容撰写与维护均由大语言模型完成,我几乎不直接手动修改。我还试用过多款 Obsidian 插件,以其他形式渲染和查看数据(比如用 Marp 制作幻灯片)。

问答交互 真正有意思的是,当知识库规模足够大时(比如我近期的研究知识库已有约 100 篇词条、40 万字),就可以向大语言模型智能体提出各类复杂问题

/llms.txt 文件

关于标准化使用 /llms.txt 文件以提供信息,帮助大语言模型(LLM)在推理阶段使用网站内容的提案。

Jeremy Howard 2024-09-03

背景

大型语言模型(LLM)越来越依赖网站信息,但面临一个关键限制:上下文窗口(Context Windows)太小,无法处理大多数完整的网站内容。将包含导航、广告和 JavaScript 的复杂 HTML 页面转换为 LLM 友好的纯文本内容既困难又不精确。

虽然网站同时服务于人类读者和 LLM,但 LLM 受益于在单一可访问位置收集的更简洁、专业级别的信息。这在开发环境等用例中尤为重要,LLM 需要快速访问编程文档和 API。

提案

llms.txt logo

我们建议在网站上添加一个 /llms.txt Markdown 文件,以提供 LLM 友好的内容。该文件提供简要的背景信息、指导和指向详细 Markdown 文件的链接。

llms.txt Markdown 既可以被人类阅读,也可以被 LLM 读取,同时具有精确的格式,允许使用固定的处理方法(即经典的编程技术,如解析器和正则表达式)。

我们进一步建议,网站上可能对 LLM 有价值的信息页面应提供该页面的干净 Markdown 版本,URL 与原始页面相同,但附加 .md 扩展名。(没有文件名的 URL 应附加 index.html.md 代替。)

🦞 本地 AI 助手 OpenClaw 的架构与记忆系统

🦞 OpenClaw 是一个本地优先(Local-First)、高度自治、基于 Markdown 记忆管理的 AI Agent(智能体)系统。

它的核心亮点在于:

  1. 数据主权 (Local-First): 记忆和配置都在本地 Markdown 文件中,用户完全掌控。
  2. 拟人化设计: 通过心跳机制 (HEARTBEAT) 和分层记忆,试图构建一个有“长期记忆”和“自主行为”的 AI,而不仅仅是一个聊天机器人。
  3. 工程化落地: 考虑了多端接入、混合检索 RAG、上下文压缩以及安全沙盒,这是一个生产力级别的架构。

架构系统

  • 多端接入 (Messaging & Nodes):
    • 消息平台: 支持 WhatsApp, Telegram, Discord, 飞书等主流通讯软件,意味着用户可以在这些 App 里直接与 Agent 对话。
    • 客户端节点 (Nodes): 覆盖 Android, iOS, macOS。这些节点不仅是聊天窗口,还能调用设备能力(如拍照、定位、录屏、执行脚本),让 AI 拥有“手”和“眼”。
  • 核心网关 (Gateway):
    • 运行在本地(支持 Windows, Linux, macOS, iOS, Android, Docker 等)。
    • 包含控制平面、HTTP Server、路由、会话管理和任务队列。
    • Pi Agent: 是核心大脑,负责处理逻辑。
  • 远程管理: 通过 Tailscale VPNSSH Tunnel 进行安全的远程连接,保障了数据传输的安全性(无需暴露公网 IP)。

OpenClaw 智能体工作区指南:构建记忆与人格

OpenClaw 智能体工作区,旨在构建一个具有独立人格、长期记忆和自治能力的 AI。

核心基于 Markdown 文件系统

  • 身份与原则 (BOOTSTRAP, SOUL, IDENTITY):确立 AI 的自我认知、名字与核心行为守则。
  • 持续性 (MEMORY, AGENTS):通过“每日日志”与“长期记忆”实现跨会话的知识积累,而非每次新鲜唤醒。
  • 伙伴与工具 (USER, TOOLS):记录人类偏好与本地环境配置,实现个性化与外部协作。
  • 自主性 (HEARTBEAT):在无指令时主动执行维护与状态检查。

总体而言,这套架构通过将记忆转化为持久化、可编辑的 Markdown 文件,实现了自主反思与知识沉淀的自治目标

FastAPI 开发 RESTAPI 实践

首页

重定向到 Swagger UI

@app.get("/", include_in_schema=False)
async def index():
    return RedirectResponse('/docs', status_code=303)

使用 route 的 docstring 作为首页内容

@app.get("/", response_class=HTMLResponse, include_in_schema=False)
async def index():
    # 需要过滤的路由
    filted_routes = [
        "/openapi.json",
        "/docs",
        "/docs/oauth2-redirect",
        "/redoc",
        "/static",
        "/"
    ]
    
    routes = []
    for route in app.routes:
        if route.path not in filted_routes:
// ...

Markdown to HTML

安装

pip install markdown

使用

使用终端浏览Markdown和HTML

浏览Markdown

sudo apt install lynx
sudo apt install pandoc

pandoc README.md | lynx -stdin
sudo pip install grip
sudo apt install lynx

grip -b README.md
lynx http://localhost:6419/
sudo apt install pandoc
pandoc README.md -t plain | less

浏览HTML

sudo apt install w3m

w3m index.html
sudo apt install lynx
sudo apt install pandoc

pandoc index.html | lynx -stdin
sudo pip install grip

grip -b index.html

参考资料

Welcome to Jekyll!

You’ll find this post in your _posts directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run jekyll serve, which launches a web server and auto-regenerates your site when a file is updated.

Jekyll requires blog post files to be named according to the following format:

YEAR-MONTH-DAY-title.MARKUP

Where YEAR is a four-digit number, MONTH and DAY are both two-digit numbers, and MARKUP is the file extension representing the format used in the file. After that, include the necessary front matter.