feat(agent/access): 强化项目级运行态接入 #18

Merged
lanrtop merged 4 commits from feat/agent-access-reliability into master 2026-09-23 03:01:58 +08:00
Owner

修改内容

  • MCP listener、health 与 SSE callback 全部收敛到 IPv4 loopback 127.0.0.1
  • 新增 configured / reachable / handshake / tools_ready / reload_required 五层 Agent readiness,并接入 onboarding 自检
  • 新增 /mcp/projects/:project_id 作用域路由:连接绑定项目,拒绝跨项目参数和 scoped 全局写能力;旧 /mcp 仅保留迁移提示
  • 为 MCP initialize、工具风险元数据与核心状态工具补充 Agent 可发现的结构化契约
  • Codex/Claude 托管配置迁移到 scoped URL,保留用户手工配置并拒绝覆盖同名 server
  • 设置页同时展示 Agent readiness 与 Windows 登录自启动状态
  • Windows 自启动仅允许正式安装版,默认关闭;debug、target/release 与下载目录直接运行均拒绝启用;查询与启停幂等,复用 single-instance
  • updater 保持独立;开发前要求从托盘完全退出正式版,不并行运行正式版与 pnpm tauri dev
  • 收口工具链能力包蓝图状态

安全边界

  • MCP 仅监听 loopback,不向局域网开放
  • scoped project_id 用于本机单用户误操作隔离,不宣称多租户强认证
  • 不向项目配置写入凭证或 token
  • 本 PR 不部署、不执行 migration、不安装本地包、不修改 Windows 注册表,也不启用自启动

验证结果

  • cargo test --lib:179/179 通过
  • cargo check --release:通过
  • mise exec -- pnpm test:5/5 通过
  • mise exec -- pnpm typecheck:通过
  • mise exec -- pnpm build:通过(仅现有 Vite chunk/import warning)
  • mise exec -- pnpm build:local:生成 NSIS/MSI
  • NSIS SHA-256:82F05ECB0A68E5B87FCD5D50906A64A4CD07B6E9169A07CB2F20D6130FE36C12
  • 真实开发实例仅监听 127.0.0.1:27190
  • 炼境与 Enterprise 两个 scoped endpoint 均完成 initialize、tools/list 与 get_delivery_status,分别返回自身 project_id
  • 跨项目读取与 scoped 全局写调用均返回 scope_violation
  • 完全退出后确认 27190 无 LISTENING
  • pnpm-lock.yaml 无改动;提交前 git diff --cached --check 通过

未验证项

  • 尚未覆盖现有旧正式版安装;未实际验证注册表启停、Windows 登录后拉起及重复启停
  • 当前自动化执行表面无法取得 Tauri 顶层窗口句柄,关闭窗口后托盘仍提供 MCP 需人机终验
  • A7 设置页视觉状态及正式版开关需人眼终验
  • 需在炼境与 Enterprise 各新建一次 Codex 任务,确认无需手工提供 project_id/凭证即可发现自身核心工具
  • 本 PR 的真实 Gitea CI/review 尚待运行

Feature-Confirmed: true
Rules-Applied: R01,R06,R07,R08,R10,R12,R13

## 修改内容 - MCP listener、health 与 SSE callback 全部收敛到 IPv4 loopback `127.0.0.1` - 新增 configured / reachable / handshake / tools_ready / reload_required 五层 Agent readiness,并接入 onboarding 自检 - 新增 `/mcp/projects/:project_id` 作用域路由:连接绑定项目,拒绝跨项目参数和 scoped 全局写能力;旧 `/mcp` 仅保留迁移提示 - 为 MCP initialize、工具风险元数据与核心状态工具补充 Agent 可发现的结构化契约 - Codex/Claude 托管配置迁移到 scoped URL,保留用户手工配置并拒绝覆盖同名 server - 设置页同时展示 Agent readiness 与 Windows 登录自启动状态 - Windows 自启动仅允许正式安装版,默认关闭;debug、target/release 与下载目录直接运行均拒绝启用;查询与启停幂等,复用 single-instance - updater 保持独立;开发前要求从托盘完全退出正式版,不并行运行正式版与 `pnpm tauri dev` - 收口工具链能力包蓝图状态 ## 安全边界 - MCP 仅监听 loopback,不向局域网开放 - scoped project_id 用于本机单用户误操作隔离,不宣称多租户强认证 - 不向项目配置写入凭证或 token - 本 PR 不部署、不执行 migration、不安装本地包、不修改 Windows 注册表,也不启用自启动 ## 验证结果 - `cargo test --lib`:179/179 通过 - `cargo check --release`:通过 - `mise exec -- pnpm test`:5/5 通过 - `mise exec -- pnpm typecheck`:通过 - `mise exec -- pnpm build`:通过(仅现有 Vite chunk/import warning) - `mise exec -- pnpm build:local`:生成 NSIS/MSI - NSIS SHA-256:`82F05ECB0A68E5B87FCD5D50906A64A4CD07B6E9169A07CB2F20D6130FE36C12` - 真实开发实例仅监听 `127.0.0.1:27190` - 炼境与 Enterprise 两个 scoped endpoint 均完成 initialize、tools/list 与 get_delivery_status,分别返回自身 project_id - 跨项目读取与 scoped 全局写调用均返回 `scope_violation` - 完全退出后确认 27190 无 LISTENING - `pnpm-lock.yaml` 无改动;提交前 `git diff --cached --check` 通过 ## 未验证项 - 尚未覆盖现有旧正式版安装;未实际验证注册表启停、Windows 登录后拉起及重复启停 - 当前自动化执行表面无法取得 Tauri 顶层窗口句柄,关闭窗口后托盘仍提供 MCP 需人机终验 - A7 设置页视觉状态及正式版开关需人眼终验 - 需在炼境与 Enterprise 各新建一次 Codex 任务,确认无需手工提供 project_id/凭证即可发现自身核心工具 - 本 PR 的真实 Gitea CI/review 尚待运行 Feature-Confirmed: true Rules-Applied: R01,R06,R07,R08,R10,R12,R13
lanrtop added 4 commits 2026-09-23 02:56:13 +08:00
同步 PR #16 已合并事实,将 T9 与模块进度标记为完成。
MCP 改为 loopback 并绑定项目 scope,补齐越界拒绝、风险元数据和结构化状态。

新增分层 readiness、配置迁移与设置页投影;正式安装版可选择登录自启动,debug 与非安装路径明确拒绝。

Feature-Confirmed: true

Rules-Applied: R01,R06,R07,R08,R10,R12,R13
补充 NSIS/MSI 本地构建结果与安装后 human verify 边界。

Rules-Applied: R13
test(agent/access): 固化自启动幂等边界
All checks were successful
Push & PR Check / check (push) Successful in 57s
Push & PR Check / check (pull_request) Successful in 56s
7c62a1c148
Rules-Applied: R01,R06,R07,R08,R10,R12,R13
lanrtop merged commit 4c113e24bd into master 2026-09-23 03:01:58 +08:00
Sign in to join this conversation.
No reviewers
No Label
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: lanrtop/dev-manager-tauri#18
No description provided.