[{"data":1,"prerenderedAt":1296},["ShallowReactive",2],{"navigation_docs_zh":3,"docs_zh_-zh-docs-features-castrel-proxy":280,"docs_zh_-zh-docs-features-castrel-proxy_surround":1291},[4,18,51,254,267],{"title":5,"icon":6,"path":7,"stem":8,"children":9,"page":6},"入门",false,"/zh/docs/getting-started","zh/docs/1.getting-started",[10,14],{"title":11,"path":12,"stem":13},"简介","/zh/docs/getting-started/introduction","zh/docs/1.getting-started/1.introduction",{"title":15,"path":16,"stem":17},"快速开始","/zh/docs/getting-started/quick-start","zh/docs/1.getting-started/2.quick-start",{"title":19,"icon":6,"path":20,"stem":21,"children":22,"page":6},"功能","/zh/docs/features","zh/docs/2.features",[23,27,31,35,39,43,47],{"title":24,"path":25,"stem":26},"告警分诊","/zh/docs/features/alert-triage","zh/docs/2.features/2.alert-triage",{"title":28,"path":29,"stem":30},"事故调查","/zh/docs/features/incident-investigation","zh/docs/2.features/3.incident-investigation",{"title":32,"path":33,"stem":34},"部署验证","/zh/docs/features/deployment-verification","zh/docs/2.features/4.deployment-verification",{"title":36,"path":37,"stem":38},"数据探索","/zh/docs/features/data-exploration","zh/docs/2.features/5.data-exploration",{"title":40,"path":41,"stem":42},"知识库","/zh/docs/features/knowledges","zh/docs/2.features/6.knowledges",{"title":44,"path":45,"stem":46},"Castrel Proxy","/zh/docs/features/castrel-proxy","zh/docs/2.features/7.castrel-proxy",{"title":48,"path":49,"stem":50},"自动化","/zh/docs/features/automations","zh/docs/2.features/8.automations",{"title":52,"icon":6,"path":53,"stem":54,"children":55},"集成","/zh/docs/integrations","zh/docs/3.integrations/index",[56,57,62,67,72,77,81,85,89,94,99,104,109,113,117,122,127,131,136,141,146,151,156,160,165,170,174,178,183,188,193,198,203,208,212,216,220,224,229,234,239,244,249],{"title":52,"path":53,"stem":54},{"title":58,"path":59,"stem":60,"icon":61},"Prometheus","/zh/docs/integrations/prometheus","zh/docs/3.integrations/1.prometheus","i-simple-icons-prometheus",{"title":63,"path":64,"stem":65,"icon":66},"AWS","/zh/docs/integrations/aws","zh/docs/3.integrations/10.aws","i-simple-icons-amazonwebservices",{"title":68,"path":69,"stem":70,"icon":71},"阿里云（Aliyun）","/zh/docs/integrations/aliyun","zh/docs/3.integrations/12.aliyun","i-simple-icons-alibabacloud",{"title":73,"path":74,"stem":75,"icon":76},"腾讯云（Tencent Cloud）","/zh/docs/integrations/tencent-cloud","zh/docs/3.integrations/13.tencent-cloud","i-lucide-plug",{"title":78,"path":79,"stem":80,"icon":76},"华为云（Huawei Cloud）","/zh/docs/integrations/huaweicloud","zh/docs/3.integrations/14.huaweicloud",{"title":82,"path":83,"stem":84,"icon":76},"火山引擎（Volcengine）","/zh/docs/integrations/volcengine","zh/docs/3.integrations/15.volcengine",{"title":86,"path":87,"stem":88,"icon":76},"轻帆云（QingFanYun）","/zh/docs/integrations/qingfanyun","zh/docs/3.integrations/16.qingfanyun",{"title":90,"path":91,"stem":92,"icon":93},"Grafana","/zh/docs/integrations/grafana","zh/docs/3.integrations/17.grafana","i-simple-icons-grafana",{"title":95,"path":96,"stem":97,"icon":98},"VictoriaMetrics","/zh/docs/integrations/victoriametrics","zh/docs/3.integrations/18.victoriametrics","i-simple-icons-victoriametrics",{"title":100,"path":101,"stem":102,"icon":103},"New Relic","/zh/docs/integrations/new-relic","zh/docs/3.integrations/19.new-relic","i-simple-icons-newrelic",{"title":105,"path":106,"stem":107,"icon":108},"Elasticsearch","/zh/docs/integrations/elasticsearch","zh/docs/3.integrations/2.elasticsearch","i-simple-icons-elasticsearch",{"title":110,"path":111,"stem":112,"icon":76},"Zabbix","/zh/docs/integrations/zabbix","zh/docs/3.integrations/20.zabbix",{"title":114,"path":115,"stem":116,"icon":76},"监控宝（JianKongBao）","/zh/docs/integrations/jiankongbao","zh/docs/3.integrations/21.jiankongbao",{"title":118,"path":119,"stem":120,"icon":121},"PagerDuty","/zh/docs/integrations/pagerduty","zh/docs/3.integrations/22.pagerduty","i-simple-icons-pagerduty",{"title":123,"path":124,"stem":125,"icon":126},"Sentry","/zh/docs/integrations/sentry","zh/docs/3.integrations/23.sentry","i-simple-icons-sentry",{"title":128,"path":129,"stem":130,"icon":76},"Freshworks / Freshservice","/zh/docs/integrations/freshworks","zh/docs/3.integrations/24.freshworks",{"title":132,"path":133,"stem":134,"icon":135},"Linear","/zh/docs/integrations/linear","zh/docs/3.integrations/25.linear","i-simple-icons-linear",{"title":137,"path":138,"stem":139,"icon":140},"ClickHouse","/zh/docs/integrations/clickhouse","zh/docs/3.integrations/26.clickhouse","i-simple-icons-clickhouse",{"title":142,"path":143,"stem":144,"icon":145},"Kubernetes","/zh/docs/integrations/kubernetes","zh/docs/3.integrations/27.kubernetes","i-simple-icons-kubernetes",{"title":147,"path":148,"stem":149,"icon":150},"Terraform Cloud / HCP Terraform","/zh/docs/integrations/terraform","zh/docs/3.integrations/28.terraform","i-simple-icons-terraform",{"title":152,"path":153,"stem":154,"icon":155},"Jenkins","/zh/docs/integrations/jenkins","zh/docs/3.integrations/29.jenkins","i-simple-icons-jenkins",{"title":157,"path":158,"stem":159,"icon":93},"Grafana Loki","/zh/docs/integrations/grafana-loki","zh/docs/3.integrations/3.grafana-loki",{"title":161,"path":162,"stem":163,"icon":164},"Ansible / AWX","/zh/docs/integrations/ansible","zh/docs/3.integrations/30.ansible","i-simple-icons-ansible",{"title":166,"path":167,"stem":168,"icon":169},"GitLab","/zh/docs/integrations/gitlab","zh/docs/3.integrations/31.gitlab","i-simple-icons-gitlab",{"title":171,"path":172,"stem":173,"icon":76},"钉钉（DingTalk）","/zh/docs/integrations/dingtalk","zh/docs/3.integrations/32.dingtalk",{"title":175,"path":176,"stem":177,"icon":76},"飞书（Feishu / Lark）","/zh/docs/integrations/feishu","zh/docs/3.integrations/33.feishu",{"title":179,"path":180,"stem":181,"icon":182},"Telegram","/zh/docs/integrations/telegram","zh/docs/3.integrations/34.telegram","i-simple-icons-telegram",{"title":184,"path":185,"stem":186,"icon":187},"Email","/zh/docs/integrations/email","zh/docs/3.integrations/35.email","i-simple-icons-gmail",{"title":189,"path":190,"stem":191,"icon":192},"微信企业机器人（Weixin Clawbot）","/zh/docs/integrations/weixin-clawbot","zh/docs/3.integrations/36.weixin-clawbot","i-simple-icons-wechat",{"title":194,"path":195,"stem":196,"icon":197},"Notion","/zh/docs/integrations/notion","zh/docs/3.integrations/37.notion","i-simple-icons-notion",{"title":199,"path":200,"stem":201,"icon":202},"Confluence","/zh/docs/integrations/confluence","zh/docs/3.integrations/38.confluence","i-simple-icons-confluence",{"title":204,"path":205,"stem":206,"icon":207},"Google Docs","/zh/docs/integrations/google-docs","zh/docs/3.integrations/39.google-docs","i-simple-icons-googledocs",{"title":209,"path":210,"stem":211,"icon":93},"Grafana Tempo","/zh/docs/integrations/grafana-tempo","zh/docs/3.integrations/4.grafana-tempo",{"title":213,"path":214,"stem":215,"icon":76},"钉钉文档（DingTalk Docs）","/zh/docs/integrations/dingtalk-docs","zh/docs/3.integrations/40.dingtalk-docs",{"title":217,"path":218,"stem":219,"icon":76},"LDAP","/zh/docs/integrations/ldap","zh/docs/3.integrations/41.ldap",{"title":221,"path":222,"stem":223,"icon":76},"Dify","/zh/docs/integrations/dify","zh/docs/3.integrations/42.dify",{"title":225,"path":226,"stem":227,"icon":228},"自定义 MCP（Custom MCP）","/zh/docs/integrations/custom-mcp","zh/docs/3.integrations/43.custom-mcp","i-simple-icons-anthropic",{"title":230,"path":231,"stem":232,"icon":233},"GitHub","/zh/docs/integrations/github","zh/docs/3.integrations/5.github","i-simple-icons-github",{"title":235,"path":236,"stem":237,"icon":238},"Slack","/zh/docs/integrations/slack","zh/docs/3.integrations/6.slack","i-simple-icons-slack",{"title":240,"path":241,"stem":242,"icon":243},"Vercel","/zh/docs/integrations/vercel","zh/docs/3.integrations/7.vercel","i-simple-icons-vercel",{"title":245,"path":246,"stem":247,"icon":248},"Graylog","/zh/docs/integrations/graylog","zh/docs/3.integrations/8.graylog","i-simple-icons-graylog",{"title":250,"path":251,"stem":252,"icon":253},"Datadog","/zh/docs/integrations/datadog","zh/docs/3.integrations/9.datadog","i-simple-icons-datadog",{"title":255,"path":256,"stem":257,"children":258,"page":6},"更多","/zh/docs/more","zh/docs/4.more",[259,263],{"title":260,"path":261,"stem":262},"路线图","/zh/docs/more/roadmap","zh/docs/4.more/1.roadmap",{"title":264,"path":265,"stem":266},"支持","/zh/docs/more/support","zh/docs/4.more/2.support",{"title":268,"path":269,"stem":270,"children":271,"page":6},"安全","/zh/docs/security","zh/docs/5.security",[272,276],{"title":273,"path":274,"stem":275},"隐私政策","/zh/docs/security/privacy-policy","zh/docs/5.security/1.privacy-policy",{"title":277,"path":278,"stem":279},"服务条款","/zh/docs/security/terms-of-service","zh/docs/5.security/2.terms-of-service",{"id":281,"title":44,"body":282,"description":1285,"extension":1286,"links":1287,"meta":1288,"navigation":593,"path":45,"seo":1289,"stem":46,"__hash__":1290},"docs_zh/zh/docs/2.features/7.castrel-proxy.md",{"type":283,"value":284,"toc":1265},"minimark",[285,294,309,312,346,350,353,358,360,366,399,414,421,424,454,463,466,474,477,494,501,507,513,519,554,565,571,612,617,646,651,670,683,691,717,728,734,753,756,763,864,868,876,895,898,929,936,943,947,950,971,974,1007,1011,1017,1036,1039,1073,1077,1083,1094,1098,1105,1109,1134,1137,1141,1144,1148,1160,1164,1167,1178,1182,1185,1261],[286,287,288,289,293],"p",{},"Castrel Proxy 是一个轻量级的 ",[290,291,292],"strong",{},"本地 Bridge 客户端","。它会通过 WebSocket 连接到远端 Castrel Bridge Server，接收来自服务器的指令，在你的机器上执行它们，再把结果返回给服务器。",[295,296,298,301,302],"callout",{"color":297,"icon":233},"gray",[290,299,300],{},"开源","：Castrel Proxy 完全开源。你可以在 GitHub 上查看代码、提交问题或参与贡献：",[303,304,308],"a",{"href":305,"rel":306},"https://github.com/castrel-ai/castrel-proxy",[307],"nofollow","castrel-ai/open-castrel-proxy",[286,310,311],{},"它提供五项核心能力：",[313,314,315,322,328,334,340],"ul",{},[316,317,318,321],"li",{},[290,319,320],{},"命令执行","：运行 shell 命令（受工作区策略与本地白名单共同约束）",[316,323,324,327],{},[290,325,326],{},"文档操作","：读取 / 写入 / 编辑文件（带路径和大小约束）",[316,329,330,333],{},[290,331,332],{},"MCP 集成","：连接本地配置好的 MCP 服务，并把可用工具同步到服务器",[316,335,336,339],{},[290,337,338],{},"HTTP 代理访问","：通过 Proxy 转发对内网 HTTP 端点的请求",[316,341,342,345],{},[290,343,344],{},"交互式终端会话","：支持长时命令会话与增量输出",[347,348,349],"h2",{"id":349},"工作原理",[286,351,352],{},"Castrel Proxy 会先与服务器配对，保持长连接，在本地执行任务并返回结果。如果你配置了 MCP，它还可以在需要时调用本地 MCP 工具。",[354,355],"mermaid",{":config":356,"code":357},"config","sequenceDiagram%0A%20%20participant%20P%20as%20castrel-proxy%EF%BC%88%E6%9C%AC%E5%9C%B0%EF%BC%89%0A%20%20participant%20S%20as%20Bridge%20Server%0A%20%20participant%20M%20as%20MCP%20servers%EF%BC%88%E6%9C%AC%E5%9C%B0%EF%BC%89%0A%0A%20%20Note%20over%20P%2CS%3A%20%E5%85%88%E5%AE%8C%E6%88%90%E4%B8%80%E6%AC%A1%E9%85%8D%E5%AF%B9%EF%BC%8C%E7%84%B6%E5%90%8E%E4%BF%9D%E6%8C%81%E8%BF%9E%E6%8E%A5%0A%20%20P-%3E%3ES%3A%20Pair%0A%20%20S--%3E%3EP%3A%20Paired%0A%20%20P-%3E%3ES%3A%20Connect%0A%20%20S--%3E%3EP%3A%20Send%20tasks%0A%20%20P--%3E%3ES%3A%20Return%20results%0A%0A%20%20Note%20over%20P%2CM%3A%20%E5%8F%AF%E9%80%89%EF%BC%88%E9%85%8D%E7%BD%AE%20MCP%20%E6%97%B6%E5%90%AF%E7%94%A8%EF%BC%89%0A%20%20P-%3E%3EM%3A%20Call%20local%20tool%0A%20%20M--%3E%3EP%3A%20Tool%20result",[347,359,15],{"id":15},[361,362,363],"ol",{},[316,364,365],{},"安装（推荐）",[367,368,373],"pre",{"className":369,"code":370,"language":371,"meta":372,"style":372},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","curl -fsSL https://castrel.ai/castrel-proxy/install.sh | bash\n","bash","",[374,375,376],"code",{"__ignoreMap":372},[377,378,381,385,389,392,396],"span",{"class":379,"line":380},"line",1,[377,382,384],{"class":383},"sBMFI","curl",[377,386,388],{"class":387},"sfazB"," -fsSL",[377,390,391],{"class":387}," https://castrel.ai/castrel-proxy/install.sh",[377,393,395],{"class":394},"sMK4o"," |",[377,397,398],{"class":383}," bash\n",[286,400,401,402,405,406,409,410,413],{},"安装脚本会从 ",[374,403,404],{},"/castrel-proxy/packages/*"," 下载对应平台二进制，校验 ",[374,407,408],{},".sha256"," 后安装 ",[374,411,412],{},"castrel-proxy","。",[286,415,416,417,420],{},"默认会安装到用户级目录 ",[374,418,419],{},"~/.local/bin","（不需要 sudo）。",[286,422,423],{},"如果你要安装到自定义目录：",[367,425,427],{"className":369,"code":426,"language":371,"meta":372,"style":372},"curl -fsSL https://castrel.ai/castrel-proxy/install.sh | bash -s -- --install-dir ~/bin\n",[374,428,429],{"__ignoreMap":372},[377,430,431,433,435,437,439,442,445,448,451],{"class":379,"line":380},[377,432,384],{"class":383},[377,434,388],{"class":387},[377,436,391],{"class":387},[377,438,395],{"class":394},[377,440,441],{"class":383}," bash",[377,443,444],{"class":387}," -s",[377,446,447],{"class":387}," --",[377,449,450],{"class":387}," --install-dir",[377,452,453],{"class":387}," ~/bin\n",[286,455,456,457,460,461,413],{},"如果在交互式终端里且未传 ",[374,458,459],{},"--install-dir","，安装脚本会提示你直接填写安装目录；留空则使用默认目录 ",[374,462,419],{},[286,464,465],{},"可用参数：",[367,467,472],{"className":468,"code":470,"language":471,"meta":372},[469],"language-text","--install-dir \u003Cpath>   指定安装目录\n","text",[374,473,470],{"__ignoreMap":372},[286,475,476],{},"也支持环境变量：",[367,478,480],{"className":369,"code":479,"language":371,"meta":372,"style":372},"CASTREL_INSTALL_DIR=~/.local/bin\n",[374,481,482],{"__ignoreMap":372},[377,483,484,488,491],{"class":379,"line":380},[377,485,487],{"class":486},"sTEyZ","CASTREL_INSTALL_DIR",[377,489,490],{"class":394},"=",[377,492,493],{"class":387},"~/.local/bin\n",[286,495,496,497,500],{},"如果安装目录不在 ",[374,498,499],{},"$PATH"," 中，脚本会输出可直接添加到 shell 配置文件的命令。",[286,502,503,504,506],{},"当你使用 ",[374,505,459],{}," 时，脚本也会检查 PATH，并给出明确提示，确保新终端能直接找到该命令。",[286,508,509,510,413],{},"要求 ",[374,511,512],{},"Python >= 3.10",[361,514,516],{"start":515},2,[316,517,518],{},"配对",[367,520,522],{"className":369,"code":521,"language":371,"meta":372,"style":372},"castrel-proxy pair \u003Cverification_code> \u003Cserver_url>\n",[374,523,524],{"__ignoreMap":372},[377,525,526,528,531,534,537,540,543,545,548,551],{"class":379,"line":380},[377,527,412],{"class":383},[377,529,530],{"class":387}," pair",[377,532,533],{"class":394}," \u003C",[377,535,536],{"class":387},"verification_cod",[377,538,539],{"class":486},"e",[377,541,542],{"class":394},">",[377,544,533],{"class":394},[377,546,547],{"class":387},"server_ur",[377,549,550],{"class":486},"l",[377,552,553],{"class":394},">\n",[286,555,556,557,560,561,564],{},"配对后会保存 ",[374,558,559],{},"~/.castrel/config.yaml","，并尝试读取 ",[374,562,563],{},"~/.castrel/mcp.json"," 同步 MCP 能力（未配置则跳过）。",[361,566,568],{"start":567},3,[316,569,570],{},"启动",[367,572,574],{"className":369,"code":573,"language":371,"meta":372,"style":372},"# 前台模式（默认）\ncastrel-proxy start\n\n# 后台守护进程模式（Unix/macOS）\ncastrel-proxy start --daemon\n",[374,575,576,582,589,595,601],{"__ignoreMap":372},[377,577,578],{"class":379,"line":380},[377,579,581],{"class":580},"sHwdD","# 前台模式（默认）\n",[377,583,584,586],{"class":379,"line":515},[377,585,412],{"class":383},[377,587,588],{"class":387}," start\n",[377,590,591],{"class":379,"line":567},[377,592,594],{"emptyLinePlaceholder":593},true,"\n",[377,596,598],{"class":379,"line":597},4,[377,599,600],{"class":580},"# 后台守护进程模式（Unix/macOS）\n",[377,602,604,606,609],{"class":379,"line":603},5,[377,605,412],{"class":383},[377,607,608],{"class":387}," start",[377,610,611],{"class":387}," --daemon\n",[361,613,614],{"start":597},[316,615,616],{},"检查状态与日志",[367,618,620],{"className":369,"code":619,"language":371,"meta":372,"style":372},"castrel-proxy status\ncastrel-proxy logs\ncastrel-proxy logs -f\n",[374,621,622,629,636],{"__ignoreMap":372},[377,623,624,626],{"class":379,"line":380},[377,625,412],{"class":383},[377,627,628],{"class":387}," status\n",[377,630,631,633],{"class":379,"line":515},[377,632,412],{"class":383},[377,634,635],{"class":387}," logs\n",[377,637,638,640,643],{"class":379,"line":567},[377,639,412],{"class":383},[377,641,642],{"class":387}," logs",[377,644,645],{"class":387}," -f\n",[361,647,648],{"start":603},[316,649,650],{},"通过 Proxy 代理内网 Connector（例如内网 Prometheus）",[313,652,653,660,663],{},[316,654,655,656,659],{},"在 Castrel 中配置对应 Connector（目标地址是内网地址，如 ",[374,657,658],{},"http://prometheus.internal:9090","）",[316,661,662],{},"把该 Connector 绑定到已配对的 Bridge Node（Proxy 节点）",[316,664,665,666,669],{},"在会话里使用该 Connector 查询时，请求会通过 Proxy 的 ",[374,667,668],{},"http_proxy_call"," 在节点本地转发到内网端点",[361,671,673],{"start":672},6,[316,674,675,676,679,680,659],{},"通过 Connector/Bridge Node 执行本地命令（例如 ",[374,677,678],{},"free"," / ",[374,681,682],{},"top",[313,684,685,688],{},[316,686,687],{},"在会话中选择对应节点后，直接让 AI 执行本机命令",[316,689,690],{},"推荐用非交互形式，例如：",[367,692,694],{"className":369,"code":693,"language":371,"meta":372,"style":372},"free -h\ntop -b -n 1\n",[374,695,696,703],{"__ignoreMap":372},[377,697,698,700],{"class":379,"line":380},[377,699,678],{"class":383},[377,701,702],{"class":387}," -h\n",[377,704,705,707,710,713],{"class":379,"line":515},[377,706,682],{"class":383},[377,708,709],{"class":387}," -b",[377,711,712],{"class":387}," -n",[377,714,716],{"class":715},"sbssI"," 1\n",[286,718,719,720,723,724,727],{},"这类请求会走 ",[374,721,722],{},"local_tool_call","，并以单个 ",[374,725,726],{},"command_line"," 字符串在节点本地执行。",[361,729,731],{"start":730},7,[316,732,733],{},"停止 / 解除配对",[367,735,737],{"className":369,"code":736,"language":371,"meta":372,"style":372},"castrel-proxy stop\ncastrel-proxy unpair\n",[374,738,739,746],{"__ignoreMap":372},[377,740,741,743],{"class":379,"line":380},[377,742,412],{"class":383},[377,744,745],{"class":387}," stop\n",[377,747,748,750],{"class":379,"line":515},[377,749,412],{"class":383},[377,751,752],{"class":387}," unpair\n",[347,754,755],{"id":755},"配置与文件位置",[286,757,758,759,762],{},"默认情况下，Castrel Proxy 使用 ",[374,760,761],{},"~/.castrel/","：",[313,764,765,804,824,831,851],{},[316,766,767,762,770,772],{},[290,768,769],{},"Bridge 配置",[374,771,559],{},[313,773,774,780,786,792,798],{},[316,775,776,779],{},[374,777,778],{},"server_url","：服务器地址",[316,781,782,785],{},[374,783,784],{},"verification_code","：配对码",[316,787,788,791],{},[374,789,790],{},"client_id","：由主机名 + MAC 推导出的稳定 ID（16 位十六进制）",[316,793,794,797],{},[374,795,796],{},"workspace_id","：从 verification code 中提取出的工作区 ID",[316,799,800,803],{},[374,801,802],{},"paired_at","：配对时间",[316,805,806,762,809,812],{},[290,807,808],{},"命令白名单",[374,810,811],{},"~/.castrel/whitelist.conf",[313,813,814],{},[316,815,816,817,820,821,659],{},"每行一个允许执行的基础命令（例如 ",[374,818,819],{},"git","、",[374,822,823],{},"kubectl",[316,825,826,762,829],{},[290,827,828],{},"MCP 配置（可选）",[374,830,563],{},[316,832,833,836,837],{},[290,834,835],{},"守护进程文件","（后台模式）：\n",[313,838,839,845],{},[316,840,841,842],{},"PID：",[374,843,844],{},"~/.castrel/castrel-proxy.pid",[316,846,847,848],{},"日志：",[374,849,850],{},"~/.castrel/castrel-proxy.log",[316,852,853,856,857],{},[290,854,855],{},"按会话分隔的日志","（服务器下发任务时写入）：\n",[313,858,859],{},[316,860,861],{},[374,862,863],{},"~/.castrel/\u003Csession_id>/terminal.log",[347,865,867],{"id":866},"核心能力当前实现","核心能力（当前实现）",[869,870,872,873,875],"h3",{"id":871},"_1命令执行command_line-策略校验","1）命令执行（",[374,874,726],{}," + 策略校验）",[286,877,878,879,881,882,884,885,820,888,820,891,894],{},"当服务器下发 ",[374,880,722],{}," 时，Castrel Proxy 会在本地执行单个 ",[374,883,726],{}," 字符串，并返回 ",[374,886,887],{},"stdout",[374,889,890],{},"stderr",[374,892,893],{},"exit_code"," 和耗时信息。",[286,896,897],{},"安全校验顺序如下（采用产品中的策略文案）：",[313,899,900,909,918],{},[316,901,902,908],{},[290,903,904,905,659],{},"全部拒绝（",[374,906,907],{},"deny_all","：拒绝所有 Bash 命令执行",[316,910,911,917],{},[290,912,913,914,659],{},"使用白名单（",[374,915,916],{},"allowlist","：只允许运行策略里允许的命令",[316,919,920,926,927],{},[290,921,922,923,659],{},"透传（",[374,924,925],{},"passthrough","：使用节点本地 ",[374,928,811],{},[286,930,931,932,935],{},"如果服务端未下发策略，默认按 ",[290,933,934],{},"透传"," 处理。",[286,937,938,939,942],{},"复合命令（如 ",[374,940,941],{},"ls && cat file | grep foo","）会被拆解后逐条校验。",[869,944,946],{"id":945},"_2文档操作读-写-编辑","2）文档操作（读 / 写 / 编辑）",[286,948,949],{},"Castrel Proxy 支持：",[313,951,952,955,958],{},[316,953,954],{},"读取文件",[316,956,957],{},"以覆盖方式写入文件",[316,959,960,961,679,964,679,967,970],{},"使用 ",[374,962,963],{},"replace",[374,965,966],{},"append",[374,968,969],{},"prepend"," 编辑文件",[286,972,973],{},"约束如下：",[313,975,976,981,986,992],{},[316,977,978],{},[290,979,980],{},"路径必须是绝对路径",[316,982,983],{},[290,984,985],{},"读取大小上限为 10MB",[316,987,988,991],{},[290,989,990],{},"以你的系统权限运行","（不会做提权）",[316,993,994,997,998,679,1001,679,1004,659],{},[290,995,996],{},"可被工作区策略关闭","（",[374,999,1000],{},"read_enabled",[374,1002,1003],{},"write_enabled",[374,1005,1006],{},"edit_enabled",[869,1008,1010],{"id":1009},"_3mcpmodel-context-protocol集成","3）MCP（Model Context Protocol）集成",[286,1012,1013,1014,1016],{},"如果你希望把本地 MCP 工具暴露给服务器，可以配置 ",[374,1015,563],{},"，然后使用：",[367,1018,1020],{"className":369,"code":1019,"language":371,"meta":372,"style":372},"castrel-proxy mcp-list\ncastrel-proxy mcp-sync\n",[374,1021,1022,1029],{"__ignoreMap":372},[377,1023,1024,1026],{"class":379,"line":380},[377,1025,412],{"class":383},[377,1027,1028],{"class":387}," mcp-list\n",[377,1030,1031,1033],{"class":379,"line":515},[377,1032,412],{"class":383},[377,1034,1035],{"class":387}," mcp-sync\n",[286,1037,1038],{},"当前支持的传输方式包括：",[313,1040,1041,1058,1066],{},[316,1042,1043,1046,1047,1050,1051,1054,1055,659],{},[374,1044,1045],{},"stdio","（需要 ",[374,1048,1049],{},"command"," + ",[374,1052,1053],{},"args","，可选 ",[374,1056,1057],{},"env",[316,1059,1060,1046,1063,659],{},[374,1061,1062],{},"http",[374,1064,1065],{},"url",[316,1067,1068,1046,1071,659],{},[374,1069,1070],{},"sse",[374,1072,1065],{},[869,1074,1076],{"id":1075},"_4http-代理内网访问","4）HTTP 代理内网访问",[286,1078,1079,1080,1082],{},"Castrel Proxy 支持处理服务端下发的 ",[374,1081,668],{},"，并把目标端点的状态码与响应体回传给 Castrel。这个能力主要用于访问内网可观测性端点（例如内网 Prometheus），而无需对公网暴露。",[286,1084,1085,1086,1089,1090,1093],{},"HTTP 转发同样受工作区策略控制（",[374,1087,1088],{},"http.enabled","，以及可选的 ",[374,1091,1092],{},"http.allow_hosts","）。",[869,1095,1097],{"id":1096},"_5交互式本地执行","5）交互式本地执行",[286,1099,1100,1101,1104],{},"Castrel Proxy 支持 ",[374,1102,1103],{},"local_interactive_call"," 的 start/write/read/stop 模式，适用于需要持续交互的命令执行场景。",[347,1106,1108],{"id":1107},"什么时候适合使用-castrel-proxy","什么时候适合使用 Castrel Proxy",[313,1110,1111,1114,1125,1128,1131],{},[316,1112,1113],{},"你的 Connector 在内网，SaaS 侧无法直接访问（通过 Proxy 转发内网 HTTP 请求）",[316,1115,1116,1117,820,1120,820,1123,659],{},"你希望在调查时直接执行节点本地命令（例如 ",[374,1118,1119],{},"free -h",[374,1121,1122],{},"top -b -n 1",[374,1124,823],{},[316,1126,1127],{},"你需要让 AI 读取/写入/编辑本地文件来辅助排障",[316,1129,1130],{},"你要把本地 MCP 工具能力同步给 Castrel 使用",[316,1132,1133],{},"你需要基于策略做精细化控制（全部拒绝 / 使用白名单 / 透传）",[347,1135,1136],{"id":1136},"常见问题",[869,1138,1140],{"id":1139},"castrel-proxy-会在我的机器上开放入站端口吗","Castrel Proxy 会在我的机器上开放入站端口吗？",[286,1142,1143],{},"不会。它只会主动向服务器建立一条出站 WebSocket 连接，不需要任何入站端口。",[869,1145,1147],{"id":1146},"如何允许额外的命令","如何允许额外的命令？",[286,1149,1150,1151,1153,1154,1157,1158,413],{},"把基础命令名写入 ",[374,1152,811],{},"（每行一个）。例如要允许 ",[374,1155,1156],{},"kubectl get pods","，只需要加入 ",[374,1159,823],{},[869,1161,1163],{"id":1162},"为什么读取文件失败","为什么读取文件失败？",[286,1165,1166],{},"常见原因包括：",[313,1168,1169,1172,1175],{},[316,1170,1171],{},"路径不是绝对路径",[316,1173,1174],{},"文件超过 10MB",[316,1176,1177],{},"你的用户没有读取权限",[869,1179,1181],{"id":1180},"如何卸载","如何卸载？",[286,1183,1184],{},"先停止代理，再卸载，并删除本地配置和日志：",[1186,1187,1188,1230],"code-group",{},[367,1189,1192],{"className":369,"code":1190,"filename":1191,"language":371,"meta":372,"style":372},"castrel-proxy stop\nrm -f \"$(command -v castrel-proxy)\"\nrm -rf ~/.castrel\n","Script",[374,1193,1194,1200,1220],{"__ignoreMap":372},[377,1195,1196,1198],{"class":379,"line":380},[377,1197,412],{"class":383},[377,1199,745],{"class":387},[377,1201,1202,1205,1208,1211,1214,1217],{"class":379,"line":515},[377,1203,1204],{"class":383},"rm",[377,1206,1207],{"class":387}," -f",[377,1209,1210],{"class":394}," \"$(",[377,1212,1049],{"class":1213},"s2Zo4",[377,1215,1216],{"class":387}," -v castrel-proxy",[377,1218,1219],{"class":394},")\"\n",[377,1221,1222,1224,1227],{"class":379,"line":567},[377,1223,1204],{"class":383},[377,1225,1226],{"class":387}," -rf",[377,1228,1229],{"class":387}," ~/.castrel\n",[367,1231,1234],{"className":369,"code":1232,"filename":1233,"language":371,"meta":372,"style":372},"castrel-proxy stop\npip uninstall castrel-proxy\nrm -rf ~/.castrel\n","Pip",[374,1235,1236,1242,1253],{"__ignoreMap":372},[377,1237,1238,1240],{"class":379,"line":380},[377,1239,412],{"class":383},[377,1241,745],{"class":387},[377,1243,1244,1247,1250],{"class":379,"line":515},[377,1245,1246],{"class":383},"pip",[377,1248,1249],{"class":387}," uninstall",[377,1251,1252],{"class":387}," castrel-proxy\n",[377,1254,1255,1257,1259],{"class":379,"line":567},[377,1256,1204],{"class":383},[377,1258,1226],{"class":387},[377,1260,1229],{"class":387},[1262,1263,1264],"style",{},"html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}",{"title":372,"searchDepth":515,"depth":515,"links":1266},[1267,1268,1269,1270,1278,1279],{"id":349,"depth":515,"text":349},{"id":15,"depth":515,"text":15},{"id":755,"depth":515,"text":755},{"id":866,"depth":515,"text":867,"children":1271},[1272,1274,1275,1276,1277],{"id":871,"depth":567,"text":1273},"1）命令执行（command_line + 策略校验）",{"id":945,"depth":567,"text":946},{"id":1009,"depth":567,"text":1010},{"id":1075,"depth":567,"text":1076},{"id":1096,"depth":567,"text":1097},{"id":1107,"depth":515,"text":1108},{"id":1136,"depth":515,"text":1136,"children":1280},[1281,1282,1283,1284],{"id":1139,"depth":567,"text":1140},{"id":1146,"depth":567,"text":1147},{"id":1162,"depth":567,"text":1163},{"id":1180,"depth":567,"text":1181},"把本地诊断能力接入 Castrel 的智能分析体系。","md",null,{},{"title":44,"description":1285},"hDcBj1zwBMwwWgCcBbXTzAA65ZqoF8Fr36R495LrYts",[1292,1294],{"title":40,"path":41,"stem":42,"description":1293,"children":-1},"构建并管理团队的运维知识库。",{"title":48,"path":49,"stem":50,"description":1295,"children":-1},"通过定时、手动或事件触发，让 Castrel 持续执行巡检并自动通知。",1777027427658]