From 6a3005dcd03089561de45c9742d816c023f65309 Mon Sep 17 00:00:00 2001
From: 1 <wentingyear@gmail.com>
Date: Mon, 08 Jun 2026 02:50:57 +0800
Subject: [PATCH] 修改了一些体系

---
 common/project-doc/项目审计规范.md               |    2 
 common/codex-bridge/Codex桥接说明.md           |   82 +++++++++++
 common/project-doc/项目配置清单模版.md             |    2 
 data/codex-bridge/agents.json              |   11 +
 管理系统说明.md                                  |    7 
 common/manage-doc/管理体系规范.md                |    4 
 全局规范.md                                    |    8 
 /dev/null                                  |    0 
 common/exp-doc/实验审核规范.md                   |    2 
 common/ai-workplace/AI工作空间创建指南.md          |   14 +
 common/codex-bridge/send-codex-message.ps1 |  223 +++++++++++++++++++++++++++++++
 common/ana-doc/案例审核规范.md                   |    4 
 common/dev-doc/开发审计规范.md                   |    2 
 目录导读.md                                    |    1 
 体系创建流程.md                                  |    6 
 common/pro-doc/需求审核规范.md                   |    2 
 common/codex-bridge/agents.example.json    |   11 +
 17 files changed, 368 insertions(+), 13 deletions(-)

diff --git "a/common/ai-workplace/AI\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272\346\214\207\345\215\227.md" "b/common/ai-workplace/AI\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272\346\214\207\345\215\227.md"
index f8890a2..b48e836 100644
--- "a/common/ai-workplace/AI\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272\346\214\207\345\215\227.md"
+++ "b/common/ai-workplace/AI\345\267\245\344\275\234\347\251\272\351\227\264\345\210\233\345\273\272\346\214\207\345\215\227.md"
@@ -84,6 +84,8 @@
 | 数据负责人 | 管理数据字典、数据存储说明和正式数据入口 | `data-doc/`;项目约定数据目录;该 AI 工作空间 |
 | 审核员(指定体系审核) | 审核指定体系的设计、计划、执行、证据链和结果边界 | 对应体系审计报告;必要时在问题记录写跨轮索引;该 AI 工作空间 |
 
+审核员可维护自己审核职责对应的本地审核 / 审计规范,例如 `exp-doc/实验审计规范.md`、`ana-doc/案例审核规范.md`、`dev-doc/开发审计规范.md`、`pro-doc/需求审核规范.md`;该权限只用于审核流程和审计口径维护,不代表可以修改被审体系的执行规范、事项计划、执行日志、结果包或主产物。若需要修改执行规范,必须另授体系维护 / 规范维护角色,或创建独立规范维护事项。
+
 组合角色示例:
 
 | 组合角色 | 解释 |
@@ -102,7 +104,7 @@
 | 开发角色 | 必读文档 |
 |---|---|
 | 需求-开发 | 项目本地 `pro-doc/需求规范.md`、相关需求总纲 / 需求文档 / 需求方案 / 三大需求文档;项目本地 `dev-doc/编码规范.md`、`dev-doc/开发审计规范.md` |
-| 实验-开发 | 项目本地 `exp-doc/实验规范.md`、`exp-doc/实验审核规范.md`、相关实验总纲 / 实验设计;项目本地 `dev-doc/编码规范.md`、`dev-doc/开发审计规范.md` |
+| 实验-开发 | 项目本地 `exp-doc/实验规范.md`、`exp-doc/实验审计规范.md`、相关实验总纲 / 实验设计;项目本地 `dev-doc/编码规范.md`、`dev-doc/开发审计规范.md` |
 | 案例分析-开发 | 项目本地 `ana-doc/案例分析规范.md`、`ana-doc/案例分析审核规范.md`、相关案例总纲 / 案例设计或案例流程;项目本地 `dev-doc/编码规范.md`、`dev-doc/开发审计规范.md` |
 | 项目工具开发 | 项目本地 `项目规范.md`、`项目配置清单.md`、相关项目事项总纲 / 项目事项计划;项目本地 `dev-doc/编码规范.md`、`dev-doc/开发审计规范.md` |
 
@@ -112,7 +114,7 @@
 |---|---|
 | 需求审核员 | 项目本地 `pro-doc/需求规范.md`、`pro-doc/需求审核规范.md`、被审需求事项账本和上游聊天 / 文档证据 |
 | 开发审核员 | 项目本地 `dev-doc/编码规范.md`、`dev-doc/开发审计规范.md`、被审开发事项账本、目标体系规范和开发产物证据;审计报告入口按目标体系查看项目配置清单 |
-| 实验审核员 | 项目本地 `exp-doc/实验规范.md`、`exp-doc/实验审核规范.md`、被审实验总纲 / 实验设计 / 执行日志 / 结果包 |
+| 实验审核员 | 项目本地 `exp-doc/实验规范.md`、`exp-doc/实验审计规范.md`、被审实验总纲 / 实验设计 / 执行日志 / 结果包 |
 | 案例分析审核员 | 项目本地 `ana-doc/案例分析规范.md`、`ana-doc/案例分析审核规范.md`、被审案例账本 / 执行记录 / 图片或数据证据 |
 | 项目事项审核员 | 项目本地 `项目规范.md`、`项目配置清单.md`、项目事项总纲 / 项目事项计划 / 项目执行日志 / 项目变更记录 |
 
@@ -219,7 +221,8 @@
 7. 正式产物目录、草稿目录、临时目录和审计入口。
 8. 任务入口路由:接到任务后应该先查哪个配置、再读哪个体系规范。
 9. 审核边界:如果该 AI 是审核员,要写清审核体系、审计报告入口和不能直接改被审计产物。
-10. 禁止事项和越权边界。
+10. 审核规范维护边界:如果该 AI 是审核员,要写清可维护的本地审核 / 审计规范入口,以及不得默认修改的被审体系执行规范入口。
+11. 禁止事项和越权边界。
 
 `工作说明.md` 不能替代 `实验规范.md`、`编码规范.md`、`开发审计规范.md`、`项目规范.md` 等体系文档。体系流程变化时,以对应体系文档为准,工作说明只做入口索引。
 审核员角色的“必读文档入口”必须同时列出被审体系规范、审计规范 / 审计报告入口、被审对象账本入口。
@@ -274,6 +277,7 @@
 4. 私有项目问题反馈:`ai-<AI_NAME>/项目问题反馈.md`
 5. 正式产物:<按角色列出正式目录;注明路径是否相对项目根目录>
 6. 审计入口:<如有审核角色,列出对应审计报告;注明路径是否相对项目根目录>
+7. 审核规范维护入口:<如有审核角色,列出可维护的本地审核 / 审计规范;同时列出不得默认修改的被审体系执行规范>
 
 ## 5. 任务入口路由
 
@@ -371,10 +375,10 @@
 组合角色还必须按角色类型做专项校验:
 
 1. 需求-开发角色:`工作说明.md` 必须同时列出 `pro-doc/需求规范.md`、相关需求事项账本或需求文档入口、`dev-doc/编码规范.md`、`dev-doc/开发审计规范.md`、`dev/pro-dev/`、`dev-doc/pro-doc/`。
-2. 实验-开发角色:`工作说明.md` 必须同时列出 `exp-doc/实验规范.md`、`exp-doc/实验审核规范.md`、相关实验总纲 / 实验设计入口、`dev-doc/编码规范.md`、`dev-doc/开发审计规范.md`、目标实验开发工作区。
+2. 实验-开发角色:`工作说明.md` 必须同时列出 `exp-doc/实验规范.md`、`exp-doc/实验审计规范.md`、相关实验总纲 / 实验设计入口、`dev-doc/编码规范.md`、`dev-doc/开发审计规范.md`、目标实验开发工作区。
 3. 案例分析-开发角色:`工作说明.md` 必须同时列出案例分析规范、案例审核规范、相关案例账本入口、`dev-doc/编码规范.md`、`dev-doc/开发审计规范.md`、目标案例开发工作区。
 4. 需求-开发-审核员:`工作说明.md` 必须同时列出需求规范、需求审核规范、编码规范、开发审计规范、需求审计报告、`dev-doc/开发审计报告.md`、需求事项账本入口、开发事项账本入口;不得只列审计报告或只列审核规范。
-5. 实验-开发-审核员:`工作说明.md` 必须同时列出实验规范、实验审核规范、编码规范、开发审计规范、`exp-doc/实验审计报告.md`、实验事项账本入口、开发事项账本入口和实验开发工作区;不得把审计入口写成 `dev-doc/开发审计报告.md`。
+5. 实验-开发-审核员:`工作说明.md` 必须同时列出实验规范、实验审计规范、编码规范、开发审计规范、`exp-doc/实验审计报告.md`、实验事项账本入口、开发事项账本入口和实验开发工作区;不得把审计入口写成 `dev-doc/开发审计报告.md`。
 6. 案例分析-开发-审核员:`工作说明.md` 必须同时列出案例分析规范、案例审核规范、编码规范、开发审计规范、`ana-doc/案例审计报告.md`、案例事项账本入口、开发事项账本入口和案例分析开发工作区;不得把审计入口写成 `dev-doc/开发审计报告.md`。
 7. 任一组合审核员:必须列出它要审核的每个体系的“怎么做”文档和“怎么审”文档。如果漏任一体系规范,校验不通过。
 
diff --git "a/common/ana-doc/\346\241\210\344\276\213\345\256\241\346\240\270\350\247\204\350\214\203.md" "b/common/ana-doc/\346\241\210\344\276\213\345\256\241\346\240\270\350\247\204\350\214\203.md"
index 5e94934..c7091d6 100644
--- "a/common/ana-doc/\346\241\210\344\276\213\345\256\241\346\240\270\350\247\204\350\214\203.md"
+++ "b/common/ana-doc/\346\241\210\344\276\213\345\256\241\346\240\270\350\247\204\350\214\203.md"
@@ -128,6 +128,10 @@
 
 审核员可以运行只读检查脚本、打开图片、读取表格、人工计算关键触发点。
 
+审核员可以维护项目本地 `案例审核规范.md`,仅限修正案例审核流程、审计口径和阻断标准;不得借此修改被审的案例分析规范、案例设计、执行日志、结果包或主产物。
+
 审核员不得直接改被审计主产物来掩盖问题。
 
+如确需修改案例分析执行规范,应创建规范维护事项,或额外授予案例体系维护 / 规范维护角色,并记录原因、影响范围和复审入口。
+
 审核员应抓真问题,不把边角料升级成阻断。
diff --git "a/common/codex-bridge/Codex\346\241\245\346\216\245\350\257\264\346\230\216.md" "b/common/codex-bridge/Codex\346\241\245\346\216\245\350\257\264\346\230\216.md"
new file mode 100644
index 0000000..5f99855
--- /dev/null
+++ "b/common/codex-bridge/Codex\346\241\245\346\216\245\350\257\264\346\230\216.md"
@@ -0,0 +1,82 @@
+# Codex 常驻会话桥接说明
+
+创建人员:Codex  
+文件职责:说明如何把管理系统消息发送到常驻 Codex 会话。  
+管理规范/模板:../../全局规范.md;../ai-workplace/AI工作空间创建指南.md。  
+引用文件:agents.example.json;send-codex-message.ps1。  
+记录方式:工具说明文档;桥接协议或使用方式变化时追加更新。
+
+## 1. 目标
+
+本目录用于验证和沉淀一种桥接方式:
+
+```text
+管理系统 / 脚本
+-> Codex app-server WebSocket / JSON-RPC
+-> 指定 thread
+-> 常驻 Codex TUI 或后台会话
+```
+
+目标不是每次调用 `codex exec` 新起一个会话,而是向已经登记的 `thread_id` 发消息。
+
+## 2. 当前前置条件
+
+必须先有一个可连接的 Codex app-server:
+
+```powershell
+codex.cmd app-server --listen ws://127.0.0.1:4567
+```
+
+并且目标观察员窗口应连接到同一个 app-server,或至少目标 `thread_id` 已经在该 app-server 可恢复。
+
+如果 app-server 没有监听,`send-codex-message.ps1` 会 fail-fast,不会假装发送成功。
+
+## 3. Agent 注册表
+
+参考 `agents.example.json` 创建项目自己的注册表,建议放在:
+
+```text
+D:/manage_system/data/codex-bridge/agents.json
+```
+
+关键字段:
+
+| 字段 | 说明 |
+|---|---|
+| `server_url` | Codex app-server WebSocket 地址 |
+| `thread_id` | 目标 Codex thread id;为空时脚本可创建新 thread |
+| `cwd` | 该 agent 默认工作目录 |
+| `model` | 可选;发 turn 时覆盖模型 |
+| `approval_policy` | 可选;默认建议 `never` |
+| `sandbox` | 可选;默认按 thread 原设置 |
+
+## 4. 发送消息
+
+```powershell
+.\send-codex-message.ps1 `
+  -Agent observer `
+  -Message "你按 ag 检查最近实验,有问题全部报给我"
+```
+
+指定注册表:
+
+```powershell
+.\send-codex-message.ps1 `
+  -RegistryPath D:/manage_system/data/codex-bridge/agents.json `
+  -Agent observer `
+  -Message "桥接测试:回复 OK"
+```
+
+如果没有 `thread_id`,允许创建新 thread:
+
+```powershell
+.\send-codex-message.ps1 -Agent observer -Message "初始化观察员" -CreateThreadIfMissing
+```
+
+## 5. 已知限制
+
+1. 本工具依赖 Codex app-server 的实验协议,协议可能随 Codex CLI 版本变化。
+2. 当前脚本只实现 WebSocket JSON-RPC 路径,不使用键盘模拟。
+3. `codex.cmd app-server --listen ws://...` 在部分环境下可能进程存在但端口未监听,遇到这种情况应先解决 app-server 启动问题。
+4. 不建议把消息发到没有队列锁的同一个 thread;同一时间同一 thread 最好只跑一个 turn。
+
diff --git a/common/codex-bridge/agents.example.json b/common/codex-bridge/agents.example.json
new file mode 100644
index 0000000..37e18c8
--- /dev/null
+++ b/common/codex-bridge/agents.example.json
@@ -0,0 +1,11 @@
+{
+  "observer": {
+    "server_url": "ws://127.0.0.1:4567",
+    "thread_id": "",
+    "cwd": "D:/strategy_project/s-system-doc/tianxia-mirror",
+    "model": null,
+    "approval_policy": "never",
+    "sandbox": "danger-full-access"
+  }
+}
+
diff --git a/common/codex-bridge/send-codex-message.ps1 b/common/codex-bridge/send-codex-message.ps1
new file mode 100644
index 0000000..f68c5cc
--- /dev/null
+++ b/common/codex-bridge/send-codex-message.ps1
@@ -0,0 +1,223 @@
+param(
+  [Parameter(Mandatory = $true)]
+  [string]$Agent,
+
+  [Parameter(Mandatory = $true)]
+  [string]$Message,
+
+  [string]$RegistryPath = "D:/manage_system/data/codex-bridge/agents.json",
+
+  [string]$ServerUrl,
+
+  [string]$ThreadId,
+
+  [string]$Cwd,
+
+  [switch]$CreateThreadIfMissing,
+
+  [switch]$NoWait,
+
+  [int]$TimeoutSeconds = 180
+)
+
+Set-StrictMode -Version Latest
+$ErrorActionPreference = "Stop"
+
+function Read-AgentConfig {
+  param([string]$Path, [string]$Name)
+
+  if (!(Test-Path -LiteralPath $Path)) {
+    throw "Agent registry not found: $Path. Copy agents.example.json to this path and fill observer config."
+  }
+
+  $registry = Get-Content -LiteralPath $Path -Encoding UTF8 -Raw | ConvertFrom-Json
+  if (-not ($registry.PSObject.Properties.Name -contains $Name)) {
+    throw "Agent '$Name' not found in registry: $Path"
+  }
+  return $registry.$Name
+}
+
+function New-ClientWebSocket {
+  param([string]$Url)
+
+  $ws = [System.Net.WebSockets.ClientWebSocket]::new()
+  $ct = [Threading.CancellationToken]::None
+  try {
+    $ws.ConnectAsync([Uri]$Url, $ct).GetAwaiter().GetResult()
+  } catch {
+    throw "Failed to connect Codex app-server at $Url. Ensure 'codex.cmd app-server --listen $Url' is running and actually listening. Detail: $($_.Exception.Message)"
+  }
+  return $ws
+}
+
+function Send-JsonRpc {
+  param(
+    [System.Net.WebSockets.ClientWebSocket]$WebSocket,
+    [object]$Payload
+  )
+
+  $json = $Payload | ConvertTo-Json -Depth 100 -Compress
+  $bytes = [Text.Encoding]::UTF8.GetBytes($json)
+  $segment = [ArraySegment[byte]]::new($bytes)
+  $ct = [Threading.CancellationToken]::None
+  $WebSocket.SendAsync($segment, [System.Net.WebSockets.WebSocketMessageType]::Text, $true, $ct).GetAwaiter().GetResult()
+}
+
+function Receive-JsonRpc {
+  param(
+    [System.Net.WebSockets.ClientWebSocket]$WebSocket,
+    [int]$TimeoutSeconds
+  )
+
+  $deadline = [DateTime]::UtcNow.AddSeconds($TimeoutSeconds)
+  $buffer = New-Object byte[] 65536
+  $ms = New-Object System.IO.MemoryStream
+  $ct = [Threading.CancellationToken]::None
+
+  do {
+    if ([DateTime]::UtcNow -gt $deadline) {
+      throw "Timed out waiting for Codex app-server message after $TimeoutSeconds seconds."
+    }
+
+    $segment = [ArraySegment[byte]]::new($buffer)
+    $task = $WebSocket.ReceiveAsync($segment, $ct)
+    if (-not $task.Wait(1000)) {
+      continue
+    }
+    $result = $task.GetAwaiter().GetResult()
+    if ($result.MessageType -eq [System.Net.WebSockets.WebSocketMessageType]::Close) {
+      throw "Codex app-server closed the WebSocket."
+    }
+    if ($result.Count -gt 0) {
+      $ms.Write($buffer, 0, $result.Count)
+    }
+  } until ($result.EndOfMessage)
+
+  $text = [Text.Encoding]::UTF8.GetString($ms.ToArray())
+  return $text | ConvertFrom-Json
+}
+
+function Wait-Response {
+  param(
+    [System.Net.WebSockets.ClientWebSocket]$WebSocket,
+    [int]$Id,
+    [int]$TimeoutSeconds
+  )
+
+  while ($true) {
+    $msg = Receive-JsonRpc -WebSocket $WebSocket -TimeoutSeconds $TimeoutSeconds
+    if (($msg.PSObject.Properties.Name -contains "id") -and [int]$msg.id -eq $Id) {
+      if ($msg.PSObject.Properties.Name -contains "error") {
+        throw "Codex app-server returned error for request $Id`: $($msg.error | ConvertTo-Json -Depth 20 -Compress)"
+      }
+      return $msg.result
+    }
+    Write-Host ($msg | ConvertTo-Json -Depth 20 -Compress)
+  }
+}
+
+function Wait-TurnCompleted {
+  param(
+    [System.Net.WebSockets.ClientWebSocket]$WebSocket,
+    [string]$TurnId,
+    [int]$TimeoutSeconds
+  )
+
+  while ($true) {
+    $msg = Receive-JsonRpc -WebSocket $WebSocket -TimeoutSeconds $TimeoutSeconds
+    Write-Host ($msg | ConvertTo-Json -Depth 30 -Compress)
+    if (($msg.PSObject.Properties.Name -contains "method") -and $msg.method -eq "turn/completed") {
+      if (-not $TurnId) { return $msg.params }
+      if (($msg.params.PSObject.Properties.Name -contains "turn") -and $msg.params.turn.id -eq $TurnId) {
+        return $msg.params
+      }
+    }
+  }
+}
+
+$agentConfig = Read-AgentConfig -Path $RegistryPath -Name $Agent
+
+if (-not $ServerUrl) { $ServerUrl = [string]$agentConfig.server_url }
+if (-not $ThreadId) { $ThreadId = [string]$agentConfig.thread_id }
+if (-not $Cwd) { $Cwd = [string]$agentConfig.cwd }
+
+if (-not $ServerUrl) {
+  throw "server_url is required for agent '$Agent'."
+}
+
+$ws = New-ClientWebSocket -Url $ServerUrl
+try {
+  $nextId = 1
+
+  Send-JsonRpc -WebSocket $ws -Payload @{
+    id = $nextId
+    method = "initialize"
+    params = @{
+      clientInfo = @{
+        name = "codex-bridge"
+        version = "0.1.0"
+      }
+      capabilities = @{
+        experimentalApi = $true
+      }
+    }
+  }
+  [void](Wait-Response -WebSocket $ws -Id $nextId -TimeoutSeconds $TimeoutSeconds)
+  $nextId++
+
+  if (-not $ThreadId) {
+    if (-not $CreateThreadIfMissing) {
+      throw "thread_id is empty for agent '$Agent'. Use -CreateThreadIfMissing to create a new thread, then write the returned thread_id back to $RegistryPath."
+    }
+
+    $threadParams = @{
+      cwd = $Cwd
+      approvalPolicy = $agentConfig.approval_policy
+      sandbox = $agentConfig.sandbox
+      model = $agentConfig.model
+      persistExtendedHistory = $true
+    }
+    Send-JsonRpc -WebSocket $ws -Payload @{ id = $nextId; method = "thread/start"; params = $threadParams }
+    $threadResult = Wait-Response -WebSocket $ws -Id $nextId -TimeoutSeconds $TimeoutSeconds
+    $ThreadId = [string]$threadResult.thread.id
+    Write-Host "CREATED_THREAD_ID=$ThreadId"
+    $nextId++
+  } else {
+    $resumeParams = @{
+      threadId = $ThreadId
+      cwd = $Cwd
+      approvalPolicy = $agentConfig.approval_policy
+      sandbox = $agentConfig.sandbox
+      model = $agentConfig.model
+      excludeTurns = $true
+    }
+    Send-JsonRpc -WebSocket $ws -Payload @{ id = $nextId; method = "thread/resume"; params = $resumeParams }
+    [void](Wait-Response -WebSocket $ws -Id $nextId -TimeoutSeconds $TimeoutSeconds)
+    $nextId++
+  }
+
+  $turnParams = @{
+    threadId = $ThreadId
+    cwd = $Cwd
+    approvalPolicy = $agentConfig.approval_policy
+    sandboxPolicy = $null
+    model = $agentConfig.model
+    input = @(
+      @{
+        type = "text"
+        text = $Message
+      }
+    )
+  }
+  Send-JsonRpc -WebSocket $ws -Payload @{ id = $nextId; method = "turn/start"; params = $turnParams }
+  $turnResult = Wait-Response -WebSocket $ws -Id $nextId -TimeoutSeconds $TimeoutSeconds
+  $turnId = [string]$turnResult.turn.id
+  Write-Host "TURN_ID=$turnId"
+
+  if (-not $NoWait) {
+    [void](Wait-TurnCompleted -WebSocket $ws -TurnId $turnId -TimeoutSeconds $TimeoutSeconds)
+  }
+} finally {
+  if ($ws) { $ws.Dispose() }
+}
+
diff --git "a/common/dev-doc/\345\274\200\345\217\221\345\256\241\350\256\241\350\247\204\350\214\203.md" "b/common/dev-doc/\345\274\200\345\217\221\345\256\241\350\256\241\350\247\204\350\214\203.md"
index 419bb0c..5867f14 100644
--- "a/common/dev-doc/\345\274\200\345\217\221\345\256\241\350\256\241\350\247\204\350\214\203.md"
+++ "b/common/dev-doc/\345\274\200\345\217\221\345\256\241\350\256\241\350\247\204\350\214\203.md"
@@ -29,6 +29,7 @@
 2. 执行证据链上的脚本、测试或检查命令。
 3. 写 `开发审计报告.md`。
 4. 在需要跨轮跟踪时,在 `开发问题记录.md` 建立索引。
+5. 维护项目本地 `开发审计规范.md`,仅限修正开发审核流程、审计口径和阻断标准;不得借此修改被审代码、编码规范或开发事项产物。
 
 开发审核员不得:
 
@@ -36,6 +37,7 @@
 2. 直接改测试代码。
 3. 改写正式产物。
 4. 替开发者修复问题后直接判自己通过。
+5. 以审核员身份直接改 `编码规范.md`、开发事项计划、开发执行日志或被审开发产物;如确需修改,必须另走规范维护事项或授予规范维护角色。
 
 如审核员同时拥有开发角色,应在记录中明确本次是“开发动作”还是“审计动作”。
 
diff --git "a/common/exp-doc/\345\256\236\351\252\214\345\256\241\346\240\270\350\247\204\350\214\203.md" "b/common/exp-doc/\345\256\236\351\252\214\345\256\241\346\240\270\350\247\204\350\214\203.md"
index 4c944ff..f783d76 100644
--- "a/common/exp-doc/\345\256\236\351\252\214\345\256\241\346\240\270\350\247\204\350\214\203.md"
+++ "b/common/exp-doc/\345\256\236\351\252\214\345\256\241\346\240\270\350\247\204\350\214\203.md"
@@ -29,6 +29,8 @@
 
 所有项目的审核员都必须遵守本文件。每个项目创建实验环境时都必须创建项目本地 `exp-doc/实验审计规范.md`。项目本地审计规范默认可以很短,只引用本文件并声明必须遵守;如果补充项目特化规则,不能违反本文件的硬约束。具体审核流程可以按 1A.1 设计本地版本。
 
+实验审核员可以维护项目本地 `exp-doc/实验审计规范.md`,仅限修正实验审核流程、审计口径和阻断标准;不得借此修改被审的 `实验规范.md`、实验总纲、实验设计、执行日志、结果包或主产物。如确需修改实验执行规范,应创建规范维护事项,或额外授予实验体系维护 / 规范维护角色。
+
 项目本地审核规范允许补充:
 
 1. 项目专用审核样本口径。
diff --git "a/common/manage-doc/\347\256\241\347\220\206\344\275\223\347\263\273\350\247\204\350\214\203.md" "b/common/manage-doc/\347\256\241\347\220\206\344\275\223\347\263\273\350\247\204\350\214\203.md"
index f92f967..4cefeed 100644
--- "a/common/manage-doc/\347\256\241\347\220\206\344\275\223\347\263\273\350\247\204\350\214\203.md"
+++ "b/common/manage-doc/\347\256\241\347\220\206\344\275\223\347\263\273\350\247\204\350\214\203.md"
@@ -68,7 +68,8 @@
 
 1. `manage-doc/管理审计报告.md`。
 2. `manage-doc/管理问题记录.md` 中的审计问题索引或观察员反馈。
-3. 自己的 `ai-<name>/` 工作空间。
+3. `manage-doc/管理体系规范.md` 中的审计章节或等价本地管理审核规范,仅限修正管理审核流程、审计口径和阻断标准。
+4. 自己的 `ai-<name>/` 工作空间。
 
 禁止:
 
@@ -76,6 +77,7 @@
 2. 直接改写管理管理员已经记录的执行日志或变更记录来掩盖问题。
 3. 无条件批准管理管理员自己的高风险动作。
 4. 用边角料问题阻断不影响证据链、权限、配置或结果的管理动作。
+5. 以管理观察员身份直接修改被审的管理执行规范、配置、计划、日志或主产物;如确需修改,应创建规范维护事项或由管理管理员授予明确维护角色。
 
 ## 4. 高风险管理动作
 
diff --git "a/common/pro-doc/\351\234\200\346\261\202\345\256\241\346\240\270\350\247\204\350\214\203.md" "b/common/pro-doc/\351\234\200\346\261\202\345\256\241\346\240\270\350\247\204\350\214\203.md"
index 286eda0..943ff03 100644
--- "a/common/pro-doc/\351\234\200\346\261\202\345\256\241\346\240\270\350\247\204\350\214\203.md"
+++ "b/common/pro-doc/\351\234\200\346\261\202\345\256\241\346\240\270\350\247\204\350\214\203.md"
@@ -8,6 +8,8 @@
 
 统一依赖:本规范必须同时遵守 `../../全局规范.md` 和 `../project-doc/项目规范.md`;项目本地需求审核规范可补充流程,但不得违反全局规范、全局项目规范和本体系硬约束。
 
+需求审核员可以维护项目本地 `需求审核规范.md`,仅限修正需求审核流程、审计口径和阻断标准;不得借此修改被审的 `需求规范.md`、需求设计、需求执行日志、需求文档或主产物。如确需修改需求执行规范,应创建规范维护事项,或额外授予需求体系维护 / 规范维护角色。
+
 ## 1. 审核目标
 
 需求审核的目标是判断需求事项是否目标清楚、设计合理、证据链完整、产物可交接。
diff --git "a/common/project-doc/\351\241\271\347\233\256\345\256\241\350\256\241\350\247\204\350\214\203.md" "b/common/project-doc/\351\241\271\347\233\256\345\256\241\350\256\241\350\247\204\350\214\203.md"
index c111fd8..fbbbe2e 100644
--- "a/common/project-doc/\351\241\271\347\233\256\345\256\241\350\256\241\350\247\204\350\214\203.md"
+++ "b/common/project-doc/\351\241\271\347\233\256\345\256\241\350\256\241\350\247\204\350\214\203.md"
@@ -113,6 +113,7 @@
 3. 写入项目事项审计报告。
 4. 在需要跨轮跟踪时写入项目问题记录索引或关联。
 5. 要求项目管理员或执行者补证据、修复或复审。
+6. 维护项目本地 `项目审计规范.md`,仅限修正项目审核流程、审计口径和阻断标准;不得借此修改被审的项目执行规范或项目事项产物。
 
 项目审核员不得:
 
@@ -120,6 +121,7 @@
 2. 用审计辅助脚本冒充项目正式执行产物。
 3. 把与项目目标、计划、证据链无关的措辞或格式问题升级成阻断。
 4. 为了“更完整”无边界增加项目管理流程。
+5. 以审核员身份直接改被审的项目执行规范、配置、计划、日志或主产物;如确需修改,必须另走规范维护事项或由项目管理员授权维护角色。
 
 发现边角料问题时,默认记录为建议;只有会影响项目目标、计划合理性、权限边界、目录结构、证据链或审计结论的问题,才应阻断。
 
diff --git "a/common/project-doc/\351\241\271\347\233\256\351\205\215\347\275\256\346\270\205\345\215\225\346\250\241\347\211\210.md" "b/common/project-doc/\351\241\271\347\233\256\351\205\215\347\275\256\346\270\205\345\215\225\346\250\241\347\211\210.md"
index 623a219..2b8cfdd 100644
--- "a/common/project-doc/\351\241\271\347\233\256\351\205\215\347\275\256\346\270\205\345\215\225\346\250\241\347\211\210.md"
+++ "b/common/project-doc/\351\241\271\347\233\256\351\205\215\347\275\256\346\270\205\345\215\225\346\250\241\347\211\210.md"
@@ -46,7 +46,7 @@
 | 实验员 | exp-doc/;exp-data/ | 实验文档、实验数据、结果包 |
 | 案例分析员 | ana-doc/;ana-data/ | 案例分析文档、案例数据、图片 |
 | 数据负责人 | data-doc/;<数据目录> | 数据字典、数据存储说明、正式数据入口 |
-| 审核员 | 对应审计报告;问题记录仅写跨轮索引 | 不直接改被审计主产物 |
+| 审核员 | 对应审计报告;对应本地审核 / 审计规范仅限审核流程维护;问题记录仅写跨轮索引 | 不直接改被审计主产物;不默认改被审体系执行规范 |
 
 开发审核的审计报告入口按目标体系填写:需求开发、项目工具开发、独立开发事项写 `dev-doc/开发审计报告.md`;实验开发写 `exp-doc/实验审计报告.md`;案例分析开发写 `ana-doc/案例审计报告.md`。
 
diff --git a/data/codex-bridge/agents.json b/data/codex-bridge/agents.json
new file mode 100644
index 0000000..37e18c8
--- /dev/null
+++ b/data/codex-bridge/agents.json
@@ -0,0 +1,11 @@
+{
+  "observer": {
+    "server_url": "ws://127.0.0.1:4567",
+    "thread_id": "",
+    "cwd": "D:/strategy_project/s-system-doc/tianxia-mirror",
+    "model": null,
+    "approval_policy": "never",
+    "sandbox": "danger-full-access"
+  }
+}
+
diff --git "a/~$$\347\256\241\347\220\206\344\275\223\347\263\273\350\257\264\346\230\216.~vsdx" "b/~$$\347\256\241\347\220\206\344\275\223\347\263\273\350\257\264\346\230\216.~vsdx"
deleted file mode 100644
index 15c1fee..0000000
--- "a/~$$\347\256\241\347\220\206\344\275\223\347\263\273\350\257\264\346\230\216.~vsdx"
+++ /dev/null
Binary files differ
diff --git "a/\344\275\223\347\263\273\345\210\233\345\273\272\346\265\201\347\250\213.md" "b/\344\275\223\347\263\273\345\210\233\345\273\272\346\265\201\347\250\213.md"
index 164a56f..1f9b4a4 100644
--- "a/\344\275\223\347\263\273\345\210\233\345\273\272\346\265\201\347\250\213.md"
+++ "b/\344\275\223\347\263\273\345\210\233\345\273\272\346\265\201\347\250\213.md"
@@ -156,6 +156,12 @@
 5. 审计报告写到哪里。
 6. 问题如何闭环。
 
+审核员权限边界必须区分“审核规范维护”和“被审对象修改”:
+
+1. 审核员可以维护自己审核职责对应的本地审核 / 审计规范,用于修正审核流程、审计口径和阻断标准。
+2. 审核员不默认修改被审体系执行规范、事项计划 / 设计、执行日志、结果包或主产物。
+3. 如确需修改执行规范,应创建规范维护事项,或额外授予体系维护员 / 规范维护员角色,并记录原因、影响范围和复审入口。
+
 ### 5.6 写模板
 
 模板开头必须包含:
diff --git "a/\345\205\250\345\261\200\350\247\204\350\214\203.md" "b/\345\205\250\345\261\200\350\247\204\350\214\203.md"
index ff5072f..7895779 100644
--- "a/\345\205\250\345\261\200\350\247\204\350\214\203.md"
+++ "b/\345\205\250\345\261\200\350\247\204\350\214\203.md"
@@ -256,7 +256,7 @@
 3. 开发 AI:按目标体系绑定 `dev/<target>-dev/`、`dev/<target>-dev/test/`、`dev-doc/<target>-doc/` 写权限;不默认拥有所有开发子目录写权限。
 4. 实验员:`exp-doc/`、`exp-data/` 写权限。
 5. 案例分析员:`ana-doc/`、`ana-data/` 写权限。
-6. 审核员:主写对应审计报告;如审计问题需要跨轮跟踪,只在问题记录中写索引或关联,不直接改被审计产物。
+6. 审核员:主写对应审计报告;如审计问题需要跨轮跟踪,只在问题记录中写索引或关联;可维护自己审核职责对应的本地审核 / 审计规范,但不默认改被审计产物或被审体系执行规范。
 
 所有 AI 默认拥有项目内所有文件的读权限。
 
@@ -293,6 +293,7 @@
 3. 写审计报告。
 4. 在需要跨轮跟踪时写问题记录索引或关联。
 5. 要求执行者补证据、修复或重跑。
+6. 维护自己审核职责对应的本地审核 / 审计规范文档,例如 `实验审计规范.md`、`案例审核规范.md`、`开发审计规范.md`、`需求审核规范.md`。该权限只用于审核流程、审计口径和阻断标准维护,不得削弱全局规范、全局项目规范或 common 体系硬约束。
 
 审核员默认不得:
 
@@ -300,8 +301,11 @@
 2. 直接替执行者修改业务主表。
 3. 用自己的补丁掩盖执行问题。
 4. 把边角料问题升级成阻断问题。
+5. 以审核员身份直接修改被审体系执行规范、事项设计 / 计划、执行日志、结果包或正式主产物;例如实验审核员不默认修改 `实验规范.md`,案例审核员不默认修改 `案例分析规范.md`。
 
 如果审核员必须临时修复工具脚本,应明确标记为“审计辅助脚本”,不能冒充执行方正式产物。
+
+如果确实需要修改被审体系执行规范,应创建独立的规范维护事项,或在 `项目配置清单.md` 中额外授予体系维护员 / 规范维护员角色;修改必须记录原因、影响范围、证据路径和复审入口,重大改动应由项目管理员或另一个审核员确认。
 
 ## 7. 项目根目录 `项目规范.md` 规范
 
@@ -599,7 +603,7 @@
 2. 项目体系和开发体系默认随项目创建;其他体系由项目管理员按需启用。
 3. 启用体系后,项目必须遵守 common 规范和本地规范;开发体系在未创建具体目标开发工作区前,先遵守 common/dev-doc 全局开发规范。
 4. 正式文档必须有职责、引用、记录方式和目录入口;非文档产物必须能通过 manifest、索引或日志追溯。
-5. 权限跟角色走,审核员不直接改被审计产物。
+5. 权限跟角色走,审核员可维护对应本地审核 / 审计规范,但不直接改被审计产物或被审体系执行规范。
 6. 开发体系绑定目标体系,代码放 `dev/<target>-dev/`,目标代码文档和方案附件放 `dev-doc/<target>-doc/`;正式开发账本统一放 `dev-doc/` 根目录。
 7. 所有正式事项必须有目标、过程、结果和审计证据链。
 8. 审核抓真问题,不吹毛求疵,不层层加码。
diff --git "a/\347\233\256\345\275\225\345\257\274\350\257\273.md" "b/\347\233\256\345\275\225\345\257\274\350\257\273.md"
index e651d80..059bb03 100644
--- "a/\347\233\256\345\275\225\345\257\274\350\257\273.md"
+++ "b/\347\233\256\345\275\225\345\257\274\350\257\273.md"
@@ -16,6 +16,7 @@
 | `project A/` | 项目 A 工作目录 |
 | `project B/` | 项目 B 工作目录 |
 | `project C/` | 项目 C 工作目录 |
+| `project-wuji/` | wuji 项目目录,已注册 MB-X,启用项目体系、开发根体系和案例分析体系 |
 
 ## 根目录文件
 
diff --git "a/\347\256\241\347\220\206\347\263\273\347\273\237\350\257\264\346\230\216.md" "b/\347\256\241\347\220\206\347\263\273\347\273\237\350\257\264\346\230\216.md"
index 09a6a5b..ba4e567 100644
--- "a/\347\256\241\347\220\206\347\263\273\347\273\237\350\257\264\346\230\216.md"
+++ "b/\347\256\241\347\220\206\347\263\273\347\273\237\350\257\264\346\230\216.md"
@@ -40,10 +40,9 @@
 3. 实验员:绑定路径/exp-doc /exp-data
 4. 案例分析员:绑定路径/ana-doc /ana-data
 5. 项目管理员:绑定路径项目根目录/
-6. 审核员:审核员必须是对应上面的角色之一的审核员,不绑定任何目录,只能写对应的审核体系的审核报告.md。比如说需求审计员那只能写 /pro-doc/需求审计报告.md ,比如需求开发审核员只能写
-/dev-doc/pro-doc/开发审计报告.md
+6. 审核员:审核员必须是对应上面的角色之一的审核员,不绑定业务执行目录,主写对应审核体系的审核 / 审计报告;可维护自己审核职责对应的本地审核 / 审计规范,但不得默认修改被审体系执行规范、事项计划、执行日志、结果包或主产物。比如需求审计员主写 `/pro-doc/需求审计报告.md` 并可维护 `/pro-doc/需求审核规范.md`;需求开发审核员主写对应开发审计报告,并可维护对应开发审计规范。
 7. 管理管理员:绑定路径管理根目录和 manage-doc/,负责创建项目、启用体系、创建角色、创建会话、更新 MB-X、同步技能和修复框架问题;必须写入管理事项、管理执行日志和管理变更记录。
-8. 管理观察员:管理管理员的审核员,只能写 manage-doc/管理审计报告.md、manage-doc/管理问题记录.md 和自己的 AI 工作空间;不得直接修改被审计的管理配置、执行日志和变更记录。
+8. 管理观察员:管理管理员的审核员,主写 `manage-doc/管理审计报告.md`,可在 `manage-doc/管理问题记录.md` 写审计问题索引或观察员反馈,可维护管理体系中的审计口径;不得直接修改被审计的管理配置、执行日志和变更记录。
 
 
 #### AI工作空间管理
@@ -277,7 +276,7 @@
 下面所有的技能都不得违反全局项目规范.md的要求 和 本地项目规范.md的要求
 3. AI工作空间创建 以及 AI角色分配技能; 参考 章节体系管理员必须具备的能力(属于common\ai-workplace\AI工作空间创建指南.md)
 4. 实验技能(包括实验设计,到实验执行); (属于common\exp-doc\实验规范.md 以及 项目本地 exp-doc\实验规范.md 两个共同作用的技能 )
-5. 实验审核技能(包括实验设计审核,以及实验全流程审核);(属于common\exp-doc\实验审核规范.md 以及 项目本地 exp-doc\实验审核规范.md 两个共同作用的技能 )
+5. 实验审核技能(包括实验设计审核,以及实验全流程审核);(属于common\exp-doc\实验审核规范.md 以及 项目本地 exp-doc\实验审计规范.md 两个共同作用的技能 )
 6. 需求文档编写技能(包括需求方案文档,以及需求文档修改和书写);(属于common\pro-doc\需求规范.md 以及 项目本地 pro-doc\需求规范.md 两个共同作用的技能 )
 7. 需求审核技能(包括需求方案文档以及需求文档修的审核);(属于common\pro-doc\需求审核规范.md 以及 项目本地 pro-doc\需求审核规范.md 两个共同作用的技能 )
 8. 写代码技能(包括编码方案设计,到代码书写);(属于common\dev-doc\编码规范.md 以及 项目本地 dev-doc\编码规范.md 两个共同作用的技能 )

--
Gitblit v1.9.3