#!/usr/bin/env bash # FR-RETIRE: 卸载 co-chat 扩展,Cursor 仅保留 pchat(patchNativeOk 可过门禁) set -euo pipefail BACKUP_ROOT="$HOME/.persistent-chat-local/backups/cochat-retire-$(date +%Y%m%d-%H%M%S)" ENHANCE="$HOME/.persistent-chat-local/composer-enhance.json" WS="${PCHAT_WORKSPACE:-/Users/karuo/Documents/个人}" echo "=== pchat retire co-chat ===" gate_ok=false if [[ -f "$ENHANCE" ]]; then read -r permOk patchOk patchNativeOk cursorPrefOk <<< "$(python3 -c " import json s=json.load(open('$ENHANCE')) print(s.get('permOk',False), s.get('patchOk',False), s.get('patchNativeOk',False), s.get('cursorPrefOk',False)) " 2>/dev/null || echo "False False False False")" w8=false [[ "$patchOk" == "True" || "$patchNativeOk" == "True" ]] && w8=true if [[ "$permOk" == "True" && "$cursorPrefOk" == "True" && "$w8" == true ]]; then gate_ok=true else echo "阻断:门禁未过 permOk=$permOk patchOk=$patchOk patchNativeOk=$patchNativeOk cursorPrefOk=$cursorPrefOk" exit 1 fi else echo "警告:无 composer-enhance.json" exit 1 fi mkdir -p "$BACKUP_ROOT" for ext in "$HOME/.cursor/extensions"/co-chat.co-chat-panel-*; do [[ -d "$ext" ]] || continue echo "备份 $ext" cp -R "$ext" "$BACKUP_ROOT/" done GS="$HOME/Library/Application Support/Cursor/User/globalStorage/co-chat.co-chat-panel" if [[ -d "$GS" ]]; then cp -R "$GS" "$BACKUP_ROOT/globalStorage-co-chat" echo "保留 globalStorage(pchat 原生增强仍读写 storage.json)" fi for mcp in "$HOME/.cursor/mcp.json" "$WS/.cursor/mcp.json"; do [[ -f "$mcp" ]] && cp "$mcp" "$BACKUP_ROOT/$(basename "$(dirname "$mcp")")-mcp.json.bak" done # 删除 co-chat 扩展 for ext in "$HOME/.cursor/extensions"/co-chat.co-chat-panel-*; do [[ -d "$ext" ]] || continue echo "删除 $ext" rm -rf "$ext" done # 退役 workspace co-chat.mdc if [[ -f "$WS/开发文档/脚本/pchat_retire_co_rule.sh" ]]; then bash "$WS/开发文档/脚本/pchat_retire_co_rule.sh" "$WS" fi # 用户级 mcp:空(避免与项目级重复) cat > "$HOME/.cursor/mcp.json" << 'EOF' { "mcpServers": {} } EOF # 项目级 mcp:pchat + codegraph 唯一套 cat > "$WS/.cursor/mcp.json" << 'EOF' { "mcpServers": { "persistent-chat": { "type": "stdio", "command": "/Users/karuo/.persistent-chat-local/ensure-hub.sh", "args": ["--workspace=/Users/karuo/Documents/个人"], "env": { "PCHAT_HTTP_PORT": "13458", "PCHAT_NODE": "/usr/local/opt/node@22/bin/node", "PCHAT_WORKSPACE": "/Users/karuo/Documents/个人", "PCHAT_VSIX_4TOOLS": "1", "PCHAT_TOOL_SET": "4" }, "disabled": false, "autoApprove": [ "wait_for_user_input", "init_conversation", "merge_conversation", "select_conversation" ] }, "codegraph": { "type": "stdio", "command": "/Users/karuo/Documents/个人/卡若AI/04_卡火(火)/火种_知识模型/CodeGraph_MCP语义代码图谱/脚本/codegraph_mcp_serve.sh", "args": ["${workspaceFolder}"], "disabled": false, "autoApprove": [ "codegraph_search", "codegraph_callers", "codegraph_callees", "codegraph_impact", "codegraph_node", "codegraph_context", "codegraph_explore", "codegraph_files", "codegraph_status" ] } } } EOF echo "备份: $BACKUP_ROOT" echo "完成:co-chat 扩展已删 · co-chat.mdc 已退役 · MCP 已统一为 pchat" echo "请 Cmd+Q 重启 Cursor"