mirror of
https://gitcode.com/JianFeeeee/HomeAgent.git
synced 2026-10-03 15:53:56 +00:00
feat(cli,ohos): 补齐两处能力缺口——CLI /memory context|tools、鸿蒙 camerasue 录像回传
核对「CLI 与 WebUI 插件能力对齐」时发现两个此前遗漏的缺口,一并补齐。 1) CLI /memory 缺 context 与 tools(internal/plugins/cli/plugin.go) WebUI 有 GET /api/v1/memory/context 与 /api/v1/memory/tools,CLI 只有 query/graph/text。IndexerAPI 本就对内部插件开放(BuildContext/ FormatContext/GetToolDefinitions/BuildToolPrompt),不是 SDK 缺口。 补上后与 WebUI 同源:context 打印「实际会注入什么上下文」, tools 打印工具定义 + 工具提示词。 waiter 同步接上两条远端路由与 help 文案。 2) 鸿蒙 camerasue 录像(BridgeCaps/BridgeRouter/DeviceBridge.ets) 此前 `camerasue <N秒>` 直接返回「暂不支持录像回传」。查 SDK 后发现 cameraPicker 本身就有 PickerMediaType.VIDEO 与 PickerProfile.videoDuration —— 录像完全可行,只是回传通道没接。 现改为:VIDEO 模式取回 mp4,经 DeviceBridge.sendDataChunked 按 cmd_data_start/分块/cmd_data_end 回传(与 GUI/CLI 录像路径一致), 网关聚合后落盘成文件、agent 拿路径;照片仍走小体积 base64 内联。 上限 64MB、时长 1~300s,超限明确报错而不是把 WS/上下文撑爆。 依赖方向处理:BridgeCaps 需要「往本请求回传字节」,但 DeviceBridge 为取 CapResult 已 import BridgeCaps,反向 import 会成环。改为 BridgeRouter 注入 DataChunkSender 回调(它同时持有 deviceBridge 与 reqId), BridgeCaps 不碰 socket。新增 CapResult.chunked 标记「结果已由能力分块 发完」,DeviceBridge 据此不再回 cmd_result,避免网关把已完成请求与后续 分块错配。 验证:hvigor assembleHap BUILD SUCCESSFUL(ArkTS 编译通过,改动文件零告警); make check-client-versions 一致;go vet 干净;全量 go test ./internal/... ./cmd/... 零失败。
This commit is contained in:
@ -38,6 +38,8 @@ Server commands (local 与 remote 行为一致):
|
||||
/memory query <text> query graph memory
|
||||
/memory graph dump full graph memory snapshot
|
||||
/memory text [n] recent text-memory events + stats
|
||||
/memory context [q] assembled memory context (what gets injected)
|
||||
/memory tools memory tool definitions + tool prompt
|
||||
/knowledge list knowledge base (+stats)
|
||||
/knowledge delete <name> delete knowledge item
|
||||
/config dump kernel config (JSON)
|
||||
@ -265,8 +267,15 @@ Any other text is sent to the agent directly.`)
|
||||
case sub == "text" || strings.HasPrefix(sub, "text "):
|
||||
d, _ := rc.DoAPI("GET", "/api/v1/memory/text", "")
|
||||
printJSON(out, d)
|
||||
case sub == "context" || strings.HasPrefix(sub, "context "):
|
||||
q := strings.TrimSpace(strings.TrimPrefix(sub, "context"))
|
||||
d, _ := rc.DoAPI("GET", "/api/v1/memory/context?q="+q, "")
|
||||
printJSON(out, d)
|
||||
case sub == "tools":
|
||||
d, _ := rc.DoAPI("GET", "/api/v1/memory/tools", "")
|
||||
printJSON(out, d)
|
||||
default:
|
||||
fmt.Fprintln(out, "usage: /memory query <text> | /memory graph | /memory text [n]")
|
||||
fmt.Fprintln(out, "usage: /memory query <text> | /memory graph | /memory text [n] | /memory context [q] | /memory tools")
|
||||
}
|
||||
} else {
|
||||
state.Send(cmd)
|
||||
|
||||
Reference in New Issue
Block a user