xtep-workspace 1.10.10
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 +525 -0
- package/README.md +188 -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 +89 -0
- package/plugin/README.md +141 -0
- package/plugin/agents/xtep-executor.md +114 -0
- package/plugin/agents/xtep-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//351/205/215/347/275/256/346/226/271/345/274/217.md +330 -0
package/README.md
ADDED
|
@@ -0,0 +1,188 @@
|
|
|
1
|
+
<p align="center">
|
|
2
|
+
<img src="assets/logo.svg" alt="XtepWorkspace" height="48">
|
|
3
|
+
</p>
|
|
4
|
+
|
|
5
|
+
<h3 align="center">AI 编程任务的结构化管理方案</h3>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
树形任务结构 · 上下文聚焦 · 过程可追溯
|
|
9
|
+
</p>
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 这是什么?
|
|
14
|
+
|
|
15
|
+
XtepWorkspace 就像是 AI 的项目管理系统。
|
|
16
|
+
|
|
17
|
+
想象你在和一个能干但健忘的同事合作——他很聪明,但对话一长就忘了早期的决策;任务一复杂就容易跑偏。XtepWorkspace 就是给这个"同事"配的任务管理工具:把大任务拆成小步骤,每步都记录下来,随时能回顾进度。
|
|
18
|
+
|
|
19
|
+
| 概念 | 说明 |
|
|
20
|
+
|------|------|
|
|
21
|
+
| **工作台** | XtepWorkspace 本身,管理所有工作区 |
|
|
22
|
+
| **工作区** | 单个任务的完整记录,包含一棵任务树 |
|
|
23
|
+
| **节点** | 任务树中的每个任务单元 |
|
|
24
|
+
|
|
25
|
+
### 解决什么问题?
|
|
26
|
+
|
|
27
|
+
| 问题 | 没有工作台时 | 有工作台后 |
|
|
28
|
+
|------|-------------|-----------|
|
|
29
|
+
| **AI 忘事** | 对话超过 10 轮,AI 忘了开头说的需求 | 所有决策都记录在节点里,随时查阅 |
|
|
30
|
+
| **过程黑盒** | 不知道 AI 做了什么、为什么这样做 | WebUI 实时展示任务树和执行日志 |
|
|
31
|
+
| **粒度失控** | AI 一次规划太多,执行质量下降 | 强制拆分,一次只做一个任务 |
|
|
32
|
+
| **难以继续** | 关掉对话就没了,下次从头来 | 工作区持久化,随时恢复进度 |
|
|
33
|
+
|
|
34
|
+
---
|
|
35
|
+
|
|
36
|
+
## 核心特性
|
|
37
|
+
|
|
38
|
+
- **树形任务结构**:无限层级嵌套,规划节点分解任务,执行节点逐个完成
|
|
39
|
+
- **派发上下文控制**:子任务只获取与当前任务相关的信息,隔离无关上下文
|
|
40
|
+
- **可视化 WebUI**:直观快捷地查看任务树进度,无需翻聊天记录
|
|
41
|
+
- **过程可追溯**:完整操作日志和决策路径,支持回溯复盘
|
|
42
|
+
- **5 种任务场景**:新功能 / 调试修复 / 优化重构 / 总结分析 / 其他,自动匹配引导策略
|
|
43
|
+
- **边界自由**:不要求统一项目根目录,支持跨仓库、跨目录管理任务
|
|
44
|
+
|
|
45
|
+
## 快速开始
|
|
46
|
+
|
|
47
|
+
```bash
|
|
48
|
+
# 安装(需要 Node.js >= 20)
|
|
49
|
+
npm install -g xtep-workspace
|
|
50
|
+
|
|
51
|
+
# 配置(自动检测环境)
|
|
52
|
+
xtep-workspace setup
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
**支持的 AI 助手**:
|
|
56
|
+
|
|
57
|
+
| AI 助手 | 支持程度 | 说明 |
|
|
58
|
+
|---------|---------|------|
|
|
59
|
+
| **Claude Code** | 完全支持 | 所有功能可用,推荐使用 |
|
|
60
|
+
| **Cursor** | 基础支持 | subagent 和 skill 支持有限 |
|
|
61
|
+
| **其他 MCP 兼容助手** | 基础功能 | 支持 MCP 即可使用核心功能 |
|
|
62
|
+
|
|
63
|
+
配置完成后,在 AI 助手中说:
|
|
64
|
+
|
|
65
|
+
> "使用**工作台**,帮我实现用户登录功能"
|
|
66
|
+
|
|
67
|
+
**注意**:必须提及"工作区"或"工作台"才会触发,否则 AI 会直接执行而不创建工作区。
|
|
68
|
+
|
|
69
|
+
<details>
|
|
70
|
+
<summary>其他配置方式</summary>
|
|
71
|
+
|
|
72
|
+
### 一键配置
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
xtep-workspace setup --claude-code # Claude Code
|
|
76
|
+
xtep-workspace setup --cursor # Cursor
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
### 其他平台
|
|
80
|
+
|
|
81
|
+
运行 `xtep-workspace setup` 获取配置信息后手动配置。
|
|
82
|
+
|
|
83
|
+
### WebUI 管理
|
|
84
|
+
|
|
85
|
+
```bash
|
|
86
|
+
xtep-workspace webui # 启动 WebUI 服务
|
|
87
|
+
xtep-workspace webui status # 查看服务状态
|
|
88
|
+
xtep-workspace webui stop # 停止服务
|
|
89
|
+
xtep-workspace webui restart # 重启服务
|
|
90
|
+
```
|
|
91
|
+
|
|
92
|
+
</details>
|
|
93
|
+
|
|
94
|
+
## 使用样例
|
|
95
|
+
|
|
96
|
+
```
|
|
97
|
+
你:用工作台帮我加个登录功能
|
|
98
|
+
|
|
99
|
+
AI:工作区建好了 → http://localhost:19540/workspace/ws-xxx,核对一下需求:
|
|
100
|
+
登录方式想用哪种?密码、验证码还是第三方?
|
|
101
|
+
|
|
102
|
+
[用户与AI进行需求核对以及剩余任务开始前需要的信息收集并记录到工作区中]
|
|
103
|
+
|
|
104
|
+
AI:[展示任务规划]
|
|
105
|
+
共计3个任务:用户表、中间件、登录API,可以开始吗?
|
|
106
|
+
|
|
107
|
+
你:可以,使用派发模式进行
|
|
108
|
+
|
|
109
|
+
AI:收到,派发任务1...
|
|
110
|
+
[子agent只拿到"创建用户表和密码验证"这个具体任务,前面讨论的细节不会干扰它]
|
|
111
|
+
任务1完成了,继续派发任务2...
|
|
112
|
+
|
|
113
|
+
[任务逐个完成,过程记录在工作区日志中,可通过WebUI实时查看]
|
|
114
|
+
|
|
115
|
+
---(隔了一天,新开对话)---
|
|
116
|
+
|
|
117
|
+
你:昨天那个登录做到哪了
|
|
118
|
+
|
|
119
|
+
AI:[从工作区恢复上下文] 3个任务都完成了。还需要改什么吗?
|
|
120
|
+
|
|
121
|
+
你:再加个验证码登录,进行计划
|
|
122
|
+
|
|
123
|
+
AI:好,我加个新任务
|
|
124
|
+
|
|
125
|
+
[继续进任务补充至工作区统一管理]
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
**优势体现**:派发隔离无关上下文、进度持久保存、新对话无缝恢复
|
|
129
|
+
|
|
130
|
+
更多使用场景,请参阅 **[用户手册](docs/用户手册.md)**。
|
|
131
|
+
|
|
132
|
+
### 跨仓库任务
|
|
133
|
+
|
|
134
|
+
传统工具要求统一项目根目录,XtepWorkspace 不受此限制——按**逻辑层级**管理分散在不同路径的任务:
|
|
135
|
+
|
|
136
|
+
```
|
|
137
|
+
涉及的项目根路径:
|
|
138
|
+
~/work/mobile/FlutterApp/
|
|
139
|
+
~/sdk/camera/CameraSDK/
|
|
140
|
+
~/sdk/decoder/QRDecoder/
|
|
141
|
+
~/libs/CommonUtils/
|
|
142
|
+
```
|
|
143
|
+
|
|
144
|
+
```
|
|
145
|
+
二维码扫描功能 进度: 13/17
|
|
146
|
+
│
|
|
147
|
+
├─ 📱 应用层
|
|
148
|
+
│ ├── [✓] 扫描页面 UI → ~/work/mobile/FlutterApp/
|
|
149
|
+
│ ├── [▶] 相机调用封装 → ~/work/mobile/FlutterApp/
|
|
150
|
+
│ ├── [ ] 解码结果处理 → ~/work/mobile/FlutterApp/
|
|
151
|
+
│ └── [ ] 集成测试 → ~/work/mobile/FlutterApp/
|
|
152
|
+
│
|
|
153
|
+
├─ 📷 相机 SDK 层
|
|
154
|
+
│ ├── [✓] 预览流接口 → ~/sdk/camera/CameraSDK/
|
|
155
|
+
│ ├── [✓] 帧数据回调 → ~/sdk/camera/CameraSDK/
|
|
156
|
+
│ ├── [✓] 权限处理 → ~/sdk/camera/CameraSDK/
|
|
157
|
+
│ └── [✓] 错误恢复 → ~/sdk/camera/CameraSDK/
|
|
158
|
+
│
|
|
159
|
+
├─ 🔍 解码器层
|
|
160
|
+
│ ├── [✓] 解码引擎封装 → ~/sdk/decoder/QRDecoder/
|
|
161
|
+
│ ├── [✓] 多格式支持 → ~/sdk/decoder/QRDecoder/
|
|
162
|
+
│ ├── [✓] 性能优化 → ~/sdk/decoder/QRDecoder/
|
|
163
|
+
│ └── [✓] 单元测试 → ~/sdk/decoder/QRDecoder/
|
|
164
|
+
│
|
|
165
|
+
└─ 🔧 基础库层
|
|
166
|
+
├── [✓] 日志工具 → ~/libs/CommonUtils/
|
|
167
|
+
├── [✓] 错误处理 → ~/libs/CommonUtils/
|
|
168
|
+
├── [✓] 配置管理 → ~/libs/CommonUtils/
|
|
169
|
+
├── [✓] 类型定义 → ~/libs/CommonUtils/
|
|
170
|
+
└── [✓] 版本同步 → ~/libs/CommonUtils/
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
---
|
|
174
|
+
|
|
175
|
+
## 已知局限
|
|
176
|
+
|
|
177
|
+
- **长对话下 AI 唤起能力下降**:对话过长时,AI 可能忘记使用工作台,可提醒"用工作台记录一下"
|
|
178
|
+
- **派发模式需要 AI 支持 subagent**:Cursor 等部分助手的派发功能受限
|
|
179
|
+
- **上下文恢复依赖记录完整性**:暂停前建议让 AI 充分记录当前状态
|
|
180
|
+
|
|
181
|
+
详见 [用户手册 - 已知局限](docs/用户手册.md#已知局限)。
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## 更多资源
|
|
186
|
+
|
|
187
|
+
- **[用户手册](docs/用户手册.md)**:完整使用指南、场景示例、FAQ
|
|
188
|
+
- **[更新日志](CHANGELOG.md)**:版本历史和变更记录
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
{
|
|
2
|
+
"$schema": "./component-versions.schema.json",
|
|
3
|
+
"description": "组件最低版本要求配置 - 仅当用户安装版本低于此处指定版本时才提示更新,0.0.0 表示该平台不支持此组件",
|
|
4
|
+
"claudeCode": {
|
|
5
|
+
"mcp": "1.0.0",
|
|
6
|
+
"hooks": "1.10.3",
|
|
7
|
+
"agents": "1.10.6",
|
|
8
|
+
"skills": "1.10.7"
|
|
9
|
+
},
|
|
10
|
+
"cursor": {
|
|
11
|
+
"mcp": "1.0.0",
|
|
12
|
+
"hooks": "1.0.0",
|
|
13
|
+
"agents": "0.0.0",
|
|
14
|
+
"skills": "0.0.0"
|
|
15
|
+
}
|
|
16
|
+
}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
"feature": {
|
|
3
|
+
"basePack": ["intent_alignment", "context_discovery"],
|
|
4
|
+
"optionalPack": ["tech_research", "solution_design", "verification_strategy"]
|
|
5
|
+
},
|
|
6
|
+
"summary": {
|
|
7
|
+
"basePack": ["intent_alignment", "context_discovery"],
|
|
8
|
+
"optionalPack": []
|
|
9
|
+
},
|
|
10
|
+
"optimize": {
|
|
11
|
+
"basePack": ["intent_alignment", "context_discovery", "measurement_analysis"],
|
|
12
|
+
"optionalPack": ["diagnosis", "solution_design", "verification_strategy"]
|
|
13
|
+
},
|
|
14
|
+
"debug": {
|
|
15
|
+
"basePack": ["intent_alignment", "context_discovery", "diagnosis"],
|
|
16
|
+
"optionalPack": ["solution_design", "verification_strategy"]
|
|
17
|
+
},
|
|
18
|
+
"misc": {
|
|
19
|
+
"basePack": ["intent_alignment"],
|
|
20
|
+
"optionalPack": [
|
|
21
|
+
"context_discovery",
|
|
22
|
+
"tech_research",
|
|
23
|
+
"measurement_analysis",
|
|
24
|
+
"diagnosis",
|
|
25
|
+
"solution_design",
|
|
26
|
+
"verification_strategy"
|
|
27
|
+
]
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,244 @@
|
|
|
1
|
+
# XtepWorkspace 版本更新说明
|
|
2
|
+
#
|
|
3
|
+
# 此文件由 scripts/sync-versions.ts 同步维护
|
|
4
|
+
# - conclusion: 自动从 CHANGELOG.md 提取
|
|
5
|
+
# - requirement/note: 人工填写
|
|
6
|
+
#
|
|
7
|
+
# 使用方式:
|
|
8
|
+
# npm run sync-versions # 从 CHANGELOG 同步新版本
|
|
9
|
+
# npm run check-versions # 检查未填写的 requirement
|
|
10
|
+
|
|
11
|
+
versions:
|
|
12
|
+
- version: 1.10.10
|
|
13
|
+
requirement: 工作区置顶、全局备份管理、验收标准动态列
|
|
14
|
+
conclusion: |-
|
|
15
|
+
- 工作区置顶:将重要工作区固定在列表顶部
|
|
16
|
+
- 全局备份管理:WebUI 备份界面,支持创建/恢复/导入/导出
|
|
17
|
+
- 验收标准动态列:支持任意列结构
|
|
18
|
+
- 设置页面优化和备份功能修复
|
|
19
|
+
note: ""
|
|
20
|
+
- version: 1.10.9
|
|
21
|
+
requirement: 修复版本更新工作区创建失败、前端版本号不同步
|
|
22
|
+
conclusion: |-
|
|
23
|
+
- 修复版本更新工作区创建时 CONCLUSIONS_HASH_REQUIRED 错误
|
|
24
|
+
- 修复发布脚本版本同步顺序,确保前端版本号正确
|
|
25
|
+
note: ""
|
|
26
|
+
- version: 1.10.8
|
|
27
|
+
requirement: 结论过期检测、update 自动更新插件、Skills 增强
|
|
28
|
+
conclusion: |-
|
|
29
|
+
- 结论过期检测:子节点完成时自动提醒更新父节点结论
|
|
30
|
+
- update 自动更新插件:版本更新后自动同步插件
|
|
31
|
+
- Skills 增强:新增测试验证和可观测性设计步骤
|
|
32
|
+
- 工作区导入修复和日志系统优化
|
|
33
|
+
note: ""
|
|
34
|
+
- version: 1.10.7
|
|
35
|
+
requirement: 工作区诊断修复、跨工作区搜索、MCP 输出优化
|
|
36
|
+
conclusion: |-
|
|
37
|
+
- 工作区诊断修复:WebUI 新增诊断/修复功能,自动识别并修复工作区问题
|
|
38
|
+
- 跨工作区搜索:新增 workspace_search 和 content_search 工具
|
|
39
|
+
- 先读后写机制:node_update/memo_update 防止并发修改冲突
|
|
40
|
+
- MCP 输出优化:日志智能压缩,减少 token 消耗
|
|
41
|
+
- CLI 别名:新增 tw 等简短命令
|
|
42
|
+
note: ""
|
|
43
|
+
- version: 1.10.6
|
|
44
|
+
requirement: MEMO 导出、工作区导出/导入、索引管理、派发增强
|
|
45
|
+
conclusion: |-
|
|
46
|
+
- MEMO 导出:支持将 MEMO 内容导出为独立文件
|
|
47
|
+
- 工作区导出/导入:支持工作区完整导出和跨项目导入
|
|
48
|
+
- 索引管理:WebUI 新增索引管理界面,可查看和重建索引
|
|
49
|
+
- 功能介绍入口转正:设置页面新增功能介绍生成入口
|
|
50
|
+
- 多项 Bug 修复和稳定性提升
|
|
51
|
+
note: ""
|
|
52
|
+
- version: 1.10.5
|
|
53
|
+
requirement: 日志系统、Mermaid 图表、工作区稳定性增强
|
|
54
|
+
conclusion: |-
|
|
55
|
+
- 新增统一日志系统,便于问题排查
|
|
56
|
+
- WebUI 支持 Mermaid 图表渲染
|
|
57
|
+
- 工作区自恢复能力增强
|
|
58
|
+
- 新增 CLI 自更新命令
|
|
59
|
+
- 多项 Bug 修复
|
|
60
|
+
note: ""
|
|
61
|
+
- version: 1.10.4
|
|
62
|
+
requirement: 帮助系统增强、Skill 声明机制、文档体系重构
|
|
63
|
+
conclusion: |-
|
|
64
|
+
- 功能简介工作区新增版本更新与帮助系统 MEMO
|
|
65
|
+
- 设置弹窗嵌入用户帮助模块
|
|
66
|
+
- Skill 添加 Announcement 声明机制
|
|
67
|
+
- 用户文档体系重构
|
|
68
|
+
note: ""
|
|
69
|
+
- version: 1.10.3
|
|
70
|
+
requirement: 派发状态机修复、Skill 展示成果环节、Hook 功能增强
|
|
71
|
+
conclusion: |-
|
|
72
|
+
- 修复派发节点 retry/reopen 后状态未重置的问题
|
|
73
|
+
- Info 类 Skill 新增展示成果环节(防止直接开始执行)
|
|
74
|
+
- PostToolUse Hook 增强(TodoWrite 提醒、节流优化)
|
|
75
|
+
- setup 命令插件安装体验优化
|
|
76
|
+
note: ""
|
|
77
|
+
- version: 1.10.2
|
|
78
|
+
requirement: 派发子代理优化,完善 Skill 引导与 Prompt 生成
|
|
79
|
+
conclusion: |-
|
|
80
|
+
- 移除冗余的 xtep-tester
|
|
81
|
+
- 子代理添加 Skill 调用引导
|
|
82
|
+
- dispatch_create 返回完整 prompt
|
|
83
|
+
note: ""
|
|
84
|
+
- version: 1.10.1
|
|
85
|
+
requirement: 修复能力列表配置路径问题
|
|
86
|
+
conclusion: "- 修复 capability_list 在用户项目目录下无法正常工作的问题"
|
|
87
|
+
note: ""
|
|
88
|
+
- version: 1.10.0
|
|
89
|
+
requirement: 派发系统优化、Memo 富卡片、Agents/Skills 更新
|
|
90
|
+
conclusion: |-
|
|
91
|
+
- 派发系统优化: Review 机制、Skill 化、AI 引导增强
|
|
92
|
+
- Memo 富卡片: 节点详情中 Memo 引用以卡片形式展示
|
|
93
|
+
- Agents/Skills 更新: 执行流程更清晰,需重新安装插件
|
|
94
|
+
note: ""
|
|
95
|
+
- version: 1.9.2
|
|
96
|
+
requirement: 插件更新提示、节点排序、README 重构
|
|
97
|
+
conclusion: |-
|
|
98
|
+
- 插件更新提示: 首页显示插件更新横幅,方便及时升级
|
|
99
|
+
- 插件状态优化: 新增「不支持」状态,区分未安装和不可用
|
|
100
|
+
- 节点排序: 支持调整同级节点顺序
|
|
101
|
+
- 版本更新逻辑优化: 改进升级时的工作区处理
|
|
102
|
+
- README 重构: 精简内容,新增完整使用流程示例
|
|
103
|
+
note: ""
|
|
104
|
+
- version: 1.9.1
|
|
105
|
+
requirement: WebUI同步刷新、旧版本工作区目录名兼容性修复
|
|
106
|
+
conclusion: |-
|
|
107
|
+
- 跨进程事件转发: MCP 进程的事件可转发到 HTTP 服务,实现 WebUI 实时同步刷新
|
|
108
|
+
- 工作区出事后流程强化
|
|
109
|
+
- 目录名兼容性: 修复旧版本工作区节点目录名无法正确加载的问题
|
|
110
|
+
note: ""
|
|
111
|
+
- version: 1.9.0
|
|
112
|
+
requirement: MEMO 长篇内容记录、验收标准功能、场景化能力包系统
|
|
113
|
+
conclusion: |-
|
|
114
|
+
- MEMO 功能: 支持节点级长篇内容记录,草稿机制防丢失
|
|
115
|
+
- 验收标准: 节点可定义验收条件,WebUI 显示验收状态
|
|
116
|
+
- 场景化能力包: AI 智能引导系统,根据任务场景推荐执行流程
|
|
117
|
+
- 插件版本跟踪: 组件级版本检测,前端状态展示,插件更新提醒
|
|
118
|
+
note: ""
|
|
119
|
+
- version: 1.8.2
|
|
120
|
+
requirement: 修复 npm 包前端资源缺失
|
|
121
|
+
conclusion: "- 修复 npm 安装后 WebUI 无法启动的问题"
|
|
122
|
+
note: ""
|
|
123
|
+
- version: 1.8.1
|
|
124
|
+
requirement: 修复 npm 安装后的启动问题
|
|
125
|
+
conclusion: |-
|
|
126
|
+
- 修复 npm 安装后 WebUI 无法启动
|
|
127
|
+
- 修复生产环境日志报错
|
|
128
|
+
- 新增自动化发布脚本
|
|
129
|
+
note: ""
|
|
130
|
+
- version: 1.8.0
|
|
131
|
+
requirement: WebUI 独立启动、端口迁移、参数容错
|
|
132
|
+
conclusion: |-
|
|
133
|
+
- WebUI 独立启动: `xtep-workspace webui` 命令管理 WebUI 服务
|
|
134
|
+
- 端口迁移: 默认端口改为 19540
|
|
135
|
+
- 参数容错: AI 传错参数时自动修复
|
|
136
|
+
- 版本检测: 前后端版本不匹配时警告
|
|
137
|
+
note: ""
|
|
138
|
+
- version: 1.7.2
|
|
139
|
+
requirement: WebUI 实时刷新、夜间模式优化
|
|
140
|
+
conclusion: |-
|
|
141
|
+
- 实时刷新: AI 操作后 WebUI 自动更新,无需手动刷新
|
|
142
|
+
- 夜间模式优化: 更柔和的颜色、平滑切换过渡
|
|
143
|
+
- 子节点结论紧凑显示
|
|
144
|
+
note: ""
|
|
145
|
+
- version: 1.7.1
|
|
146
|
+
requirement: 修复配置路径问题
|
|
147
|
+
conclusion: "- 修复 setup 命令配置路径错误"
|
|
148
|
+
note: ""
|
|
149
|
+
- version: 1.7.0
|
|
150
|
+
requirement: WebUI 全新设计、新手教程、版本更新提示
|
|
151
|
+
conclusion: |-
|
|
152
|
+
- WebUI 全新设计: 统一视觉风格
|
|
153
|
+
- 新手教程: 自动为新用户创建教程工作区
|
|
154
|
+
- 版本更新提示: 升级后展示新功能变更
|
|
155
|
+
note: ""
|
|
156
|
+
- version: 1.6.4
|
|
157
|
+
requirement: 修复规则更新失败问题
|
|
158
|
+
conclusion: "- 修复更新工作区规则时报错的问题"
|
|
159
|
+
note: ""
|
|
160
|
+
- version: 1.6.3
|
|
161
|
+
requirement: 修复目录名相关问题
|
|
162
|
+
conclusion: "- 修复工作区和节点目录相关的遗留问题"
|
|
163
|
+
note: ""
|
|
164
|
+
- version: 1.6.2
|
|
165
|
+
requirement: 派发流程优化
|
|
166
|
+
conclusion: |-
|
|
167
|
+
- 派发完成后自动更新节点状态
|
|
168
|
+
- 子任务全部完成时提醒完成父节点
|
|
169
|
+
- 支持多工作区并行派发
|
|
170
|
+
note: ""
|
|
171
|
+
- version: 1.6.1
|
|
172
|
+
requirement: 旧数据自动迁移
|
|
173
|
+
conclusion: |-
|
|
174
|
+
- 自动将旧版本数据迁移为可读目录名格式
|
|
175
|
+
- 修改节点标题时自动同步目录名
|
|
176
|
+
note: ""
|
|
177
|
+
- version: 1.6.0
|
|
178
|
+
requirement: 目录名可读化
|
|
179
|
+
conclusion: |-
|
|
180
|
+
- 目录名从 UUID 改为「名称_短ID」格式,方便本地查看
|
|
181
|
+
- 高版本数据自动备份保护
|
|
182
|
+
- 兼容旧版本数据
|
|
183
|
+
note: ""
|
|
184
|
+
- version: 1.5.1
|
|
185
|
+
requirement: AI 感知 WebUI 手动操作
|
|
186
|
+
conclusion: "- AI 可感知用户在 WebUI 的手动修改"
|
|
187
|
+
note: ""
|
|
188
|
+
- version: 1.5.0
|
|
189
|
+
requirement: 简化安装流程,支持 npm 全局安装
|
|
190
|
+
conclusion: |-
|
|
191
|
+
- npm 全局安装: `npm install -g xtep-workspace`
|
|
192
|
+
- 一键配置: `xtep-workspace setup` 自动配置 Claude Code 或 Cursor
|
|
193
|
+
- 版本更新通知: 自动提醒新版本
|
|
194
|
+
- 权限简化: MCP 权限从 30+ 条简化为通配符规则
|
|
195
|
+
note: ""
|
|
196
|
+
- version: 1.4.1
|
|
197
|
+
requirement: Git 派发稳定性优化
|
|
198
|
+
conclusion: |-
|
|
199
|
+
- 派发模式切换: 支持在派发过程中切换 Git/无 Git 模式
|
|
200
|
+
- Git 兼容性: 工作区目录自动排除,不干扰 Git 操作
|
|
201
|
+
- 修复派发分支冲突问题
|
|
202
|
+
note: ""
|
|
203
|
+
- version: 1.4.0
|
|
204
|
+
requirement: AI 引导增强、防止 AI 编造确认
|
|
205
|
+
conclusion: |-
|
|
206
|
+
- 确认机制: 关键操作需用户确认,防止 AI 自行决定
|
|
207
|
+
- 智能引导: 根据任务场景自动提供操作建议
|
|
208
|
+
- 自动绑定提示: 检测到匹配工作区时提示绑定
|
|
209
|
+
- 重开节点保留历史: 节点重开时保留原有结论
|
|
210
|
+
note: ""
|
|
211
|
+
- version: 1.3.0
|
|
212
|
+
requirement: 多 Agent 协作派发功能
|
|
213
|
+
conclusion: |-
|
|
214
|
+
- 派发功能: 任务可派发给其他 AI 会话执行
|
|
215
|
+
- Git 可选: 派发时可选择是否创建 Git 分支
|
|
216
|
+
- 多种合并策略: 支持 merge/rebase/squash 等方式
|
|
217
|
+
note: ""
|
|
218
|
+
- version: 1.2.0
|
|
219
|
+
requirement: OpenSpec 导入、智能提醒增强
|
|
220
|
+
conclusion: |-
|
|
221
|
+
- OpenSpec 导入: 将 OpenSpec 规范导入为工作区任务
|
|
222
|
+
- 文档扫描: 创建工作区时自动扫描项目文档
|
|
223
|
+
- 智能提醒: 代码变更、错误检测等场景自动提醒
|
|
224
|
+
note: ""
|
|
225
|
+
- version: 1.1.0
|
|
226
|
+
requirement: Cursor 支持、归档功能、智能提醒
|
|
227
|
+
conclusion: |-
|
|
228
|
+
- Cursor 支持: 新增 Cursor 编辑器集成
|
|
229
|
+
- 归档功能: 支持工作区归档与恢复
|
|
230
|
+
- 智能提醒: 日志超时、问题未解决等场景自动提醒
|
|
231
|
+
- 并发控制: 同级任务不会同时执行
|
|
232
|
+
- 工作区列表优化: 当前项目优先显示
|
|
233
|
+
note: ""
|
|
234
|
+
- version: 1.0.0
|
|
235
|
+
requirement: XtepWorkspace 首个正式版本
|
|
236
|
+
conclusion: |-
|
|
237
|
+
- 树形任务结构: 支持无限层级嵌套
|
|
238
|
+
- 双节点类型: 规划节点分解任务,执行节点逐个完成
|
|
239
|
+
- 状态流转: pending → implementing → validating → completed
|
|
240
|
+
- 聚焦上下文: 执行时自动过滤无关信息
|
|
241
|
+
- 日志与问题追踪: 完整记录操作过程
|
|
242
|
+
- WebUI 可视化: 工作区列表、节点树、详情面板
|
|
243
|
+
- 项目级存储: 数据保存在项目内 `.xtep-workspace`
|
|
244
|
+
note: ""
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 输出适配器
|
|
3
|
+
* 用于将 Service 层的完整输出转换为不同消费者(前端/AI)需要的格式
|
|
4
|
+
*/
|
|
5
|
+
import type { NodeListResult } from "../types/node.js";
|
|
6
|
+
import type { WorkspaceListResult } from "../types/workspace.js";
|
|
7
|
+
/**
|
|
8
|
+
* 简化版节点树项(AI 用)
|
|
9
|
+
* 只保留 id 和 title,用于节点查找和定位
|
|
10
|
+
*/
|
|
11
|
+
export interface LiteNodeTreeItem {
|
|
12
|
+
id: string;
|
|
13
|
+
title: string;
|
|
14
|
+
children?: LiteNodeTreeItem[];
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* 简化版节点列表结果(AI 用)
|
|
18
|
+
*/
|
|
19
|
+
export interface LiteNodeListResult {
|
|
20
|
+
tree: LiteNodeTreeItem;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 简化版工作区列表项(AI 用)
|
|
24
|
+
* 只保留 id, name, projectRoot
|
|
25
|
+
* status 仅在 filter="all" 时保留
|
|
26
|
+
*/
|
|
27
|
+
export interface LiteWorkspaceListItem {
|
|
28
|
+
id: string;
|
|
29
|
+
name: string;
|
|
30
|
+
projectRoot: string;
|
|
31
|
+
status?: string;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* 简化版工作区列表结果(AI 用)
|
|
35
|
+
* - filter 非 "all" 时:顶层显示 filter 字段,各项不含 status
|
|
36
|
+
* - filter 为 "all" 时:无顶层 filter,各项包含 status
|
|
37
|
+
*/
|
|
38
|
+
export interface LiteWorkspaceListResult {
|
|
39
|
+
filter?: string;
|
|
40
|
+
workspaces: LiteWorkspaceListItem[];
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* 将完整节点列表结果转换为简化版
|
|
44
|
+
*/
|
|
45
|
+
export declare function simplifyNodeList(result: NodeListResult): LiteNodeListResult;
|
|
46
|
+
/**
|
|
47
|
+
* 将完整工作区列表结果转换为简化版
|
|
48
|
+
* @param result 完整工作区列表
|
|
49
|
+
* @param filter 过滤条件(默认 "active")
|
|
50
|
+
*/
|
|
51
|
+
export declare function simplifyWorkspaceList(result: WorkspaceListResult, filter?: "active" | "archived" | "all"): LiteWorkspaceListResult;
|
|
52
|
+
/**
|
|
53
|
+
* 压缩 workspace_get 的 logMd(AI 用)
|
|
54
|
+
* - 截取最新 5 条
|
|
55
|
+
* - 简化格式:表格 → 列表
|
|
56
|
+
* - 省略 AI 操作者标注(只标注非 AI)
|
|
57
|
+
*/
|
|
58
|
+
export declare function compressWorkspaceLog(logMd: string): string;
|
|
59
|
+
/**
|
|
60
|
+
* 输出适配器接口
|
|
61
|
+
* 定义各工具输出的转换方法
|
|
62
|
+
*/
|
|
63
|
+
export interface OutputAdapter {
|
|
64
|
+
/** 转换 node_list 输出 */
|
|
65
|
+
transformNodeList(result: NodeListResult): NodeListResult | LiteNodeListResult;
|
|
66
|
+
/** 转换 workspace_list 输出 */
|
|
67
|
+
transformWorkspaceList(result: WorkspaceListResult, filter?: "active" | "archived" | "all"): WorkspaceListResult | LiteWorkspaceListResult;
|
|
68
|
+
/** 转换 workspace_get 的 logMd */
|
|
69
|
+
transformWorkspaceGetLog(logMd: string): string;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* 前端适配器(identity,原样返回)
|
|
73
|
+
*/
|
|
74
|
+
export declare const frontendAdapter: OutputAdapter;
|
|
75
|
+
/**
|
|
76
|
+
* AI 适配器(简化格式)
|
|
77
|
+
*/
|
|
78
|
+
export declare const aiAdapter: OutputAdapter;
|
|
79
|
+
//# sourceMappingURL=OutputAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OutputAdapter.d.ts","sourceRoot":"","sources":["../../src/adapters/OutputAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAgB,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAgC,MAAM,uBAAuB,CAAC;AAI/F;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,gBAAgB,EAAE,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,gBAAgB,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,qBAAqB,EAAE,CAAC;CACrC;AAoBD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,cAAc,GAAG,kBAAkB,CAI3E;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,KAAK,GACrC,uBAAuB,CAwBzB;AAkCD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAmB1D;AAID;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC5B,sBAAsB;IACtB,iBAAiB,CAAC,MAAM,EAAE,cAAc,GAAG,cAAc,GAAG,kBAAkB,CAAC;IAC/E,2BAA2B;IAC3B,sBAAsB,CACpB,MAAM,EAAE,mBAAmB,EAC3B,MAAM,CAAC,EAAE,QAAQ,GAAG,UAAU,GAAG,KAAK,GACrC,mBAAmB,GAAG,uBAAuB,CAAC;IACjD,+BAA+B;IAC/B,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CACjD;AAED;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,aAI7B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,SAAS,EAAE,aAIvB,CAAC"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 输出适配器
|
|
3
|
+
* 用于将 Service 层的完整输出转换为不同消费者(前端/AI)需要的格式
|
|
4
|
+
*/
|
|
5
|
+
// ========== 转换函数 ==========
|
|
6
|
+
/**
|
|
7
|
+
* 将完整节点树转换为简化版
|
|
8
|
+
*/
|
|
9
|
+
function simplifyNodeTreeItem(item) {
|
|
10
|
+
const lite = {
|
|
11
|
+
id: item.id,
|
|
12
|
+
title: item.title,
|
|
13
|
+
};
|
|
14
|
+
if (item.children && item.children.length > 0) {
|
|
15
|
+
lite.children = item.children.map(simplifyNodeTreeItem);
|
|
16
|
+
}
|
|
17
|
+
return lite;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* 将完整节点列表结果转换为简化版
|
|
21
|
+
*/
|
|
22
|
+
export function simplifyNodeList(result) {
|
|
23
|
+
return {
|
|
24
|
+
tree: simplifyNodeTreeItem(result.tree),
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* 将完整工作区列表结果转换为简化版
|
|
29
|
+
* @param result 完整工作区列表
|
|
30
|
+
* @param filter 过滤条件(默认 "active")
|
|
31
|
+
*/
|
|
32
|
+
export function simplifyWorkspaceList(result, filter) {
|
|
33
|
+
const effectiveFilter = filter ?? "active";
|
|
34
|
+
if (effectiveFilter === "all") {
|
|
35
|
+
// all: 各项保留 status,无顶层 filter
|
|
36
|
+
return {
|
|
37
|
+
workspaces: result.workspaces.map(ws => ({
|
|
38
|
+
id: ws.id,
|
|
39
|
+
name: ws.name,
|
|
40
|
+
projectRoot: ws.projectRoot,
|
|
41
|
+
status: ws.status,
|
|
42
|
+
})),
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
// active/archived: 顶层 filter 字段,各项不含 status
|
|
47
|
+
return {
|
|
48
|
+
filter: effectiveFilter,
|
|
49
|
+
workspaces: result.workspaces.map(ws => ({
|
|
50
|
+
id: ws.id,
|
|
51
|
+
name: ws.name,
|
|
52
|
+
projectRoot: ws.projectRoot,
|
|
53
|
+
})),
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
// ========== 日志压缩 ==========
|
|
58
|
+
/**
|
|
59
|
+
* 解析日志表格
|
|
60
|
+
*/
|
|
61
|
+
function parseLogTable(content) {
|
|
62
|
+
if (!content || typeof content !== "string") {
|
|
63
|
+
return [];
|
|
64
|
+
}
|
|
65
|
+
const normalized = content.replace(/\r\n/g, "\n").replace(/\r/g, "\n");
|
|
66
|
+
const lines = normalized.split("\n");
|
|
67
|
+
const entries = [];
|
|
68
|
+
for (const line of lines) {
|
|
69
|
+
if (!line.startsWith("|"))
|
|
70
|
+
continue;
|
|
71
|
+
if (line.includes("时间") || line.includes("Time"))
|
|
72
|
+
continue;
|
|
73
|
+
if (/^\|[\s-:|]+\|$/.test(line))
|
|
74
|
+
continue;
|
|
75
|
+
const cells = line.split("|").map(c => c.trim()).filter(Boolean);
|
|
76
|
+
if (cells.length >= 3) {
|
|
77
|
+
entries.push({
|
|
78
|
+
time: cells[0] || "",
|
|
79
|
+
operator: cells[1],
|
|
80
|
+
event: cells[2] || "",
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
return entries;
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* 压缩 workspace_get 的 logMd(AI 用)
|
|
88
|
+
* - 截取最新 5 条
|
|
89
|
+
* - 简化格式:表格 → 列表
|
|
90
|
+
* - 省略 AI 操作者标注(只标注非 AI)
|
|
91
|
+
*/
|
|
92
|
+
export function compressWorkspaceLog(logMd) {
|
|
93
|
+
const MAX_LOG_ENTRIES = 5;
|
|
94
|
+
const logs = parseLogTable(logMd);
|
|
95
|
+
const recentLogs = logs.slice(-MAX_LOG_ENTRIES);
|
|
96
|
+
if (recentLogs.length === 0) {
|
|
97
|
+
return "";
|
|
98
|
+
}
|
|
99
|
+
const lines = recentLogs.map(log => {
|
|
100
|
+
const operator = log.operator !== "AI" ? `[${log.operator}] ` : "";
|
|
101
|
+
return `- [${log.time}] ${operator}${log.event}`;
|
|
102
|
+
});
|
|
103
|
+
if (logs.length > MAX_LOG_ENTRIES) {
|
|
104
|
+
lines.unshift(`(共 ${logs.length} 条,显示最新 ${MAX_LOG_ENTRIES} 条)`);
|
|
105
|
+
}
|
|
106
|
+
return lines.join("\n");
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* 前端适配器(identity,原样返回)
|
|
110
|
+
*/
|
|
111
|
+
export const frontendAdapter = {
|
|
112
|
+
transformNodeList: (result) => result,
|
|
113
|
+
transformWorkspaceList: (result) => result,
|
|
114
|
+
transformWorkspaceGetLog: (logMd) => logMd,
|
|
115
|
+
};
|
|
116
|
+
/**
|
|
117
|
+
* AI 适配器(简化格式)
|
|
118
|
+
*/
|
|
119
|
+
export const aiAdapter = {
|
|
120
|
+
transformNodeList: simplifyNodeList,
|
|
121
|
+
transformWorkspaceList: (result, filter) => simplifyWorkspaceList(result, filter),
|
|
122
|
+
transformWorkspaceGetLog: compressWorkspaceLog,
|
|
123
|
+
};
|
|
124
|
+
//# sourceMappingURL=OutputAdapter.js.map
|