Skip to content

Audit: 4 external repos (DCG, DCP, Mempalace, CASR) — partially integrated, legacy code still active #426

@quangdang46

Description

@quangdang46

Tổng quan

4 external repos đã có bridge/adapter code nhưng chưa thay thế hoàn toàn code cũ. Cần review và clean up theo thứ tự ưu tiên.


1. DCG (destructive_command_guard) — Priority: 🔴 High

Vấn đề: Bridge module (dcg_bridge.rs) tồn tại nhưng chỉ dùng cho Plan/AcceptEdits/DontAsk/BypassPermissions modes. DefaultAuto modes vẫn chạy qua legacy SafetySystem::classify() với AUTO_ALLOWED list cứng.

  • crates/jcode-app-core/src/dcg_bridge.rs — bridge
  • crates/jcode-base/src/safety.rs lines 183-195, 228-235 — legacy AUTO_ALLOWED list + classify()
  • crates/jcode-app-core/src/ambient/runner.rs, server.rs, tool/ambient.rs — vẫn gọi legacy
  • Pin issue: branch = "main" trong Cargo.toml (dòng 185) không pinned revision

Cần làm:

  • Dùng dcg-core cho tất cả modes (bao gồm Default/Auto)
  • Xoá legacy AUTO_ALLOWED list và SafetySystem::classify()
  • Chuyển dcg-core sang pinned revision thay vì branch = "main"
  • Update ambient tool dispatch để dùng DCG bridge

2. Mempalace — Priority: 🟡 Medium

Vấn đề: MempalaceAdapter implement MemoryProvider nhưng chỉ dùng khi feature mempalace-backend enabled (off by default). MemoryManager legacy vẫn là default backend cho tất cả callers.

  • crates/jcode-app-core/src/tool/mod.rs lines 638-663 — create_memory_provider() fallback về MemoryManager
  • crates/jcode-base/src/memory.rs — MemoryManager vẫn active
  • crates/jcode-base/src/memory_graph.rs — MemoryGraph vẫn active
  • crates/jcode-app-core/src/agent/turn_execution.rs line 913 — instantiate MemoryManager trực tiếp
  • crates/jcode-app-core/src/ambient/prompt.rs, ambient/runner.rs — dùng MemoryManager trực tiếp

Cần làm:

  • Chuyển tất cả callers dùng create_memory_provider() — không hardcode MemoryManager
  • Xem xét enable mempalace-backend trong default features (hoặc decision: keep both)
  • Nếu Mempalace đã ổn định, deprecate MemoryManager

3. CASR (cross_agent_session_resumer) — Priority: 🟡 Medium

Vấn đề: CASR adapter (casr_adapter.rs) tồn tại nhưng hầu hết callers vẫn dùng legacy import.rsjcode-import-core crate.

  • crates/jcode-base/src/casr_adapter.rs — adapter (chỉ được dùng bởi inline interactive)
  • crates/jcode-base/src/import.rs — legacy import vẫn active
  • crates/jcode-base/src/import_tests.rs — legacy tests
  • crates/jcode-import-core/ — cả crate vẫn tồn tại
  • Callers dùng legacy: session/crash.rs, tui/app/helpers.rs, tui/session_picker/loading.rs, tool/session_search.rs

Cần làm:

  • Migrate import.rs callers sang casr_adapter.rs
  • Xoá crates/jcode-import-core/ sau khi migrate hoàn tất
  • Xoá pub mod import trong jcode-base/src/lib.rs

4. DCP (dynamic_context_pruning) — Priority: 🟢 Low

Vấn đề: Đã tích hợp đầy đủ, additive feature. Nhưng experiment flag DynamicContextPruningdefault_enabled: true mà feature dcp không có trong default features — cần kiểm tra xem có intended behavior conflict không.

  • crates/jcode-app-core/src/dcp_bridge.rs, dcp_plugin.rs, tool/dcp_compress.rs — OK
  • crates/jcode-experiment-flags/src/lib.rs line 43 — experiment flag status

Files affected (estimated)

crates/jcode-base/src/safety.rs          — legacy SafetySystem::classify()
crates/jcode-base/src/import.rs          — legacy import
crates/jcode-base/src/memory.rs          — legacy MemoryManager
crates/jcode-base/src/memory_graph.rs    — legacy MemoryGraph
crates/jcode-import-core/                — cả crate
crates/jcode-app-core/src/dcg_bridge.rs  — incomplete bridge
crates/jcode-app-core/src/ambient/       — multiple files dùng legacy
crates/jcode-app-core/src/tool/mod.rs    — create_memory_provider()
crates/jcode-tui/src/tui/                — multiple files dùng legacy import

Đề xuất thứ tự xử lý

  1. DCG (High priority — bảo mật) — xoá AUTO_ALLOWED, dùng DCG cho tất cả modes
  2. CASR (Medium — tech debt) — migrate callers, xoá jcode-import-core
  3. Mempalace (Medium — kiến trúc) — deprecate MemoryManager nếu Mempalace ổn định
  4. DCP (Low — chỉ kiểm tra config)

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions