zero-workspace 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +18 -0
- package/README.md +187 -0
- package/config/component-versions.json +16 -0
- package/config/scenarioCapabilities.json +29 -0
- package/config/version-notes.yaml +244 -0
- package/dist/adapters/OutputAdapter.d.ts +79 -0
- package/dist/adapters/OutputAdapter.d.ts.map +1 -0
- package/dist/adapters/OutputAdapter.js +124 -0
- package/dist/adapters/OutputAdapter.js.map +1 -0
- package/dist/cli/check-node-version.d.ts +3 -0
- package/dist/cli/check-node-version.d.ts.map +1 -0
- package/dist/cli/check-node-version.js +153 -0
- package/dist/cli/check-node-version.js.map +1 -0
- package/dist/cli/plugins.d.ts +41 -0
- package/dist/cli/plugins.d.ts.map +1 -0
- package/dist/cli/plugins.js +742 -0
- package/dist/cli/plugins.js.map +1 -0
- package/dist/cli/rebuild.d.ts +63 -0
- package/dist/cli/rebuild.d.ts.map +1 -0
- package/dist/cli/rebuild.js +989 -0
- package/dist/cli/rebuild.js.map +1 -0
- package/dist/cli/repair.d.ts +7 -0
- package/dist/cli/repair.d.ts.map +1 -0
- package/dist/cli/repair.js +925 -0
- package/dist/cli/repair.js.map +1 -0
- package/dist/cli/setup.d.ts +7 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +452 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/update.d.ts +10 -0
- package/dist/cli/update.d.ts.map +1 -0
- package/dist/cli/update.js +426 -0
- package/dist/cli/update.js.map +1 -0
- package/dist/cli/webui.d.ts +6 -0
- package/dist/cli/webui.d.ts.map +1 -0
- package/dist/cli/webui.js +210 -0
- package/dist/cli/webui.js.map +1 -0
- package/dist/http/index.d.ts +3 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +15 -0
- package/dist/http/index.js.map +1 -0
- package/dist/http/middleware/errorHandler.d.ts +16 -0
- package/dist/http/middleware/errorHandler.d.ts.map +1 -0
- package/dist/http/middleware/errorHandler.js +79 -0
- package/dist/http/middleware/errorHandler.js.map +1 -0
- package/dist/http/routes/admin.d.ts +3 -0
- package/dist/http/routes/admin.d.ts.map +1 -0
- package/dist/http/routes/admin.js +730 -0
- package/dist/http/routes/admin.js.map +1 -0
- package/dist/http/routes/backup.d.ts +3 -0
- package/dist/http/routes/backup.d.ts.map +1 -0
- package/dist/http/routes/backup.js +172 -0
- package/dist/http/routes/backup.js.map +1 -0
- package/dist/http/routes/config.d.ts +3 -0
- package/dist/http/routes/config.d.ts.map +1 -0
- package/dist/http/routes/config.js +157 -0
- package/dist/http/routes/config.js.map +1 -0
- package/dist/http/routes/context.d.ts +3 -0
- package/dist/http/routes/context.d.ts.map +1 -0
- package/dist/http/routes/context.js +82 -0
- package/dist/http/routes/context.js.map +1 -0
- package/dist/http/routes/log.d.ts +3 -0
- package/dist/http/routes/log.d.ts.map +1 -0
- package/dist/http/routes/log.js +105 -0
- package/dist/http/routes/log.js.map +1 -0
- package/dist/http/routes/memo.d.ts +6 -0
- package/dist/http/routes/memo.d.ts.map +1 -0
- package/dist/http/routes/memo.js +29 -0
- package/dist/http/routes/memo.js.map +1 -0
- package/dist/http/routes/node.d.ts +3 -0
- package/dist/http/routes/node.d.ts.map +1 -0
- package/dist/http/routes/node.js +251 -0
- package/dist/http/routes/node.js.map +1 -0
- package/dist/http/routes/state.d.ts +3 -0
- package/dist/http/routes/state.d.ts.map +1 -0
- package/dist/http/routes/state.js +48 -0
- package/dist/http/routes/state.js.map +1 -0
- package/dist/http/routes/workspace.d.ts +3 -0
- package/dist/http/routes/workspace.d.ts.map +1 -0
- package/dist/http/routes/workspace.js +249 -0
- package/dist/http/routes/workspace.js.map +1 -0
- package/dist/http/server.d.ts +10 -0
- package/dist/http/server.d.ts.map +1 -0
- package/dist/http/server.js +284 -0
- package/dist/http/server.js.map +1 -0
- package/dist/http/services.d.ts +93 -0
- package/dist/http/services.d.ts.map +1 -0
- package/dist/http/services.js +297 -0
- package/dist/http/services.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1073 -0
- package/dist/index.js.map +1 -0
- package/dist/prompts/guidanceContent.d.ts +18 -0
- package/dist/prompts/guidanceContent.d.ts.map +1 -0
- package/dist/prompts/guidanceContent.js +814 -0
- package/dist/prompts/guidanceContent.js.map +1 -0
- package/dist/prompts/index.d.ts +2 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +4 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/instructions.d.ts +56 -0
- package/dist/prompts/instructions.d.ts.map +1 -0
- package/dist/prompts/instructions.js +1343 -0
- package/dist/prompts/instructions.js.map +1 -0
- package/dist/services/BackupService.d.ts +104 -0
- package/dist/services/BackupService.d.ts.map +1 -0
- package/dist/services/BackupService.js +549 -0
- package/dist/services/BackupService.js.map +1 -0
- package/dist/services/CapabilityService.d.ts +38 -0
- package/dist/services/CapabilityService.d.ts.map +1 -0
- package/dist/services/CapabilityService.js +256 -0
- package/dist/services/CapabilityService.js.map +1 -0
- package/dist/services/ConfigService.d.ts +35 -0
- package/dist/services/ConfigService.d.ts.map +1 -0
- package/dist/services/ConfigService.js +105 -0
- package/dist/services/ConfigService.js.map +1 -0
- package/dist/services/ContextService.d.ts +65 -0
- package/dist/services/ContextService.d.ts.map +1 -0
- package/dist/services/ContextService.js +503 -0
- package/dist/services/ContextService.js.map +1 -0
- package/dist/services/DetectionService.d.ts +76 -0
- package/dist/services/DetectionService.d.ts.map +1 -0
- package/dist/services/DetectionService.js +262 -0
- package/dist/services/DetectionService.js.map +1 -0
- package/dist/services/DispatchService.d.ts +267 -0
- package/dist/services/DispatchService.d.ts.map +1 -0
- package/dist/services/DispatchService.js +1357 -0
- package/dist/services/DispatchService.js.map +1 -0
- package/dist/services/EventService.d.ts +81 -0
- package/dist/services/EventService.d.ts.map +1 -0
- package/dist/services/EventService.js +187 -0
- package/dist/services/EventService.js.map +1 -0
- package/dist/services/GuidanceService.d.ts +64 -0
- package/dist/services/GuidanceService.d.ts.map +1 -0
- package/dist/services/GuidanceService.js +259 -0
- package/dist/services/GuidanceService.js.map +1 -0
- package/dist/services/HealthService.d.ts +43 -0
- package/dist/services/HealthService.d.ts.map +1 -0
- package/dist/services/HealthService.js +276 -0
- package/dist/services/HealthService.js.map +1 -0
- package/dist/services/InstallationService.d.ts +62 -0
- package/dist/services/InstallationService.d.ts.map +1 -0
- package/dist/services/InstallationService.js +204 -0
- package/dist/services/InstallationService.js.map +1 -0
- package/dist/services/LogService.d.ts +35 -0
- package/dist/services/LogService.d.ts.map +1 -0
- package/dist/services/LogService.js +189 -0
- package/dist/services/LogService.js.map +1 -0
- package/dist/services/MemoService.d.ts +39 -0
- package/dist/services/MemoService.d.ts.map +1 -0
- package/dist/services/MemoService.js +288 -0
- package/dist/services/MemoService.js.map +1 -0
- package/dist/services/NodeService.d.ts +90 -0
- package/dist/services/NodeService.d.ts.map +1 -0
- package/dist/services/NodeService.js +958 -0
- package/dist/services/NodeService.js.map +1 -0
- package/dist/services/OpenSpecParser.d.ts +43 -0
- package/dist/services/OpenSpecParser.d.ts.map +1 -0
- package/dist/services/OpenSpecParser.js +191 -0
- package/dist/services/OpenSpecParser.js.map +1 -0
- package/dist/services/ReferenceService.d.ts +35 -0
- package/dist/services/ReferenceService.d.ts.map +1 -0
- package/dist/services/ReferenceService.js +195 -0
- package/dist/services/ReferenceService.js.map +1 -0
- package/dist/services/RepairService.d.ts +36 -0
- package/dist/services/RepairService.d.ts.map +1 -0
- package/dist/services/RepairService.js +429 -0
- package/dist/services/RepairService.js.map +1 -0
- package/dist/services/SearchService.d.ts +34 -0
- package/dist/services/SearchService.d.ts.map +1 -0
- package/dist/services/SearchService.js +293 -0
- package/dist/services/SearchService.js.map +1 -0
- package/dist/services/SessionService.d.ts +136 -0
- package/dist/services/SessionService.d.ts.map +1 -0
- package/dist/services/SessionService.js +297 -0
- package/dist/services/SessionService.js.map +1 -0
- package/dist/services/StateService.d.ts +97 -0
- package/dist/services/StateService.d.ts.map +1 -0
- package/dist/services/StateService.js +846 -0
- package/dist/services/StateService.js.map +1 -0
- package/dist/services/TutorialService.d.ts +114 -0
- package/dist/services/TutorialService.d.ts.map +1 -0
- package/dist/services/TutorialService.js +1262 -0
- package/dist/services/TutorialService.js.map +1 -0
- package/dist/services/WorkspaceService.d.ts +273 -0
- package/dist/services/WorkspaceService.d.ts.map +1 -0
- package/dist/services/WorkspaceService.js +1764 -0
- package/dist/services/WorkspaceService.js.map +1 -0
- package/dist/services/index.d.ts +15 -0
- package/dist/services/index.d.ts.map +1 -0
- package/dist/services/index.js +14 -0
- package/dist/services/index.js.map +1 -0
- package/dist/storage/FileSystemAdapter.d.ts +223 -0
- package/dist/storage/FileSystemAdapter.d.ts.map +1 -0
- package/dist/storage/FileSystemAdapter.js +384 -0
- package/dist/storage/FileSystemAdapter.js.map +1 -0
- package/dist/storage/JsonStorage.d.ts +158 -0
- package/dist/storage/JsonStorage.d.ts.map +1 -0
- package/dist/storage/JsonStorage.js +613 -0
- package/dist/storage/JsonStorage.js.map +1 -0
- package/dist/storage/MarkdownStorage.d.ts +178 -0
- package/dist/storage/MarkdownStorage.d.ts.map +1 -0
- package/dist/storage/MarkdownStorage.js +918 -0
- package/dist/storage/MarkdownStorage.js.map +1 -0
- package/dist/storage/SessionBindingStorage.d.ts +69 -0
- package/dist/storage/SessionBindingStorage.d.ts.map +1 -0
- package/dist/storage/SessionBindingStorage.js +131 -0
- package/dist/storage/SessionBindingStorage.js.map +1 -0
- package/dist/storage/index.d.ts +6 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +6 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/tools/capability.d.ts +18 -0
- package/dist/tools/capability.d.ts.map +1 -0
- package/dist/tools/capability.js +73 -0
- package/dist/tools/capability.js.map +1 -0
- package/dist/tools/config.d.ts +14 -0
- package/dist/tools/config.d.ts.map +1 -0
- package/dist/tools/config.js +61 -0
- package/dist/tools/config.js.map +1 -0
- package/dist/tools/context.d.ts +22 -0
- package/dist/tools/context.d.ts.map +1 -0
- package/dist/tools/context.js +139 -0
- package/dist/tools/context.js.map +1 -0
- package/dist/tools/dispatch.d.ts +41 -0
- package/dist/tools/dispatch.d.ts.map +1 -0
- package/dist/tools/dispatch.js +380 -0
- package/dist/tools/dispatch.js.map +1 -0
- package/dist/tools/help.d.ts +44 -0
- package/dist/tools/help.d.ts.map +1 -0
- package/dist/tools/help.js +227 -0
- package/dist/tools/help.js.map +1 -0
- package/dist/tools/import.d.ts +17 -0
- package/dist/tools/import.d.ts.map +1 -0
- package/dist/tools/import.js +96 -0
- package/dist/tools/import.js.map +1 -0
- package/dist/tools/index.d.ts +12 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +13 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/log.d.ts +21 -0
- package/dist/tools/log.d.ts.map +1 -0
- package/dist/tools/log.js +93 -0
- package/dist/tools/log.js.map +1 -0
- package/dist/tools/memo.d.ts +26 -0
- package/dist/tools/memo.d.ts.map +1 -0
- package/dist/tools/memo.js +188 -0
- package/dist/tools/memo.js.map +1 -0
- package/dist/tools/node.d.ts +34 -0
- package/dist/tools/node.d.ts.map +1 -0
- package/dist/tools/node.js +328 -0
- package/dist/tools/node.js.map +1 -0
- package/dist/tools/search.d.ts +14 -0
- package/dist/tools/search.d.ts.map +1 -0
- package/dist/tools/search.js +95 -0
- package/dist/tools/search.js.map +1 -0
- package/dist/tools/session.d.ts +22 -0
- package/dist/tools/session.d.ts.map +1 -0
- package/dist/tools/session.js +127 -0
- package/dist/tools/session.js.map +1 -0
- package/dist/tools/state.d.ts +10 -0
- package/dist/tools/state.d.ts.map +1 -0
- package/dist/tools/state.js +79 -0
- package/dist/tools/state.js.map +1 -0
- package/dist/tools/workspace.d.ts +38 -0
- package/dist/tools/workspace.d.ts.map +1 -0
- package/dist/tools/workspace.js +240 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/types/capability.d.ts +36 -0
- package/dist/types/capability.d.ts.map +1 -0
- package/dist/types/capability.js +3 -0
- package/dist/types/capability.js.map +1 -0
- package/dist/types/confirmation.d.ts +35 -0
- package/dist/types/confirmation.d.ts.map +1 -0
- package/dist/types/confirmation.js +3 -0
- package/dist/types/confirmation.js.map +1 -0
- package/dist/types/context.d.ts +174 -0
- package/dist/types/context.d.ts.map +1 -0
- package/dist/types/context.js +3 -0
- package/dist/types/context.js.map +1 -0
- package/dist/types/errors.d.ts +81 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +154 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/guidance.d.ts +162 -0
- package/dist/types/guidance.d.ts.map +1 -0
- package/dist/types/guidance.js +4 -0
- package/dist/types/guidance.js.map +1 -0
- package/dist/types/health.d.ts +61 -0
- package/dist/types/health.d.ts.map +1 -0
- package/dist/types/health.js +3 -0
- package/dist/types/health.js.map +1 -0
- package/dist/types/index.d.ts +10 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +11 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/memo.d.ts +132 -0
- package/dist/types/memo.d.ts.map +1 -0
- package/dist/types/memo.js +3 -0
- package/dist/types/memo.js.map +1 -0
- package/dist/types/node.d.ts +316 -0
- package/dist/types/node.d.ts.map +1 -0
- package/dist/types/node.js +3 -0
- package/dist/types/node.js.map +1 -0
- package/dist/types/repair.d.ts +62 -0
- package/dist/types/repair.d.ts.map +1 -0
- package/dist/types/repair.js +4 -0
- package/dist/types/repair.js.map +1 -0
- package/dist/types/search.d.ts +58 -0
- package/dist/types/search.d.ts.map +1 -0
- package/dist/types/search.js +3 -0
- package/dist/types/search.js.map +1 -0
- package/dist/types/settings.d.ts +109 -0
- package/dist/types/settings.d.ts.map +1 -0
- package/dist/types/settings.js +30 -0
- package/dist/types/settings.js.map +1 -0
- package/dist/types/workspace.d.ts +357 -0
- package/dist/types/workspace.d.ts.map +1 -0
- package/dist/types/workspace.js +3 -0
- package/dist/types/workspace.js.map +1 -0
- package/dist/utils/contentValidation.d.ts +47 -0
- package/dist/utils/contentValidation.d.ts.map +1 -0
- package/dist/utils/contentValidation.js +93 -0
- package/dist/utils/contentValidation.js.map +1 -0
- package/dist/utils/devLog.d.ts +43 -0
- package/dist/utils/devLog.d.ts.map +1 -0
- package/dist/utils/devLog.js +94 -0
- package/dist/utils/devLog.js.map +1 -0
- package/dist/utils/errorLogger.d.ts +27 -0
- package/dist/utils/errorLogger.d.ts.map +1 -0
- package/dist/utils/errorLogger.js +105 -0
- package/dist/utils/errorLogger.js.map +1 -0
- package/dist/utils/git.d.ts +123 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +400 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/hash.d.ts +32 -0
- package/dist/utils/hash.d.ts.map +1 -0
- package/dist/utils/hash.js +37 -0
- package/dist/utils/hash.js.map +1 -0
- package/dist/utils/id.d.ts +54 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js +96 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/utils/index.d.ts +8 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.js +9 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/logger.d.ts +42 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +228 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/manualChangeFormatter.d.ts +8 -0
- package/dist/utils/manualChangeFormatter.d.ts.map +1 -0
- package/dist/utils/manualChangeFormatter.js +21 -0
- package/dist/utils/manualChangeFormatter.js.map +1 -0
- package/dist/utils/paramValidator.d.ts +35 -0
- package/dist/utils/paramValidator.d.ts.map +1 -0
- package/dist/utils/paramValidator.js +214 -0
- package/dist/utils/paramValidator.js.map +1 -0
- package/dist/utils/port.d.ts +7 -0
- package/dist/utils/port.d.ts.map +1 -0
- package/dist/utils/port.js +28 -0
- package/dist/utils/port.js.map +1 -0
- package/dist/utils/processManager.d.ts +53 -0
- package/dist/utils/processManager.d.ts.map +1 -0
- package/dist/utils/processManager.js +267 -0
- package/dist/utils/processManager.js.map +1 -0
- package/dist/utils/sessionLogger.d.ts +28 -0
- package/dist/utils/sessionLogger.d.ts.map +1 -0
- package/dist/utils/sessionLogger.js +142 -0
- package/dist/utils/sessionLogger.js.map +1 -0
- package/dist/utils/time.d.ts +15 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +32 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/validation.d.ts +23 -0
- package/dist/utils/validation.d.ts.map +1 -0
- package/dist/utils/validation.js +88 -0
- package/dist/utils/validation.js.map +1 -0
- package/docs//346/227/245/345/277/227/347/263/273/347/273/237.md +389 -0
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214.md +1446 -0
- package/docs//347/224/250/346/210/267/346/211/213/345/206/214/344/270/216/346/212/200/346/234/257/346/214/207/345/215/227.md +873 -0
- package/package.json +94 -0
- package/plugin/README.md +141 -0
- package/plugin/agents/zero-executor.md +114 -0
- package/plugin/agents/zero-reviewer.md +133 -0
- package/plugin/docs/diagnostic-guide.md +128 -0
- package/plugin/hooks/hooks.json.deprecated +70 -0
- package/plugin/scripts/cursor-hook-entry.cjs +217 -0
- package/plugin/scripts/hook-entry.cjs +663 -0
- package/plugin/scripts/openspec-import.cjs +714 -0
- package/plugin/scripts/shared/binding.cjs +98 -0
- package/plugin/scripts/shared/config.cjs +65 -0
- package/plugin/scripts/shared/context.cjs +120 -0
- package/plugin/scripts/shared/index.cjs +34 -0
- package/plugin/scripts/shared/logger.cjs +196 -0
- package/plugin/scripts/shared/reminder.cjs +261 -0
- package/plugin/scripts/shared/utils.cjs +62 -0
- package/plugin/scripts/shared/workspace.cjs +322 -0
- package/plugin/skills/aligning-intent/SKILL.md +275 -0
- package/plugin/skills/analyzing-measurements/SKILL.md +223 -0
- package/plugin/skills/bootstrapping-workspace/SKILL.md +260 -0
- package/plugin/skills/designing-solutions/SKILL.md +363 -0
- package/plugin/skills/diagnosing-issues/SKILL.md +219 -0
- package/plugin/skills/discovering-context/SKILL.md +283 -0
- package/plugin/skills/dispatching-parent/SKILL.md +399 -0
- package/plugin/skills/executing-task/SKILL.md +340 -0
- package/plugin/skills/memo-create/SKILL.md +222 -0
- package/plugin/skills/planning-verification/SKILL.md +245 -0
- package/plugin/skills/preparing-dispatch/SKILL.md +299 -0
- package/plugin/skills/researching-tech/SKILL.md +223 -0
- package/plugin/skills/reviewing-quality/SKILL.md +354 -0
- package/plugin/skills/reviewing-spec/SKILL.md +333 -0
- package/plugin/skills/starting-info-flow/SKILL.md +196 -0
- package/web/README.md +5 -0
- package/web/dist/assets/DocsView-Bls_Vjsr.css +1 -0
- package/web/dist/assets/DocsView-Cxc0B63r.js +1447 -0
- package/web/dist/assets/HomeView-C7df9thb.js +9 -0
- package/web/dist/assets/HomeView-ufUdnfHk.css +1 -0
- package/web/dist/assets/MarkdownContent-DXp6CtSP.js +308 -0
- package/web/dist/assets/MarkdownContent-NFqiOBLH.css +1 -0
- package/web/dist/assets/NotFoundView-BYX1oZAn.css +1 -0
- package/web/dist/assets/NotFoundView-zrc0lT9q.js +1 -0
- package/web/dist/assets/WorkspaceView-BckqgNcX.js +27 -0
- package/web/dist/assets/WorkspaceView-J1dgpYMx.css +1 -0
- package/web/dist/assets/WsConfirmDialog-C1CvL4my.css +1 -0
- package/web/dist/assets/WsConfirmDialog-gLEP7uBD.js +4 -0
- package/web/dist/assets/arc-DPkKTkUT.js +1 -0
- package/web/dist/assets/architectureDiagram-VXUJARFQ-CEGpqUlZ.js +36 -0
- package/web/dist/assets/blockDiagram-VD42YOAC-Bv-mqdQH.js +122 -0
- package/web/dist/assets/c4Diagram-YG6GDRKO-DRyPatZ_.js +10 -0
- package/web/dist/assets/channel-B84mKLDZ.js +1 -0
- package/web/dist/assets/chunk-4BX2VUAB-c7DivX0u.js +1 -0
- package/web/dist/assets/chunk-55IACEB6-CGKTaLlo.js +1 -0
- package/web/dist/assets/chunk-B4BG7PRW-Czhx5Q_P.js +165 -0
- package/web/dist/assets/chunk-DI55MBZ5-CQVA7hcZ.js +220 -0
- package/web/dist/assets/chunk-FMBD7UC4-hEiPmi7V.js +15 -0
- package/web/dist/assets/chunk-QN33PNHL-rL6yYI-E.js +1 -0
- package/web/dist/assets/chunk-QZHKN3VN-BRyHBBzq.js +1 -0
- package/web/dist/assets/chunk-TZMSLE5B-D4PXmTz9.js +1 -0
- package/web/dist/assets/classDiagram-2ON5EDUG-CNn53ohi.js +1 -0
- package/web/dist/assets/classDiagram-v2-WZHVMYZB-CNn53ohi.js +1 -0
- package/web/dist/assets/cose-bilkent-S5V4N54A-BAREnRga.js +1 -0
- package/web/dist/assets/cytoscape.esm-BnkdMOzK.js +321 -0
- package/web/dist/assets/dagre-6UL2VRFP-DaYzb3MT.js +4 -0
- package/web/dist/assets/defaultLocale-C4B-KCzX.js +1 -0
- package/web/dist/assets/diagram-PSM6KHXK-BFltDqvd.js +24 -0
- package/web/dist/assets/diagram-QEK2KX5R-CR4VU2La.js +43 -0
- package/web/dist/assets/diagram-S2PKOQOG-0UfIeT-1.js +24 -0
- package/web/dist/assets/erDiagram-Q2GNP2WA-Bo17Xmng.js +60 -0
- package/web/dist/assets/flowDiagram-NV44I4VS-CzqhQp8s.js +162 -0
- package/web/dist/assets/ganttDiagram-JELNMOA3-TXwXtUcq.js +267 -0
- package/web/dist/assets/gitGraphDiagram-NY62KEGX-CoFQTy9O.js +65 -0
- package/web/dist/assets/graph-CIQcRIVd.js +1 -0
- package/web/dist/assets/index-BgLd_o_M.css +1 -0
- package/web/dist/assets/index-Cd_J3fZn.js +30 -0
- package/web/dist/assets/infoDiagram-WHAUD3N6-Dq0xXfVu.js +2 -0
- package/web/dist/assets/init-Gi6I4Gst.js +1 -0
- package/web/dist/assets/journeyDiagram-XKPGCS4Q-jIg5BOfC.js +139 -0
- package/web/dist/assets/kanban-definition-3W4ZIXB7-D2giu6aZ.js +89 -0
- package/web/dist/assets/katex-XbL3y5x-.js +261 -0
- package/web/dist/assets/layout-Bm-XCM-8.js +1 -0
- package/web/dist/assets/linear-FbekP9OZ.js +1 -0
- package/web/dist/assets/min-BrRCpYmF.js +1 -0
- package/web/dist/assets/mindmap-definition-VGOIOE7T-o-4ubbY9.js +68 -0
- package/web/dist/assets/noto-emoji-0-400-normal-BTQbhB77.woff +0 -0
- package/web/dist/assets/noto-emoji-0-400-normal-DHdy6Uhy.woff2 +0 -0
- package/web/dist/assets/noto-emoji-1-400-normal-0IvkdXBB.woff +0 -0
- package/web/dist/assets/noto-emoji-1-400-normal-BY9OovbM.woff2 +0 -0
- package/web/dist/assets/noto-emoji-10-400-normal-D9w4QCof.woff2 +0 -0
- package/web/dist/assets/noto-emoji-10-400-normal-DtCumcZR.woff +0 -0
- package/web/dist/assets/noto-emoji-11-400-normal-BboTlyvx.woff +0 -0
- package/web/dist/assets/noto-emoji-12-400-normal-BB5pgBKj.woff2 +0 -0
- package/web/dist/assets/noto-emoji-12-400-normal-g186qhiA.woff +0 -0
- package/web/dist/assets/noto-emoji-2-400-normal-BKCR1azW.woff2 +0 -0
- package/web/dist/assets/noto-emoji-2-400-normal-BYH0KhDr.woff +0 -0
- package/web/dist/assets/noto-emoji-3-400-normal-CnPTUeEK.woff +0 -0
- package/web/dist/assets/noto-emoji-3-400-normal-TrTb2VQM.woff2 +0 -0
- package/web/dist/assets/noto-emoji-4-400-normal-BxD0KVdj.woff +0 -0
- package/web/dist/assets/noto-emoji-4-400-normal-s_n9EyG1.woff2 +0 -0
- package/web/dist/assets/noto-emoji-5-400-normal-C190AIxR.woff +0 -0
- package/web/dist/assets/noto-emoji-5-400-normal-Ctfx4xc6.woff2 +0 -0
- package/web/dist/assets/noto-emoji-6-400-normal-DlXlXWt7.woff +0 -0
- package/web/dist/assets/noto-emoji-6-400-normal-NzsjD754.woff2 +0 -0
- package/web/dist/assets/noto-emoji-7-400-normal-BHP8KeA6.woff2 +0 -0
- package/web/dist/assets/noto-emoji-7-400-normal-CtuKhtAZ.woff +0 -0
- package/web/dist/assets/noto-emoji-8-400-normal-DR49ZFe7.woff +0 -0
- package/web/dist/assets/noto-emoji-8-400-normal-Dvmkf6b2.woff2 +0 -0
- package/web/dist/assets/noto-emoji-9-400-normal-BeHJQ2iK.woff2 +0 -0
- package/web/dist/assets/noto-emoji-9-400-normal-BlXmCgeQ.woff +0 -0
- package/web/dist/assets/ordinal-Cboi1Yqb.js +1 -0
- package/web/dist/assets/pieDiagram-ADFJNKIX-C45wSpld.js +30 -0
- package/web/dist/assets/quadrantDiagram-AYHSOK5B-tv-_fe-W.js +7 -0
- package/web/dist/assets/reduce-CoLNNlNb.js +1 -0
- package/web/dist/assets/requirementDiagram-UZGBJVZJ-Dn6PDfkL.js +64 -0
- package/web/dist/assets/sankeyDiagram-TZEHDZUN-CbXTZAsG.js +10 -0
- package/web/dist/assets/sequenceDiagram-WL72ISMW-B-o1CUJ5.js +145 -0
- package/web/dist/assets/stateDiagram-FKZM4ZOC-hzrupXQi.js +1 -0
- package/web/dist/assets/stateDiagram-v2-4FDKWEC3-DN-c2M96.js +1 -0
- package/web/dist/assets/timeline-definition-IT6M3QCI-R5SP9GDo.js +61 -0
- package/web/dist/assets/treemap-KMMF4GRG-Pg9KlUOt.js +128 -0
- package/web/dist/assets/xychartDiagram-PRI3JC2R-C3vbJhd1.js +7 -0
- package/web/dist/favicon.svg +13 -0
- package/web/dist/index.html +17 -0
- package//351/205/215/347/275/256/346/226/271/345/274/217.md +330 -0
|
@@ -0,0 +1,1447 @@
|
|
|
1
|
+
import{d as x,r as d,j as v,l as S,n as W,p as E,e as l,f as e,g as _,F as C,q as T,s as y,t as P,h as U,o as I,v as M,w as O,_ as z}from"./index-Cd_J3fZn.js";import{aC as R}from"./MarkdownContent-DXp6CtSP.js";const h=`# ZeroWorkspace 用户手册\r
|
|
2
|
+
\r
|
|
3
|
+
> AI 编程任务的结构化管理方案\r
|
|
4
|
+
\r
|
|
5
|
+
---\r
|
|
6
|
+
\r
|
|
7
|
+
## 这是什么?\r
|
|
8
|
+
\r
|
|
9
|
+
ZeroWorkspace 就像是 AI 的项目管理系统。\r
|
|
10
|
+
\r
|
|
11
|
+
想象你在和一个能干但健忘的同事合作——他很聪明,但对话一长就忘了早期的决策;任务一复杂就容易跑偏。ZeroWorkspace 就是给这个"同事"配的任务管理工具:把大任务拆成小步骤,每步都记录下来,随时能回顾进度。\r
|
|
12
|
+
\r
|
|
13
|
+
### 核心概念\r
|
|
14
|
+
\r
|
|
15
|
+
| 概念 | 说明 |\r
|
|
16
|
+
|------|------|\r
|
|
17
|
+
| **工作台** | ZeroWorkspace 本身,管理所有工作区的平台 |\r
|
|
18
|
+
| **工作区** | 单个任务的完整记录,包含一棵任务树 |\r
|
|
19
|
+
| **节点** | 任务树中的每个任务单元 |\r
|
|
20
|
+
\r
|
|
21
|
+
工作台是你的办公桌,工作区是桌上的每个项目文件夹,节点是文件夹里的待办事项。\r
|
|
22
|
+
\r
|
|
23
|
+
> 更多概念(节点类型、状态、派发模式等)请参阅 [术语表](#术语表)。\r
|
|
24
|
+
\r
|
|
25
|
+
### 解决什么问题?\r
|
|
26
|
+
\r
|
|
27
|
+
| 问题 | 没有工作台时 | 有工作台后 |\r
|
|
28
|
+
|------|-------------|-----------|\r
|
|
29
|
+
| **AI 忘事** | 对话超过 10 轮,AI 忘了开头说的需求 | 所有决策都记录在节点里,随时查阅 |\r
|
|
30
|
+
| **过程黑盒** | 不知道 AI 做了什么、为什么这样做 | WebUI 实时展示任务树和执行日志 |\r
|
|
31
|
+
| **粒度失控** | AI 一次规划太多,执行质量下降 | 强制拆分,一次只做一个任务 |\r
|
|
32
|
+
| **难以继续** | 关掉对话就没了,下次从头来 | 工作区持久化,随时恢复进度 |\r
|
|
33
|
+
\r
|
|
34
|
+
### 谁会受益?\r
|
|
35
|
+
\r
|
|
36
|
+
- **你**:知道 AI 在做什么、做到哪了,能随时调整方向\r
|
|
37
|
+
- **AI**:有结构化的任务管理,不再迷失在长对话中\r
|
|
38
|
+
- **项目**:所有变更有迹可循,出问题能回溯\r
|
|
39
|
+
\r
|
|
40
|
+
---\r
|
|
41
|
+
\r
|
|
42
|
+
## 快速开始\r
|
|
43
|
+
\r
|
|
44
|
+
### 安装\r
|
|
45
|
+
\r
|
|
46
|
+
\`\`\`bash\r
|
|
47
|
+
npm install -g zero-workspace\r
|
|
48
|
+
zero-workspace setup # 自动检测环境并配置\r
|
|
49
|
+
\`\`\`\r
|
|
50
|
+
\r
|
|
51
|
+
**启动 WebUI 服务**(推荐):\r
|
|
52
|
+
\r
|
|
53
|
+
\`\`\`bash\r
|
|
54
|
+
zero-workspace webui # 启动后保持终端窗口打开\r
|
|
55
|
+
\`\`\`\r
|
|
56
|
+
\r
|
|
57
|
+
> **为什么要手动启动?** AI 助手启动时会自动启动 WebUI,后续打开的新对话会跳过启动共用服务,但关闭该对话窗口后 WebUI 也会停止,导致 WebUI 不可用。手动启动可以让 WebUI 独立运行,不受对话窗口影响。\r
|
|
58
|
+
\r
|
|
59
|
+
启动后访问终端显示的地址(默认 \`http://localhost:19540\`)即可查看任务进度。\r
|
|
60
|
+
\r
|
|
61
|
+
**其他管理命令**:\r
|
|
62
|
+
\`\`\`bash\r
|
|
63
|
+
zero-workspace webui status # 查看服务状态\r
|
|
64
|
+
zero-workspace webui stop # 停止服务\r
|
|
65
|
+
zero-workspace webui restart # 重启服务\r
|
|
66
|
+
\`\`\`\r
|
|
67
|
+
\r
|
|
68
|
+
端口被占用时可指定其他端口:\`HTTP_PORT=19550 zero-workspace webui\`\r
|
|
69
|
+
\r
|
|
70
|
+
**支持的 AI 助手**:\r
|
|
71
|
+
\r
|
|
72
|
+
| AI 助手 | 支持程度 | 说明 |\r
|
|
73
|
+
|---------|---------|------|\r
|
|
74
|
+
| **Claude Code** | 完全支持 | 所有功能可用,推荐使用 |\r
|
|
75
|
+
| **Cursor** | 基础支持 | subagent 和 skill 支持有限(见下方说明) |\r
|
|
76
|
+
| **其他 MCP 兼容助手** | 基础功能 | 支持 MCP 即可使用核心功能 |\r
|
|
77
|
+
\r
|
|
78
|
+
Cursor 的限制:派发模式会降级为主进程执行(流程依然完整,但无法真正并行);Skill 转化为读取说明形式,上下文消耗略有增加。\r
|
|
79
|
+
\r
|
|
80
|
+
其他智能体:只要支持 MCP 协议即可使用基础功能。如果智能体额外支持 subagent、skill 等特性,对应功能即可使用。配置方式需自行操作,可运行 \`zero-workspace -h\` 查看帮助。\r
|
|
81
|
+
\r
|
|
82
|
+
### 第一次使用\r
|
|
83
|
+
\r
|
|
84
|
+
**触发工作台的方式**:在对话中明确提及"**工作区**"或"**工作台**"。\r
|
|
85
|
+
\r
|
|
86
|
+
\`\`\`\r
|
|
87
|
+
你:用工作台帮我实现一个用户登录功能\r
|
|
88
|
+
\`\`\`\r
|
|
89
|
+
\r
|
|
90
|
+
或者:\r
|
|
91
|
+
\r
|
|
92
|
+
\`\`\`\r
|
|
93
|
+
你:创建一个工作区,帮我做用户登录功能\r
|
|
94
|
+
\`\`\`\r
|
|
95
|
+
\r
|
|
96
|
+
AI 会自动创建工作区并开始工作。下面是一个完整的对话示例:\r
|
|
97
|
+
\r
|
|
98
|
+
---\r
|
|
99
|
+
\r
|
|
100
|
+
**对话示例:实现登录功能**\r
|
|
101
|
+
\r
|
|
102
|
+
\`\`\`\r
|
|
103
|
+
你:用工作台帮我实现一个用户登录功能\r
|
|
104
|
+
\r
|
|
105
|
+
AI:好的,我来创建工作区管理这个任务。\r
|
|
106
|
+
\r
|
|
107
|
+
📋 工作区已创建:用户登录功能\r
|
|
108
|
+
🌐 WebUI 地址:http://localhost:19540/workspace/ws-xxx\r
|
|
109
|
+
\r
|
|
110
|
+
让我先了解一下你的项目情况...\r
|
|
111
|
+
\r
|
|
112
|
+
[AI 开始探索代码库]\r
|
|
113
|
+
\r
|
|
114
|
+
我看到你的项目是一个 Express + React 应用,已有用户模型。\r
|
|
115
|
+
\r
|
|
116
|
+
我制定了以下计划:\r
|
|
117
|
+
1. 设计登录 API 接口\r
|
|
118
|
+
2. 实现后端认证逻辑(JWT)\r
|
|
119
|
+
3. 创建前端登录表单\r
|
|
120
|
+
4. 添加登录状态管理\r
|
|
121
|
+
\r
|
|
122
|
+
确认开始执行吗?\r
|
|
123
|
+
\r
|
|
124
|
+
你:好\r
|
|
125
|
+
\r
|
|
126
|
+
AI:开始执行第一个任务:设计登录 API 接口\r
|
|
127
|
+
\r
|
|
128
|
+
[AI 开始工作...]\r
|
|
129
|
+
\r
|
|
130
|
+
✅ 任务 1 完成:\r
|
|
131
|
+
- 设计了 POST /api/auth/login 接口\r
|
|
132
|
+
- 入参:email, password\r
|
|
133
|
+
- 出参:token, user info\r
|
|
134
|
+
\r
|
|
135
|
+
继续执行任务 2:实现后端认证逻辑\r
|
|
136
|
+
\r
|
|
137
|
+
[继续工作...]\r
|
|
138
|
+
\r
|
|
139
|
+
你:(可以随时在浏览器打开 WebUI 查看进度)\r
|
|
140
|
+
\r
|
|
141
|
+
AI:🎉 所有任务已完成!\r
|
|
142
|
+
\r
|
|
143
|
+
总结:\r
|
|
144
|
+
- 新增文件:src/routes/auth.js, src/components/Login.tsx\r
|
|
145
|
+
- 修改文件:src/App.tsx, src/store/index.ts\r
|
|
146
|
+
- 测试方式:访问 /login 页面\r
|
|
147
|
+
\r
|
|
148
|
+
还有其他需要吗?\r
|
|
149
|
+
\`\`\`\r
|
|
150
|
+
\r
|
|
151
|
+
---\r
|
|
152
|
+
\r
|
|
153
|
+
**关键点**:\r
|
|
154
|
+
\r
|
|
155
|
+
1. **你不需要学新命令**——用自然语言说任务就行\r
|
|
156
|
+
2. **AI 会主动创建工作区**——不需要你手动操作\r
|
|
157
|
+
3. **计划需要你确认**——AI 不会擅自开始执行\r
|
|
158
|
+
4. **过程可视化**——随时打开 WebUI 看进度\r
|
|
159
|
+
\r
|
|
160
|
+
---\r
|
|
161
|
+
\r
|
|
162
|
+
## 术语表\r
|
|
163
|
+
\r
|
|
164
|
+
在深入使用之前,先了解几个核心概念。这些术语会在后文反复出现。\r
|
|
165
|
+
\r
|
|
166
|
+
### 基础结构\r
|
|
167
|
+
\r
|
|
168
|
+
| 术语 | 含义 |\r
|
|
169
|
+
|------|------|\r
|
|
170
|
+
| **工作台** | ZeroWorkspace 本身,管理所有工作区的平台 |\r
|
|
171
|
+
| **工作区** | 单个任务的完整记录,包含目标、规则和一棵任务树 |\r
|
|
172
|
+
| **节点** | 任务树中的每个任务单元,有类型、状态和内容 |\r
|
|
173
|
+
\r
|
|
174
|
+
### 节点类型\r
|
|
175
|
+
\r
|
|
176
|
+
每个节点有一个类型,决定它的用途:\r
|
|
177
|
+
\r
|
|
178
|
+
| 类型 | 用途 | 典型场景 |\r
|
|
179
|
+
|------|------|----------|\r
|
|
180
|
+
| **planning**(规划) | 拆分和组织子任务 | "实现登录功能"拆成"设计接口"+"实现后端"+"实现前端" |\r
|
|
181
|
+
| **execution**(执行) | 实际执行工作 | 写代码、调研、测试 |\r
|
|
182
|
+
\r
|
|
183
|
+
**关系**:规划节点像文件夹,执行节点像文件。一个规划节点下可以有多个子节点(规划或执行)。\r
|
|
184
|
+
\r
|
|
185
|
+
**补充概念**:\r
|
|
186
|
+
\r
|
|
187
|
+
| 术语 | 含义 |\r
|
|
188
|
+
|------|------|\r
|
|
189
|
+
| **MEMO** | 独立于节点树的草稿区,用于存储长内容(设计文档、调研结果等) |\r
|
|
190
|
+
| **引用** | 节点可以引用其他节点、MEMO 或外部文档,形成知识关联 |\r
|
|
191
|
+
\r
|
|
192
|
+
MEMO 适合存放跨节点复用的内容,比如一份设计方案可能被多个执行节点引用。\r
|
|
193
|
+
\r
|
|
194
|
+
**使用场景**:当内容不适合直接记录在节点中时(长文档、独立方案、跨节点复用的内容),可以让 AI 创建 MEMO:\r
|
|
195
|
+
\r
|
|
196
|
+
\`\`\`\r
|
|
197
|
+
你:这个设计方案太长了,单独记录一下\r
|
|
198
|
+
AI:好的,我创建一个 MEMO 来存放设计方案。\r
|
|
199
|
+
\r
|
|
200
|
+
📝 MEMO 已创建:登录模块设计方案\r
|
|
201
|
+
已关联到当前节点。\r
|
|
202
|
+
\`\`\`\r
|
|
203
|
+
\r
|
|
204
|
+
MEMO 由 AI 创建,可被多个节点引用。\r
|
|
205
|
+
\r
|
|
206
|
+
### 节点状态\r
|
|
207
|
+
\r
|
|
208
|
+
节点的生命周期通过状态流转表示:\r
|
|
209
|
+
\r
|
|
210
|
+
**执行节点状态**:\r
|
|
211
|
+
\r
|
|
212
|
+
| 状态 | 含义 | 下一步 |\r
|
|
213
|
+
|------|------|--------|\r
|
|
214
|
+
| **pending** | 等待开始 | AI 会按顺序执行,进入 implementing |\r
|
|
215
|
+
| **implementing** | 正在执行 | AI 完成后进入 completed,失败进入 failed |\r
|
|
216
|
+
| **completed** | 已完成 | 终态,任务结束 |\r
|
|
217
|
+
| **failed** | 执行失败 | 可以重试(reopen),重新进入 pending |\r
|
|
218
|
+
\r
|
|
219
|
+
**规划节点状态**:\r
|
|
220
|
+
\r
|
|
221
|
+
| 状态 | 含义 | 下一步 |\r
|
|
222
|
+
|------|------|--------|\r
|
|
223
|
+
| **pending** | 等待开始 | 开始规划,进入 planning |\r
|
|
224
|
+
| **planning** | 正在规划 | 子节点创建完成后,进入 monitoring |\r
|
|
225
|
+
| **monitoring** | 等待子任务完成 | 所有子节点完成后,进入 completed |\r
|
|
226
|
+
| **completed** | 所有子任务完成 | 终态 |\r
|
|
227
|
+
| **cancelled** | 已取消 | 终态,任务放弃 |\r
|
|
228
|
+
\r
|
|
229
|
+
### 特殊节点角色\r
|
|
230
|
+
\r
|
|
231
|
+
某些执行节点有特殊角色,用于特定用途:\r
|
|
232
|
+
\r
|
|
233
|
+
| 角色 | 用途 | 何时出现 |\r
|
|
234
|
+
|------|------|----------|\r
|
|
235
|
+
| **info_collection**(信息收集) | AI 主动探索项目——扫描代码、读文档、理解架构 | 你没提供完整信息,AI 需要自己了解 |\r
|
|
236
|
+
| **info_summary**(信息总结) | AI 整理已有信息——从对话/你提供的设计方案中提取 | 你已提供完整设计方案或需求描述 |\r
|
|
237
|
+
| **dispatch_exec** | 派发任务的执行部分 | 启用派发模式时 |\r
|
|
238
|
+
| **dispatch_spec** | 派发任务的规格审查 | 启用派发模式时 |\r
|
|
239
|
+
| **dispatch_quality** | 派发任务的质量审查(可选) | 启用派发模式且开启质量审查时 |\r
|
|
240
|
+
\r
|
|
241
|
+
**info_collection vs info_summary**:二选一。AI 会根据你提供的信息完整度决定用哪个:\r
|
|
242
|
+
- 你说"帮我实现搜索功能"→ AI 需要 info_collection,先探索代码库\r
|
|
243
|
+
- 你说"根据这个设计文档实现搜索功能"(附设计方案)→ AI 用 info_summary,整理你提供的信息\r
|
|
244
|
+
\r
|
|
245
|
+
### 节点记录的信息\r
|
|
246
|
+
\r
|
|
247
|
+
每个节点会记录以下内容,帮助追踪任务全貌:\r
|
|
248
|
+
\r
|
|
249
|
+
| 字段 | 用途 | 何时记录 | 对话中如何触发 |\r
|
|
250
|
+
|------|------|----------|----------------|\r
|
|
251
|
+
| **requirement**(需求) | 任务描述、目标 | 创建节点时 | AI 自动记录,或你说"任务是..." |\r
|
|
252
|
+
| **acceptanceCriteria**(验收标准) | WHEN/THEN 格式的验收条件 | 意图对齐时 | AI 整理后记录 |\r
|
|
253
|
+
| **notes**(笔记) | 过程中的发现、决策 | 执行过程中 | 你说"记一下..."或 AI 主动记录 |\r
|
|
254
|
+
| **conclusion**(结论) | 完成时的总结 | 任务完成时 | AI 完成时必须填写 |\r
|
|
255
|
+
| **docs**(引用) | 关联的文档、MEMO、其他节点 | 任意时刻 | 你说"引用这个文档..." |\r
|
|
256
|
+
| **Log**(日志) | 操作记录(谁在何时做了什么) | 自动记录 | 关键操作自动记录 |\r
|
|
257
|
+
| **Problem**(问题) | 当前阻碍和下一步计划 | 遇到问题时 | 你说"卡住了"或 AI 主动记录 |\r
|
|
258
|
+
\r
|
|
259
|
+
**查看方式**:\r
|
|
260
|
+
- **WebUI**:点击节点查看详情,包括需求、结论、日志、问题\r
|
|
261
|
+
- **对话中**:问 AI "这个节点的结论是什么"、"现在卡在哪里"\r
|
|
262
|
+
\r
|
|
263
|
+
### 派发模式\r
|
|
264
|
+
\r
|
|
265
|
+
处理复杂任务时的一种执行方式:\r
|
|
266
|
+
\r
|
|
267
|
+
| 模式 | 特点 | 适用场景 |\r
|
|
268
|
+
|------|------|----------|\r
|
|
269
|
+
| **普通模式** | AI 直接执行,所有步骤在当前会话 | 简单任务、逻辑强依赖完整上下文的任务 |\r
|
|
270
|
+
| **派发模式** | 子任务派发给独立 Agent 执行,完成后审查 | 复杂任务、可独立执行的子任务 |\r
|
|
271
|
+
\r
|
|
272
|
+
**派发节点状态**(仅在派发模式下):\r
|
|
273
|
+
\r
|
|
274
|
+
| 状态 | 含义 |\r
|
|
275
|
+
|------|------|\r
|
|
276
|
+
| **pending** | 等待执行 |\r
|
|
277
|
+
| **executing** | 子 Agent 正在执行 |\r
|
|
278
|
+
| **passed** | 审查通过 |\r
|
|
279
|
+
| **failed** | 审查失败,需重试 |\r
|
|
280
|
+
\r
|
|
281
|
+
### 能力包\r
|
|
282
|
+
\r
|
|
283
|
+
信息收集或信息总结阶段可选的功能模块,根据任务场景自动推荐:\r
|
|
284
|
+
\r
|
|
285
|
+
| 能力 | 用途 |\r
|
|
286
|
+
|------|------|\r
|
|
287
|
+
| **intent_alignment** | 意图对齐——澄清需求,确认验收标准 |\r
|
|
288
|
+
| **context_discovery** | 上下文探索——扫描项目,理解架构 |\r
|
|
289
|
+
| **solution_design** | 方案设计——设计接口和实现路径 |\r
|
|
290
|
+
| **verification_strategy** | 验证策划——设计测试用例 |\r
|
|
291
|
+
| **diagnosis** | 问题诊断——定位 bug 根因 |\r
|
|
292
|
+
| **tech_research** | 技术调研——评估技术选型 |\r
|
|
293
|
+
| **measurement_analysis** | 度量分析——性能基准测试 |\r
|
|
294
|
+
\r
|
|
295
|
+
### 其他概念\r
|
|
296
|
+
\r
|
|
297
|
+
| 术语 | 含义 |\r
|
|
298
|
+
|------|------|\r
|
|
299
|
+
| **会话绑定** | AI 会话与工作区的关联,确保对话中的操作作用到正确的工作区 |\r
|
|
300
|
+
| **聚焦节点** | 当前正在操作的节点,AI 的工作上下文 |\r
|
|
301
|
+
| **WebUI** | 浏览器中的可视化界面,实时展示任务树和执行日志 |\r
|
|
302
|
+
\r
|
|
303
|
+
---\r
|
|
304
|
+
\r
|
|
305
|
+
## 完整使用流程\r
|
|
306
|
+
\r
|
|
307
|
+
一个任务从开始到结束会经过 5 个阶段。了解这些阶段能帮你更好地与 AI 协作。\r
|
|
308
|
+
\r
|
|
309
|
+
### 阶段一:启动任务\r
|
|
310
|
+
\r
|
|
311
|
+
**触发方式**:在对话中明确提及"**工作区**"或"**工作台**"\r
|
|
312
|
+
\r
|
|
313
|
+
| 示例 | 说明 |\r
|
|
314
|
+
|------|------|\r
|
|
315
|
+
| "用工作台帮我实现搜索功能" | 提及"工作台" |\r
|
|
316
|
+
| "创建一个工作区做这个任务" | 提及"工作区" |\r
|
|
317
|
+
| "帮我实现搜索功能" | ❌ 不会触发,需加上"工作台/工作区" |\r
|
|
318
|
+
\r
|
|
319
|
+
**AI 会做什么**:\r
|
|
320
|
+
\r
|
|
321
|
+
1. 创建工作区(自动)\r
|
|
322
|
+
2. 告知 WebUI 地址(你可以在浏览器打开查看)\r
|
|
323
|
+
3. 询问任务场景(新功能/修复/优化/总结)\r
|
|
324
|
+
\r
|
|
325
|
+
**你会看到**:\r
|
|
326
|
+
\r
|
|
327
|
+
\`\`\`\r
|
|
328
|
+
AI:好的,我来创建工作区管理这个任务。\r
|
|
329
|
+
\r
|
|
330
|
+
📋 工作区:搜索功能开发\r
|
|
331
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-xxx\r
|
|
332
|
+
\r
|
|
333
|
+
这个任务属于哪种场景?\r
|
|
334
|
+
1. 新功能开发\r
|
|
335
|
+
2. Bug 修复\r
|
|
336
|
+
3. 性能优化\r
|
|
337
|
+
4. 总结分析\r
|
|
338
|
+
\r
|
|
339
|
+
你:1(或直接说"新功能")\r
|
|
340
|
+
\`\`\`\r
|
|
341
|
+
\r
|
|
342
|
+
### 阶段二:信息收集/整理\r
|
|
343
|
+
\r
|
|
344
|
+
根据你提供信息的完整度,AI 会选择不同的方式:\r
|
|
345
|
+
\r
|
|
346
|
+
**方式一:信息收集(info_collection)**\r
|
|
347
|
+
\r
|
|
348
|
+
当你只说了"帮我做XXX",AI 需要**主动调研**:\r
|
|
349
|
+
\r
|
|
350
|
+
\`\`\`\r
|
|
351
|
+
AI:让我先了解一下项目情况...\r
|
|
352
|
+
\r
|
|
353
|
+
[扫描项目结构、读取文档]\r
|
|
354
|
+
\r
|
|
355
|
+
我看到:\r
|
|
356
|
+
- 技术栈:Express + React\r
|
|
357
|
+
- 有两套 API:v1(旧)和 v2(新)\r
|
|
358
|
+
\r
|
|
359
|
+
新功能应该加在哪个版本?\r
|
|
360
|
+
\r
|
|
361
|
+
你:v2\r
|
|
362
|
+
\r
|
|
363
|
+
AI:明白了,继续分析...\r
|
|
364
|
+
\`\`\`\r
|
|
365
|
+
\r
|
|
366
|
+
**方式二:信息总结(info_summary)**\r
|
|
367
|
+
\r
|
|
368
|
+
当你已经详细描述了需求,或提供了完整设计方案,AI 只需要**整理确认**:\r
|
|
369
|
+
\r
|
|
370
|
+
\`\`\`\r
|
|
371
|
+
你:用工作台帮我做用户登录,要求:\r
|
|
372
|
+
- 用 JWT 认证\r
|
|
373
|
+
- 支持邮箱和手机号登录\r
|
|
374
|
+
- 登录失败 3 次锁定 15 分钟\r
|
|
375
|
+
\r
|
|
376
|
+
AI:我来整理一下你的需求:\r
|
|
377
|
+
\r
|
|
378
|
+
## 需求确认\r
|
|
379
|
+
\r
|
|
380
|
+
| WHEN | THEN |\r
|
|
381
|
+
|------|------|\r
|
|
382
|
+
| 用户输入正确凭据 | 返回 JWT token |\r
|
|
383
|
+
| 登录失败 3 次 | 账号锁定 15 分钟 |\r
|
|
384
|
+
| 锁定期间尝试登录 | 显示剩余锁定时间 |\r
|
|
385
|
+
\r
|
|
386
|
+
还有其他要求吗?\r
|
|
387
|
+
\r
|
|
388
|
+
你:没了\r
|
|
389
|
+
\r
|
|
390
|
+
AI:好的,开始规划任务...\r
|
|
391
|
+
\`\`\`\r
|
|
392
|
+
\r
|
|
393
|
+
**AI 如何选择**:\r
|
|
394
|
+
- 你没提供项目细节 → 信息收集(探索代码库)\r
|
|
395
|
+
- 你已经描述得很清楚 → 信息总结(整理确认)\r
|
|
396
|
+
\r
|
|
397
|
+
### 阶段三:确认计划\r
|
|
398
|
+
\r
|
|
399
|
+
**这是最重要的检查点**——AI 会在这里暂停,等你确认。\r
|
|
400
|
+
\r
|
|
401
|
+
**你会看到**:\r
|
|
402
|
+
\r
|
|
403
|
+
\`\`\`\r
|
|
404
|
+
AI:信息收集完成,我制定了以下计划:\r
|
|
405
|
+
\r
|
|
406
|
+
1. [规划] 设计搜索接口\r
|
|
407
|
+
- 定义 API 路由和参数\r
|
|
408
|
+
- 确定返回数据结构\r
|
|
409
|
+
\r
|
|
410
|
+
2. [执行] 实现后端搜索逻辑\r
|
|
411
|
+
- 验收:GET /api/v2/search?q=xxx 返回结果\r
|
|
412
|
+
\r
|
|
413
|
+
3. [执行] 创建前端搜索组件\r
|
|
414
|
+
- 验收:搜索框输入后显示结果列表\r
|
|
415
|
+
\r
|
|
416
|
+
4. [执行] 添加搜索防抖和加载状态\r
|
|
417
|
+
- 验收:输入停顿 300ms 后才触发搜索\r
|
|
418
|
+
\r
|
|
419
|
+
确认开始执行吗?\r
|
|
420
|
+
\`\`\`\r
|
|
421
|
+
\r
|
|
422
|
+
**你可以**:\r
|
|
423
|
+
\r
|
|
424
|
+
| 你说 | AI 会 |\r
|
|
425
|
+
|------|-------|\r
|
|
426
|
+
| "好" / "可以" / "继续" | 开始执行计划 |\r
|
|
427
|
+
| "第 3 个先不做" | 调整计划,跳过该任务 |\r
|
|
428
|
+
| "把 2 和 3 合并" | 重新规划 |\r
|
|
429
|
+
| "加一个分页功能" | 在计划中追加任务 |\r
|
|
430
|
+
| "等等,先看看现有的搜索代码" | 暂停,AI 会去查看 |\r
|
|
431
|
+
\r
|
|
432
|
+
### 阶段四:执行任务\r
|
|
433
|
+
\r
|
|
434
|
+
**AI 会按顺序执行计划**,每个任务都会:\r
|
|
435
|
+
\r
|
|
436
|
+
1. **开始前**:标记任务为"进行中"\r
|
|
437
|
+
2. **执行时**:写代码、记录日志\r
|
|
438
|
+
3. **完成后**:写结论、标记为"已完成"\r
|
|
439
|
+
\r
|
|
440
|
+
**你可以**:\r
|
|
441
|
+
\r
|
|
442
|
+
\`\`\`\r
|
|
443
|
+
你:做到哪了?\r
|
|
444
|
+
\r
|
|
445
|
+
AI:当前进度:\r
|
|
446
|
+
✅ 任务 1:设计搜索接口(已完成)\r
|
|
447
|
+
🔄 任务 2:实现后端搜索逻辑(进行中)\r
|
|
448
|
+
○ 任务 3:创建前端搜索组件(待开始)\r
|
|
449
|
+
○ 任务 4:添加搜索防抖(待开始)\r
|
|
450
|
+
\r
|
|
451
|
+
正在实现后端搜索逻辑,预计还需 2-3 分钟。\r
|
|
452
|
+
\`\`\`\r
|
|
453
|
+
\r
|
|
454
|
+
**WebUI 状态说明**:\r
|
|
455
|
+
\r
|
|
456
|
+
| 图标/颜色 | 状态 | 含义 |\r
|
|
457
|
+
|-----------|------|------|\r
|
|
458
|
+
| ○ 灰色 | pending | 等待执行 |\r
|
|
459
|
+
| ◐ 蓝色 | implementing | 正在执行 |\r
|
|
460
|
+
| ● 绿色 | completed | 已完成 |\r
|
|
461
|
+
| ✕ 红色 | failed | 执行失败 |\r
|
|
462
|
+
| ⊘ 黄色 | monitoring | 等待子任务 |\r
|
|
463
|
+
\r
|
|
464
|
+
### 阶段五:完成交付\r
|
|
465
|
+
\r
|
|
466
|
+
**所有任务完成后,AI 会汇报**:\r
|
|
467
|
+
\r
|
|
468
|
+
\`\`\`\r
|
|
469
|
+
AI:🎉 搜索功能开发完成!\r
|
|
470
|
+
\r
|
|
471
|
+
完成情况:\r
|
|
472
|
+
✅ 设计搜索接口 - 定义了 SearchRequest/SearchResponse 类型\r
|
|
473
|
+
✅ 实现后端逻辑 - 支持关键词搜索和分页\r
|
|
474
|
+
✅ 创建前端组件 - SearchBox + SearchResults\r
|
|
475
|
+
✅ 添加防抖优化 - 300ms 防抖 + 加载状态\r
|
|
476
|
+
\r
|
|
477
|
+
新增文件:\r
|
|
478
|
+
- src/api/v2/search.ts\r
|
|
479
|
+
- src/components/Search/index.tsx\r
|
|
480
|
+
- src/hooks/useSearch.ts\r
|
|
481
|
+
\r
|
|
482
|
+
修改文件:\r
|
|
483
|
+
- src/routes/index.ts(添加路由)\r
|
|
484
|
+
- src/App.tsx(添加搜索入口)\r
|
|
485
|
+
\r
|
|
486
|
+
测试方式:\r
|
|
487
|
+
1. 启动开发服务器:npm run dev\r
|
|
488
|
+
2. 访问首页,点击右上角搜索图标\r
|
|
489
|
+
3. 输入关键词,应该能看到搜索结果\r
|
|
490
|
+
\r
|
|
491
|
+
还有其他需要吗?\r
|
|
492
|
+
\`\`\`\r
|
|
493
|
+
\r
|
|
494
|
+
**你可以**:\r
|
|
495
|
+
\r
|
|
496
|
+
- 确认完成,结束任务\r
|
|
497
|
+
- 提出新需求:"再加一个搜索历史功能"\r
|
|
498
|
+
- 报告问题:"搜索结果没有高亮关键词"\r
|
|
499
|
+
\r
|
|
500
|
+
---\r
|
|
501
|
+
\r
|
|
502
|
+
## 如何保证 AI 行为\r
|
|
503
|
+
\r
|
|
504
|
+
你可能会问:AI 真的会按流程做事吗?会不会跳步骤、忘记记录、自己验证自己?\r
|
|
505
|
+
\r
|
|
506
|
+
ZeroWorkspace 用四层机制确保 AI "不得不"按规矩来:\r
|
|
507
|
+
\r
|
|
508
|
+
### 状态机:物理级约束\r
|
|
509
|
+
\r
|
|
510
|
+
普通 AI 助手全靠"自觉"——你说"先规划再执行",AI 可能直接开始写代码。\r
|
|
511
|
+
\r
|
|
512
|
+
ZeroWorkspace 不信任自觉,用**状态转换表**强制约束:\r
|
|
513
|
+
\r
|
|
514
|
+
| 可能的问题 | 常见Spec | ZeroWorkspace |\r
|
|
515
|
+
|-------------|---------|----------------|\r
|
|
516
|
+
| AI 跳过规划直接执行 | 可能发生 | 不可能:节点必须从 pending→implementing,跳不过 |\r
|
|
517
|
+
| 任务没完成就说"完成了" | 靠自觉 | 不可能:complete 需要填写 conclusion,系统验证 |\r
|
|
518
|
+
| 同时做多个任务导致混乱 | 可能发生 | 不可能:同级节点只能有一个在执行中 |\r
|
|
519
|
+
| 子任务没做完就汇总 | 可能发生 | 不可能:父节点 complete 前会检查所有子节点状态 |\r
|
|
520
|
+
\r
|
|
521
|
+
**实际效果**:AI 尝试非法操作时,系统直接拒绝并返回错误提示,而不是"希望"AI 遵守。\r
|
|
522
|
+
\r
|
|
523
|
+
### 自动监视与引导\r
|
|
524
|
+
\r
|
|
525
|
+
每次 AI 调用工具(修改代码、执行命令、操作节点),系统都会自动:\r
|
|
526
|
+
\r
|
|
527
|
+
1. **记录**:在日志中追加"谁在何时做了什么"\r
|
|
528
|
+
2. **引导**:返回下一步必须做什么\r
|
|
529
|
+
\r
|
|
530
|
+
| 可能的问题 | 常见Spec | ZeroWorkspace |\r
|
|
531
|
+
|-------------|---------|----------------|\r
|
|
532
|
+
| AI 改了代码但没记录 | 经常发生 | 不可能:Hook 自动拦截每个修改操作并记录 |\r
|
|
533
|
+
| AI 不知道下一步做什么 | "完成了,接下来呢?" | 系统自动返回 actionRequired,精确指导 |\r
|
|
534
|
+
| AI 在多个任务间跳来跳去 | 聚焦点漂移 | Hook 自动聚焦到最后操作的节点 |\r
|
|
535
|
+
\r
|
|
536
|
+
### Skill:标准化流程\r
|
|
537
|
+
\r
|
|
538
|
+
市面上的 AI 助手用提示词引导行为,但提示词是建议,AI 可以忽略。\r
|
|
539
|
+
\r
|
|
540
|
+
ZeroWorkspace 的 Skill 是**强制性 SOP**:\r
|
|
541
|
+
\r
|
|
542
|
+
- **信息收集**:必须按"定位入口→分析依赖→追踪数据流→输出快照"的流程\r
|
|
543
|
+
- **意图对齐**:必须产出 WHEN/THEN 格式的验收标准\r
|
|
544
|
+
- **任务执行**:必须按"评估→计划→执行→验证→交付"五步走\r
|
|
545
|
+
- **规格审查**:必须逐条验证验收标准,任何一条失败=整体失败\r
|
|
546
|
+
\r
|
|
547
|
+
| 可能的问题 | 常见Spec | ZeroWorkspace |\r
|
|
548
|
+
|-------------|---------|----------------|\r
|
|
549
|
+
| 每次执行方式不一致 | 看心情 | 同类任务强制走相同流程 |\r
|
|
550
|
+
| 说"完成了"但没验证 | 靠自觉 | Skill 强制:执行→验证→记录→完成,缺一不可 |\r
|
|
551
|
+
| 验证走过场 | 自己检查自己 | 审查 Skill 要求逐条验证,附带证据 |\r
|
|
552
|
+
\r
|
|
553
|
+
### 派发系统:执行与审查分离\r
|
|
554
|
+
\r
|
|
555
|
+
这是 ZeroWorkspace 核心设计之一:**让不同的 AI 相互检查**。\r
|
|
556
|
+
\r
|
|
557
|
+
常见Spec是"自己做自己查"——就像考试自己批卷子,很难客观。\r
|
|
558
|
+
\r
|
|
559
|
+
派发模式下,系统会启动多个独立 AI:\r
|
|
560
|
+
\r
|
|
561
|
+
| 角色 | 职责 | 约束 |\r
|
|
562
|
+
|------|------|------|\r
|
|
563
|
+
| **执行者**(zero-executor) | 写代码、实现功能 | 只能改需求范围内的代码,完成后提交审查 |\r
|
|
564
|
+
| **规格审查**(zero-reviewer) | 验证是否符合需求 | **不能修改代码**,必须独立验证,不信任执行者的结论 |\r
|
|
565
|
+
| **质量审查**(zero-reviewer) | 检查代码质量 | **不能修改代码**,检查可读性、安全性、性能 |\r
|
|
566
|
+
\r
|
|
567
|
+
| 可能的问题 | 常见Spec | ZeroWorkspace 派发模式 |\r
|
|
568
|
+
|-------------|---------|------------------------|\r
|
|
569
|
+
| 自己做自己查 | 总是这样 | 执行与审查由不同 AI 完成 |\r
|
|
570
|
+
| 审查倾向于通过 | 利益冲突 | 审查者无法修改代码,只能判 pass/fail |\r
|
|
571
|
+
| 失败后代码残留 | 手动回滚 | Git 模式自动回滚到执行前 |\r
|
|
572
|
+
| 重试没有方向 | 从头再来 | 失败原因会传递给下一次执行 |\r
|
|
573
|
+
\r
|
|
574
|
+
### 为什么这套机制有效?\r
|
|
575
|
+
\r
|
|
576
|
+
核心哲学:**不依赖 AI 的"自觉",用系统强制确保合规**。\r
|
|
577
|
+
\r
|
|
578
|
+
\`\`\`\r
|
|
579
|
+
常见Spec流程的信任链:\r
|
|
580
|
+
用户 → 相信 AI → AI 自觉遵守 → 结果\r
|
|
581
|
+
\r
|
|
582
|
+
ZeroWorkspace 的信任链:\r
|
|
583
|
+
用户 → 系统强制 → AI 不得不遵守 → 结果\r
|
|
584
|
+
↑\r
|
|
585
|
+
状态机拒绝非法操作\r
|
|
586
|
+
Hook 自动记录和引导\r
|
|
587
|
+
Skill 强制标准流程\r
|
|
588
|
+
派发分离执行与审查\r
|
|
589
|
+
\`\`\`\r
|
|
590
|
+
\r
|
|
591
|
+
**你能感知到的变化**:\r
|
|
592
|
+
\r
|
|
593
|
+
- 打开 WebUI,每个节点都有完整的日志,知道 AI 做了什么\r
|
|
594
|
+
- AI 不会跳过中间流程,必须一步步走完流程\r
|
|
595
|
+
- 派发模式下,你能看到执行、审查、质量检查三个独立的记录\r
|
|
596
|
+
- 出问题时,能追溯到具体哪一步出了问题\r
|
|
597
|
+
\r
|
|
598
|
+
---\r
|
|
599
|
+
\r
|
|
600
|
+
## 场景指南\r
|
|
601
|
+
\r
|
|
602
|
+
不同类型的任务有不同的最佳实践。以下是四种常见场景的完整对话示例。\r
|
|
603
|
+
\r
|
|
604
|
+
### 场景 1:新功能开发\r
|
|
605
|
+
\r
|
|
606
|
+
**适用于**:添加新功能、实现新特性、创建新模块\r
|
|
607
|
+
\r
|
|
608
|
+
**情况 A:你只说了要做什么(AI 需要探索项目)**\r
|
|
609
|
+
\r
|
|
610
|
+
\`\`\`\r
|
|
611
|
+
你:用工作台帮我给博客系统加一个评论功能\r
|
|
612
|
+
\r
|
|
613
|
+
AI:好的,我来创建工作区管理这个任务。\r
|
|
614
|
+
\r
|
|
615
|
+
📋 工作区:博客评论功能\r
|
|
616
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-abc123\r
|
|
617
|
+
\r
|
|
618
|
+
让我先了解一下你的博客系统...\r
|
|
619
|
+
\r
|
|
620
|
+
[探索代码库]\r
|
|
621
|
+
\r
|
|
622
|
+
我看到:\r
|
|
623
|
+
- 后端:Express + MongoDB\r
|
|
624
|
+
- 前端:React + TailwindCSS\r
|
|
625
|
+
- 已有文章模型 (Post)\r
|
|
626
|
+
\r
|
|
627
|
+
我需要确认几个问题:\r
|
|
628
|
+
1. 评论需要用户登录吗?\r
|
|
629
|
+
2. 是否需要嵌套回复?\r
|
|
630
|
+
\r
|
|
631
|
+
你:需要登录,暂时不需要嵌套回复\r
|
|
632
|
+
\r
|
|
633
|
+
AI:明白了,我制定了以下计划...\r
|
|
634
|
+
\`\`\`\r
|
|
635
|
+
\r
|
|
636
|
+
**情况 B:你提供了完整设计方案(AI 只需整理确认)**\r
|
|
637
|
+
\r
|
|
638
|
+
\`\`\`\r
|
|
639
|
+
你:用工作台帮我做评论功能,设计如下:\r
|
|
640
|
+
- 数据模型:Comment { content, authorId, postId, createdAt }\r
|
|
641
|
+
- API:POST/GET /posts/:id/comments, DELETE /comments/:id\r
|
|
642
|
+
- 前端:CommentList + CommentInput 组件\r
|
|
643
|
+
- 需要登录才能评论\r
|
|
644
|
+
\r
|
|
645
|
+
AI:好的,我来整理一下你的设计方案。\r
|
|
646
|
+
\r
|
|
647
|
+
📋 工作区:博客评论功能\r
|
|
648
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-abc123\r
|
|
649
|
+
\r
|
|
650
|
+
## 需求确认\r
|
|
651
|
+
\r
|
|
652
|
+
| WHEN | THEN |\r
|
|
653
|
+
|------|------|\r
|
|
654
|
+
| 用户提交评论 | 调用 POST API,评论显示在列表 |\r
|
|
655
|
+
| 未登录用户访问 | 隐藏评论输入框 |\r
|
|
656
|
+
| 删除评论 | 调用 DELETE API,列表刷新 |\r
|
|
657
|
+
\r
|
|
658
|
+
设计方案清晰,确认开始执行吗?\r
|
|
659
|
+
\r
|
|
660
|
+
你:好\r
|
|
661
|
+
\r
|
|
662
|
+
AI:开始执行...\r
|
|
663
|
+
\`\`\`\r
|
|
664
|
+
\r
|
|
665
|
+
### 场景 2:Bug 调试修复\r
|
|
666
|
+
\r
|
|
667
|
+
**适用于**:修复 bug、解决报错、排查问题\r
|
|
668
|
+
\r
|
|
669
|
+
**情况 A:你只描述了现象(AI 需要诊断)**\r
|
|
670
|
+
\r
|
|
671
|
+
\`\`\`\r
|
|
672
|
+
你:用工作台帮我查一下,用户登录后刷新页面会被踢出\r
|
|
673
|
+
\r
|
|
674
|
+
AI:好的,这是一个 Bug 修复任务。让我创建工作区。\r
|
|
675
|
+
\r
|
|
676
|
+
📋 工作区:登录状态丢失修复\r
|
|
677
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-def456\r
|
|
678
|
+
\r
|
|
679
|
+
让我先诊断问题...\r
|
|
680
|
+
\r
|
|
681
|
+
[分析认证相关代码]\r
|
|
682
|
+
\r
|
|
683
|
+
我找到了原因:AuthContext.tsx 中没有验证 token 是否过期,\r
|
|
684
|
+
当 token 过期时 decodeToken 返回 null,导致用户被踢出。\r
|
|
685
|
+
\r
|
|
686
|
+
修复方案:添加 token 过期检查\r
|
|
687
|
+
\r
|
|
688
|
+
确认这个修复方案吗?\r
|
|
689
|
+
\r
|
|
690
|
+
你:好\r
|
|
691
|
+
\r
|
|
692
|
+
AI:开始修复...\r
|
|
693
|
+
\`\`\`\r
|
|
694
|
+
\r
|
|
695
|
+
**情况 B:你已经定位了问题原因(AI 只需确认方案)**\r
|
|
696
|
+
\r
|
|
697
|
+
\`\`\`\r
|
|
698
|
+
你:用工作台帮我修一个 bug:\r
|
|
699
|
+
- 现象:登录后刷新会被踢出\r
|
|
700
|
+
- 原因:AuthContext.tsx 的 useEffect 没有验证 token 过期\r
|
|
701
|
+
- 方案:添加 isTokenExpired() 检查,过期则跳转登录页\r
|
|
702
|
+
\r
|
|
703
|
+
AI:好的,我来整理一下你的修复方案。\r
|
|
704
|
+
\r
|
|
705
|
+
📋 工作区:登录状态丢失修复\r
|
|
706
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-def456\r
|
|
707
|
+
\r
|
|
708
|
+
## 修复确认\r
|
|
709
|
+
\r
|
|
710
|
+
| WHEN | THEN |\r
|
|
711
|
+
|------|------|\r
|
|
712
|
+
| token 有效 | 正常加载用户信息 |\r
|
|
713
|
+
| token 过期 | 显示"登录已过期",跳转登录页 |\r
|
|
714
|
+
\r
|
|
715
|
+
方案清晰,确认开始修复吗?\r
|
|
716
|
+
\r
|
|
717
|
+
你:好\r
|
|
718
|
+
\r
|
|
719
|
+
AI:开始修复...\r
|
|
720
|
+
\`\`\`\r
|
|
721
|
+
\r
|
|
722
|
+
### 场景 3:代码优化重构\r
|
|
723
|
+
\r
|
|
724
|
+
**适用于**:性能优化、代码重构、技术债清理\r
|
|
725
|
+
\r
|
|
726
|
+
**情况 A:你只说了要优化(AI 需要分析性能)**\r
|
|
727
|
+
\r
|
|
728
|
+
\`\`\`\r
|
|
729
|
+
你:用工作台帮我优化一下,首页加载太慢了\r
|
|
730
|
+
\r
|
|
731
|
+
AI:好的,这是一个性能优化任务。让我创建工作区。\r
|
|
732
|
+
\r
|
|
733
|
+
📋 工作区:首页性能优化\r
|
|
734
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-ghi789\r
|
|
735
|
+
\r
|
|
736
|
+
让我先分析性能瓶颈...\r
|
|
737
|
+
\r
|
|
738
|
+
[分析性能]\r
|
|
739
|
+
\r
|
|
740
|
+
当前数据:首屏 4.2s,JS 包 1.8MB\r
|
|
741
|
+
问题:没有代码分割,图表库未按需加载\r
|
|
742
|
+
\r
|
|
743
|
+
优化计划:\r
|
|
744
|
+
1. 配置路由级代码分割\r
|
|
745
|
+
2. 动态导入图表库\r
|
|
746
|
+
3. 添加图片懒加载\r
|
|
747
|
+
\r
|
|
748
|
+
确认开始优化吗?\r
|
|
749
|
+
\r
|
|
750
|
+
你:好\r
|
|
751
|
+
\r
|
|
752
|
+
AI:开始优化...\r
|
|
753
|
+
\`\`\`\r
|
|
754
|
+
\r
|
|
755
|
+
**情况 B:你已经提供了性能报告(AI 只需确认方案)**\r
|
|
756
|
+
\r
|
|
757
|
+
\`\`\`\r
|
|
758
|
+
你:用工作台优化首页性能,我的分析:\r
|
|
759
|
+
- 当前:首屏 4.2s,JS 1.8MB\r
|
|
760
|
+
- 问题:bundle 没分割,chart.js 未按需加载\r
|
|
761
|
+
- 方案:路由分割 + 动态导入 + 图片懒加载\r
|
|
762
|
+
\r
|
|
763
|
+
AI:好的,我来整理一下你的优化方案。\r
|
|
764
|
+
\r
|
|
765
|
+
📋 工作区:首页性能优化\r
|
|
766
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-ghi789\r
|
|
767
|
+
\r
|
|
768
|
+
## 优化确认\r
|
|
769
|
+
\r
|
|
770
|
+
| 优化项 | 预期效果 |\r
|
|
771
|
+
|--------|----------|\r
|
|
772
|
+
| 路由级代码分割 | 首页 JS 减少 50% |\r
|
|
773
|
+
| 动态导入图表库 | 首页不再包含 chart.js |\r
|
|
774
|
+
| 图片懒加载 | 首屏只加载可见图片 |\r
|
|
775
|
+
\r
|
|
776
|
+
方案清晰,确认开始优化吗?\r
|
|
777
|
+
\r
|
|
778
|
+
你:好\r
|
|
779
|
+
\r
|
|
780
|
+
AI:开始优化...\r
|
|
781
|
+
\`\`\`\r
|
|
782
|
+
\r
|
|
783
|
+
### 场景 4:文档/总结任务\r
|
|
784
|
+
\r
|
|
785
|
+
**适用于**:代码分析、文档生成、技术调研\r
|
|
786
|
+
\r
|
|
787
|
+
**情况 A:你需要 AI 探索代码库**\r
|
|
788
|
+
\r
|
|
789
|
+
\`\`\`\r
|
|
790
|
+
你:创建一个工作区,帮我梳理一下这个项目的架构,我要写技术文档\r
|
|
791
|
+
\r
|
|
792
|
+
AI:好的,这是一个总结分析任务。让我创建工作区。\r
|
|
793
|
+
\r
|
|
794
|
+
📋 工作区:项目架构梳理\r
|
|
795
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-jkl012\r
|
|
796
|
+
\r
|
|
797
|
+
让我分析项目结构...\r
|
|
798
|
+
\r
|
|
799
|
+
[扫描项目、读取文档、分析代码]\r
|
|
800
|
+
\r
|
|
801
|
+
## 项目架构总结\r
|
|
802
|
+
\r
|
|
803
|
+
### 技术栈\r
|
|
804
|
+
| 层级 | 技术选型 |\r
|
|
805
|
+
|------|----------|\r
|
|
806
|
+
| 前端 | React + Redux + TailwindCSS |\r
|
|
807
|
+
| 后端 | Express + Sequelize |\r
|
|
808
|
+
| 数据库 | PostgreSQL |\r
|
|
809
|
+
| 部署 | Docker + Nginx |\r
|
|
810
|
+
\r
|
|
811
|
+
### 目录结构\r
|
|
812
|
+
src/\r
|
|
813
|
+
├── api/ # 后端 API\r
|
|
814
|
+
├── web/ # 前端应用\r
|
|
815
|
+
├── shared/ # 共享代码\r
|
|
816
|
+
└── scripts/ # 工具脚本\r
|
|
817
|
+
\r
|
|
818
|
+
### 核心模块\r
|
|
819
|
+
1. 用户系统 - 注册、登录、权限\r
|
|
820
|
+
2. 商品系统 - CRUD、分类、搜索\r
|
|
821
|
+
3. 订单系统 - 下单、支付、物流\r
|
|
822
|
+
4. 后台管理 - 统计、内容管理\r
|
|
823
|
+
\r
|
|
824
|
+
需要我把这些内容生成 ARCHITECTURE.md 文档吗?\r
|
|
825
|
+
\r
|
|
826
|
+
你:好\r
|
|
827
|
+
\r
|
|
828
|
+
AI:[生成文档]\r
|
|
829
|
+
\r
|
|
830
|
+
✅ 已创建 docs/ARCHITECTURE.md\r
|
|
831
|
+
\r
|
|
832
|
+
文档包含:\r
|
|
833
|
+
- 项目概述\r
|
|
834
|
+
- 技术栈说明\r
|
|
835
|
+
- 目录结构详解\r
|
|
836
|
+
- 核心模块说明\r
|
|
837
|
+
- 数据流图\r
|
|
838
|
+
- 部署架构\r
|
|
839
|
+
\r
|
|
840
|
+
需要补充其他内容吗?\r
|
|
841
|
+
\`\`\`\r
|
|
842
|
+
\r
|
|
843
|
+
**情况 B:你已经提供了项目说明(AI 只需整理成文档)**\r
|
|
844
|
+
\r
|
|
845
|
+
\`\`\`\r
|
|
846
|
+
你:用工作台帮我生成架构文档,项目信息如下:\r
|
|
847
|
+
- 技术栈:Express + React + PostgreSQL\r
|
|
848
|
+
- 目录:api/(后端), web/(前端), shared/(共享)\r
|
|
849
|
+
- 模块:用户、商品、订单、后台\r
|
|
850
|
+
\r
|
|
851
|
+
AI:好的,我来整理你提供的项目信息。\r
|
|
852
|
+
\r
|
|
853
|
+
📋 工作区:项目架构梳理\r
|
|
854
|
+
🌐 WebUI:http://localhost:19540/workspace/ws-jkl012\r
|
|
855
|
+
\r
|
|
856
|
+
## 信息确认\r
|
|
857
|
+
\r
|
|
858
|
+
根据你的描述,项目架构如下:\r
|
|
859
|
+
- 三层架构:前端 + 后端 + 共享\r
|
|
860
|
+
- 四大模块:用户、商品、订单、后台\r
|
|
861
|
+
\r
|
|
862
|
+
还有需要补充的信息吗?(如部署方式、数据流等)\r
|
|
863
|
+
\r
|
|
864
|
+
你:没了,直接生成\r
|
|
865
|
+
\r
|
|
866
|
+
AI:[生成文档]\r
|
|
867
|
+
\r
|
|
868
|
+
✅ 已创建 docs/ARCHITECTURE.md\r
|
|
869
|
+
\`\`\`\r
|
|
870
|
+
\r
|
|
871
|
+
---\r
|
|
872
|
+
\r
|
|
873
|
+
## 进阶功能\r
|
|
874
|
+
\r
|
|
875
|
+
掌握了基础流程后,以下进阶功能能让你更高效地使用 ZeroWorkspace。\r
|
|
876
|
+
\r
|
|
877
|
+
### 继续之前的任务\r
|
|
878
|
+
\r
|
|
879
|
+
关掉对话后,下次开启新对话时,建议让 AI **先了解状态再决定下一步**:\r
|
|
880
|
+
\r
|
|
881
|
+
\`\`\`\r
|
|
882
|
+
你:看看工作区的状态\r
|
|
883
|
+
\r
|
|
884
|
+
AI:📋 博客评论功能 (ws-abc123)\r
|
|
885
|
+
\r
|
|
886
|
+
整体进度:2/3 任务已完成\r
|
|
887
|
+
\r
|
|
888
|
+
任务状态:\r
|
|
889
|
+
✅ 任务 1:创建评论数据模型(已完成)\r
|
|
890
|
+
✅ 任务 2:实现评论 API(已完成)\r
|
|
891
|
+
🔄 任务 3:创建评论组件(进行中)\r
|
|
892
|
+
\r
|
|
893
|
+
当前聚焦:任务 3 - 创建评论组件\r
|
|
894
|
+
上次停在:组件结构设计阶段\r
|
|
895
|
+
\r
|
|
896
|
+
你:继续任务 3\r
|
|
897
|
+
\r
|
|
898
|
+
AI:好的,让我先回顾一下任务 3 的进展...\r
|
|
899
|
+
\r
|
|
900
|
+
[查看节点日志和已完成内容]\r
|
|
901
|
+
\r
|
|
902
|
+
我看到上次已经完成了:\r
|
|
903
|
+
- 组件目录结构\r
|
|
904
|
+
- CommentList 组件骨架\r
|
|
905
|
+
\r
|
|
906
|
+
接下来需要:\r
|
|
907
|
+
- 实现评论输入框\r
|
|
908
|
+
- 添加样式\r
|
|
909
|
+
\r
|
|
910
|
+
继续吗?\r
|
|
911
|
+
\`\`\`\r
|
|
912
|
+
\r
|
|
913
|
+
**推荐的恢复流程**:\r
|
|
914
|
+
\r
|
|
915
|
+
1. **先查看状态**:"看看工作区状态" / "进度怎么样了"\r
|
|
916
|
+
2. **确认聚焦点**:AI 会告诉你当前在哪个节点\r
|
|
917
|
+
3. **决定下一步**:继续当前任务 / 切换到其他任务\r
|
|
918
|
+
\r
|
|
919
|
+
**派发模式下的恢复**:\r
|
|
920
|
+
\r
|
|
921
|
+
如果之前在使用派发模式,对话清空后 AI 可能丢失派发上下文。建议:\r
|
|
922
|
+
\r
|
|
923
|
+
\`\`\`\r
|
|
924
|
+
你:看看工作区状态,我之前在用派发模式\r
|
|
925
|
+
\r
|
|
926
|
+
AI:📋 博客评论功能 (ws-abc123)\r
|
|
927
|
+
\r
|
|
928
|
+
派发状态:已启用\r
|
|
929
|
+
派发母节点:任务 3 - 创建评论组件\r
|
|
930
|
+
\r
|
|
931
|
+
派发子节点状态:\r
|
|
932
|
+
- exec(执行):已完成\r
|
|
933
|
+
- spec(规格审查):进行中\r
|
|
934
|
+
- quality(质量审查):待开始\r
|
|
935
|
+
\r
|
|
936
|
+
需要我继续派发流程吗?\r
|
|
937
|
+
\r
|
|
938
|
+
你:好\r
|
|
939
|
+
\r
|
|
940
|
+
AI:回到派发母节点,继续规格审查...\r
|
|
941
|
+
\`\`\`\r
|
|
942
|
+
\r
|
|
943
|
+
> **提示**:如果 AI 对派发状态理解不清晰,可以说"回到派发母节点,重新开始派发流程"让 AI 重新构建派发上下文。\r
|
|
944
|
+
\r
|
|
945
|
+
**上下文自动压缩时的处理**:\r
|
|
946
|
+
\r
|
|
947
|
+
对话过长时,AI 助手会自动压缩上下文(类似清空对话)。这时可能出现 AI "失忆"的情况,需要观察和提醒:\r
|
|
948
|
+
\r
|
|
949
|
+
\`\`\`\r
|
|
950
|
+
你:(发现 AI 好像忘了之前讨论的内容)\r
|
|
951
|
+
你之前在做什么?看看工作区状态\r
|
|
952
|
+
\r
|
|
953
|
+
AI:让我查看一下...\r
|
|
954
|
+
[读取工作区和节点信息]\r
|
|
955
|
+
\r
|
|
956
|
+
我看到当前在任务 3,之前的进展是...\r
|
|
957
|
+
\`\`\`\r
|
|
958
|
+
\r
|
|
959
|
+
**降低上下文压缩风险的方法**:\r
|
|
960
|
+
\r
|
|
961
|
+
- **分段式完成任务**:将大任务拆分为独立阶段(调研 → 规划 → 执行 → 总结),每个阶段完成后记录结论再进入下一阶段\r
|
|
962
|
+
- **使用派发模式**:复杂任务用派发模式执行,子 Agent 独立运行,不占用主会话上下文\r
|
|
963
|
+
- **及时记录关键信息**:让 AI 把重要决策和发现记录到节点的 notes 或 conclusion 中\r
|
|
964
|
+
\r
|
|
965
|
+
### 追加需求 / 重开任务\r
|
|
966
|
+
\r
|
|
967
|
+
任务完成后想追加功能:\r
|
|
968
|
+
\r
|
|
969
|
+
\`\`\`\r
|
|
970
|
+
你:(任务已完成)还想加一个评论点赞功能\r
|
|
971
|
+
\r
|
|
972
|
+
AI:好的,我来追加这个需求。\r
|
|
973
|
+
\r
|
|
974
|
+
在当前工作区新增任务:\r
|
|
975
|
+
4. [执行] 实现评论点赞\r
|
|
976
|
+
- 后端 API:POST /api/comments/:id/like\r
|
|
977
|
+
- 前端显示点赞数和点赞按钮\r
|
|
978
|
+
\r
|
|
979
|
+
确认开始吗?\r
|
|
980
|
+
\`\`\`\r
|
|
981
|
+
\r
|
|
982
|
+
任务失败后想重试:\r
|
|
983
|
+
\r
|
|
984
|
+
\`\`\`\r
|
|
985
|
+
你:重新做一遍\r
|
|
986
|
+
\r
|
|
987
|
+
AI:好的,我把任务 3 重新打开。\r
|
|
988
|
+
\r
|
|
989
|
+
当前状态:implementing(进行中)\r
|
|
990
|
+
\r
|
|
991
|
+
之前的失败原因是:组件样式冲突\r
|
|
992
|
+
\r
|
|
993
|
+
这次我会:\r
|
|
994
|
+
1. 先检查现有样式\r
|
|
995
|
+
2. 使用 CSS Module 避免冲突\r
|
|
996
|
+
\r
|
|
997
|
+
开始重试?\r
|
|
998
|
+
\`\`\`\r
|
|
999
|
+
\r
|
|
1000
|
+
新需求较复杂时,让 AI 重新收集信息:\r
|
|
1001
|
+
\r
|
|
1002
|
+
\`\`\`\r
|
|
1003
|
+
你:还想加一个评论审核功能,这个比较复杂,先收集一下信息\r
|
|
1004
|
+
\r
|
|
1005
|
+
AI:好的,这是一个较复杂的新需求,我先进行信息收集。\r
|
|
1006
|
+
\r
|
|
1007
|
+
[创建信息收集节点]\r
|
|
1008
|
+
\r
|
|
1009
|
+
让我了解一下:\r
|
|
1010
|
+
1. 审核流程是怎样的?(自动 / 人工 / 混合)\r
|
|
1011
|
+
2. 审核状态有哪些?(待审核 / 通过 / 拒绝)\r
|
|
1012
|
+
3. 谁有审核权限?\r
|
|
1013
|
+
4. 是否需要敏感词过滤?\r
|
|
1014
|
+
\r
|
|
1015
|
+
你:人工审核,管理员有权限,需要敏感词过滤\r
|
|
1016
|
+
\r
|
|
1017
|
+
AI:明白了,让我再看看现有的权限系统...\r
|
|
1018
|
+
\r
|
|
1019
|
+
[探索代码库]\r
|
|
1020
|
+
\r
|
|
1021
|
+
信息收集完成,我制定了以下计划:\r
|
|
1022
|
+
\r
|
|
1023
|
+
1. [执行] 添加评论状态字段\r
|
|
1024
|
+
2. [执行] 实现敏感词过滤\r
|
|
1025
|
+
3. [执行] 创建审核 API\r
|
|
1026
|
+
4. [执行] 添加管理后台审核页面\r
|
|
1027
|
+
\r
|
|
1028
|
+
确认开始吗?\r
|
|
1029
|
+
\`\`\`\r
|
|
1030
|
+
\r
|
|
1031
|
+
> **提示**:复杂的新需求走一遍信息收集流程,能让 AI 更好地理解需求并制定合理计划,避免遗漏关键点。\r
|
|
1032
|
+
\r
|
|
1033
|
+
### 派发模式\r
|
|
1034
|
+
\r
|
|
1035
|
+
对于复杂任务,AI 可以把子任务派发给专门的执行器。\r
|
|
1036
|
+
\r
|
|
1037
|
+
**派发模式 vs 普通模式**:\r
|
|
1038
|
+
\r
|
|
1039
|
+
| 对比 | 普通模式 | 派发模式 |\r
|
|
1040
|
+
|------|----------|----------|\r
|
|
1041
|
+
| 执行者 | 主 AI 直接执行 | 专门的 executor 执行 |\r
|
|
1042
|
+
| 上下文 | 完整对话上下文 | 只有当前任务上下文 |\r
|
|
1043
|
+
| 审查 | 无 | 自动规格审查 |\r
|
|
1044
|
+
| 回滚 | 手动 | 自动(Git 模式) |\r
|
|
1045
|
+
| 适合 | 简单任务、强依赖完整上下文的任务 | 复杂任务、可独立执行的子任务 |\r
|
|
1046
|
+
\r
|
|
1047
|
+
**什么时候用派发模式**:\r
|
|
1048
|
+
\r
|
|
1049
|
+
| 任务类型 | 建议 | 原因 |\r
|
|
1050
|
+
|----------|------|------|\r
|
|
1051
|
+
| 中大规模代码任务 | ✅ 推荐派发 | 可拆分为独立单元执行 |\r
|
|
1052
|
+
| 整理/梳理任务 | ✅ 推荐派发 | 用派发整理局部结论,再集中总结 |\r
|
|
1053
|
+
| 小规模任务 | ❌ 不推荐 | 派发开销可能超过收益 |\r
|
|
1054
|
+
| Bug 修复 | ⚠️ 部分使用 | 上下文强相关,可只用派发做验证环节 |\r
|
|
1055
|
+
\r
|
|
1056
|
+
**简单判断**:如果任务能拆成多个"互不依赖"的子任务,就适合派发。\r
|
|
1057
|
+
\r
|
|
1058
|
+
**对话示例**:\r
|
|
1059
|
+
\r
|
|
1060
|
+
\`\`\`\r
|
|
1061
|
+
你:这个任务比较复杂,用派发模式\r
|
|
1062
|
+
\r
|
|
1063
|
+
AI:好的,启用派发模式。\r
|
|
1064
|
+
\r
|
|
1065
|
+
派发模式说明:\r
|
|
1066
|
+
- 每个子任务由独立的 executor 执行\r
|
|
1067
|
+
- 执行完成后会有 reviewer 审查结果\r
|
|
1068
|
+
- 失败时自动回滚代码变更\r
|
|
1069
|
+
\r
|
|
1070
|
+
当前任务会被派发为:\r
|
|
1071
|
+
1. 执行器执行 → 2. 规格审查 → 3. 质量审查(可选)\r
|
|
1072
|
+
\r
|
|
1073
|
+
确认启用?\r
|
|
1074
|
+
\r
|
|
1075
|
+
你:好\r
|
|
1076
|
+
\r
|
|
1077
|
+
AI:派发模式已启用。\r
|
|
1078
|
+
\r
|
|
1079
|
+
开始派发任务 1 给 zero-executor...\r
|
|
1080
|
+
\r
|
|
1081
|
+
[executor 独立执行]\r
|
|
1082
|
+
\r
|
|
1083
|
+
✅ 执行完成\r
|
|
1084
|
+
开始规格审查...\r
|
|
1085
|
+
\r
|
|
1086
|
+
[reviewer 检查结果]\r
|
|
1087
|
+
\r
|
|
1088
|
+
✅ 规格审查通过\r
|
|
1089
|
+
- 所有验收标准满足\r
|
|
1090
|
+
- 代码变更已合并\r
|
|
1091
|
+
\r
|
|
1092
|
+
继续派发下一个任务...\r
|
|
1093
|
+
\`\`\`\r
|
|
1094
|
+
\r
|
|
1095
|
+
**质量审查(可选)**:\r
|
|
1096
|
+
\r
|
|
1097
|
+
质量审查用于检查代码可读性、安全性、性能等,适合以下场景:\r
|
|
1098
|
+
\r
|
|
1099
|
+
| 场景 | 建议 |\r
|
|
1100
|
+
|------|------|\r
|
|
1101
|
+
| 代码质量要求高 | ✅ 开启 |\r
|
|
1102
|
+
| 重构/优化任务 | ✅ 开启 |\r
|
|
1103
|
+
| 快速迭代/原型开发 | ❌ 可不开启,节省时间 |\r
|
|
1104
|
+
\r
|
|
1105
|
+
AI 默认倾向不开启。你可以通过对话告知 AI:\r
|
|
1106
|
+
- "这个任务开启质量审查"\r
|
|
1107
|
+
- "最后一个子任务做质量审查"\r
|
|
1108
|
+
- "重构相关的任务都要质量审查"\r
|
|
1109
|
+
\r
|
|
1110
|
+
**成本与回滚**:\r
|
|
1111
|
+
\r
|
|
1112
|
+
- **时间消耗**:派发模式为每个子任务构建独立上下文并进行完整的实现——验证流程,时间消耗比普通模式更高。适合用在复杂或中大型任务上。\r
|
|
1113
|
+
- **自动回滚**:是 **Git 模式专属**功能,通过 Git 分支管理实现。\r
|
|
1114
|
+
\r
|
|
1115
|
+
> ⚠️ **注意**:Git 模式涉及 Git 操作,属于**实验功能**。使用前建议做好代码备份。\r
|
|
1116
|
+
\r
|
|
1117
|
+
### 多工作区管理\r
|
|
1118
|
+
\r
|
|
1119
|
+
同时进行多个任务时:\r
|
|
1120
|
+
\r
|
|
1121
|
+
\`\`\`\r
|
|
1122
|
+
你:我现在有几个工作区?\r
|
|
1123
|
+
\r
|
|
1124
|
+
AI:你有 3 个工作区:\r
|
|
1125
|
+
\r
|
|
1126
|
+
1. 📋 博客评论功能 (ws-abc123)\r
|
|
1127
|
+
状态:进行中,2/3 任务完成\r
|
|
1128
|
+
\r
|
|
1129
|
+
2. 📋 首页性能优化 (ws-ghi789)\r
|
|
1130
|
+
状态:已完成\r
|
|
1131
|
+
\r
|
|
1132
|
+
3. 📋 用户登录修复 (ws-def456)\r
|
|
1133
|
+
状态:已完成\r
|
|
1134
|
+
\r
|
|
1135
|
+
你:切换到评论功能\r
|
|
1136
|
+
\r
|
|
1137
|
+
AI:已切换到工作区:博客评论功能\r
|
|
1138
|
+
\r
|
|
1139
|
+
当前进度:\r
|
|
1140
|
+
✅ 任务 1:创建评论数据模型\r
|
|
1141
|
+
✅ 任务 2:实现评论 API\r
|
|
1142
|
+
🔄 任务 3:创建评论组件(进行中)\r
|
|
1143
|
+
\r
|
|
1144
|
+
继续执行任务 3 吗?\r
|
|
1145
|
+
\`\`\`\r
|
|
1146
|
+
\r
|
|
1147
|
+
### 工作区管理\r
|
|
1148
|
+
\r
|
|
1149
|
+
**归档与删除**\r
|
|
1150
|
+
\r
|
|
1151
|
+
完成的工作区建议**归档**而非删除:\r
|
|
1152
|
+
\r
|
|
1153
|
+
\`\`\`\r
|
|
1154
|
+
你:把这个工作区归档\r
|
|
1155
|
+
AI:已归档工作区:博客评论功能\r
|
|
1156
|
+
\`\`\`\r
|
|
1157
|
+
\r
|
|
1158
|
+
| 处理方式 | 说明 |\r
|
|
1159
|
+
|----------|------|\r
|
|
1160
|
+
| **归档**(推荐) | 不会被 AI 直接查询到,提高巡检效率;可供后期复盘 |\r
|
|
1161
|
+
| **删除** | 不建议删除流程完备的工作区,会丢失执行记录 |\r
|
|
1162
|
+
\r
|
|
1163
|
+
> **提示**:归档的工作区仍保留在 \`.zero-workspace/\` 目录中,需要时可以恢复。\r
|
|
1164
|
+
\r
|
|
1165
|
+
**暂停与恢复**\r
|
|
1166
|
+
\r
|
|
1167
|
+
如果需要暂停任务,不建议直接关闭对话。更好的做法:\r
|
|
1168
|
+
\r
|
|
1169
|
+
\`\`\`\r
|
|
1170
|
+
你:我要离开了,把当前进度记录一下\r
|
|
1171
|
+
AI:好的,我来记录当前状态...\r
|
|
1172
|
+
\r
|
|
1173
|
+
[记录到节点 notes/conclusion]\r
|
|
1174
|
+
\r
|
|
1175
|
+
已记录:\r
|
|
1176
|
+
- 当前在:任务 3 - 创建评论组件\r
|
|
1177
|
+
- 进度:组件结构已完成,样式待实现\r
|
|
1178
|
+
- 下一步:添加 CSS Module 样式\r
|
|
1179
|
+
\r
|
|
1180
|
+
下次继续时说"看看工作区状态"即可恢复。\r
|
|
1181
|
+
\`\`\`\r
|
|
1182
|
+
\r
|
|
1183
|
+
**原因**:直接关闭可能导致执行中的节点状态不完整。让 AI 先记录上下文,后续恢复更顺畅。\r
|
|
1184
|
+
\r
|
|
1185
|
+
**导入导出**\r
|
|
1186
|
+
\r
|
|
1187
|
+
工作区支持导出为 \`.twsp\` 文件,便于备份、迁移或分享:\r
|
|
1188
|
+
\r
|
|
1189
|
+
| 操作 | 入口 | 说明 |\r
|
|
1190
|
+
|------|------|------|\r
|
|
1191
|
+
| **导出** | 工作区详情页 →「EXPORT」按钮 | 导出为 .twsp 文件,包含完整工作区数据 |\r
|
|
1192
|
+
| **导入** | 设置 → 索引管理 → 管理 | 拖拽 .twsp 文件或目录,自动扫描导入 |\r
|
|
1193
|
+
\r
|
|
1194
|
+
导入支持三种方式:\r
|
|
1195
|
+
- 拖拽 \`.twsp\` 文件直接导入\r
|
|
1196
|
+
- 拖拽项目目录自动扫描\r
|
|
1197
|
+
- 手动输入路径\r
|
|
1198
|
+
\r
|
|
1199
|
+
> **提示**:导入功能还可以扫描已索引路径,发现新工作区并清理无效条目。\r
|
|
1200
|
+
\r
|
|
1201
|
+
### 查看和导出日志\r
|
|
1202
|
+
\r
|
|
1203
|
+
每个任务的执行过程都会被记录:\r
|
|
1204
|
+
\r
|
|
1205
|
+
\`\`\`\r
|
|
1206
|
+
你:看看任务 2 的执行日志\r
|
|
1207
|
+
\r
|
|
1208
|
+
AI:任务 2 执行日志:\r
|
|
1209
|
+
\r
|
|
1210
|
+
[10:32:15] 开始执行:实现评论 API\r
|
|
1211
|
+
[10:32:20] 分析现有 API 结构\r
|
|
1212
|
+
[10:33:05] 创建 src/routes/comments.js\r
|
|
1213
|
+
[10:33:45] 实现 POST /api/posts/:id/comments\r
|
|
1214
|
+
[10:34:30] 实现 GET /api/posts/:id/comments\r
|
|
1215
|
+
[10:35:10] 实现 DELETE /api/comments/:id\r
|
|
1216
|
+
[10:35:50] 添加路由注册\r
|
|
1217
|
+
[10:36:00] 完成:评论 API 实现完成\r
|
|
1218
|
+
\r
|
|
1219
|
+
你:导出整个工作区的日志\r
|
|
1220
|
+
\r
|
|
1221
|
+
AI:日志已导出到:.zero-workspace/博客评论功能_ws-abc123/export.md\r
|
|
1222
|
+
\`\`\`\r
|
|
1223
|
+
\r
|
|
1224
|
+
### WebUI 功能\r
|
|
1225
|
+
\r
|
|
1226
|
+
访问 \`http://localhost:19540/workspace/<工作区ID>\` 可以:\r
|
|
1227
|
+
\r
|
|
1228
|
+
| 功能 | 说明 |\r
|
|
1229
|
+
|------|------|\r
|
|
1230
|
+
| 任务树视图 | 树状展示所有节点,颜色区分状态 |\r
|
|
1231
|
+
| 节点详情 | 点击节点查看需求、结论、日志 |\r
|
|
1232
|
+
| 进度统计 | 各状态节点数量,完成百分比 |\r
|
|
1233
|
+
| MEMO 查看 | 查看 AI 记录的备忘信息 |\r
|
|
1234
|
+
| 实时更新 | 自动刷新,无需手动刷新 |\r
|
|
1235
|
+
\r
|
|
1236
|
+
> **注意**:WebUI 仅支持本机访问(localhost)。如需远程访问,可通过端口映射工具实现。\r
|
|
1237
|
+
\r
|
|
1238
|
+
### OpenSpec 导入(实验功能)\r
|
|
1239
|
+
\r
|
|
1240
|
+
如果你的项目使用了 OpenSpec,可以通过两种方式与工作台配合使用。\r
|
|
1241
|
+
\r
|
|
1242
|
+
**信息总结**:把 OpenSpec 当做 PRD 来理解和梳理,产出是文档/总结。\r
|
|
1243
|
+
\r
|
|
1244
|
+
\`\`\`\r
|
|
1245
|
+
你:用工作台帮我梳理一下 OpenSpec 里 feature-login 的变更内容\r
|
|
1246
|
+
AI:[创建 summary 场景工作区] → [阅读 proposal.md、tasks.md] → [产出结构化总结]\r
|
|
1247
|
+
\`\`\`\r
|
|
1248
|
+
\r
|
|
1249
|
+
适合:想先理解变更内容、提取关键信息,再决定如何执行。\r
|
|
1250
|
+
\r
|
|
1251
|
+
**直接导入**:把 OpenSpec 任务结构批量映射为工作区节点,可直接开始执行。\r
|
|
1252
|
+
\r
|
|
1253
|
+
\`\`\`\r
|
|
1254
|
+
你:把 OpenSpec 的 feature-login 导入到工作台\r
|
|
1255
|
+
AI:[列出变更详情] → [确认后执行导入] → [直接创建工作区和对应节点]\r
|
|
1256
|
+
\`\`\`\r
|
|
1257
|
+
\r
|
|
1258
|
+
适合:已确定要执行 OpenSpec 中的任务,想跳过规划直接开始。\r
|
|
1259
|
+
\r
|
|
1260
|
+
> ⚠️ 这是实验功能,适合已有 OpenSpec 规范的项目。普通用户无需关注。\r
|
|
1261
|
+
\r
|
|
1262
|
+
---\r
|
|
1263
|
+
\r
|
|
1264
|
+
## 问题诊断\r
|
|
1265
|
+
\r
|
|
1266
|
+
### FAQ:常见问题\r
|
|
1267
|
+
\r
|
|
1268
|
+
**Q1:工作区是什么?我必须用吗?**\r
|
|
1269
|
+
\r
|
|
1270
|
+
工作区是一个任务的完整记录,包括需求、计划、执行过程、结论。你不是必须用——但当任务超过 3 步时,工作区能帮 AI 保持清晰的思路,也让你能追踪进度。\r
|
|
1271
|
+
\r
|
|
1272
|
+
**Q2:我可以不用工作台直接让 AI 做吗?**\r
|
|
1273
|
+
\r
|
|
1274
|
+
可以。只要不提及"工作区"或"工作台",AI 会直接执行而不创建工作区。比如直接说"帮我改个 bug",AI 就会像平常一样工作。适合简单的一次性任务。\r
|
|
1275
|
+
\r
|
|
1276
|
+
**Q3:为什么 AI 会问我确认计划?能跳过吗?**\r
|
|
1277
|
+
\r
|
|
1278
|
+
这是防止 AI 跑偏的关键检查点。你可以说"以后不用确认了",但建议保留——看一眼计划只需要 10 秒,但修复跑偏的结果可能要 10 分钟。\r
|
|
1279
|
+
\r
|
|
1280
|
+
**Q4:任务太大了,AI 做不完怎么办?**\r
|
|
1281
|
+
\r
|
|
1282
|
+
说"这个太大了,帮我拆分"。AI 会把大任务分解成多个小任务,每个都有明确的验收标准。\r
|
|
1283
|
+
\r
|
|
1284
|
+
**Q5:AI 做错了怎么办?**\r
|
|
1285
|
+
\r
|
|
1286
|
+
说"这个不对,重新做"或"回滚"。如果是派发模式,代码会自动回滚;如果不是,你可能需要手动 git reset。\r
|
|
1287
|
+
\r
|
|
1288
|
+
**Q6:怎么看 AI 做了什么?**\r
|
|
1289
|
+
\r
|
|
1290
|
+
- **日常查看**:打开 WebUI,直观展示任务树、节点详情、执行日志\r
|
|
1291
|
+
- **查看元数据**:只有需要查看底层管理数据时,才去 \`.zero-workspace/\` 目录\r
|
|
1292
|
+
\r
|
|
1293
|
+
**Q7:关掉对话后工作区还在吗?**\r
|
|
1294
|
+
\r
|
|
1295
|
+
在。工作区存储在项目目录的 \`.zero-workspace/\` 下,不会因为关闭对话而丢失。下次说"继续"就能恢复。\r
|
|
1296
|
+
\r
|
|
1297
|
+
**Q8:一个项目可以有多个工作区吗?**\r
|
|
1298
|
+
\r
|
|
1299
|
+
可以。每个工作区是独立的任务,你可以同时进行多个任务。但建议完成一个再开始下一个,避免上下文混乱。\r
|
|
1300
|
+
\r
|
|
1301
|
+
**Q9:派发模式和普通模式有什么区别?**\r
|
|
1302
|
+
\r
|
|
1303
|
+
详见 [进阶功能 > 派发模式](#派发模式适合复杂任务)。简单来说:普通模式由主 AI 直接执行,派发模式将子任务交给专门的 executor,适合可拆分的中大型任务。\r
|
|
1304
|
+
\r
|
|
1305
|
+
**Q10:为什么有时候 AI 不创建工作区?**\r
|
|
1306
|
+
\r
|
|
1307
|
+
因为你没有明确提及"工作区"或"工作台"。试试说"用工作台帮我做xxx"或"创建一个工作区"。\r
|
|
1308
|
+
\r
|
|
1309
|
+
**Q11:我可以手动操作节点吗?**\r
|
|
1310
|
+
\r
|
|
1311
|
+
| 操作类型 | 能否操作 | 说明 |\r
|
|
1312
|
+
|----------|---------|------|\r
|
|
1313
|
+
| 节点逻辑关系(添加/删除/状态转换) | WebUI 可操作 | 仅在 AI 出现重要纰漏时使用,AI 会在下次调用时收到通知 |\r
|
|
1314
|
+
| 节点内容(需求/结论/笔记) | 需修改原始数据 | AI 总结不准确时可人工修正,但不会通知 AI |\r
|
|
1315
|
+
\r
|
|
1316
|
+
**原则**:优先让 AI 自行修复问题。手动操作是最后手段。\r
|
|
1317
|
+
\r
|
|
1318
|
+
**Q12:我手动改了代码,会影响工作区吗?**\r
|
|
1319
|
+
\r
|
|
1320
|
+
不会。工作区只记录任务结构和执行日志,不跟踪代码文件变化。你可以随时手动修改代码,工作区不会受到影响。但建议在 AI 执行任务期间避免同时修改相关代码,以免产生冲突。\r
|
|
1321
|
+
\r
|
|
1322
|
+
**Q13:WebUI 打不开怎么办?**\r
|
|
1323
|
+
\r
|
|
1324
|
+
1. **检查服务状态**:\`zero-workspace webui status\`\r
|
|
1325
|
+
2. **重启服务**:\`zero-workspace webui restart\`,然后刷新页面\r
|
|
1326
|
+
3. **端口被占用**:\`HTTP_PORT=19542 zero-workspace webui\`\r
|
|
1327
|
+
\r
|
|
1328
|
+
**Q14:工作区完成后怎么处理?暂停任务怎么办?**\r
|
|
1329
|
+
\r
|
|
1330
|
+
详见 [进阶功能 > 工作区管理](#工作区管理)。简单来说:完成后建议归档而非删除;暂停前让 AI 记录当前进度。\r
|
|
1331
|
+
\r
|
|
1332
|
+
### 发现问题的信号\r
|
|
1333
|
+
\r
|
|
1334
|
+
| 现象 | 可能原因 | 解决方法 |\r
|
|
1335
|
+
|------|----------|----------|\r
|
|
1336
|
+
| AI 直接执行不问确认 | 跳过了计划确认步骤 | 说"先展示计划让我确认" |\r
|
|
1337
|
+
| 没有告知 WebUI 地址 | AI 遗漏关键步骤 | 说"WebUI 地址是什么" |\r
|
|
1338
|
+
| 节点直接变成完成 | AI 跳步操作 | 说"请先 start 节点再执行" |\r
|
|
1339
|
+
| AI 长时间没响应 | 执行卡住或出错 | 说"怎么了?有什么问题吗" |\r
|
|
1340
|
+
| AI 说"我不确定" | 信息收集不充分 | 说"先收集信息再规划" |\r
|
|
1341
|
+
| 结论很模糊 | AI 没有总结 | 说"这个节点的结论是什么" |\r
|
|
1342
|
+
| 做了一半说完成了 | 验收标准不清晰 | 说"验收标准是什么?都满足了吗" |\r
|
|
1343
|
+
\r
|
|
1344
|
+
### 纠正 AI 的标准话术\r
|
|
1345
|
+
\r
|
|
1346
|
+
当你发现 AI 行为不对时,可以用这些话术纠正:\r
|
|
1347
|
+
\r
|
|
1348
|
+
| 问题 | 你可以说 |\r
|
|
1349
|
+
|------|----------|\r
|
|
1350
|
+
| 跳过确认 | "先展示计划让我确认" |\r
|
|
1351
|
+
| 没给链接 | "WebUI 地址是什么" |\r
|
|
1352
|
+
| 跳步操作 | "请先 start 节点再执行" |\r
|
|
1353
|
+
| 没记录 | "把这个记下来" |\r
|
|
1354
|
+
| 忘记结论 | "这个节点的结论是什么" |\r
|
|
1355
|
+
| 任务太大 | "这个太大了,拆分一下" |\r
|
|
1356
|
+
| 做错了 | "这个不对,重新做" |\r
|
|
1357
|
+
| 卡住了 | "有什么问题吗?需要我帮忙吗" |\r
|
|
1358
|
+
| 想放弃 | "这个先不做了" |\r
|
|
1359
|
+
\r
|
|
1360
|
+
---\r
|
|
1361
|
+
\r
|
|
1362
|
+
## 参考速查\r
|
|
1363
|
+
\r
|
|
1364
|
+
### 触发词速查\r
|
|
1365
|
+
\r
|
|
1366
|
+
| 意图 | 说法 |\r
|
|
1367
|
+
|------|------|\r
|
|
1368
|
+
| 创建工作区 | "用**工作台**帮我做xxx"、"创建一个**工作区**" |\r
|
|
1369
|
+
| 恢复任务 | "看看工作区状态"(推荐先查看再继续) |\r
|
|
1370
|
+
| 查看进度 | 进度、做到哪了、状态、现在什么情况 |\r
|
|
1371
|
+
| 确认计划 | 好、可以、继续、就这样、开始 |\r
|
|
1372
|
+
| 调整计划 | 不对、调整一下、先不做、跳过 |\r
|
|
1373
|
+
| 重新执行 | 重新做、再试一次、重来 |\r
|
|
1374
|
+
| 放弃任务 | 先不做了、取消、算了 |\r
|
|
1375
|
+
\r
|
|
1376
|
+
> **注意**:创建工作区必须明确提及"工作区"或"工作台",否则 AI 会直接执行而不创建工作区。\r
|
|
1377
|
+
\r
|
|
1378
|
+
### 数据存储位置\r
|
|
1379
|
+
\r
|
|
1380
|
+
\`\`\`\r
|
|
1381
|
+
项目目录/\r
|
|
1382
|
+
└── .zero-workspace/\r
|
|
1383
|
+
└── <工作区名称>_<id>/\r
|
|
1384
|
+
├── graph.json # 节点树结构\r
|
|
1385
|
+
├── Info.md # 工作区信息\r
|
|
1386
|
+
└── nodes/\r
|
|
1387
|
+
└── <节点名称>_<id>/\r
|
|
1388
|
+
├── Info.md # 节点信息\r
|
|
1389
|
+
└── Log.md # 执行日志\r
|
|
1390
|
+
\`\`\`\r
|
|
1391
|
+
\r
|
|
1392
|
+
---\r
|
|
1393
|
+
\r
|
|
1394
|
+
## 已知局限\r
|
|
1395
|
+
\r
|
|
1396
|
+
以下是当前版本的已知局限。我们区分了"可改进"(未来可能通过优化解决)和"架构性"(由设计决定,短期不会改变)两类。\r
|
|
1397
|
+
\r
|
|
1398
|
+
### 可改进的局限\r
|
|
1399
|
+
\r
|
|
1400
|
+
**长对话下 AI 对工作台的唤起能力下降**\r
|
|
1401
|
+
\r
|
|
1402
|
+
当单个对话流程较长时,AI 可能逐渐"忘记"主动使用工作台工具,回到普通对话模式。这是 AI 上下文管理的固有挑战。\r
|
|
1403
|
+
\r
|
|
1404
|
+
- **表现**:AI 开始直接回答而不更新节点,或忘记记录结论\r
|
|
1405
|
+
- **应对**:提醒 AI"用工作台记录一下"或"更新节点状态"\r
|
|
1406
|
+
- **展望**:随着 AI 能力提升和提示优化,此问题有望改善\r
|
|
1407
|
+
\r
|
|
1408
|
+
**上下文恢复依赖记录完整性**\r
|
|
1409
|
+
\r
|
|
1410
|
+
暂停任务后恢复时,AI 能恢复多少上下文取决于之前记录的完整性。如果节点的 conclusion/notes 记录不充分,恢复后 AI 可能遗漏关键信息。\r
|
|
1411
|
+
\r
|
|
1412
|
+
- **表现**:恢复后 AI 对之前的决策细节不清楚\r
|
|
1413
|
+
- **应对**:暂停前让 AI 充分记录当前状态;恢复后先查看节点内容确认\r
|
|
1414
|
+
- **展望**:可通过更智能的自动记录机制改善\r
|
|
1415
|
+
\r
|
|
1416
|
+
**需求变更后节点结构可能不够理想**\r
|
|
1417
|
+
\r
|
|
1418
|
+
在项目进行中二次添加需求或修改需求时,新增的节点结构可能与原有规划不协调,或组织方式不够美观。这是由工作台的上下文机制和 AI 当时的上下文状态共同决定的。\r
|
|
1419
|
+
\r
|
|
1420
|
+
- **表现**:新增节点位置不合理,或与原有节点的层级关系混乱\r
|
|
1421
|
+
- **应对**:添加需求后,可让 AI "重新整理一下工作区结构"或具体描述期望的组织方式\r
|
|
1422
|
+
- **展望**:可通过增强引导机制优化,但由于 AI 决策的动态性,难以彻底解决\r
|
|
1423
|
+
\r
|
|
1424
|
+
### 架构性的局限\r
|
|
1425
|
+
\r
|
|
1426
|
+
**派发模式需要 AI 支持 subagent**\r
|
|
1427
|
+
\r
|
|
1428
|
+
派发模式依赖 AI 助手的 subagent(子代理)能力来执行子任务。并非所有 MCP 兼容的 AI 助手都完整支持此功能。\r
|
|
1429
|
+
\r
|
|
1430
|
+
- **Claude Code**:完全支持\r
|
|
1431
|
+
- **Cursor**:subagent 支持有限,派发模式可能无法正常工作\r
|
|
1432
|
+
- **其他 MCP 助手**:取决于具体实现\r
|
|
1433
|
+
\r
|
|
1434
|
+
这是 MCP 协议生态的现状,非工作台本身的限制。\r
|
|
1435
|
+
\r
|
|
1436
|
+
**历史工作区需手动管理**\r
|
|
1437
|
+
\r
|
|
1438
|
+
工作区不会自动删除或归档。随着使用时间增长,\`.zero-workspace/\` 目录下会积累历史工作区。\r
|
|
1439
|
+
\r
|
|
1440
|
+
- **设计原因**:自动清理可能误删有价值的历史记录\r
|
|
1441
|
+
- **应对**:定期归档已完成的工作区;不再需要的可手动删除\r
|
|
1442
|
+
\r
|
|
1443
|
+
---\r
|
|
1444
|
+
\r
|
|
1445
|
+
*本手册适用于 ZeroWorkspace v1.x*\r
|
|
1446
|
+
\r
|
|
1447
|
+
`,B={class:"docs-view"},H={class:"docs-header"},N={class:"header-right"},Q=["title"],Z={key:0,class:"icon-sun",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},L={key:1,class:"icon-moon",viewBox:"0 0 24 24",fill:"none",stroke:"currentColor","stroke-width":"2"},D={class:"docs-main"},q={class:"docs-sidebar"},G={class:"toc-nav"},J={class:"toc-list"},j=["onClick"],V=x({__name:"DocsView",setup($){const u=U();function g(){try{return JSON.parse(localStorage.getItem("zero-workspace-home-preferences")||"{}").theme||"light"}catch{return"light"}}const s=d(g());document.documentElement.setAttribute("data-theme",s.value);function k(){s.value=s.value==="light"?"dark":"light",document.documentElement.setAttribute("data-theme",s.value);const t=JSON.parse(localStorage.getItem("zero-workspace-home-preferences")||"{}");t.theme=s.value,localStorage.setItem("zero-workspace-home-preferences",JSON.stringify(t))}const a=v(()=>{const t=[],n=/^(#{2,3})\s+(.+)$/gm;let r;for(;(r=n.exec(h))!==null;){const c=r[1].length,i=r[2].trim(),p=i.toLowerCase().replace(/[^\w\u4e00-\u9fa5\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"");t.push({id:p,title:i,level:c})}return t}),A=d(""),o=d(null);function b(t){const n=document.getElementById(t);n&&(n.scrollIntoView({behavior:"smooth",block:"start"}),A.value=t)}function m(){if(!o.value)return;const t=100,n=o.value;let r="";for(const c of a.value){const i=document.getElementById(c.id);if(i){const p=i.getBoundingClientRect(),f=n.getBoundingClientRect();p.top-f.top<=t&&(r=c.id)}}r&&(A.value=r)}function w(){window.history.length>1?u.back():u.push("/")}return S(()=>{W(()=>{o.value&&(o.value.querySelectorAll("h2, h3").forEach(n=>{const c=(n.textContent||"").toLowerCase().replace(/[^\w\u4e00-\u9fa5\s-]/g,"").replace(/\s+/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,"");n.id=c}),o.value.addEventListener("scroll",m),a.value.length>0&&a.value[0]&&(A.value=a.value[0].id))})}),E(()=>{o.value&&o.value.removeEventListener("scroll",m)}),(t,n)=>(I(),l("div",B,[e("header",H,[e("div",{class:"header-left"},[e("button",{class:"ws-btn text",onClick:w,title:"返回"},"<"),n[0]||(n[0]=e("h1",{class:"docs-title"},"用户手册",-1))]),e("div",N,[e("button",{class:"theme-toggle",onClick:k,title:s.value==="light"?"切换到深色模式":"切换到浅色模式"},[s.value==="light"?(I(),l("svg",Z,[...n[1]||(n[1]=[_('<circle cx="12" cy="12" r="5" data-v-dfcb658b></circle><line x1="12" y1="1" x2="12" y2="3" data-v-dfcb658b></line><line x1="12" y1="21" x2="12" y2="23" data-v-dfcb658b></line><line x1="4.22" y1="4.22" x2="5.64" y2="5.64" data-v-dfcb658b></line><line x1="18.36" y1="18.36" x2="19.78" y2="19.78" data-v-dfcb658b></line><line x1="1" y1="12" x2="3" y2="12" data-v-dfcb658b></line><line x1="21" y1="12" x2="23" y2="12" data-v-dfcb658b></line><line x1="4.22" y1="19.78" x2="5.64" y2="18.36" data-v-dfcb658b></line><line x1="18.36" y1="5.64" x2="19.78" y2="4.22" data-v-dfcb658b></line>',9)])])):(I(),l("svg",L,[...n[2]||(n[2]=[e("path",{d:"M21 12.79A9 9 0 1 1 11.21 3 7 7 0 0 0 21 12.79z"},null,-1)])]))],8,Q)])]),e("div",D,[e("aside",q,[n[3]||(n[3]=e("div",{class:"sidebar-header"},[e("h3",null,"目录")],-1)),e("nav",G,[e("ul",J,[(I(!0),l(C,null,T(a.value,r=>(I(),l("li",{key:r.id,class:M(["toc-item",`level-${r.level}`,{active:A.value===r.id}]),onClick:c=>b(r.id)},O(r.title),11,j))),128))])])]),e("main",{ref_key:"contentRef",ref:o,class:"docs-content"},[y(R,{content:P(h)},null,8,["content"])],512)])]))}}),Y=z(V,[["__scopeId","data-v-dfcb658b"]]);export{Y as default};
|