feat(phase-04): Wyoming Satellite integration + OpenClaw HA components
## Voice Pipeline (P3) - Replace openWakeWord daemon with Wyoming Satellite approach - Add Wyoming Satellite service on port 10700 for HA voice pipeline - Update setup.sh with cross-platform sed compatibility (macOS/Linux) - Add version field to Kokoro TTS voice info - Update launchd service loader to use Wyoming Satellite ## Home Assistant Integration (P4) - Add custom conversation agent component (openclaw_conversation) - Fix: Use IntentResponse instead of plain strings (HA API requirement) - Support both HTTP API and CLI fallback modes - Config flow for easy HA UI setup - Add OpenClaw bridge scripts (Python + Bash) - Add ha-ctl utility for HA entity control - Fix: Use context manager for token file reading - Add HA configuration examples and documentation ## Infrastructure - Add mem0 backup automation (launchd + script) - Add n8n workflow templates (morning briefing, notification router) - Add VS Code workspace configuration - Reorganize model files into categorized folders: - lmstudio-community/ - mlx-community/ - bartowski/ - mradermacher/ ## Documentation - Update PROJECT_PLAN.md with Wyoming Satellite architecture - Update TODO.md with completed Wyoming integration tasks - Add OPENCLAW_INTEGRATION.md for HA setup guide ## Testing - Verified Wyoming services running (STT:10300, TTS:10301, Satellite:10700) - Verified OpenClaw CLI accessibility - Confirmed cross-platform compatibility fixes
This commit is contained in:
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"<image_soft_token>": 262144
|
||||
}
|
||||
@@ -0,0 +1,3 @@
|
||||
{
|
||||
"chat_template": "{{ bos_token }}\n{%- if messages[0]['role'] == 'system' -%}\n {%- if messages[0]['content'] is string -%}\n {%- set first_user_prefix = messages[0]['content'] + '\n\n' -%}\n {%- else -%}\n {%- set first_user_prefix = messages[0]['content'][0]['text'] + '\n\n' -%}\n {%- endif -%}\n {%- set loop_messages = messages[1:] -%}\n{%- else -%}\n {%- set first_user_prefix = \"\" -%}\n {%- set loop_messages = messages -%}\n{%- endif -%}\n{%- for message in loop_messages -%}\n {%- if (message['role'] == 'user') != (loop.index0 % 2 == 0) -%}\n {{ raise_exception(\"Conversation roles must alternate user/assistant/user/assistant/...\") }}\n {%- endif -%}\n {%- if (message['role'] == 'assistant') -%}\n {%- set role = \"model\" -%}\n {%- else -%}\n {%- set role = message['role'] -%}\n {%- endif -%}\n {{ '<start_of_turn>' + role + '\n' + (first_user_prefix if loop.first else \"\") }}\n {%- if message['content'] is string -%}\n {{ message['content'] | trim }}\n {%- elif message['content'] is iterable -%}\n {%- for item in message['content'] -%}\n {%- if item['type'] == 'image' -%}\n {{ '<start_of_image>' }}\n {%- elif item['type'] == 'text' -%}\n {{ item['text'] | trim }}\n {%- endif -%}\n {%- endfor -%}\n {%- else -%}\n {{ raise_exception(\"Invalid content type\") }}\n {%- endif -%}\n {{ '<end_of_turn>\n' }}\n{%- endfor -%}\n{%- if add_generation_prompt -%}\n {{'<start_of_turn>model\n'}}\n{%- endif -%}\n"
|
||||
}
|
||||
@@ -0,0 +1,243 @@
|
||||
{
|
||||
"_attn_implementation_autoset": false,
|
||||
"add_cross_attention": false,
|
||||
"architectures": [
|
||||
"Gemma3ForConditionalGeneration"
|
||||
],
|
||||
"bad_words_ids": null,
|
||||
"begin_suppress_tokens": null,
|
||||
"boi_token_index": 255999,
|
||||
"bos_token_id": null,
|
||||
"chunk_size_feed_forward": 0,
|
||||
"cross_attention_hidden_size": null,
|
||||
"decoder_start_token_id": null,
|
||||
"diversity_penalty": 0.0,
|
||||
"do_sample": false,
|
||||
"early_stopping": false,
|
||||
"encoder_no_repeat_ngram_size": 0,
|
||||
"eoi_token_index": 256000,
|
||||
"eos_token_id": [
|
||||
1,
|
||||
106
|
||||
],
|
||||
"exponential_decay_length_penalty": null,
|
||||
"finetuning_task": null,
|
||||
"forced_bos_token_id": null,
|
||||
"forced_eos_token_id": null,
|
||||
"id2label": {
|
||||
"0": "LABEL_0",
|
||||
"1": "LABEL_1"
|
||||
},
|
||||
"image_token_index": 262144,
|
||||
"initializer_range": 0.02,
|
||||
"is_decoder": false,
|
||||
"is_encoder_decoder": false,
|
||||
"label2id": {
|
||||
"LABEL_0": 0,
|
||||
"LABEL_1": 1
|
||||
},
|
||||
"length_penalty": 1.0,
|
||||
"max_length": 20,
|
||||
"min_length": 0,
|
||||
"mm_tokens_per_image": 256,
|
||||
"model_type": "gemma3",
|
||||
"no_repeat_ngram_size": 0,
|
||||
"num_beam_groups": 1,
|
||||
"num_beams": 1,
|
||||
"num_return_sequences": 1,
|
||||
"output_attentions": false,
|
||||
"output_hidden_states": false,
|
||||
"output_scores": false,
|
||||
"pad_token_id": null,
|
||||
"prefix": null,
|
||||
"problem_type": null,
|
||||
"pruned_heads": {},
|
||||
"quantization": {
|
||||
"group_size": 64,
|
||||
"bits": 4
|
||||
},
|
||||
"remove_invalid_values": false,
|
||||
"repetition_penalty": 1.0,
|
||||
"return_dict": true,
|
||||
"return_dict_in_generate": false,
|
||||
"sep_token_id": null,
|
||||
"suppress_tokens": null,
|
||||
"task_specific_params": null,
|
||||
"temperature": 1.0,
|
||||
"text_config": {
|
||||
"return_dict": true,
|
||||
"output_hidden_states": false,
|
||||
"output_attentions": false,
|
||||
"torchscript": false,
|
||||
"torch_dtype": "bfloat16",
|
||||
"use_bfloat16": false,
|
||||
"tf_legacy_loss": false,
|
||||
"pruned_heads": {},
|
||||
"tie_word_embeddings": true,
|
||||
"chunk_size_feed_forward": 0,
|
||||
"is_encoder_decoder": false,
|
||||
"is_decoder": false,
|
||||
"cross_attention_hidden_size": null,
|
||||
"add_cross_attention": false,
|
||||
"tie_encoder_decoder": false,
|
||||
"max_length": 20,
|
||||
"min_length": 0,
|
||||
"do_sample": false,
|
||||
"early_stopping": false,
|
||||
"num_beams": 1,
|
||||
"num_beam_groups": 1,
|
||||
"diversity_penalty": 0.0,
|
||||
"temperature": 1.0,
|
||||
"top_k": 50,
|
||||
"top_p": 1.0,
|
||||
"typical_p": 1.0,
|
||||
"repetition_penalty": 1.0,
|
||||
"length_penalty": 1.0,
|
||||
"no_repeat_ngram_size": 0,
|
||||
"encoder_no_repeat_ngram_size": 0,
|
||||
"bad_words_ids": null,
|
||||
"num_return_sequences": 1,
|
||||
"output_scores": false,
|
||||
"return_dict_in_generate": false,
|
||||
"forced_bos_token_id": null,
|
||||
"forced_eos_token_id": null,
|
||||
"remove_invalid_values": false,
|
||||
"exponential_decay_length_penalty": null,
|
||||
"suppress_tokens": null,
|
||||
"begin_suppress_tokens": null,
|
||||
"architectures": null,
|
||||
"finetuning_task": null,
|
||||
"id2label": {
|
||||
"0": "LABEL_0",
|
||||
"1": "LABEL_1"
|
||||
},
|
||||
"label2id": {
|
||||
"LABEL_0": 0,
|
||||
"LABEL_1": 1
|
||||
},
|
||||
"tokenizer_class": null,
|
||||
"prefix": null,
|
||||
"bos_token_id": 2,
|
||||
"pad_token_id": 0,
|
||||
"eos_token_id": 1,
|
||||
"sep_token_id": null,
|
||||
"decoder_start_token_id": null,
|
||||
"task_specific_params": null,
|
||||
"problem_type": null,
|
||||
"_name_or_path": "",
|
||||
"_attn_implementation_autoset": false,
|
||||
"model_type": "gemma3_text",
|
||||
"vocab_size": 262208,
|
||||
"max_position_embeddings": 131072,
|
||||
"hidden_size": 5376,
|
||||
"intermediate_size": 21504,
|
||||
"num_hidden_layers": 62,
|
||||
"num_attention_heads": 32,
|
||||
"head_dim": 128,
|
||||
"num_key_value_heads": 16,
|
||||
"initializer_range": 0.02,
|
||||
"rms_norm_eps": 1e-06,
|
||||
"use_cache": true,
|
||||
"rope_theta": 1000000,
|
||||
"attention_bias": false,
|
||||
"attention_dropout": 0.0,
|
||||
"hidden_activation": "gelu_pytorch_tanh",
|
||||
"query_pre_attn_scalar": 168,
|
||||
"sliding_window": 1024,
|
||||
"final_logit_softcapping": null,
|
||||
"attn_logit_softcapping": null,
|
||||
"cache_implementation": "hybrid",
|
||||
"rope_local_base_freq": 10000,
|
||||
"sliding_window_pattern": 6,
|
||||
"rope_scaling": {
|
||||
"factor": 8.0,
|
||||
"rope_type": "linear"
|
||||
}
|
||||
},
|
||||
"tf_legacy_loss": false,
|
||||
"tie_encoder_decoder": false,
|
||||
"tie_word_embeddings": true,
|
||||
"tokenizer_class": null,
|
||||
"top_k": 50,
|
||||
"top_p": 1.0,
|
||||
"torchscript": false,
|
||||
"transformers_version": "4.51.3",
|
||||
"typical_p": 1.0,
|
||||
"use_bfloat16": false,
|
||||
"vision_config": {
|
||||
"return_dict": true,
|
||||
"output_hidden_states": false,
|
||||
"output_attentions": false,
|
||||
"torchscript": false,
|
||||
"torch_dtype": "bfloat16",
|
||||
"use_bfloat16": false,
|
||||
"tf_legacy_loss": false,
|
||||
"pruned_heads": {},
|
||||
"tie_word_embeddings": true,
|
||||
"chunk_size_feed_forward": 0,
|
||||
"is_encoder_decoder": false,
|
||||
"is_decoder": false,
|
||||
"cross_attention_hidden_size": null,
|
||||
"add_cross_attention": false,
|
||||
"tie_encoder_decoder": false,
|
||||
"max_length": 20,
|
||||
"min_length": 0,
|
||||
"do_sample": false,
|
||||
"early_stopping": false,
|
||||
"num_beams": 1,
|
||||
"num_beam_groups": 1,
|
||||
"diversity_penalty": 0.0,
|
||||
"temperature": 1.0,
|
||||
"top_k": 50,
|
||||
"top_p": 1.0,
|
||||
"typical_p": 1.0,
|
||||
"repetition_penalty": 1.0,
|
||||
"length_penalty": 1.0,
|
||||
"no_repeat_ngram_size": 0,
|
||||
"encoder_no_repeat_ngram_size": 0,
|
||||
"bad_words_ids": null,
|
||||
"num_return_sequences": 1,
|
||||
"output_scores": false,
|
||||
"return_dict_in_generate": false,
|
||||
"forced_bos_token_id": null,
|
||||
"forced_eos_token_id": null,
|
||||
"remove_invalid_values": false,
|
||||
"exponential_decay_length_penalty": null,
|
||||
"suppress_tokens": null,
|
||||
"begin_suppress_tokens": null,
|
||||
"architectures": null,
|
||||
"finetuning_task": null,
|
||||
"id2label": {
|
||||
"0": "LABEL_0",
|
||||
"1": "LABEL_1"
|
||||
},
|
||||
"label2id": {
|
||||
"LABEL_0": 0,
|
||||
"LABEL_1": 1
|
||||
},
|
||||
"tokenizer_class": null,
|
||||
"prefix": null,
|
||||
"bos_token_id": null,
|
||||
"pad_token_id": null,
|
||||
"eos_token_id": null,
|
||||
"sep_token_id": null,
|
||||
"decoder_start_token_id": null,
|
||||
"task_specific_params": null,
|
||||
"problem_type": null,
|
||||
"_name_or_path": "",
|
||||
"_attn_implementation_autoset": false,
|
||||
"model_type": "siglip_vision_model",
|
||||
"vision_use_head": false,
|
||||
"hidden_size": 1152,
|
||||
"intermediate_size": 4304,
|
||||
"num_hidden_layers": 27,
|
||||
"num_attention_heads": 16,
|
||||
"num_channels": 3,
|
||||
"patch_size": 14,
|
||||
"image_size": 896,
|
||||
"attention_dropout": 0.0,
|
||||
"layer_norm_eps": 1e-06,
|
||||
"hidden_act": "gelu_pytorch_tanh",
|
||||
"skip_vision": true
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"cache_implementation": "hybrid",
|
||||
"do_sample": true,
|
||||
"eos_token_id": [
|
||||
1,
|
||||
106
|
||||
],
|
||||
"top_k": 64,
|
||||
"top_p": 0.95,
|
||||
"transformers_version": "4.52.0.dev0"
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,29 @@
|
||||
{
|
||||
"do_convert_rgb": null,
|
||||
"do_normalize": true,
|
||||
"do_pan_and_scan": null,
|
||||
"do_rescale": true,
|
||||
"do_resize": true,
|
||||
"image_mean": [
|
||||
0.5,
|
||||
0.5,
|
||||
0.5
|
||||
],
|
||||
"image_processor_type": "Gemma3ImageProcessor",
|
||||
"image_seq_length": 256,
|
||||
"image_std": [
|
||||
0.5,
|
||||
0.5,
|
||||
0.5
|
||||
],
|
||||
"pan_and_scan_max_num_crops": null,
|
||||
"pan_and_scan_min_crop_size": null,
|
||||
"pan_and_scan_min_ratio_to_activate": null,
|
||||
"processor_class": "Gemma3Processor",
|
||||
"resample": 2,
|
||||
"rescale_factor": 0.00392156862745098,
|
||||
"size": {
|
||||
"height": 896,
|
||||
"width": 896
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,4 @@
|
||||
{
|
||||
"image_seq_length": 256,
|
||||
"processor_class": "Gemma3Processor"
|
||||
}
|
||||
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"boi_token": "<start_of_image>",
|
||||
"bos_token": {
|
||||
"content": "<bos>",
|
||||
"lstrip": false,
|
||||
"normalized": false,
|
||||
"rstrip": false,
|
||||
"single_word": false
|
||||
},
|
||||
"eoi_token": "<end_of_image>",
|
||||
"eos_token": {
|
||||
"content": "<eos>",
|
||||
"lstrip": false,
|
||||
"normalized": false,
|
||||
"rstrip": false,
|
||||
"single_word": false
|
||||
},
|
||||
"image_token": "<image_soft_token>",
|
||||
"pad_token": {
|
||||
"content": "<pad>",
|
||||
"lstrip": false,
|
||||
"normalized": false,
|
||||
"rstrip": false,
|
||||
"single_word": false
|
||||
},
|
||||
"unk_token": {
|
||||
"content": "<unk>",
|
||||
"lstrip": false,
|
||||
"normalized": false,
|
||||
"rstrip": false,
|
||||
"single_word": false
|
||||
}
|
||||
}
|
||||
2379611
homeai-llm/modelfiles/mlx-community/gemma-3-27b-it-qat-4bit/tokenizer.json
Normal file
2379611
homeai-llm/modelfiles/mlx-community/gemma-3-27b-it-qat-4bit/tokenizer.json
Normal file
File diff suppressed because it is too large
Load Diff
Binary file not shown.
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user