Files
HomeAgent/internal/kernelmod/onnx/mod.go
JianFeeeee 4e70b8d5d8 refactor(module): 核心仓 Go module 路径改为 github.com/JianFeeeee/HologramAgent
批 1,不含 SDK 仓与目录改名。

- go.mod 第 1 行 module 路径
- 366 个 .go 文件的完整前缀 github.com/JianFeeeee/HomeAgent 机械替换
  (857 处,仅完整前缀;展示名/注释里的 HomeAgent 字样留给批 5)
- 未改:third_party 目录名、SDK 自身 go.mod module、go.mod replace 目标、
  homed/waiter 可执行名、.hmap 后缀
2026-10-21 12:17:19 +08:00

52 lines
2.0 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

// Package onnx 是 onnx-parser 模块:依存句法分析器(失败退回规则引擎)。
//
// ## ★ 它为什么是独立模块
//
// 它写的是**包级单例** `nlp.defaultParser`(internal/nlp/parser.go:15),
// 而该单例由**运行期**读取(`nlp.NewExtractor(nil)` 构造时快照它,
// 由蒸馏路径 `extractKeyTriples` 调用)。
//
// 这正是设计 §2.8.2 说的"签名看不到的隐藏依赖":没有参数传递,
// 而是**包级变量 + 运行期读**。
//
// ⇒ 独立成模块,让 text-memory 能**显式声明**对它的依赖
// (见 kernelmod/textmem 的说明)。这样"碰巧安全"变成"结构保证"。
package onnx
import (
"log"
"path/filepath"
"github.com/JianFeeeee/HologramAgent/internal/kernelboot"
"github.com/JianFeeeee/HologramAgent/internal/kernelmod"
"github.com/JianFeeeee/HologramAgent/internal/nlp"
)
// Module 初始化依存句法分析器。
type Module struct{}
func (Module) Name() string { return "onnx-parser" }
func (Module) Requires() []string { return []string{kernelmod.FacConfig} }
func (Module) Provides() []string { return []string{kernelmod.FacONNX} }
func (Module) Init(ks *kernelboot.KernelState) error {
modelPath := ks.CfgReg.GetString("core.agent.onnx_model_path", "")
onnxParser, err := nlp.NewONNXParser(nlp.ONNXConfig{
ModelPath: modelPath,
DataDir: filepath.Join(ks.Cfg.Daemon.DataDir, "nlp"),
})
if err != nil {
log.Printf("[homed] warn: ONNX parser init: %v, using fallback", err)
return nil
}
nlp.SetDefaultParser(onnxParser)
// 日志必须报**实际解析出的**模型路径,不能回显配置值:
// core.agent.onnx_model_path 留空时内核会用**二进制内嵌**的 dep_parser.onnx
// (解到 <data>/nlp 后加载)。此前只打配置值,于是出现
// "initialized (model: )" —— 看着像 ONNX 没启用,实际内嵌模型一直在跑。
log.Printf("[homed] dep parser ready (ONNX,模型: %s)", onnxParser.ModelPath())
return nil
}
func init() { kernelmod.Register(Module{}) }