Conversation
- Translate all Chinese comments, strings, and UI text in Go source files (handlers, agent engine, MCP, knowledge base, database, security executor) - Translate all JavaScript UI files (chat, roles, settings, skills, knowledge, info-collect, tasks, monitor, api-docs, dashboard, terminal, vulnerability) - Translate CSS comments in web/static/css/style.css - Translate all 86+ YAML tool recipes in tools/ - Translate all role YAML files; rename Chinese-named role files to English - Translate SKILL.md files in the skills/ directory - Translate shell script comments and messages in run.sh - Translate HTML templates (index.html, api-docs.html) - Translate config.yaml comments and go.mod - Update docs/robot_en.md: replace Chinese bot command aliases with English equivalents, update log message strings, fix navigation labels - Update README.md and docs/robot.md: change [中文] nav link to [Chinese] - Add ROADMAP.md with detailed near/mid/long-term development plans - Add English-named role YAML files replacing Chinese-named originals https://claude.ai/code/session_01FizP91UUqUukAtcgnVHTZy
- Translate internal/attackchain/builder.go including the large ~300-line LLM system prompt for attack chain construction - Translate internal/handler/agent.go: knowledge base result matching strings updated to English equivalents, batch task cancellation detection strings updated to match English executor output - Translate internal/handler/config.go: all comments, log messages, error strings, and JSON response messages - Translate internal/knowledge/indexer.go and tool.go: all log messages, error strings, tool descriptions, and result format strings - Translate all 22 skills/*/SKILL.md files covering: SQL injection, XSS, CSRF, SSRF, XXE, command injection, deserialization, file upload, XPATH injection, LDAP injection, IDOR, API security, cloud security, container security, mobile app security, network penetration testing, vulnerability assessment, incident response, secure code review, security automation, business logic testing, security awareness training Translation is now complete: 0 Chinese characters remaining across all source files, docs, UI, tools, roles, and skills (excluding README_CN.md which is intentionally the Chinese language version). https://claude.ai/code/session_01FizP91UUqUukAtcgnVHTZy
Update test assertion strings to match English error messages now output by the translated executor (unknown internal tool type, result storage not initialized, page 1/). https://claude.ai/code/session_01FizP91UUqUukAtcgnVHTZy
- agent.go: replace ideographic comma '、' list separator with ', ' when building skills hint string - builder.go: translate '取消' cancellation check string to 'cancel' to match English executor output https://claude.ai/code/session_01FizP91UUqUukAtcgnVHTZy
Late-completing translation agent wrote a clean version of config.go; no functional changes, 0 Chinese characters confirmed. https://claude.ai/code/session_01FizP91UUqUukAtcgnVHTZy
Translate chinese to english
- Add `parallelToolExecution`, `maxParallelTools`, and `toolRetryCount` fields to `AgentConfig` (config.go) and the `Agent` struct. - Implement `executeToolCallsInParallel`: launches a goroutine per tool call protected by panic recovery; an optional semaphore limits concurrency when `max_parallel_tools > 0`; optional retry logic retries on transient hard errors up to `tool_retry_count` times. - Replace the sequential tool-call loop in the agent loop with a conditional: ≥2 concurrent calls with `parallel_tool_execution: true` use the parallel path; single calls or disabled mode fall back to the existing sequential path. Results are always applied to `messages` in original index order to keep tool-call IDs consistent. - Emit a `parallel: true` flag in progress events so the frontend can distinguish parallel from sequential execution batches. - Enable parallel execution by default in `config.yaml`; add `max_parallel_tools` and `tool_retry_count` knobs. https://claude.ai/code/session_01Rd7wB3N5NRdEt5FTWPbABd
feat(agent): add parallel tool execution with error handling
… streaming Implements a Telegram bot via long-polling (no public IP required) that follows the same architecture as the existing DingTalk and Lark integrations. Key changes: - internal/robot/telegram.go: new bot implementation using Telegram Bot API HTTP calls (no new dependencies). Features: long-polling with exponential reconnect backoff, multi-user sessions (AllowedUserIDs whitelist), group chat @ mention filtering, live progress streaming via throttled message edits, typing action indicator, automatic message splitting at 4096 chars. - internal/robot/conn.go: adds StreamingMessageHandler interface so Telegram can receive agent tool-call progress events. - internal/handler/robot.go: adds HandleMessageStream() satisfying the new interface; command dispatch is instant, agent messages use streaming. - internal/handler/agent.go: adds ProcessMessageForRobotStream() with a notifyFn callback that fires on tool_call/tool_result/progress events. - internal/config/config.go: adds RobotTelegramConfig (BotToken, AllowedUserIDs) and Telegram field to RobotsConfig. - internal/app/app.go: wires telegramCancel into startRobotConnections(), RestartRobotConnections(), and Shutdown(). - web/templates/index.html + web/static/js/settings.js: Telegram section in Bot Settings (enable toggle, bot token, allowed user IDs field). - config.yaml: telegram block with commented defaults. - docs/robot_en.md: full Telegram setup guide (sections 3.3, 9, 12, 13). - ROADMAP.md: marks Telegram as shipped; adds near-term Telegram items and a detailed Telegram roadmap table. https://claude.ai/code/session_01EHroFMw7DJwUuszDzcFkpk
feat(telegram): add Telegram bot with multi-user support and progress…
Implements three core intelligence features ported from the Python
adaptive_agent framework into the CyberStrikeAI Go codebase.
### Persistent Memory (internal/agent/persistent_memory.go)
- SQLite-backed key-value store that survives conversation compression
and server restarts (table: agent_memories)
- Five categories: credential, target, vulnerability, fact, note
- Four new MCP agent tools: store_memory, retrieve_memory,
list_memories, delete_memory
- Memory context block auto-injected into every system prompt
- Configurable via agent.memory.{enabled, max_entries}
### Corpus-Level BM25 Okapi (internal/knowledge/bm25.go)
- Full BM25 Okapi implementation with real IDF:
IDF(t) = log((N - n(t) + 0.5) / (n(t) + 0.5) + 1)
- BM25CorpusIndexer rebuilt from all knowledge chunks on startup
- BM25CorpusIndexer.ScoreText() replaces the previous per-document
approximation in retriever.go
- Configurable k1, b, and delta (BM25+) parameters
- Score normalised via tanh for hybrid blending compatibility
### Time Awareness (internal/agent/time_awareness.go)
- Current date/time, timezone, and session age injected into every
system prompt via <time_context> XML block
- New get_current_time MCP tool for on-demand queries
- Configurable timezone (IANA) via agent.time_awareness.{enabled, timezone}
- Defaults to UTC; backward-compatible (enabled by default for new installs)
### Wiring & Config
- config.go: TimeAwarenessConfig and MemoryConfig structs with defaults
- app.go: initialisation + tool registration before agent variable creation
(avoids package-name shadowing)
- builtin/constants.go: 5 new tool name constants
- config.yaml: documented new sections with inline comments
- Version bumped to v1.4.0
### Docs
- README.md: new Persistent Memory and Time Awareness sections,
updated Highlights, Knowledge Base BM25 description, and
Configuration Reference
- ROADMAP.md: marked shipped items, added Memory UI and BM25
persistence as near-term items
https://claude.ai/code/session_01Uie29eQJ2a6E2M4a3rm5vj
feat: port persistent memory, BM25 Okapi, and time awareness to Go
- Replace c.HTML() with os.ReadFile + strings.Replace for the index route to avoid html/template parser failures on SVG/JS content - Cache index.html bytes at startup to avoid per-request disk reads - Escape version string with html.EscapeString to prevent XSS - Fix unescaped HTML entities in FOFA preset button onclick attribute - Correct button label from "China" to "US" to match the actual query https://claude.ai/code/session_01BVpJHrJk42QVqXGkRS3Zub
fix: resolve white screen caused by html/template parsing failure
…ed BM25 ## Proactive RAG context injection (RAGContextInjector) Introduce `internal/agent/rag_context.go` — a new `RAGContextInjector` that automatically retrieves relevant knowledge-base content at the start of every agent loop run and embeds it directly in the system prompt. Previously the agent could only access knowledge reactively (by calling `search_knowledge_base`). With proactive injection the LLM immediately receives the top-K relevant chunks for the user's query, giving it instant context for tool selection and exploitation strategy before issuing a single tool call. Key design points: - Uses a slightly relaxed similarity threshold (0.6) for wider coverage - Groups and sorts chunks by knowledge-base item with hybrid-score ordering - Respects a configurable character budget (default 6 000 chars) to avoid bloating the context window - Wraps the block in `<rag_knowledge_context>` tags so the LLM treats it as structured context rather than conversation history - Provides a lightweight `ToolGuidanceHint` alternative for when a full block is unnecessary - Safe-null: returns an empty string when no retriever is configured or no relevant results are found ## Agent integration - Add `ragInjector *RAGContextInjector` field to `Agent` - Add `SetRAGInjector` method (mirrors `SetTimeAwareness` pattern) - Inject the RAG context block at the tail of the system prompt inside `AgentLoopWithProgress`, where it appears *after* the main instructions so the LLM sees task-specific knowledge immediately ## BM25 tokenizer improvements Replace the naive `strings.Fields(strings.ToLower(text))` tokeniser with a security-domain-aware implementation: - Strips non-alphanumeric characters (keeping `-` and `_`) before splitting - Drops single-character tokens (near-universal noise) - Filters 60+ common English stop words while intentionally preserving all short security abbreviations (xss, rce, sqli, lfi, ssrf, ssti, etc.) - Applies a `securityAliases` map to normalise common variant spellings (e.g. "sqli" → "sqlinj", "sql-injection" → "sqlinj", "xss" / "cross-site" → "xss") so queries and documents share the same token space This significantly improves recall for security-specific queries where attackers routinely use abbreviated or hyphenated terminology. ## Memory compressor: preserve RAG citations through compression Update `summaryPromptTemplate` to explicitly instruct the LLM to retain: - Knowledge-base citations (category name + item title) - Key technique/payload referenced from each retrieved item - Tool selection rationale derived from retrieved knowledge This ensures that when long conversations are compressed the agent does not lose track of which knowledge items informed earlier decisions. ## App wiring - Create and attach a `RAGContextInjector` to the agent immediately after `knowledgeRetriever` is initialised (both in the static startup path and in the dynamic `initializeKnowledge` closure). - Uses library defaults (MaxChunks=8, MaxCharsTotal=6000, FetchTimeout=15s) which can be tuned via the `RAGContextConfig` struct. https://claude.ai/code/session_01VL48xrshNruiUVsD1w3xAX
…ncement-hZiNc feat: RAG-enhanced agent with deeper knowledge integration and improv…
- Add `UpdateByID` method to `PersistentMemory` for editing entries by UUID - Create `MemoryHandler` with full CRUD + bulk-delete + stats API endpoints (GET/POST/PUT/DELETE /api/memories, GET /api/memories/stats) - Wire handler into App struct and register routes under `/api/memories`; graceful degradation when memory is disabled (returns enabled:false) - Add Memory page to the web UI (sidebar nav, page div, create/edit modal) - Implement `memory.js`: list, search, category filters, stats strip, add/edit/ delete with inline notifications; wired to the new REST API - Update `router.js` to recognise the `memory` page and call `initMemoryPage()` - Append Memory panel CSS to style.css (stats, toolbar, filter chips, entry cards, category badge colours, notification variants) - Update ROADMAP.md: mark Memory UI panel and RAG-enhanced agent as shipped - Add docs/memory_en.md documenting the feature and API endpoints https://claude.ai/code/session_01MYgCeM1GLyM1p9tbbNJVL6
feat: add Memory UI panel for persistent memory management
- isRetryableError: fix "EOF" case mismatch with strings.ToLower (was never matching) - getAvailableTools: propagate caller context instead of context.Background() so task cancellation correctly stops external MCP queries - convertToOpenAIType: map "int"/"integer" to "integer" (not "number") to conform to JSON Schema/OpenAI spec - attachmentContentToBytes: use MimeType field to determine encoding instead of opportunistic try-and-see base64 decode that could corrupt plain-text files - summarizeChunk: fallback on empty summary now preserves all chunk messages instead of silently discarding all but the first - countTotalTokens: include ToolCalls JSON when counting message tokens so compression triggers at the correct threshold - AgentLoopWithProgress: remove duplicate comment - AgentLoopStream: consolidate two separate role-config lookups into one, ensuring roleSkills is captured alongside roleTools - saveAttachmentsToDateAndConversationDir: enforce 50 MB per-file size limit to prevent disk/memory exhaustion https://claude.ai/code/session_017MtB57yFAgBeBhNyo7vfkp
fix: resolve 9 bugs across agent, memory compressor, and handler
Fix: logger shows empty error msg
…s, and plan tracking - Add new MemoryEntry fields: Status, Entity, Confidence to PersistentMemory - Add new memory categories: tool_run, discovery, plan (in addition to existing credential/target/vulnerability/fact/note) - Add MemoryStatus type: active, confirmed, false_positive, disproven - Add StoreFull() for rich metadata storage; SetStatus() to mark findings - Add ListByEntity(), FindByStatus(), RetrieveAll(), ListAll() query methods - Improved BuildContextBlock(): groups by category, separates dismissed findings, shows completed tool runs to prevent duplicate scans - New update_memory_status MCP tool: allows model to mark memories confirmed, false_positive, or disproven - Updated store_memory/retrieve_memory/list_memories tools with entity, confidence, include_dismissed params - Updated store_memory enum to include all 8 categories - Agent storeToolPoolMemory uses tool_run category; added classifyToolResult() heuristic that auto-detects credential/target/vulnerability/tool_run from content - Enhanced system prompt: detailed memory category guidance, entity field usage, plan tracking with [DONE] prefix, workflow examples to prevent repeated tool runs - Memory handler: GetMemoryStats includes new categories and by_status breakdown - Memory handler: UpdateMemoryStatus endpoint (PATCH /api/memories/:id/status) - HTTP route: PATCH /api/memories/:id/status mapped to UpdateMemoryStatus handler https://claude.ai/code/session_01SULvgHvhvio2rd8iykBr4j
Improve entity memory: classification, status tracking, new categorie…
- Enhance system prompt: require detailed thinking (100-300 words) before and after tool calls so the model always explains what it does and why - Add resumption instructions: model checks persistent memory on resume, summarizes prior progress, and continues from where it left off - Mandate plan memory tracking with [DONE] markers for interruption recovery - Add model name auto-discovery from vLLM /v1/models endpoint - Fix mid-conversation system messages rejected by Qwen3.5 chat template - Add normalizeNonStandardToolCalls fallback for XML-in-content tool calls - Make embedding chunk size configurable (derived from max_tokens setting) - Fix tool registration loss on config hot-reload (memory/time tools) - Add deferred/background tool execution with configurable wait timeout - Add parallel_tool_calls to API requests when parallel execution enabled - Remove temporary RAW response body debug logging - Add role configuration templates and UI model discovery support Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…ions Introduces a full File Manager subsystem with SQLite-backed storage, HTTP API, MCP agent tools (register_file, update_file, list_files, get_file, append_file_log, append_file_findings), frontend UI page, dashboard KPI cards, settings integration, and auto-registration of chat attachments. Supports file types: report, api_docs, project_file, target_file, reversing, exfiltrated, other. Also adds Bitrix24 webhook exploitation skill and updates role prompts for file-aware operations. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
…tion Registers 16 Cuttlefish MCP tools directly in the internal MCP server: cuttlefish_launch, _stop, _status, _install_apk, _hotswap, _shell, _push, _pull, _screenshot, _logcat, _frida_setup, _proxy, _install_cert, _snapshot, _packages, _droidrun. Device preconfigured as Russian-owned Xiaomi Redmi Note 12 Pro (MTS 250/01, Moscow TZ, ru-RU, Yandex DNS). Includes setup script, Russian identity config, hot-swap/snapshot/API control scripts, and DroidRun bridge for AI-driven UI automation. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Registers SSLStrip as a security tool with full parameter definitions (listen port, logfile, favicon spoofing, session kill, POST-only/all traffic modes). Adds two knowledge base entries: - Tools/sslstrip.md: tool reference with attack playbooks, secret extraction patterns, cert swap methods, HSTS bypass, Frida pinning bypass scripts, Cuttlefish integration workflow - SSL-TLS MITM/HTTPS Interception and Certificate Attacks.md: category covering TLS stripping, rogue CA generation, cert pinning bypass, protocol downgrade attacks, and complete MITM attack chains Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add CuttlefishConfig struct (cvd_home, memory_mb, cpus, disk_mb, gpu_mode, auto_launch, russian_identity, webrtc_port, droidrun_path, droidrun_config, bridge_script) and SSLStripConfig struct (listen_port, log_dir, auto_proxy) to config.go - Add documented config.yaml sections for cuttlefish and sslstrip under agent with inline comments explaining every field - Update app.go to read from config structs (with env var and default fallbacks), pass config to registerCuttlefishTools, use config defaults for VM memory/cpus/gpu/disk, resolve DroidRun paths from config - Add SSLStrip attack chain guidance to agent system prompt with full Cuttlefish+SSLStrip+DroidRun integration workflow - Add Settings UI panels for Android VM (Cuttlefish) and SSLStrip with all configurable fields, checkboxes, and selects - Wire settings.js load/save for all cuttlefish and sslstrip config fields - All three subsystems (Cuttlefish, SSLStrip, DroidRun) now interact: config-driven, UI-configurable, agent-documented, cross-referenced Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Implements droidrun_proxy.py HTTP service that bridges LLM ↔ DroidRun ↔ Cuttlefish VM, providing LLM-friendly device interaction: - Indexed UI elements (click by number, not pixel coordinates) - Formatted state text the LLM can reason about directly - Base64 PNG screenshots for Qwen3.5 VL vision analysis - Action results with success/failure + updated state 12 new MCP tools registered: droidrun_connect, _state, _screenshot, _click, _type, _swipe, _scroll, _button, _open_app, _list_apps, _install, _wait. All documented in agent system prompt with usage examples and interaction patterns. Config-driven via proxy_port, proxy_auto_start, screenshot_dir, vision_enabled fields. Knowledge base entry with comparison table, examples, and architecture diagram. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
The cuttlefish_launch MCP tool now automatically opens the WebRTC display in the user's browser so they can visually observe and interact with the Android VM. Passes configurable WebRTC port through to the launch script. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Ghidra Headless MCP: - Standalone external MCP server exposing ~212 Ghidra RE tools - Launcher script (scripts/ghidra/start-ghidra-mcp.sh) auto-installs all deps: Ghidra, JDK, pyghidra, ghidra-headless-mcp - Configured as stdio external MCP in config.yaml - Knowledge base documentation with full tool reference and workflows - Settings UI toggle and Ghidra path configuration - Agent system prompt with detailed usage instructions Android Reverse Engineering skill: - 6-phase methodology: deps, decompile, structure, call flow, API extraction, dynamic - Bundled scripts: decompile.sh (jadx/fernflower/both), find-api-calls.sh, check-deps.sh, install-dep.sh (from android-reverse-engineering-skill, Apache 2.0) - Integrated with CyberStrikeAI tools: Ghidra, Cuttlefish VM, DroidRun, Frida, SSLStrip - Combined static+dynamic workflow documentation Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Agent system prompt now instructs the model to: - Plan before acting (store plan in persistent memory) - Register all artifacts immediately via File Manager - Log every step, store findings incrementally - Persist key discoveries (creds, endpoints, crypto) in memory - Always check previous work before starting on a target - Store methodology notes for recall on similar future tasks Android RE skill enhanced with Phase 7 (artifact management): - File Manager integration for APK tracking and findings - Persistent memory storage for cross-session recall - Artifact checklist ensuring nothing is lost Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add pre-flight health checks at agent loop start: verifies LLM connectivity, external MCP server status, internal tools, key binaries - Add /api/health endpoint (no auth) with MCP stats and tool counts - Fix json.Marshal errors in MCP server: replace all _, _ patterns with marshalResult helper that logs and returns proper JSON-RPC error - Fix json.NewEncoder write errors: now logged instead of silently dropped - Add per-tool execution timeout (default 5min, configurable via tool_timeout) - Fix summary generation: all 3 callOpenAI summary paths now log errors and send warning events to UI instead of silently failing - Fix transient tool error retry path (connection refused, timeout, EOF) - Add compression visibility: sends compression event when context is compressed - Enhanced health_check UI: renders per-component status with icons, auto-expands on warnings/errors - Add generic progress/warning message rendering in timeline - Tool results show duration, failed tools auto-expand in timeline - Warning events now displayed with auto-expand in monitor UI Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
- Add sanitized config.example.yaml with all sensitive values replaced (API keys, passwords, FOFA credentials, internal IPs) - Update .gitignore: add CyberStrikeAI binary, .gocache/, __pycache__/, nmap scan output, editor lock/swap files - Remove stale files: bitrix_paths.txt, images/404StarLinkLogo.png Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Add a multi-engine information gathering system replacing the FOFA-only
recon page. Each engine gets a tab in the UI, settings fields for API
keys with auto-validation on blur, and a Go backend handler proxying
searches and normalizing results.
Backend:
- Add ZoomEyeConfig, ShodanConfig, CensysConfig to config.go
- New recon.go handler: search proxy + key validation for all 4 engines
- Wire /api/recon/{engine}/search and /validate routes in app.go
- Export engine API keys as env vars for tool subprocess use
- Extend GetConfigResponse/UpdateConfigRequest for new engines
Frontend:
- Recon page: tab-based UI (FOFA, ZoomEye, Shodan, Censys)
- Each engine panel: query form, presets, results table, CSV/JSON export
- Settings: key input fields for each engine with blur-to-validate
- Tab disabled state when API key not configured
- CSS: recon tabs, key status indicators
Config:
- config.example.yaml: add zoomeye, shodan, censys sections
- Remove hardcoded API key from zoomeye_search.yaml tool
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
|

Summary
This PR translates all Chinese comments and documentation strings throughout the codebase to English, improving accessibility for international developers and maintaining consistency with the English-language codebase.
Key Changes
Code comments: Converted all Chinese inline comments to English across core packages:
internal/agent/ - Agent, memory compressor, and token counter comments
internal/handler/ - Handler classes and utility functions
internal/attackchain/ - Attack chain builder and related types
internal/database/ - Database models and operations
internal/knowledge/ - Knowledge base indexer and embedder
internal/app/ - Application initialization and configuration
cmd/ - Command-line tools and test servers
Documentation: Updated user-facing documentation:
docs/robot.md - Bot/chatbot guide translated to English with language selector
docs/robot_en.md - Updated language reference links
README.md - Updated language selector format
GitHub issue templates - Translated bug report and feature request templates
Configuration: Updated config.yaml comments to English
Type definitions: Translated struct field comments and interface documentation
Test files: Updated test helper function comments
Notable Details
All functional code logic remains unchanged; this is purely a documentation/comment update
Maintains consistency with existing English comments in the codebase
Improves code readability for non-Chinese speaking contributors
No changes to API contracts, configuration schemas, or runtime behavior