修改agent流程,分步构建cdsl

This commit is contained in:
2026-08-27 18:59:33 +08:00
parent 7fc1dfa84d
commit b26db86d78
54 changed files with 6835 additions and 9984 deletions
+43 -19
View File
@@ -10,39 +10,63 @@ The backend owns the application API and CAD generation workflow:
Expected development entrypoint: `app.main:app`, served by Uvicorn.
## Incremental Generation Configuration
## Reasoning Effort
Incremental generation is enabled by default. It requires a separately
configured vision-capable review model and the Python OpenCascade/Pillow
technical renderer; a run
fails instead of skipping visual review when either is unavailable.
The backend uses the Chat Completions API. Configure a provider's reasoning
budget with `CDSL_<PROVIDER>_REASONING_EFFORT`; for the current OpenAI setup:
```dotenv
# Authoring provider/model must already be configured as usual.
CDSL_INCREMENTAL_GENERATION=1
CDSL_OPENAI_REASONING_EFFORT=medium
```
Use `low`, `medium`, or `high` according to the latency/cost versus quality
tradeoff. The setting is sent as Chat Completions' `reasoning_effort` field to
authoring, streaming, and visual-review requests. Leave it empty to use the
provider/model default. The selected OpenAI-compatible endpoint must support
the requested value.
## Autonomous CDSL Agent Configuration
The autonomous agent writes one frozen free-form `requirements.md`, then
observes, measures, renders and appends one CDSL feature at a time. Its author
uses normal function calls; no provider strict JSON Schema capability or
complete modelling DAG is required. Candidate fragments are rebuilt in a
staging directory through `cdsl_only` before a checkpoint can be committed.
Final publication requires a separately configured vision-capable review model
and the Python OpenCascade/Pillow technical renderer. The agent may build and
inspect intermediate checkpoints without image review; a final run fails
closed if its independent review configuration is unavailable.
```dotenv
# Must name one configured provider and one model listed in that provider's
# CDSL_<PROVIDER>_VISION_MODELS setting. It is intentionally not inferred
# from the authoring model.
CDSL_REVIEW_PROVIDER=openai
CDSL_REVIEW_MODEL=gpt-4.1-mini
CDSL_OPENAI_VISION_MODELS=gpt-4.1-mini
CDSL_REVIEW_PROVIDER=deepseek
CDSL_REVIEW_MODEL=deepseek-v4-flash-vision-exp
CDSL_DEEPSEEK_VISION_MODELS=deepseek-v4-flash-vision-exp
# Install Python rendering dependencies. The renderer reads the revision STEP
# file and creates canonical images without a browser or GPU driver.
pip install -r requirements.txt
# Optional per-node retry budgets.
CDSL_NODE_AUTHORING_ATTEMPTS=2
CDSL_NODE_REPAIR_ATTEMPTS=2
CDSL_NODE_REPLAN_ATTEMPTS=1
# Limits apply to the current checkpoint head, never to total task complexity.
CDSL_AGENT_TOOL_CALLS_PER_CYCLE=12
CDSL_AGENT_CANDIDATE_ATTEMPTS_PER_HEAD=3
CDSL_AGENT_CONSECUTIVE_NO_PROGRESS_LIMIT=6
CDSL_AGENT_MAX_FEATURES_PER_FRAGMENT=6
CDSL_AGENT_CONTEXT_CHAR_LIMIT=24000
CDSL_AGENT_RENDER_CACHE=true
```
Every checkpoint is rebuilt from its fully materialized CDSL through the
The author chooses each coherent 1-6 feature batch. Every rebuilt batch is
rendered and independently reviewed before it can become a checkpoint; only
an accepted reviewer verdict advances the working model. Every checkpoint is rebuilt from its fully materialized CDSL through the
`cdsl_only` runtime. Checkpoint GLB files are preview-only; STEP, CDSL, and
reports are available only after the task reaches `COMPLETED`.
The generation plan contains semantic node IDs only. The backend derives the
unique CDSL feature and sketch IDs from each node, then writes them during
fragment materialization. This keeps naming and topology ownership stable
without requiring the authoring model to reproduce internal identifiers.
The backend assigns feature and sketch IDs, appends causal dependencies and
expands only opaque current-snapshot selector tokens. It does not compile
geometry templates or correct workplanes, profiles, sizes, directions or
boolean semantics authored by the model. Failed candidates remain auditable
but never become revisions.