soovwv/aienvmap

GitHub: soovwv/aienvmap

一个无依赖的 AI 工作区协同工具,通过环境地图和轻量级 SBOM 帮助多个 AI agent 安全共享开发环境并防止版本漂移。

Stars: 0 | Forks: 0

# aienvmap [![CI](https://static.pigsec.cn/wp-content/uploads/repos/cas/ad/ad5834178f7599af9fdda11629d49cae07f2997beec49821b2920eff5bfd50e7.svg)](https://github.com/soovwv/aienvmap/actions/workflows/ci.yml) [![License](https://img.shields.io/badge/license-Apache--2.0-blue.svg)](LICENSE) [![Node](https://img.shields.io/badge/node-%3E%3D18-339933.svg)](package.json) **AI 优先的 env map + 轻量级 SBOM 协同工具,专为共享开发环境设计。** `aienvmap` 通过轻量级的 env map、轻量级 SBOM、意图日志、时间线和交接机制,帮助多个 AI agent 安全地共享同一个开发环境。它适用于共享服务器、代码库、笔记本电脑或 CI 工作区,在这些场景下,人员或 AI agent 需要相同的环境事实,而无需沉重的锁机制,并且支持无依赖安装。 - 适用:AI agent 共享影响环境的工作。 - 防止:不同的 AI agent 静默安装或假设不同的软件版本。 - 跳过:您只需要完整的合规性 SBOM 扫描器或硬策略锁定管理器。 - AI 信号:共享的 Codex/Claude/Gemini 工作、版本漂移或重复的环境交接。 - SBOM 信号:使用 `sbom --import --write` 附加现有的 CycloneDX/SPDX JSON;aienvmap 仅保留摘要和有限的概要,从不运行扫描器。 - 启动:运行 `npx aienvmap start`;当文件缺失或过期时,它会创建 env map、轻量级 SBOM、状态、摘要、发现入口和仪表板。 - 现有环境:运行 `npx aienvmap reconcile`;它会报告可见的 Node/npm/pnpm/Yarn/Corepack 和 Python/pip/uv/pipx/Conda 安装情况、包位置、清单摘要/样本、项目预期和路由冲突,而不会更改任何内容。使用 `--portable-compare before.json --against after.json --json` 离线比较脱敏后的案例;差异永远不会授权进行更改。 - 运行时路由证据:完整扫描使用有限的 Volta/fnm/nvm/mise 清单和报告的 Node 路径来确定确切的所有权。nvm 根目录会被规范化,因此外部符号链接无法证明控制权;管理器证明永远不会授予移除权限。 - 深度 Python 证据:`reconcile --full-packages` 可选择将稳定的 `pip inspect` 报告汇总为安装程序计数、请求/可编辑计数、摘要和有限的脱敏元数据样本。默认和快速扫描不会运行它。 - Python 管理器证明:相同的显式深度扫描使用离线 uv 清单、有限的 pyenv 根目录/版本以及 mise 安装的 JSON。确切的 uv 解释器、pyenv 前缀或 mise 安装路径匹配会设置 `ownershipProven: true`;`removalAuthorized` 始终保持为 false,并且默认设置保持仅推断。 - Java、.NET、Ruby、Go 和 Rust 保持仅信息提供。Java 候选项包括 PATH/JAVA_HOME/已知根目录以及 Windows 注册表、macOS `java_home` 或 Linux alternatives 来源;不检查包,也绝不自动建议清理。 - Java 身份:每个检测到的运行时会报告选定的 `java.vendor`、`os.arch`、运行时/VM 名称、报告的 `java.home`,以及同级的 `javac` 是否能证明是 JDK。用户/classpath/安全属性不会被保留。 - Java 构建工具路由:项目的 `mvnw`/`gradlew` 包装器优先于 PATH 中的 Maven/Gradle。Maven 报告的运行时和 Gradle 独特的 Launcher/Daemon JVM 证据将被保留;只有完全匹配的 Daemon 主目录才是强有力的证据。不明确或活动命令分歧的路由仅供审查,并且绝不会更改包装器、`JAVA_HOME` 或 PATH。 - Java 管理器证据:仅当 Java 报告的规范主目录仍位于其配置的安装根目录中时,SDKMAN/mise 才会被标记为安装管理器。外部注册和 shims 仅用于路由;jenv 始终仅用于路由,因为它只选择而不是安装 Java。`ownershipProven` 绝不意味着授权移除。 - 可选漂移门控:使用 `aienvmap reconcile --write` 保存已审查的基线,然后在进行环境敏感的 PR 工作之前使用 `aienvmap reconcile --check --json`。退出代码 `2` 表示需要审查;它永远不会授权清理。 `discover` 是只读的,并报告 `aiDiscovery.decision`:`auto-ready` 或 `fallback-required`。`onboard --dry-run` 会在 `onboard` 写入 `AGENTS.md`、`CLAUDE.md` 或 `GEMINI.md` 之前预览微小的限定范围的标记指针;`onboard --uninstall` 仅移除这些标记。自动发现是尽力而为的;如果缺少指针,请从 `start --json` 或 `.aienvmap/discovery.json` 粘贴 `copyPastePrompt`,然后遵循 `sessionUse` 和 `aiEntry`。 前身为 `aienvmp`。今后请使用 `aienvmap`;新的工作区会写入 `.aienvmap/` 产出物。 ## 10秒上手 ``` npx aienvmap start npx aienvmap reconcile npx aienvmap reconcile --check --json npx aienvmap onboard npx aienvmap discover npx aienvmap status npx aienvmap context --json npx aienvmap handoff ``` 在进行影响环境的更改之前: ``` npx aienvmap sbom --json npx aienvmap intent --actor agent:id --session thread:id --action "planned-change" --target dependency --lease-minutes 60 npx aienvmap checkpoint --actor agent:id --summary "dependency-change" --target dependency ``` 在共享服务器上,AI 可以保护基于早期读取做出的决策:从 `aienvmap status --json` 获取 `coordinationRevision`,然后将其通过 `--if-revision ir1:...` 传递给 `intent` 或 `resolve`。如果另一个 AI 先更改了意图日志,aienvmap 会拒绝过期的写入并提示该 AI 刷新。当同一个 AI 标签可以并发运行时,通过 `--session` 传递一个主机/线程标识符,并通过 `--lease-minutes` 传递 5 到 1440 分钟的建议持续时间。同一执行者下的不同会话是独立的冲突所有者;过期状态保持开放以供审查,并且从不授予修改环境的权限。 尝试运行 `npx aienvmap demo`,在不触及您的工作区的情况下查看多 agent 冲突流程。 有关共享服务器的故事,请阅读 [AI 工作区协同案例研究](examples/ai-workspace-case-study.md)。有关推荐标准,请阅读 [AI 采用指南](examples/ai-adoption-guide.md)。 ## 核心 - 阻止 AI agent 静默使用不同的环境假设 - 为每个 AI 提供相同的 env map、轻量级 SBOM、意图日志、时间线和交接 - 在 `.aienvmap/dashboard.html` 中向人类展示相同的状态 - 默认情况下保持建议性和无依赖;严格模式为可选 - 保持轻量级 SBOM 用于协同,而不是完全替代合规性扫描器 - AI 循环:`sync` -> `status` -> `context --json` -> `intent` -> `checkpoint` -> `handoff` - 现有状态循环:`reconcile` -> 审查发现 -> 选择规范工具链 -> 仅进行明确批准的更改 本地模式仅警告。仅对 CI 或明确的人工请求门控使用严格的 doctor 检查。 ## 输出 ``` AIENV.md # Markdown env map for AI agents .aienvmap/discovery.json # smallest AI fallback entry: discovery decision + maintenance routine .aienvmap/status.json # first AI read: clear/review, next command, nextAgent hint .aienvmap/README.md # generated start-here file when AI finds the artifact folder .aienvmap/summary.md # compact AI/CI summary with start-here path .aienvmap/manifest.json # runtime map + light SBOM .aienvmap/sbom.json # light SBOM; optional external evidence summary lives beside it .aienvmap/sbom.cdx.json # CycloneDX-lite export from project manifests .aienvmap/intents.jsonl # planned env changes .aienvmap/timeline.jsonl # append-only change ledger .aienvmap/plan.md # read-only action plan .aienvmap/dashboard.html # human dashboard ``` ## AI 契约 - `schema --json` 在不进行扫描的情况下打印机器可读的契约。 - `start`、`status`、`context`、`reconcile` 和 SBOM 输出共享 `aiDecisionEnvelope`;请首先阅读它,同时 `requiresHumanApprovalBefore` 即使在条件清晰时也仅允许对破坏性操作类别进行审查。 - `reconcile` 还会发出仅用于提案的 `consolidationPlan`:证据、停止条件、回滚要求和批准门控——绝不会发出应用或移除命令。 - `schemaVersion`、`contractVersion`、`stableFrom` 和兼容性规则是明确的。 - `aiAdoptionDecision`、`recommendation.recommendWhen`、`doNotRecommendWhen` 和 `evidenceDocs` 告诉 AI 何时使用、建议或跳过此工具。 - `agentPointers.discovery`、`aiDiscovery.decision`、`sessionUse`、`startupChecklist`、`aiEntry` 和 `copyPastePrompt` 告诉 AI 发现状态是 `auto-ready` 还是 `fallback-required`。 - `.aienvmap/discovery.json`、`discovery.json.maintenance`、`agentDiscovery.sessionStart` 和 `readOrder` 为仅支持 schema 或 Markdown 优先的 agent 提供备用启动路径。 - `environmentChangeProtocol`、`operationalSafety`、`followUpPlan`、`collaboration`、`coordination` 和 `agentActivity` 使共享更改保持建议性;`followUpPlan` 在需要时指向同步、状态或交接。 - `coordinationRevision` 为意图和解决写入启用可选的比较和交换保护,而无需守护进程、数据库或运行时依赖。 - 可选的意图 `session` 和有限的租约证据可区分共享服务器上的并发 AI 会话;过期是建议性的,从不授权清理或更改。 - `start`、`status` 和 `context` 公开无样本的 `externalSbom` 信号;过期或组件漂移会引发建议性审查,而缺失证据和身份回退则保持非阻塞状态。 - `qualitySignals`、`releaseGate` 和 `releaseReadiness` 公开了对 AI 友好的、轻量级的、批处理的稳定契约门控。 - 在 `0.2.0` 之后,已记录的 JSON 字段保持向后兼容;新字段是附加的。 ## 命令 ``` aienvmap onboard # install Codex/Claude/Gemini pointers and sync aienvmap start # one-command AI startup + copy-paste prompt aienvmap sync # update env map, discovery, start-here README, status, summary, SBOM, dashboard aienvmap status # 5-line env decision with start-here path aienvmap context --json # AI decision contract aienvmap sbom --json # light SBOM; add --import --write for an external evidence reference aienvmap plan --write # read-only action plan aienvmap handoff --record # next-agent summary aienvmap intent # record planned env change aienvmap checkpoint # record + sync + status + handoff after env change aienvmap doctor --strict security|policy|coordination|all aienvmap schema --json # stable output contract for AI/CI consumers aienvmap onboard --agents cursor,copilot ``` ## CI GitHub Action 会写入发现、状态、摘要、schema、doctor、plan、SBOM 和仪表板产出物。`strict: "off"` 会报告警告而不会使任务失败。请参阅 [examples/github-action.yml](examples/github-action.yml)。 `reconcile-check` 默认为 `off`。仅在有经过审查的 `.aienvmap/reconcile.json` 的稳定工作站或自托管 runner 上启用它;临时托管 runner 合理地拥有不同的运行时清单。 ``` - uses: soovwv/aienvmap@main with: write-status: "true" write-plan: "true" write-sbom: "true" write-summary: "true" reconcile-check: "off" strict: "off" ``` ## 发布策略 - `0.1.x` 是从 `aienvmp` 重命名后干净的 `aienvmap` 原型系列。 - `0.2.x` 开启稳定的 AI 工作区契约。 - npm 发布采用手动门控和批处理;工作流要求最新的 main 分支、匹配的 `v` 标签、未发布的版本、OIDC 来源以及发布后的注册表完整性验证。 - 默认的发布决策为 `hold`;仅在批处理了几个有意义的更改、`npm run release:check` 通过且审查了 `schema --json` 的 `releaseReadiness.currentBatch` 之后才发布。 - `schema --json` 暴露 `releaseGate`、`releaseReadiness.currentBatch`、`contractReview`、`nextStabilizationTasks`、`requiredBeforeStable` 和 `evidenceCommands`。`npm run contract:check` 会对 13 个已记录的 AI JSON 根字段表面的未审查更改执行失败关闭策略。 - 损坏或被取代的版本将被弃用,而不是取消发布。 ## 开发 ``` node --test npm run smoke && npm run contract:check && npm run perf:check npm run release:check npm pack --dry-run ``` [路线图](ROADMAP.md) / [记分卡](SCORECARD.md) / [市场快照](MARKET.md) / [安全性](SECURITY.md) / [故障排除](TROUBLESHOOTING.md) / [修复日志](BUGFIXES.md) / [贡献](CONTRIBUTING.md) / [可移植案例指南](examples/portable-environment-case-guide.md) / [多 agent 冲突演示](examples/multi-agent-conflict.md) Apache-2.0
标签:AI开发协作, GNU通用公共许可证, MITM代理, Node.js, SBOM, SOC Prime, 开发工具, 暗色界面, 环境管理, 硬件无关, 自定义脚本