Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
140 changes: 65 additions & 75 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,89 +1,79 @@
# Python-related files
__pycache__/
*.py[cod]
*.egg-info/
.eggs/
*.tgz
*.tar.gz
*.ini
# Quant Trader — Git忽略规则
# 敏感文件
.env
.env.example # 模板不含真实密钥,但可忽略
*.token
*_token*
quant_trading/.env
deepcode_config.json # 含 ${VAR} 占位符或真实密钥

# Virtual Environment
.venv/
env/
venv/
*.env*
.env_example
# 数据库 (包含真实交易数据)
*.db
*.db-journal
*.db-wal
*.db-shm
!test_*.db

# 日志
logs/
*.log
*.jsonl

# Build / Distribution
dist/
build/
site/
# 缓存
__pycache__/
*.pyc
*.pyo
.pytest_cache/
*.pyc.bak

# Logs / Reports
*.log
*.log.*
*.logfire
*.coverage/
log/
# 日志 (运行时生成)
logs/
*.jsonl
!quant_trading/logs/.gitkeep
!quant_trading/logs/filebeat.yml
!quant_trading/logs/logstash.conf

# Node
node_modules/

# Caches
.cache/
.mypy_cache/
.pytest_cache/
.ruff_cache/
.gradio/
.history/
temp/
# 报告 (含个人信息)
reports/*.docx
reports/*.html
charts/

# IDE / Editor Files
# IDE
.idea/
.vscode/
.vscode/settings.json

# Framework-specific files
local_neo4jWorkDir/
neo4jWorkDir/
*.swp
*.swo

# Data & Storage
inputs/
rag_storage/
examples/input/
examples/output/
deepcode-mcp/agent_folders

# Miscellaneous
.DS_Store
TODO.md
ignore_this.txt
*.ignore.*
# 环境
.venv/
venv/
env/

# scratch test files (but real suites under tests/ ARE tracked)
test_*
!tests/test_*
run_indexer_with_filtering.py
# 第三方/大型二进制目录
claude-code-win32-x64/
devecostudio-windows-6.1.1.280/
dzh365/
node_modules/
deveco_extract/
OpenHarmony/
Huawei/
nvidia-skills/
CAD/
.cn-financial-mcp/
nanobot/ # 原框架,已移植到 core/
cn-financial-mcp/ # 独立 MCP 服务,通过 settings.json 引用
eval/ # 评估框架

# Cline files
memory-bank/
# 数据文件 (大型)
data/*.h5
data/*.parquet
data/*.feather

# project files
deepcode_lab/
uploads/
# OS
.DS_Store
Thumbs.db

# secrets (use .env or environment variables instead)
# NEVER commit real API keys; use the *.example files as templates.
deepcode_config.json
nanobot_config.json
*.secrets.yaml
*.secrets.yml
secrets.json
credentials.json
*credentials*.json
.env
.env.*
!.env.example
!*.env.example
# 报告缓存
reports/*.json
reports/*.docx
reports/*.txt
37 changes: 36 additions & 1 deletion cli/loop_cli.py
Original file line number Diff line number Diff line change
Expand Up @@ -40,13 +40,39 @@ def _run(args: argparse.Namespace) -> int:
workspace = os.path.abspath(args.workspace)
os.makedirs(workspace, exist_ok=True)

# 🧬 MoE 专家路由
expert_info = ""
try:
sys.path.insert(0, os.path.join(os.path.dirname(os.path.dirname(
os.path.abspath(__file__))), "quant_trading"))
from quant_trading.ml.moe_router import CodeExpertRouter
router = CodeExpertRouter()
if args.expert == "auto":
expert, confidence = router.select_expert(args.goal)
expert_info = f" [grey58]expert[/] {expert.name} ({expert.strength}) [{confidence:.0%}]"
elif args.expert == "fix":
from quant_trading.ml.moe_router import FixExpert
expert = FixExpert()
expert_info = f" [grey58]expert[/] fix (强制)"
elif args.expert == "refactor":
from quant_trading.ml.moe_router import RefactorExpert
expert = RefactorExpert()
expert_info = f" [grey58]expert[/] refactor (强制)"
elif args.expert == "write":
from quant_trading.ml.moe_router import WriteExpert
expert = WriteExpert()
expert_info = f" [grey58]expert[/] write (强制)"
except Exception as e:
expert_info = f" [grey58]expert[/] not available ({e})"

console.print(
Panel.fit(
"[bold cyan]✳ DeepCode loop[/]\n"
f"[grey58]goal[/] {args.goal}\n"
f"[grey58]test[/] {args.test_cmd or '(none)'}"
f" [grey58]workspace[/] {workspace}"
f" [grey58]max rounds[/] {args.max_rounds}",
f" [grey58]max rounds[/] {args.max_rounds}\n"
f"{expert_info}",
border_style="grey58",
)
)
Expand Down Expand Up @@ -88,6 +114,13 @@ def on_event(state, record, test) -> None:


def main(argv: list[str] | None = None) -> int:
# Windows encoding fix: force UTF-8 for Rich console output
import sys
if sys.platform == "win32" and isinstance(sys.stdout, type(None)) is False:
try:
sys.stdout.reconfigure(encoding="utf-8")
except Exception:
pass
parser = argparse.ArgumentParser(
prog="deepcode loop",
description="Autonomously drive a goal to passing tests, round by round.",
Expand All @@ -104,6 +137,8 @@ def main(argv: list[str] | None = None) -> int:
parser.add_argument("--model", "-m", default=None)
parser.add_argument("--max-rounds", type=int, default=6)
parser.add_argument("--max-iterations", type=int, default=40)
parser.add_argument("--expert", choices=["auto", "fix", "refactor", "write"],
default="auto", help="Code expert router (🧬 MoE)")
args = parser.parse_args(argv)
return _run(args)

Expand Down
Loading