{"id":48347602,"url":"https://github.com/ljxpython/ai-agent-platform","last_synced_at":"2026-04-21T14:04:31.397Z","repository":{"id":297566345,"uuid":"996487952","full_name":"ljxpython/ai-agent-platform","owner":"ljxpython","description":"AI测试平台开发，和我一起来你也可以，思路方法都在这里，不需要手写一段代码，通用 AI 智能体平台工作区（平台控制面 + LangGraph 运行时）","archived":false,"fork":false,"pushed_at":"2026-04-04T14:21:34.000Z","size":46470,"stargazers_count":81,"open_issues_count":0,"forks_count":10,"subscribers_count":4,"default_branch":"main","last_synced_at":"2026-04-04T16:51:00.330Z","etag":null,"topics":["agent","agentic-ai","langgraph","testng","vibe-coding"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ljxpython.png","metadata":{"files":{"readme":"README.en.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-06-05T02:53:10.000Z","updated_at":"2026-04-02T03:05:03.000Z","dependencies_parsed_at":null,"dependency_job_id":"0aca2f2f-8853-4083-b194-23e38dda0189","html_url":"https://github.com/ljxpython/ai-agent-platform","commit_stats":null,"previous_names":["ljxpython/aitestlab","ljxpython/ai-agent-test-platform","ljxpython/ai-agent-platform"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/ljxpython/ai-agent-platform","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fai-agent-platform","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fai-agent-platform/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fai-agent-platform/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fai-agent-platform/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ljxpython","download_url":"https://codeload.github.com/ljxpython/ai-agent-platform/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ljxpython%2Fai-agent-platform/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":31428645,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-04-05T02:22:46.605Z","status":"ssl_error","status_checked_at":"2026-04-05T02:22:33.263Z","response_time":75,"last_error":"SSL_read: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["agent","agentic-ai","langgraph","testng","vibe-coding"],"created_at":"2026-04-05T08:01:03.156Z","updated_at":"2026-04-21T14:04:31.375Z","avatar_url":"https://github.com/ljxpython.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003ch1 align=\"center\"\u003eEnterprise AI Agent Platform\u003c/h1\u003e\n\n\u003cp align=\"center\"\u003e\u003cstrong\u003eAn AI agent platform foundation for enterprise delivery and secondary development\u003c/strong\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003eEnglish | \u003ca href=\"README.md\"\u003e中文\u003c/a\u003e\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Vue-3%20Workspace-42B883\" alt=\"Vue 3 Workspace\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Testcase-Agent%20Live-2563EB\" alt=\"Testcase Agent Live\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Skills-Private%20Skill%20Stack-0F766E\" alt=\"Skills\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/MCP-Knowledge%20Ready-7C3AED\" alt=\"MCP Knowledge Ready\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/Harness-AI%20Continuous%20Coding-F59E0B\" alt=\"Harness\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/LangGraph-Runtime%20Core-111827\" alt=\"LangGraph Runtime Core\" /\u003e\n  \u003cimg src=\"https://img.shields.io/badge/README-EN%2FZH-F59E0B\" alt=\"README EN/ZH\" /\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003ca href=\"#system-overview\"\u003eSystem Overview\u003c/a\u003e · \u003ca href=\"#frontend-entry\"\u003eFrontend Entry\u003c/a\u003e · \u003ca href=\"#quick-start\"\u003eQuick Start\u003c/a\u003e · \u003ca href=\"docs/deployment-guide.md\"\u003eDeployment Guide\u003c/a\u003e · \u003ca href=\"docs/CHANGELOG.md\"\u003eChangelog\u003c/a\u003e · \u003ca href=\"docs/commit-and-changelog-guidelines.md\"\u003eCommit Guidelines\u003c/a\u003e · \u003ca href=\"#acknowledgements\"\u003eAcknowledgements\u003c/a\u003e · \u003ca href=\"#ai-deploy\"\u003eAI Deployment\u003c/a\u003e\u003c/p\u003e\n\n## Testcase Agent Demo\n\n\u003cp align=\"center\"\u003e\n  \u003ca href=\"https://youtu.be/SVplU-uIci0\"\u003e\n    \u003cimg src=\"docs/assets/testcase-agent-demo-preview.jpg\" alt=\"Testcase Agent Demo\" width=\"100%\" /\u003e\n  \u003c/a\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\n  \u003cstrong\u003e\u003ca href=\"https://youtu.be/SVplU-uIci0\"\u003e▶ Watch the current platform Testcase Agent demo\u003c/a\u003e\u003c/strong\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e\u003csub\u003eThe GitHub README uses an image preview here. Click it to open the YouTube demo.\u003c/sub\u003e\u003c/p\u003e\n\nAn enterprise AI agent platform architecture built on `LangGraph / LangChain`, intended as a reusable foundation for further development.  \nIt separates the **platform governance layer** from the **Agent Runtime execution layer**, so the repo can support platform-side authentication, project management, audit, and catalog management, while also supporting runtime graph orchestration, model assembly, Tools / MCP / Skills integration, and rapid agent debugging.\n\nThe repository currently provides a default four-service local bring-up path, plus an optional runtime debug entry. It is suitable for:\n\n- Teams that want to build on mainstream agent infrastructure instead of inventing a closed framework\n- Projects that need both platform capabilities and agent execution capabilities\n- Developers who want to validate LangGraph Runtime behavior and frontend interaction quickly\n- Teams that want to bring AI-assisted collaboration into the real engineering workflow\n\n\u003e If you want to understand why the project is designed this way and how development should continue, start with [docs/development-paradigm.md](docs/development-paradigm.md). Most supporting docs in this repo are currently Chinese-first.\n\n\u003ca id=\"frontend-entry\"\u003e\u003c/a\u003e\n\n## Current Frontend Entry\n\n`apps/platform-web-vue` is the official platform frontend host and the default place for current platform frontend development.\n\nUse the frontend entries in this repo like this:\n\n- `apps/platform-web-vue`: official platform workspace frontend\n- `apps/runtime-web`: runtime-facing debug frontend\n\nIf you just want the current official local demo path, start the root scripts and open `apps/platform-web-vue`.\n\n## AI Continuous-Coding Harness\n\nThis repository is not only a codebase. It already acts as an engineering harness for continuous AI-assisted development.\n\nThat harness is made of several parts working together:\n\n- `Boundaries`: platform governance, runtime execution, debug frontend, and result-domain service are separated instead of mixed together\n- `Contracts`: local deployment contract, env conventions, startup order, API naming, and demo account rules are fixed\n- `Patterns`: `runtime-service`, `platform-web-vue`, control-plane standards, and reusable examples already provide working implementation patterns\n- `Delivery loop`: helper scripts, health checks, smoke tests, acceptance docs, changelog, and release runbooks form a repeatable delivery path\n\nIn short, the repo is meant to let AI agents keep building inside a controlled engineering environment, not just generate random code in a vacuum.\n\nThe current canonical docs for that harness are:\n\n- `docs/local-deployment-contract.yaml`\n- `docs/development-paradigm.md`\n- `docs/local-dev.md`\n- `docs/env-matrix.md`\n\n## What Problem This Project Solves\n\nMany agent projects can run a demo, but once they enter a real engineering context, things become messy fast: platform governance, runtime execution, debug entrypoints, and environment configuration all get coupled together.\n\nThis repo has a clear goal:\n\n- Build an enterprise AI platform architecture on top of the mainstream `LangGraph / LangChain` ecosystem\n- Decouple the platform layer from the runtime layer so ownership, evolution, and delivery stay manageable\n- Provide a reusable runtime execution skeleton instead of a one-off demo\n- Leave room for later business customization and testing-related scenarios\n\n## Frontend Showcase\n\nIf you want to see what the current platform frontend already looks like and how the frontend workspace is organized, start with this write-up:\n\n- [Platform frontend showcase and introduction](https://github.com/ljxpython/ai-learning-portfolio/blob/main/my_work_record/20260325_platform_frontend_intro.md)\n\nThat article is more frontend-oriented and is useful for quickly understanding the current platform workspace structure and UI direction.\n\n![Platform Frontend Showcase](docs/assets/image-20260325161139758.png)\n\n\u003ca id=\"system-overview\"\u003e\u003c/a\u003e\n\n## System Overview\n\nThe default local bring-up currently includes four formal services:\n\n- `apps/interaction-data-service`: result-domain data service for workflow result persistence and querying\n- `apps/platform-api-v2`: official platform backend / control-plane API\n- `apps/platform-web-vue`: official platform frontend / admin workspace entry\n- `apps/runtime-service`: LangGraph execution layer / Agent Runtime\n\nOptional debug entry:\n\n- `apps/runtime-web`: debug frontend that talks directly to the runtime\n\n### Two Main Paths\n\n- Platform path: `platform-web-vue -\u003e platform-api-v2 -\u003e runtime-service`\n- Debug path: `runtime-web -\u003e runtime-service`\n- Result-domain path: `runtime-service -\u003e interaction-data-service`\n\n### What The Frontend Entries Are For\n\n- `platform-web-vue`: official platform product workspace and the default frontend host\n- `runtime-web`: agent debugging, interaction validation, and fast runtime iteration\n\n## Architecture Diagram\n\n![System Architecture Diagram](docs/assets/system-architecture.en.svg)\n\n\u003ca id=\"quick-start\"\u003e\u003c/a\u003e\n\n## Quick Start\n\n### Default Startup Order\n\n1. `runtime-service`\n2. `interaction-data-service`\n3. `platform-api-v2`\n4. `platform-web-vue`\n5. `runtime-web` (optional)\n\n### Root Scripts\n\n```bash\nscripts/dev-up.sh\nscripts/check-health.sh\nscripts/dev-down.sh\n```\n\nThese three scripts are:\n\n- Start: `scripts/dev-up.sh`\n- Health check: `scripts/check-health.sh`\n- Stop: `scripts/dev-down.sh`\n\n### If You Want To Start `platform-web-vue` Separately\n\nThe root scripts already start `apps/platform-web-vue`.\n\nIf you want to run it alone during frontend work:\n\n```bash\nVITE_DEV_PORT=3002 pnpm --dir \"apps/platform-web-vue\" dev\n```\n\nThen open:\n\n- `platform-web-vue`: `http://127.0.0.1:3002`\n\n### Default Local Ports\n\n- `interaction-data-service`: `8081`\n- `runtime-service`: `8123`\n- `platform-api-v2`: `2142`\n- `platform-web-vue`: `3000`\n- `runtime-web`: `3001`\n\n### URLs After Startup\n\n- `platform-web-vue`: `http://127.0.0.1:3000`\n- `runtime-web`: `http://127.0.0.1:3001`\n\n### Minimum Health Checks\n\n```bash\ncurl http://127.0.0.1:8081/_service/health\ncurl http://127.0.0.1:8123/info\ncurl http://127.0.0.1:2142/_system/health\ncurl http://127.0.0.1:2142/api/langgraph/info\n```\n\nIf `/api/langgraph/info` on `platform-api-v2` returns `200`, and `/_service/health` on `interaction-data-service` also returns `200`, the platform path and result persistence path are basically connected.\n\n![Local Startup Flow](docs/assets/local-dev-startup-flow.en.svg)\n\n## Repo Structure\n\n```text\nAITestLab/\n├── apps/\n│   ├── interaction-data-service/\n│   ├── platform-api-v2/\n│   ├── platform-web-vue/\n│   ├── runtime-service/\n│   ├── runtime-web/\n│   └── ...\n├── docs/\n├── scripts/\n└── archive/\n```\n\n- `apps/`: business apps, including the default local startup set and other maintained application directories\n- `docs/`: deployment, development, constraints, and background docs\n- `scripts/`: unified start, stop, and health-check scripts\n- `archive/`: historical archive notes\n\n\u003ca id=\"docs-by-goal\"\u003e\u003c/a\u003e\n\n## Read Docs By Goal\n\n![Documentation Navigation Diagram](docs/assets/readme-doc-navigation.en.svg)\n\n### I Want To Bring Up The Environment First\n\nStart with:\n\n- `docs/local-deployment-contract.yaml`\n- `docs/local-dev.md`\n- `docs/env-matrix.md`\n\n### I Want Full Deployment Details\n\nThen read:\n\n- `docs/deployment-guide.md`\n\n### I Want To Continue Development Or Customize The Project\n\nFocus on:\n\n- `docs/development-paradigm.md`\n- `docs/development-guidelines.md`\n- `docs/project-story.md`\n\n### I Want To Do An Official Release\n\nStart with:\n\n- `docs/releases/release-policy.md`\n- `docs/releases/v0.1.0-agent-workspace-demo-draft.md`\n- `docs/releases/v0.1.0-release-runbook.md`\n- `docs/releases/v0.1.1-agent-workspace-demo-draft.md`\n- `docs/releases/v0.1.1-release-runbook.md`\n- `docs/releases/v0.1.2-agent-workspace-demo-draft.md`\n- `docs/releases/v0.1.2-release-runbook.md`\n\n\u003ca id=\"ai-deploy\"\u003e\u003c/a\u003e\n\n### I Want An AI Agent To Help Me Deploy\n\nEntry document:\n\n- `docs/ai-deployment-assistant-instruction.md`\n\nIf you only want to trigger the standard local deployment flow, this sentence is enough:\n\n```text\nRead `docs/ai-deployment-assistant-instruction.md` and help me deploy the environment.\n```\n\nIf you already know which models should be used locally, it is better to provide the model configuration to the agent in the same message. That makes it much easier for the agent to finish the bring-up in one pass instead of stopping midway to ask for runtime model settings.\n\nThis fuller prompt is the recommended version. Replace the placeholders with your real values, and only let the agent write them into local `settings.local.yaml`. Do not commit real secrets back into the repo.\n\n```text\nRead `docs/ai-deployment-assistant-instruction.md` and help me deploy the environment.\n\nUse `\u003cYOUR_REASONING_MODEL_ID\u003e` as the default reasoning model.\nAlso configure `\u003cYOUR_MULTIMODAL_MODEL_ID\u003e` for the current multimodal pipeline.\nIf runtime model config is missing locally, write the following into `apps/runtime-service/runtime_service/conf/settings.local.yaml`, then continue deployment, startup, and verification. Do not commit the real API key back to the repo.\n\ndefault:\n  default_model_id: \u003cYOUR_REASONING_MODEL_ID\u003e\n  models:\n    \u003cYOUR_MULTIMODAL_MODEL_ID\u003e:\n      alias: \u003cOPTIONAL_MULTIMODAL_ALIAS\u003e\n      model_provider: openai\n      model: \u003cYOUR_MULTIMODAL_MODEL_NAME\u003e\n      base_url: \u003cYOUR_PROVIDER_BASE_URL\u003e\n      api_key: \u003cYOUR_API_KEY\u003e\n    \u003cYOUR_REASONING_MODEL_ID\u003e:\n      alias: \u003cOPTIONAL_REASONING_ALIAS\u003e\n      model_provider: openai\n      model: \u003cYOUR_REASONING_MODEL_NAME\u003e\n      base_url: \u003cYOUR_PROVIDER_BASE_URL\u003e\n      api_key: \u003cYOUR_API_KEY\u003e\n```\n\n## Practical References\n\nIf you want a set of notes closer to real development work, see:\n\n- [ai-learning-portfolio repository](https://github.com/ljxpython/ai-learning-portfolio)\n- [my_work_record index](https://github.com/ljxpython/ai-learning-portfolio/blob/main/my_work_record/README.md)\n\nThese notes do not duplicate the source code. They focus on the practical path: how things were done, how they were verified, and how they were reviewed afterward. They are useful as a reference for both **agent capability development** and **platform capability development** in this repo.\n\nA useful way to think about them:\n\n- The root `README` of this repo is more of a project map, system layering guide, and document index\n- The `ai-learning-portfolio` notes are more about real implementation flow, validation steps, and retrospective thinking\n\nIf you want the mainline reading path, start with:\n\n- [Deployment and validation baseline](https://github.com/ljxpython/ai-learning-portfolio/blob/main/my_work_record/20260323_deployment_environment.md)\n- [A simple Text-to-SQL capability case](https://github.com/ljxpython/ai-learning-portfolio/blob/main/my_work_record/20260312_texttosql_rd.md)\n- [A complex multi-agent business case](https://github.com/ljxpython/ai-learning-portfolio/blob/main/my_work_record/20260314_requirement_agent_rd.md)\n\nYou can read those three notes like this:\n\n- `20260323_deployment_environment.md`: how to prepare the local environment, start services, and verify that paths are connected\n- `20260312_texttosql_rd.md`: how a relatively simple Text-to-SQL capability is designed and implemented around a concrete scenario\n- `20260314_requirement_agent_rd.md`: how a more complex multi-agent business scenario moves from requirement understanding and role split to actual delivery\n\nIf this is your first time looking at the repo, the recommended reading order is:\n\n1. Read this `README`, `docs/local-deployment-contract.yaml`, and `docs/local-dev.md`\n2. Then check the local practice index in `ai-learning-portfolio`\n3. If you want a simpler starting point, begin with Text-to-SQL. If you want a more complex collaboration case, start with the multi-agent requirement case\n\n## Current Status\n\nThis repo has already completed:\n\n- The default four-service startup set has been stabilized under `apps/*`\n- `apps/platform-web-vue` is the official platform frontend host\n- `apps/platform-api-v2` is the official platform control plane\n- `runtime-service` can start\n- `interaction-data-service` can start\n- `platform-api-v2` can start\n- `platform-api-v2 -\u003e runtime-service` integration has passed\n- `runtime-service -\u003e interaction-data-service` has been wired into the local bring-up scripts\n- `platform-web-vue` is the official platform frontend host, while `runtime-web` remains the optional runtime debug shell\n\nCurrent conventions that are still kept:\n\n- Each app maintains its own environment and dependencies\n- There is no unified root `.env`\n- Python and Node dependencies are not unified at the repo root for now\n\n## Project Direction\n\nThe long-term direction of this repo is to evolve into a reusable, extensible, secondary-development-friendly AI agent platform foundation.  \nNear-term capability growth is biased toward test-engineering-related scenarios such as:\n\n- AI-assisted review\n- AI-driven UI automation\n- Automated script generation and testing assistance\n- AI performance testing\n- Text-to-SQL\n\nFor fuller project background, evolution history, and design tradeoffs, see:\n\n- `docs/project-story.md`\n\n## Support And Contact\n\nIf this repo helps you, a star is welcome.  \nIf you want to discuss testing platforms, AI-assisted development, or LangGraph / MCP practice, feel free to reach out.\n\nPersonal WeChat:\n\n\u003cimg src=\"docs/assets/image-20250531212549739.png\" alt=\"Personal WeChat QR\" width=\"300\"/\u003e\n\n## Historical Code\n\nThe old `AITestLab` code is no longer kept on the current working branch.\n\nIf you need the historical code, see:\n\n- [AITestLab-archive](https://github.com/ljxpython/AITestLab-archive)\n\n\u003ca id=\"acknowledgements\"\u003e\u003c/a\u003e\n\n## Acknowledgements\n\nThis project has benefited from several strong open-source projects and ecosystems, especially:\n\n- [Wei-Shaw/sub2api](https://github.com/Wei-Shaw/sub2api/tree/main): strong inspiration for frontend layout rhythm, dashboard organization, and workspace interaction patterns\n- [FastAPI](https://fastapi.tiangolo.com/): key foundation for the platform backend and service interfaces\n- [LangGraph](https://docs.langchain.com/langgraph): key foundation for agent runtime orchestration and stateful execution flows\n- [FastMCP](https://gofastmcp.com/): important reference ecosystem for MCP-based tooling and service integration\n\nThese references are not copied blindly. They are absorbed, reorganized, and adapted around the goals and engineering boundaries of this repository.\n\n## Open Source Usage Notice\n\nThis project is maintained as public source code. Learning from it, referencing it, and building on top of it are all welcome.\n\nIf you use this project in public repositories, technical articles, demos, training materials, or redistributed derivatives, please clearly credit the original repository and author.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fljxpython%2Fai-agent-platform","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fljxpython%2Fai-agent-platform","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fljxpython%2Fai-agent-platform/lists"}