9.2 KiB
9.2 KiB
AGENTS.md
This file constrains future work in this repository. Follow it for all non-trivial changes.
Repository Snapshot
- Root purpose:
managed-portalis a standalone management portal for managed services and web devices. - Backend: Go service under
cmd/managed-portalandinternal/. - Frontend: Vue 3 + Vite + Element Plus app under
web/. - Managed child services: Python projects under
managed/people_flow_project/andmanaged/store_dwell_alert/. - Deployment assets:
deploy/, rootDockerfile,managed_services.yaml. - Primary default ports from the current README: backend
9080, frontend13000, child service APIs18081and18082. - Operating environment: this repository is intended for use in mainland China, so future changes must account for China-network constraints and domestic deployment realities.
Repository Map
cmd/managed-portal/: Go backend entrypoint.internal/config/: backend configuration loading.internal/managed/: managed service registry, runtime, remote client, orchestration logic.internal/server/: HTTP server and handlers.internal/webdevice/: web device proxying, rewriting, and related service logic.web/src/: frontend app, router, API client, and views.managed/people_flow_project/: Python people-flow service withsrc/,tests/, deployment scripts, and weights.managed/store_dwell_alert/: Python store-dwell-alert service withapp/,tests/, deployment scripts, and weights.deploy/: Docker Compose deployment files and env files.docs/: rollout and integration documentation.tasks/: task plan, review evidence, and lessons learned.
Workflow Orchestration
1) Plan Node Default
- For any non-trivial task, enter plan mode before implementation.
- Treat a task as non-trivial if any of the following is true:
- it needs 3 or more steps;
- it involves architecture, sequencing, or cross-file decisions;
- it requires a verification chain, not just a code edit.
- Write the specification, scope, risks, and validation approach before making substantive changes.
- If execution drifts, gets blocked, or a core assumption fails, stop and re-plan instead of forcing the current path.
- Validation steps are part of the plan and are never optional.
2) Subagent Strategy
- Prefer subagents for exploration, repository search, investigation, and parallel analysis.
- Keep one subagent focused on one clear tactical question.
- For complex tasks, split exploration into parallel subproblems to protect the main context window.
- Keep the main agent focused on decisions, edits, and verification.
3) Self-Improvement Loop
- At the start of a non-trivial task, quickly review
tasks/lessons.mdfor rules relevant to the current work. - Any user correction must update
tasks/lessons.md. - Record corrections in
trigger -> rule -> preventive actionform. - Use recorded lessons to prevent repeating the same process or decision error.
4) Verification Before Done
- Do not mark work complete without verification evidence.
- When applicable, compare before and after behavior, not just changed files.
- Run the narrowest meaningful validation first, then widen only if needed.
- Report executable evidence such as tests, builds, lint, config checks, or log output.
- Ask whether the result meets a staff-engineer standard before closing the task.
5) Demand Elegance (Balanced)
- Before a non-trivial change, ask whether a simpler, more robust design is available.
- Replace obviously hacky solutions with the best reasonable implementation supported by current information.
- Do not over-design straightforward fixes.
6) Autonomous Bug Fixing
- Treat bug reports as requests to diagnose and fix, not as prompts for the user to drive every step.
- Use logs, failing behavior, and targeted tests to find the root cause.
- Close the loop with a fix plus validation inside task scope.
- When CI-like failures are in scope, investigate and repair them autonomously.
Task Management
1) Plan First
- Before substantive implementation on a non-trivial task, create or update
tasks/todo.md. - The plan must use checkboxes and include scope, risks, and validation intent.
2) Verify Plan
- Confirm the plan covers the user request, repository-specific risks, and the expected verification path before coding.
3) Track Progress
- Update
tasks/todo.mdas tasks are completed. - Keep plan state accurate enough that another engineer could resume from it.
4) Explain Changes
- For each major step, provide a high-level explanation of what changed and why.
5) Document Results
tasks/todo.mdmust contain aReviewsection with result and verification evidence.
6) Capture Lessons
- If the user corrected the process, assumptions, or implementation direction, update
tasks/lessons.mdbefore closing the task.
Core Principles
- Simplicity First: prefer the smallest change that fully solves the problem.
- No Laziness: find the real cause and avoid cosmetic patches.
- Minimal Impact: limit edits to the necessary surface and reduce regression risk.
China Mainland Environment Constraints
- Assume the software will run in mainland China networks by default.
- Prefer China-accessible defaults for package mirrors, container registries, and third-party endpoints when code or documentation needs a default choice.
- Do not hard-code dependencies on services that are commonly inaccessible or unstable from mainland China unless there is an explicit fallback or configurability.
- When adding build, install, or deployment steps, consider whether Go, Node, Python, Docker, and model-download paths need domestic mirror support.
- When integrating external APIs, downloads, or web assets, make network reachability, timeout behavior, and fallback strategy explicit.
- Keep region-specific choices configurable so the repo can still run elsewhere, but mainland China should be the default assumption.
Repo-Specific Change Rules
Backend Go Rules
- Backend entry code belongs in
cmd/managed-portal/; business logic belongs ininternal/. - Keep configuration behavior coherent across
internal/config/,deploy/, and the README when ports, env vars, or service addresses change. - When editing service management logic, check adjacent tests in
internal/managed/,internal/server/, andinternal/webdevice/. - Prefer focused package tests before full-repo Go tests.
Frontend Rules
- Frontend changes belong under
web/src/and should respect the current Vite + Vue 3 structure. - When changing routes, views, or API calls, verify the corresponding backend endpoints or proxy paths still match.
- Prefer minimal UI changes consistent with the existing portal instead of introducing a new design language.
Managed Python Service Rules
- Treat
managed/people_flow_project/andmanaged/store_dwell_alert/as embedded but separately testable projects. - Keep edits contained to the relevant child service unless a shared contract change requires broader updates.
- Preserve deployment/runtime assumptions in each child project's scripts, configs, and tests.
- Be careful with large model weights and local config files; do not assume ignored assets exist in source control.
Deployment And Operations Rules
- For changes touching
deploy/docker-compose.yml, env files, rootDockerfile, or child-service Docker assets, verify configuration consistency. - For registry or service-address changes, keep
managed_services.yaml, deployment files, and README examples aligned. - Do not bulk-sync from external directories into this repo without a diff plan, overwrite-risk check, and rollback path.
- For dependency installation, image builds, or artifact downloads, prefer defaults that are reliable from mainland China or document the required mirror configuration.
Validation Matrix
- Go backend changes:
- Prefer targeted
go testcommands for touched packages. - Use
go test ./...when the change spans multiple backend packages or contracts.
- Prefer targeted
- Frontend changes:
- Prefer
pnpm buildinweb/for structural verification. - Use narrower checks when available, but do not skip build validation for meaningful UI or routing changes.
- Prefer
- Python child service changes:
- Prefer targeted test files under each project's
tests/directory. - Expand to broader test runs only when the change crosses module boundaries.
- Prefer targeted test files under each project's
- Deployment/configuration changes:
- Validate with the narrowest config check available, such as compose config rendering or related test coverage.
- Documentation-only changes:
- Verify file presence, required sections, and consistency with the current repository structure.
Required Artifacts For Non-Trivial Tasks
tasks/todo.md: current checklist, scope, risks, and review evidence.tasks/lessons.md: updated whenever the user corrects the workflow or technical direction.- Final response: concise summary, what was verified, and any residual risk or natural next step.
Definition Of Done
Do not close a non-trivial task until all of the following are true:
- The request is fully covered.
- Plan items in
tasks/todo.mdare updated. - Key verification has run and is reproducible.
tasks/todo.mdincludes a completedReviewsection.tasks/lessons.mdwas updated for any user correction in the task.