ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

img2threejs 规范化规格词汇表:面向本地规格检索的 JSONL 记录契约、实现与实战指南

img2threejs 规范化规格词汇表:面向本地规格检索的 JSONL 记录契约、实现与实战指南 人工智能AI 技能3D渲染【免费下载链接】img2threejsRebuild the object in a reference image as a code-only, procedural, quality-gated, animation-ready Three.js model. Token-efficient image-to-3D.项目地址https://gitcode.com/gh_mirrors/im/img2threejs点击查看免费下载本文档基于 docs/specs/vocabulary/README.md 展开系统讲解 img2threejs 项目中规范化规格词汇表Normalized spec-record vocabulary的数据契约如何以 JSONL 文件承载经过评审、可提交入库的规格记录每条记录如何被校验、摄取、分词并进入本地 BM25 检索。读者学完后将能够理解该目录下所有.jsonl记录的字段语义与稳定类型约束掌握load_jsonl_records校验入口的错误行为并能写出符合契约、可被 forge/stage1_intake/search_specs.py 检索命中的合格记录。一、词汇表在 img2threejs 中的作用img2threejs 的核心目标是把参考图中的物体重建为纯代码、程序化、质量门控、可动画的 Three.js 模型并强调 Token 高效。在推理阶段模型需要把一张参考图分解为组件、材质、约束、测量值等结构化知识这些知识如果每次都由大模型现场记忆既消耗 Token 又不稳定。本目录正是为此服务的**本地规格检索local specification search**语料库目录中存放的是**已评审、已提交reviewed, committed**的 JSONL 记录每一条都是一个经过蒸馏的、带溯源的规格陈述每个非空行恰好是一个 UTF-8 JSON 对象docs/specs/vocabulary/README.md第 3-6 行一个集合collection可以暂时没有记录文件但只要记录文件存在其每一行都必须满足本契约。从仓库现状看该目录下已有四个经过评审的语料文件core_3d.jsonl、core_3d_reconstruction.jsonl、cs2.jsonl、cs2_reconstruction.jsonl分别覆盖通用 3D 规格词汇与 CS2 武器/材质专项词汇。二、记录文件的基本格式契约词汇表目录的格式约束极为严格任何提交的记录都必须遵守文件为 UTF-8 编码的JSONL每行一个 JSON 对象空行允许存在并被忽略但非空行必须整体是一个合法的 JSON 对象不允许出现半行或跨行的 JSON 对象一旦存在记录文件其所有行都必须通过字段级校验详见下文必填字段不存在豁免。对应的读取与校验入口在 forge/_shared/spec_search.py 中已经落地实现README 中称为未来接入点当前仓库已完成load_jsonl_records(path: Path)forge/_shared/spec_search.py#L684-L698逐行读取 UTF-8 文件跳过空白行对每一行执行json.loads与_parse_record字段校验任何失败都会抛出SpecRecordValidationErrorforge/_shared/spec_search.py#L341-L348该异常的字符串形式为{path}:{line_number}: {reason}即文件路径 从 1 开始的行号 具体原因契约明确无效行永远不会被跳过或静默修复Invalid rows are never skipped or silently repaired。测试 forge/tests/test_search_specs.py#L345-L352 专门验证了这一行为向 fixture 追加一行残缺 JSON{record_id:后读取会抛出形如broken.jsonl:2: invalid JSON object的命名错误而不是悄悄丢弃该行。三、规范行Canonical Row逐字段解读README 给出了完整的规范示例行来自 CS2 武器解剖学的Karambit 安全环记录这是所有记录必须对齐的骨架{ record_id: cs2.karambit.safety-ring, collection: cs2, domain: weapon-anatomy, kind: component, entity: karambit safety ring, title: Karambit safety ring / Vòng ngón Karambit, aliases: [safety ring, finger ring, vòng ngón], content: A retention ring at the Karambits pommel., constraints: [Preserve the opening as a distinct component.], measurements: [ {name: opening diameter, value: source-dependent, unit: mm} ], source_refs: [ { path: docs/cs2/3D_Technical_Mapping.json, key_path: karambit.components.safety_ring }, {path: docs/cs2-anatomy/karambit.md, heading: Safety ring} ], evidence_refs: [ {kind: source, ref: docs/cs2/3D_Technical_Mapping.json} ], observation_status: observed, confidence: 0.9, assumptions: [] }关键语义README 第 49-54 行record_id是稳定、小写、点分隔的标识符绝不从展示标题派生且必须在措辞变化时保持稳定collection选择所属检索集合domain、kind、entity对记录做分类但不强制全局统一的分类法每个领域可用自己的分组习惯title、aliases、content是可搜索文本aliases保留作者编写的英/越双语术语归一化与查询扩展发生在之后的处理阶段即分词器与别名展开。3.1 规范行的源码映射上述 15 个字段在源码中以 TypedDict 形式固化为SpecRecordforge/_shared/spec_search.py#L95-L110校验逻辑_parse_recordforge/_shared/spec_search.py#L656-L681按固定顺序提取并强类型检查每个字段。字段级校验由_record_string非空字符串content例外允许为空、_record_string_list字符串数组、_measurements、_source_refs、_evidence_refs等辅助函数完成任何一个类型不符都会定位到具体的路径:行号:字段。四、必填字段与稳定类型表README 以表格形式给出全部 15 个必填字段的稳定类型与语义这是编写记录时的第一手参考字段类型语义record_id非空字符串集合内稳定且唯一的标识符。collection非空字符串拥有该记录的集合键。domain非空字符串领域分组如weapon-anatomy或pbr。kind非空字符串记录类别如component、material或constraint。entity非空字符串规范的实体或概念名。title非空字符串人类可读的可搜索标题。aliases字符串数组零或多个作者编写的同义词已知时包含双语别名。content字符串有来源支撑的简明描述仅当结构化字段已承载可检索细节时才允许为空。constraints字符串数组要求、禁止事项或注意事项。measurements对象数组每个对象含非空字符串name与value可选unit、context为字符串。数值保持为来源原文而非杜撰数字。source_refs非空对象数组蒸馏陈述的出处。每个对象含非空字符串path可含非空字符串heading和/或key_path。evidence_refs对象数组辅助性出处。每个对象含非空字符串kind与ref可选note为字符串。observation_status字符串取值为observed、inferred或unverified三者之一。confidence数字闭区间0.0到1.0表示对蒸馏陈述本身的置信度而非检索相关性。assumptions字符串数组限定该记录的显式假设。4.1 表内约束在源码中的落地measurements源码_measurementsforge/_shared/spec_search.py#L606-L621强制name、value为非空字符串unit、context若出现则必须是字符串允许空串。source_refs源码_source_refsforge/_shared/spec_search.py#L624-L636强制数组非空且每个元素必须有非空pathheading与key_path任选其一或同时出现。evidence_refs源码_evidence_refsforge/_shared/spec_search.py#L639-L653强制kind、ref为非空字符串note可选。observation_status与confidence_parse_record中observation_status必须命中{observed, inferred, unverified}白名单confidence必须为数字且0 confidence 1且布尔值会被显式拒绝type(confidence) is bool直接报错。五、溯源Provenance设计source_refs 与 evidence_refsREADME 第 76-80 行强调记录必须保留原始的源位置。这是词汇表事实准确原则的根基用heading定位 Markdown 章节用key_path定位 JSON 位置当一种源格式同时提供两种定位形式时一个 source reference 可以同时包含两者所有路径均为仓库相对路径使用正斜杠/evidence_refs可以指向源文件、外部标识符或评审产物但不能替代source_refs。两类引用的分工是source_refs承载蒸馏陈述的直接出处evidence_refs承载支撑性证据。在 core_3d.jsonl 中可以看到实际用法例如core.pbr-roughness记录同时引用grimoire/glossary/3d_vocabulary.mdheading: Material And PBR、grimoire/intake/image_analysis.mdheading: Layer 5 — Materials surface (PBR)以及docs/raw/img2threejs-skill-dataset.jsonkey_path: categories.material_pbr[1]三类来源并在evidence_refs中标注notebooklm-research类型的评审产物引用及其 note。从源码看SourceRef与EvidenceRef的运行时形态是冻结数据类SourceReference/EvidenceReferenceforge/_shared/spec_search.py#L165-L176摄取 JSONL 时在_ingest_jsonlforge/_shared/spec_search.py#L867-L898中逐条重建并透传到缓存与检索结果序列化中。六、观察状态与置信度如何表达确定性README 第 82-86 行给出了三档观察状态的精确含义这是整份契约中最需要纪律性的部分observed直接由所引用源或参考产物支持inferred有依据的合理解读必须连同其假设一起保留unverified有用的术语或候选主张但仍需确认。核心原则是不要编码未经支持的确定性Do not encode unsupported certainty。当证据不足时正确的做法是降低confidence、选择恰当的状态、并写下限定性的assumptions而不是虚报为observed。6.1 真实语料中的实践在 cs2.jsonl 中可以看到差异化实践cs2.karambit.safety-ring记录observation_status: observed、confidence: 0.85因为源文档明确提及该安全环为关键指孔细节cs2.knife.pommel记录observed、confidence: 0.9其 measurement 直接来自技术映射metalness 1.0、roughness 0.35cs2.wear-float-ranges记录在constraints中写明将记录的区间视为术语支持而非对未见物品磨损程度的断言体现了陈述与解释分离的边界意识。七、源码级实现从记录文件到可检索索引7.1 接入点load_jsonl_recordsREADME 规划的未来接入点在当前仓库中已完整实现。load_jsonl_records(path: Path)forge/_shared/spec_search.py#L684-L698的行为与契约逐条对应以 UTF-8 读取文件若文件不可读或编码非法抛出带路径:0定位的SpecRecordValidationError逐行枚举从 1 开始的行号跳过空白行单行json.loads失败 →SpecRecordValidationError(path, line_number, invalid JSON object)_parse_record逐字段强类型校验对象、非空字符串、字符串数组、measurements/source_refs/evidence_refs 嵌套结构、状态白名单、置信度区间返回list[SpecRecord]。契约中错误识别输入路径与从 1 开始的行号无效行永不跳过的承诺正是由上述第 3、4 步的实现保证的。7.2 后续流水线摄取 → 分词 → BM25记录文件只是起点。spec_search模块把三种来源Markdown、JSON、JSONL统一摄取为SourceDocumentforge/_shared/spec_search.py#L179-L190其中 JSONL 记录的title、content、aliases、source_refs、evidence_refs被原样保留。之后分词器tokenizeforge/_shared/spec_search.py#L739-L772执行 Unicode 归一化默认 NFKC、casefold、越南语声调折叠accent_fold: vi如độ同时产生do、nhám同时产生nham并可选保留标识符与数字如AK-47、0.05-0.15各成一个 tokenBM25 检索build_index/search_indexforge/_shared/spec_search.py#L1011-L1084以默认k11.5、b0.75构建倒排索引按(-score, record_id)排序缓存生命周期load_or_build_indexforge/_shared/spec_search.py#L1752-L1792通过 schema/tokenizer/config/source 四类指纹判断缓存命中hit或重建rebuilt原因可为missing/stale/corrupt/forced并采用临时文件 os.replace的原子写入。从源码结构可以推断词汇表记录、原始文档与配置文件最终在同一套索引管道中统一检索这正是本地规格检索的完整闭环。八、集合配置spec_search_profiles.json记录属于哪个集合、以哪些原始文档为可选源、缓存写到哪里由 forge/_shared/spec_search_profiles.json 统一声明。当前仓库内置两个集合集合键optional_source_rootsdistilled_records缓存路径cs2docs/cs2/、docs/cs2-anatomy/docs/specs/vocabulary/cs2.jsonl、cs2_reconstruction.jsonl、core_3d.jsonl、core_3d_reconstruction.jsonl.cache/spec-search/cs2.jsoncore_3d无docs/specs/vocabulary/core_3d.jsonl、core_3d_reconstruction.jsonl.cache/spec-search/core_3d.jsondefaults中的全局默认值即前文所述的 tokenizerNFKC / casefold / vi 声调折叠 / 保留标识符与数字、aliasesenabled: truemax_expansions: 1与 BM25k1: 1.5、b: 0.75。配置文件本身由load_profilesforge/_shared/spec_search.py#L489-L556严格解析任何字段类型不符或profile_schema_version非法都会抛出ProfileValidationError缓存路径与源路径均强制为仓库内相对路径绝对路径或含..的穿越路径会被拒绝防止索引越界写入。九、CLI 实战搜索已入库的规格记录仓库提供了命令行检索工具 forge/stage1_intake/search_specs.py可直接对已评审的词汇表记录做本地 BM25 检索# 默认在 cs2 集合中检索默认 limit3snippet-chars250 python3 forge/stage1_intake/search_specs.py safety ring vòng ngón # 指定集合与输出条数并输出结构化 JSON python3 forge/stage1_intake/search_specs.py --collection core_3d roughness độ nhám --limit 5 --json # 强制重建索引缓存 python3 forge/stage1_intake/search_specs.py --reindex karambitCLI 行为要点forge/stage1_intake/search_specs.py#L95-L254参数位置参数query可多个词空格拼接、--collection默认cs2、--limit默认 3、--snippet-chars默认 250最小 5、--reindex、--json人类可读输出打印Query / Collection / Index(statusreasonfingerprint)每个匹配项输出record_id、score、source含heading或key_path定位与首条 snippet--json输出稳定结构{query, collection, index, matches}每个 match 含record_id、file_path、heading、key_path、score、snippets、source_refs、evidence_refs错误以结构化码区分参数类错误empty_query、invalid_limit、invalid_snippet_chars、unknown_collection退出码 2配置/源/缓存类错误profile_failure、source_failure、index_failure、cache_failure退出码 3无匹配是正常成功退出码 0、matches为空数组错误信息不会泄漏绝对路径测试 forge/tests/test_search_specs.py#L884-L937 验证了路径穿越场景下既无越界写入、也不在输出中出现 Traceback 或仓库根路径。十、测试如何守护契约forge/tests/test_search_specs.py 是这份契约的活文档其中与词汇表直接相关的断言包括test_future_jsonl_loader_api_is_documentedL326-L330直接读取本 README断言其中必须出现load_jsonl_records(path: Path)与SpecRecordValidationError保证文档与实现不脱节test_cs2_record_round_trips_with_bilingual_aliases_and_provenanceL332-L343规范行写出再读回必须逐字段相等且双语别名与key_path/heading定位完整保留test_malformed_jsonl_raises_named_validation_error_instead_of_skippingL345-L352残缺行按路径:行号:原因报错test_reviewed_bilingual_records_are_complete_and_source_backedL356-L400core_3d至少 12 条、cs2至少 8 条record_id全局唯一所有记录字段集合不得超过契约字段source_refs非空且双语别名集合与源路径集合必须覆盖既定清单。这意味着如果你向该目录提交一条新记录测试套件会立即校验它的字段完整性、类型正确性、双语别名与溯源要求——契约不是纸面约定而是可执行的回归门禁。十一、编写合格记录的操作清单结合 README 契约与源码校验逻辑编写一条可入库的规格记录请按以下清单自检格式UTF-8、每行一个 JSON 对象、无尾随解释文字record_id小写、点分隔、集合内唯一、不随标题措辞变化分类collection用既有集合键cs2/core_3ddomain、kind、entity保持领域内一致的分组习惯可搜索文本title人类可读aliases尽量补充已知双语同义词英语 越南语content必须由来源支撑仅在结构化字段已承载检索细节时才允许留空溯源source_refs非空路径为仓库相对路径、使用正斜杠Markdown 用heading、JSON 用key_path定位两种定位可并存evidence_refs只作辅助不能替代source_refs测量值measurements的value保留来源原文如source-dependent、0.05–0.15绝不编造数字确定性表达按证据强度选择observed/inferred/unverifiedconfidence落在0.0–1.0闭区间且反映陈述置信度而非检索相关性不确定时降低置信度、写明assumptions提交前验证运行 forge/tests/test_search_specs.py 相关用例或直接调用load_jsonl_records确认无SpecRecordValidationError。十二、小结本目录的词汇表契约本质上是把模型推理时需要的事实知识工程化为可评审、可溯源、可检索、可版本化的数据资产15 个稳定字段约束结构source_refs/evidence_refs约束事实出处observation_status/confidence/assumptions约束确定性边界而 forge/_shared/spec_search.py 中的严格校验、分词器与 BM25 索引则把这份契约变成可运行的本地规格检索能力。任何一条新增记录只有同时满足格式、类型、溯源与确定性四层要求才能进入检索管线为 img2threejs 的Token 高效目标提供可靠的事实底座。赞分享人工智能AI 技能3D渲染【免费下载链接】img2threejsRebuild the object in a reference image as a code-only, procedural, quality-gated, animation-ready Three.js model. Token-efficient image-to-3D.项目地址https://gitcode.com/gh_mirrors/im/img2threejs点击查看免费下载相关推荐把 PC 游戏送进客厅Sunshine 串流服务器 30 分钟落地手册把 PC 游戏送进客厅Sunshine 串流服务器 30 分钟落地手册 Sunshine 是一款免费开源的自托管游戏串流服务器专门负责把你 PC 上的游戏画音视频后端Kilo 项目土耳其语本地化tr.md 翻译词汇表规范与落地实践Kilo 项目土耳其语本地化tr.md 翻译词汇表规范与落地实践 本文围绕当前仓库中土耳其语翻译词汇表文档 .opencode/glossary/tr.md人工智能大模型AI Agent代码智能体工具调用交互助手CLIKilo 丹麦语本地化规范解读.opencode/glossary/da.md 词汇表与 kilo-i18n 落地实践Kilo 丹麦语本地化规范解读.opencode/glossary/da.md 词汇表与 kilo i18n 落地实践 丹麦语da是 Kilo 多语言本地人工智能大模型AI Agent代码智能体工具调用交互助手CLI上一篇Freqtrade外部消息消费者第三方系统集成接口下一篇一键导出云架构图diagrams全格式输出与高效协作指南创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表