chore: Cursor 全面替换 co-chat → pchat 配置真源

- cursor-config/ 项目级+用户级 MCP 与 rules 模板
- deploy-cursor-config.sh 一键部署
- retire_cochat.sh 支持 patchNativeOk 并自动卸载扩展
- mcp-config/cursor.mcp.json 同步 ensure-hub 唯一套

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
卡若AI
2026-06-29 17:51:28 +08:00
parent e96960ab52
commit 64c3b23468
8 changed files with 580 additions and 35 deletions

View File

@@ -1,45 +1,114 @@
#!/usr/bin/env bash
# FR-RETIRE: 验收通过后卸载 co-chat,仅保留 pchat
# FR-RETIRE: 卸载 co-chat 扩展Cursor 仅保留 pchatpatchNativeOk 可过门禁)
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
permOk=$(python3 -c "import json; print(json.load(open('$ENHANCE')).get('permOk',False))" 2>/dev/null || echo False)
patchOk=$(python3 -c "import json; print(json.load(open('$ENHANCE')).get('patchOk',False))" 2>/dev/null || echo False)
if [[ "$permOk" != "True" || "$patchOk" != "True" ]]; then
echo "阻断composer-enhance.json 未全绿 (permOk=$permOk patchOk=$patchOk)"
echo "请先完成 Hub 向导 W2/W8"
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,继续需自担风险"
read -r -p "输入 YES 继续: " ans
[[ "$ans" == "YES" ]] || exit 1
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
# 备份 globalStorage
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 "保留 globalStoragepchat 原生增强仍读写 storage.json"
fi
# 备份 mcp.json
MCP="$HOME/.cursor/mcp.json"
[[ -f "$MCP" ]] && cp "$MCP" "$BACKUP_ROOT/mcp.json.bak"
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
echo "备份完成: $BACKUP_ROOT"
echo "下一步:手动删除扩展目录、清理 mcp.json 中 co-mcp、删除 co-chat.mdc"
echo "回滚:从 $BACKUP_ROOT 恢复"
# 删除 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
# 项目级 mcppchat + 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"