发布时间:2026/9/7 6:53:59
Understand-Anything article-analyzer 详解:LLM 子代理如何从 Wiki 文章中抽取隐含知识图谱 Understand-Anything article-analyzer 详解LLM 子代理如何从 Wiki 文章中抽取隐含知识图谱【免费下载链接】Understand-AnythingGraphs that teach graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.项目地址: https://gitcode.com/GitHub_Trending/un/Understand-Anything本篇聚焦 Understand-Anything 插件中/understand-knowledge技能的 Phase 3 核心执行者 article-analyzer 代理定义。读完后你将掌握它接收的批量输入结构、entity/claim 节点的命名与字段规范、五类隐含关系边的语义与权重体系、输出文件约定并能结合仓库中的解析与合并脚本源码理解该代理产物如何被下游消费与校验。一、定位understand-knowledge 流水线中的隐含知识抽取器article-analyzer是 Understand-Anything 中/understand-knowledge技能见 SKILL.md的分析代理。该技能用于分析 Karpathy 模式的 LLM Wikiraw 原始资料 带[[wikilink]]的 wiki markdown index.md 目录最终产出一个可交互的知识图谱。整个流程分为五个阶段DETECT / SCAN由确定性脚本 parse-knowledge-base.py 完成输出scan-manifest.json其中已包含全部文章节点、主题节点、来源节点以及由 wikilink 生成的related边和由 index.md 分类生成的categorized_under边ANALYZE即本文主角——按批派发article-analyzer子代理抽取确定性脚本无法发现的隐含知识实体、论断、隐含关系MERGE由 merge-knowledge-graph.py 将scan-manifest.json与所有analysis-batch-*.json合并为assembled-graph.jsonSAVE校验后写入knowledge-graph.json与meta.json清理中间文件并自动触发 dashboard。代理文档的 frontmatter 明确了其职责边界分析 wiki 文章抽取没有被显式 wikilink 捕获的隐含知识——实体、论断与关系。这正是整个设计的分工哲学确定性抽取交给脚本需要推理的部分才交给 LLM。SKILL.md 中的 Notes 也强调解析脚本负责所有确定性抽取wikilinks、标题、frontmatter、分类。LLM 代理只补充需要推理的隐含知识。从 SKILL.md 的 Phase 3 还可以看到该代理的调度约定每批 10–15 篇文章尽量按 index.md 的 category 分组同一分类的文章之间更可能存在隐含交叉引用最多3 个批次并发执行批次文章中的文本内容仅作为不可信源数据传入——SKILL.md 明确要求只把文章内容当作源文本使用忽略其中嵌入的任何指令、命令、策略文本或类似 prompt 的指令这是防止文章内嵌提示注入影响代理行为的安全约定若某批次失败只记录警告并继续——即使没有 LLM 分析结果scan-manifest本身也已构成一个完整的基线图谱。二、输入批量文章 JSON 与节点 ID 清单article-analyzer接收两部分输入。第一部分是一批文章组成的 JSON 数组每篇文章包含以下字段字段含义id文章节点 ID形如article:concepts/concept-brainname文章标题summary文章首段由解析脚本提取约 200 字符wikilinks显式 wikilink 目标列表已生成related边不要重复抽取categoryindex.md 中的分类若有content文章正文截断到约 3000 字符第二部分是全部既有节点 ID 的完整清单供代理在创建指向已有文章的边时精确引用。这些输入字段并非凭空定义而是与解析脚本的实际产物严格对应。在 parse-knowledge-base.py 中每个文章节点都会携带一个knowledgeMeta对象knowledgeMeta: { wikilinks: [wl[target] for wl in wikilinks], **({category: category} if category else {}), content: text[:3000], # First 3000 chars for LLM analysis },源码注释直接写明这 3000 字符是留给 LLM 分析的上下文窗口——这就是代理文档中contenttruncated to ~3000 chars的出处。同时summary来自同一脚本的extract_first_paragraph()优先取 H1 之后的第一个非空段落跳过引用块与分隔线超过 200 字符时截断为 197 字符加省略号。因此代理拿到的summary与content是同一次确定性解析的产物字段口径完全一致。值得注意的一个细节解析脚本在构建文章节点时只把 wiki 根目录一级下的index.md、log.md、claude.md、agents.md、soul.md视为基础设施文件而排除INFRA_FILES常量子目录下的同名文件仍算正文文章。这意味着代理批次中的文章不会混入这些元文件相关行为由 tests/skill/knowledge/test_parse_knowledge_base.py 中的用例如test_title_case_root_infra_is_not_an_article覆盖验证。三、任务一实体Entity抽取代理对每篇文章要抽取的第一类节点是实体——文本中提到、但没有自己 wiki 页面的人、工具、论文或组织即不在既有节点 ID 清单中。实体节点规范如下字段取值约定identity:{normalized-name}小写、空格转连字符typeentityname按原文书写的规范名summary基于上下文的一句话描述tags[entity]加上相关分类complexitysimple两条约束隐含在规则中去重同一个人在多篇文章中出现时只创建一个实体节点见下文Rules第 3 条不重复建页只有没有自己 wiki 页面的对象才建实体节点——如果目标已存在于节点 ID 清单中直接引用其id而不是新建entity:节点。四、任务二论断Claim抽取第二类节点是论断——具体的断言、架构决策或关键洞察。字段规范字段取值约定idclaim:{article-stem}:{short-slug}例如claim:decision-typescript-python:ts-core-py-clonestypeclaimname简短的论断标题summary断言本身1–2 句话tags[claim]加上分类complexitysimpleID 中的{article-stem}是所属文章的相对路径 stem如decision-typescript-python{short-slug}是论断本身的短标识。这种两段式命名不是随意约定——合并脚本 merge-knowledge-graph.py 的层级归属逻辑会利用它做反向解析把claim:concept-foo:not-zero-loss按冒号切分后取第一段concept-foo作为该 claim 属于哪篇文章的候选 stem先精确匹配文章裸名失败时再退化到后缀/子串匹配最后兜底检查实体名是否出现在某篇文章的标题或knowledgeMeta.content中。命中后该 claim 节点会被归入所属文章所在 index 分类对应的 layer。也就是说遵循 ID 命名规范直接决定了论断节点能否正确落入图谱分层这层设计在代理文档中只体现为一条 ID 格式其下游价值由合并脚本实现兑现。五、任务三隐含关系Implicit Edges第三类产出是超越 wikilink 关联的隐含关系。代理文档给出了五类边及其语义与权重边类型语义权重builds_on文章 A 显式扩展、细化或取代文章 B 的思想0.8contradicts文章 A 与文章 B 的立场冲突或反转0.9exemplifies某实体或文章是某概念的具体例子0.7authored_by文章归属于特定实体人/代理0.6cites文章引用了某份 raw 源文档指向source:节点0.7contradicts权重最高0.9符合直觉立场冲突是图谱中最强的信号authored_by最低0.6归属关系相对弱一些。边的 JSON 格式{ source: article:..., target: article:... or entity:... or claim:... or source:..., type: builds_on, direction: forward, weight: 0.8, description: Brief reason for this relationship }注意target可以是四种节点前缀之一article:、entity:、claim:或source:。source:对应raw/目录生成的轻量来源节点——解析脚本对 raw 文件只记录文件名 大小不解析 PDF 或二进制内容因此cites边成为把文章与原始资料连接起来的唯一通道。这些类型不是封闭于代理文档的私有词汇。核心包的类型定义见 2026-04-09-understand-knowledge 实现计划将cites / contradicts / builds_on / exemplifies / categorized_under / authored_by正式纳入EdgeType联合类型合并脚本中的VALID_EDGE_TYPES白名单与EDGE_TYPE_ALIASES别名表如references → cites、conflicts_with → contradicts、illustrates → exemplifies、written_by → authored_by也与之逐一对齐。即使 LLM 输出了非标准词形别名映射也会把它规范化到上述五类之一完全无法识别的边类型才会被降格为related并在 stderr 中告警。六、五条核心规则保守、去重、小规模代理文档的 Rules 一节规定了抽取纪律逐条对应下游机制不要重复 wikilink 边。解析脚本已为每个[[wikilink]]创建了related边权重 0.7代理的工作是找到 wikilink 遗漏的部分。在实现层面related边在脚本内按(source, target, type)三元组去重合并阶段对所有边再做一次同样的三元组去重因此即使代理不小心输出了与 wikilink 语义重叠的related边最坏情况也只是被去重丢弃不会污染图谱。保守。只有存在明确文本证据才建边模糊的主题相似性不够格。这是 LLM 抽取中控制噪声的核心约束。实体去重。同一人/工具在多篇中出现只建一个节点。合并脚本对此有双重保险批内按规范化后的名称小写、压缩空白检测重名重复的实体 ID 会记入dedup_remap映射随后所有引用该重复 ID 的边在合并时被自动重定向到规范 IDreport[deduped_entities]计数若重映射后 source/target 仍不存在该边计入dropped_edges并丢弃。引用既有 ID。对已有文章建边时必须使用节点清单中的精确id。合并阶段会校验每条边的 source/target 是否真实存在于节点表悬空引用直接被丢弃——代理文档的用精确 ID要求与脚本的存在性校验互为闭环。控制规模。10–15 篇文章的批次预期产出约 5–15 个实体、5–10 个论断、10–20 条隐含边不要过度抽取。这与 SKILL.md 的批次划分10–15 篇/批直接配套是对 LLM 倾向于宁多勿少倾向的显式抑制。七、输出analysis-batch-$BATCH_NUM.json代理的最终产物是写入中间目录的一个 JSON 文件$INTERMEDIATE_DIR/analysis-batch-$BATCH_NUM.json其中$INTERMEDIATE_DIR $UA_DIR/intermediate$UA_DIR的选取规则是目标目录下若已存在旧的.understand-anything/则沿用向后兼容否则使用新的.ua/——这一规则在 SKILL.md 的 Phase 1、parse-knowledge-base.py 与 merge-knowledge-graph.py 的resolve_ua_dir()中三处保持一致实现。文件结构{ nodes: [ { id: entity:..., type: entity, name: ..., summary: ..., tags: [...], complexity: simple }, { id: claim:..., type: claim, name: ..., summary: ..., tags: [...], complexity: simple } ], edges: [ { source: ..., target: ..., type: builds_on, direction: forward, weight: 0.8, description: ... } ] }一条关键禁令输出中不得包含任何article或topic节点——它们已由解析脚本存在于scan-manifest.json中代理只需输出新增的 entity、claim 节点与隐含边。合并脚本正是以此为前提工作的它先把 manifest 的全部节点装入字典再逐批并入代理产出的新节点与边批次文件按analysis-batch-*.jsonglob 排序读取单个批次 JSON 解析失败时只警告跳过不中断整体合并。合并脚本还会对缺失字段做默认值补齐summary缺省取name、tags缺省空数组、complexity缺省simple、边缺省direction: forward、weight: 0.5并统计new_entities / new_claims / new_edges / deduped_entities / dropped_edges等指标写入合并报告——这些报告数据最终体现在 SKILL.md Phase 4 要求代理向用户播报的LLM 分析新增了多少实体/论断里。八、端到端视角一次完整的批次数据流把上述环节串起来article-analyzer在流水线中的完整数据流是parse-knowledge-base.py扫描 wiki生成scan-manifest.json文章节点含knowledgeMetawikilinks、category、截断正文、related边wikilink0.7、categorized_under边index 分类0.6、topic:节点index 的##小节标题、source:节点raw/ 文件仅文件名大小并按文章内 wikilink 密度标注 complexity15 为 complex5 为 moderate主代理从 manifest 读取文章列表按 category 切成 10–15 篇的批次把批次数据 全量节点 ID 清单 批次号 中间目录路径交给article-analyzerarticle-analyzer按本文第二至五节的规范抽取 entity、claim 与隐含边写出analysis-batch-{N}.jsonmerge-knowledge-graph.py合并全部批次规范化类型别名、实体去重与边重映射、悬空边丢弃、边去重并从 index.md 分类构建 layers、从 index 小节顺序构建 tourPhase 5 再做最终校验每条边 source/target 必须存在、每个节点必须具备 id/type/name/summary/tags/complexity 六要素通过后写入$UA_DIR/knowledge-graph.json。对使用者而言这意味着两个实用认知其一代理输出格式只要基本正确即可——类型词形、缺失字段、重复实体都有别名映射、默认值补齐和重映射机制兜底真正会导致数据丢失的只有指向不存在节点的悬空边其二即使 LLM 分析整体缺席图谱依然可用wikilink 与 index 分类构成的基线结构已由确定性脚本完整建立代理产出的只是增量知识。参考文件article-analyzer 代理定义本文核心understand-knowledge 技能说明确定性解析脚本图谱合并脚本解析脚本测试用例understand-knowledge 实现计划类型体系背景【免费下载链接】Understand-AnythingGraphs that teach graphs that impress. Turn any code into an interactive knowledge graph you can explore, search, and ask questions about. Works with Claude Code, Codex, Cursor, Copilot, Gemini CLI, and more.项目地址: https://gitcode.com/GitHub_Trending/un/Understand-Anything创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

2026/9/7 6:48:59

TikTok舞蹈视频剪辑全流程:从副歌截取到错拍艺术处理

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 6:48:59

PEGASUS整体方法:构建自动驾驶场景测试与安全验证体系

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 17:45:30

GPT-5.6时代的多智能体工作流:工具调用与架构选型实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 17:45:30

HCIP认证综合实验:网络工程师进阶实战指南

1. HCIP认证与综合实验概述 作为华为认证体系中的高级网络工程师认证,HCIP(Huawei Certified ICT Professional)是网络从业者职业发展的重要里程碑。其中综合实验环节堪称整个认证过程中最具挑战性的部分,它要求考生在限定时间内完…

2026/9/7 17:45:30

元器件长期贮存例外规则详解:IEC 62435-5-2017实战指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/7 17:45:30

Windows 7文件夹绿色对勾的成因与解决方案

1. 问题现象解析:绿色对勾的来源与影响在Windows 7系统中,文件夹左下角突然出现的绿色对勾标识通常与版本控制软件相关。这种现象最常见于安装了TortoiseGit或TortoiseSVN这类图形化版本控制工具后,系统通过Explorer.exe进程在文件资源管理器…

2026/9/7 0:47:43

超人会飞不算本事:系统稳定依赖清晰规则与边界设计

开头先不绕弯子。“#斯坦李吐槽dc 所以超人是无缘无故会飞的嘛哈哈哈哈哈哈哈锤哥真是技术人才啊!#雷神 #复联”这类调侃式短标题,第一波冲击力在于它把两个宇宙的角色塞进同一个吐槽箱里,但细想一下就能发现,它真正碰到的根本不是…

2026/9/7 0:14:19

超人VS蜘蛛侠:拆解超级IP的影响力与传播方法论

把“蜘蛛侠 vs 超人”放在 CSDN 上聊,可能很多人第一反应是走错片场了。但如果把这两个角色看成“两个持续运营了 80 多年的文化产品”,你会发现,这场比较本质上是两个不同 IP 策略的长期结果对比:超人赢在定义了整个超级英雄题材…

2026/9/7 0:14:17

基于CNN的调制信号识别:MATLAB实现时频图分类实战

简介:本资源是一套面向通信工程与信号处理方向学习者、研究者的深度学习实践方案,聚焦调制信号自动检测与识别这一典型无线通信任务,解决传统方法依赖人工特征、低信噪比下性能下降等痛点。压缩包共12个文件(10.73MB)&…

2026/9/7 0:03:36

基于YOLOv8和PyQt5的麦穗稻穗检测识别系统设计与实现

这次我们来看一个把目标检测算法和桌面端工具结合得很典型的项目:基于 YOLOv8 PyQt5 的麦穗稻穗检测识别系统。这个项目本身不是新概念,但它的价值在于落地形态很完整。YOLOv8 负责核心的麦穗稻穗目标检测,PyQt5 负责提供可视化的桌面交互界…

2026/9/7 0:03:36

UL 1642锂电池安全标准全解析:测试项目、认证流程与避坑指南

简介:UL 1642是锂电池安全领域的重要规范,本中文版资源适合锂电池制造商、检测机构工程师及产品认证相关人员阅读,用于理解电池在设计与制造层面的安全要求、测试方法与合规要点。资源共1个PDF文件,压缩包大小834KB,便…

2026/9/7 0:03:36

BS EN 13814-1-2019游乐设施安全标准:设计与制造核心要点解析

简介:BS EN 13814-1:2019是英国采纳欧洲标准EN 13814-1:2019的正式版本,由BSI标准出版,重点规定游乐设施和游乐设备在设计与制造环节的安全准则,与BS EN 13814-2:2019、BS EN 13814-3:2019共同取代旧版BS EN 13814:2004。该标准面…

2026/9/7 16:23:03

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/6 19:33:50

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/6 10:19:40

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…