mirror of
https://github.com/bytedance/deer-flow.git
synced 2026-11-12 22:20:33 +00:00
* docs: turn README into an index and move reference detail to docs/guide The README had grown to 393 KB because every change appended its notes there. The text moves verbatim into 18 topic guides under docs/guide/; only headings are re-leveled and relative links re-pointed. The README keeps the introduction, a quick start and a guide index. Contributor test notes move to CONTRIBUTING.md. * docs: send user docs to topic guides and budget the root README The rule 'update README.md for user-facing changes' is what grew the README. Guidance now points to docs/guide/, and check_agent_guidance.py fails when the root README exceeds 16 KiB (AG003). * chore: remove unreferenced screenshots and finished plan notes pr-build/ holds two PR screenshots (3 MB) from #1986. plans/ holds the plan for the merged #4049. docs/SKILL_NAME_CONFLICT_FIX.md is a February change note. Nothing references them. * docs: route always-loaded AGENTS.md files to scoped guides * docs(agents): cut scoped guides to scope, verify, traps, decisions Each AGENTS.md keeps four kinds of content: the scope of the directory, the verification commands, traps a local test run does not show, and decisions the code cannot state. Values, field lists, function inventories, test names, issue numbers and history are deleted, because the code, the tests and git state them. Search and fetch providers share one community guide. Four guides with no remaining content are removed. The size check now allows 6 KiB per file (hard limit 8 KiB) and 24 KiB per chain (hard limit 32 KiB). * style: format frontend guide table and guidance test imports --------- Co-authored-by: Willem Jiang <willem.jiang@gmail.com>
3.5 KiB
3.5 KiB
Backend (backend/)
The Python backend: the publishable harness in packages/harness/deerflow/, the
public extension contract in packages/extension-api/, and the unpublished
Gateway and IM channels in app/. In every deployment the agent runtime runs
inside the Gateway. Design docs are in docs/; start with
ARCHITECTURE.md and API.md.
Guides by area
Read the guide for an area before you change it.
| Area | Guide |
|---|---|
| Run streaming, checkpoints, run ownership | runtime |
| Repositories, leases, scheduled tasks, schema changes | persistence, migrations |
config.yaml, extensions_config.json |
config |
| Lead agent, prompt, thread state, middleware chain | agents, middlewares |
| Memory, subagents, skills, tools | memory, subagents, skills, tools |
| Sandbox, uploads, MCP, models, extensions | sandbox, uploads, mcp, models, extensions |
| Trace ID, embedded client, other root modules | harness package |
| Search, fetch and sandbox providers | community, then the provider's own guide |
| Gateway, routers, IM channels | gateway, routers, channels |
| Tests, benchmarks | tests, benchmarks |
Verify
make test # offline suite in parallel shards
make test-blocking-io # strict blocking-I/O suite
make lint
make format
make test-live # calls real APIs; needs DEER_FLOW_RUN_LIVE_TESTS=1
Run make test and make test-blocking-io before and after a change. Every
feature and bug fix ships with a test in tests/. Live tests stay opt-in, so the
default suite needs no network and no API key.
Rules
- The harness never imports
app.app.*importsdeerflow.*, and not the reverse, because the harness is published on its own.tests/test_harness_boundary.pyenforces this in CI. - Start the Gateway with
make devormake gateway.make devexcludesDEER_FLOW_HOMEandbackend/sandboxfrom the reload watcher. A bareuvicorn --reloadrestarts the Gateway during a run, because agent tasks write Python files belowDEER_FLOW_HOME. - From the repository root, run backend tools with
uv run --no-sync --project backend.--projectkeeps the caller's working directory, so relative config paths still resolve.--no-synckeeps installed extras such as the PostgreSQL drivers. - Run Python through
uv runinsidebackend/, without--no-sync, so the environment matches the lock. - Guard POSIX-only test markers with
os.name. Windows collects the same files. - Add a schema change with
make migrate-rev MSG="..."and follow the migrations guide.