Frontend AI coding agent platform with CLI, VS Code extension, desktop app, MCP server, RAG planning, Skills, SDD guardrails, browser automation, and LoRA planner models | 面向前端工程的 AI Agent 平台,支持 CLI、VS Code 插件、桌面端、MCP 服务、RAG、Skills、SDD、浏览器自动化与 LoRA 规划模型
Drift inferred · capture-to-capture
No drift recorded — single capability capture; advisories appear once its surface changes.
tools
-
frontagent_init_sdd
creates an SDD template. Existing files are not overwritten unless force=true.
-
frontagent_list_skills
lists visible content skills.
-
frontagent_plan_task
generates a FrontAgent execution plan without executing tools or writing files.
-
frontagent_run_task
runs a full FrontAgent task. Inputs include task, type, files, url, sddPath, and securityMode.
-
frontagent_status
returns project root, SDD status, visible skills, LLM backend status, RAG status, and run-log directory.
-
frontagent_validate_sdd
validates the project SDD file.
analyzed commit f35f054 · analyzer v19 · 1d ago
skills & prompt files 20
- skillFrontAgent-FrontAgent-f35f054/.agents/skills/gitnexus/gitnexus-cli/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.agents/skills/gitnexus/gitnexus-debugging/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.agents/skills/gitnexus/gitnexus-exploring/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.agents/skills/gitnexus/gitnexus-guide/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.agents/skills/gitnexus/gitnexus-impact-analysis/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.agents/skills/gitnexus/gitnexus-refactoring/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.claude/skills/gitnexus/gitnexus-cli/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.claude/skills/gitnexus/gitnexus-debugging/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.claude/skills/gitnexus/gitnexus-exploring/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.claude/skills/gitnexus/gitnexus-guide/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.claude/skills/gitnexus/gitnexus-impact-analysis/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/.claude/skills/gitnexus/gitnexus-refactoring/SKILL.md
- agent-rulesFrontAgent-FrontAgent-f35f054/AGENTS.md
- agent-rulesFrontAgent-FrontAgent-f35f054/CLAUDE.md
- prompt-fileFrontAgent-FrontAgent-f35f054/models/frontagent-planner/prompts/error-recovery-prompt.md
- prompt-fileFrontAgent-FrontAgent-f35f054/models/frontagent-planner/prompts/planner-prompt.md
- skillFrontAgent-FrontAgent-f35f054/skills/frontend-design/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/skills/frontend-reviewer/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/skills/requirement-interviewer/SKILL.md
- skillFrontAgent-FrontAgent-f35f054/skills/skill-lifecycle/SKILL.md
filesystem 50
- fs FrontAgent-FrontAgent-f35f054/apps/cli/src/bootstrap.ts :8
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/info.ts :1
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/init.ts :1
import { existsSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/prompt.ts :1
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/rag.ts :10
} from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/run.tsx :5
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/validate.ts :1
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/cli/src/run-logger.ts :2
import { appendFileSync, mkdirSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/cli/src/version.ts :1
import { existsSync, readFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/desktop/src/main/runtimeIO.ts :7
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/apps/desktop/vite.config.ts :1
import { readFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/context/project-instructions.ts :1
import { closeSync, existsSync, openSync, readFileSync, readSync, statSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/executor/executor.ts :1
import { existsSync, statSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/memory/open-memory-gateway.ts :10
} from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/memory/store.ts :1
import { existsSync, mkdirSync, readdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-content/loader.ts :1
import { type Dirent, existsSync, readdirSync, readFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-content/resolver.ts :1
import { existsSync, readFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/improve.ts :1
import { cpSync, existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/reporting.ts :1
import { mkdirSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/scaffold.ts :1
import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/skill-lab.ts :1
import { cpSync, existsSync, mkdirSync, readFileSync, rmSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/skill-lab/utils.ts :1
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/core/src/sub-agents/process-isolated-code-quality-subagent.ts :7
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/hallucination-guard/src/checks/file-existence.ts :6
import { existsSync, statSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/hallucination-guard/src/checks/import-validity.ts :6
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/path-safety.ts :1
import { existsSync, realpathSync, statSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/snapshot.ts :13
} from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/apply-patch.ts :6
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/create-file.ts :6
import { existsSync, mkdirSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/list-directory.ts :6
import { readdirSync, statSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/read-file.ts :6
import { readFileSync, statSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-file/src/tools/search-code.ts :6
import { readFileSync, statSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-filesense/src/engine.ts :7
import { promises as fs } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-filesense/src/tools.ts :6
import { realpathSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/knowledge-base.ts :1
import { existsSync, mkdirSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/repository.ts :3
import { existsSync, mkdirSync, rmSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/config.ts :1
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/hooks.ts :2
import { existsSync, readFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/mcp-server.ts :3
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/run-logger.ts :2
import { createWriteStream, mkdirSync, type WriteStream } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/run.ts :1
import { existsSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/sdd.ts :1
import { existsSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/session-store.ts :10
} from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/settings.ts :1
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/sdd/src/artifacts/store.ts :18
} from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/sdd/src/constitution/parser.ts :6
import { existsSync, readFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/packages/sdd/src/parser.ts :6
import { existsSync, readFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/scripts/sync-vscode-version.mjs :1
import { readFileSync, writeFileSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/scripts/workflows/contract-check.mjs :2
import { existsSync, readFileSync, realpathSync } from 'node:fs'; - fs FrontAgent-FrontAgent-f35f054/scripts/workflows/install-hooks.mjs :2
import { existsSync } from 'node:fs';
shell / exec 7
- shell FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/rag.ts :1
import { execFile } from 'node:child_process'; - shell FrontAgent-FrontAgent-f35f054/packages/core/src/sub-agents/process-isolated-code-quality-subagent.ts :6
import { spawn } from 'node:child_process'; - shell FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/repository.ts :1
import { execFile } from 'node:child_process'; - shell FrontAgent-FrontAgent-f35f054/packages/mcp-shell/src/index.ts :6
import { spawn } from 'node:child_process'; - shell FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/hooks.ts :1
import { spawn } from 'node:child_process'; - shell FrontAgent-FrontAgent-f35f054/scripts/workflows/contract-check.mjs :1
import { execFileSync, spawnSync } from 'node:child_process'; - shell FrontAgent-FrontAgent-f35f054/scripts/workflows/install-hooks.mjs :1
import { execFileSync } from 'node:child_process';
network 8
- net FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/rag.ts :139
const response = await fetch(sourceUrl); - net FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/embedding.ts :78
const response = await fetch(endpoint, { - net FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/providers.ts :231
const response = await fetch(this.config.endpoint, { - net FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/reranker.ts :154
const response = await fetch(endpoint, { - net FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/weaviate.ts :94
const getResponse = await fetch(`${baseURL}/v1/schema/${collectionName}`, { - net FrontAgent-FrontAgent-f35f054/packages/mcp-web-fetch/src/engine.ts :3
import { Agent } from 'undici'; - net FrontAgent-FrontAgent-f35f054/packages/mcp-web-fetch/src/url-safety.ts :1
import { isIP } from 'node:net'; - net FrontAgent-FrontAgent-f35f054/packages/mcp-web/src/browser.ts :88
const response = await route.fetch({ maxRedirects: 0 });
secrets 8
- secrets FrontAgent-FrontAgent-f35f054/apps/cli/src/bootstrap.ts :52
return cliValue ?? process.env[`${provider.toUpperCase()}_API_KEY`] ?? process.env.API_KEY; - secrets FrontAgent-FrontAgent-f35f054/apps/cli/src/commands/info.ts :25
const apiKey = process.env[`${provider.toUpperCase()}_API_KEY`] || process.env.API_KEY; - secrets FrontAgent-FrontAgent-f35f054/apps/cli/src/index.ts :235
process.env.FRONTAGENT_RAG_KEYWORD_CANDIDATES || '40', - secrets FrontAgent-FrontAgent-f35f054/apps/vscode/src/settings-resolve.ts :73
providerApiKey ?? legacyApiKey ?? settingsApiKey ?? providerEnvApiKey ?? process.env.API_KEY, - secrets FrontAgent-FrontAgent-f35f054/packages/core/src/llm/llm-service.ts :110
const key = apiKey ?? process.env[`${provider.toUpperCase()}_API_KEY`] ?? process.env.API_KEY; - secrets FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/config.ts :41
process.env.FRONTAGENT_RAG_EMBEDDING_API_KEY ?? - secrets FrontAgent-FrontAgent-f35f054/packages/mcp-memory/src/rag/providers.ts :67
apiKey: config?.apiKey ?? process.env.FRONTAGENT_OPENVIKING_API_KEY ?? '', - secrets FrontAgent-FrontAgent-f35f054/packages/runtime-node/src/config.ts :160
return explicitValue ?? process.env[`${provider.toUpperCase()}_API_KEY`] ?? process.env.API_KEY;
declared dependencies 9
- playwright@^1.60.0
- ts-morph@^28.0.0
- @biomejs/biome@2.4.16
- @types/node@^25.9.1
- esbuild@^0.28.0
- gitnexus@1.6.6
- turbo@^2.9.14
- typescript@^6.0.3
- vitest@^4.1.7
obfuscation 2
- dynamic require()/import() FrontAgent-FrontAgent-f35f054/apps/cli/src/index.ts :57
const runtimeNode = (await import(runtimeNodePackageName())) as { - dynamic require()/import() FrontAgent-FrontAgent-f35f054/packages/hallucination-guard/src/checks/import-validity.ts :112
const packageJson = await import(packageJsonPath, { with: { type: 'json' } });