auto-snapshot 2026-08-01 01:35:48
This commit is contained in:
parent
d57bdc92e2
commit
5ced034690
|
|
@ -1,7 +1,7 @@
|
|||
model:
|
||||
default: nvidia/nemotron-3-super-120b-a12b
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
default: deepseek-v4-flash
|
||||
api_key_env: DEEPSEEK_API_KEY
|
||||
base_url: https://api.deepseek.com
|
||||
providers:
|
||||
newapi-local:
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
|
|
@ -16,7 +16,7 @@ providers:
|
|||
rate_limit: 1000
|
||||
timeout: 30
|
||||
deepseek:
|
||||
api_key: sk-b1212066094d4e319784f23d5b2c6bbd
|
||||
key_env: DEEPSEEK_API_KEY
|
||||
base_url: https://api.deepseek.com
|
||||
cost_factor: 0.0
|
||||
default_model: deepseek-v4-flash
|
||||
|
|
|
|||
|
|
@ -0,0 +1,612 @@
|
|||
model:
|
||||
default: deepseek-v4-flash
|
||||
<<<<<<< HEAD
|
||||
api_key: sk-b12...6bbd
|
||||
=======
|
||||
api_key: sk-b1212066094d4e319784f23d5b2c6bbd
|
||||
>>>>>>> 6bbfdba (fix(model-health.py v3): 排名驱动自动替换 + 探针3次平均 + 修复致命缺陷)
|
||||
base_url: https://api.deepseek.com
|
||||
providers:
|
||||
newapi-local:
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
cost_factor: 0.0
|
||||
default_model: nvidia/nemotron-3-super-120b-a12b
|
||||
models:
|
||||
- nvidia/nemotron-3-super-120b-a12b
|
||||
- openai/gpt-oss-120b
|
||||
- mistralai/mistral-nemotron
|
||||
- nvidia/nvidia-nemotron-nano-9b-v2
|
||||
- nvidia/llama-3.3-nemotron-super-49b-v1.5
|
||||
rate_limit: 1000
|
||||
timeout: 30
|
||||
deepseek:
|
||||
api_key: sk-b1212066094d4e319784f23d5b2c6bbd
|
||||
base_url: https://api.deepseek.com
|
||||
cost_factor: 0.0
|
||||
default_model: deepseek-v4-flash
|
||||
models:
|
||||
- deepseek-v4-flash
|
||||
- deepseek-v4-pro
|
||||
rate_limit: 1000
|
||||
timeout: 30
|
||||
fallback_providers: '[]'
|
||||
toolsets:
|
||||
- hermes-cli
|
||||
- web
|
||||
agent:
|
||||
max_turns: 90
|
||||
gateway_timeout: 1800
|
||||
restart_drain_timeout: 180
|
||||
api_max_retries: 2
|
||||
service_tier: ''
|
||||
tool_use_enforcement: auto
|
||||
task_completion_guidance: true
|
||||
environment_probe: true
|
||||
environment_hint: ''
|
||||
gateway_timeout_warning: 900
|
||||
clarify_timeout: 600
|
||||
gateway_notify_interval: 180
|
||||
gateway_auto_continue_freshness: 3600
|
||||
image_input_mode: auto
|
||||
disabled_toolsets: []
|
||||
terminal:
|
||||
backend: local
|
||||
modal_mode: auto
|
||||
cwd: .
|
||||
timeout: 180
|
||||
env_passthrough: []
|
||||
shell_init_files: []
|
||||
auto_source_bashrc: true
|
||||
docker_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
docker_forward_env: []
|
||||
singularity_image: docker://nikolaik/python-nodejs:python3.11-nodejs20
|
||||
modal_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
daytona_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
container_cpu: 1
|
||||
container_memory: 5120
|
||||
container_disk: 51200
|
||||
container_persistent: true
|
||||
docker_volumes: []
|
||||
docker_mount_cwd_to_workspace: false
|
||||
docker_extra_args: []
|
||||
docker_run_as_host_user: false
|
||||
persistent_shell: true
|
||||
vercel_runtime: node24
|
||||
web:
|
||||
backend: ''
|
||||
search_backend: ''
|
||||
extract_backend: ''
|
||||
browser:
|
||||
inactivity_timeout: 120
|
||||
command_timeout: 30
|
||||
record_sessions: false
|
||||
allow_private_urls: false
|
||||
engine: auto
|
||||
auto_local_for_private_urls: true
|
||||
cdp_url: ''
|
||||
dialog_policy: must_respond
|
||||
dialog_timeout_s: 300
|
||||
camofox:
|
||||
managed_persistence: false
|
||||
user_id: ''
|
||||
session_key: ''
|
||||
adopt_existing_tab: false
|
||||
rewrite_loopback_urls: false
|
||||
loopback_host_alias: host.docker.internal
|
||||
cloud_provider: local
|
||||
use_gateway: false
|
||||
checkpoints:
|
||||
enabled: true
|
||||
max_snapshots: 50
|
||||
max_total_size_mb: 500
|
||||
max_file_size_mb: 10
|
||||
auto_prune: false
|
||||
retention_days: 7
|
||||
delete_orphans: true
|
||||
min_interval_hours: 24
|
||||
file_read_max_chars: 100000
|
||||
tool_output:
|
||||
max_bytes: 50000
|
||||
max_lines: 2000
|
||||
max_line_length: 2000
|
||||
tool_loop_guardrails:
|
||||
warnings_enabled: true
|
||||
hard_stop_enabled: false
|
||||
warn_after:
|
||||
exact_failure: 2
|
||||
same_tool_failure: 3
|
||||
idempotent_no_progress: 2
|
||||
hard_stop_after:
|
||||
exact_failure: 5
|
||||
same_tool_failure: 8
|
||||
idempotent_no_progress: 5
|
||||
compression:
|
||||
enabled: true
|
||||
threshold: 0.5
|
||||
target_ratio: 0.2
|
||||
protect_last_n: 20
|
||||
hygiene_hard_message_limit: 400
|
||||
protect_first_n: 3
|
||||
abort_on_summary_failure: false
|
||||
kanban:
|
||||
dispatch_in_gateway: true
|
||||
dispatch_interval_seconds: 60
|
||||
failure_limit: 2
|
||||
worker_log_rotate_bytes: 2097152
|
||||
worker_log_backup_count: 1
|
||||
orchestrator_profile: ''
|
||||
default_assignee: ''
|
||||
auto_decompose: true
|
||||
auto_decompose_per_tick: 3
|
||||
dispatch_stale_timeout_seconds: 14400
|
||||
prompt_caching:
|
||||
cache_ttl: 5m
|
||||
long_lived_prefix: true
|
||||
long_lived_ttl: 1h
|
||||
openrouter:
|
||||
response_cache: true
|
||||
response_cache_ttl: 300
|
||||
min_coding_score: 0.65
|
||||
bedrock:
|
||||
region: ''
|
||||
discovery:
|
||||
enabled: true
|
||||
provider_filter: []
|
||||
refresh_interval: 3600
|
||||
guardrail:
|
||||
guardrail_identifier: ''
|
||||
guardrail_version: ''
|
||||
stream_processing_mode: async
|
||||
trace: disabled
|
||||
auxiliary:
|
||||
vision:
|
||||
provider: newapi-local
|
||||
model: meta/llama-3.2-11b-vision-instruct
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
timeout: 120
|
||||
download_timeout: 30
|
||||
web_extract:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 360
|
||||
compression:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 120
|
||||
skills_hub:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
approval:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
mcp:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
title_generation:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
triage_specifier:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 120
|
||||
kanban_decomposer:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 180
|
||||
profile_describer:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 60
|
||||
curator:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 600
|
||||
session_search:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
extra_body: {}
|
||||
max_concurrency: 3
|
||||
display:
|
||||
compact: false
|
||||
personality: kawaii
|
||||
resume_display: full
|
||||
resume_exchanges: 10
|
||||
resume_max_user_chars: 300
|
||||
resume_max_assistant_chars: 200
|
||||
resume_max_assistant_lines: 3
|
||||
resume_skip_tool_only: true
|
||||
busy_input_mode: interrupt
|
||||
tui_auto_resume_recent: false
|
||||
bell_on_complete: false
|
||||
show_reasoning: false
|
||||
streaming: false
|
||||
timestamps: false
|
||||
final_response_markdown: strip
|
||||
persistent_output: true
|
||||
persistent_output_max_lines: 200
|
||||
inline_diffs: true
|
||||
file_mutation_verifier: true
|
||||
show_cost: false
|
||||
skin: default
|
||||
language: en
|
||||
tui_status_indicator: kaomoji
|
||||
user_message_preview:
|
||||
first_lines: 2
|
||||
last_lines: 2
|
||||
interim_assistant_messages: true
|
||||
tool_progress_command: false
|
||||
tool_preview_length: 0
|
||||
ephemeral_system_ttl: 0
|
||||
runtime_footer:
|
||||
fields:
|
||||
- model
|
||||
- context_pct
|
||||
- cwd
|
||||
copy_shortcut: auto
|
||||
tool_progress: all
|
||||
tool_progress_style: accumulate
|
||||
dashboard:
|
||||
theme: default
|
||||
show_token_analytics: false
|
||||
oauth:
|
||||
client_id: ''
|
||||
portal_url: ''
|
||||
public_url: ''
|
||||
privacy:
|
||||
redact_pii: false
|
||||
tts:
|
||||
provider: edge
|
||||
edge:
|
||||
voice: zh-CN-XiaoxiaoNeural
|
||||
elevenlabs:
|
||||
voice_id: pNInz6obpgDQGcFmaJgB
|
||||
model_id: eleven_multilingual_v2
|
||||
openai:
|
||||
model: gpt-4o-mini-tts
|
||||
voice: alloy
|
||||
xai:
|
||||
voice_id: eve
|
||||
language: en
|
||||
sample_rate: 24000
|
||||
bit_rate: 128000
|
||||
mistral:
|
||||
model: voxtral-mini-tts-2603
|
||||
voice_id: c69964a6-ab8b-4f8a-9465-ec0925096ec8
|
||||
neutts:
|
||||
ref_audio: ''
|
||||
ref_text: ''
|
||||
model: neuphonic/neutts-air-q4-gguf
|
||||
device: cpu
|
||||
piper:
|
||||
voice: en_US-lessac-medium
|
||||
use_gateway: false
|
||||
stt:
|
||||
enabled: true
|
||||
provider: local
|
||||
local:
|
||||
model: base
|
||||
language: ''
|
||||
openai:
|
||||
model: whisper-1
|
||||
mistral:
|
||||
model: voxtral-mini-latest
|
||||
voice:
|
||||
record_key: ctrl+b
|
||||
max_recording_seconds: 120
|
||||
auto_tts: true
|
||||
beep_enabled: true
|
||||
silence_threshold: 200
|
||||
silence_duration: 3.0
|
||||
human_delay:
|
||||
mode: 'off'
|
||||
min_ms: 800
|
||||
max_ms: 2500
|
||||
context:
|
||||
engine: compressor
|
||||
memory:
|
||||
memory_enabled: true
|
||||
user_profile_enabled: true
|
||||
memory_char_limit: 2200
|
||||
user_char_limit: 1375
|
||||
provider: zhiyi
|
||||
delegation:
|
||||
model: nvidia/nemotron-3-super-120b-a12b
|
||||
provider: newapi-local
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
api_mode: ''
|
||||
inherit_mcp_toolsets: true
|
||||
max_iterations: 50
|
||||
child_timeout_seconds: 600
|
||||
reasoning_effort: ''
|
||||
max_concurrent_children: 3
|
||||
max_spawn_depth: 1
|
||||
orchestrator_enabled: true
|
||||
subagent_auto_approve: false
|
||||
prefill_messages_file: ''
|
||||
goals:
|
||||
max_turns: 20
|
||||
moa:
|
||||
default_preset: expert-panel
|
||||
save_traces: false
|
||||
presets:
|
||||
expert-panel:
|
||||
reference_models:
|
||||
- provider: newapi-local
|
||||
model: openai/gpt-oss-120b
|
||||
- provider: newapi-local
|
||||
model: nvidia/llama-3.3-nemotron-super-49b-v1
|
||||
- provider: newapi-local
|
||||
model: mistralai/mistral-large-3-675b-instruct-2512
|
||||
aggregator:
|
||||
provider: newapi-local
|
||||
model: openai/gpt-oss-120b
|
||||
fanout: user_turn
|
||||
reference_max_tokens: 800
|
||||
enabled: true
|
||||
skills:
|
||||
external_dirs: []
|
||||
template_vars: true
|
||||
inline_shell: false
|
||||
inline_shell_timeout: 10
|
||||
guard_agent_created: false
|
||||
curator:
|
||||
enabled: true
|
||||
interval_hours: 168
|
||||
min_idle_hours: 2
|
||||
stale_after_days: 30
|
||||
archive_after_days: 90
|
||||
backup:
|
||||
enabled: true
|
||||
keep: 5
|
||||
timezone: ''
|
||||
slack:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
discord:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
auto_thread: true
|
||||
thread_require_mention: false
|
||||
history_backfill: true
|
||||
history_backfill_limit: 50
|
||||
reactions: true
|
||||
dm_role_auth_guild: ''
|
||||
server_actions: ''
|
||||
allow_any_attachment: false
|
||||
max_attachment_bytes: 33554432
|
||||
telegram:
|
||||
reactions: false
|
||||
allowed_chats: ''
|
||||
mattermost:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
matrix:
|
||||
require_mention: true
|
||||
free_response_rooms: ''
|
||||
allowed_rooms: ''
|
||||
approvals:
|
||||
mode: manual
|
||||
timeout: 60
|
||||
cron_mode: deny
|
||||
mcp_reload_confirm: true
|
||||
destructive_slash_confirm: false
|
||||
command_allowlist:
|
||||
- pipe remote content to shell
|
||||
- script execution via heredoc
|
||||
- copy/move file into /etc/
|
||||
- find -delete
|
||||
- recursive delete
|
||||
- hermes update (restarts gateway, kills running agents)
|
||||
- shell command via -c/-lc flag
|
||||
- force kill processes (killall -KILL)
|
||||
- script execution via -e/-c flag
|
||||
- overwrite system file via tee
|
||||
- copy/move file into sensitive credential/SSH/shell-rc path
|
||||
- kill hermes/gateway process (self-termination)
|
||||
- delete in root path
|
||||
- git force push short flag (rewrites remote history)
|
||||
- sudo with combined-flag privilege escalation
|
||||
- overwrite system file via redirection
|
||||
- start gateway outside systemd (use 'systemctl --user restart hermes-gateway')
|
||||
- disk copy
|
||||
- overwrite system config
|
||||
- overwrite project env/config via redirection
|
||||
- kill process via pgrep expansion (self-termination)
|
||||
- SQL TRUNCATE
|
||||
- in-place edit of system config
|
||||
- world/other-writable permissions
|
||||
- stop/restart hermes gateway (kills running agents)
|
||||
- sudo with privilege flag (stdin/askpass/shell/list)
|
||||
- copy/move file into system config path
|
||||
- force kill processes
|
||||
- git force push (rewrites remote history)
|
||||
- stop/restart system service
|
||||
- in-place edit of Hermes config/env
|
||||
hooks_auto_accept: false
|
||||
security:
|
||||
allow_private_urls: false
|
||||
redact_secrets: true
|
||||
tirith_enabled: true
|
||||
tirith_path: tirith
|
||||
tirith_timeout: 5
|
||||
tirith_fail_open: true
|
||||
website_blocklist:
|
||||
enabled: false
|
||||
domains: []
|
||||
shared_files: []
|
||||
acked_advisories: []
|
||||
allow_lazy_installs: true
|
||||
cron:
|
||||
provider: auto
|
||||
wrap_response: true
|
||||
gateway_required: true
|
||||
default_deliver: origin,feishu:oc_81f6df701c872a1122f32080e366543f
|
||||
code_execution:
|
||||
mode: project
|
||||
tools:
|
||||
tool_search:
|
||||
enabled: auto
|
||||
threshold_pct: 10
|
||||
search_default_limit: 5
|
||||
max_search_limit: 20
|
||||
logging:
|
||||
level: INFO
|
||||
max_size_mb: 5
|
||||
backup_count: 3
|
||||
memory_monitor:
|
||||
enabled: true
|
||||
interval_seconds: 300
|
||||
model_catalog:
|
||||
enabled: true
|
||||
url: https://hermes-agent.nousresearch.com/docs/api/model-catalog.json
|
||||
ttl_hours: 24
|
||||
network:
|
||||
force_ipv4: false
|
||||
gateway:
|
||||
strict: false
|
||||
media_delivery_allow_dirs: []
|
||||
trust_recent_files: true
|
||||
trust_recent_files_seconds: 600
|
||||
multiplex_profiles: false
|
||||
sessions:
|
||||
auto_prune: false
|
||||
retention_days: 90
|
||||
vacuum_after_prune: true
|
||||
min_interval_hours: 24
|
||||
write_json_snapshots: false
|
||||
onboarding:
|
||||
seen:
|
||||
busy_input_prompt: true
|
||||
openclaw_residue_cleanup: true
|
||||
tool_progress_prompt: true
|
||||
updates:
|
||||
pre_update_backup: false
|
||||
backup_keep: 5
|
||||
lsp:
|
||||
enabled: true
|
||||
wait_mode: document
|
||||
wait_timeout: 5.0
|
||||
install_strategy: auto
|
||||
x_search:
|
||||
model: grok-4.20-reasoning
|
||||
timeout_seconds: 180
|
||||
retries: 2
|
||||
secrets:
|
||||
bitwarden:
|
||||
enabled: false
|
||||
access_token_env: BWS_ACCESS_TOKEN
|
||||
project_id: ''
|
||||
cache_ttl_seconds: 300
|
||||
override_existing: true
|
||||
auto_install: true
|
||||
server_url: ''
|
||||
paste_collapse_threshold: 5
|
||||
paste_collapse_threshold_fallback: 5
|
||||
paste_collapse_char_threshold: 2000
|
||||
_config_version: 24
|
||||
mcp_servers:
|
||||
codegraph:
|
||||
args:
|
||||
- serve
|
||||
- --mcp
|
||||
command: codegraph
|
||||
connect_timeout: 60
|
||||
enabled: true
|
||||
timeout: 120
|
||||
github:
|
||||
args:
|
||||
- -y
|
||||
- '@modelcontextprotocol/server-github'
|
||||
command: npx
|
||||
enabled: true
|
||||
env:
|
||||
GITHUB_PERSONAL_ACCESS_TOKEN: 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
|
||||
timeout: 60
|
||||
openclaw:
|
||||
command: openclaw
|
||||
args:
|
||||
- mcp
|
||||
- serve
|
||||
connect_timeout: 60
|
||||
timeout: 300
|
||||
codebase-memory-mcp:
|
||||
command: /home/muc/.local/bin/codebase-memory-mcp
|
||||
enabled: true
|
||||
platform_toolsets:
|
||||
cli:
|
||||
- browser
|
||||
- clarify
|
||||
- code_execution
|
||||
- computer_use
|
||||
- cronjob
|
||||
- delegation
|
||||
- file
|
||||
- image_gen
|
||||
- mcp-codegraph
|
||||
- memory
|
||||
- messaging
|
||||
- session_search
|
||||
- skills
|
||||
- terminal
|
||||
- todo
|
||||
- tts
|
||||
- vision
|
||||
- web
|
||||
platforms:
|
||||
webhook:
|
||||
enabled: true
|
||||
extra:
|
||||
host: 0.0.0.0
|
||||
port: 8644
|
||||
feishu:
|
||||
enabled: true
|
||||
app_id: cli_a95d7ff06b789bb4
|
||||
app_secret: Gm7eo0aD9Luka8mHxApRufYIDwmpGsGf
|
||||
plugins:
|
||||
disabled: []
|
||||
enabled:
|
||||
- agentic-sms-gateway
|
||||
- cronalytics
|
||||
- rtk-rewrite
|
||||
weixin:
|
||||
enabled: true
|
||||
extra:
|
||||
dm_policy: open
|
||||
group_policy: open
|
||||
session_reset: {}
|
||||
known_plugin_toolsets:
|
||||
cli:
|
||||
- spotify
|
||||
|
|
@ -0,0 +1,620 @@
|
|||
model:
|
||||
<<<<<<< HEAD
|
||||
default: nvidia/nemotron-3-super-120b-a12b
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
=======
|
||||
default: deepseek/deepseek-v4-flash
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
base_url: https://api.deepseek.com/v1
|
||||
>>>>>>> 9d4d969 (auto-snapshot 2026-07-31 03:00:25)
|
||||
providers:
|
||||
newapi-local:
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
cost_factor: 0.0
|
||||
default_model: nvidia/nemotron-3-super-120b-a12b
|
||||
models:
|
||||
- nvidia/nemotron-3-super-120b-a12b
|
||||
- openai/gpt-oss-120b
|
||||
<<<<<<< HEAD
|
||||
- mistralai/mistral-nemotron
|
||||
=======
|
||||
- nvidia/nvidia-nemotron-nano-9b-v2
|
||||
>>>>>>> 9d4d969 (auto-snapshot 2026-07-31 03:00:25)
|
||||
- nvidia/llama-3.3-nemotron-super-49b-v1.5
|
||||
rate_limit: 1000
|
||||
timeout: 30
|
||||
deepseek:
|
||||
api_key: sk-b1212066094d4e319784f23d5b2c6bbd
|
||||
base_url: https://api.deepseek.com
|
||||
cost_factor: 0.0
|
||||
default_model: deepseek-v4-flash
|
||||
models:
|
||||
- deepseek-v4-flash
|
||||
- deepseek-v4-pro
|
||||
rate_limit: 1000
|
||||
timeout: 30
|
||||
fallback_providers: '[]'
|
||||
toolsets:
|
||||
- hermes-cli
|
||||
- web
|
||||
agent:
|
||||
max_turns: 90
|
||||
gateway_timeout: 1800
|
||||
restart_drain_timeout: 180
|
||||
api_max_retries: 2
|
||||
service_tier: ''
|
||||
tool_use_enforcement: auto
|
||||
task_completion_guidance: true
|
||||
environment_probe: true
|
||||
environment_hint: ''
|
||||
gateway_timeout_warning: 900
|
||||
clarify_timeout: 600
|
||||
gateway_notify_interval: 180
|
||||
gateway_auto_continue_freshness: 3600
|
||||
image_input_mode: auto
|
||||
disabled_toolsets: []
|
||||
terminal:
|
||||
backend: local
|
||||
modal_mode: auto
|
||||
cwd: .
|
||||
timeout: 180
|
||||
env_passthrough: []
|
||||
shell_init_files: []
|
||||
auto_source_bashrc: true
|
||||
docker_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
docker_forward_env: []
|
||||
singularity_image: docker://nikolaik/python-nodejs:python3.11-nodejs20
|
||||
modal_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
daytona_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
container_cpu: 1
|
||||
container_memory: 5120
|
||||
container_disk: 51200
|
||||
container_persistent: true
|
||||
docker_volumes: []
|
||||
docker_mount_cwd_to_workspace: false
|
||||
docker_extra_args: []
|
||||
docker_run_as_host_user: false
|
||||
persistent_shell: true
|
||||
vercel_runtime: node24
|
||||
web:
|
||||
backend: ''
|
||||
search_backend: ''
|
||||
extract_backend: ''
|
||||
browser:
|
||||
inactivity_timeout: 120
|
||||
command_timeout: 30
|
||||
record_sessions: false
|
||||
allow_private_urls: false
|
||||
engine: auto
|
||||
auto_local_for_private_urls: true
|
||||
cdp_url: ''
|
||||
dialog_policy: must_respond
|
||||
dialog_timeout_s: 300
|
||||
camofox:
|
||||
managed_persistence: false
|
||||
user_id: ''
|
||||
session_key: ''
|
||||
adopt_existing_tab: false
|
||||
rewrite_loopback_urls: false
|
||||
loopback_host_alias: host.docker.internal
|
||||
cloud_provider: local
|
||||
use_gateway: false
|
||||
checkpoints:
|
||||
enabled: true
|
||||
max_snapshots: 50
|
||||
max_total_size_mb: 500
|
||||
max_file_size_mb: 10
|
||||
auto_prune: false
|
||||
retention_days: 7
|
||||
delete_orphans: true
|
||||
min_interval_hours: 24
|
||||
file_read_max_chars: 100000
|
||||
tool_output:
|
||||
max_bytes: 50000
|
||||
max_lines: 2000
|
||||
max_line_length: 2000
|
||||
tool_loop_guardrails:
|
||||
warnings_enabled: true
|
||||
hard_stop_enabled: false
|
||||
warn_after:
|
||||
exact_failure: 2
|
||||
same_tool_failure: 3
|
||||
idempotent_no_progress: 2
|
||||
hard_stop_after:
|
||||
exact_failure: 5
|
||||
same_tool_failure: 8
|
||||
idempotent_no_progress: 5
|
||||
compression:
|
||||
enabled: true
|
||||
threshold: 0.5
|
||||
target_ratio: 0.2
|
||||
protect_last_n: 20
|
||||
hygiene_hard_message_limit: 400
|
||||
protect_first_n: 3
|
||||
abort_on_summary_failure: false
|
||||
kanban:
|
||||
dispatch_in_gateway: true
|
||||
dispatch_interval_seconds: 60
|
||||
failure_limit: 2
|
||||
worker_log_rotate_bytes: 2097152
|
||||
worker_log_backup_count: 1
|
||||
orchestrator_profile: ''
|
||||
default_assignee: ''
|
||||
auto_decompose: true
|
||||
auto_decompose_per_tick: 3
|
||||
dispatch_stale_timeout_seconds: 14400
|
||||
prompt_caching:
|
||||
cache_ttl: 5m
|
||||
long_lived_prefix: true
|
||||
long_lived_ttl: 1h
|
||||
openrouter:
|
||||
response_cache: true
|
||||
response_cache_ttl: 300
|
||||
min_coding_score: 0.65
|
||||
bedrock:
|
||||
region: ''
|
||||
discovery:
|
||||
enabled: true
|
||||
provider_filter: []
|
||||
refresh_interval: 3600
|
||||
guardrail:
|
||||
guardrail_identifier: ''
|
||||
guardrail_version: ''
|
||||
stream_processing_mode: async
|
||||
trace: disabled
|
||||
auxiliary:
|
||||
vision:
|
||||
provider: newapi-local
|
||||
model: meta/llama-3.2-11b-vision-instruct
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
timeout: 120
|
||||
download_timeout: 30
|
||||
web_extract:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 360
|
||||
compression:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 120
|
||||
skills_hub:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
approval:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
mcp:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
title_generation:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
triage_specifier:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 120
|
||||
kanban_decomposer:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 180
|
||||
profile_describer:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 60
|
||||
curator:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 600
|
||||
session_search:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
extra_body: {}
|
||||
max_concurrency: 3
|
||||
display:
|
||||
compact: false
|
||||
personality: kawaii
|
||||
resume_display: full
|
||||
resume_exchanges: 10
|
||||
resume_max_user_chars: 300
|
||||
resume_max_assistant_chars: 200
|
||||
resume_max_assistant_lines: 3
|
||||
resume_skip_tool_only: true
|
||||
busy_input_mode: interrupt
|
||||
tui_auto_resume_recent: false
|
||||
bell_on_complete: false
|
||||
show_reasoning: false
|
||||
streaming: false
|
||||
timestamps: false
|
||||
final_response_markdown: strip
|
||||
persistent_output: true
|
||||
persistent_output_max_lines: 200
|
||||
inline_diffs: true
|
||||
file_mutation_verifier: true
|
||||
show_cost: false
|
||||
skin: default
|
||||
language: en
|
||||
tui_status_indicator: kaomoji
|
||||
user_message_preview:
|
||||
first_lines: 2
|
||||
last_lines: 2
|
||||
interim_assistant_messages: true
|
||||
tool_progress_command: false
|
||||
tool_preview_length: 0
|
||||
ephemeral_system_ttl: 0
|
||||
runtime_footer:
|
||||
fields:
|
||||
- model
|
||||
- context_pct
|
||||
- cwd
|
||||
copy_shortcut: auto
|
||||
tool_progress: all
|
||||
tool_progress_style: accumulate
|
||||
dashboard:
|
||||
theme: default
|
||||
show_token_analytics: false
|
||||
oauth:
|
||||
client_id: ''
|
||||
portal_url: ''
|
||||
public_url: ''
|
||||
privacy:
|
||||
redact_pii: false
|
||||
tts:
|
||||
provider: edge
|
||||
edge:
|
||||
voice: zh-CN-XiaoxiaoNeural
|
||||
elevenlabs:
|
||||
voice_id: pNInz6obpgDQGcFmaJgB
|
||||
model_id: eleven_multilingual_v2
|
||||
openai:
|
||||
model: gpt-4o-mini-tts
|
||||
voice: alloy
|
||||
xai:
|
||||
voice_id: eve
|
||||
language: en
|
||||
sample_rate: 24000
|
||||
bit_rate: 128000
|
||||
mistral:
|
||||
model: voxtral-mini-tts-2603
|
||||
voice_id: c69964a6-ab8b-4f8a-9465-ec0925096ec8
|
||||
neutts:
|
||||
ref_audio: ''
|
||||
ref_text: ''
|
||||
model: neuphonic/neutts-air-q4-gguf
|
||||
device: cpu
|
||||
piper:
|
||||
voice: en_US-lessac-medium
|
||||
use_gateway: false
|
||||
stt:
|
||||
enabled: true
|
||||
provider: local
|
||||
local:
|
||||
model: base
|
||||
language: ''
|
||||
openai:
|
||||
model: whisper-1
|
||||
mistral:
|
||||
model: voxtral-mini-latest
|
||||
voice:
|
||||
record_key: ctrl+b
|
||||
max_recording_seconds: 120
|
||||
auto_tts: true
|
||||
beep_enabled: true
|
||||
silence_threshold: 200
|
||||
silence_duration: 3.0
|
||||
human_delay:
|
||||
mode: 'off'
|
||||
min_ms: 800
|
||||
max_ms: 2500
|
||||
context:
|
||||
engine: compressor
|
||||
memory:
|
||||
memory_enabled: true
|
||||
user_profile_enabled: true
|
||||
memory_char_limit: 2200
|
||||
user_char_limit: 1375
|
||||
provider: zhiyi
|
||||
delegation:
|
||||
model: nvidia/nemotron-3-super-120b-a12b
|
||||
provider: newapi-local
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
api_mode: ''
|
||||
inherit_mcp_toolsets: true
|
||||
max_iterations: 50
|
||||
child_timeout_seconds: 600
|
||||
reasoning_effort: ''
|
||||
max_concurrent_children: 3
|
||||
max_spawn_depth: 1
|
||||
orchestrator_enabled: true
|
||||
subagent_auto_approve: false
|
||||
prefill_messages_file: ''
|
||||
goals:
|
||||
max_turns: 20
|
||||
moa:
|
||||
default_preset: expert-panel
|
||||
save_traces: false
|
||||
presets:
|
||||
expert-panel:
|
||||
reference_models:
|
||||
- provider: newapi-local
|
||||
model: openai/gpt-oss-120b
|
||||
- provider: newapi-local
|
||||
model: nvidia/llama-3.3-nemotron-super-49b-v1
|
||||
- provider: newapi-local
|
||||
model: mistralai/mistral-large-3-675b-instruct-2512
|
||||
aggregator:
|
||||
provider: newapi-local
|
||||
model: openai/gpt-oss-120b
|
||||
fanout: user_turn
|
||||
reference_max_tokens: 800
|
||||
enabled: true
|
||||
skills:
|
||||
external_dirs: []
|
||||
template_vars: true
|
||||
inline_shell: false
|
||||
inline_shell_timeout: 10
|
||||
guard_agent_created: false
|
||||
curator:
|
||||
enabled: true
|
||||
interval_hours: 168
|
||||
min_idle_hours: 2
|
||||
stale_after_days: 30
|
||||
archive_after_days: 90
|
||||
backup:
|
||||
enabled: true
|
||||
keep: 5
|
||||
timezone: ''
|
||||
slack:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
discord:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
auto_thread: true
|
||||
thread_require_mention: false
|
||||
history_backfill: true
|
||||
history_backfill_limit: 50
|
||||
reactions: true
|
||||
dm_role_auth_guild: ''
|
||||
server_actions: ''
|
||||
allow_any_attachment: false
|
||||
max_attachment_bytes: 33554432
|
||||
telegram:
|
||||
reactions: false
|
||||
allowed_chats: ''
|
||||
mattermost:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
matrix:
|
||||
require_mention: true
|
||||
free_response_rooms: ''
|
||||
allowed_rooms: ''
|
||||
approvals:
|
||||
mode: manual
|
||||
timeout: 60
|
||||
cron_mode: deny
|
||||
mcp_reload_confirm: true
|
||||
destructive_slash_confirm: false
|
||||
command_allowlist:
|
||||
- pipe remote content to shell
|
||||
- script execution via heredoc
|
||||
- copy/move file into /etc/
|
||||
- find -delete
|
||||
- recursive delete
|
||||
- hermes update (restarts gateway, kills running agents)
|
||||
- shell command via -c/-lc flag
|
||||
- force kill processes (killall -KILL)
|
||||
- script execution via -e/-c flag
|
||||
- overwrite system file via tee
|
||||
<<<<<<< HEAD
|
||||
=======
|
||||
- copy/move file into sensitive credential/SSH/shell-rc path
|
||||
>>>>>>> 9d4d969 (auto-snapshot 2026-07-31 03:00:25)
|
||||
- kill hermes/gateway process (self-termination)
|
||||
- delete in root path
|
||||
- git force push short flag (rewrites remote history)
|
||||
- sudo with combined-flag privilege escalation
|
||||
- overwrite system file via redirection
|
||||
- start gateway outside systemd (use 'systemctl --user restart hermes-gateway')
|
||||
- disk copy
|
||||
- overwrite system config
|
||||
- overwrite project env/config via redirection
|
||||
- kill process via pgrep expansion (self-termination)
|
||||
- SQL TRUNCATE
|
||||
- in-place edit of system config
|
||||
- world/other-writable permissions
|
||||
- stop/restart hermes gateway (kills running agents)
|
||||
- sudo with privilege flag (stdin/askpass/shell/list)
|
||||
- copy/move file into system config path
|
||||
- force kill processes
|
||||
- git force push (rewrites remote history)
|
||||
- stop/restart system service
|
||||
- in-place edit of Hermes config/env
|
||||
hooks_auto_accept: false
|
||||
security:
|
||||
allow_private_urls: false
|
||||
redact_secrets: true
|
||||
tirith_enabled: true
|
||||
tirith_path: tirith
|
||||
tirith_timeout: 5
|
||||
tirith_fail_open: true
|
||||
website_blocklist:
|
||||
enabled: false
|
||||
domains: []
|
||||
shared_files: []
|
||||
acked_advisories: []
|
||||
allow_lazy_installs: true
|
||||
cron:
|
||||
provider: auto
|
||||
wrap_response: true
|
||||
gateway_required: true
|
||||
default_deliver: origin,feishu:oc_81f6df701c872a1122f32080e366543f
|
||||
code_execution:
|
||||
mode: project
|
||||
tools:
|
||||
tool_search:
|
||||
enabled: auto
|
||||
threshold_pct: 10
|
||||
search_default_limit: 5
|
||||
max_search_limit: 20
|
||||
logging:
|
||||
level: INFO
|
||||
max_size_mb: 5
|
||||
backup_count: 3
|
||||
memory_monitor:
|
||||
enabled: true
|
||||
interval_seconds: 300
|
||||
model_catalog:
|
||||
enabled: true
|
||||
url: https://hermes-agent.nousresearch.com/docs/api/model-catalog.json
|
||||
ttl_hours: 24
|
||||
network:
|
||||
force_ipv4: false
|
||||
gateway:
|
||||
strict: false
|
||||
media_delivery_allow_dirs: []
|
||||
trust_recent_files: true
|
||||
trust_recent_files_seconds: 600
|
||||
multiplex_profiles: false
|
||||
sessions:
|
||||
auto_prune: false
|
||||
retention_days: 90
|
||||
vacuum_after_prune: true
|
||||
min_interval_hours: 24
|
||||
write_json_snapshots: false
|
||||
onboarding:
|
||||
seen:
|
||||
busy_input_prompt: true
|
||||
openclaw_residue_cleanup: true
|
||||
tool_progress_prompt: true
|
||||
updates:
|
||||
pre_update_backup: false
|
||||
backup_keep: 5
|
||||
lsp:
|
||||
enabled: true
|
||||
wait_mode: document
|
||||
wait_timeout: 5.0
|
||||
install_strategy: auto
|
||||
x_search:
|
||||
model: grok-4.20-reasoning
|
||||
timeout_seconds: 180
|
||||
retries: 2
|
||||
secrets:
|
||||
bitwarden:
|
||||
enabled: false
|
||||
access_token_env: BWS_ACCESS_TOKEN
|
||||
project_id: ''
|
||||
cache_ttl_seconds: 300
|
||||
override_existing: true
|
||||
auto_install: true
|
||||
server_url: ''
|
||||
paste_collapse_threshold: 5
|
||||
paste_collapse_threshold_fallback: 5
|
||||
paste_collapse_char_threshold: 2000
|
||||
_config_version: 24
|
||||
mcp_servers:
|
||||
codegraph:
|
||||
args:
|
||||
- serve
|
||||
- --mcp
|
||||
command: codegraph
|
||||
connect_timeout: 60
|
||||
enabled: true
|
||||
timeout: 120
|
||||
github:
|
||||
args:
|
||||
- -y
|
||||
- '@modelcontextprotocol/server-github'
|
||||
command: npx
|
||||
enabled: true
|
||||
env:
|
||||
GITHUB_PERSONAL_ACCESS_TOKEN: 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
|
||||
timeout: 60
|
||||
openclaw:
|
||||
command: openclaw
|
||||
args:
|
||||
- mcp
|
||||
- serve
|
||||
connect_timeout: 60
|
||||
timeout: 300
|
||||
codebase-memory-mcp:
|
||||
command: /home/muc/.local/bin/codebase-memory-mcp
|
||||
enabled: true
|
||||
platform_toolsets:
|
||||
cli:
|
||||
- browser
|
||||
- clarify
|
||||
- code_execution
|
||||
- computer_use
|
||||
- cronjob
|
||||
- delegation
|
||||
- file
|
||||
- image_gen
|
||||
- mcp-codegraph
|
||||
- memory
|
||||
- messaging
|
||||
- session_search
|
||||
- skills
|
||||
- terminal
|
||||
- todo
|
||||
- tts
|
||||
- vision
|
||||
- web
|
||||
platforms:
|
||||
webhook:
|
||||
enabled: true
|
||||
extra:
|
||||
host: 0.0.0.0
|
||||
port: 8644
|
||||
feishu:
|
||||
enabled: true
|
||||
app_id: cli_a95d7ff06b789bb4
|
||||
app_secret: Gm7eo0aD9Luka8mHxApRufYIDwmpGsGf
|
||||
plugins:
|
||||
disabled: []
|
||||
enabled:
|
||||
- agentic-sms-gateway
|
||||
- cronalytics
|
||||
- rtk-rewrite
|
||||
weixin:
|
||||
enabled: true
|
||||
extra:
|
||||
dm_policy: open
|
||||
group_policy: open
|
||||
session_reset: {}
|
||||
known_plugin_toolsets:
|
||||
cli:
|
||||
- spotify
|
||||
|
|
@ -0,0 +1,612 @@
|
|||
model:
|
||||
<<<<<<< HEAD
|
||||
default: nvidia/nemotron-3-super-120b-a12b
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
=======
|
||||
default: deepseek-v4-flash
|
||||
api_key: sk-b1212066094d4e319784f23d5b2c6bbd
|
||||
base_url: https://api.deepseek.com
|
||||
>>>>>>> 6bbfdba (fix(model-health.py v3): 排名驱动自动替换 + 探针3次平均 + 修复致命缺陷)
|
||||
providers:
|
||||
newapi-local:
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
cost_factor: 0.0
|
||||
default_model: nvidia/nemotron-3-super-120b-a12b
|
||||
models:
|
||||
- nvidia/nemotron-3-super-120b-a12b
|
||||
- openai/gpt-oss-120b
|
||||
- mistralai/mistral-nemotron
|
||||
- nvidia/llama-3.3-nemotron-super-49b-v1.5
|
||||
rate_limit: 1000
|
||||
timeout: 30
|
||||
deepseek:
|
||||
api_key: sk-b1212066094d4e319784f23d5b2c6bbd
|
||||
base_url: https://api.deepseek.com
|
||||
cost_factor: 0.0
|
||||
default_model: deepseek-v4-flash
|
||||
models:
|
||||
- deepseek-v4-flash
|
||||
- deepseek-v4-pro
|
||||
rate_limit: 1000
|
||||
timeout: 30
|
||||
fallback_providers: '["deepseek"]'
|
||||
toolsets:
|
||||
- hermes-cli
|
||||
- web
|
||||
agent:
|
||||
max_turns: 90
|
||||
gateway_timeout: 1800
|
||||
restart_drain_timeout: 180
|
||||
api_max_retries: 2
|
||||
service_tier: ''
|
||||
tool_use_enforcement: auto
|
||||
task_completion_guidance: true
|
||||
environment_probe: true
|
||||
environment_hint: ''
|
||||
gateway_timeout_warning: 900
|
||||
clarify_timeout: 600
|
||||
gateway_notify_interval: 180
|
||||
gateway_auto_continue_freshness: 3600
|
||||
image_input_mode: auto
|
||||
disabled_toolsets: []
|
||||
terminal:
|
||||
backend: local
|
||||
modal_mode: auto
|
||||
cwd: .
|
||||
timeout: 180
|
||||
env_passthrough: []
|
||||
shell_init_files: []
|
||||
auto_source_bashrc: true
|
||||
docker_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
docker_forward_env: []
|
||||
singularity_image: docker://nikolaik/python-nodejs:python3.11-nodejs20
|
||||
modal_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
daytona_image: nikolaik/python-nodejs:python3.11-nodejs20
|
||||
container_cpu: 1
|
||||
container_memory: 5120
|
||||
container_disk: 51200
|
||||
container_persistent: true
|
||||
docker_volumes: []
|
||||
docker_mount_cwd_to_workspace: false
|
||||
docker_extra_args: []
|
||||
docker_run_as_host_user: false
|
||||
persistent_shell: true
|
||||
vercel_runtime: node24
|
||||
web:
|
||||
backend: ''
|
||||
search_backend: ''
|
||||
extract_backend: ''
|
||||
browser:
|
||||
inactivity_timeout: 120
|
||||
command_timeout: 30
|
||||
record_sessions: false
|
||||
allow_private_urls: false
|
||||
engine: auto
|
||||
auto_local_for_private_urls: true
|
||||
cdp_url: ''
|
||||
dialog_policy: must_respond
|
||||
dialog_timeout_s: 300
|
||||
camofox:
|
||||
managed_persistence: false
|
||||
user_id: ''
|
||||
session_key: ''
|
||||
adopt_existing_tab: false
|
||||
rewrite_loopback_urls: false
|
||||
loopback_host_alias: host.docker.internal
|
||||
cloud_provider: local
|
||||
use_gateway: false
|
||||
checkpoints:
|
||||
enabled: true
|
||||
max_snapshots: 50
|
||||
max_total_size_mb: 500
|
||||
max_file_size_mb: 10
|
||||
auto_prune: false
|
||||
retention_days: 7
|
||||
delete_orphans: true
|
||||
min_interval_hours: 24
|
||||
file_read_max_chars: 100000
|
||||
tool_output:
|
||||
max_bytes: 50000
|
||||
max_lines: 2000
|
||||
max_line_length: 2000
|
||||
tool_loop_guardrails:
|
||||
warnings_enabled: true
|
||||
hard_stop_enabled: false
|
||||
warn_after:
|
||||
exact_failure: 2
|
||||
same_tool_failure: 3
|
||||
idempotent_no_progress: 2
|
||||
hard_stop_after:
|
||||
exact_failure: 5
|
||||
same_tool_failure: 8
|
||||
idempotent_no_progress: 5
|
||||
compression:
|
||||
enabled: true
|
||||
threshold: 0.5
|
||||
target_ratio: 0.2
|
||||
protect_last_n: 20
|
||||
hygiene_hard_message_limit: 400
|
||||
protect_first_n: 3
|
||||
abort_on_summary_failure: false
|
||||
kanban:
|
||||
dispatch_in_gateway: true
|
||||
dispatch_interval_seconds: 60
|
||||
failure_limit: 2
|
||||
worker_log_rotate_bytes: 2097152
|
||||
worker_log_backup_count: 1
|
||||
orchestrator_profile: ''
|
||||
default_assignee: ''
|
||||
auto_decompose: true
|
||||
auto_decompose_per_tick: 3
|
||||
dispatch_stale_timeout_seconds: 14400
|
||||
prompt_caching:
|
||||
cache_ttl: 5m
|
||||
long_lived_prefix: true
|
||||
long_lived_ttl: 1h
|
||||
openrouter:
|
||||
response_cache: true
|
||||
response_cache_ttl: 300
|
||||
min_coding_score: 0.65
|
||||
bedrock:
|
||||
region: ''
|
||||
discovery:
|
||||
enabled: true
|
||||
provider_filter: []
|
||||
refresh_interval: 3600
|
||||
guardrail:
|
||||
guardrail_identifier: ''
|
||||
guardrail_version: ''
|
||||
stream_processing_mode: async
|
||||
trace: disabled
|
||||
auxiliary:
|
||||
vision:
|
||||
provider: newapi-local
|
||||
model: meta/llama-3.2-11b-vision-instruct
|
||||
base_url: http://127.0.0.1:3000/v1
|
||||
api_key: 0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP
|
||||
timeout: 120
|
||||
download_timeout: 30
|
||||
web_extract:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 360
|
||||
compression:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 120
|
||||
skills_hub:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
approval:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
mcp:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
title_generation:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
triage_specifier:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 120
|
||||
kanban_decomposer:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 180
|
||||
profile_describer:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 60
|
||||
curator:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 600
|
||||
session_search:
|
||||
provider: auto
|
||||
model: ''
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
timeout: 30
|
||||
extra_body: {}
|
||||
max_concurrency: 3
|
||||
display:
|
||||
compact: false
|
||||
personality: kawaii
|
||||
resume_display: full
|
||||
resume_exchanges: 10
|
||||
resume_max_user_chars: 300
|
||||
resume_max_assistant_chars: 200
|
||||
resume_max_assistant_lines: 3
|
||||
resume_skip_tool_only: true
|
||||
busy_input_mode: interrupt
|
||||
tui_auto_resume_recent: false
|
||||
bell_on_complete: false
|
||||
show_reasoning: false
|
||||
streaming: false
|
||||
timestamps: false
|
||||
final_response_markdown: strip
|
||||
persistent_output: true
|
||||
persistent_output_max_lines: 200
|
||||
inline_diffs: true
|
||||
file_mutation_verifier: true
|
||||
show_cost: false
|
||||
skin: default
|
||||
language: en
|
||||
tui_status_indicator: kaomoji
|
||||
user_message_preview:
|
||||
first_lines: 2
|
||||
last_lines: 2
|
||||
interim_assistant_messages: true
|
||||
tool_progress_command: false
|
||||
tool_preview_length: 0
|
||||
ephemeral_system_ttl: 0
|
||||
runtime_footer:
|
||||
fields:
|
||||
- model
|
||||
- context_pct
|
||||
- cwd
|
||||
copy_shortcut: auto
|
||||
tool_progress: all
|
||||
tool_progress_style: accumulate
|
||||
dashboard:
|
||||
theme: default
|
||||
show_token_analytics: false
|
||||
oauth:
|
||||
client_id: ''
|
||||
portal_url: ''
|
||||
public_url: ''
|
||||
privacy:
|
||||
redact_pii: false
|
||||
tts:
|
||||
provider: edge
|
||||
edge:
|
||||
voice: zh-CN-XiaoxiaoNeural
|
||||
elevenlabs:
|
||||
voice_id: pNInz6obpgDQGcFmaJgB
|
||||
model_id: eleven_multilingual_v2
|
||||
openai:
|
||||
model: gpt-4o-mini-tts
|
||||
voice: alloy
|
||||
xai:
|
||||
voice_id: eve
|
||||
language: en
|
||||
sample_rate: 24000
|
||||
bit_rate: 128000
|
||||
mistral:
|
||||
model: voxtral-mini-tts-2603
|
||||
voice_id: c69964a6-ab8b-4f8a-9465-ec0925096ec8
|
||||
neutts:
|
||||
ref_audio: ''
|
||||
ref_text: ''
|
||||
model: neuphonic/neutts-air-q4-gguf
|
||||
device: cpu
|
||||
piper:
|
||||
voice: en_US-lessac-medium
|
||||
use_gateway: false
|
||||
stt:
|
||||
enabled: true
|
||||
provider: local
|
||||
local:
|
||||
model: base
|
||||
language: ''
|
||||
openai:
|
||||
model: whisper-1
|
||||
mistral:
|
||||
model: voxtral-mini-latest
|
||||
voice:
|
||||
record_key: ctrl+b
|
||||
max_recording_seconds: 120
|
||||
auto_tts: true
|
||||
beep_enabled: true
|
||||
silence_threshold: 200
|
||||
silence_duration: 3.0
|
||||
human_delay:
|
||||
mode: 'off'
|
||||
min_ms: 800
|
||||
max_ms: 2500
|
||||
context:
|
||||
engine: compressor
|
||||
memory:
|
||||
memory_enabled: true
|
||||
user_profile_enabled: true
|
||||
memory_char_limit: 2200
|
||||
user_char_limit: 1375
|
||||
provider: zhiyi
|
||||
delegation:
|
||||
model: nvidia/nemotron-3-super-120b-a12b
|
||||
provider: newapi-local
|
||||
base_url: ''
|
||||
api_key: ''
|
||||
api_mode: ''
|
||||
inherit_mcp_toolsets: true
|
||||
max_iterations: 50
|
||||
child_timeout_seconds: 600
|
||||
reasoning_effort: ''
|
||||
max_concurrent_children: 3
|
||||
max_spawn_depth: 1
|
||||
orchestrator_enabled: true
|
||||
subagent_auto_approve: false
|
||||
prefill_messages_file: ''
|
||||
goals:
|
||||
max_turns: 20
|
||||
moa:
|
||||
default_preset: expert-panel
|
||||
save_traces: false
|
||||
presets:
|
||||
expert-panel:
|
||||
reference_models:
|
||||
- provider: newapi-local
|
||||
model: openai/gpt-oss-120b
|
||||
- provider: newapi-local
|
||||
model: nvidia/llama-3.3-nemotron-super-49b-v1
|
||||
- provider: newapi-local
|
||||
model: mistralai/mistral-large-3-675b-instruct-2512
|
||||
aggregator:
|
||||
provider: newapi-local
|
||||
model: openai/gpt-oss-120b
|
||||
fanout: user_turn
|
||||
reference_max_tokens: 800
|
||||
enabled: true
|
||||
skills:
|
||||
external_dirs: []
|
||||
template_vars: true
|
||||
inline_shell: false
|
||||
inline_shell_timeout: 10
|
||||
guard_agent_created: false
|
||||
curator:
|
||||
enabled: true
|
||||
interval_hours: 168
|
||||
min_idle_hours: 2
|
||||
stale_after_days: 30
|
||||
archive_after_days: 90
|
||||
backup:
|
||||
enabled: true
|
||||
keep: 5
|
||||
timezone: ''
|
||||
slack:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
discord:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
auto_thread: true
|
||||
thread_require_mention: false
|
||||
history_backfill: true
|
||||
history_backfill_limit: 50
|
||||
reactions: true
|
||||
dm_role_auth_guild: ''
|
||||
server_actions: ''
|
||||
allow_any_attachment: false
|
||||
max_attachment_bytes: 33554432
|
||||
telegram:
|
||||
reactions: false
|
||||
allowed_chats: ''
|
||||
mattermost:
|
||||
require_mention: true
|
||||
free_response_channels: ''
|
||||
allowed_channels: ''
|
||||
matrix:
|
||||
require_mention: true
|
||||
free_response_rooms: ''
|
||||
allowed_rooms: ''
|
||||
approvals:
|
||||
mode: manual
|
||||
timeout: 60
|
||||
cron_mode: deny
|
||||
mcp_reload_confirm: true
|
||||
destructive_slash_confirm: false
|
||||
command_allowlist:
|
||||
- pipe remote content to shell
|
||||
- script execution via heredoc
|
||||
- copy/move file into /etc/
|
||||
- find -delete
|
||||
- recursive delete
|
||||
- hermes update (restarts gateway, kills running agents)
|
||||
- shell command via -c/-lc flag
|
||||
- force kill processes (killall -KILL)
|
||||
- script execution via -e/-c flag
|
||||
- overwrite system file via tee
|
||||
- kill hermes/gateway process (self-termination)
|
||||
- delete in root path
|
||||
- git force push short flag (rewrites remote history)
|
||||
- sudo with combined-flag privilege escalation
|
||||
- overwrite system file via redirection
|
||||
- start gateway outside systemd (use 'systemctl --user restart hermes-gateway')
|
||||
- disk copy
|
||||
- overwrite system config
|
||||
- overwrite project env/config via redirection
|
||||
- kill process via pgrep expansion (self-termination)
|
||||
- SQL TRUNCATE
|
||||
- in-place edit of system config
|
||||
- world/other-writable permissions
|
||||
- stop/restart hermes gateway (kills running agents)
|
||||
- sudo with privilege flag (stdin/askpass/shell/list)
|
||||
- copy/move file into system config path
|
||||
- force kill processes
|
||||
- git force push (rewrites remote history)
|
||||
- stop/restart system service
|
||||
- in-place edit of Hermes config/env
|
||||
hooks_auto_accept: false
|
||||
security:
|
||||
allow_private_urls: false
|
||||
redact_secrets: true
|
||||
tirith_enabled: true
|
||||
tirith_path: tirith
|
||||
tirith_timeout: 5
|
||||
tirith_fail_open: true
|
||||
website_blocklist:
|
||||
enabled: false
|
||||
domains: []
|
||||
shared_files: []
|
||||
acked_advisories: []
|
||||
allow_lazy_installs: true
|
||||
cron:
|
||||
provider: auto
|
||||
wrap_response: true
|
||||
gateway_required: true
|
||||
default_deliver: origin,feishu:oc_81f6df701c872a1122f32080e366543f
|
||||
code_execution:
|
||||
mode: project
|
||||
tools:
|
||||
tool_search:
|
||||
enabled: auto
|
||||
threshold_pct: 10
|
||||
search_default_limit: 5
|
||||
max_search_limit: 20
|
||||
logging:
|
||||
level: INFO
|
||||
max_size_mb: 5
|
||||
backup_count: 3
|
||||
memory_monitor:
|
||||
enabled: true
|
||||
interval_seconds: 300
|
||||
model_catalog:
|
||||
enabled: true
|
||||
url: https://hermes-agent.nousresearch.com/docs/api/model-catalog.json
|
||||
ttl_hours: 24
|
||||
network:
|
||||
force_ipv4: false
|
||||
gateway:
|
||||
strict: false
|
||||
media_delivery_allow_dirs: []
|
||||
trust_recent_files: true
|
||||
trust_recent_files_seconds: 600
|
||||
multiplex_profiles: false
|
||||
sessions:
|
||||
auto_prune: false
|
||||
retention_days: 90
|
||||
vacuum_after_prune: true
|
||||
min_interval_hours: 24
|
||||
write_json_snapshots: false
|
||||
onboarding:
|
||||
seen:
|
||||
busy_input_prompt: true
|
||||
openclaw_residue_cleanup: true
|
||||
tool_progress_prompt: true
|
||||
updates:
|
||||
pre_update_backup: false
|
||||
backup_keep: 5
|
||||
lsp:
|
||||
enabled: true
|
||||
wait_mode: document
|
||||
wait_timeout: 5.0
|
||||
install_strategy: auto
|
||||
x_search:
|
||||
model: grok-4.20-reasoning
|
||||
timeout_seconds: 180
|
||||
retries: 2
|
||||
secrets:
|
||||
bitwarden:
|
||||
enabled: false
|
||||
access_token_env: BWS_ACCESS_TOKEN
|
||||
project_id: ''
|
||||
cache_ttl_seconds: 300
|
||||
override_existing: true
|
||||
auto_install: true
|
||||
server_url: ''
|
||||
paste_collapse_threshold: 5
|
||||
paste_collapse_threshold_fallback: 5
|
||||
paste_collapse_char_threshold: 2000
|
||||
_config_version: 24
|
||||
mcp_servers:
|
||||
codegraph:
|
||||
args:
|
||||
- serve
|
||||
- --mcp
|
||||
command: codegraph
|
||||
connect_timeout: 60
|
||||
enabled: true
|
||||
timeout: 120
|
||||
github:
|
||||
args:
|
||||
- -y
|
||||
- '@modelcontextprotocol/server-github'
|
||||
command: npx
|
||||
enabled: true
|
||||
env:
|
||||
GITHUB_PERSONAL_ACCESS_TOKEN: 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
|
||||
timeout: 60
|
||||
openclaw:
|
||||
command: openclaw
|
||||
args:
|
||||
- mcp
|
||||
- serve
|
||||
connect_timeout: 60
|
||||
timeout: 300
|
||||
codebase-memory-mcp:
|
||||
command: /home/muc/.local/bin/codebase-memory-mcp
|
||||
enabled: true
|
||||
platform_toolsets:
|
||||
cli:
|
||||
- browser
|
||||
- clarify
|
||||
- code_execution
|
||||
- computer_use
|
||||
- cronjob
|
||||
- delegation
|
||||
- file
|
||||
- image_gen
|
||||
- mcp-codegraph
|
||||
- memory
|
||||
- messaging
|
||||
- session_search
|
||||
- skills
|
||||
- terminal
|
||||
- todo
|
||||
- tts
|
||||
- vision
|
||||
- web
|
||||
platforms:
|
||||
webhook:
|
||||
enabled: true
|
||||
extra:
|
||||
host: 0.0.0.0
|
||||
port: 8644
|
||||
feishu:
|
||||
enabled: true
|
||||
app_id: cli_a95d7ff06b789bb4
|
||||
app_secret: Gm7eo0aD9Luka8mHxApRufYIDwmpGsGf
|
||||
plugins:
|
||||
disabled: []
|
||||
enabled:
|
||||
- agentic-sms-gateway
|
||||
- cronalytics
|
||||
- rtk-rewrite
|
||||
weixin:
|
||||
enabled: true
|
||||
extra:
|
||||
dm_policy: open
|
||||
group_policy: open
|
||||
session_reset: {}
|
||||
known_plugin_toolsets:
|
||||
cli:
|
||||
- spotify
|
||||
|
|
@ -27,7 +27,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-06-21T18:52:36.548110+08:00",
|
||||
"next_run_at": "2026-07-30T11:45:09.710569+08:00",
|
||||
"next_run_at": "2026-08-01T01:36:48.501935+08:00",
|
||||
"last_run_at": "2026-07-30T11:44:09.710569+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -123,7 +123,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T01:30:54.618246+08:00",
|
||||
"next_run_at": "2026-07-30T17:22:23.748974+08:00",
|
||||
"next_run_at": "2026-08-01T07:35:48.504498+08:00",
|
||||
"last_run_at": "2026-07-30T11:22:23.748974+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -169,7 +169,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T01:42:21.503720+08:00",
|
||||
"next_run_at": "2026-07-30T11:59:10.256329+08:00",
|
||||
"next_run_at": "2026-08-01T02:05:48.506956+08:00",
|
||||
"last_run_at": "2026-07-30T11:29:10.256329+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -215,7 +215,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T01:43:11.921492+08:00",
|
||||
"next_run_at": "2026-07-30T22:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T22:00:00+08:00",
|
||||
"last_run_at": "2026-07-29T22:02:40.385507+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -265,7 +265,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T02:10:36.846128+08:00",
|
||||
"next_run_at": "2026-07-31T03:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T03:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T03:00:00.405596+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -311,7 +311,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T02:11:00.385573+08:00",
|
||||
"next_run_at": "2026-07-31T03:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T03:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T03:00:00.992609+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -449,7 +449,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T02:46:29.345663+08:00",
|
||||
"next_run_at": "2026-07-31T05:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T05:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T05:00:02.935247+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -495,7 +495,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T02:51:48.935042+08:00",
|
||||
"next_run_at": "2026-07-30T12:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T06:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T06:00:19.898064+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -541,7 +541,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T21:31:29.417518+08:00",
|
||||
"next_run_at": "2026-07-31T09:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T09:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T09:00:07.467395+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -587,7 +587,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-09T21:31:33.068978+08:00",
|
||||
"next_run_at": "2026-07-30T21:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T21:00:00+08:00",
|
||||
"last_run_at": "2026-07-29T21:00:55.787887+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -725,7 +725,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-12T01:32:01.773389+08:00",
|
||||
"next_run_at": "2026-07-30T16:00:00+08:00",
|
||||
"next_run_at": "2026-08-03T16:00:00+08:00",
|
||||
"last_run_at": "2026-07-29T16:01:02.261318+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -771,7 +771,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-12T02:01:32.403228+08:00",
|
||||
"next_run_at": "2026-07-31T08:00:00+08:00",
|
||||
"next_run_at": "2026-08-03T08:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T08:00:07.765250+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -817,7 +817,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-12T02:33:28.322158+08:00",
|
||||
"next_run_at": "2026-07-31T09:00:00+08:00",
|
||||
"next_run_at": "2026-08-03T09:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T09:00:10.097029+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -863,7 +863,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-13T12:03:22.805682+08:00",
|
||||
"next_run_at": "2026-07-30T12:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T02:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T11:00:10.087879+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -909,7 +909,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-13T12:06:19.941605+08:00",
|
||||
"next_run_at": "2026-07-31T04:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T04:00:00+08:00",
|
||||
"last_run_at": "2026-07-30T04:00:02.811555+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -1001,7 +1001,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-21T08:55:49.786038+08:00",
|
||||
"next_run_at": "2026-07-30T11:50:00+08:00",
|
||||
"next_run_at": "2026-08-01T01:40:00+08:00",
|
||||
"last_run_at": "2026-07-30T11:40:09.486613+08:00",
|
||||
"last_status": "ok",
|
||||
"last_error": null,
|
||||
|
|
@ -1047,7 +1047,7 @@
|
|||
"paused_at": null,
|
||||
"paused_reason": null,
|
||||
"created_at": "2026-07-30T09:50:28.224645+08:00",
|
||||
"next_run_at": "2026-07-31T03:00:00+08:00",
|
||||
"next_run_at": "2026-08-01T03:00:00+08:00",
|
||||
"last_run_at": null,
|
||||
"last_status": null,
|
||||
"last_error": null,
|
||||
|
|
@ -1064,5 +1064,5 @@
|
|||
"workdir": null
|
||||
}
|
||||
],
|
||||
"updated_at": "2026-07-30T11:44:09.710669+08:00"
|
||||
"updated_at": "2026-08-01T01:35:48.507024+08:00"
|
||||
}
|
||||
|
|
@ -1 +1 @@
|
|||
1785383109.5456767
|
||||
1785519348.5146606
|
||||
|
|
@ -1 +1 @@
|
|||
1785383109.5549402
|
||||
1785519348.517083
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
{
|
||||
"started_at": "2026-07-08T18:23:30.315261+00:00",
|
||||
"last_deep_tick": "2026-07-30T03:44:54.373606+00:00",
|
||||
"last_light_tick": "2026-07-30T03:45:27.484596+00:00",
|
||||
"last_deep_tick": "2026-07-31T17:34:17.383350+00:00",
|
||||
"last_light_tick": "2026-07-31T17:35:21.790013+00:00",
|
||||
"last_state": {
|
||||
"disk_pct": 51,
|
||||
"disk_pct": 54,
|
||||
"mem_pct": 63,
|
||||
"processes": {
|
||||
"zhiyid": true,
|
||||
|
|
@ -12,17 +12,17 @@
|
|||
"hermes": true
|
||||
}
|
||||
},
|
||||
"tick_count": 56084,
|
||||
"deep_tick_count": 9188,
|
||||
"tick_count": 60218,
|
||||
"deep_tick_count": 10222,
|
||||
"solved_count": 1,
|
||||
"learned_count": 0,
|
||||
"uptime_seconds": 225719,
|
||||
"uptime_seconds": 133256,
|
||||
"last_reflection": {
|
||||
"evaluation_previous_goal": "LLM\u8c03\u7528\u5931\u8d25",
|
||||
"memory": "\u4e0a\u6b21\u8c03\u7528\u5931\u8d25",
|
||||
"next_goal": "\u91cd\u8bd5"
|
||||
"evaluation_previous_goal": "",
|
||||
"memory": "",
|
||||
"next_goal": ""
|
||||
},
|
||||
"last_profile_update": 1785381718.3491108,
|
||||
"last_profile_update": 1785500531.101474,
|
||||
"soulful": {
|
||||
"recent_moments": [
|
||||
{
|
||||
|
|
@ -57,7 +57,7 @@
|
|||
}
|
||||
],
|
||||
"profile_summary": "\u7b80\u6d01\u76f4\u63a5",
|
||||
"cares_pending": 3,
|
||||
"cares_pending": 0,
|
||||
"uptime_minutes": 0,
|
||||
"daemon_status": "running"
|
||||
},
|
||||
|
|
|
|||
462
llm_context.json
462
llm_context.json
|
|
@ -1,466 +1,14 @@
|
|||
{
|
||||
"version": 2,
|
||||
"updated_at": "2026-07-30T03:45:27.656337+00:00",
|
||||
"uptime_minutes": 3761,
|
||||
"updated_at": "2026-07-31T17:35:21.869168+00:00",
|
||||
"uptime_minutes": 2220,
|
||||
"daemon_status": "running",
|
||||
"distill_status": "ok",
|
||||
"observations": [
|
||||
{
|
||||
"name": "f_a01确认巡检报告已收_关键状态_知乎文章停更于_05_6月20日_约一个月无更新_a01评估当前无需升级_等待哥哥_牧尘_指示",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1785072114064818659",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_sessiokey_有效性检查_-_2026-07-26_11_00_utc_8_结论_整体正常_有一项需关注_正常的_sessio-_agent_a02_maiheartbe",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1785034875422838308",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_2026-07-09_11_00_心跳回复_-_a03_墨文_1_05_封面图任务_记忆库查不到_我未录入过_队列里也没有_请来源方确认补充_2_overdue-check_blac",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1785018158403944028",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_用户_全面进行一次检查_发现问题_并解决_尽量用opencode审核代码_助手_全面检查完成_已修复_7_个问题_文件_行_类型_严重_状态_---",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784989382795967336",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_用户_加上_认真分析问题_别乱修改_助手_全部搞定_daemo稳定_deep_tick_6092_正常运行_---_修复总结_问题_根因_修复_状",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784986219983115592",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_用户_你怎么一直弄dns_助手_daemo已稳定运行_6128_次_crash_终结_---_根因_int_out_假设_nvidia-smi_永远输出数字",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784984502438260149",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_用户_错误信息一直在飞书群发_助手_问题已定位清楚_总结一下_---_根因_dns_中断_20_分钟_20_00-20_20_dns_断期间_所有发飞书群的_delivery",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784983326599083903",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_用户_小唯异常_助手_我在等你说具体哪里异常_刚才已确认_-_进程全存活_zhiyi_bge_new-api_hermes_daemo-_newapi_13",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784982897737856478",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_sessiokey_有效性检查记录_2026-07-25_11_00_cst_51个活跃sessio0个已归档_过期_所有团队成员_a01_a02_a03_a04_a05_sessio均",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784948443895996082",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_sessiokey_健康检查报告_-_2026-07-24_11_00_cst_正常心跳_sessio5个_-_maiagent_maimaiheartbeat",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784862056715739883",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_用户_cronjob_response_bge内存泄漏监控_job_id_2891b3304339_---_crobge内存泄漏监控_failed_provider_t",
|
||||
"namespace": "shared",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784798739181161581",
|
||||
"namespace": "shared",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_sessiokey_健康检查结果_2026-07-23_11_00_cst_心跳_sessio全部正常_-_a02_maiheartbeat_178477335930",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784775745032095947",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_用户_小唯机器人发的_助手_修好了_总结两次诊断的结果_问题1_本次对话发现并修复_memory-system-self-upgrade_py_里期望_active_scene",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784767495091903065",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_用户_记忆系统升级异常_助手_这条消息只有标题_没有具体内容_是哪个_cro发出来的_还是你看漏了具体报错信息_能把完整内容发给我吗_或者告诉我_记忆系统升级异常_具体是指哪个系统_什",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784766328648485458",
|
||||
"namespace": "hermes-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "f_a05_核查_a01_sessiokey_异常_2026-07-22_11_00_结论_a01_小雪_无独立_agent_实体_是_mai的会话标签_-_sessions_list_a",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
},
|
||||
{
|
||||
"name": "ep_1784689500438390218",
|
||||
"namespace": "openclaw-main",
|
||||
"summary": ""
|
||||
}
|
||||
],
|
||||
"patterns": [
|
||||
{
|
||||
"name": "topic:按照你的建议",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "按照你的建议"
|
||||
},
|
||||
{
|
||||
"name": "topic:each",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "each"
|
||||
},
|
||||
{
|
||||
"name": "topic:COMPLETE",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "COMPLETE"
|
||||
},
|
||||
{
|
||||
"name": "topic:同步服务器凭",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "同步服务器凭"
|
||||
},
|
||||
{
|
||||
"name": "topic:证照片",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "证照片"
|
||||
},
|
||||
{
|
||||
"name": "topic:系统",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "系统"
|
||||
},
|
||||
{
|
||||
"name": "topic:设计改造方案",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "设计改造方案"
|
||||
},
|
||||
{
|
||||
"name": "topic:改造",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "改造"
|
||||
},
|
||||
{
|
||||
"name": "topic:BATCH",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "BATCH"
|
||||
},
|
||||
{
|
||||
"name": "topic:daemon",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "daemon"
|
||||
},
|
||||
{
|
||||
"name": "topic:写代码",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "写代码"
|
||||
},
|
||||
{
|
||||
"name": "topic:自检",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "自检"
|
||||
},
|
||||
{
|
||||
"name": "topic:code",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "code"
|
||||
},
|
||||
{
|
||||
"name": "topic:IMPORTANT",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "IMPORTANT"
|
||||
},
|
||||
{
|
||||
"name": "pattern:shared:software",
|
||||
"occurrence": 1,
|
||||
"source": "graph_nodes",
|
||||
"topic": ""
|
||||
},
|
||||
{
|
||||
"name": "topic:数据恢复备忘",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "数据恢复备忘"
|
||||
},
|
||||
{
|
||||
"name": "topic:在不",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "在不"
|
||||
},
|
||||
{
|
||||
"name": "topic:好的",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "好的"
|
||||
},
|
||||
{
|
||||
"name": "topic:执行",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "执行"
|
||||
},
|
||||
{
|
||||
"name": "topic:问题",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "问题"
|
||||
},
|
||||
{
|
||||
"name": "topic:我想知道",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "我想知道"
|
||||
},
|
||||
{
|
||||
"name": "topic:人格文件什么",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "人格文件什么"
|
||||
},
|
||||
{
|
||||
"name": "topic:的用修改么",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "的用修改么"
|
||||
},
|
||||
{
|
||||
"name": "topic:财务报表报送",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "财务报表报送"
|
||||
},
|
||||
{
|
||||
"name": "topic:与信息采集",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "与信息采集"
|
||||
},
|
||||
{
|
||||
"name": "topic:小企业会计准",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "小企业会计准"
|
||||
},
|
||||
{
|
||||
"name": "topic:你可以让她执",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "你可以让她执"
|
||||
},
|
||||
{
|
||||
"name": "topic:行你不能执行",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "行你不能执行"
|
||||
},
|
||||
{
|
||||
"name": "topic:的终端命令",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "的终端命令"
|
||||
},
|
||||
{
|
||||
"name": "topic:继续",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "继续"
|
||||
},
|
||||
{
|
||||
"name": "topic:hermes",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "hermes"
|
||||
},
|
||||
{
|
||||
"name": "topic:you",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "you"
|
||||
},
|
||||
{
|
||||
"name": "topic:muc",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "muc"
|
||||
},
|
||||
{
|
||||
"name": "topic:has",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "has"
|
||||
},
|
||||
{
|
||||
"name": "topic:The",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "The"
|
||||
},
|
||||
{
|
||||
"name": "topic:background",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "background"
|
||||
},
|
||||
{
|
||||
"name": "topic:home",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "home"
|
||||
},
|
||||
{
|
||||
"name": "topic:user",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "user"
|
||||
},
|
||||
{
|
||||
"name": "topic:process",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "process"
|
||||
},
|
||||
{
|
||||
"name": "topic:out",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "out"
|
||||
},
|
||||
{
|
||||
"name": "topic:parallel",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "parallel"
|
||||
},
|
||||
{
|
||||
"name": "topic:openclaw",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "openclaw"
|
||||
},
|
||||
{
|
||||
"name": "topic:results",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "results"
|
||||
},
|
||||
{
|
||||
"name": "topic:ASYNC",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "ASYNC"
|
||||
},
|
||||
{
|
||||
"name": "topic:DELEGATION",
|
||||
"occurrence": 1,
|
||||
"source": "session_messages",
|
||||
"topic": "DELEGATION"
|
||||
},
|
||||
{
|
||||
"name": "pattern:reasonix-main:concept",
|
||||
"occurrence": 1,
|
||||
"source": "unknown",
|
||||
"topic": ""
|
||||
},
|
||||
{
|
||||
"name": "pattern:obsidian-plugin-main:entity",
|
||||
"occurrence": 1,
|
||||
"source": "unknown",
|
||||
"topic": ""
|
||||
},
|
||||
{
|
||||
"name": "pattern:hermes-test-e41:entity",
|
||||
"occurrence": 1,
|
||||
"source": "unknown",
|
||||
"topic": ""
|
||||
},
|
||||
{
|
||||
"name": "pattern:hermes:entity",
|
||||
"occurrence": 1,
|
||||
"source": "unknown",
|
||||
"topic": ""
|
||||
},
|
||||
{
|
||||
"name": "pattern:a06-main:concept",
|
||||
"occurrence": 1,
|
||||
"source": "unknown",
|
||||
"topic": ""
|
||||
}
|
||||
],
|
||||
"observations": [],
|
||||
"patterns": [],
|
||||
"scenes": [
|
||||
{
|
||||
"content": "Found 5 matching memories:\n\n- **[episodic]** (priority: 93) [scene: 我和用户一起补写织忆心迹的时间线] (score: 0.033)\n 用户和 AI 于 2026-07-13T09:30:00Z 上线了统一记忆入口 memory_recall.py,首次将原有的三套独立记忆系统打通,标志着织忆心迹记忆体系完成整合。\n\n- **[episodic]** (priority: 90) [scene: 我和用户一起补写织忆心迹的时间线] (score: 0.032)\n 用户和 AI 于 2026-07-13T10:30:00Z ",
|
||||
"content": "Found 5 matching memories:\n\n- **[episodic]** (priority: 90) [scene: 我在和用户一起补写织忆心迹的时间线] (score: 0.032)\n 用户与 AI 于 2026-07-10 共同启动了每日复盘机制,开始有意识地记录当天学到的东西,这是织忆心迹记忆体系搭建的第一个关键里程碑;于 2026-07-13T09:30 上线统一记忆入口 memory_recall.py,首次打通原有三套独立记忆系统,标志着记忆体系完成整合;于 2026-07-13T10:30 完成 Soulful 心迹补写,首次主动记录彼此之间有意义的事。此后用",
|
||||
"total": 5
|
||||
}
|
||||
],
|
||||
|
|
|
|||
|
|
@ -30,6 +30,12 @@ save_llm_context教训:函数存在不代表真的在工作——必须每次t
|
|||
§
|
||||
5个独立分身实体:cron(22)/delegate_task/OpenClaw(铁锋/卫安)/opencode/prof-b(独立profile+gateway+飞书)。各自独立配置。prof-b的HERMES_HOME=~/.hermes-prof-b/(不是~/hermes/profiles/),systemd unit指定。2026-07-29起model-health.py自愈覆盖主配置+prof-b。
|
||||
§
|
||||
免费模型质量排名(探针自动评分):①gpt-oss-120b(99分,329ms) ②nemotron-3-super(94分,432ms) ③mistral-nemotron(79分,2560ms) ④nemotron-nano-9b(76分,973ms)。model-health.py v2新增:质量探针+自动发现(5个/轮)+自动升级(更好模型替换配置中最差的)。
|
||||
NewAPI免费模型上下文: deepseek-v4-pro(1M), nemotron-3-super(1M✅用户确认), llama-4-maverick(1M), minimax-m3(256K), most NIM 128K, step-3.5-flash(8K)。
|
||||
§
|
||||
CBM v0.9.0 已装,8 MCP工具已通。cbm-code-analysis v1.1.0 + references (verified-queries + mcp-integration-workflow)。
|
||||
CBM v0.9.0 已装,8 MCP工具已通。cbm-code-analysis v1.1.0 + references (verified-queries + mcp-integration-workflow)。
|
||||
§
|
||||
2026-07-30 模型排序: nemotron-3-super-120b-a12b(1M ctx)为🥇delegation模型。上下文评分1M=100,256K=90,128K=80。慢模型>3s用户舍弃。下载研究项目: GH超时→镜像/换源/或先下载到/tmp。
|
||||
§
|
||||
⚠️铁律(2026-07-31牧尘纠正):禁止擅自切换日常对话模型!2026-07-30我把deepseek-v4-flash(收费)换成nemotron-3-super(NewAPI免费)→无法正常使用,牧尘改回收费模型。日常对话=deepseek-v4-flash(收费)固定不变;NewAPI免费模型只用于cron/自动化,绝不用于主对话。改模型前必须先问牧尘。
|
||||
§
|
||||
model-health.py v3(2026-07-31修复两致命缺陷): ①旧版只修providers.models列表、从不验证model.default→prof-b被写成NewAPI不存在的deepseek/deepseek-v4-flash全挂503 ②排名公式丢了context_score→1M模型排不上。v3: 自愈检查model.default(仅newapi-local,付费保护) + _verify_model_usable替换前真实调用验证 + 候选必须stable + OpenClaw fallbacks也修 + 探针每题3次取平均 + 排名公式probe*0.30+ctx*0.25+param*0.20+family*0.10+stab*0.10+speed*0.05。当前🥇nemotron-3-super(1M,probe100)🥈gpt-oss(probe92)。cron 6a45e41cba6c每6h跑。
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ KOCR修复铁律:只动需要改的列,不从逐页XLS重新合并(batch
|
|||
文档意识:做完必须同步 Obsidian。所有工具在 07-Wiki 或 06-工具与资源 留档。
|
||||
技术深度要求:研究必须挖到底(API结构、架构原理、对比),给结论带数据支撑。
|
||||
§
|
||||
模型分层:日常对话用 DeepSeek V4 Flash(付费),cron/自动化走 NewAPI 免费模型(gpt-oss-120b优先)。2026-07-29 EOL模型全部替换(step-3.5-flash、minimax-m2.7、minimax-m3、qwen3.5-122b),新免费四件套:gpt-oss-120b/nemotron-super-49b/mistral-medium-3.5/nemotron-3-super。config.yaml+MOA已修,22 cron零报错。
|
||||
模型分层铁律:日常对话必须用 DeepSeek V4 Flash(付费),禁止擅自切换为NewAPI免费模型(2026-07-31被纠正两次,切了就无法正常使用)。NewAPI免费模型仅用于cron/自动化。改模型前必须先问。
|
||||
§
|
||||
牧尘2026-07-29教训:修复必须全覆盖所有分体——主配置/prof-b/OpenClaw都得改到,漏一个都不算完。模型自愈脚本必须覆盖所有配置文件格式(YAML+JSON)。prof-b gateway重启只能从他那边终端手动执行,agent内部被强制保护。
|
||||
§
|
||||
|
|
|
|||
|
|
@ -205,43 +205,47 @@ def _context_score(model: str) -> float:
|
|||
return max(round(ctx / 8 * 10), 5)
|
||||
|
||||
|
||||
def _run_quality_probe(model: str) -> dict:
|
||||
"""运行质量探针,返回探针分和详细结果"""
|
||||
def _run_quality_probe(model: str, trials: int = 3) -> dict:
|
||||
"""运行质量探针,返回探针分和详细结果。
|
||||
v3: 每道题测 trials 次(默认 3),取通过比例,消除单次波动。"""
|
||||
probe_results = []
|
||||
total = 0
|
||||
for q in PROBE_QUESTIONS:
|
||||
payload = json.dumps({
|
||||
"model": model,
|
||||
"messages": [{"role": "user", "content": q["question"]}],
|
||||
"max_tokens": 200,
|
||||
"temperature": 0.1,
|
||||
}).encode()
|
||||
req = urllib.request.Request(
|
||||
f"{API}/chat/completions",
|
||||
data=payload,
|
||||
headers=HEADERS,
|
||||
method="POST",
|
||||
)
|
||||
try:
|
||||
with urllib.request.urlopen(req, timeout=20) as resp:
|
||||
body = json.loads(resp.read())
|
||||
msg = body.get("choices", [{}])[0].get("message", {}) or {}
|
||||
# 有些模型把实际回答放 reasoning_content(gpt-oss-120b 等)
|
||||
content = msg.get("content") or msg.get("reasoning_content") or msg.get("reasoning") or ""
|
||||
passed = 1 if q["check"](content) else 0
|
||||
score = q["weight"] if passed else 0
|
||||
total += score
|
||||
probe_results.append({
|
||||
"question": q["question"][:40],
|
||||
"passed": passed,
|
||||
"score": score,
|
||||
})
|
||||
except Exception:
|
||||
probe_results.append({
|
||||
"question": q["question"][:40],
|
||||
"passed": 0,
|
||||
"score": 0,
|
||||
})
|
||||
passed_count = 0
|
||||
scores = []
|
||||
for _ in range(trials):
|
||||
payload = json.dumps({
|
||||
"model": model,
|
||||
"messages": [{"role": "user", "content": q["question"]}],
|
||||
"max_tokens": 200,
|
||||
"temperature": 0.1,
|
||||
}).encode()
|
||||
req = urllib.request.Request(
|
||||
f"{API}/chat/completions",
|
||||
data=payload,
|
||||
headers=HEADERS,
|
||||
method="POST",
|
||||
)
|
||||
try:
|
||||
with urllib.request.urlopen(req, timeout=20) as resp:
|
||||
body = json.loads(resp.read())
|
||||
msg = body.get("choices", [{}])[0].get("message", {}) or {}
|
||||
# 有些模型把实际回答放 reasoning_content(gpt-oss-120b 等)
|
||||
content = msg.get("content") or msg.get("reasoning_content") or msg.get("reasoning") or ""
|
||||
passed = 1 if q["check"](content) else 0
|
||||
scores.append(passed)
|
||||
except Exception:
|
||||
scores.append(0)
|
||||
passed_count = sum(scores)
|
||||
# 取平均:通过比例 × 权重(3 次中过 2 次 = 2/3 权重)
|
||||
score = round(q["weight"] * passed_count / trials)
|
||||
total += score
|
||||
probe_results.append({
|
||||
"question": q["question"][:40],
|
||||
"passed": passed_count,
|
||||
"trials": trials,
|
||||
"score": score,
|
||||
})
|
||||
return {"probe_score": total, "probe_detail": probe_results}
|
||||
|
||||
|
||||
|
|
@ -375,7 +379,7 @@ def test_model(model: str, fastest_latency: int = None) -> dict:
|
|||
cs = _context_score(model)
|
||||
|
||||
rank_score = round(
|
||||
probe_s * 0.30 + cs * 0.15 + ps * 0.20 + fs * 0.15 + stab_s * 0.10 + ss * 0.10
|
||||
probe_s * 0.30 + cs * 0.25 + ps * 0.20 + fs * 0.10 + stab_s * 0.10 + ss * 0.05
|
||||
)
|
||||
|
||||
return {
|
||||
|
|
@ -399,10 +403,31 @@ def test_model(model: str, fastest_latency: int = None) -> dict:
|
|||
}
|
||||
|
||||
|
||||
def _verify_model_usable(model: str) -> bool:
|
||||
"""替换前真实调用验证:必须 HTTP 200 且有内容,才允许写入配置。
|
||||
这是自愈安全闸门——候选模型必须先实际跑通一次,防止写入死模型/不存在模型。"""
|
||||
payload = json.dumps({
|
||||
"model": model,
|
||||
"messages": [{"role": "user", "content": "hi"}],
|
||||
"max_tokens": 5,
|
||||
}).encode()
|
||||
req = urllib.request.Request(
|
||||
f"{API}/chat/completions", data=payload, headers=HEADERS, method="POST"
|
||||
)
|
||||
try:
|
||||
with urllib.request.urlopen(req, timeout=20) as resp:
|
||||
body = json.loads(resp.read())
|
||||
msg = body.get("choices", [{}])[0].get("message", {}) or {}
|
||||
content = msg.get("content") or msg.get("reasoning_content") or ""
|
||||
return bool(content.strip())
|
||||
except Exception:
|
||||
return False
|
||||
|
||||
|
||||
def main():
|
||||
timestamp = datetime.now(timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
|
||||
results = []
|
||||
deadline = time.time() + 300 # 5分钟全局超时(探针增加了耗时)
|
||||
deadline = time.time() + 480 # 8分钟全局超时(探针3次取平均,耗时增加)
|
||||
|
||||
# ============ 自动发现新模型 ============
|
||||
new_models = _discover_new_models()
|
||||
|
|
@ -440,12 +465,14 @@ def main():
|
|||
else:
|
||||
ss = 50
|
||||
stab_s = 100 if r["stability"] == "stable" else (50 if r["stability"] == "unstable" else 0)
|
||||
# v3: 加入 context_score(长上下文是核心优势,之前公式把它丢了!)
|
||||
r["rank_score"] = round(
|
||||
r.get("probe_score", 0) * 0.35
|
||||
+ r.get("param_score", 50) * 0.25
|
||||
+ r.get("family_score", 60) * 0.20
|
||||
r.get("probe_score", 0) * 0.30
|
||||
+ r.get("context_score", 80) * 0.25
|
||||
+ r.get("param_score", 50) * 0.20
|
||||
+ r.get("family_score", 60) * 0.10
|
||||
+ stab_s * 0.10
|
||||
+ ss * 0.10
|
||||
+ ss * 0.05
|
||||
)
|
||||
|
||||
# 汇总
|
||||
|
|
@ -491,47 +518,78 @@ def main():
|
|||
# ============ 自愈:检测到死的模型自动替换 ============
|
||||
|
||||
def _heal_config(config_path: str, declared: list, label: str) -> bool:
|
||||
"""修复一个配置文件的模型列表,返回是否修改"""
|
||||
dead_in = [r for r in results if r["model"] in declared and r["stability"] == "dead"]
|
||||
if not dead_in:
|
||||
return False
|
||||
"""修复一个配置文件的模型列表,返回是否修改。
|
||||
|
||||
print(f"\n🔧 [{label}] 检测到 {len(dead_in)} 个模型已死亡,正在自愈...")
|
||||
v2: 除 providers 列表外,还必须检查实际生效的 model.default 字段——
|
||||
之前只修 providers.models 列表,model.default 指向死模型时脚本完全看不见。
|
||||
所有替换前必须通过 _verify_model_usable 真实调用验证。
|
||||
"""
|
||||
with open(config_path) as f:
|
||||
cfg = yaml.safe_load(f)
|
||||
|
||||
current_models = cfg["providers"]["newapi-local"]["models"]
|
||||
# ---------- 1. 检查 providers.newapi-local.models 列表 ----------
|
||||
current_models = cfg.get("providers", {}).get("newapi-local", {}).get("models", [])
|
||||
changed = False
|
||||
|
||||
for dead in dead_in:
|
||||
if dead["model"] not in current_models:
|
||||
continue
|
||||
replacement = None
|
||||
# 按质量排名选最优替补(高 rank_score 优先)
|
||||
ranked_candidates = sorted(
|
||||
[r for r in results if r["model"] in CANDIDATE_POOL
|
||||
and r["model"] not in current_models
|
||||
and r["stability"] != "dead"],
|
||||
key=lambda x: x["rank_score"], reverse=True
|
||||
)
|
||||
if ranked_candidates:
|
||||
replacement = ranked_candidates[0]["model"]
|
||||
if not replacement:
|
||||
print(f" ❌ [{label}] {dead['model']} 已死,但无可用替补")
|
||||
continue
|
||||
dead_in = [r for r in results if r["model"] in declared and r["stability"] == "dead"]
|
||||
if dead_in:
|
||||
print(f"\n🔧 [{label}] 检测到 {len(dead_in)} 个模型已死亡,正在自愈...")
|
||||
|
||||
idx = current_models.index(dead["model"])
|
||||
current_models[idx] = replacement
|
||||
changed = True
|
||||
print(f" ✅ [{label}] {dead['model']} → {replacement}")
|
||||
for dead in dead_in:
|
||||
if dead["model"] not in current_models:
|
||||
continue
|
||||
replacement = None
|
||||
# 按质量排名选最优替补(高 rank_score 优先)且必须通过真实调用验证
|
||||
ranked_candidates = sorted(
|
||||
[r for r in results if r["model"] in CANDIDATE_POOL
|
||||
and r["model"] not in current_models
|
||||
and r["stability"] == "stable"
|
||||
and _verify_model_usable(r["model"])],
|
||||
key=lambda x: x["rank_score"], reverse=True
|
||||
)
|
||||
if ranked_candidates:
|
||||
replacement = ranked_candidates[0]["model"]
|
||||
if not replacement:
|
||||
print(f" ❌ [{label}] {dead['model']} 已死,但无可用替补")
|
||||
continue
|
||||
|
||||
if cfg["providers"]["newapi-local"].get("default_model") == dead["model"]:
|
||||
cfg["providers"]["newapi-local"]["default_model"] = replacement
|
||||
print(f" default_model 同步更新为 {replacement}")
|
||||
idx = current_models.index(dead["model"])
|
||||
current_models[idx] = replacement
|
||||
changed = True
|
||||
print(f" ✅ [{label}] {dead['model']} → {replacement}")
|
||||
|
||||
if cfg.get("model", {}).get("default") == dead["model"]:
|
||||
cfg["model"]["default"] = replacement
|
||||
print(f" model.default 同步更新为 {replacement}")
|
||||
if cfg.get("providers", {}).get("newapi-local", {}).get("default_model") == dead["model"]:
|
||||
cfg["providers"]["newapi-local"]["default_model"] = replacement
|
||||
print(f" default_model 同步更新为 {replacement}")
|
||||
|
||||
if cfg.get("model", {}).get("default") == dead["model"]:
|
||||
cfg["model"]["default"] = replacement
|
||||
print(f" model.default 同步更新为 {replacement}")
|
||||
|
||||
# ---------- 2. 检查 model.default 实际生效字段(v2 新增)----------
|
||||
# 只有当 model.default 指向 newapi-local 免费模型时才自愈;
|
||||
# 付费主模型(deepseek-v4-flash 等)绝不自动改。
|
||||
model_default = cfg.get("model", {}).get("default")
|
||||
model_provider = cfg.get("model", {}).get("provider", "")
|
||||
if model_default and model_provider == "newapi-local":
|
||||
# 在结果里找它;不在结果里 = 根本没被测试(未知状态),也视为需要修复
|
||||
found = next((r for r in results if r["model"] == model_default), None)
|
||||
is_bad = found is None or found["stability"] != "stable"
|
||||
if is_bad:
|
||||
print(f"\n🔧 [{label}] model.default={model_default} 不可用({found['stability'] if found else '未测试'}),正在自愈...")
|
||||
ranked_candidates = sorted(
|
||||
[r for r in results if r["model"] in CANDIDATE_POOL
|
||||
and r["stability"] == "stable"
|
||||
and _verify_model_usable(r["model"])],
|
||||
key=lambda x: x["rank_score"], reverse=True
|
||||
)
|
||||
replacement = ranked_candidates[0]["model"] if ranked_candidates else None
|
||||
if replacement and replacement != model_default:
|
||||
cfg["model"]["default"] = replacement
|
||||
cfg["model"]["base_url"] = "http://127.0.0.1:3000/v1"
|
||||
cfg["model"]["api_key"] = "0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP"
|
||||
changed = True
|
||||
print(f" ✅ [{label}] model.default {model_default} → {replacement}")
|
||||
|
||||
if changed:
|
||||
with open(config_path, "w") as f:
|
||||
|
|
@ -574,7 +632,8 @@ def main():
|
|||
continue
|
||||
ranked_candidates = sorted(
|
||||
[r for r in results if r["model"] in CANDIDATE_POOL
|
||||
and r["stability"] != "dead"
|
||||
and r["stability"] == "stable"
|
||||
and _verify_model_usable(r["model"])
|
||||
and not any(m.get("id") == r["model"] for m in models_list)],
|
||||
key=lambda x: x["rank_score"], reverse=True
|
||||
)
|
||||
|
|
@ -602,9 +661,9 @@ def main():
|
|||
dead_result = next((r for r in results if r["model"] == raw_model and r["stability"] == "dead"), None)
|
||||
if not dead_result:
|
||||
continue
|
||||
# 找替补
|
||||
# 找替补(必须 stable + 真实调用验证)
|
||||
ranked_candidates = sorted(
|
||||
[r for r in results if r["stability"] == "stable"],
|
||||
[r for r in results if r["stability"] == "stable" and _verify_model_usable(r["model"])],
|
||||
key=lambda x: x["rank_score"], reverse=True
|
||||
)
|
||||
replacement = ranked_candidates[0]["model"] if ranked_candidates else None
|
||||
|
|
@ -617,6 +676,36 @@ def main():
|
|||
changed = True
|
||||
print(f" ✅ [OpenClaw agent] {raw_model} → {replacement}")
|
||||
|
||||
# --- 2.5 修复 agents.list[*].model.fallbacks(v2 新增)---
|
||||
for agent in agents_list:
|
||||
fallbacks = agent.get("model", {}).get("fallbacks", [])
|
||||
if not fallbacks:
|
||||
continue
|
||||
new_fallbacks = []
|
||||
fb_changed = False
|
||||
for fb in fallbacks:
|
||||
parts = fb.split("/")
|
||||
raw_model = "/".join(parts[-2:]) if len(parts) >= 2 else parts[-1]
|
||||
fb_dead = next((r for r in results if r["model"] == raw_model and r["stability"] == "dead"), None)
|
||||
if not fb_dead:
|
||||
new_fallbacks.append(fb)
|
||||
continue
|
||||
ranked_candidates = sorted(
|
||||
[r for r in results if r["stability"] == "stable" and _verify_model_usable(r["model"])],
|
||||
key=lambda x: x["rank_score"], reverse=True
|
||||
)
|
||||
replacement = ranked_candidates[0]["model"] if ranked_candidates else None
|
||||
if not replacement:
|
||||
print(f" ❌ [OpenClaw fallback] {raw_model} 已死,无替补")
|
||||
continue
|
||||
prefix = fb.split("/")[0] + "/"
|
||||
new_fallbacks.append(f"{prefix}{replacement}")
|
||||
fb_changed = True
|
||||
print(f" ✅ [OpenClaw fallback] {raw_model} → {replacement}")
|
||||
if fb_changed:
|
||||
agent["model"]["fallbacks"] = new_fallbacks
|
||||
changed = True
|
||||
|
||||
# --- 3. 修复 agents.defaults.compaction.model ---
|
||||
defaults = cfg.get("agents", {}).get("defaults", {})
|
||||
comp_model = defaults.get("compaction", {}).get("model", "")
|
||||
|
|
@ -624,7 +713,8 @@ def main():
|
|||
dead_result = next((r for r in results if r["model"] == comp_model and r["stability"] == "dead"), None)
|
||||
if dead_result:
|
||||
ranked_candidates = sorted(
|
||||
[r for r in results if r["stability"] == "stable" and r["rank_score"] > 50],
|
||||
[r for r in results if r["stability"] == "stable" and r["rank_score"] > 50
|
||||
and _verify_model_usable(r["model"])],
|
||||
key=lambda x: x["rank_score"], reverse=True
|
||||
)
|
||||
replacement = ranked_candidates[0]["model"] if ranked_candidates else None
|
||||
|
|
@ -643,45 +733,50 @@ def main():
|
|||
# ============ 主动升级:新模型排名更高则自动替换 ============
|
||||
|
||||
def _auto_promote_config(config_path: str, label: str, n_keep: int = 4) -> bool:
|
||||
"""检查配置中模型列表,如果发现有排名更高的新模型,替换掉最差的"""
|
||||
"""v3: 排名驱动的自动升级。
|
||||
每次巡检检查配置里实际生效的 default_model(newapi-local 的),
|
||||
如果排名第一的稳定模型不同且验证通过,就升级。不依赖"新模型/死模型"事件。"""
|
||||
if not os.path.exists(config_path):
|
||||
return False
|
||||
# 新发现的稳定模型(不在 CANDIDATE_POOL 里的)
|
||||
new_stable = [r for r in results if r["model"] not in CANDIDATE_POOL
|
||||
and r["stability"] == "stable" and r["rank_score"] > 0
|
||||
and r["model"] not in KNOWN_IGNORE]
|
||||
if not new_stable:
|
||||
return False
|
||||
# 读取当前配置的模型列表
|
||||
with open(config_path) as f:
|
||||
cfg = yaml.safe_load(f)
|
||||
current_models = cfg.get("providers", {}).get("newapi-local", {}).get("models", [])
|
||||
if not current_models:
|
||||
return False
|
||||
# 对每个新模型,检查是否超过当前配置中的最低排名模型
|
||||
|
||||
changed = False
|
||||
for new_r in sorted(new_stable, key=lambda x: x["rank_score"], reverse=True):
|
||||
# 如果已经存在,跳过
|
||||
if new_r["model"] in current_models:
|
||||
continue
|
||||
# 找当前配置中排名最低的
|
||||
ranked_current = sorted(
|
||||
[r for r in results if r["model"] in current_models and r["stability"] != "dead"],
|
||||
key=lambda x: x["rank_score"]
|
||||
)
|
||||
if not ranked_current or len(current_models) < n_keep:
|
||||
continue
|
||||
worst = ranked_current[0]
|
||||
if new_r["rank_score"] > worst["rank_score"]:
|
||||
idx = current_models.index(worst["model"])
|
||||
print(f" ⬆️ [{label}] 升级: {worst['model']}({worst['rank_score']}分) → {new_r['model']}({new_r['rank_score']}分)")
|
||||
current_models[idx] = new_r["model"]
|
||||
|
||||
# ---------- A. 升级 providers.newapi-local.default_model ----------
|
||||
prov = cfg.get("providers", {}).get("newapi-local", {})
|
||||
current_default = prov.get("default_model", "")
|
||||
# 排名第一的稳定模型(必须验证通过)
|
||||
best_candidates = sorted(
|
||||
[r for r in results if r["stability"] == "stable"
|
||||
and _verify_model_usable(r["model"])],
|
||||
key=lambda x: x["rank_score"], reverse=True
|
||||
)
|
||||
best_model = best_candidates[0]["model"] if best_candidates else None
|
||||
if best_model and current_default != best_model:
|
||||
print(f" ⬆️ [{label}] default_model: {current_default or '(空)'} → {best_model} (排名第1)")
|
||||
prov["default_model"] = best_model
|
||||
changed = True
|
||||
|
||||
# ---------- B. 升级 model.default(仅当它指向 newapi-local 免费模型)----------
|
||||
model_default = cfg.get("model", {}).get("default")
|
||||
model_provider = cfg.get("model", {}).get("provider", "")
|
||||
if model_default and model_provider == "newapi-local" and best_model and model_default != best_model:
|
||||
# 当前模型不可用,或排名落后于第一名
|
||||
cur = next((r for r in results if r["model"] == model_default), None)
|
||||
cur_bad = cur is None or cur["stability"] != "stable"
|
||||
cur_lower = cur is not None and best_model and best_candidates and cur["rank_score"] < best_candidates[0]["rank_score"]
|
||||
if cur_bad or cur_lower:
|
||||
print(f" ⬆️ [{label}] model.default: {model_default} → {best_model} (排名驱动)")
|
||||
cfg["model"]["default"] = best_model
|
||||
cfg["model"]["base_url"] = "http://127.0.0.1:3000/v1"
|
||||
cfg["model"]["api_key"] = "0ExNiLblJvIWBDpkS50fwOBw4MmqLyKdHJK5iQtlw9dOMWBP"
|
||||
changed = True
|
||||
|
||||
if changed:
|
||||
cfg["providers"]["newapi-local"]["models"] = current_models
|
||||
with open(config_path, "w") as f:
|
||||
yaml.dump(cfg, f, default_flow_style=False, allow_unicode=True, sort_keys=False)
|
||||
print(f" ✅ [{label}] 主动升级完成")
|
||||
print(f" ✅ [{label}] 排名驱动升级完成")
|
||||
return changed
|
||||
|
||||
_auto_promote_config(CONFIG_PATH, "主配置")
|
||||
|
|
|
|||
|
|
@ -6,10 +6,12 @@
|
|||
"context": "",
|
||||
"created_at": "2026-07-09T19:44:52.308215+00:00",
|
||||
"follow_up_date": "2026-07-31",
|
||||
"status": "pending",
|
||||
"status": "stale",
|
||||
"reminder_count": 6,
|
||||
"last_reminded": "2026-07-23T16:13:46.254173+00:00",
|
||||
"tags": []
|
||||
"tags": [],
|
||||
"staled_at": "2026-07-31T17:35:21.830340+00:00",
|
||||
"stale_reason": "超过14天未处理(创建于2026-07-09)"
|
||||
},
|
||||
{
|
||||
"id": "27ec4bb6",
|
||||
|
|
@ -17,10 +19,12 @@
|
|||
"context": "",
|
||||
"created_at": "2026-07-09T19:45:07.031106+00:00",
|
||||
"follow_up_date": "2026-07-31",
|
||||
"status": "pending",
|
||||
"status": "stale",
|
||||
"reminder_count": 6,
|
||||
"last_reminded": "2026-07-23T16:13:46.254543+00:00",
|
||||
"tags": []
|
||||
"tags": [],
|
||||
"staled_at": "2026-07-31T17:35:21.830340+00:00",
|
||||
"stale_reason": "超过14天未处理(创建于2026-07-09)"
|
||||
},
|
||||
{
|
||||
"id": "93d680f2",
|
||||
|
|
@ -28,11 +32,13 @@
|
|||
"context": "",
|
||||
"created_at": "2026-07-09T19:46:37.210399+00:00",
|
||||
"follow_up_date": "2026-07-31",
|
||||
"status": "pending",
|
||||
"status": "stale",
|
||||
"reminder_count": 6,
|
||||
"last_reminded": "2026-07-23T16:13:46.254680+00:00",
|
||||
"tags": []
|
||||
"tags": [],
|
||||
"staled_at": "2026-07-31T17:35:21.830340+00:00",
|
||||
"stale_reason": "超过14天未处理(创建于2026-07-09)"
|
||||
}
|
||||
],
|
||||
"updated_at": "2026-07-23T16:13:46.254699+00:00"
|
||||
"updated_at": "2026-07-31T17:35:21.830340+00:00"
|
||||
}
|
||||
Loading…
Reference in New Issue