root a7e06fba77 feat: expose tool owner plugin in stage context
- add Plugin field to ToolDef, ToolCall, ToolResult
- track tool owner in StageHost
- annotate before/after_toolcall stage context with tool plugin
- add RegisterStageOwnTools() for plugin-scoped tool listeners
- keep interrupt input source/output channel context in stage messages
2026-07-06 17:25:18 +08:00

HomeAgent

首个提出核心域与应用域分离的 Agent 框架。内核零 IO一切外界交互由插件承载——WebUI、QQ、命令行、文件操作、网络搜索、备忘全部是插件内核不碰任何 IO。

配合三层记忆架构Context → Document → Graph单对话长期稳定运行记忆不衰减。

homed内核零 IO  PluginSDK  插件所有 IO 能力

核心创新

核心域与应用域分离 — 内核只做 LLM 编排、记忆管理、知识检索;所有 IO 能力(收发消息、读写文件、网络请求、硬件交互)全由插件实现。插件可热加载、独立开发、独立发布。这不是 RPC 框架的微服务拆分,而是 Agent 框架层次的领域划分。

三层记忆架构 — 解决 Agent 长期运行的记忆衰减问题:

  • Context 层TF-IDF 相关性评分的事件窗口,维护最近 topK 条上下文
  • Document 层:临时记忆,冷数据自动下沉,也支持用户主动提交
  • Graph 层SQLite 图数据库,持久化实体关系和语义记忆,支持蒸馏管道从原始对话中提取三元组

快速体验

make build build-cli
./build/homed -data /tmp/ha
# 交互模式
./build/waiter

# 或单条消息
echo "你好,记住我喜欢喝咖啡" | ./build/waiter

API 密钥通过 WebUI http://localhost:8080 设置页配置,持久化在 SQLite 中。

代码结构

cmd/homed/          守护进程入口,组装所有子系统
cmd/waiter/         CLI 客户端Unix socket
internal/
├── agent/core/     Agent 核心事件循环、LLM 工具循环、7 阶段管道
├── agent/api/      LLM Provider + 8 个 Lua 适配器
├── memory/         三层记忆Graph(SQLite) / Document(JSON+TF-IDF) / Text(JSONL)
├── knowledge/      知识库(文件系统 + TF-IDF
├── plugin/         插件注册表 + .so 动态加载器
├── plugins/        内置 10 个插件webui/cli/timer/cmd/mcp/openclaw/agentcli/healthcheck/pluginmgr/files
├── sdk/            PluginSDKTool/Stage/Event 三通道)
├── config/         SQLite 配置中心
├── events/         事件总线
└── lua/adapters/   8 个 LLM 协议适配器脚本
外部插件(.so示例见 SDK 仓库的 `example/` 目录

项目状态

核心可用,插件系统和 SDK 已就绪。内置 10 个插件,外部插件示例见 SDK 仓库的 example/ 目录。

文档

构建

make build build-cli    # 编译守护进程 + CLI
make test               # go test ./...
make install            # 安装到系统

依赖Go 1.19+, CGo (go-sqlite3), Linux。

Description
No description provided
Readme AGPL-3.0 83 MiB
Languages
Go 74.6%
JavaScript 12.8%
HTML 3.9%
CSS 3.1%
Python 2.4%
Other 3.1%