Files
OpenOPC/config/system_config.yaml
2026-07-01 17:56:31 +08:00

314 lines
7.9 KiB
YAML

system:
auto_approve_below_cost: 10.0
context_compression_threshold: 0.85
default_channel: cli
escalation_timeout_seconds: 300
log_level: INFO
max_agent_iterations: 50
opc_home: ''
browser:
mode: embedded
headless: true
chrome_channel: chrome
chrome_executable_path: ''
user_data_dir: ''
args: []
native_runtime:
enabled: true
stream_llm: true
emit_runtime_events: true
event_protocol_version: v2
enable_tool_hooks: true
converge_on_parallel_failure: true
max_parallel_read_tools: 6
tool_result_budget_chars: 20000
microcompact_chars: 8000
history_snip_trigger_messages: 40
subagent_max_depth: 3
auto_extract_durable_memory: false
durable_memory_extract_min_messages: 4
durable_memory_max_input_chars: 12000
prompt_prefix_stability:
enabled: true
separate_dynamic_context: true
emit_cache_fingerprint_events: true
prompt_harness:
enabled: true
split_static_dynamic: true
emit_delta_messages: true
cache_static_prefix_only: true
artifact_messages_enabled: true
section_dedup_enabled: true
reinject_after_compaction: true
reactive_compaction:
enabled: true
max_overflow_retries: 2
circuit_breaker_failures: 2
context_usage_reporting:
enabled: true
emit_runtime_events: true
verification_policy:
# Native self-verification gate (spawns a `verify` subagent to re-check a
# finished turn). Disabled by default: it adds latency/cost and is low
# value for non-code work; company mode already has the manager-review
# gate as the quality check. Set to true to re-enable for both task and
# company mode. See opc/layer3_agent/runtime_v2/runtime.py.
enabled: false
min_todos_for_verification: 3
require_on_code_edits: true
require_on_risky_tools: true
verifier_profile: verify
skip_metadata_key: skip_verification
background_session_memory:
enabled: true
update_interval_messages: 4
max_input_chars: 6000
prefetch:
enabled: true
session_memory: true
focused_memory: true
skills_summary: true
project_memory_candidates: true
max_chars: 4000
tool_aware_microcompact:
enabled: true
preserve_recent_messages: 8
tool_result_char_budget: 4000
assistant_char_budget: 3000
preserve_failure_outputs: true
artifact_compaction:
enabled: true
session_memory_fast_path: true
reinject_tool_surface_delta: true
reinject_skills_delta: true
reinject_active_subagents: true
reinject_verification_state: true
reinject_permission_state: true
prompt_too_long_retry: true
max_prompt_too_long_retries: 3
artifact_char_budget: 12000
task_ledger:
enabled: true
max_items: 24
persist_to_runtime_session: true
persist_to_task_metadata: true
emit_runtime_events: true
streaming_tool_start:
enabled: true
safe_read_only_only: true
require_allow_prediction: true
verification_contract:
enabled: true
append_status_to_final: true
require_explicit_status: true
execution_environment:
worktree_venv:
enabled: true
provider: auto
venv_dir: .opc-venv
editable_project: true
requirements_files: []
auto_detect_requirements: true
system_site_packages: false
fail_if_prepare_fails: false
sandbox:
enabled: true
default_mode: workspace-write
fail_if_unavailable: false
allow_direct_fallback: true
allow_network: true
windows:
mode: elevated
wrapper: none
linux:
mode: workspace-write
wrapper: auto
macos:
mode: workspace-write
wrapper: auto
task_mode:
sub_agent_timeout_sec: 86400
require_confirmation:
- deploy to production
- send external emails
- modify database schema
autonomy:
enabled: true
mode: bounded
approval_model: ''
approval_confidence_threshold: 0.7
learned_policy_threshold: 0.8
max_auto_approve_risk: medium
allow_native_tool_auto_approval: true
allow_external_agent_auto_approval: true
learn_from_feedback: true
save_external_sessions: true
tool_first_use_approval: true
tool_approval_exemptions:
- read_inbox
- send_dm
- ask_peer_and_wait
- reply_message
- broadcast_issue
- annotate_task
- start_meeting
- respond_meeting
- ack_handoff
- review_handoff
- propose_task_adjustment
- propose_runtime_replan
- request_user_input
- todo_read
- todo_write
command_review_window: 20
sensitive_keywords:
- token
- password
- secret
- api key
- credential
- private key
- payment
- database schema
- drop table
- rm -rf
- terraform destroy
- deploy to production
- send email
safe_command_prefixes:
- ls
- pwd
- echo
- rg
- git status
- git diff
- curl
- wget
- yt-dlp
- aria2c
- ffmpeg
permissions_v2:
enabled: true
fail_closed: true
classifier_enabled: true
shell_ast_validation: true
llm_classifier_model: ''
classifier_thresholds:
allow: 0.2
ask: 0.5
deny: 0.8
denial_memory:
enabled: true
repeat_threshold: 2
sandbox_policy:
treat_network_as_risky: true
treat_external_paths_as_high_risk: true
explicit_prefix_allowlist: []
candidate_extractors:
- path
- file_path
- directory
- working_directory
- target_output_dir
- workspace_path
- command
- cmd
- url
default_scope: once
allow_scopes:
- once
- session
- project
- global
allow_tools: []
deny_tools: []
allowed_paths: []
denied_paths: []
safe_shell_prefixes:
- ls
- pwd
- echo
- rg
- git status
- git diff
- curl
- wget
- yt-dlp
- aria2c
- ffmpeg
- python -V
- python3 -V
- node -v
- npm -v
ask_shell_prefixes:
- git commit
- git push
- npm install
- pip install
- pnpm install
- cargo test
- pytest
dangerous_shell_patterns:
- \brm\s+-rf\b
- \bdrop\s+table\b
- \btruncate\b
- \bterraform\s+destroy\b
- \bgit\s+push\s+--force\b
mcp_servers:
# ── Local MCP servers (stdio) ──────────────────────────────────────
# Native Python Playwright browser tools are enabled by default.
# Leave this browser MCP entry disabled unless you explicitly want the external MCP server.
- name: browser
type: local
command: ["npx", "@playwright/mcp@latest", "--headless"]
enabled: false
env: {}
tools_filter: []
startup_timeout: 30.0
# Example: GitHub MCP server (uncomment and set GITHUB_TOKEN)
# - name: github
# type: local
# command: ["npx", "-y", "@modelcontextprotocol/server-github"]
# enabled: true
# env:
# GITHUB_TOKEN: "your-github-token"
# tools_filter: []
# startup_timeout: 30.0
# Example: filesystem MCP server
# - name: filesystem
# type: local
# command: ["npx", "-y", "@modelcontextprotocol/server-filesystem", "/path/to/allowed/dir"]
# enabled: true
# ── Remote MCP servers (StreamableHTTP / SSE) ──────────────────────
# Example: remote MCP server with custom headers
# - name: remote-api
# type: remote
# url: "https://mcp.example.com/sse"
# enabled: true
# headers:
# Authorization: "Bearer your-token"
# startup_timeout: 30.0
capabilities:
enable_recovery: true
local_first: true
attach_remote_skill_summaries: true
promote_remote_skills: true
remote_skill_source: skillhub
max_remote_skill_results: 5
tool_failure_threshold: 2
skillhub:
enabled: false
api_base: https://www.skillhub.club/api/v1
api_key: ''
api_key_env: SKILLHUB_API_KEY
search_limit: 5
method: hybrid
cache_remote_skills: true
promote_after_successes: 2