Vendored deer-flow upstream (bytedance/deer-flow) plus prompt-injection hardening: - New deerflow.security package: content_delimiter, html_cleaner, sanitizer (8 layers — invisible chars, control chars, symbols, NFC, PUA, tag chars, horizontal whitespace collapse with newline/tab preservation, length cap) - New deerflow.community.searx package: web_search, web_fetch, image_search backed by a private SearX instance, every external string sanitized and wrapped in <<<EXTERNAL_UNTRUSTED_CONTENT>>> delimiters - All native community web providers (ddg_search, tavily, exa, firecrawl, jina_ai, infoquest, image_search) replaced with hard-fail stubs that raise NativeWebToolDisabledError at import time, so a misconfigured tool.use path fails loud rather than silently falling back to unsanitized output - Native client back-doors (jina_client.py, infoquest_client.py) stubbed too - Native-tool tests quarantined under tests/_disabled_native/ (collect_ignore_glob via local conftest.py) - Sanitizer Layer 7 fix: only collapse horizontal whitespace, preserve newlines and tabs so list/table structure survives - Hardened runtime config.yaml references only the searx-backed tools - Factory overlay (backend/) kept in sync with deer-flow tree as a reference / source See HARDENING.md for the full audit trail and verification steps.
4.6 KiB
4.6 KiB
DeerFlow Smoke Test Report
Test Date: {{test_date}}
Test Environment: {{test_environment}}
Deployment Mode: Local
Test Version: {{git_commit}}
Execution Summary
| Metric | Status |
|---|---|
| Total Test Phases | 6 |
| Passed Phases | {{passed_stages}} |
| Failed Phases | {{failed_stages}} |
| Overall Conclusion | {{overall_status}} |
Key Test Cases
| Case | Result | Details |
|---|---|---|
| Code update check | {{case_code_update}} | {{case_code_update_details}} |
| Environment check | {{case_env_check}} | {{case_env_check_details}} |
| Configuration preparation | {{case_config_prep}} | {{case_config_prep_details}} |
| Deployment | {{case_deploy}} | {{case_deploy_details}} |
| Health check | {{case_health_check}} | {{case_health_check_details}} |
| Frontend routes | {{case_frontend_routes_overall}} | {{case_frontend_routes_details}} |
Detailed Test Results
Phase 1: Code Update Check
- Confirm current directory - {{status_dir_check}}
- Check Git status - {{status_git_status}}
- Pull latest code - {{status_git_pull}}
- Confirm code update - {{status_git_verify}}
Phase Status: {{stage1_status}}
Phase 2: Local Environment Check
- Node.js version - {{status_node_version}}
- pnpm - {{status_pnpm}}
- uv - {{status_uv}}
- nginx - {{status_nginx}}
- Port check - {{status_port_check}}
Phase Status: {{stage2_status}}
Phase 3: Configuration Preparation
- config.yaml - {{status_config_yaml}}
- .env file - {{status_env_file}}
- Model configuration - {{status_model_config}}
Phase Status: {{stage3_status}}
Phase 4: Local Deployment
- make check - {{status_make_check}}
- make install - {{status_make_install}}
- make dev-daemon / make dev - {{status_local_start}}
- Service startup wait - {{status_wait_startup}}
Phase Status: {{stage4_status}}
Phase 5: Service Health Check
- Process status - {{status_processes}}
- Frontend service - {{status_frontend}}
- API Gateway - {{status_api_gateway}}
- LangGraph service - {{status_langgraph}}
Phase Status: {{stage5_status}}
Frontend Routes Smoke Results
| Route | Status | Details |
|---|---|---|
Landing / |
{{landing_status}} | {{landing_details}} |
Workspace redirect /workspace |
{{workspace_redirect_status}} | target {{workspace_redirect_target}} |
New chat /workspace/chats/new |
{{new_chat_status}} | {{new_chat_details}} |
Chats list /workspace/chats |
{{chats_list_status}} | {{chats_list_details}} |
Agents gallery /workspace/agents |
{{agents_gallery_status}} | {{agents_gallery_details}} |
Docs {{docs_path}} |
{{docs_status}} | {{docs_details}} |
Summary: {{frontend_routes_summary}}
Phase 6: Test Report Generation
- Result summary - {{status_summary}}
- Issue log - {{status_issues}}
- Report generation - {{status_report}}
Phase Status: {{stage6_status}}
Issue Log
Issue 1
Description: {{issue1_description}}
Severity: {{issue1_severity}}
Solution: {{issue1_solution}}
Environment Information
Local Dependency Versions
Node.js: {{node_version_output}}
pnpm: {{pnpm_version_output}}
uv: {{uv_version_output}}
nginx: {{nginx_version_output}}
Git Information
Repository: {{git_repo}}
Branch: {{git_branch}}
Commit: {{git_commit}}
Commit Message: {{git_commit_message}}
Configuration Summary
- config.yaml exists: {{config_exists}}
- .env file exists: {{env_exists}}
- Number of configured models: {{model_count}}
Local Service Status
| Service | Status | Endpoint |
|---|---|---|
| Nginx | {{nginx_status}} | {{nginx_endpoint}} |
| Frontend | {{frontend_status}} | {{frontend_endpoint}} |
| Gateway | {{gateway_status}} | {{gateway_endpoint}} |
| LangGraph | {{langgraph_status}} | {{langgraph_endpoint}} |
Recommendations and Next Steps
If the Test Passes
- Visit http://localhost:2026 to start using DeerFlow
- Configure your preferred model if it is not configured yet
- Explore available skills
- Refer to the documentation to learn more features
If the Test Fails
- Review references/troubleshooting.md for common solutions
- Check local logs:
logs/{langgraph,gateway,frontend,nginx}.log - Verify configuration file format and content
- If needed, fully reset the environment:
make stop && make clean && make install && make dev-daemon
Appendix
Full Logs
{{full_logs}}
Tester
{{tester_name}}
Report generated at: {{report_time}}