Initial commit: OpenClaw Trading system
This commit is contained in:
commit
812efac3ef
14
.env.example
Normal file
14
.env.example
Normal file
@ -0,0 +1,14 @@
|
||||
# OpenClaw Trading Environment Variables
|
||||
|
||||
# LLM API Keys
|
||||
OPENAI_API_KEY=your_openai_api_key_here
|
||||
ANTHROPIC_API_KEY=your_anthropic_api_key_here
|
||||
|
||||
# Optional: Database
|
||||
# DATABASE_URL=sqlite:///data/openclaw.db
|
||||
|
||||
# Optional: Logging Level
|
||||
# LOG_LEVEL=INFO
|
||||
|
||||
# Optional: Trading Mode (paper/live)
|
||||
# TRADING_MODE=paper
|
||||
147
.gitignore
vendored
Normal file
147
.gitignore
vendored
Normal file
@ -0,0 +1,147 @@
|
||||
# Byte-compiled / optimized / DLL files
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
*$py.class
|
||||
|
||||
# C extensions
|
||||
*.so
|
||||
|
||||
# Distribution / packaging
|
||||
.Python
|
||||
build/
|
||||
develop-eggs/
|
||||
dist/
|
||||
downloads/
|
||||
eggs/
|
||||
.eggs/
|
||||
lib/
|
||||
lib64/
|
||||
parts/
|
||||
sdist/
|
||||
var/
|
||||
wheels/
|
||||
pip-wheel-metadata/
|
||||
share/python-wheels/
|
||||
*.egg-info/
|
||||
.installed.cfg
|
||||
*.egg
|
||||
MANIFEST
|
||||
|
||||
# PyInstaller
|
||||
*.manifest
|
||||
*.spec
|
||||
|
||||
# Installer logs
|
||||
pip-log.txt
|
||||
pip-delete-this-directory.txt
|
||||
|
||||
# Unit test / coverage reports
|
||||
htmlcov/
|
||||
.tox/
|
||||
.nox/
|
||||
.coverage
|
||||
.coverage.*
|
||||
.cache
|
||||
nosetests.xml
|
||||
coverage.xml
|
||||
*.cover
|
||||
*.py,cover
|
||||
.hypothesis/
|
||||
.pytest_cache/
|
||||
|
||||
# Translations
|
||||
*.mo
|
||||
*.pot
|
||||
|
||||
# Django stuff:
|
||||
*.log
|
||||
local_settings.py
|
||||
db.sqlite3
|
||||
db.sqlite3-journal
|
||||
|
||||
# Flask stuff:
|
||||
instance/
|
||||
.webassets-cache
|
||||
|
||||
# Scrapy stuff:
|
||||
.scrapy
|
||||
|
||||
# Sphinx documentation
|
||||
docs/_build/
|
||||
|
||||
# PyBuilder
|
||||
target/
|
||||
|
||||
# Jupyter Notebook
|
||||
.ipynb_checkpoints
|
||||
|
||||
# IPython
|
||||
profile_default/
|
||||
ipython_config.py
|
||||
|
||||
# pyenv
|
||||
.python-version
|
||||
|
||||
# pipenv
|
||||
Pipfile.lock
|
||||
|
||||
# PEP 582
|
||||
__pypackages__/
|
||||
|
||||
# Celery stuff
|
||||
celerybeat-schedule
|
||||
celerybeat.pid
|
||||
|
||||
# SageMath parsed files
|
||||
*.sage.py
|
||||
|
||||
# Environments
|
||||
.env
|
||||
.env.local
|
||||
.env.*.local
|
||||
.venv
|
||||
env/
|
||||
venv/
|
||||
ENV/
|
||||
env.bak/
|
||||
venv.bak/
|
||||
|
||||
# Spyder project settings
|
||||
.spyderproject
|
||||
.spyproject
|
||||
|
||||
# Rope project settings
|
||||
.ropeproject
|
||||
|
||||
# mkdocs documentation
|
||||
/site
|
||||
|
||||
# mypy
|
||||
.mypy_cache/
|
||||
.dmypy.json
|
||||
dmypy.json
|
||||
|
||||
# Pyre type checker
|
||||
.pyre/
|
||||
|
||||
# pytype static type analyzer
|
||||
.pytype/
|
||||
|
||||
# Cython debug symbols
|
||||
cython_debug/
|
||||
|
||||
# IDE
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
*.swo
|
||||
*~
|
||||
.DS_Store
|
||||
|
||||
# Project specific
|
||||
*.sqlite
|
||||
*.db
|
||||
data/cache/
|
||||
data/logs/
|
||||
config/local*.yaml
|
||||
config/secrets.yaml
|
||||
40
.omc/notepad.md
Normal file
40
.omc/notepad.md
Normal file
@ -0,0 +1,40 @@
|
||||
# Notepad
|
||||
<!-- Auto-managed by OMC. Manual edits preserved in MANUAL section. -->
|
||||
|
||||
## Priority Context
|
||||
<!-- ALWAYS loaded. Keep under 500 chars. Critical discoveries only. -->
|
||||
团队任务完成后的清理清单:
|
||||
1. 关闭所有 worker tmux panes
|
||||
2. TeamDelete 删除团队
|
||||
3. state_clear 清理状态
|
||||
4. 验证:tmux list-panes -a 确认无残留
|
||||
|
||||
## Working Memory
|
||||
<!-- Session notes. Auto-pruned after 7 days. -->
|
||||
### 2026-02-25 18:40
|
||||
OpenClaw Trading Agent Team任务完成总结:
|
||||
|
||||
📊 **任务完成状态**: 12/12 任务全部完成 (100%)
|
||||
|
||||
✅ 已完成任务:
|
||||
- TASK-004: LangGraph集成 (364行代码)
|
||||
- TASK-006: 高级因子实现 (492行代码)
|
||||
- TASK-007: 组合风险管理 (1302行代码)
|
||||
- TASK-010: 课程系统设计 (195行代码)
|
||||
- TASK-009: 课程实现
|
||||
- TASK-008: 学习管理系统 (397行代码)
|
||||
- TASK-003: 因子市场系统 (506行代码)
|
||||
- TASK-001: 实时告警系统
|
||||
- TASK-002: Web仪表板框架 (623行)
|
||||
- TASK-005: 前端可视化
|
||||
- TASK-011: API文档 (10+ rst文件)
|
||||
- TASK-012: 使用示例 (6个示例文件)
|
||||
|
||||
🚀 **项目总进度**: 44/44 任务 (100%)
|
||||
|
||||
所有设计文档中的任务已完成!
|
||||
|
||||
|
||||
## MANUAL
|
||||
<!-- User content. Never auto-pruned. -->
|
||||
|
||||
343
.omc/project-memory.json
Normal file
343
.omc/project-memory.json
Normal file
@ -0,0 +1,343 @@
|
||||
{
|
||||
"version": "1.0.0",
|
||||
"lastScanned": 1771990451836,
|
||||
"projectRoot": "/Users/cillin/workspeace/stock",
|
||||
"techStack": {
|
||||
"languages": [],
|
||||
"frameworks": [],
|
||||
"packageManager": null,
|
||||
"runtime": null
|
||||
},
|
||||
"build": {
|
||||
"buildCommand": null,
|
||||
"testCommand": null,
|
||||
"lintCommand": null,
|
||||
"devCommand": null,
|
||||
"scripts": {}
|
||||
},
|
||||
"conventions": {
|
||||
"namingStyle": null,
|
||||
"importStyle": null,
|
||||
"testPattern": null,
|
||||
"fileOrganization": null
|
||||
},
|
||||
"structure": {
|
||||
"isMonorepo": false,
|
||||
"workspaces": [],
|
||||
"mainDirectories": [],
|
||||
"gitBranches": null
|
||||
},
|
||||
"customNotes": [],
|
||||
"directoryMap": {
|
||||
"reference": {
|
||||
"path": "reference",
|
||||
"purpose": null,
|
||||
"fileCount": 1,
|
||||
"lastAccessed": 1771990451825,
|
||||
"keyFiles": []
|
||||
}
|
||||
},
|
||||
"hotPaths": [
|
||||
{
|
||||
"path": "reference/ClawWork",
|
||||
"accessCount": 5,
|
||||
"lastAccessed": 1771990637936,
|
||||
"type": "directory"
|
||||
},
|
||||
{
|
||||
"path": "reference/abu/readme.md",
|
||||
"accessCount": 2,
|
||||
"lastAccessed": 1771990636247,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/livebench/configs/default_config.json",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990616065,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/frontend/package.json",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990616068,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/requirements.txt",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990616412,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/livebench/agent/economic_tracker.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990622053,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/livebench/agent/live_agent.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990622085,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/src/analyzer.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990622414,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/src/storage.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990622421,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/main.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990622429,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/clawmode_integration/README.md",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990627830,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/livebench/api/server.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990627834,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/.env.example",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990628160,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/livebench/requirements.txt",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990632904,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/requirements.txt",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990632913,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/data_provider/base.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990633967,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/src/core/pipeline.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990633974,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/livebench/prompts/live_agent_prompt.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990637808,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/livebench/work/evaluator.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990637826,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/docs/full-guide.md",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990640409,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/abu/abupy/__init__.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990642960,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/abu/abupy/CoreBu/ABuEnv.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990643013,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/.env.example",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990643875,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/ClawWork/eval/meta_prompts/Software_Developers.json",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990644061,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/daily_stock_analysis/strategies/README.md",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990646245,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/abu/abupy/TradeBu/ABuCapital.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990649161,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/README.md",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990654974,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/pyproject.toml",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990654990,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/requirements.txt",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990655010,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/Lean/readme.md",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990658317,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/default_config.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990661860,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/Lean/Algorithm.Python/readme.md",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990664730,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/graph/trading_graph.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990668077,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/Lean/Algorithm.Framework/Alphas/EmaCrossAlphaModel.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990670651,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/Lean/Algorithm.Framework/Portfolio/EqualWeightingPortfolioConstructionModel.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990670672,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/Lean/Algorithm.Python/BasicTemplateAlgorithm.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990670705,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/main.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990674927,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/llm_clients/factory.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990674948,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/agents/analysts/market_analyst.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990674949,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/agents/researchers/bull_researcher.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990681547,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/dataflows/interface.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990681571,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/agents/managers/risk_manager.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990681577,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/Lean/CONTRIBUTING.md",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990682214,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/.env.example",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990687333,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/graph/setup.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990687354,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/cli/main.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990687473,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/Lean/Launcher/config.json",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990688226,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/dataflows/y_finance.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990694511,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/tradingagents/agents/utils/memory.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990694531,
|
||||
"type": "file"
|
||||
},
|
||||
{
|
||||
"path": "reference/TradingAgents/test.py",
|
||||
"accessCount": 1,
|
||||
"lastAccessed": 1771990700916,
|
||||
"type": "file"
|
||||
}
|
||||
],
|
||||
"userDirectives": []
|
||||
}
|
||||
8
.omc/sessions/05192f54-7724-4d00-a46b-eaf03040471d.json
Normal file
8
.omc/sessions/05192f54-7724-4d00-a46b-eaf03040471d.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "05192f54-7724-4d00-a46b-eaf03040471d",
|
||||
"ended_at": "2026-02-25T18:17:32.857Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/05913121-2d89-467c-b9e8-36b67a17c1d1.json
Normal file
8
.omc/sessions/05913121-2d89-467c-b9e8-36b67a17c1d1.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "05913121-2d89-467c-b9e8-36b67a17c1d1",
|
||||
"ended_at": "2026-02-25T17:26:02.467Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/0603f41c-c4bc-4e7c-924b-d92aebd31c5f.json
Normal file
8
.omc/sessions/0603f41c-c4bc-4e7c-924b-d92aebd31c5f.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "0603f41c-c4bc-4e7c-924b-d92aebd31c5f",
|
||||
"ended_at": "2026-02-25T08:23:25.933Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/0670bd45-ee51-406a-899a-5a8b6ac68e48.json
Normal file
8
.omc/sessions/0670bd45-ee51-406a-899a-5a8b6ac68e48.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "0670bd45-ee51-406a-899a-5a8b6ac68e48",
|
||||
"ended_at": "2026-02-25T08:09:08.548Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 5,
|
||||
"agents_completed": 4,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/06a151de-4ccf-40ca-bfad-8c728eb162f1.json
Normal file
8
.omc/sessions/06a151de-4ccf-40ca-bfad-8c728eb162f1.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "06a151de-4ccf-40ca-bfad-8c728eb162f1",
|
||||
"ended_at": "2026-02-25T14:09:17.168Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/08d2b89b-2fed-4a4e-83d5-06e4c6c3926c.json
Normal file
8
.omc/sessions/08d2b89b-2fed-4a4e-83d5-06e4c6c3926c.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "08d2b89b-2fed-4a4e-83d5-06e4c6c3926c",
|
||||
"ended_at": "2026-02-25T09:27:55.528Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/09f8b40c-827a-4869-8e57-2bc4ffc72185.json
Normal file
8
.omc/sessions/09f8b40c-827a-4869-8e57-2bc4ffc72185.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "09f8b40c-827a-4869-8e57-2bc4ffc72185",
|
||||
"ended_at": "2026-02-25T15:15:49.416Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/0c21d309-d9fa-466b-8971-9083ab2f515b.json
Normal file
8
.omc/sessions/0c21d309-d9fa-466b-8971-9083ab2f515b.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "0c21d309-d9fa-466b-8971-9083ab2f515b",
|
||||
"ended_at": "2026-02-25T14:09:27.208Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/104bcb91-4036-4902-bc09-c2491edc66b6.json
Normal file
8
.omc/sessions/104bcb91-4036-4902-bc09-c2491edc66b6.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "104bcb91-4036-4902-bc09-c2491edc66b6",
|
||||
"ended_at": "2026-02-25T08:20:54.144Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/10fe3193-c49c-4475-a3d5-af4f97782e5c.json
Normal file
8
.omc/sessions/10fe3193-c49c-4475-a3d5-af4f97782e5c.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "10fe3193-c49c-4475-a3d5-af4f97782e5c",
|
||||
"ended_at": "2026-02-25T10:43:53.902Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/19dc0825-67bc-4e3a-9309-34c52071117a.json
Normal file
8
.omc/sessions/19dc0825-67bc-4e3a-9309-34c52071117a.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "19dc0825-67bc-4e3a-9309-34c52071117a",
|
||||
"ended_at": "2026-02-25T12:45:43.398Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/1a725558-57fc-42a0-873a-63120464d409.json
Normal file
8
.omc/sessions/1a725558-57fc-42a0-873a-63120464d409.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "1a725558-57fc-42a0-873a-63120464d409",
|
||||
"ended_at": "2026-02-25T10:43:01.314Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/1bfff0bb-c3cd-4a5c-8b16-62db909031bc.json
Normal file
8
.omc/sessions/1bfff0bb-c3cd-4a5c-8b16-62db909031bc.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "1bfff0bb-c3cd-4a5c-8b16-62db909031bc",
|
||||
"ended_at": "2026-02-25T15:37:07.712Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/1c1593a0-c0d3-4000-ab98-adfd0e10e6d2.json
Normal file
8
.omc/sessions/1c1593a0-c0d3-4000-ab98-adfd0e10e6d2.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "1c1593a0-c0d3-4000-ab98-adfd0e10e6d2",
|
||||
"ended_at": "2026-02-25T17:32:18.519Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/22fe36ce-6bad-4dae-a4d2-9af1c666f157.json
Normal file
8
.omc/sessions/22fe36ce-6bad-4dae-a4d2-9af1c666f157.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "22fe36ce-6bad-4dae-a4d2-9af1c666f157",
|
||||
"ended_at": "2026-02-25T12:45:43.400Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/25e4b56d-a923-4bc3-aefa-13ea6676896a.json
Normal file
8
.omc/sessions/25e4b56d-a923-4bc3-aefa-13ea6676896a.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "25e4b56d-a923-4bc3-aefa-13ea6676896a",
|
||||
"ended_at": "2026-02-25T19:54:51.101Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/2a0aa409-e1c0-40b8-a315-45ae8d326d95.json
Normal file
8
.omc/sessions/2a0aa409-e1c0-40b8-a315-45ae8d326d95.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "2a0aa409-e1c0-40b8-a315-45ae8d326d95",
|
||||
"ended_at": "2026-02-25T09:06:47.842Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/2cb7ac6f-9d5f-4cf6-987c-e1cd8e1e942c.json
Normal file
8
.omc/sessions/2cb7ac6f-9d5f-4cf6-987c-e1cd8e1e942c.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "2cb7ac6f-9d5f-4cf6-987c-e1cd8e1e942c",
|
||||
"ended_at": "2026-02-25T18:13:51.086Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/31cfb3c4-01ea-491d-afa7-2d18970c9c62.json
Normal file
8
.omc/sessions/31cfb3c4-01ea-491d-afa7-2d18970c9c62.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "31cfb3c4-01ea-491d-afa7-2d18970c9c62",
|
||||
"ended_at": "2026-02-25T14:44:08.098Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/371e1d9a-fc18-47cd-a9e0-83a8ff69b21b.json
Normal file
8
.omc/sessions/371e1d9a-fc18-47cd-a9e0-83a8ff69b21b.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "371e1d9a-fc18-47cd-a9e0-83a8ff69b21b",
|
||||
"ended_at": "2026-02-25T15:15:23.926Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/3b414323-9c22-4ab3-996a-56da8accd2ae.json
Normal file
8
.omc/sessions/3b414323-9c22-4ab3-996a-56da8accd2ae.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "3b414323-9c22-4ab3-996a-56da8accd2ae",
|
||||
"ended_at": "2026-02-25T14:09:17.330Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/3cc28e17-e855-466f-981d-ad2655993201.json
Normal file
8
.omc/sessions/3cc28e17-e855-466f-981d-ad2655993201.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "3cc28e17-e855-466f-981d-ad2655993201",
|
||||
"ended_at": "2026-02-25T17:32:26.517Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/40fd7a56-d822-45c3-a148-62081a63059d.json
Normal file
8
.omc/sessions/40fd7a56-d822-45c3-a148-62081a63059d.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "40fd7a56-d822-45c3-a148-62081a63059d",
|
||||
"ended_at": "2026-02-25T19:07:40.212Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/4c6efa1a-fab3-4f3d-8c88-4300385e321a.json
Normal file
8
.omc/sessions/4c6efa1a-fab3-4f3d-8c88-4300385e321a.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "4c6efa1a-fab3-4f3d-8c88-4300385e321a",
|
||||
"ended_at": "2026-02-25T10:43:36.313Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/4da6de5e-b68d-438b-a9ef-2f3d5f360477.json
Normal file
8
.omc/sessions/4da6de5e-b68d-438b-a9ef-2f3d5f360477.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "4da6de5e-b68d-438b-a9ef-2f3d5f360477",
|
||||
"ended_at": "2026-02-25T15:37:10.425Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/545f5cea-e720-4ebd-8094-ab8629b7c9b2.json
Normal file
8
.omc/sessions/545f5cea-e720-4ebd-8094-ab8629b7c9b2.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "545f5cea-e720-4ebd-8094-ab8629b7c9b2",
|
||||
"ended_at": "2026-02-25T17:32:31.394Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/5af44d2f-369c-4ee4-93df-e96fb7148336.json
Normal file
8
.omc/sessions/5af44d2f-369c-4ee4-93df-e96fb7148336.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "5af44d2f-369c-4ee4-93df-e96fb7148336",
|
||||
"ended_at": "2026-02-25T19:54:51.109Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/5c27e522-a3e9-4968-b811-376c20e9d442.json
Normal file
8
.omc/sessions/5c27e522-a3e9-4968-b811-376c20e9d442.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "5c27e522-a3e9-4968-b811-376c20e9d442",
|
||||
"ended_at": "2026-02-25T15:15:34.477Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/5d16184d-1078-44e0-bf74-ddcac7c9a626.json
Normal file
8
.omc/sessions/5d16184d-1078-44e0-bf74-ddcac7c9a626.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "5d16184d-1078-44e0-bf74-ddcac7c9a626",
|
||||
"ended_at": "2026-02-25T08:21:02.404Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/770cf829-e456-40e3-81c8-da0cb661f07d.json
Normal file
8
.omc/sessions/770cf829-e456-40e3-81c8-da0cb661f07d.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "770cf829-e456-40e3-81c8-da0cb661f07d",
|
||||
"ended_at": "2026-02-25T17:32:00.201Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/7e4b19d0-8ccf-47ef-bd5e-1d7c81e4e9e6.json
Normal file
8
.omc/sessions/7e4b19d0-8ccf-47ef-bd5e-1d7c81e4e9e6.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "7e4b19d0-8ccf-47ef-bd5e-1d7c81e4e9e6",
|
||||
"ended_at": "2026-02-25T09:06:49.858Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/7ef15247-d692-428e-bf6e-e8ea26081506.json
Normal file
8
.omc/sessions/7ef15247-d692-428e-bf6e-e8ea26081506.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "7ef15247-d692-428e-bf6e-e8ea26081506",
|
||||
"ended_at": "2026-02-25T15:15:43.375Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/80211312-f098-4748-b130-76e4865f9027.json
Normal file
8
.omc/sessions/80211312-f098-4748-b130-76e4865f9027.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "80211312-f098-4748-b130-76e4865f9027",
|
||||
"ended_at": "2026-02-25T15:15:09.485Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/84f1817c-7aa6-4fad-97d0-ed6a153e5088.json
Normal file
8
.omc/sessions/84f1817c-7aa6-4fad-97d0-ed6a153e5088.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "84f1817c-7aa6-4fad-97d0-ed6a153e5088",
|
||||
"ended_at": "2026-02-25T12:45:43.620Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/85a25dae-00fc-4f91-baf0-85bd2724073f.json
Normal file
8
.omc/sessions/85a25dae-00fc-4f91-baf0-85bd2724073f.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "85a25dae-00fc-4f91-baf0-85bd2724073f",
|
||||
"ended_at": "2026-02-25T08:11:54.255Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/8e07bda7-4d8d-44af-91ba-44f23517b7eb.json
Normal file
8
.omc/sessions/8e07bda7-4d8d-44af-91ba-44f23517b7eb.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "8e07bda7-4d8d-44af-91ba-44f23517b7eb",
|
||||
"ended_at": "2026-02-25T08:53:30.203Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/8e0f3f3f-fb1d-4379-8914-637a5f634dcd.json
Normal file
8
.omc/sessions/8e0f3f3f-fb1d-4379-8914-637a5f634dcd.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "8e0f3f3f-fb1d-4379-8914-637a5f634dcd",
|
||||
"ended_at": "2026-02-25T15:38:26.103Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/8f86ea46-b4a4-4ce8-8fc7-013ae015beb4.json
Normal file
8
.omc/sessions/8f86ea46-b4a4-4ce8-8fc7-013ae015beb4.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "8f86ea46-b4a4-4ce8-8fc7-013ae015beb4",
|
||||
"ended_at": "2026-02-25T08:37:21.516Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/8f8bcdd5-6fe6-4fc2-b13a-21f841cf9320.json
Normal file
8
.omc/sessions/8f8bcdd5-6fe6-4fc2-b13a-21f841cf9320.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "8f8bcdd5-6fe6-4fc2-b13a-21f841cf9320",
|
||||
"ended_at": "2026-02-25T10:42:59.786Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/95f4e0b3-b75c-4865-b11b-b8c32dfb3492.json
Normal file
8
.omc/sessions/95f4e0b3-b75c-4865-b11b-b8c32dfb3492.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "95f4e0b3-b75c-4865-b11b-b8c32dfb3492",
|
||||
"ended_at": "2026-02-25T09:06:51.574Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/96a19f3d-2926-4cb9-8782-fde34c203b29.json
Normal file
8
.omc/sessions/96a19f3d-2926-4cb9-8782-fde34c203b29.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "96a19f3d-2926-4cb9-8782-fde34c203b29",
|
||||
"ended_at": "2026-02-25T15:38:26.126Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/96f287e6-91b8-449c-afe4-04fa7a96e2ff.json
Normal file
8
.omc/sessions/96f287e6-91b8-449c-afe4-04fa7a96e2ff.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "96f287e6-91b8-449c-afe4-04fa7a96e2ff",
|
||||
"ended_at": "2026-02-25T12:45:42.901Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 1,
|
||||
"agents_completed": 1,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/97741044-d11f-41b0-8e48-a05f0e68c2d8.json
Normal file
8
.omc/sessions/97741044-d11f-41b0-8e48-a05f0e68c2d8.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "97741044-d11f-41b0-8e48-a05f0e68c2d8",
|
||||
"ended_at": "2026-02-25T08:27:05.865Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 2,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/999f1164-b7ed-4ade-9a66-c133e2e7bd66.json
Normal file
8
.omc/sessions/999f1164-b7ed-4ade-9a66-c133e2e7bd66.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "999f1164-b7ed-4ade-9a66-c133e2e7bd66",
|
||||
"ended_at": "2026-02-25T14:44:22.190Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/9f94b1db-93fb-4378-ac8b-7712e72f3727.json
Normal file
8
.omc/sessions/9f94b1db-93fb-4378-ac8b-7712e72f3727.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "9f94b1db-93fb-4378-ac8b-7712e72f3727",
|
||||
"ended_at": "2026-02-25T17:32:41.721Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/a024701f-f8d9-4f68-8b38-7915d567608c.json
Normal file
8
.omc/sessions/a024701f-f8d9-4f68-8b38-7915d567608c.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "a024701f-f8d9-4f68-8b38-7915d567608c",
|
||||
"ended_at": "2026-02-25T12:45:43.278Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/a0a03cd2-841e-4079-a95b-aeec0bf41f49.json
Normal file
8
.omc/sessions/a0a03cd2-841e-4079-a95b-aeec0bf41f49.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "a0a03cd2-841e-4079-a95b-aeec0bf41f49",
|
||||
"ended_at": "2026-02-25T17:27:03.577Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/a12fe50d-fee7-4353-9b4e-539e75ee295b.json
Normal file
8
.omc/sessions/a12fe50d-fee7-4353-9b4e-539e75ee295b.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "a12fe50d-fee7-4353-9b4e-539e75ee295b",
|
||||
"ended_at": "2026-02-25T19:07:25.557Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/a16372f0-26e9-4c4e-b191-24eb2f88f9af.json
Normal file
8
.omc/sessions/a16372f0-26e9-4c4e-b191-24eb2f88f9af.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "a16372f0-26e9-4c4e-b191-24eb2f88f9af",
|
||||
"ended_at": "2026-02-25T10:44:03.373Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/a45b97a8-963a-4670-9d44-8d6812b5371c.json
Normal file
8
.omc/sessions/a45b97a8-963a-4670-9d44-8d6812b5371c.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "a45b97a8-963a-4670-9d44-8d6812b5371c",
|
||||
"ended_at": "2026-02-25T18:57:51.661Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/a6a95131-85f4-4b24-a648-cc7adeda77e1.json
Normal file
8
.omc/sessions/a6a95131-85f4-4b24-a648-cc7adeda77e1.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "a6a95131-85f4-4b24-a648-cc7adeda77e1",
|
||||
"ended_at": "2026-02-25T08:18:29.268Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/bb522266-0dcb-410b-a11a-e9c93a52a8a5.json
Normal file
8
.omc/sessions/bb522266-0dcb-410b-a11a-e9c93a52a8a5.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "bb522266-0dcb-410b-a11a-e9c93a52a8a5",
|
||||
"ended_at": "2026-02-25T14:09:03.597Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/c09a7482-04ff-4467-912d-6ff8c713e7ce.json
Normal file
8
.omc/sessions/c09a7482-04ff-4467-912d-6ff8c713e7ce.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "c09a7482-04ff-4467-912d-6ff8c713e7ce",
|
||||
"ended_at": "2026-02-25T13:09:41.236Z",
|
||||
"reason": "prompt_input_exit",
|
||||
"agents_spawned": 2,
|
||||
"agents_completed": 2,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/c22d7c1d-f21d-43ce-af44-6c47c8412a14.json
Normal file
8
.omc/sessions/c22d7c1d-f21d-43ce-af44-6c47c8412a14.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "c22d7c1d-f21d-43ce-af44-6c47c8412a14",
|
||||
"ended_at": "2026-02-25T15:37:26.971Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/c257e2ec-d375-4f8d-89f3-2b461e7860d7.json
Normal file
8
.omc/sessions/c257e2ec-d375-4f8d-89f3-2b461e7860d7.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "c257e2ec-d375-4f8d-89f3-2b461e7860d7",
|
||||
"ended_at": "2026-02-25T09:33:07.170Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/caaafcaf-62e3-45e3-9045-4e343fac987b.json
Normal file
8
.omc/sessions/caaafcaf-62e3-45e3-9045-4e343fac987b.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "caaafcaf-62e3-45e3-9045-4e343fac987b",
|
||||
"ended_at": "2026-02-25T14:09:10.995Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/ce40ca52-5823-49b6-bb50-9bbdb12cdc44.json
Normal file
8
.omc/sessions/ce40ca52-5823-49b6-bb50-9bbdb12cdc44.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "ce40ca52-5823-49b6-bb50-9bbdb12cdc44",
|
||||
"ended_at": "2026-02-25T18:13:30.739Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 1,
|
||||
"agents_completed": 1,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/da7967d3-fbe4-46e5-aedc-368e00024fe5.json
Normal file
8
.omc/sessions/da7967d3-fbe4-46e5-aedc-368e00024fe5.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "da7967d3-fbe4-46e5-aedc-368e00024fe5",
|
||||
"ended_at": "2026-02-25T12:45:42.901Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 1,
|
||||
"agents_completed": 1,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/e3a80d6f-1f05-47b7-9aa2-7c3818c09b5f.json
Normal file
8
.omc/sessions/e3a80d6f-1f05-47b7-9aa2-7c3818c09b5f.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "e3a80d6f-1f05-47b7-9aa2-7c3818c09b5f",
|
||||
"ended_at": "2026-02-25T19:54:51.037Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/ec6c0223-f864-4f36-a90d-e3321b03ec50.json
Normal file
8
.omc/sessions/ec6c0223-f864-4f36-a90d-e3321b03ec50.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "ec6c0223-f864-4f36-a90d-e3321b03ec50",
|
||||
"ended_at": "2026-02-25T19:54:51.072Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/ecfa6f49-a026-4449-9f72-da7c636a317e.json
Normal file
8
.omc/sessions/ecfa6f49-a026-4449-9f72-da7c636a317e.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "ecfa6f49-a026-4449-9f72-da7c636a317e",
|
||||
"ended_at": "2026-02-25T09:28:03.155Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/f0065aa7-679c-4bc3-8b95-e659f02b2bac.json
Normal file
8
.omc/sessions/f0065aa7-679c-4bc3-8b95-e659f02b2bac.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "f0065aa7-679c-4bc3-8b95-e659f02b2bac",
|
||||
"ended_at": "2026-02-25T19:54:51.091Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/f0dae58f-70a9-4a8a-8003-32483dad57c0.json
Normal file
8
.omc/sessions/f0dae58f-70a9-4a8a-8003-32483dad57c0.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "f0dae58f-70a9-4a8a-8003-32483dad57c0",
|
||||
"ended_at": "2026-02-25T09:36:14.043Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/fba466d4-dce1-4f64-bb4b-49645c133f9d.json
Normal file
8
.omc/sessions/fba466d4-dce1-4f64-bb4b-49645c133f9d.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "fba466d4-dce1-4f64-bb4b-49645c133f9d",
|
||||
"ended_at": "2026-02-25T08:20:41.059Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
8
.omc/sessions/fc939a43-2bec-4f86-9d4a-62761f32157a.json
Normal file
8
.omc/sessions/fc939a43-2bec-4f86-9d4a-62761f32157a.json
Normal file
@ -0,0 +1,8 @@
|
||||
{
|
||||
"session_id": "fc939a43-2bec-4f86-9d4a-62761f32157a",
|
||||
"ended_at": "2026-02-25T19:07:25.674Z",
|
||||
"reason": "other",
|
||||
"agents_spawned": 0,
|
||||
"agents_completed": 0,
|
||||
"modes_used": []
|
||||
}
|
||||
@ -0,0 +1,9 @@
|
||||
{"t":0,"agent":"abdef9b","agent_type":"explore","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"a6b4957","agent_type":"explore","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"a4b898d","agent_type":"explore","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"a623ba1","agent_type":"explore","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"aa80e99","agent_type":"explore","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"a4b898d","agent_type":"explore","event":"agent_stop","success":true,"duration_ms":3487015}
|
||||
{"t":0,"agent":"a6b4957","agent_type":"explore","event":"agent_stop","success":true,"duration_ms":3528895}
|
||||
{"t":0,"agent":"abdef9b","agent_type":"explore","event":"agent_stop","success":true,"duration_ms":3543462}
|
||||
{"t":0,"agent":"a623ba1","agent_type":"explore","event":"agent_stop","success":true,"duration_ms":3568346}
|
||||
@ -0,0 +1,5 @@
|
||||
{"t":0,"agent":"a4ede25","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"a79cc2f","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
@ -0,0 +1,3 @@
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
@ -0,0 +1,3 @@
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
@ -0,0 +1,3 @@
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"afd84de","agent_type":"executor","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"af0acb3","agent_type":"executor","event":"agent_start","parent_mode":"none"}
|
||||
@ -0,0 +1,21 @@
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"a777577","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a312ba6","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"aec9f8e","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"ab063dd","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a02da93","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"ac20327","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a45d246","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a0eecfb","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a350f2d","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a21898f","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a48f54c","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a02d8d6","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a379656","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a8c9df2","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a18bd0e","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"aeffb0c","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"ad43179","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a5c7ecd","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
@ -0,0 +1 @@
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
@ -0,0 +1,36 @@
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"af29e85","agent_type":"explore","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"af29e85","agent_type":"explore","event":"agent_stop","success":true,"duration_ms":39733}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"a5d408b","agent_type":"general-purpose","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"a5d408b","agent_type":"general-purpose","event":"agent_stop","success":true,"duration_ms":73874}
|
||||
{"t":0,"agent":"a47d7de","agent_type":"general-purpose","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"team"}
|
||||
{"t":0,"agent":"a47d7de","agent_type":"general-purpose","event":"agent_stop","success":true,"duration_ms":155807}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
@ -0,0 +1,25 @@
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"adf66ce","agent_type":"explore","event":"agent_start","parent_mode":"none"}
|
||||
{"t":0,"agent":"adf66ce","agent_type":"explore","event":"agent_stop","success":true,"duration_ms":44687}
|
||||
{"t":0,"agent":"a94f495","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"aae02fa","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a8903b4","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"af891dc","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a3dbe0f","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a887824","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"ad2c2c9","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:cancel"}
|
||||
{"t":0,"agent":"a627312","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"a6cd894","agent_type":"unknown","event":"agent_stop","success":true}
|
||||
{"t":0,"agent":"system","event":"keyword_detected","keyword":"team"}
|
||||
{"t":0,"agent":"system","event":"mode_change","mode_from":"none","mode_to":"team"}
|
||||
{"t":0,"agent":"system","event":"skill_invoked","skill_name":"oh-my-claudecode:team"}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T09:04:03.601Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T09:38:06.069Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T10:22:53.374Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T10:47:59.114Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T11:29:09.289Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T12:06:28.904Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T12:59:09.801Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T13:37:47.291Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T14:41:18.239Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T16:26:42.952Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
@ -0,0 +1,16 @@
|
||||
{
|
||||
"created_at": "2026-02-25T19:04:19.560Z",
|
||||
"trigger": "auto",
|
||||
"active_modes": {},
|
||||
"todo_summary": {
|
||||
"pending": 0,
|
||||
"in_progress": 0,
|
||||
"completed": 0
|
||||
},
|
||||
"wisdom_exported": false,
|
||||
"background_jobs": {
|
||||
"active": [],
|
||||
"recent": [],
|
||||
"stats": null
|
||||
}
|
||||
}
|
||||
6
.omc/state/hud-state.json
Normal file
6
.omc/state/hud-state.json
Normal file
@ -0,0 +1,6 @@
|
||||
{
|
||||
"timestamp": "2026-02-25T19:16:13.280Z",
|
||||
"backgroundTasks": [],
|
||||
"sessionStartTimestamp": "2026-02-25T19:07:38.508Z",
|
||||
"sessionId": "ec6c0223-f864-4f36-a90d-e3321b03ec50"
|
||||
}
|
||||
1
.omc/state/hud-stdin-cache.json
Normal file
1
.omc/state/hud-stdin-cache.json
Normal file
@ -0,0 +1 @@
|
||||
{"session_id":"ec6c0223-f864-4f36-a90d-e3321b03ec50","transcript_path":"/Users/cillin/.claude/projects/-Users-cillin-code-stock/ec6c0223-f864-4f36-a90d-e3321b03ec50.jsonl","cwd":"/Users/cillin/code/stock","model":{"id":"claude-sonnet-4-6","display_name":"Sonnet 4.6"},"workspace":{"current_dir":"/Users/cillin/code/stock","project_dir":"/Users/cillin/code/stock","added_dirs":[]},"version":"2.1.56","output_style":{"name":"default"},"cost":{"total_cost_usd":16.759199599999977,"total_duration_ms":6232880,"total_api_duration_ms":1485786,"total_lines_added":5,"total_lines_removed":4},"context_window":{"total_input_tokens":1051032,"total_output_tokens":39223,"context_window_size":200000,"current_usage":{"input_tokens":207,"output_tokens":41,"cache_creation_input_tokens":0,"cache_read_input_tokens":89344},"used_percentage":45,"remaining_percentage":55},"exceeds_200k_tokens":false}
|
||||
3
.omc/state/idle-notif-cooldown.json
Normal file
3
.omc/state/idle-notif-cooldown.json
Normal file
@ -0,0 +1,3 @@
|
||||
{
|
||||
"lastSentAt": "2026-02-25T19:15:47.299Z"
|
||||
}
|
||||
7
.omc/state/last-tool-error.json
Normal file
7
.omc/state/last-tool-error.json
Normal file
@ -0,0 +1,7 @@
|
||||
{
|
||||
"tool_name": "Read",
|
||||
"tool_input_preview": "{\"file_path\":\"/Users/cillin/.claude/projects/-Users-cillin-code-stock/f0065aa7-679c-4bc3-8b95-e659f02b2bac/tool-results/tool_SlZnfRr79tivb5lsM4oXYgbT.txt\",\"offset\":1,\"limit\":500}",
|
||||
"error": "File does not exist. Note: your current working directory is /Users/cillin/code/stock.",
|
||||
"timestamp": "2026-02-25T19:11:55.168Z",
|
||||
"retry_count": 1
|
||||
}
|
||||
@ -0,0 +1,8 @@
|
||||
{
|
||||
"active": true,
|
||||
"started_at": "2026-02-25T19:11:03.049Z",
|
||||
"original_prompt": "创建agent team 将页面汉化",
|
||||
"session_id": "ec6c0223-f864-4f36-a90d-e3321b03ec50",
|
||||
"reinforcement_count": 0,
|
||||
"last_checked_at": "2026-02-25T19:11:03.050Z"
|
||||
}
|
||||
358
PROJECT_OVERVIEW.md
Normal file
358
PROJECT_OVERVIEW.md
Normal file
@ -0,0 +1,358 @@
|
||||
# OpenClaw Trading - 项目说明文档
|
||||
|
||||
**项目名称**: OpenClaw Trading
|
||||
**项目路径**: `~/code/stock`
|
||||
**当前状态**: Phase 4 生产就绪阶段 ✅
|
||||
**最后更新**: 2026-02-25
|
||||
|
||||
---
|
||||
|
||||
## 📋 项目概述
|
||||
|
||||
OpenClaw Trading 是一个**AI驱动的多智能体量化交易系统**,核心创新点是将**ClawWork的生存压力机制**引入到交易Agent中——每个Agent必须为自己的决策付费,做不好就会"破产"被淘汰。
|
||||
|
||||
### 核心设计理念
|
||||
|
||||
| 来源 | 借鉴内容 | 本项目实现 |
|
||||
|------|---------|-----------|
|
||||
| **ClawWork** | 生存压力机制、经济追踪 | Agent必须付费做决策,经济状态影响交易权限 |
|
||||
| **TradingAgents** | 多智能体协作架构 | 分析师→研究员→风险管理→交易员的分工协作 |
|
||||
| **abu量化** | 因子系统、UMP风险拦截 | 可购买解锁的交易因子、动态风险限制 |
|
||||
|
||||
---
|
||||
|
||||
## 🏗️ 系统架构
|
||||
|
||||
```
|
||||
┌─────────────────────────────────────────────────────────────────┐
|
||||
│ OpenClaw Trading │
|
||||
│ 生存压力驱动的量化系统 │
|
||||
├─────────────────────────────────────────────────────────────────┤
|
||||
│ │
|
||||
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
||||
│ │ 资金层 │◄──►│ Agent 层 │◄──►│ 市场层 │ │
|
||||
│ │ Capital │ │ Multi-Agent │ │ Market │ │
|
||||
│ └──────────────┘ └──────────────┘ └──────────────┘ │
|
||||
│ │ │ │ │
|
||||
│ ▼ ▼ ▼ │
|
||||
│ ┌──────────────────────────────────────────────────────┐ │
|
||||
│ │ 生存压力引擎 │ │
|
||||
│ │ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │
|
||||
│ │ │ 成本计算 │ │ 收益评估 │ │ 生存状态管理 │ │ │
|
||||
│ │ │ Cost │ │ Reward │ │ Life State │ │ │
|
||||
│ │ └──────────┘ └──────────┘ └──────────────────┘ │ │
|
||||
│ └──────────────────────────────────────────────────────┘ │
|
||||
│ │
|
||||
└─────────────────────────────────────────────────────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 👥 Agent角色体系
|
||||
|
||||
系统包含7个专业Agent,每个Agent有自己的资金账户和生存压力:
|
||||
|
||||
### 分析师团队(低成本)
|
||||
|
||||
| Agent | 职责 | 决策成本 | 启动资金 |
|
||||
|-------|------|---------|---------|
|
||||
| **MarketAnalyst** | 技术分析(MA、RSI、MACD、BOLL) | $0.05 | $1,000 |
|
||||
| **SentimentAnalyst** | 市场情绪分析(新闻/情绪) | $0.08 | $1,000 |
|
||||
| **FundamentalAnalyst** | 基本面分析(PE、PB、ROE) | $0.10 | $1,000 |
|
||||
|
||||
### 研究员团队(中等成本)
|
||||
|
||||
| Agent | 职责 | 决策成本 | 启动资金 |
|
||||
|-------|------|---------|---------|
|
||||
| **BullResearcher** | 多头观点研究、反驳看空观点 | $0.15 | $2,000 |
|
||||
| **BearResearcher** | 空头观点研究、反驳看多观点 | $0.15 | $2,000 |
|
||||
|
||||
### 决策执行团队(高成本)
|
||||
|
||||
| Agent | 职责 | 决策成本 | 启动资金 |
|
||||
|-------|------|---------|---------|
|
||||
| **RiskManager** | 风险评估、VaR计算、风险拦截 | $0.20 | $3,000 |
|
||||
| **Trader** | 最终交易执行 | $0.30 | $10,000 |
|
||||
|
||||
---
|
||||
|
||||
## 💰 经济压力机制
|
||||
|
||||
### 生存状态分级
|
||||
|
||||
```
|
||||
🚀 thriving (繁荣) - 资金 ≥ 150% 初始资金 - 可扩张交易规模
|
||||
💪 stable (稳定) - 资金 ≥ 110% 初始资金 - 正常交易
|
||||
⚠️ struggling (挣扎) - 资金 ≥ 80% 初始资金 - 只能做小单
|
||||
🔴 critical (危急) - 资金 ≥ 30% 初始资金 - 只能模拟交易
|
||||
💀 bankrupt (破产) - 资金 < 30% 初始资金 - 被淘汰
|
||||
```
|
||||
|
||||
### 成本结构
|
||||
|
||||
- **LLM成本**: 输入 $2.5/百万tokens,输出 $10/百万tokens
|
||||
- **数据成本**: 每次市场数据调用 $0.01
|
||||
- **交易手续费**: 0.1%
|
||||
|
||||
### 工作-学习权衡
|
||||
|
||||
Agent根据经济状况决定是**立即交易赚钱**还是**投资学习提升能力**:
|
||||
|
||||
```
|
||||
破产(bankrupt) → 清仓停止
|
||||
危急(critical) → 模拟交易为主,学习为辅
|
||||
挣扎(struggling) → 选择性交易,胜率低时学习
|
||||
稳定(stable) → 正常交易 + 适度学习
|
||||
繁荣(thriving) → 可承担更多风险,大量投资学习
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📊 核心工作流程
|
||||
|
||||
```
|
||||
市场分析 → 情绪分析 → 基本面分析
|
||||
↓
|
||||
┌──────────────────┐
|
||||
│ 研究员辩论 │
|
||||
│ Bull vs Bear │
|
||||
└────────┬─────────┘
|
||||
↓
|
||||
┌──────────────────┐
|
||||
│ 决策融合 │
|
||||
│ DecisionFusion │
|
||||
└────────┬─────────┘
|
||||
↓
|
||||
┌──────────────────┐
|
||||
│ 风险评估 │
|
||||
│ RiskManager │
|
||||
└────────┬─────────┘
|
||||
↓
|
||||
┌──────────────────┐
|
||||
│ 交易执行 │
|
||||
│ Trader │
|
||||
└──────────────────┘
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ 技术栈
|
||||
|
||||
### 核心依赖
|
||||
- **Python**: 3.10+
|
||||
- **Pydantic**: 数据验证
|
||||
- **Rich**: 终端美化
|
||||
- **Typer**: CLI框架
|
||||
- **LangGraph**: 工作流编排
|
||||
- **Pandas/NumPy**: 数据处理
|
||||
- **yfinance**: 市场数据
|
||||
|
||||
### 开发工具
|
||||
- **pytest**: 测试框架 (1102+ 测试用例)
|
||||
- **ruff**: 代码格式化
|
||||
- **black**: 代码风格
|
||||
- **mypy**: 类型检查
|
||||
|
||||
---
|
||||
|
||||
## 📁 项目结构
|
||||
|
||||
```
|
||||
~/code/stock/
|
||||
├── config/
|
||||
│ └── default.yaml # 默认配置文件
|
||||
├── design/
|
||||
│ ├── README.md # 系统设计文档
|
||||
│ └── TASKS.md # 任务拆分文档
|
||||
├── docs/ # 文档
|
||||
├── examples/ # 使用示例
|
||||
├── logs/ # 日志文件
|
||||
├── notebooks/ # Jupyter Notebook
|
||||
├── reference/ # 参考项目
|
||||
├── report/ # 调研报告
|
||||
├── src/openclaw/ # 核心源码
|
||||
│ ├── agents/ # Agent角色
|
||||
│ ├── backtest/ # 回测系统
|
||||
│ ├── cli/ # 命令行界面
|
||||
│ ├── core/ # 核心(经济、成本、配置)
|
||||
│ ├── debate/ # 辩论框架
|
||||
│ ├── exchange/ # 交易所接口
|
||||
│ ├── fusion/ # 决策融合
|
||||
│ ├── indicators/ # 技术指标
|
||||
│ ├── learning/ # 学习投资
|
||||
│ ├── memory/ # BM25记忆系统
|
||||
│ ├── monitoring/ # 系统监控
|
||||
│ ├── optimizer/ # 策略优化器
|
||||
│ └── trading/ # 实盘交易
|
||||
├── tests/
|
||||
│ ├── unit/ # 单元测试 (259 tests)
|
||||
│ └── integration/ # 集成测试 (43 tests)
|
||||
├── demo_phase2.py # Phase 2 演示
|
||||
├── demo_phase3.py # Phase 3 演示
|
||||
├── demo_phase4.py # Phase 4 演示
|
||||
├── demo_phase5.py # Phase 5 演示
|
||||
└── pyproject.toml # 项目配置
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 🎯 开发进度
|
||||
|
||||
### Phase 1: 基础框架 ✅ (已完成)
|
||||
- ✅ 项目脚手架搭建
|
||||
- ✅ 配置管理系统
|
||||
- ✅ 日志系统
|
||||
- ✅ EconomicTracker 经济追踪器
|
||||
- ✅ BaseAgent 抽象基类
|
||||
- ✅ 技术指标库
|
||||
- ✅ 基础CLI界面
|
||||
|
||||
### Phase 2: 多Agent协作 ✅ (92% 完成)
|
||||
- ✅ 6个Agent角色实现(Market/Sentiment/Fundamental/Bull/Bear/Risk)
|
||||
- ✅ 辩论框架(Bull vs Bear)
|
||||
- ✅ 决策融合(DecisionFusion)
|
||||
- ⏳ LangGraph工作流编排
|
||||
- ⏳ TraderAgent最终交易执行
|
||||
|
||||
### Phase 3: 高级功能 🔄 (25% 完成)
|
||||
- ✅ 策略框架基类
|
||||
- ✅ 策略组合管理
|
||||
- ✅ 策略回测对比
|
||||
- ✅ Agent学习记忆(BM25)
|
||||
- ✅ 策略优化器(网格/随机/贝叶斯)
|
||||
- ✅ 进化算法集成
|
||||
- ⏳ 因子市场系统
|
||||
- ⏳ 学习投资系统
|
||||
|
||||
### Phase 4: 生产就绪 ✅ (已完成)
|
||||
- ✅ 回测引擎(BacktestEngine)
|
||||
- ✅ 回测分析器(PerformanceAnalyzer)
|
||||
- ✅ 交易所接口(Binance/Mock)
|
||||
- ✅ 实盘模式管理(LiveModeManager)
|
||||
- ✅ 系统监控(StatusMonitor, MetricsCollector)
|
||||
- ✅ CLI完整命令(init/run/status/config)
|
||||
|
||||
---
|
||||
|
||||
## 🧪 测试状态
|
||||
|
||||
| 类别 | 测试数 | 状态 |
|
||||
|------|--------|------|
|
||||
| 单元测试 | 259+ | ✅ 全部通过 |
|
||||
| 集成测试 | 43+ | ✅ 全部通过 |
|
||||
| **总计** | **1102+** | **✅ 全部通过** |
|
||||
|
||||
---
|
||||
|
||||
## 🚀 快速开始
|
||||
|
||||
### 安装依赖
|
||||
```bash
|
||||
cd ~/code/stock
|
||||
pip install -e ".[dev]"
|
||||
```
|
||||
|
||||
### 运行演示
|
||||
```bash
|
||||
# Phase 2: 多Agent协作演示
|
||||
python demo_phase2.py
|
||||
|
||||
# Phase 3: 策略与学习系统演示
|
||||
python demo_phase3.py
|
||||
|
||||
# Phase 4: 优化与进化算法演示
|
||||
python demo_phase4.py
|
||||
|
||||
# Phase 5: 生产就绪功能演示
|
||||
python demo_phase5.py
|
||||
|
||||
# LangGraph工作流演示
|
||||
python demo_langgraph_workflow.py
|
||||
```
|
||||
|
||||
### CLI命令
|
||||
```bash
|
||||
# 查看帮助
|
||||
openclaw --help
|
||||
|
||||
# 初始化配置
|
||||
openclaw init
|
||||
|
||||
# 运行交易系统
|
||||
openclaw run
|
||||
|
||||
# 查看系统状态
|
||||
openclaw status
|
||||
|
||||
# 配置管理
|
||||
openclaw config
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📈 核心特性
|
||||
|
||||
### 已实现
|
||||
- ✅ **多Agent协作**: 7个专业Agent分工协作
|
||||
- ✅ **生存压力**: 经济机制驱动Agent行为
|
||||
- ✅ **辩论机制**: Bull vs Bear 观点辩论
|
||||
- ✅ **BM25记忆**: 离线记忆系统,持续学习
|
||||
- ✅ **策略优化**: 网格搜索/随机搜索/贝叶斯优化
|
||||
- ✅ **进化算法**: 遗传算法 + NSGA-II 多目标优化
|
||||
- ✅ **回测系统**: 事件驱动回测引擎
|
||||
- ✅ **交易所接口**: Binance/Mock 交易所适配
|
||||
- ✅ **系统监控**: 实时监控和指标收集
|
||||
|
||||
### 待实现
|
||||
- ⏳ **因子市场**: 可购买解锁的交易因子
|
||||
- ⏳ **学习投资**: Agent可投资学习提升技能
|
||||
- ⏳ **Web仪表板**: 实时可视化监控
|
||||
- ⏳ **实盘模式**: 真实资金交易对接
|
||||
|
||||
---
|
||||
|
||||
## 📚 文档资源
|
||||
|
||||
| 文档 | 路径 | 说明 |
|
||||
|------|------|------|
|
||||
| 系统设计 | `design/README.md` | 完整架构设计 |
|
||||
| 任务拆分 | `design/TASKS.md` | 44个任务详细说明 |
|
||||
| abu调研 | `report/abu_report.md` | 阿布量化系统分析 |
|
||||
| TradingAgents | `report/TradingAgents_report.md` | 多智能体框架分析 |
|
||||
| ClawWork | `report/ClawWork_report.md` | 生存压力机制分析 |
|
||||
|
||||
---
|
||||
|
||||
## 💡 关键设计亮点
|
||||
|
||||
1. **真实的经济压力**: Agent每次决策都要花钱,做不好会破产
|
||||
2. **有机的团队协作**: 分析师→研究员→风险管理→交易员的流水线
|
||||
3. **持续学习进化**: BM25记忆 + 学习投资 + 进化算法优化
|
||||
4. **严格的风险控制**: 基于经济状态的动态风险限制
|
||||
5. **完整的回测体系**: 支持策略对比和参数优化
|
||||
|
||||
---
|
||||
|
||||
## 📊 代码统计
|
||||
|
||||
- **Python文件**: 64个
|
||||
- **测试文件**: 32个
|
||||
- **测试用例**: 1102+
|
||||
- **配置文件**: YAML + TOML
|
||||
- **示例代码**: 5个Phase演示
|
||||
|
||||
---
|
||||
|
||||
## 🔮 未来规划
|
||||
|
||||
1. **Phase 5**: Web仪表板 + 实盘对接 + 生产部署
|
||||
2. **因子市场**: 实现可购买的高级交易因子
|
||||
3. **学习系统**: 完成课程投资和能力提升
|
||||
4. **可视化**: 实时资金曲线和状态监控
|
||||
5. **开源**: 完善文档后开源发布
|
||||
|
||||
---
|
||||
|
||||
*文档版本: 1.0*
|
||||
*生成时间: 2026-02-26*
|
||||
*项目状态: Phase 4 生产就绪 ✅*
|
||||
37
config/default.yaml
Normal file
37
config/default.yaml
Normal file
@ -0,0 +1,37 @@
|
||||
# OpenClaw Trading System Configuration
|
||||
|
||||
# Initial capital allocation per agent type ($)
|
||||
initial_capital:
|
||||
trader: 10000.0
|
||||
analyst: 5000.0
|
||||
risk_manager: 5000.0
|
||||
|
||||
# Cost structure for simulation
|
||||
cost_structure:
|
||||
llm_input_per_1m: 2.5 # Cost per 1M input tokens ($)
|
||||
llm_output_per_1m: 10.0 # Cost per 1M output tokens ($)
|
||||
market_data_per_call: 0.01 # Cost per market data API call ($)
|
||||
trade_fee_rate: 0.001 # Trading fee rate (e.g., 0.001 = 0.1%)
|
||||
|
||||
# Portfolio health thresholds (multipliers of initial capital)
|
||||
survival_thresholds:
|
||||
thriving_multiplier: 3.0 # 3x = thriving
|
||||
stable_multiplier: 1.5 # 1.5x = stable
|
||||
struggling_multiplier: 0.8 # 0.8x = struggling
|
||||
bankrupt_multiplier: 0.1 # 0.1x = bankrupt
|
||||
|
||||
# LLM provider configurations
|
||||
llm_providers:
|
||||
openai:
|
||||
model: gpt-4o
|
||||
temperature: 0.7
|
||||
timeout: 30
|
||||
anthropic:
|
||||
model: claude-3-5-sonnet-20241022
|
||||
temperature: 0.7
|
||||
timeout: 30
|
||||
|
||||
# Simulation settings
|
||||
simulation_days: 30 # Trading days to simulate
|
||||
data_dir: data # Data storage directory
|
||||
log_level: INFO # DEBUG, INFO, WARNING, ERROR, CRITICAL
|
||||
204
demo_langgraph_workflow.py
Normal file
204
demo_langgraph_workflow.py
Normal file
@ -0,0 +1,204 @@
|
||||
"""Demo script for LangGraph-based trading workflow.
|
||||
|
||||
This script demonstrates how to use the LangGraph trading workflow
|
||||
to orchestrate multi-agent trading analysis.
|
||||
|
||||
Usage:
|
||||
python demo_langgraph_workflow.py [SYMBOL]
|
||||
|
||||
Example:
|
||||
python demo_langgraph_workflow.py AAPL
|
||||
python demo_langgraph_workflow.py TSLA
|
||||
"""
|
||||
|
||||
import asyncio
|
||||
import sys
|
||||
from typing import Any, Dict
|
||||
|
||||
from rich.console import Console
|
||||
from rich.panel import Panel
|
||||
from rich.table import Table
|
||||
from rich.tree import Tree
|
||||
|
||||
from openclaw.workflow.trading_workflow import TradingWorkflow
|
||||
from openclaw.workflow.state import get_state_summary
|
||||
|
||||
console = Console()
|
||||
|
||||
|
||||
def display_workflow_graph():
|
||||
"""Display the workflow graph structure."""
|
||||
console.print("\n[bold cyan]LangGraph Workflow Structure:[/bold cyan]\n")
|
||||
|
||||
tree = Tree("[bold green]START[/bold green]")
|
||||
|
||||
# Parallel analysis branch
|
||||
parallel = tree.add("[yellow]Parallel Analysis Phase[/yellow]")
|
||||
parallel.add("MarketAnalysis (Technical)")
|
||||
parallel.add("SentimentAnalysis (News/Social)")
|
||||
parallel.add("FundamentalAnalysis (Financial)")
|
||||
|
||||
# Sequential phases
|
||||
tree.add("BullBearDebate (Generate bull/bear cases)")
|
||||
tree.add("DecisionFusion (Combine all signals)")
|
||||
tree.add("RiskAssessment (Position sizing & approval)")
|
||||
tree.add("[bold red]END[/bold red]")
|
||||
|
||||
console.print(tree)
|
||||
|
||||
|
||||
def display_final_decision(decision: Dict[str, Any]):
|
||||
"""Display the final trading decision."""
|
||||
if not decision:
|
||||
console.print("[red]No decision generated[/red]")
|
||||
return
|
||||
|
||||
action = decision.get("action", "UNKNOWN")
|
||||
confidence = decision.get("confidence", 0.0)
|
||||
position_size = decision.get("position_size", 0.0)
|
||||
approved = decision.get("approved", False)
|
||||
risk_level = decision.get("risk_level", "unknown")
|
||||
var_95 = decision.get("var_95", 0.0)
|
||||
|
||||
# Color based on action
|
||||
action_color = {
|
||||
"BUY": "green",
|
||||
"SELL": "red",
|
||||
"HOLD": "yellow",
|
||||
}.get(action, "white")
|
||||
|
||||
table = Table(title="Final Trading Decision", show_header=False)
|
||||
table.add_column("Field", style="cyan")
|
||||
table.add_column("Value", style="white")
|
||||
|
||||
table.add_row("Symbol", decision.get("symbol", "N/A"))
|
||||
table.add_row("Action", f"[{action_color}]{action}[/{action_color}]")
|
||||
table.add_row("Confidence", f"{confidence:.1%}")
|
||||
table.add_row("Position Size", f"${position_size:,.2f}")
|
||||
table.add_row("Approved", "✓ Yes" if approved else "✗ No")
|
||||
table.add_row("Risk Level", risk_level.upper())
|
||||
table.add_row("VaR (95%)", f"${var_95:,.2f}")
|
||||
|
||||
console.print(table)
|
||||
|
||||
# Show warnings if any
|
||||
warnings = decision.get("warnings", [])
|
||||
if warnings:
|
||||
console.print("\n[bold yellow]Risk Warnings:[/bold yellow]")
|
||||
for warning in warnings:
|
||||
console.print(f" ⚠️ {warning}")
|
||||
|
||||
|
||||
def display_state_summary(state):
|
||||
"""Display workflow execution summary."""
|
||||
summary = get_state_summary(state)
|
||||
|
||||
table = Table(title="Workflow Execution Summary", show_header=False)
|
||||
table.add_column("Phase", style="cyan")
|
||||
table.add_column("Status", style="green")
|
||||
|
||||
table.add_row("Symbol", summary["symbol"])
|
||||
table.add_row("Current Step", summary["current_step"])
|
||||
table.add_row("Completed Steps", str(len(summary["completed_steps"])))
|
||||
|
||||
# Reports generated
|
||||
table.add_row("Technical Report", "✓" if summary["has_technical"] else "✗")
|
||||
table.add_row("Sentiment Report", "✓" if summary["has_sentiment"] else "✗")
|
||||
table.add_row("Fundamental Report", "✓" if summary["has_fundamental"] else "✗")
|
||||
table.add_row("Bull Report", "✓" if summary["has_bull"] else "✗")
|
||||
table.add_row("Bear Report", "✓" if summary["has_bear"] else "✗")
|
||||
table.add_row("Fused Decision", "✓" if summary["has_fusion"] else "✗")
|
||||
table.add_row("Risk Report", "✓" if summary["has_risk"] else "✗")
|
||||
table.add_row("Final Decision", "✓" if summary["has_final"] else "✗")
|
||||
|
||||
if summary["error_count"] > 0:
|
||||
table.add_row("Errors", f"[red]{summary['error_count']}[/red]")
|
||||
|
||||
console.print(table)
|
||||
|
||||
|
||||
async def run_demo(symbol: str):
|
||||
"""Run the LangGraph workflow demo."""
|
||||
console.print(Panel.fit(
|
||||
f"[bold blue]OpenClaw LangGraph Trading Workflow Demo[/bold blue]\n"
|
||||
f"Symbol: [bold green]{symbol}[/bold green]",
|
||||
border_style="blue"
|
||||
))
|
||||
|
||||
# Display workflow structure
|
||||
display_workflow_graph()
|
||||
|
||||
# Create and run workflow
|
||||
console.print(f"\n[bold]Initializing workflow for {symbol}...[/bold]")
|
||||
workflow = TradingWorkflow(symbol=symbol, initial_capital=1000.0)
|
||||
|
||||
# Show workflow visualization
|
||||
console.print("\n[dim]Workflow Graph (Mermaid):[/dim]")
|
||||
console.print(workflow.visualize())
|
||||
|
||||
# Run workflow with progress tracking
|
||||
console.print(f"\n[bold cyan]Executing workflow...[/bold cyan]\n")
|
||||
|
||||
async for update in workflow.astream(debug=True):
|
||||
# Log state updates
|
||||
for node_name, node_state in update.items():
|
||||
if isinstance(node_state, dict):
|
||||
step = node_state.get("current_step", "unknown")
|
||||
console.print(f" [dim]→ {node_name}: {step}[/dim]")
|
||||
|
||||
# Get final state
|
||||
final_state = await workflow.run()
|
||||
|
||||
# Display results
|
||||
console.print("\n" + "=" * 60)
|
||||
console.print("[bold green]WORKFLOW COMPLETED[/bold green]")
|
||||
console.print("=" * 60)
|
||||
|
||||
display_state_summary(final_state)
|
||||
|
||||
# Display final decision
|
||||
decision = workflow.get_final_decision(final_state)
|
||||
if decision:
|
||||
console.print()
|
||||
display_final_decision(decision)
|
||||
|
||||
# Show completed steps
|
||||
console.print(f"\n[bold]Completed Steps:[/bold]")
|
||||
for step in final_state.get("completed_steps", []):
|
||||
console.print(f" ✓ {step}")
|
||||
|
||||
# Show any errors
|
||||
errors = final_state.get("errors", [])
|
||||
if errors:
|
||||
console.print(f"\n[bold red]Errors:[/bold red]")
|
||||
for error in errors:
|
||||
console.print(f" ✗ {error}")
|
||||
|
||||
return decision
|
||||
|
||||
|
||||
def main():
|
||||
"""Main entry point."""
|
||||
# Get symbol from command line or use default
|
||||
symbol = sys.argv[1] if len(sys.argv) > 1 else "AAPL"
|
||||
|
||||
try:
|
||||
decision = asyncio.run(run_demo(symbol))
|
||||
|
||||
# Exit with success
|
||||
if decision and decision.get("approved"):
|
||||
console.print(f"\n[bold green]✓ Trade approved for {symbol}![/bold green]")
|
||||
sys.exit(0)
|
||||
else:
|
||||
console.print(f"\n[bold yellow]⚠ Trade not approved for {symbol}[/bold yellow]")
|
||||
sys.exit(1)
|
||||
|
||||
except Exception as e:
|
||||
console.print(f"\n[bold red]Error: {e}[/bold red]")
|
||||
import traceback
|
||||
console.print(traceback.format_exc())
|
||||
sys.exit(2)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
main()
|
||||
119
demo_phase2.py
Normal file
119
demo_phase2.py
Normal file
@ -0,0 +1,119 @@
|
||||
#!/usr/bin/env python3
|
||||
"""OpenClaw Phase 2 功能验证 Demo"""
|
||||
|
||||
print('=' * 60)
|
||||
print('🦞 OpenClaw Trading - Phase 2 功能验证')
|
||||
print('=' * 60)
|
||||
print()
|
||||
|
||||
# 1. 验证导入
|
||||
print('📦 模块导入测试...')
|
||||
from openclaw.core.config import get_config
|
||||
from openclaw.core.economy import TradingEconomicTracker, SurvivalStatus
|
||||
from openclaw.core.costs import DecisionCostCalculator
|
||||
from openclaw.agents.base import BaseAgent, AgentState, ActivityType
|
||||
from openclaw.agents.trader import TraderAgent
|
||||
from openclaw.indicators.technical import sma, ema, rsi, macd, bollinger_bands
|
||||
from openclaw.monitoring.status import StatusMonitor
|
||||
print('✅ 所有模块导入成功!')
|
||||
print()
|
||||
|
||||
# 2. 配置系统
|
||||
print('⚙️ 配置系统...')
|
||||
config = get_config()
|
||||
print(f' 初始资金: {config.initial_capital}')
|
||||
print(f' LLM成本: ${config.cost_structure.llm_input_per_1m}/1M tokens')
|
||||
print(f' 模拟天数: {config.simulation_days}')
|
||||
print()
|
||||
|
||||
# 3. 成本计算器
|
||||
print('💰 成本计算器...')
|
||||
calculator = DecisionCostCalculator.from_config(config.cost_structure)
|
||||
cost = calculator.calculate_decision_cost(
|
||||
tokens_input=1000,
|
||||
tokens_output=500,
|
||||
market_data_calls=10
|
||||
)
|
||||
print(f' 决策成本: ${cost:.4f}')
|
||||
print()
|
||||
|
||||
# 4. 经济追踪器
|
||||
print('📊 经济追踪器...')
|
||||
tracker = TradingEconomicTracker(
|
||||
agent_id='demo-trader',
|
||||
initial_capital=10000.0
|
||||
)
|
||||
print(f' Agent: {tracker.agent_id}')
|
||||
print(f' 初始资金: ${tracker.initial_capital:,.2f}')
|
||||
print(f' 当前余额: ${tracker.balance:,.2f}')
|
||||
print(f' 生存状态: {tracker.get_survival_status().value}')
|
||||
print()
|
||||
|
||||
# 5. TraderAgent
|
||||
print('🤖 TraderAgent...')
|
||||
agent = TraderAgent(
|
||||
agent_id='trader-001',
|
||||
initial_capital=10000.0,
|
||||
skill_level=0.7
|
||||
)
|
||||
print(f' Agent ID: {agent.agent_id}')
|
||||
print(f' 技能等级: {agent.skill_level:.1%}')
|
||||
print(f' 胜率: {agent.win_rate:.1%}')
|
||||
print(f' 解锁因子: {agent.state.unlocked_factors}')
|
||||
print()
|
||||
|
||||
# 6. 技术指标
|
||||
print('📈 技术指标...')
|
||||
import pandas as pd
|
||||
import numpy as np
|
||||
|
||||
# 生成示例数据
|
||||
np.random.seed(42)
|
||||
prices = pd.Series(100 + np.cumsum(np.random.randn(100) * 0.5))
|
||||
|
||||
sma20 = sma(prices, 20)
|
||||
ema12 = ema(prices, 12)
|
||||
rsi_val = rsi(prices, 14)
|
||||
macd_result = macd(prices)
|
||||
bb_result = bollinger_bands(prices)
|
||||
|
||||
print(f' 价格数据: {len(prices)} 天')
|
||||
print(f' SMA(20): {sma20.iloc[-1]:.2f}')
|
||||
print(f' EMA(12): {ema12.iloc[-1]:.2f}')
|
||||
print(f' RSI(14): {rsi_val.iloc[-1]:.2f}')
|
||||
print(f' MACD: {macd_result["macd"].iloc[-1]:.2f}')
|
||||
print(f' 布林带: {bb_result["lower"].iloc[-1]:.2f} ~ {bb_result["upper"].iloc[-1]:.2f}')
|
||||
print()
|
||||
|
||||
# 7. 状态监控
|
||||
print('📡 状态监控...')
|
||||
monitor = StatusMonitor()
|
||||
monitor.register_agent('trader-001', tracker)
|
||||
print(f' 监控Agent数: {monitor.agent_count}')
|
||||
print(f' 繁荣Agent数: {monitor.thriving_count}')
|
||||
print(f' 破产Agent数: {monitor.bankrupt_count}')
|
||||
print()
|
||||
|
||||
# 8. 模拟交易流程
|
||||
print('🎮 模拟交易流程...')
|
||||
print(' 1. Agent分析市场...')
|
||||
print(' 2. 生成交易信号...')
|
||||
print(' 3. 执行交易并扣除成本...')
|
||||
print(' 4. 更新状态...')
|
||||
|
||||
# 模拟一次交易
|
||||
result = tracker.calculate_trade_cost(
|
||||
trade_value=1000.0,
|
||||
is_win=True,
|
||||
win_amount=50.0
|
||||
)
|
||||
agent.record_trade(is_win=True, pnl=50.0)
|
||||
|
||||
print(f' 交易后余额: ${agent.balance:,.2f}')
|
||||
print(f' 交易次数: {agent.state.total_trades}')
|
||||
print(f' 当前胜率: {agent.win_rate:.1%}')
|
||||
print()
|
||||
|
||||
print('=' * 60)
|
||||
print('✅ Phase 2 所有功能验证通过!')
|
||||
print('=' * 60)
|
||||
Some files were not shown because too many files have changed in this diff Show More
Loading…
x
Reference in New Issue
Block a user