Add Agent execution guidelines & trim AGENTS.md
Introduce a new detailed Agent handbook (docs/【协作规范】Agent工作入口与执行准则-2026-06-22.md) and refactor AGENTS.md to be an entry-only navigation page. Update documentation cross-references (docs/README.md, project-memory README, document-map, team-conventions, development-workflow, decision-log and project-overview) to point to the new file and clarify reading/order rules, submission/validation constraints, and SpacetimeDB/back-end wording. Also adjust image canvas generation placement rules in the frontend doc and apply related changes to image-editor hooks/tests (src/components/image-editor/*). Purpose: separate high-level entry rules from complex execution details to reduce startup cost for complex tasks and centralize execution practices in a single guideline document.
This commit is contained in:
@@ -44,6 +44,7 @@ import {
|
||||
createQuickEditResultLayer,
|
||||
createVideoResultLayer,
|
||||
} from './ImageCanvasGenerationLayerModel';
|
||||
import { chooseGenerationPlacement } from './ImageCanvasGenerationPlacementModel';
|
||||
import {
|
||||
buildCharacterAnimationGenerationInputs,
|
||||
buildEditGenerationInputs,
|
||||
@@ -98,6 +99,7 @@ type GenerationSubmissionWorkflowOptions = {
|
||||
quickEditPanel: QuickEditPanelState | null;
|
||||
quickEditSourceLayer: CanvasLayer | null;
|
||||
quickEditSelectionState: UiAssetExtractionState | null;
|
||||
canvasGenerationDialogs: CanvasGenerationDialogState[];
|
||||
setQuickEditPanel: Dispatch<SetStateAction<QuickEditPanelState | null>>;
|
||||
characterAnimationPanel: CharacterAnimationPanelState | null;
|
||||
characterAnimationDialog: CanvasGenerationDialogState | null;
|
||||
@@ -165,6 +167,7 @@ export function useImageCanvasGenerationSubmissionWorkflow({
|
||||
quickEditPanel,
|
||||
quickEditSourceLayer,
|
||||
quickEditSelectionState,
|
||||
canvasGenerationDialogs,
|
||||
setQuickEditPanel,
|
||||
characterAnimationPanel,
|
||||
characterAnimationDialog,
|
||||
@@ -741,21 +744,33 @@ export function useImageCanvasGenerationSubmissionWorkflow({
|
||||
);
|
||||
let quickEditDialogId: string | undefined;
|
||||
if (panelMode === 'quick-edit') {
|
||||
quickEditDialogId = openCanvasGenerationDialog(
|
||||
createQuickEditGenerationDialogDraft({
|
||||
sourceLayer: quickEditSourceLayer,
|
||||
prompt: normalizedPrompt,
|
||||
status: 'generating',
|
||||
references: quickEditReferences,
|
||||
model: quickEditPanel.model,
|
||||
aspectRatio: quickEditAspectRatio,
|
||||
imageSize: quickEditImageSize,
|
||||
frame: {
|
||||
width: quickEditOutputSize.width,
|
||||
height: quickEditOutputSize.height,
|
||||
},
|
||||
}),
|
||||
);
|
||||
const quickEditDraft = createQuickEditGenerationDialogDraft({
|
||||
sourceLayer: quickEditSourceLayer,
|
||||
prompt: normalizedPrompt,
|
||||
status: 'generating',
|
||||
references: quickEditReferences,
|
||||
model: quickEditPanel.model,
|
||||
aspectRatio: quickEditAspectRatio,
|
||||
imageSize: quickEditImageSize,
|
||||
frame: {
|
||||
width: quickEditOutputSize.width,
|
||||
height: quickEditOutputSize.height,
|
||||
},
|
||||
});
|
||||
const quickEditPlacement = quickEditDraft.placeholder
|
||||
? chooseGenerationPlacement({
|
||||
canvasSize,
|
||||
viewport,
|
||||
frame: quickEditDraft.placeholder,
|
||||
layers,
|
||||
generationDialogs: canvasGenerationDialogs,
|
||||
})
|
||||
: quickEditDraft.placeholder;
|
||||
quickEditDialogId = openCanvasGenerationDialog({
|
||||
...quickEditDraft,
|
||||
// 中文注释:快速编辑生成结果复用新建图片的避让落点,避免覆盖已有素材。
|
||||
placeholder: quickEditPlacement,
|
||||
});
|
||||
setQuickEditPanel(null);
|
||||
selectSingleLayer(null);
|
||||
} else {
|
||||
@@ -956,7 +971,10 @@ export function useImageCanvasGenerationSubmissionWorkflow({
|
||||
addCharacterAnimationResultLayer,
|
||||
addQuickEditResultLayer,
|
||||
addVideoResultLayer,
|
||||
canvasGenerationDialogs,
|
||||
canvasSize,
|
||||
getGeneratingDialogPlaceholder,
|
||||
layers,
|
||||
openCanvasGenerationDialog,
|
||||
projectId,
|
||||
assetFolderId,
|
||||
@@ -966,6 +984,7 @@ export function useImageCanvasGenerationSubmissionWorkflow({
|
||||
selectSingleLayer,
|
||||
setQuickEditPanel,
|
||||
updateCanvasGenerationDialogById,
|
||||
viewport,
|
||||
]);
|
||||
|
||||
const submitImageGeneration = useCallback(
|
||||
|
||||
Reference in New Issue
Block a user