{
  "research_date": "2026-10-31",
  "repositories": {
    "nullclaw": {"url": "https://github.com/nullclaw/nullclaw", "commit": "5f1cade05c19b6ecdfb9565ae3305e892e484da9"},
    "infinity": {"url": "https://github.com/hydro-project/infinity", "commit": "1abc6fcff1f186124f924b56aa92c3a3684c90c5"}
  },
  "sources": [
    {"id": "N01", "repo": "nullclaw", "path": "src/session.zig", "line": 204, "label": "Session 直接持有 Agent；getOrCreate、mutex 与恢复路径"},
    {"id": "N02", "repo": "nullclaw", "path": "src/session.zig", "line": 2243, "label": "evictIdle 扫描、跳过 active turn 与销毁 session"},
    {"id": "N03", "repo": "nullclaw", "path": "src/daemon.zig", "line": 1193, "label": "分片队列容量、worker 数、每 100 次处理触发回收"},
    {"id": "N04", "repo": "nullclaw", "path": "src/memory/engines/sqlite.zig", "line": 835, "label": "loadMessages 无界历史读取；session.zig:1488 为调用点"},
    {"id": "N05", "repo": "nullclaw", "path": "src/memory/root.zig", "line": 208, "label": "SessionStore 与分页详细消息契约；Memory 另有独立 vtable"},
    {"id": "N06", "repo": "nullclaw", "path": "src/agent/root.zig", "line": 2708, "label": "主 turn 的逐工具同步执行循环"},
    {"id": "N07", "repo": "nullclaw", "path": "src/providers/root.zig", "line": 1, "label": "Provider 契约、factory 与配置/兼容层导出"},
    {"id": "N08", "repo": "nullclaw", "path": "src/channels/root.zig", "line": 1, "label": "Channel 契约与渠道产品边界"},
    {"id": "N09", "repo": "nullclaw", "path": "src/tools/root.zig", "line": 182, "label": "Tool.VTable.execute 同步返回 ToolResult"},
    {"id": "N10", "repo": "nullclaw", "path": "src/config_types.zig", "line": 406, "label": "Agent 配置默认值、parallel_tools 与 session TTL"},
    {"id": "N11", "repo": "nullclaw", "path": "src/memory/engines/registry.zig", "line": 23, "label": "后端 capability：session store、事务、outbox 支持独立"},
    {"id": "N12", "repo": "nullclaw", "path": "src/agent/turn_persistence.zig", "line": 18, "label": "persistTurn 保存 user/assistant/usage；错误被忽略"},
    {"id": "N13", "repo": "nullclaw", "path": "src/agent/compaction.zig", "line": 78, "label": "按消息数/token 触发的上下文压缩"},
    {"id": "N14", "repo": "nullclaw", "path": "src/bus.zig", "line": 409, "label": "BoundedQueue.publish 与容量 100 的 bus"},
    {"id": "N15", "repo": "nullclaw", "path": "src/channels/outbox.zig", "line": 164, "label": "最终消息出站 outbox、claim、持久化与重试"},
    {"id": "N16", "repo": "nullclaw", "path": "src/tools/delegate.zig", "line": 33, "label": "命名 provider/model 子任务委派与 completeAgentPrompt"},
    {"id": "N17", "repo": "nullclaw", "path": "src/subagent.zig", "line": 99, "label": "后台 task map、OS 线程、结果通知与 deinit 回收"},
    {"id": "N18", "repo": "nullclaw", "path": "docs/integration-roadmap.md", "line": 1, "label": "2026-03-13 业务集成目标与 Planned 端点，非现成能力证明"},
    {"id": "N19", "repo": "nullclaw", "path": "src/gateway.zig", "line": 719, "label": "Webhook/public-bind bearer 鉴权与配对边界"},
    {"id": "N20", "repo": "nullclaw", "path": "src/tools/http_request.zig", "line": 14, "label": "HTTP 工具 allowed_domains 与 SSRF/DNS pinning 例外"},
    {"id": "N21", "repo": "nullclaw", "path": "build.zig.zon", "line": 1, "label": "Zig 版本及 SQLite/websocket/wasm3 构建依赖"},
    {"id": "N22", "repo": "nullclaw", "path": "LICENSE", "line": 1, "label": "NullClaw MIT 许可证"},
    {"id": "N23", "repo": "nullclaw", "path": "docs/en/gateway-api.md", "line": 24, "label": "已有 webhook/A2A API 与鉴权；不等于路线图端点"},
    {"id": "I01", "repo": "infinity", "path": "crates/infinity-agent-core/src/traits.rs", "line": 27, "label": "ConversationStore、StateStore、InputSender 的平台契约"},
    {"id": "I02", "repo": "infinity", "path": "crates/infinity-agent-core/src/system/local/router.rs", "line": 241, "label": "FuturesUnordered、worker 移除、unbounded channels 与 spawn_local"},
    {"id": "I03", "repo": "infinity", "path": "crates/infinity-agent-core/src/system/local/driver.rs", "line": 331, "label": "check_before_idle：未决工具 AwaitInput，订阅本身不保活"},
    {"id": "I04", "repo": "infinity", "path": "crates/infinity-agent-core/src/system/thread.rs", "line": 414, "label": "step_no_defer、sync-before-dispatch 与可退出切片"},
    {"id": "I05", "repo": "infinity", "path": "crates/infinity-daemon/src/memory_store.rs", "line": 46, "label": "daemon 持久化 wrapper、core 内存 store 与 loaded 集合"},
    {"id": "I06", "repo": "infinity", "path": "crates/infinity-agent-core/src/traits.rs", "line": 49, "label": "history/ancestor API 返回完整 Vec，范围不等于字节预算"},
    {"id": "I07", "repo": "infinity", "path": "crates/infinity-agent-core/Cargo.toml", "line": 1, "label": "core 包依赖，不要求完整 AWS embedding"},
    {"id": "I08", "repo": "infinity", "path": "README.md", "line": 1, "label": "Runtime、RAP、Infinity Code 的产品定位"},
    {"id": "I09", "repo": "infinity", "path": "crates/infinity-agent-core/src/system/builder.rs", "line": 452, "label": "step 的 Vec 分组、load、join_all；外层需限批"},
    {"id": "I10", "repo": "infinity", "path": "crates/infinity-agent-core/src/stores.rs", "line": 409, "label": "StateStore processed IDs/subscriptions/metadata 的长期内存状态"},
    {"id": "I11", "repo": "infinity", "path": "docs/src/components/MemoryChart.tsx", "line": 3, "label": "80k 上游内存样本的负载、环境与原始 RSS 数据"},
    {"id": "I12", "repo": "infinity", "path": "crates/infinity-agent-core/src/event_processor.rs", "line": 627, "label": "HistoryManager.sync 先 append；processed ID 写入结果被忽略"},
    {"id": "I13", "repo": "infinity", "path": "crates/infinity-daemon/src/memory_store.rs", "line": 350, "label": "JSON save_thread / save_thread_metadata 忽略文件写失败"},
    {"id": "I14", "repo": "infinity", "path": "crates/infinity-agent-core/src/tools/thread.rs", "line": 14, "label": "spawn_thread、fresh_context、父子报告与线程工具"},
    {"id": "I15", "repo": "infinity", "path": "crates/infinity-rap-bridge/src/lib.rs", "line": 41, "label": "callback dedup ID：tool result 稳定，subscription event 新 UUID"},
    {"id": "I16", "repo": "infinity", "path": "crates/infinity-agent-core/src/tools/rap_tool.rs", "line": 1, "label": "RAP tool 适配与回调执行原语"},
    {"id": "I17", "repo": "infinity", "path": "crates/infinity-mcp-bridge/src/lib.rs", "line": 1, "label": "MCP bridge：协议接入不等于工具重启续跑"},
    {"id": "I18", "repo": "infinity", "path": "docs/docs/infinity-runtime/model-providers.md", "line": 8, "label": "ModelProvider、rig/Bedrock、provider 自有 timeout 与错误分类"},
    {"id": "I19", "repo": "infinity", "path": "crates/infinity-daemon/src/ws_handler.rs", "line": 41, "label": "daemon HTTP/WebSocket upgrade 路径；需额外公网授权审查"},
    {"id": "I20", "repo": "infinity", "path": "docs/docs/rap/spec/overview.md", "line": 88, "label": "RAP 安全：认证由 embedding 实现，callback 应认证"},
    {"id": "I21", "repo": "infinity", "path": "crates/sandbox-local/src/backend.rs", "line": 277, "label": "macOS/Linux sandbox 命令及具体写限制策略"},
    {"id": "I22", "repo": "infinity", "path": "Cargo.toml", "line": 1, "label": "workspace 核心、daemon、provider、sandbox、AWS 的独立包边界"},
    {"id": "I23", "repo": "infinity", "path": "LICENSE.txt", "line": 1, "label": "Infinity Apache-2.0；分发另查 NOTICE 与 THIRD-PARTY"},
    {"id": "I24", "repo": "infinity", "path": "check.bash", "line": 13, "label": "全量验证前置条件、clippy、tests、doctests、Web e2e"},
    {"id": "I25", "repo": "infinity", "path": "crates/infinity-agent-core/examples/agent_scale.rs", "line": 1, "label": "内存基准驱动、合成工具与 idle 后采样"},
    {"id": "E01", "url": "https://sqlite.org/wal.html", "label": "SQLite 官方 WAL：单 writer 与同机共享内存边界", "verified_on": "2026-10-31"},
    {"id": "E02", "url": "https://developers.cloudflare.com/pages/functions/pricing/", "label": "Cloudflare Pages 官方静态资源请求定价", "verified_on": "2026-10-31"},
    {"id": "E03", "url": "https://developers.cloudflare.com/pages/platform/limits/", "label": "Cloudflare Pages 官方 Free plan 文件数/大小限制", "verified_on": "2026-10-31"},
    {"id": "E04", "url": "https://developers.cloudflare.com/pages/get-started/direct-upload/", "label": "Cloudflare Pages 官方 Direct Upload 部署方式", "verified_on": "2026-10-31"}
  ],
  "validation": {
    "nullclaw": {"tests_passed": 7490, "tests_skipped": 9, "tests_failed": 0, "reported_leaks": false, "proxy_variables_unset_for_tests": true, "release_small_build": "passed", "binary_bytes": 4889528, "help_max_rss_bytes": 2441216, "main_test_max_rss_build_summary": "249M"},
    "infinity": {"core_tests_passed": 108, "bridge_tests_passed": 15, "protocol_lib_tests": 0, "full_check": "blocked at prerequisites: jj missing", "full_workspace_verified": false},
    "same_workload_runtime_benchmark": "not performed",
    "production_sources_modified": false
  }
}
