feat: add snapshot-based none VCS mode

This commit is contained in:
liujing
2026-07-17 11:50:53 +08:00
parent 758c41a953
commit b756a10c35
11 changed files with 1336 additions and 121 deletions
+10 -2
View File
@@ -40,11 +40,12 @@ $agent-workflow-host 日志 <run-id> [--follow]
## Start A Confirmed Plan
1. Resolve the target VCS root (Git or SVN) and inspect the repository before execution.
1. Resolve the target VCS root (Git, SVN, or None/snapshot mode) and inspect the repository/directory before execution.
2. Run these preflight checks:
- `command -v agent-workflow`
- For Git: `git status --porcelain` must be empty.
- For SVN: `svn status` must show a clean working copy with no mixed revisions.
- For None (snapshot mode): No clean checks are required.
- Probe the selected executor with `<executor> --version`.
- Confirm no unresolved active workflow prevents a new run.
3. Do not install tools, commit, or stash automatically. Report the exact missing prerequisite and stop.
@@ -66,7 +67,7 @@ $agent-workflow-host 日志 <run-id> [--follow]
7. Start the run and record the emitted run ID, then immediately print a logs-follow command the user can run independently:
```bash
agent-workflow start --plan <temp-plan.json> --executor <reasonix|claude|agy> [--vcs <git|svn>]
agent-workflow start --plan <temp-plan.json> --executor <reasonix|claude|agy> [--vcs <git|svn|none>]
```
After starting, announce:
@@ -181,6 +182,13 @@ After `fix`, repeat review and decision for the new cycle. Respect the configure
- Reject runs with switched paths, externals, conflicts, or incomplete states
- If mixed revisions detected: stop and instruct user to run `svn update`
### None Workflows (Snapshot Mode)
- Automatically falls back to `none` if no Git or SVN repository is found.
- No repository cleanliness checks are required.
- Baseline is stored as a file system snapshot in the workflow run directory (`baseline-snapshot.json`).
- Ignores `.gitignore` and `.agent-workflowignore` directories/files. `.git` and `.svn` are always excluded. Ignored files are not protected by frozen scope gates.
- The executor safety prompt dynamically adapts to avoid running `git status` or `svn status`.
## Final Report
Report: