{"_id":"dr-claw","_rev":"3-fa03cdaae6cf0bf63c8c90b94eb427b5","name":"dr-claw","dist-tags":{"latest":"1.1.4"},"versions":{"1.1.2":{"name":"dr-claw","version":"1.1.2","keywords":["claude code","ai","anthropic","openrouter","ui","mobile"],"author":{"name":"Dr. Claw Contributors"},"license":"(GPL-3.0-only AND AGPL-3.0-only)","_id":"dr-claw@1.1.2","maintainers":[{"name":"bbsngg","email":"dingjiesong.cs@gmail.com"}],"homepage":"https://github.com/OpenLAIR/dr-claw","bugs":{"url":"https://github.com/OpenLAIR/dr-claw/issues"},"bin":{"dr-claw":"server/cli.js","vibelab":"server/cli.js"},"dist":{"shasum":"c4d91f8337bd5e1c75683cfa3d4f42ce7758115e","tarball":"https://registry.npmjs.org/dr-claw/-/dr-claw-1.1.2.tgz","fileCount":287,"integrity":"sha512-WgEp+r9kEAzfxc6pYC+J0KyyQ1S4rtFK2s0Esljcz7WpLKhMzZYc8IdvRNwWMpZczaLo/53+CR/cCRrYzOrcbw==","signatures":[{"sig":"MEQCIG1y1hjirxPhkCztaj6srlCef7r5CVl2Qr/3IDVcyLD6AiBUzzmdqloiJ9i/D+12GHohoZuiypHe9dKCeCsInj0Nlw==","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":32889157},"main":"server/index.js","type":"module","engines":{"node":"20.x || 22.x || 24.x"},"gitHead":"496ea90f255b3feee1866e8d79abf9d1db5fc717","scripts":{"dev":"concurrently --kill-others \"npm run server\" \"npm run client\"","test":"vitest run","build":"vite build","start":"npm run build && npm run server","client":"vite --host","server":"node --watch-path=./server/routes --watch-path=./server/middleware --watch-path=./server/database --watch-path=./server/utils --watch-path=./server/constants --watch-path=./server/index.js server/index.js","preview":"vite preview","release":"./release.sh","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","postinstall":"node scripts/fix-node-pty.js","prepublishOnly":"npm run build"},"_npmUser":{"name":"bbsngg","email":"dingjiesong.cs@gmail.com"},"repository":{"url":"git+https://github.com/OpenLAIR/dr-claw.git","type":"git"},"_npmVersion":"11.11.0","description":"Dr. Claw — Desktop and mobile UI for Claude Code, Cursor CLI, Codex, and OpenRouter with Research Lab","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.14.2","clsx":"^2.1.1","cors":"^2.8.5","katex":"^0.16.25","react":"^18.2.0","multer":"^2.0.1","sqlite":"^5.1.1","adm-zip":"^0.5.16","express":"^4.18.2","fuse.js":"^7.0.0","i18next":"^25.7.4","mermaid":"^11.12.3","sqlite3":"^5.1.7","bcryptjs":"^3.0.2","chokidar":"^4.0.3","node-pty":"^1.1.0-beta34","react-dom":"^18.2.0","mime-types":"^3.0.1","node-fetch":"^2.7.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","@iarna/toml":"^2.2.5","cross-spawn":"^7.0.3","gray-matter":"^4.0.3","remark-math":"^6.0.0","@xterm/xterm":"^5.5.0","jsonwebtoken":"^9.0.2","lucide-react":"^0.515.0","rehype-katex":"^7.0.1","@octokit/rest":"^22.0.0","@openai/codex":"^0.104.0","react-i18next":"^16.5.3","better-sqlite3":"^12.2.0","react-dropzone":"^14.2.3","react-markdown":"^10.1.0","tailwind-merge":"^3.3.1","@xterm/addon-fit":"^0.10.0","react-router-dom":"^6.8.1","@codemirror/merge":"^6.11.1","@openai/codex-sdk":"^0.101.0","@xterm/addon-webgl":"^0.18.0","@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@uiw/react-codemirror":"^4.23.13","@xterm/addon-clipboard":"^0.1.0","@xterm/addon-web-links":"^0.11.0","@codemirror/lang-python":"^6.2.1","@tailwindcss/typography":"^0.5.16","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^15.6.1","@codemirror/lang-markdown":"^6.3.3","@codemirror/theme-one-dark":"^6.1.2","@replit/codemirror-minimap":"^0.5.2","@codemirror/lang-javascript":"^6.2.4","@anthropic-ai/claude-agent-sdk":"^0.1.71","i18next-browser-languagedetector":"^8.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","sharp":"^0.34.2","vitest":"^4.1.0","postcss":"^8.4.32","node-gyp":"^10.0.0","release-it":"^19.0.5","typescript":"^5.9.3","@types/node":"^22.19.7","tailwindcss":"^3.4.0","@types/react":"^18.2.43","autoprefixer":"^10.4.16","concurrently":"^8.2.2","auto-changelog":"^2.5.0","@playwright/test":"^1.58.2","@types/react-dom":"^18.2.17","@vitejs/plugin-react":"^4.6.0"},"_npmOperationalInternal":{"tmp":"tmp/dr-claw_1.1.2_1775435380673_0.5295896053580122","host":"s3://npm-registry-packages-npm-production"}},"1.1.3":{"name":"dr-claw","version":"1.1.3","keywords":["claude code","ai","anthropic","openrouter","ui","mobile"],"author":{"name":"Dr. Claw Contributors"},"license":"(GPL-3.0-only AND AGPL-3.0-only)","_id":"dr-claw@1.1.3","maintainers":[{"name":"bbsngg","email":"dingjiesong.cs@gmail.com"}],"homepage":"https://github.com/OpenLAIR/dr-claw","bugs":{"url":"https://github.com/OpenLAIR/dr-claw/issues"},"bin":{"dr-claw":"server/cli.js","vibelab":"server/cli.js"},"dist":{"shasum":"33fa799a200715f83539d254327cdc137904ca64","tarball":"https://registry.npmjs.org/dr-claw/-/dr-claw-1.1.3.tgz","fileCount":295,"integrity":"sha512-Uu86HoxUnaOQ3sY2/7emLVTU6EAbgsjJOVsPp47Kx+t3j1HVinVbDcrY3uo3Sato4FUuevwksZyWjVRJKUDfMw==","signatures":[{"sig":"MEUCIC9WCgrUY3rXxwAwaMmVC19ZZ2ftdFDCInJI7bNKqcCKAiEA2zJg0jzSD21CbkwjnvfeVMhmyKvfJsLqy4HQUadL7jE=","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":33661018},"main":"server/index.js","type":"module","build":{"mac":{"icon":"build/icon.icns","target":["dmg"],"category":"public.app-category.developer-tools","artifactName":"${productName}-${version}-mac-${arch}.${ext}"},"win":{"icon":"build/icon.ico","target":["nsis"],"artifactName":"${productName}-${version}-win-${arch}.${ext}"},"asar":false,"nsis":{"oneClick":false,"perMachine":false,"allowToChangeInstallationDirectory":true},"appId":"io.openlair.drclaw","files":["dist/**/*","public/**/*","server/**/*","shared/**/*","skills/**/*","electron/**/*","package.json"],"directories":{"output":"release"},"productName":"Dr. Claw","extraMetadata":{"main":"electron/main.mjs"}},"engines":{"node":"20.x || 22.x || 24.x"},"gitHead":"c7266a74514c0f72f620718dcafe8e2bc4d43501","scripts":{"dev":"npm run native:node && concurrently --kill-others \"npm run server\" \"npm run client\"","test":"vitest run","build":"vite build","start":"npm run build && npm run server","client":"vite --host","predev":"node scripts/check-deps.js","server":"npm run native:node && node --watch-path=./server/routes --watch-path=./server/middleware --watch-path=./server/database --watch-path=./server/utils --watch-path=./server/constants --watch-path=./server/index.js server/index.js","preview":"vite preview","release":"./release.sh","typecheck":"tsc --noEmit -p tsconfig.json","test:watch":"vitest","desktop:dev":"node electron/cli.mjs dev","native:node":"node scripts/native-runtime.mjs node","postinstall":"node scripts/fix-node-pty.js","desktop:dist":"node electron/cli.mjs dist","desktop:pack":"node electron/cli.mjs pack","desktop:icons":"node scripts/build-electron-icons.mjs","prepublishOnly":"npm run build","desktop:prepare":"node electron/cli.mjs prepare","native:electron":"node scripts/native-runtime.mjs electron","desktop:dist:mac":"node electron/cli.mjs dist --mac dmg --publish never","desktop:dist:win":"node electron/cli.mjs dist --win nsis --publish never","desktop:pack:mac":"node electron/cli.mjs pack --mac","desktop:pack:win":"node electron/cli.mjs pack --win"},"_npmUser":{"name":"bbsngg","email":"dingjiesong.cs@gmail.com"},"repository":{"url":"git+https://github.com/OpenLAIR/dr-claw.git","type":"git"},"_npmVersion":"11.11.0","description":"Dr. Claw — Desktop and mobile UI for Claude Code, Cursor CLI, Codex, and OpenRouter with Research Lab","directories":{},"_nodeVersion":"22.22.1","dependencies":{"ws":"^8.14.2","clsx":"^2.1.1","cors":"^2.8.5","glob":"^11.1.0","katex":"^0.16.25","react":"^18.2.0","multer":"^2.0.1","sqlite":"^5.1.1","adm-zip":"^0.5.16","express":"^4.18.2","fuse.js":"^7.0.0","i18next":"^25.7.4","mermaid":"^11.12.3","sqlite3":"^5.1.7","bcryptjs":"^3.0.2","chokidar":"^4.0.3","node-pty":"^1.1.0-beta34","react-dom":"^18.2.0","mime-types":"^3.0.1","node-fetch":"^2.7.0","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","@iarna/toml":"^2.2.5","cross-spawn":"^7.0.3","gray-matter":"^4.0.3","remark-math":"^6.0.0","@xterm/xterm":"^5.5.0","jsonwebtoken":"^9.0.2","lucide-react":"^0.515.0","rehype-katex":"^7.0.1","@octokit/rest":"^22.0.0","@openai/codex":"^0.104.0","react-i18next":"^16.5.3","better-sqlite3":"^12.2.0","react-dropzone":"^14.2.3","react-markdown":"^10.1.0","tailwind-merge":"^3.3.1","@xterm/addon-fit":"^0.10.0","react-router-dom":"^6.8.1","@codemirror/merge":"^6.11.1","@openai/codex-sdk":"^0.101.0","@xterm/addon-webgl":"^0.18.0","@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.9","@codemirror/lang-json":"^6.0.1","@uiw/react-codemirror":"^4.23.13","@xterm/addon-clipboard":"^0.1.0","@xterm/addon-web-links":"^0.11.0","@codemirror/lang-python":"^6.2.1","@tailwindcss/typography":"^0.5.16","class-variance-authority":"^0.7.1","react-syntax-highlighter":"^15.6.1","@codemirror/lang-markdown":"^6.3.3","@modelcontextprotocol/sdk":"^1.29.0","@codemirror/theme-one-dark":"^6.1.2","@replit/codemirror-minimap":"^0.5.2","@codemirror/lang-javascript":"^6.2.4","@anthropic-ai/claude-agent-sdk":"^0.1.71","i18next-browser-languagedetector":"^8.2.0"},"_hasShrinkwrap":false,"devDependencies":{"vite":"^7.0.4","sharp":"^0.34.2","vitest":"^4.1.0","postcss":"^8.4.32","electron":"^37.3.1","node-gyp":"^10.0.0","png-to-ico":"^3.0.1","release-it":"^19.0.5","typescript":"^5.9.3","@types/node":"^22.19.7","tailwindcss":"^3.4.0","@types/react":"^18.2.43","autoprefixer":"^10.4.16","concurrently":"^8.2.2","auto-changelog":"^2.5.0","@playwright/test":"^1.58.2","@types/react-dom":"^18.2.17","electron-builder":"^26.0.12","@vitejs/plugin-react":"^4.6.0"},"_npmOperationalInternal":{"tmp":"tmp/dr-claw_1.1.3_1775630439014_0.421554441365936","host":"s3://npm-registry-packages-npm-production"}},"1.1.4":{"name":"dr-claw","version":"1.1.4","description":"Dr. Claw — Desktop and mobile UI for Claude Code, Cursor CLI, Codex, and OpenRouter with Research Lab","type":"module","main":"server/index.js","bin":{"vibelab":"server/cli.js","dr-claw":"server/cli.js"},"homepage":"https://github.com/OpenLAIR/dr-claw","repository":{"type":"git","url":"git+https://github.com/OpenLAIR/dr-claw.git"},"bugs":{"url":"https://github.com/OpenLAIR/dr-claw/issues"},"scripts":{"predev":"node scripts/check-deps.js","dev":"npm run native:node && concurrently --kill-others \"npm run server\" \"npm run client\"","server":"npm run native:node && node --watch-path=./server/routes --watch-path=./server/middleware --watch-path=./server/database --watch-path=./server/utils --watch-path=./server/constants --watch-path=./server/index.js server/index.js","client":"vite --host","build":"vite build","native:node":"node scripts/native-runtime.mjs node","native:electron":"node scripts/native-runtime.mjs electron","desktop:icons":"node scripts/build-electron-icons.mjs","desktop:prepare":"node electron/cli.mjs prepare","desktop:dev":"node electron/cli.mjs dev","desktop:pack":"node electron/cli.mjs pack","desktop:dist":"node electron/cli.mjs dist","preview":"vite preview","typecheck":"tsc --noEmit -p tsconfig.json","start":"npm run build && npm run server","release":"./release.sh","prepublishOnly":"npm run build","postinstall":"node scripts/fix-node-pty.js","test":"vitest run","test:watch":"vitest","desktop:pack:mac":"node electron/cli.mjs pack --mac","desktop:pack:win":"node electron/cli.mjs pack --win","desktop:dist:mac":"node electron/cli.mjs dist --mac dmg --publish never","desktop:dist:win":"node electron/cli.mjs dist --win nsis --publish never"},"keywords":["claude code","ai","anthropic","openrouter","ui","mobile"],"author":{"name":"Dr. Claw Contributors"},"license":"(GPL-3.0-only AND AGPL-3.0-only)","engines":{"node":"20.x || 22.x || 24.x"},"dependencies":{"@anthropic-ai/claude-agent-sdk":"^0.1.71","@codemirror/lang-css":"^6.3.1","@codemirror/lang-html":"^6.4.9","@codemirror/lang-javascript":"^6.2.4","@codemirror/lang-json":"^6.0.1","@codemirror/lang-markdown":"^6.3.3","@codemirror/lang-python":"^6.2.1","@codemirror/merge":"^6.11.1","@codemirror/theme-one-dark":"^6.1.2","@iarna/toml":"^2.2.5","@modelcontextprotocol/sdk":"^1.29.0","@octokit/rest":"^22.0.0","@openai/codex":"^0.104.0","@openai/codex-sdk":"^0.101.0","@replit/codemirror-minimap":"^0.5.2","@tailwindcss/typography":"^0.5.16","@uiw/react-codemirror":"^4.23.13","@xterm/addon-clipboard":"^0.1.0","@xterm/addon-fit":"^0.10.0","@xterm/addon-web-links":"^0.11.0","@xterm/addon-webgl":"^0.18.0","@xterm/xterm":"^5.5.0","adm-zip":"^0.5.16","bcryptjs":"^3.0.2","better-sqlite3":"^12.2.0","chokidar":"^4.0.3","class-variance-authority":"^0.7.1","clsx":"^2.1.1","cors":"^2.8.5","cross-spawn":"^7.0.3","express":"^4.18.2","fuse.js":"^7.0.0","glob":"^11.1.0","gray-matter":"^4.0.3","i18next":"^25.7.4","i18next-browser-languagedetector":"^8.2.0","jsonwebtoken":"^9.0.2","katex":"^0.16.25","lucide-react":"^0.515.0","mermaid":"^11.12.3","mime-types":"^3.0.1","multer":"^2.0.1","node-fetch":"^2.7.0","node-pty":"^1.1.0-beta34","react":"^18.2.0","react-dom":"^18.2.0","react-dropzone":"^14.2.3","react-i18next":"^16.5.3","react-markdown":"^10.1.0","react-router-dom":"^6.8.1","react-syntax-highlighter":"^15.6.1","rehype-katex":"^7.0.1","rehype-raw":"^7.0.0","remark-gfm":"^4.0.0","remark-math":"^6.0.0","sqlite":"^5.1.1","sqlite3":"^5.1.7","tailwind-merge":"^3.3.1","ws":"^8.14.2"},"devDependencies":{"@playwright/test":"^1.58.2","@types/node":"^22.19.7","@types/react":"^18.2.43","@types/react-dom":"^18.2.17","@vitejs/plugin-react":"^4.6.0","auto-changelog":"^2.5.0","autoprefixer":"^10.4.16","concurrently":"^8.2.2","electron":"^37.3.1","electron-builder":"^26.0.12","node-gyp":"^10.0.0","png-to-ico":"^3.0.1","postcss":"^8.4.32","release-it":"^19.0.5","sharp":"^0.34.2","tailwindcss":"^3.4.0","typescript":"^5.9.3","vite":"^7.0.4","vitest":"^4.1.0"},"build":{"appId":"io.openlair.drclaw","productName":"Dr. Claw","directories":{"output":"release"},"asar":false,"extraMetadata":{"main":"electron/main.mjs"},"files":["dist/**/*","public/**/*","server/**/*","shared/**/*","skills/**/*","electron/**/*","package.json"],"mac":{"icon":"build/icon.icns","target":["dmg"],"category":"public.app-category.developer-tools","artifactName":"${productName}-${version}-mac-${arch}.${ext}"},"win":{"icon":"build/icon.ico","target":["nsis"],"artifactName":"${productName}-${version}-win-${arch}.${ext}"},"nsis":{"oneClick":false,"perMachine":false,"allowToChangeInstallationDirectory":true}},"gitHead":"560d933df747969ea532f45e6970317a8147bd80","_id":"dr-claw@1.1.4","_nodeVersion":"22.22.1","_npmVersion":"11.11.0","dist":{"integrity":"sha512-n5WCPK97SLOEGLqWxbIoKGuPUalZ0mEIy83RSzp/Tlg17AVqph2xI5odVla56/VUQGxpF1jKgHX0pA9sU7Jtyw==","shasum":"cc6c64623ce6a32807c2fb585b814d0a5973a38c","tarball":"https://registry.npmjs.org/dr-claw/-/dr-claw-1.1.4.tgz","fileCount":316,"unpackedSize":35285765,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEQCIE+WG4a6UAh6wUJa0vPeHAJKVOFmDM3osW3Rvhmx1/PQAiBiJZyqE439HcMw5GwSfR2AkFJsueR6so4E1M7nC5vCCQ=="}]},"_npmUser":{"name":"bbsngg","email":"dingjiesong.cs@gmail.com"},"directories":{},"maintainers":[{"name":"bbsngg","email":"dingjiesong.cs@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/dr-claw_1.1.4_1775975151589_0.3932714369083621"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-06T00:29:40.673Z","modified":"2026-04-12T06:25:52.609Z","1.1.2":"2026-04-06T00:29:41.445Z","1.1.3":"2026-04-08T06:40:39.770Z","1.1.4":"2026-04-12T06:25:52.511Z"},"bugs":{"url":"https://github.com/OpenLAIR/dr-claw/issues"},"author":{"name":"Dr. Claw Contributors"},"license":"(GPL-3.0-only AND AGPL-3.0-only)","homepage":"https://github.com/OpenLAIR/dr-claw","keywords":["claude code","ai","anthropic","openrouter","ui","mobile"],"repository":{"type":"git","url":"git+https://github.com/OpenLAIR/dr-claw.git"},"description":"Dr. Claw — Desktop and mobile UI for Claude Code, Cursor CLI, Codex, and OpenRouter with Research Lab","maintainers":[{"name":"bbsngg","email":"dingjiesong.cs@gmail.com"}],"readme":"<div align=\"center\">\n  <img src=\"public/dr-claw.png\" alt=\"Dr. Claw\" width=\"128\" height=\"128\">\n  <h1>Dr. Claw: 面向科研全流程的通用 AI 研究助手</h1>\n  <p><strong>在一个工作区里完成研究规划、执行与写作。</strong></p>\n</div>\n\n<p align=\"center\">\n<a href=\"https://github.com/OpenLAIR/dr-claw\">\n<img src=\"https://img.shields.io/badge/%F0%9F%A6%9E-Dr.%20Claw-7C3AED?style=for-the-badge\" alt=\"Dr. Claw\" />\n</a>\n<a href=\"https://openlair.github.io/dr-claw\">\n<img src=\"https://img.shields.io/badge/%F0%9F%8C%90-%E4%B8%BB%E9%A1%B5-2563EB?style=for-the-badge\" alt=\"主页\" />\n</a>\n<a href=\"https://www.npmjs.com/package/dr-claw\">\n<img src=\"https://img.shields.io/npm/v/dr-claw?style=for-the-badge&logo=npm&color=CB3837\" alt=\"npm version\" />\n</a>\n<a href=\"https://github.com/OpenLAIR/dr-claw/blob/main/LICENSE\">\n<img src=\"https://img.shields.io/badge/License-GPL--3.0%20%2B%20AGPL--3.0-blue?style=for-the-badge\" alt=\"License: GPL-3.0 + AGPL-3.0\" />\n</a>\n<br/>\n<a href=\"https://join.slack.com/t/vibe-lab-group/shared_invite/zt-3r4bkcx5t-iGyRMI~r09zt7p_ND2eP9A\">\n<img src=\"https://img.shields.io/badge/Join-Slack-4A154B?style=for-the-badge&logo=slack\" alt=\"Join Slack\" />\n</a>\n<a href=\"https://x.com/Vibe2038004\">\n<img src=\"https://img.shields.io/badge/Follow-on%20X-black?style=for-the-badge&logo=x\" alt=\"Follow on X\" />\n</a>\n<a href=\"./public/wechat-group-qr.jpg\">\n<img src=\"https://img.shields.io/badge/%E5%8A%A0%E5%85%A5-%E5%BE%AE%E4%BF%A1%E7%BE%A4-07C160?style=for-the-badge&logo=wechat&logoColor=white\" alt=\"加入微信群\" />\n</a>\n<a href=\"https://github.com/OpenLAIR/dr-claw-plugin-cc\">\n<img src=\"https://img.shields.io/badge/Claude%20Code-Plugin-7C3AED?style=for-the-badge&logo=data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0IiBmaWxsPSJ3aGl0ZSI+PHBhdGggZD0iTTEyIDJMMiAyMmgyMEwxMiAyeiIvPjwvc3ZnPg==\" alt=\"Claude Code Plugin\" />\n</a>\n</p>\n\n<p align=\"center\">\n  <a href=\"./README.md\">English</a> | <a href=\"./README.zh-CN.md\">中文</a>\n</p>\n\n## 目录\n\n- [Overview](#overview)\n- [最新动态](#最新动态)\n- [亮点](#亮点)\n- [快速开始](#快速开始)\n- [配置说明](#配置说明)\n- [接入 OpenClaw](#接入-openclaw)\n- [Research Lab - 快速示例](#research-lab-quick-example)\n- [使用指南](#使用指南)\n- [Claude Code 插件](#claude-code-插件)\n- [补充说明](#补充说明)\n- [贡献](#贡献)\n- [FAQ](./docs/faq.zh-CN.md)\n- [许可证](#许可证)\n- [引用](#引用)\n- [致谢](#致谢)\n- [支持与社区](#支持与社区)\n\n## Overview\n\nDr. Claw 是一个面向不同研究方向的通用 AI 研究助手，帮助研究者和团队完成从想法形成、实验推进到论文产出的全流程工作。它把关键研究环节整合到同一个空间中，让你把精力放在问题本身和迭代质量上，而不是工具切换与流程拼接。\n\n<strong>产品截图</strong>\n\n<p align=\"center\">\n  <img src=\"public/screenshots/screenshot_v1_2.png\" alt=\"Dr. Claw 对话界面\" width=\"1000\">\n</p>\n\n\n<details>\n<summary><strong>理念：杠杆化认知</strong></summary>\n\n<p align=\"center\">\n  <img src=\"public/leveraged-cognition.png\" alt=\"Leveraged Cognition\" width=\"900\">\n</p>\n\n**纯手工太慢，完全交给 AI 又太平庸，Vibe Researching 才是新的范式。** Dr. Claw 以 **Agentic Execution** 放大你的 **Research Taste**，让你既能更快推进、更大胆探索，也始终守住科研严谨性的底线。\n\n</details>\n\n## 最新动态\n\n- 🧪 **Auto Research Hub** `2026-04-08` — 一键启动全自动科研！选工具包、点配置、选工作流——然后去睡觉，醒来收论文。支持 ARIS、Autoresearch、DeepScientist 三大工具包，从 idea 到 paper 全程无人值守。\n- 🖥️ **桌面应用 & npx** `2026-04-06` — Dr. Claw 现已支持原生桌面应用！从 [GitHub Releases](https://github.com/OpenLAIR/dr-claw/releases) 下载 `.dmg` / `.exe`，或运行 `npx dr-claw` 零配置一键启动。\n- 🗂️ **多标签侧边栏** `2026-04-06` — Research Lab 和文件浏览器合并为右侧可切换标签页，所有信息一目了然。\n- 📂 **文件预览浮层** `2026-04-06` — 内联预览项目文件，配合药丸切换和侧边浏览器，告别频繁切换窗口！\n- 💬 **终端聊天** `2026-04-06` — 终端爱好者的福音！运行 `dr-claw chat`，用任意 OpenRouter 模型开启完整 Agent 会话，无需浏览器。\n- 🎛️ **推理强度控制** `2026-03-30` — 精调 AI 思考深度！Codex 推理强度和 Gemini 思维力度选择器现已内置于 Chat 中。\n- 🖥️ **本地 GPU 检测** `2026-03-30` — Dr. Claw 自动检测本地 GPU 资源，让你的硬件随时待命。\n- 🌐 **OpenRouter 接入** `2026-03-28` — 一个 API Key 解锁数百种模型（GPT-5、Claude、Gemini、DeepSeek、Llama、Kimi 等），全球模型尽在掌握！\n- 🔄 **会话恢复** `2026-03-26` — 会话中途出错？别慌——点击重试按钮，从断点处继续。\n\n<details>\n<summary><strong>更早的更新</strong></summary>\n\n- 📡 **端口自动回退** `2026-03-26` — 默认端口被占用？Dr. Claw 自动寻找可用端口，省心省力。\n- 🏷️ **智能 Prompt 加载** `2026-03-26` — 任务自动加载至 Chat 并显示徽章下拉菜单，点击即可开始！\n- 🏷️ **会话阶段标签** `2026-03-26` — 会话自动标记研究阶段，每段对话处于什么状态一目了然。\n- ✍️ **审稿回复技能** `2026-03-24` — 全新 Rebuttal 技能，将审稿意见转化为高质量的回复稿。\n- 🧑‍💻 **多会话支持** `2026-03-21` — 并行运行多个会话并自动命名，多项目同时推进不在话下！\n- 🗑️ **回收站** `2026-03-21` — 误删了项目？别担心——回收站里随时可以恢复。\n- 🤖 **Dr. Claw CLI & OpenClaw** `2026-03-21` — 完整的命令行控制加 OpenClaw 集成，支持移动端语音驱动的研究管理。\n- 📚 **参考文献库** `2026-03-20` — 精简的文献选择器加本地 Zotero 支持，文献管理井井有条。\n- 🔀 **Git 版本控制** `2026-03-20` — 暂存、提交、差异对比、切换分支，全部在应用内完成，内置版本控制。\n- 📰 **资讯看板** `2026-03-14` — 在工作区内实时追踪研究相关动态，热门论文再也不会错过！\n\n</details>\n\n## 亮点\n\n- **🔬 Research Lab** — 端到端研究仪表盘：定义研究简报、生成任务流水线、追踪 Survey → Ideation → Experiment → Publication → Promotion 各阶段进度，一览参考论文、Idea（支持 LaTeX 数学公式渲染）和缓存产物\n- **⚡ Auto Research** — 可直接从 Project Dashboard 一键顺序执行研究任务，实时打开对应 session，并在运行完成后发送邮件通知\n- **📚 100+ Research Skills** — 覆盖 Idea 生成、代码调研、实验开发与分析、论文写作、审阅回复与交付的技能库 — Agent 自动发现并作为任务级辅助\n- **🗂️ 对话驱动的 Pipeline** — 在 Chat 中描述你的研究想法，Agent 使用 `inno-pipeline-planner` skill 交互式生成结构化研究简报和任务列表 — 无需手动选择模板\n- **🤖 多 Agent 后端** — 可在 Claude Code、Gemini CLI、Codex 和 OpenRouter 之间切换作为执行引擎\n\n### 流水线产出物\n\n| | 产出物 | 存储位置 | 说明 |\n|---|---|---|---|\n| 📚 | 文献综述 | `Survey/reports/` | 基于 arXiv、Semantic Scholar 和网络来源的带引用文献综述 |\n| 💡 | 研究创意 | `Ideation/ideas/` | 多维度评估打分的头脑风暴输出 |\n| 🔬 | 实验代码 | `Experiment/core_code/` | 由\"计划 → 实现 → 评判\"循环产出的代码 |\n| 📊 | 分析结果 | `Experiment/analysis/` | 统计分析、表格和论文级图表 |\n| 📝 | 论文草稿 | `Publication/paper/` | IEEE/ACM 格式学术论文，含引用和 LaTeX 数学公式 |\n| 🎞️ | 学术展示 | `Promotion/slides/` | 演示文稿、TTS 语音旁白和演示视频 |\n\n> 完整产出物列表和项目目录结构请参见 [docs/pipeline-outputs.md](docs/pipeline-outputs.md)。\n\n<details>\n<summary><span style=\"font-size: 1.17em; font-weight: 600;\">更多功能</span></summary>\n\n- **💬 交互式 Chat + Shell** — 与 Agent 对话或直接进入终端 — 与研究上下文并排使用\n- **📁 文件 & Git 浏览器** — 语法高亮浏览文件、实时编辑、暂存变更、提交和切换分支，无需离开 UI\n- **📱 响应式 & PWA 就绪** — 桌面、平板和移动端布局，底部选项卡栏、滑动手势和添加到主屏幕支持\n- **🔄 会话管理** — 恢复对话、管理多个会话，跨项目追踪完整历史\n\n</details>\n\n### 功能截图\n\n<details>\n<summary><strong>展开查看截图</strong></summary>\n\n<p><strong>Project Dashboard</strong> — 从项目总览进入，查看状态并启动端到端自动化流程。</p>\n<p align=\"center\">\n  <img src=\"public/screenshots/project_dashboard.png\" alt=\"项目看板界面\" width=\"1000\">\n</p>\n\n<p><strong>Skill Library</strong> — 浏览覆盖想法生成、实验推进与论文写作的技能库。</p>\n<p align=\"center\">\n  <img src=\"public/screenshots/skill_library.png\" alt=\"技能库界面\" width=\"1000\">\n</p>\n\n<p><strong>News Dashboard</strong> — 在同一工作区内跟踪研究相关的资讯更新。</p>\n<p align=\"center\">\n  <img src=\"public/screenshots/news_dashboard.png\" alt=\"新闻看板界面\" width=\"1000\">\n</p>\n\n</details>\n\n\n## 快速开始\n\n> **桌面应用（Beta）：** 想跳过以下安装步骤？可以直接从 [GitHub Releases](https://github.com/OpenLAIR/dr-claw/releases) 下载最新的 `.dmg`（macOS）或 `.exe`（Windows）安装包运行。桌面应用目前为 Beta 版本 — 如需更稳定的体验，请按照下方完整安装步骤操作。\n\n### 前置要求\n\n- [Node.js](https://nodejs.org/) v20 或更高版本（**推荐 v22 LTS**，见 `.nvmrc`）\n- 至少安装并配置以下 CLI 工具之一：\n  - [Claude Code CLI](https://docs.anthropic.com/en/docs/claude-code)\n  - [Gemini CLI](https://geminicli.com/docs/get-started/installation/)\n  - [Codex CLI](https://developers.openai.com/codex/cli/)\n- 国内用户可以配置 [OpenRouter](#配置说明)\n- 部分系统需要原生构建工具来安装 `node-pty`、`better-sqlite3` 等依赖；如果 `npm install` 失败，请查看 [FAQ](docs/faq.zh-CN.md)。\n\nCursor Agent 支持正在开发中，即将推出。\n\n### 方式一：npx 一键启动（推荐）\n\n无需克隆仓库或手动配置，直接运行：\n\n```bash\nnpx dr-claw\n```\n\n或全局安装后使用：\n\n```bash\nnpm install -g dr-claw\ndr-claw\n```\n\n打开浏览器访问 `http://localhost:3001`，创建账户即可开始使用。\n\n### 方式二：从源码安装（开发者）\n\n1. **克隆仓库：**\n```bash\ngit clone https://github.com/OpenLAIR/dr-claw.git\ncd dr-claw\n```\n\n2. **安装依赖：**\n```bash\nnpm install\n```\n\n3. **配置环境：**\n```bash\ncp .env.example .env\n# 编辑 .env 文件，设置端口等偏好配置\n```\n\n如需自定义端口、认证或工作区设置，请参阅 [docs/configuration.zh-CN.md](docs/configuration.zh-CN.md)。\n\n4. **启动应用：**\n```bash\n# 开发模式（支持热重载）\nnpm run dev\n```\n\n5. **使用应用**\n\nDr. Claw 提供两种使用方式：**前端 UI** 和 **纯终端模式**。UI 提供更丰富的可视化，但偶尔可能遇到 bug；纯终端模式更加稳定轻量。\n\n#### 方式 A：前端 UI\n\n<details>\n<summary><strong>在浏览器中打开 Web UI</strong></summary>\n\n打开浏览器访问 `http://localhost:5173`（或您在 `.env` 中配置的端口）。\n\n</details>\n\n#### 方式 B：纯终端模式\n\n<details>\n<summary><strong>使用 CLI 工具搭配你偏好的 Agent</strong></summary>\n\n<p align=\"center\">\n  <img src=\"public/screenshots/terminal_example1.png\" alt=\"终端工作流示例\" width=\"800\">\n</p>\n\n打开**第二个终端**（保持第一个终端中的 `npm run dev` 运行），安装 `drclaw` CLI 工具：\n\n```bash\npip install -e ./agent-harness\n```\n\n使用创建账户时设置的用户名和密码登录：\n\n```bash\ndrclaw auth login --username 你的用户名 --password 你的密码\n```\n\n安装至少一个 Agent CLI（如果尚未安装）：\n\n| Agent | 安装命令 | 认证方式 |\n|-------|---------|---------|\n| Claude Code | `npm install -g @anthropic-ai/claude-code` | `claude` → 按提示完成 OAuth |\n| Gemini CLI | `npm install -g @google/gemini-cli` | `gemini` → Google 登录，或 `export GOOGLE_API_KEY=...` |\n| Codex CLI | `npm install -g @openai/codex` | `codex login`，或 `export OPENAI_API_KEY=...` |\n| **OpenRouter** | 无需安装 CLI | `export OPENROUTER_API_KEY=sk-or-...`（在 [openrouter.ai/keys](https://openrouter.ai/keys) 获取密钥）|\n\n> **OpenRouter** 允许你通过单个 API 密钥使用*任意*模型（GPT-5、Claude、Gemini、DeepSeek、Llama、Mistral、Qwen 等）。在 UI 中选择模型或在 `.env` 中设置 `OPENROUTER_MODEL`。\n\n进入你要工作的项目目录，启动任一 Agent：\n\n```bash\ncd /path/to/your/project\nclaude    # 或: gemini | codex\n```\n\n`dr-claw/skills/` 中的技能会在项目创建时自动软链接到项目的 `.claude/skills/` 目录，Agent 无需额外配置即可自动发现。你也可以在会话中手动引用任意技能：\n\n```\n> Read .claude/skills/inno-experiment-analysis/SKILL.md and follow it to analyze my results.\n```\n\n</details>\n\n#### 方式 C：OpenRouter 终端对话\n\n<details>\n<summary><strong>使用任意 OpenRouter 模型的轻量终端对话</strong></summary>\n\n如果你想要一种轻量级的纯终端体验，使用任意 [OpenRouter](https://openrouter.ai/) 模型，可以使用内置的 `dr-claw chat` 命令。无需浏览器或 UI — 直接在终端中进行具备完整工具调用能力（文件读写、Shell、Grep、Glob、网页搜索/抓取）的智能体对话。\n\n```bash\n# 确保已设置 OPENROUTER_API_KEY（或使用 --key 传入）\nexport OPENROUTER_API_KEY=sk-or-...\n\n# 使用任意模型启动对话\nnode server/cli.js chat --model moonshotai/kimi-k2.5\n```\n\n也可以直接传入 API 密钥：\n\n```bash\nnode server/cli.js chat --model anthropic/claude-sonnet-4 --key sk-or-your-key\n```\n\n| 参数 | 说明 |\n|------|------|\n| `--model <slug>` | OpenRouter 模型标识（如 `moonshotai/kimi-k2.5`、`anthropic/claude-sonnet-4`、`deepseek/deepseek-r1`）|\n| `--key <key>` | OpenRouter API 密钥（默认使用 `OPENROUTER_API_KEY` 环境变量）|\n\n浏览所有可用模型：[openrouter.ai/models](https://openrouter.ai/models)。\n\n</details>\n\n#### 方式 D：桌面应用\n\n<details>\n<summary><strong>作为独立桌面应用运行（macOS 和 Windows）</strong></summary>\n\n```bash\n# 开发模式（启动 Electron 并支持热重载）\nnpm run desktop:dev\n\n# 构建可分发的安装包（.dmg / .exe）\nnpm run desktop:dist\n```\n\n桌面架构、IPC 桥接和 CI/CD 发布流程的详细说明请参阅 [electron/README.md](electron/README.md)。\n\n</details>\n\n如果后续 Agent 网页搜索不可用，请查看[网页搜索排障](#troubleshooting-web-search-zh)。\n\n## 接入 OpenClaw\n<details>\n<summary><span style=\"font-size: 1.17em; font-weight: 600;\">把 Dr. Claw 变成移动端友好、支持语音的研究秘书</span></summary>\n\n> OpenClaw 通过 `drclaw` CLI 连接 Dr. Claw，提供项目控制、智能摘要和主动通知 — 随时随地在手机或聊天中使用。\n\n### 架构\n\n```\n┌─────────────────────────────────────────────────────────────┐\n│  用户（手机 / 聊天 / 语音）                                    │\n│    ↕                                                        │\n│  OpenClaw  ── 秘书层 ──────────────────────────────────┐    │\n│    │  执行本地 `drclaw ...`              接收推送消息    │    │\n│    ↓                                        ↑          │    │\n│  drclaw CLI  ── 稳定控制面 ────────────────────────┐   │    │\n│    │  JSON + openclaw.* schema          WebSocket  │   │    │\n│    ↓                                        │      │   │    │\n│  Dr. Claw 服务                           Watcher ──┘   │    │\n│    (项目、会话、pipeline、产物)                          │    │\n└─────────────────────────────────────────────────────────────┘\n```\n\n集成分三层：\n\n| 层级 | 功能 |\n|------|------|\n| **控制面** | OpenClaw 在本地执行 `drclaw --json ...` 命令 |\n| **结构化契约** | JSON 响应携带版本化的 `openclaw.*` schema |\n| **主动推送** | 事件驱动的 watcher 把重要变化推送到飞书 / Lark |\n\n---\n\n### 快速接入（6 步）\n\n<details>\n<summary><strong>前置条件</strong></summary>\n\n- Dr. Claw 服务已启动（`npm run dev` 或 `drclaw server on`）\n- 至少有一个项目和一个执行后端（Claude Code、Gemini CLI 或 Codex）\n- OpenClaw 具备本地 shell / `exec` 能力\n- *（可选）* 飞书 / Lark channel 用于推送通知\n\n</details>\n\n**1. 启动服务**\n\n```bash\nnpm install && npm run dev       # 或: drclaw server on\ndrclaw --json auth status        # 验证连通性\n```\n\n> `drclaw server status` 只报告 `drclaw server on` 拉起的 daemon。如果用 `npm run dev` 启动，它可能显示 `STOPPED`，但 `http://localhost:3001` 实际可用 — 以 `auth status` 为准。\n\n**2. 安装 CLI**\n\n```bash\npip install -e ./agent-harness\ndrclaw --help\n```\n\n如果 PATH 中没有 `drclaw`：\n\n```bash\nPYTHONPATH=agent-harness python3 -m cli_anything.drclaw.drclaw_cli --help\n```\n\n**3. 登录认证**\n\n```bash\ndrclaw auth login --username <user> --password <pass>\ndrclaw --json projects list      # 应返回你的项目列表\n```\n\n**4. 关联 OpenClaw**\n\n```bash\ndrclaw install --server-url http://localhost:3001\n# 带推送 channel：\ndrclaw install --server-url http://localhost:3001 --push-channel feishu:<chat_id>\n```\n\n这会复制 Dr. Claw skill、安装 wrapper 脚本，并保存服务地址和 CLI 路径。\n\n**5. 验证核心流程**\n\n从 OpenClaw 执行以下四个命令 — 如果都返回有效 JSON，说明集成已就绪：\n\n```bash\ndrclaw --json projects list                            # 解析项目\ndrclaw --json chat waiting                             # 等待回复的会话\ndrclaw --json digest portfolio                         # 跨项目汇总\ndrclaw --json workflow status --project <project>      # 单项目状态\n```\n\n**6. 回复会话**\n\n```bash\ndrclaw --json chat waiting                             # 选择会话\ndrclaw --json chat reply --project <proj> --session <sid> -m “按方案 B 继续。”\ndrclaw --json chat waiting --project <proj>            # 确认已处理\n```\n\n多轮项目讨论：\n\n```bash\ndrclaw --json chat project --project <proj> --session <sid> -m “总结当前 blockers。”\n```\n\n---\n\n### 结构化 Schema\n\n面向机器的命令返回版本化的 `openclaw` 字段：\n\n| Schema | 用途 |\n|--------|------|\n| `openclaw.turn.v1` | ��轮对话摘要 |\n| `openclaw.project.v1` | 项目摘要（状态、计数、下一步操作） |\n| `openclaw.portfolio.v1` | 跨项目概览与建议 |\n| `openclaw.daily.v1` | 每日摘要 |\n| `openclaw.report.v1` | 移动端报告 |\n| `openclaw.event.v1` | Watcher 事件与派生 signal |\n\n**客户端消费建议：**\n\n| 场景 | 读取字段 |\n|------|---------|\n| 判断是否需要打断用户 | `openclaw.decision.needed` |\n| 快捷操作 / 语音建议 | `openclaw.next_actions` |\n| 紧凑展示 | `openclaw.turn.summary` 或 `openclaw.focus` |\n| 处理 watcher 通知 | `openclaw.event.v1.event.signals` |\n\n> 只要有 `openclaw` 字段，就不要只依赖原始 `reply` 文本。\n\n正式契约文档：[`agent-harness/cli_anything/drclaw/SCHEMA.md`](agent-harness/cli_anything/drclaw/SCHEMA.md)\n\n---\n\n### 主动 Watcher\n\nWatcher 订阅 Dr. Claw WebSocket 事件，只在真正值得提醒时推送通知。\n\n```bash\n# 配置推送 channel\ndrclaw openclaw configure --push-channel feishu:<chat_id>\n\n# 管理 watcher\ndrclaw --json openclaw-watch on --to feishu:<chat_id>\ndrclaw --json openclaw-watch status\ndrclaw --json openclaw-watch off\n```\n\n**工作流程：**\n\n```\nWebSocket 事件 → 项目解析 → snapshot 对比 → signal 推导\n                                                ↓\n                   去重 (6h TTL) ← 稳定签名 + signal kinds\n                                                ↓\n                   openclaw agent --deliver → 飞书 / Lark 消息\n                          (回退：bridge 直接发送)\n```\n\n**派生 signal：**\n\n| Signal | 含义 |\n|--------|------|\n| `human_decision_needed` | Agent 请求工具调用权限 |\n| `waiting_for_human` | 会话等待用户输入 |\n| `blocker_detected` / `blocker_cleared` | 任务阻塞 / 解除阻塞 |\n| `task_completed` | 任务完成 |\n| `next_task_changed` | 推荐的下一个任务已变更 |\n| `attention_needed` | 需要关注 |\n| `session_aborted` | 会话执行中止 |\n\n状态文件：`~/.drclaw/openclaw-watcher-state.json` | 日志：`~/.drclaw/logs/openclaw-watcher.log`\n\n---\n\n### 串行化本地 Turn\n\n当 OpenClaw 反复调用 `openclaw agent --local` 时，使用 wrapper 脚本避免 session lock 冲突：\n\n```bash\nagent-harness/skills/dr-claw/scripts/openclaw_drclaw_turn.sh \\\n  --json -m “Use your exec tool to run \\`drclaw --json digest portfolio\\`. Return only raw stdout.”\n```\n\n> **原则：稳定的串行调用永远优于冒险的并发调用。**\n\n---\n\n### 接入自检清单\n\n当以下场景全部通过时，你的 OpenClaw 集成就已完成：\n\n- [ ] OpenClaw 能列出 Dr. Claw 项目\n- [ ] OpenClaw 能识别等待中的会话\n- [ ] OpenClaw 能成功回复一个会话\n- [ ] OpenClaw 能产出 `digest portfolio` 汇总\n- [ ] OpenClaw 在飞书 / Lark 收到至少一条 watcher 推送\n\n此时 OpenClaw 就已经成为 Dr. Claw 的移动秘书。用户可以自然地说：\n\n> *”看看哪些项目在等我回复。”*\n> *”总结一下这个项目的进展和 blockers。”*\n> *”替我回复这个会话：按方案 B 继续，做完汇报。”*\n> *”给我一个跨项目进展汇总，推荐今天优先处理什么。”*\n> *”我有个新想法 — 建个项目，和我讨论清楚，然后开始规划。”*\n\n</details>\n\n## 配置说明\n\nDr. Claw 会从 `.env` 读取本地配置。对大多数用户来说，只需要把 `.env.example` 复制为 `.env`；但以下几个配置项最常需要尽早调整：\n\n- `PORT`：后端服务端口\n- `VITE_PORT`：前端开发服务器端口\n- `HOST`：前后端服务绑定地址\n- `JWT_SECRET`：当你要把 Dr. Claw 暴露到 localhost 之外时必须设置\n- `WORKSPACES_ROOT`：新项目工作区的默认根目录\n\n完整环境变量说明和部署注意事项见 [docs/configuration.zh-CN.md](docs/configuration.zh-CN.md)。\n\nAuto Research 的邮件通知配置在应用内的 **Settings → Email**。当前 v1 支持 Claude Code、Codex、Gemini 和 OpenRouter 作为执行引擎进行无人值守研究任务执行；如果运行中断，系统会自动回收僵尸 run，避免其长期停留在 `running` 状态。\n\n<details>\n<summary><strong>OpenRouter 配置</strong></summary>\n\n[OpenRouter](https://openrouter.ai/) 作为一等公民集成，让你通过**一个 API 密钥**访问数百个模型（GPT-5、Claude、Gemini、DeepSeek、Llama、Mistral、Qwen、Kimi 等）。\n\n#### 配置\n\n1. 在 [openrouter.ai/keys](https://openrouter.ai/keys) 获取 API 密钥。\n2. 通过以下三种方式之一设置密钥：\n   - **环境变量：** `export OPENROUTER_API_KEY=sk-or-...`\n   - **`.env` 文件：** 在项目 `.env` 中添加 `OPENROUTER_API_KEY=sk-or-...`\n   - **UI 界面：** 进入 **Settings → OpenRouter** 并粘贴密钥\n\n#### 在 UI 中使用 OpenRouter\n\n1. 打开项目并进入 **Chat**。\n2. 在 **Choose Your AI Assistant** 下点击 **OpenRouter**。\n3. 在下拉菜单中搜索模型（会从 OpenRouter 获取完整列表），或输入自定义模型标识。\n4. 开始对话 — Agent 具备与 Claude、Gemini、Codex 相同的工具调用能力（文件读写、Shell、Grep、Glob、网页搜索/抓取、Todo）。\n\nOpenRouter 同样可用于 Project Dashboard 上的 **Auto Research** — 选择它作为提供方并选择任意模型。\n\n#### 在终端中使用 OpenRouter\n\n无需浏览器。`dr-claw chat` CLI 提供完整的智能体终端会话：\n\n```bash\n# 基本用法\nnode server/cli.js chat --model moonshotai/kimi-k2.5\n\n# 指定 API 密钥\nnode server/cli.js chat --model deepseek/deepseek-r1 --key sk-or-your-key\n```\n\nCLI 支持与 UI 相同的工具（文件读写、Shell、Grep、Glob、网页搜索、网页抓取、Todo）。输入你的消息，Agent 将自主执行多步骤研究任务。\n\n#### 默认模型\n\n在 `.env` 中设置 `OPENROUTER_MODEL` 以更改未指定模型时的默认值：\n\n```env\nOPENROUTER_MODEL=moonshotai/kimi-k2.5\n```\n\n如未设置，默认使用 `anthropic/claude-sonnet-4`。\n\n</details>\n\n<a id=\"research-lab-quick-example\"></a>\n\n## Research Lab — 快速示例\n\nDr. Claw 的核心功能是 **Research Lab**。\n\n<details>\n<summary><strong>Research Lab 截图</strong></summary>\n\n<p align=\"center\">\n  <img src=\"public/screenshots/research_lab.png\" alt=\"Research Lab 工作流\" width=\"1000\">\n</p>\n\n</details>\n\n典型流程如下：\n\n1. 在 **Settings** 中配置一个受支持的 Agent。\n2. 如果希望收到完成通知，在 **Settings → Email** 中配置邮件信息。\n3. 在 **Chat** 中描述你的研究想法。\n4. 让 Agent 生成 `.pipeline/docs/research_brief.json` 和 `.pipeline/tasks/tasks.json`。\n5. 在 **Research Lab** 中查看流水线，并把任务发送回 **Chat** 执行，或者在 Project Dashboard 上点击 **Auto Research** 让系统顺序执行全部任务。\n\n完整操作步骤请见下方 **使用指南**。\n\n## 使用指南\n\n启动 Dr. Claw 后，打开浏览器并按以下步骤操作。\n\n<details>\n<summary><strong>第 1 步 — 创建或打开项目</strong></summary>\n\n首次打开 Dr. Claw 时，您会看到 **Projects** 侧边栏。您有两种选择：\n\n- **打开已有项目** — Dr. Claw 会自动发现已注册项目，以及来自 Claude Code、Codex、Gemini 的关联会话。\n- **创建新项目** — 点击 **\"+\"** 按钮，选择本机的一个目录，Dr. Claw 会创建：`.claude/`、`.agents/`、`.gemini/` 等 Agent 目录、标准工作区元数据、链接的 `skills/` 目录、预设研究目录（`Survey/references`、`Survey/reports`、`Ideation/ideas`、`Ideation/references`、`Experiment/code_references`、`Experiment/datasets`、`Experiment/core_code`、`Experiment/analysis`、`Publication/paper`、`Promotion/homepage`、`Promotion/slides`、`Promotion/audio`、`Promotion/video`），以及项目根目录下的 **instance.json**（上述目录的绝对路径写入其中）。Cursor Agent 支持即将推出。\n\n> **默认项目存储路径：** 新项目默认存储在 `~/dr-claw` 目录下。可在 **Settings → Appearance → Default Project Path** 中修改，也可通过环境变量 `WORKSPACES_ROOT` 设置。该配置持久化在 `~/.claude/project-config.json` 中。\n\n</details>\n\n<details>\n<summary><strong>第 2 步 — 通过 Chat 生成研究流水线</strong></summary>\n\n创建或打开项目后，Dr. Claw 默认进入 **Chat** 页面。如果尚未生成研究流水线，页面会显示引导提示，并提供 **Use in Chat** 按钮注入模板提示。\n\n<details>\n<summary><strong>Chat 截图</strong></summary>\n\n<p align=\"center\">\n  <img src=\"public/screenshots/chat.png\" alt=\"Chat 界面\" width=\"1000\">\n</p>\n\n</details>\n\n描述你的研究想法 — 即使只是一个大概的方向也可以。Agent 会使用 `inno-pipeline-planner` skill 与你交互，然后生成：\n- `.pipeline/docs/research_brief.json`（结构化研究简报）\n- `.pipeline/tasks/tasks.json`（任务流水线）\n\n</details>\n\n<details>\n<summary><strong>第 3 步 — 在 Research Lab 查看并执行任务</strong></summary>\n\n切换到 **Research Lab** 查看生成的任务、进度指标和研究产物，然后执行任务：\n\n<details>\n<summary><strong>任务执行截图</strong></summary>\n\n<p align=\"center\">\n  <img src=\"public/screenshots/task_list.png\" alt=\"任务列表与执行流程\" width=\"1000\">\n</p>\n\n</details>\n\n1. 通过 **CLI 选择器** 选择后端（Claude Code、Gemini CLI 或 Codex）。\n2. 在 **Research Lab** 中对 pending 任务点击 **Go to Chat** 或 **Use in Chat**。\n3. Agent 执行任务并将结果写回项目。\n\n</details>\n\n<details>\n<summary><strong>可选项 — 在 Project Dashboard 中运行 Auto Research</strong></summary>\n\n如果你希望 Dr. Claw 端到端自动执行整条任务流水线，可以使用 **Auto Research**：\n1. 打开 **Settings → Email**，配置 `Notification Email`、`Sender Email` 和 `Resend API Key`。\n2. 确认项目中已经存在 `.pipeline/docs/research_brief.json` 和 `.pipeline/tasks/tasks.json`。\n3. 打开 **Project Dashboard**，在项目卡片上点击 **Auto Research**。\n4. 点击 **Open Session** 可随时跳转到本次运行创建的 Claude session。\n5. 所有任务完成后，Dr. Claw 会发送完成通知邮件；如果 session 中途被打断，系统会自动恢复 stale run，避免它一直卡在 `running` 状态。\n\n</details>\n\n<details>\n<summary><strong>可选项 — 配置 Auto Research Hub</strong></summary>\n\nAuto Research Hub（侧边栏 → **Auto Research**）让你浏览和配置第三方研究工具包。目前支持三个工具包：\n\n| 工具包 | 说明 | 依赖 |\n|--------|------|------|\n| **ARIS** | 端到端自动研究流水线，支持跨模型对抗审稿 | 需要配置 MCP Reviewer |\n| **Autoresearch** | 目标驱动的迭代引擎，含 9 个子命令 | 零依赖 |\n| **DeepScientist** | 13 阶段研究 OS（ICLR 2026），含 50+ 模板 | 零依赖 |\n\n**使用方法：**\n\n1. 在侧边栏点击 **Auto Research** 打开 Hub 页面。\n2. 选择一个工具包，展开 **包含的工作流** 查看可用的 slash 命令。\n3. 如果工具包需要配置（如 ARIS），展开 **环境配置**，选择 MCP 审稿服务，输入 API Key，然后点击 **一键配置**。\n4. 前往 **Chat**，点击输入框上方的 **Auto Research** 下拉菜单，选择对应的工具包和工作流。\n5. 输入研究方向或主题，Agent 将端到端执行所选工作流，并将结果写入项目。\n\n> 零依赖工具包（Autoresearch、DeepScientist）开箱即用，无需配置步骤。\n\n</details>\n\n<details>\n<a id=\"troubleshooting-web-search-zh\"></a>\n<summary><strong>第 4 步 — 网页搜索排障</strong></summary>\n\n如果 Agent 不能搜索网页，通常是当前权限设置过于严格。除此之外，也需要确认当前进程是否仍然启用了运行时网络锁。\n\n1. 检查运行时网络锁：\n```bash\necho \"${CODEX_SANDBOX_NETWORK_DISABLED:-0}\"\n```\n\n如果输出为 `1`，即使在 Settings 中放宽权限，网络请求仍可能被阻止。需要在部署或启动层（shell profile、systemd、Docker、PM2）移除或覆盖该变量，然后重启 Dr. Claw。\n\n2. 打开 **Settings**（侧边栏齿轮图标）。\n3. 进入 **Permissions**，然后选择当前使用的 Agent：\n- **Claude Code**：\n  - 在 **Allowed Tools** 中允许 `WebSearch`、`WebFetch`。\n  - 确认这两个工具不在 **Blocked Tools** 中。\n  - 若希望减少确认弹窗，可开启 **Skip permission prompts**。\n- **Gemini CLI**：\n  - 选择合适的 **Permission Mode**。\n  - 若需要网页访问，在 **Allowed Tools** 中允许 `google_web_search` 与 `web_fetch`。\n  - 确认它们不在 **Blocked Tools** 中。\n- **Codex**：\n  - 在 **Permission Mode** 中切换到 **Bypass Permissions**（在需要网页访问时）。\n4. 返回 **Chat**，发送新消息并重新尝试网页搜索。\n\nCodex 权限模式说明：\n- **Default / Accept Edits**：仍是沙箱执行，网络可能继续受会话策略限制。\n- **Bypass Permissions**：`sandboxMode=danger-full-access`，具有完整磁盘与网络访问权限。\n\n安全提示：\n- 仅在可信项目/环境中使用更宽松的权限设置。\n- 完成网页搜索后，建议切回更安全的设置。\n\n</details>\n\n<details>\n<summary><strong>第 5 步 — 解决\"Workspace Trust\"或首次运行错误</strong></summary>\n\n每个 Agent 首次在项目目录中执行代码时，可能需要进行一次性的信任确认或登录。如果 Chat 窗口卡住或弹出信任/认证提示，请切换到 Dr. Claw 内置的 **Shell** 标签页，在那里同意提示即可。\n\n操作步骤：\n1. 切换到 Dr. Claw 的 **Shell** 标签页。\n2. 在 Shell 中同意 trust/auth 提示。\n3. 返回 **Chat** 重新发送消息即可。\n\nDr. Claw 默认已经开启 trust 流程，因此通常**不需要**再手动输入额外的 trust 指令。\n\n信任状态按目录持久保存，每个项目只需操作一次。\n\n> **Shell 标签页无法使用？** 如果 Shell 标签页报 `Error: posix_spawnp failed`，请参阅 [docs/faq.zh-CN.md](docs/faq.zh-CN.md) 中的修复方法，然后重试。\n\n您也可以随时切换到其他标签页：\n\n| 标签页 | 功能说明 |\n|--------|----------|\n| **Chat** | 从这里开始。用它描述研究想法、生成流水线，并用所选 Agent 执行任务。 |\n| **Survey** | 查看当前项目的论文、文献图谱、笔记和调研阶段任务。 |\n| **Research Lab** | 在一个视图里查看研究简报、任务列表、进度和已生成的产物。 |\n| **Skills** | 浏览已安装的 Skills，查看内容，并导入本地 Skills。 |\n| **Compute** | 在一个位置管理计算资源并运行实验工作负载。 |\n| **Shell** | 需要直接使用 CLI、处理 trust 提示或手动执行命令时，使用内置终端。 |\n| **Files** | 浏览、打开、创建、重命名和编辑项目文件，并支持语法高亮。 |\n| **Git** | 不离开应用即可查看差异、暂存更改、提交和切换分支。 |\n\n</details>\n\n<details>\n<summary><strong>研究技能（Skills）</strong></summary>\n\nDr. Claw 当前以生成后的 **Pipeline Task List** 作为执行流水线。\n项目内置了 **100+ 个 skills**（位于 `skills/`），用于辅助科研任务，包括 idea 探索、代码调研、实验开发/分析、论文写作、审阅与交付等。\nAgent 会自动发现这些 skills，并在任务执行过程中按需调用。\n\n</details>\n\n## Claude Code 插件\n\n如果你主要使用 **Claude Code** 作为编程代理，希望在终端中直接使用 Dr. Claw 的研究流水线而无需运行完整的 Web UI，可以使用独立的 Claude Code 插件：\n\n**[`OpenLAIR/dr-claw-plugin-cc`](https://github.com/OpenLAIR/dr-claw-plugin-cc)**\n\n该插件提供 4 个斜杠命令（`/drclaw:setup`、`/drclaw:status`、`/drclaw:run`、`/drclaw:reset`），让你可以初始化研究项目、跟踪 5 个流水线阶段的进度并执行任务 — 全部在 Claude Code 会话中完成。\n\n### 安装\n\n在任意 Claude Code 会话中运行：\n\n```\n/plugin marketplace add OpenLAIR/dr-claw-plugin-cc\n/plugin install dr-claw@dr-claw\n/reload-plugins\n```\n\n插件安装完成后在后续会话中均可使用。运行 `/drclaw:setup` 即可初始化新的研究项目。\n\n> **安装范围：** 默认安装到用户级别（所有项目可用）。添加 `--scope project` 可仅安装到当前项目，`--scope local` 可安装到本机。\n\n### 包含内容\n\n- **60+ 内置技能** — 从 Dr. Claw 技能库中精选的子集，涵盖文献调研、想法生成、实验开发、论文写作等\n- **3 种项目模板** — 方法/模型、数据集/基准、综述论文，每种都有预配置的任务流水线\n- **自动检测** — 插件在会话启动时自动检测已有的流水线项目并显示当前进度\n- **相同数据格式** — 插件创建的项目使用与完整 Dr. Claw 工作区相同的 `research_brief.json` 和 `tasks.json` 格式，两者可以互通\n\n> **注意：** 插件内置的技能是本仓库技能库的快照，技能同步由维护者手动完成 — 详见插件仓库的 README。\n\n## 补充说明\n<details>\n<summary><span style=\"font-size: 1.17em; font-weight: 600;\">移动端、架构与安全配置</span></summary>\n\n### 移动端与平板\n\nDr. Claw 完全响应式设计。在移动设备上：\n\n- **底部选项卡栏** — 方便拇指操作\n- **滑动手势** — 触摸优化的控制方式\n- **添加到主屏幕** — 可作为 PWA（渐进式 Web 应用）使用\n\n### 架构\n\n#### 系统概览\n\n```\n┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐\n│   Frontend      │    │   Backend       │    │  Agent     │\n│   (React/Vite)  │◄──►│ (Express/WS)    │◄──►│  Integration    │\n│                 │    │                 │    │                │\n└─────────────────┘    └─────────────────┘    └─────────────────┘\n```\n\n#### 后端 (Node.js + Express)\n- **Express 服务器** - 具有静态文件服务的 RESTful API\n- **WebSocket 服务器** - 用于聊天和项目刷新的通信\n- **Agent 集成 (Claude Code、Gemini CLI、Codex、OpenRouter)** - 负责进程拉起、流式输出与会话管理\n- **文件系统 API** - 为项目公开文件浏览器\n\n#### 前端 (React + Vite)\n- **React 18** - 带有 hooks 的现代组件架构\n- **CodeMirror** - 具有语法高亮的高级代码编辑器\n\n### 安全与工具配置\n\n**🔒 重要提示**: 各 Agent 的权限都是按提供方独立配置的。在开启宽松的文件、Shell 或网页访问前，请先检查 **Settings → Permissions**。\n\n#### 启用工具\n\n为了安全地使用网页搜索和高权限工具：\n\n1. **打开 Settings** - 点击侧边栏中的齿轮图标\n2. **选择 Agent** - Claude Code、Gemini CLI 或 Codex\n3. **按需启用** - 仅开启当前任务需要的工具或权限模式\n4. **应用设置** - 您的偏好设置将保存在本地\n\n**推荐方法**: 优先使用最保守的权限模式，只在确实需要时放宽配置。\n\n</details>\n\n## 贡献\n<details>\n<summary><span style=\"font-size: 1.17em; font-weight: 600;\">展开内容</span></summary>\n\n我们欢迎贡献！请遵循以下指南：\n\n#### 入门\n1. **Fork** 仓库\n2. **克隆** 您的 fork：`git clone <your-fork-url>`\n3. **安装** 依赖：`npm install`\n4. **创建** 特性分支：`git checkout -b feature/amazing-feature`\n\n#### 开发流程\n1. **进行更改**，遵循现有代码风格\n2. **彻底测试** - 确保所有功能正常工作\n3. **运行质量检查**：`npm run typecheck && npm run build`\n4. **提交**，遵循 [Conventional Commits](https://conventionalcommits.org/) 的描述性消息\n5. **推送** 到您的分支：`git push origin feature/amazing-feature`\n6. **提交** 拉取请求，包括：\n   - 更改的清晰描述\n   - UI 更改的截图\n   - 适用时的测试结果\n\n#### 贡献内容\n- **错误修复** - 帮助我们提高稳定性\n- **新功能** - 增强功能（先在 issue 中讨论）\n- **文档** - 改进指南和 API 文档\n- **UI/UX 改进** - 更好的用户体验\n- **性能优化** - 让它更快\n\n</details>\n\n安装与故障排除请参阅 [FAQ](docs/faq.zh-CN.md)。\n\n## 许可证\n\n本仓库包含一个组合作品。\n\n其中，源自 Claude Code UI 的上游部分继续适用 GNU General Public License v3.0（GPL-3.0）；Dr. Claw Contributors 的原创修改与新增部分适用 GNU Affero General Public License v3.0（AGPL-3.0）。\n\n完整许可证文本与适用范围说明请参见 [LICENSE](LICENSE) 和 [NOTICE](NOTICE)。\n\n## 引用\n\n如果这个项目对你的研究有帮助，欢迎引用我们的工作：\n\n```bibtex\n@misc{song2026drclaw,\n  author       = {Dingjie Song and Hanrong Zhang and Dawei Liu and Yixin Liu and Zongxia Li and Zhengqing Yuan and Siqi Zhang and Lichao Sun},\n  title        = {Dr. Claw: An AI Research Workspace from Idea to Paper},\n  year         = {2026},\n  organization = {GitHub},\n  url          = {https://github.com/OpenLAIR/dr-claw},\n  homepage     = {https://openlair.github.io/dr-claw},\n}\n```\n\n## 致谢\n\n### 构建工具\n- **[Claude Code](https://docs.anthropic.com/en/docs/claude-code)** - Anthropic 的官方 CLI\n- **[Gemini CLI](https://geminicli.com/docs/get-started/installation/)** - Google 的 Gemini 命令行智能体\n- **[Codex](https://developers.openai.com/codex)** - OpenAI Codex\n- **[React](https://react.dev/)** - 用户界面库\n- **[Vite](https://vitejs.dev/)** - 快速构建工具和开发服务器\n- **[Tailwind CSS](https://tailwindcss.com/)** - 实用优先的 CSS 框架\n- **[CodeMirror](https://codemirror.net/)** - 高级代码编辑器\n\n### 致谢与参考\n- **[Claude Code UI](https://github.com/siteboon/claudecodeui)** — Dr. Claw 基于此项目。详见 [NOTICE](NOTICE)。\n- **[AI Researcher](https://github.com/HKUDS/AI-Researcher/)**（HKUDS）— 研究流程与智能体研究灵感致谢与参考。\n- **[Vibe-Scholar](https://github.com/Mr-Tieguigui/Vibe-Scholar)** — AI 原生研究工作空间方向的灵感来源。\n- **[autoresearch](https://github.com/karpathy/autoresearch)** — 自主研究编排与端到端执行的灵感来源。\n- **[Autoresearch (uditgoenka)](https://github.com/uditgoenka/autoresearch)** — 目标驱动的自主迭代引擎，已集成为 Auto Research Hub 工具包。\n- **[ARIS](https://github.com/wanshuiyin/Auto-claude-code-research-in-sleep)** — 端到端自动研究流水线，支持跨模型对抗审稿，已集成为 Auto Research Hub 工具包。\n- **[DeepScientist](https://github.com/ResearAI/DeepScientist)** — ICLR 2026 的 13 阶段自主研究 OS，已集成为 Auto Research Hub 工具包。\n\n## 支持与社区\n\n### 保持更新\n- **Star** 此仓库以表示支持\n- **Watch** 以获取更新和新版本\n- **Follow** 项目以获取公告\n\n---\n\n<div align=\"center\">\n  <strong>Dr. Claw — 从想法到论文。</strong>\n</div>\n","readmeFilename":"README.zh-CN.md"}