Repository docs · as authored
Feature list (English)
A local reading view of the repository's documents: the body is served as authored (Chinese documents are not translated) and every in-document link is rewritten to stay inside this app.
Source: docs/features-en.md
This document is served as authored. This page translates the chrome — not the document text.
FDE Scope is the complete on-site operating system for a Forward Deployed Engineer. It codifies the full FDE SOP (4 zones · 18 phases) into an executable, gate-enforced state machine, covering both software/SaaS (the
ticketprofile) and manufacturing / embodied robotics (themanufacturingprofile). Built on AgentScope 2.0.This is the full feature list. Every item is executable code with test coverage; the count-level promises (18 phases / 10 gates / 56 routes…) are pinned by the architecture guard suite.
中文版:
docs/features.md
Overview
flowchart LR
subgraph ZA["Zone A · Pre-engagement — frame it"]
direction TB
P1["1 Qualification"] --> P2["2 Site survey 🏭<br/>gate: site_survey"]
P2 --> P3["3 Stakeholder map"] --> P4["4 Success criteria<br/>gate: success_criteria"]
end
subgraph ZB["Zone B · Build — make it"]
direction TB
P5["5 Connect 🏭<br/>gate: air_gap"] --> P6["6 Corpus forge"]
P6 --> P7["7 Prototype on real data"]
P7 --> P8["8 Validate with stakeholders"]
P8 --> P9["9 Deploy 🏭<br/>gates: fat_sat · functional_safety · conformity"]
P9 --> P10["10 Eval"]
end
subgraph ZC["Zone C · Operationalization — keep it running"]
direction TB
P11["11 SLO/SLA + on-call<br/>gates: slo · shift_handover 🏭"] --> P12["12 Runbook"]
P12 --> P13["13 Monitoring / drift"]
P13 --> P14["14 Change mgmt + training 🏭<br/>gate: works_council"]
P14 --> P15["15 Flywheel → productize"]
end
subgraph ZD["Zone D · Handoff — hand it over"]
direction TB
P16["16 Ops handoff"] --> P17["17 Knowledge transfer"]
P17 --> P18["18 Disengage · customer sign-off<br/>gate: handoff_signoff"]
end
ZA --> ZB --> ZC --> ZD
classDef ind fill:#fdecea,stroke:#c0392b;
class P2,P5,P9,P11,P14 ind
🏭 red = industrial-only, executed only under the manufacturing profile (the
ticket profile runs 15 phases). Each gate: attaches to leaving that
phase: advance re-evaluates it live, and blockers refuse passage.
1. SOP engine engagement/
The 18-phase state machine (Zone A: 1–4, Zone B: 5–10, Zone C: 11–15, Zone D: 16–18).
| # | Phase slug | Name | Gate(s) | Notes |
|---|---|---|---|---|
| 1 | qualification |
Qualification & problem framing | — | Is this FDE-worthy: high value, hard data, concentrated customer |
| 2 🏭 | site_survey |
Site survey / gemba walk | site_survey |
Physical environment, OT network, asset inventory, safety constraints |
| 3 | stakeholder_map |
Stakeholder map & alignment | — | Exec sponsor + second sponsor (prevents Sponsor Collapse) |
| 4 | success_criteria |
Success criteria, contractualized | success_criteria |
Measurable outcome + written done-definition (≤14d integrate, ≤90d live, ≤120d handoff), ≥2 sponsors |
| 5 | connect |
Data connect | air_gap 🏭 |
Connectors bring customer data in; air-gap posture settled here |
| 6 | corpus |
Corpus forge | — | Scrub → coverage → synthesis of gaps → report |
| 7 | prototype_real_data |
Prototype on real, uncurated data | — | Not on a curated test set — the main source of demo→production gaps |
| 8 | validate |
Stakeholder validation | — | Validate with real stakeholders (including conflicting success metrics) |
| 9 🏭 | deploy |
Deploy | fat_sat + functional_safety + conformity |
FAT → ship → SAT → commissioning; SaaS goes straight live |
| 10 | eval |
Eval & delivery | — | Prove value with the eval framework; bad cases drive tuning |
| 11 | slo_sla |
SLO/SLA + on-call | slo + shift_handover 🏭 |
Error budget, alert routing, escalation path, on-call including the FDE |
| 12 | runbook |
Runbook authoring | — | Incident response, rollback, safe failure modes |
| 13 | monitoring_drift |
Monitoring & drift detection | — | AI is probabilistic and degrades on production data |
| 14 🏭 | change_mgmt_training |
Change management + end-user training | works_council |
Includes works-council co-determination (BetrVG §87) |
| 15 | flywheel_productization |
Flywheel → productization | — | Field learnings flow back into the core product (weekly review) |
| 16 | ops_handoff |
Ops handoff | — | Ownership moves to Customer Success / customer ops |
| 17 | knowledge_transfer |
Knowledge transfer | — | Doc pack: runbook + eval report + SLO + model card + training material |
| 18 | disengage |
Disengage | handoff_signoff |
Hand over ≤120d after go-live; the endless pilot is an anti-pattern |
Why it matters
- Full coverage: the naive model builds only the Build zone; the 13 phases of Zones A/C/D decide whether an engagement produces value. This engine makes all 18 phases a mandatory state machine.
advance/rollback/--force: a forced advance still evaluates and records — exceptions leave an audit trail.- On-site journal: research / implementation / optimization records, one-click capture into the skills library.
2. Ten executable gates engagement/gates/
A gate is a predicate, not a checklist: Gate.check(ctx) re-derives the truth
from the engagement context on every advance(). A stale pass never grants
passage.
| Gate | Applies | Checks |
|---|---|---|
site_survey |
🏭 | Site location required; empty assets / multi-shift without networks → warning |
success_criteria |
🏢 | Written criteria + ≥2 sponsors; sponsor without a metric → warning |
fat_sat |
🏭 | FAT and SAT both passed, each signed off |
functional_safety |
🏭 | Achieved PL/SIL ≥ required; ISO 10218 assessed; hazard analysis mandatory (blocker) |
conformity |
🏭 | EU-AI-Act high-risk ⇒ CE marking + technical construction file + hazard analysis |
works_council |
🏭 | Works-council approval signed off when representatives exist |
air_gap |
🏭 | Offline deployment posture settled at connect time (no phone-home later) |
shift_handover |
🏭 | Multi-shift sites need a digital handover log + per-shift runbook |
slo |
🏢 | SLO/SLA + error budget + alert route (missing route → warning) |
handoff_signoff |
🏢 | Handoff package complete, customer accepted |
Enforcement flow:
flowchart TD
A["engage advance (optionally --force)"] --> B["evaluate_phase_gates(ctx)<br/>all gates of the current phase · re-evaluated unconditionally"]
B --> C{"blockers empty?"}
C -->|"yes"| D["✅ record pass → advance to next phase"]
C -->|"no"| E{"--force given?"}
E -->|"no"| F["⛔ refuse · return the blockers list<br/>auto-generate a gate_hint skill draft"]
E -->|"yes"| G["⚠️ force through · still evaluated and recorded<br/>exception leaves an audit trail"]
Why it matters: checklists rot; gates don't. Enforcement moves from
discipline to mechanism, and even a --force exception stays distinguishable
from a clean pass.
3. Scenario profiles profiles/
ticket |
manufacturing |
|
|---|---|---|
| Scenario | Customer service / SaaS | Embodied robotics / factory |
| Phases | 15 (🏭 skipped) | 18 (all) |
| Main connectors | CSV / Zammad / Salesforce / MySQL | OPC UA / MQTT-Sparkplug / ROS2 / MES / Historian |
| KPIs | Ticket metrics | OEE / MTBF / MTTR / FPY / DPMO / grasp success / collision rate |
| Industrial gates | N/A | All 7 on (FAT/SAT, functional safety, conformity, works council, air gap, shift handover, site survey) |
4. Surfaces (four entries, one engine, one data root)
| Surface | Form | What it does |
|---|---|---|
| CLI | fde-scope |
13 command groups: connect / corpus / deploy / eval / flywheel / engage / gate / skill / ontology / qwenpaw / handoff / kpi / web |
| Web console | FastAPI single page, 56 routes | Engagement dashboard (advance/rollback/blockers), gate inspector, guided mode (plain-language phase guidance, deliverable checklists, blocker→next-step translation, catalog deep links, AI-drafted context, goal→task plan), six context cards, corpus forge (≤10 MiB upload), KPI explorer, report browser, agent deploy preflight, read-only ontology browser, certification centre (exam specs, public outlines, sample items and a channel due-diligence checklist for three platforms, every figure graded by provenance), glossary (every term grouped by theme on its own page, kept out of the prose), Level-1 course (all 25 course documents rendered from source on one page, in-text citations rewritten to in-app links), SOP full text (rendered locally from source, section navigation and tables), skills handbook (the generated portal mounted in-app), repo docs (README plus 20 docs/ pages rendered locally, GitHub-style anchors and images served in-app), GTM site (the finished landing page mounted in-app with every external link rewritten to in-app routes or plain text) — the rail no longer jumps off-site |
| QwenPaw PawApp | Desktop plugin | 18 routes under /api/fde-scope + 2 agent tools + skill provider, same engine |
| macOS App | universal2 DMG | Double-click; same FastAPI object (127.0.0.1:8737), single-instance guard + health check + crash fallback |
Why it matters: all four surfaces share one data root (.fde_scope/) and
one preflight engine (build_deploy_plan) — zero divergence. No build chain;
pip install -e ".[dev]" runs everything.
The data pipeline at a glance (Layers 1–5)
flowchart LR
L1["Layer 1 · connectors<br/>ingest: 10 connectors"] -->|"samples + schema"| L2["Layer 2 · corpus<br/>forge: scrub→coverage→gap fill"]
L2 -->|"corpus + train/eval/test splits"| L3["Layer 3 · deploy<br/>assemble agents: AgentScope 2.0"]
L3 -->|"agents under test / deployed"| L4["Layer 4 · eval<br/>prove: ticket metrics + industrial KPIs"]
L4 -->|"bad cases"| L5["Layer 5 · flywheel<br/>learn: event mapping + retrain scheduler"]
L5 -.->|"corpus backflow"| L2
Each layer works standalone, with a one-to-one CLI command (connect /
corpus / deploy / eval / flywheel); together they form the closed loop
data → corpus → agents → evidence → learning, where the dotted back edge
is the flywheel: bad cases and real events flow back into the corpus to drive
the next retrain.
5. Connectors connectors/ (Layer 1)
| Connector | slug | Maturity |
|---|---|---|
| CSV | csv |
Complete (with fallback parser) |
| OPC UA | opcua |
Real industrial IO (asyncua driver, mock-tested) |
| MQTT-Sparkplug B | mqtt_sparkplug |
Real broker IO (paho-mqtt driver; env-var broker auth; mock + live-broker tests) |
| MySQL | mysql |
SQL implementation ([mysql] extra) |
| Zammad | zammad |
Real HTTP API (/api/v1/tickets pagination + Token auth; env-configured, JSONL replay fallback) |
| Salesforce | salesforce |
Real REST API (/services/data/vXX.X/query SOQL + Bearer auth; env-configured, JSONL replay fallback; read-only) |
| MES (ISA-95) | mes |
Real REST API (work-orders pagination + Bearer auth; env-configured, endpoint overridable, JSONL replay fallback) |
| Historian | historian |
Real REST API (time-series samples by tag + Bearer auth; env-configured, generic/PI-style endpoints, JSONL replay fallback) |
| ROS2 bag | ros2 |
Real rosbags replay (rosbags>=0.11 driver; mock + real-bag env-gated tests) |
| Document parsers | — | PDF / Word / Excel / PPT (lazy import) |
All connectors share one schema-preview + samples interface; sample tools cap
at MAX_TOOL_ROWS = 50 rows per call (a preview channel, not an export
channel).
6. Corpus forge corpus/ (Layer 2)
PII scrub → dedup → quality gate → coverage → gap-targeted synthesis →
auditable HTML report, with stratified train/eval/test splits
(CorpusReport.splits). Gap categories can be synthesized by an LLM
(--llm, deterministic fallback), quality-scored by the LLM with a
rule-based fallback.
7. Multi-agent deploy deploy/ (Layer 3, AgentScope 2.0 lazy)
- Three-pillar assembly: Agent (a real
agentscope.agent.Agent: model wiring + role Toolkit +AgentState(permission_context=...)) / Permission / Workspace. - Three channels to spawn agents: CLI
--agent name:role[:model](repeatable, Chinese names work) / YAMLTenantConfig.agents/ per-agentspec.toolkitoverride. - Role → tool buckets: Chinese keywords route roles into data/log/file buckets and derive connector sets; unmatched roles degrade to corpus-only.
- Honest manifest: tools without a configured data source are labeled unbound with the reason — never pretend to be usable.
- Official coordination: each agent exports a
SubAgentTemplateblueprint into a realcreate_app(custom_subagent_templates=...); the leader dispatches viaAgentCreate, members report viaTeamSay. --serve:build_app()+ uvicorn starts a real multi-agent service (needs the.[agentscope]extra + Redis + a reachable model);TenantDeployer.stop()for shutdown.- One preflight, three entries: Web
/api/deploy/plan· PawApp/deploy/plan·deploy --dry-run, pure data, zero AgentScope import.
Why it matters: bound tools get explicit ALLOW rules; unmatched tools fall
back by mode to DEFAULT→ASK (HITL) or DONT_ASK→DENY; the default deny set
always includes access_other_tenant / delete_any / exec_shell.
8. Eval + industrial KPIs eval/ (Layer 4)
Ticket metrics plus industrial KPIs: OEE / MTBF / MTTR / FPY / DPMO / grasp
success rate / collision & intervention rate (fde-scope kpi + the Web KPI
explorer). A bad-case miner turns failures into tuning fuel (feeds the
flywheel). fde-scope eval --agent mimo puts MiMo in the evaluated seat.
9. Flywheel flywheel/ (Layer 5)
Concept→real-event mapping, corpus backflow, and a retrain scheduler — the runtime behind phase 15 ("weekly productization review, ≥1 feature productized").
10. Ontology semantic layer ontology/
- TBox: fde-core + mfg-overlay (ISA-95) built-in schemas (
data/*.yaml, zero new dependencies). - SKOS concept scheme + ABox workspace stores; SHACL-lite validation
(
ONTO-*error codes). - Standard JSON-LD 1.1 export (
fde-scope ontology export; the Web read-only view uses the same implementation). - Wired into corpus coverage and skill search (concept alignment).
11. Skills capture skills/
- Lifecycle draft → published → archived; file-based library
.fde_scope/skills/(zero database). - Three capture entries: manual
skill add/ gate-blocking hints (prefilled gate_hint drafts) / automatic capture on advance. - Dual-format export: AgentScope 2.0 (registered via
Toolkit(skills_or_loaders=...)) and QwenPaw (customized_skillsauto-discovery), following the Anthropic Agent Skills spec. - Full skills API in the Web UI + draft review queue; a 101-page skills
handbook (
docs/skills-catalog/, gated bymake check-catalog).
12. Integrations integrations/
- QwenPaw:
qwenpaw export --tenant acme --agent "researcher:调研员"exports the multi-agent topology (config.json+ workspaces + AGENTS.md persona + skill packs + corpus notes);qwenpaw validatechecks it against the official rules. - ACP adapter: the
AcpEndpointbase class exposes FDE capabilities as a QwenPaw ACP runner (delegate_external_agent). - Manifest validator.
13. Optional LLM llm.py
MiMo Token Plan (OpenAI-compatible, stdlib urllib, zero new dependencies),
environment variables only (FDE_SCOPE_MIMO_API_KEY / _BASE_URL /
_MODEL). All six entry points fall back to deterministic rules on failure:
| Entry | Enabled | Fallback |
|---|---|---|
| Corpus synthesis | corpus --llm |
Rule-based synthesis |
| Quality scoring | automatic after synthesis | Rule-based score |
| Eval benchmark | eval --agent mimo |
— (needs LLM; clear error without a key) |
| Deploy manifest | carries an llm section automatically |
— |
| Runbook | handoff --llm |
Template |
Web /api/forge |
enabled when a key exists | Rule-based synthesis |
14. Handoff engagement/handoff.py
Assembles runbook + eval report + SLO + training material into a sign-off
package; fde-scope handoff <id> --accept records customer acceptance,
satisfying the handoff_signoff gate for disengage.
15. Engineering guarantees
Seven invariants (live gate re-evaluation / server-generated IDs /
env-var-only credentials / atomic writes / rule grants as the only permission
channel / measured AgentScope window quoted consistently / web mutating
routes require auth), pinned by
tests/test_architecture_guard.py. Verification anchors:
make test # full suite (~91% coverage)
pytest -m agentscope # real-library runtime tests
pytest tests/test_architecture_guard.py # contract guards
ruff check fde_scope tests && ruff format --check fde_scope tests
16. Feature → advantage quick reference
| Feature | Problem it solves | Advantage over alternatives |
|---|---|---|
| 18 phases / 4 zones state machine | Teams build only the Build half | The only open-source tool modeling the full FDE arc as an executable state machine |
| 10 executable gates | Checklists rot once filled in | Predicates, not records: truth re-derived on every advance |
| Industrial overlay | FAT/SAT, functional safety, conformity unmodeled elsewhere | Each is an executable Gate.check(); blockers actually block |
| Dual profiles | SaaS and factory are different sites | One engine; connectors/KPIs/gates switch per scenario |
| Four surfaces, one source | CLI/Web/desktop drift apart | One data root + one preflight engine, zero divergence |
| Honest manifest | Deploy tools pretend tools work | Unbound tools labeled with reasons; see the plan before the site visit |
| Rule-based permissions | Agent permissions live in verbal agreements | Bound ⇒ ALLOW rule; unmatched ⇒ HITL/DENY; high-risk ops denied by default |
| Corpus forge pipeline | Dirty data, blind spots, no audit trail | Full chain + auditable HTML report + stratified splits |
| Industrial KPIs | Generic evals don't speak production | Native metrics in production language (OEE/MTBF/FPY/DPMO/collision) |
| Data flywheel | Learning evaporates after the pilot | Mapping + backflow + retrain scheduling; field learning flows into product |
| Skills capture | Every FDE rebuilds from zero | Three capture entries + lifecycle + dual-format export, reused across customers |
| Ontology layer | Corpus/skills/events speak different vocabularies | Unified concepts + validation + standard export |
| Zero-config verifiable | "Five hours to install, two minutes to demo" | No key, no Docker, no AgentScope to run the evidence chain |
| Credentials env-var only | Keys leak into manifests/reports/logs | Architecture invariant + guard tests |
| Certification centre | Channel-admission and exam specs are scattered across vendor sites and can't be cross-checked | Exam specs, public outlines, sample items and a due-diligence checklist for three platforms on one page; every figure graded official/noted/gap and gaps stated rather than filled |
| Level-1 course | Course Markdown sits loose in the repo; newcomers don't know where to start or whether they're reading the current copy | /course renders the 25 course-level-1/ documents straight from source (chapter anchors, rewritten internal links, readable task checklists) with no copy and no drift |
17. Not done yet (roadmap)
- AgentScope Studio (npm
@agentscope/studio) integration