mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-09-28 13:23:03 +00:00
SKILL.md 里原本只有 curl 示例,agent 用起来要自己拼 URL 与鉴权头。 补 scripts/kb_tree.sh(照 dify-ops 的做法把脚本随 skill 分发): - 子命令 tree/categories/counts/search,选项 -q/-c/-d/-i/-l - token 读取顺序:KB_TOKEN 环境变量 → config/config.json。 **故意不接受命令行传 token**(会进 shell 历史与 ps 输出) - 预检端口:不通时直接说明「服务未上线」并给出上线步骤, 而不是抛 curl: (7) Connection refused 让用户自己猜 - 错误翻译成人话:401 → 令牌无效;404 → 附上服务端返回的现有分类 (用 curl -w 而非 -f,否则 404 响应体里最有用的那份清单会被丢掉) - 退出码:0 成功 / 2 参数 / 3 令牌 / 4 分类不存在 / 5 HTTP / 7 连不上 / 8 请求失败 DEPLOY.md 是给部署方的交接单:本机 kbtree 代码已合入 main 且 skill/token 已就位,但**运行中的二进制里没有 kbtree**(14:35 有人换过一版二进制), 故替换与重启留给部署方。含备份/替换/验证步骤、回滚方式、端口与 token 说明。 token 与 config.json **不入库**(config/ 目录留空),安装时由部署方从 配置库 config_kbtree 表读取后写入本机。
3.6 KiB
3.6 KiB
kbtree 本机部署交接(交给部署方执行)
我负责把 kbtree 的代码合入 main,并把 skill + 调用方法在本机装好。 二进制替换与重启由你做 —— 我不碰运行中的生产守护进程。
现状(交接时的事实)
| 项 | 状态 |
|---|---|
| kbtree 代码 | ✅ 已在 main(41d7543),已推送 |
| skill | ✅ 已装 /home/newqqagent/skills/knowledge-base/ |
| token | ✅ 已写入 config_kbtree 表(固定值,重启不变) |
| 配置库备份 | ✅ config.db.bak-20260926-143643 |
| 服务 | ❌ 未上线 —— 运行中的二进制里没有 kbtree |
| 我构建的候选二进制 | /tmp/homed-new(84.7MB,与 main 同源,-tags onnxruntime) |
为何未上线:14:35 有人替换了 /usr/local/bin/homed(84,985,720 字节)并重启了
服务(现 PID 1450152)。那个二进制与 main 构建不是同一份,比我的大 2.4MB。
直接部署会覆盖它 —— 所以交给你决定何时、以及以哪个版本为准。
实测确认现役二进制不含 kbtree:
strings /usr/local/bin/homed | grep -c kbtree # → 0
ss -ltn | grep 9892 # → 无监听
上线步骤
必须按顺序,且第 1 步不能用 cp:
DATA=/home/newqqagent
# 1. 备份配置库(WAL 模式下 cp 会拿到不一致快照,必须用 .backup)
sqlite3 $DATA/config.db ".backup '$DATA/config.db.bak-$(date +%Y%m%d-%H%M%S)'"
# 2. 确认要部署的二进制
strings /tmp/homed-new | grep -c kbtree # 期望 ≥ 1;为 0 说明候选不对
# 3. 原子替换(install 内部是 rename,不会写坏运行中进程的映像)
install -m 0755 /tmp/homed-new /usr/local/bin/homed
# 4. 重启
systemctl restart homeagent
# 5. 验证
systemctl is-active homeagent
journalctl -u homeagent --since "-2min" | grep kbtree
ss -ltn | grep 9892
第 5 步期望看到
[kbtree] 已启动 http://127.0.0.1:9892
[kbtree] 外部 agent 可用:GET /tree、/categories、/counts、/search?q=&category=
部署后的冒烟测试
cd /home/newqqagent/skills/knowledge-base
./scripts/kb_tree.sh -h # 帮助(不需要 token)
./scripts/kb_tree.sh categories # 分类列表
./scripts/kb_tree.sh counts # 各分类条目数
./scripts/kb_tree.sh tree -d 1 -i 0 # 只看第一层结构
./scripts/kb_tree.sh search -q 知识库 -c tech -l 3
token 自动从 config/config.json 读(权限 600),无需手动 export。
覆盖方式:KB_TOKEN=xxx ./scripts/kb_tree.sh ... 或改那个 json。
端口与 token
- 监听:
kbtree.listen_addr=127.0.0.1:9892(仅本机) - token:
kbtree.token已在config_kbtree表里设为固定值。 若要改成随机(每次重启变),把该行 value 置空即可 —— 但那样每次重启都要重新把 token 告诉所有使用者。 - 改 token 时两处一起改:
config_kbtree表 +skills/knowledge-base/config/config.json。
要对外(别的机器)时改 listen_addr 为 0.0.0.0:9892,
但先想清楚 token 怎么分发 —— 它是唯一的屏障。
退出码约定(脚本)
| 码 | 含义 |
|---|---|
| 0 | 成功 |
| 2 | 参数错误 / 未知命令 |
| 3 | 令牌无效(401) |
| 4 | 分类不存在(404,stderr 会列出现有分类) |
| 5 | 其它 HTTP 错误 |
| 7 | 连不上(通常是服务未上线) |
| 8 | 请求发送失败 |
回滚
install -m 0755 <旧二进制> /usr/local/bin/homed
systemctl restart homeagent
配置与 skill 都不影响回滚(kbtree 未启动时它们只是闲置文件)。