YishenTu/claudian
GitHub: YishenTu/claudian
一款将 Claude Code 深度集成到 Obsidian 的插件,赋予 AI 在笔记库中进行文件操作、命令执行和多步骤工作流的完整代理能力。
Stars: 4341 | Forks: 246
# Claudian




一个将 Claude Code 作为 AI 协作者嵌入您的 Obsidian 库的插件。您的库将成为 Claude 的工作目录,赋予其完整的代理能力:文件读/写、搜索、bash 命令和多步骤工作流。
## 功能特性
- **完整的代理能力**:利用 Claude Code 的强大功能,在您的 Obsidian 库中读取、写入和编辑文件、搜索以及执行 bash 命令。
- **上下文感知**:自动附加当前焦点的笔记,使用 `@` 提及文件,通过标签排除笔记,包含编辑器选中的内容(高亮),并访问外部目录以获取额外上下文。
- **视觉支持**:通过拖放、粘贴或文件路径发送图片进行分析。
- **内联编辑**:直接在笔记中编辑选定的文本或在光标位置插入内容,支持单词级别的差异预览,并可访问只读工具以获取上下文。
- **指令模式 (`#`)**:直接从聊天输入框向您的系统提示词添加精细化的自定义指令,并可在模态框中进行审查/编辑。
- **斜杠命令**:创建由 `/command` 触发的可重用提示词模板,支持参数占位符、`@file` 引用和可选的内联 bash 替换。
- **技能**:使用可根据上下文自动调用的可重用能力模块扩展 Claudian,兼容 Claude Code 的技能格式。
- **自定义 Agent**:定义 Claude 可以调用的自定义子代理,支持工具限制和模型覆盖。
- **Claude Code 插件**:启用通过 CLI 安装的 Claude Code 插件,自动从 `~/.claude/plugins` 发现,并支持单个库配置。插件技能、Agent 和斜杠命令无缝集成。
- **MCP 支持**:通过模型上下文协议服务器(stdio、SSE、HTTP)连接外部工具和数据源,支持上下文保存模式和 `@` 提及激活。
- **高级模型控制**:在 Haiku、Sonnet 和 Opus 之间选择,通过环境变量配置自定义模型,微调思考预算,并启用具有 1M 上下文窗口的 Opus 和 Sonnet(需要 Max 订阅或额外使用量)。
- **计划模式**:在聊天输入框中通过 Shift+Tab 切换计划模式。Claudian 在实施前进行探索和设计,提交计划以供批准,可选择在新会话中批准、在当前会话中继续或提供反馈。
- **安全性**:权限模式(YOLO/Safe/Plan)、安全黑名单以及具有符号链接安全检查的库限制。
- **Chrome 中的 Claude**:允许 Claude 通过 `claude-in-chrome` 扩展与 Chrome 交互。
## 系统要求
- 已安装 [Claude Code CLI](https://code.claude.com/docs/en/overview)(强烈建议通过 Native Install 安装 Claude Code)
- Obsidian v1.8.9+
- Claude 订阅/API 或支持 Anthropic API 格式的自定义模型提供商([Openrouter](https://openrouter.ai/docs/guides/guides/claude-code-integration)、[Kimi](https://platform.moonshot.ai/docs/guide/agent-support)、[GLM](https://docs.z.ai/devpack/tool/claude)、[DeepSeek](https://api-docs.deepseek.com/guides/anthropic_api) 等)
- 仅限桌面端(macOS、Linux、Windows)
## 安装说明
### 从 GitHub Release 安装(推荐)
1. 从 [最新版本](https://github.com/YishenTu/claudian/releases/latest) 下载 `main.js`、`manifest.json` 和 `styles.css`
2. 在您的库的 plugins 文件夹中创建一个名为 `claudian` 的文件夹:
/path/to/vault/.obsidian/plugins/claudian/
3. 将下载的文件复制到 `claudian` 文件夹中
4. 在 Obsidian 中启用该插件:
- 设置 → 第三方插件 → 启用 "Claudian"
### 使用 BRAT
[BRAT](https://github.com/TfTHacker/obsidian42-brat)(Beta Reviewers Auto-update Tester)允许您直接从 GitHub 安装并自动更新插件。
1. 从 Obsidian 第三方插件安装 BRAT 插件
2. 在 设置 → 第三方插件 中启用 BRAT
3. 打开 BRAT 设置并点击 "Add Beta plugin"
4. 输入仓库 URL:`https://github.com/YishenTu/claudian`
5. 点击 "Add Plugin",BRAT 将自动安装 Claudian
6. 在 设置 → 第三方插件 中启用 Claudian
### 从源码安装(开发模式)
1. 将此仓库克隆到您的库的 plugins 文件夹中:
cd /path/to/vault/.obsidian/plugins
git clone https://github.com/YishenTu/claudian.git
cd claudian
2. 安装依赖并构建:
npm install
npm run build
3. 在 Obsidian 中启用该插件:
- 设置 → 第三方插件 → 启用 "Claudian"
### 开发
```
# Watch 模式
npm run dev
# Production 构建
npm run build
```
## 使用说明
**两种模式:**
1. 点击侧边栏的机器人图标或使用命令面板打开聊天
2. 选中文本 + 快捷键进行内联编辑
像使用 Claude Code 一样使用它——在您的库中读取、写入、编辑、搜索文件。
### 上下文
- **文件**:自动附加当前焦点的笔记;输入 `@` 附加其他文件
- **@-mention 下拉菜单**:输入 `@` 查看 MCP 服务器、Agent、外部上下文和库文件
- `@Agents/` 显示可供选择的自定义 Agent
- `@mcp-server` 启用上下文保存模式的 MCP 服务器
- `@folder/` 筛选来自该外部上下文的文件(例如 `@workspace/`)
- 默认显示库文件
- **选区**:在编辑器中选中文字,或在画布中选中元素,然后聊天——选区会自动包含
- **图片**:拖放、粘贴或输入路径;为 `![[image]]` 嵌入配置媒体文件夹
- **外部上下文**:点击工具栏中的文件夹图标以访问库以外的目录
### 功能
- **内联编辑**:选中文本 + 快捷键直接在笔记中编辑,支持单词级别的差异预览
- **指令模式**:输入 `#` 向系统提示词添加精细化指令
- **斜杠命令**:输入 `/` 调用自定义提示词模板或技能
- **技能**:将 `skill/SKILL.md` 文件添加到 `~/.claude/skills/` 或 `{vault}/.claude/skills/`,建议使用 Claude Code 管理技能
- **自定义 Agent**:将 `agent.md` 文件添加到 `~/.claude/agents/`(全局)或 `{vault}/.claude/agents/`(特定库);在聊天中通过 `@Agents/` 选择,或提示 Claudian 调用 Agent
- **Claude Code 插件**:通过 Settings → Claude Code Plugins 启用插件,建议使用 Claude Code 管理插件
- **MCP**:通过 Settings → MCP Servers 添加外部工具;在聊天中使用 `@mcp-server` 激活
## 配置
### 设置
**自定义**
- **用户名**:用于个性化问候的您的名字
- **排除标签**:阻止笔记自动加载的标签(例如 `sensitive`、`private`)
- **媒体文件夹**:配置库存储附件的位置,用于嵌入图片支持(例如 `attachments`)
- **自定义系统提示词**:附加到默认系统提示词的额外指令(指令模式 `#` 保存在这里)
- **启用自动滚动**:切换流式传输期间是否自动滚动到底部(默认:开启)
- **自动生成对话标题**:切换是否在发送第一条用户消息后由 AI 生成标题
- **标题生成模型**:用于自动生成对话标题的模型(默认:Auto/Haiku)
- **Vim 风格导航映射**:配置按键绑定,例如 `map w scrollUp`、`map s scrollDown`、`map i focusInput`
**快捷键**
- **内联编辑快捷键**:触发对选中文本进行内联编辑的快捷键
- **打开聊天快捷键**:打开聊天侧边栏的快捷键
**斜杠命令**
- 创建/编辑/导入/导出自定义 `/commands`(可选择覆盖模型和允许的工具)
**MCP 服务器**
- 添加/编辑/验证/删除 MCP 服务器配置,支持上下文保存模式
**Claude Code 插件**
- 启用/禁用从 `~/.claude/plugins` 发现的 Claude Code 插件
- 用户范围的插件在所有库中可用;项目范围的插件仅在匹配的库中可用
**安全**
- **加载用户 Claude 设置**:加载 `~/.claude/settings.json`(用户的 Claude Code 权限规则可能会绕过 Safe 模式)
- **启用命令黑名单**:阻止危险的 bash 命令(默认:开启)
- **被阻止的命令**:要阻止的模式(支持正则表达式,特定于平台)
- **允许的导出路径**:库之外可以导出文件的路径(默认:`~/Desktop`、`~/Downloads`)。支持 `~`、`$VAR`、`${VAR}` 和 `%VAR%`(Windows)。
**环境**
- **自定义变量**:Claude SDK 的环境变量(KEY=VALUE 格式,支持 `export ` 前缀)
- **环境片段**:保存和恢复环境变量配置
**高级**
- **Claude CLI 路径**:Claude Code CLI 的自定义路径(留空表示自动检测)
## 安全与权限
| 范围 | 访问权限 |
|-------|--------|
| **库** | 完全读/写(通过 `realpath` 确保符号链接安全) |
| **导出路径** | 仅写(例如 `~/Desktop`、`~/Downloads`) |
| **外部上下文** | 完全读/写(仅限会话期间,通过文件夹图标添加) |
- **YOLO 模式**:无批准提示;所有工具调用自动执行(默认)
- **Safe 模式**:每次工具调用都需批准提示;Bash 需要精确匹配,文件工具允许前缀匹配
- **Plan 模式**:在实施前探索并设计计划。在聊天输入框中通过 Shift+Tab 切换
## 隐私与数据使用
- **发送至 API**:您的输入、附加的文件、图片和工具调用输出。默认:Anthropic;通过 `ANTHROPIC_BASE_URL` 自定义端点。
- **本地存储**:设置、会话元数据和命令存储在 `vault/.claude/`;会话消息存储在 `~/.claude/projects/`(SDK 原生);旧版会话存储在 `vault/.claude/sessions/`。
- **无遥测**:除了您配置的 API 提供商之外,没有任何跟踪。
## 故障排除
### 找不到 Claude CLI
如果您遇到 `spawn claude ENOENT` 或 `Claude CLI not found`,说明插件无法自动检测您的 Claude 安装。常见于使用 Node 版本管理器的情况。
**解决方案**:找到您的 CLI 路径,并在 Settings → Advanced → Claude CLI path 中设置。
| 平台 | 命令 | 示例路径 |
|----------|---------|--------------|
| macOS/Linux | `which claude` | `/Users/you/.volta/bin/claude` |
| Windows (native) | `where.exe claude` | `C:\Users\you\AppData\Local\Claude\claude.exe` |
| Windows (npm) | `npm root -g` | `{root}\@anthropic-ai\claude-code\cli.js` |
**替代方案**:在 Settings → Environment → Custom variables 中将您的 Node.js bin 目录添加到 PATH。
### npm CLI 和 Node.js 不在同一目录
如果使用 npm 安装的 CLI,请检查 `claude` 和 `node` 是否在同一目录中:
```
dirname $(which claude)
dirname $(which node)
```
如果不同,Obsidian 等 GUI 应用可能找不到 Node.js。
**解决方案**:
1. 安装原生二进制文件(推荐)
2. 将 Node.js 路径添加到 Settings → Environment:`PATH=/path/to/node/bin`
**仍有问题?** [提交 GitHub issue](https://github.com/YishenTu/claudian/issues) 并附上您的平台、CLI 路径和错误消息。
## 架构
```
src/
├── main.ts # Plugin entry point
├── core/ # Core infrastructure
│ ├── agent/ # Claude Agent SDK wrapper (ClaudianService)
│ ├── agents/ # Custom agent management (AgentManager)
│ ├── commands/ # Slash command management (SlashCommandManager)
│ ├── hooks/ # PreToolUse/PostToolUse hooks
│ ├── images/ # Image caching and loading
│ ├── mcp/ # MCP server config, service, and testing
│ ├── plugins/ # Claude Code plugin discovery and management
│ ├── prompts/ # System prompts for agents
│ ├── sdk/ # SDK message transformation
│ ├── security/ # Approval, blocklist, path validation
│ ├── storage/ # Distributed storage system
│ ├── tools/ # Tool constants and utilities
│ └── types/ # Type definitions
├── features/ # Feature modules
│ ├── chat/ # Main chat view + UI, rendering, controllers, tabs
│ ├── inline-edit/ # Inline edit service + UI
│ └── settings/ # Settings tab UI
├── shared/ # Shared UI components and modals
│ ├── components/ # Input toolbar bits, dropdowns, selection highlight
│ ├── mention/ # @-mention dropdown controller
│ ├── modals/ # Instruction modal
│ └── icons.ts # Shared SVG icons
├── i18n/ # Internationalization (10 locales)
├── utils/ # Modular utility functions
└── style/ # Modular CSS (→ styles.css)
```
## 路线图
- [x] Claude Code 插件支持
- [x] 自定义 Agent(子代理)支持
- [x] Chrome 中的 Claude 支持
- [x] `/compact` 命令
- [x] 计划模式
- [x] `rewind` 和 `fork` 支持(包括 `/fork` 命令)
- [x] `!command` 支持
- [x] 工具渲染器优化
- [x] 1M Opus 和 Sonnet 模型
- [ ] Codex SDK 集成
- [ ] Hooks 和其他高级功能
[ ] 更多功能即将推出!
## 许可证
根据 [MIT License](LICENSE) 授权。
## Star 历史
## 致谢
- [Obsidian](https://obsidian.md) 提供插件 API
- [Anthropic](https://anthropic.com) 提供 Claude 和 [Claude Agent SDK](https://platform.claude.com/docs/en/agent-sdk/overview)
标签:Agentic AI, AI 协作, Bash 命令, Claude, Claude Code, CVE检测, DLL 劫持, LLM, Markdown, MCP, MITM代理, Obsidian AI, Obsidian 插件, Prompt 模板, RAG, Slashing Commands, Unmanaged PE, 上下文感知, 代码执行, 图像识别, 大语言模型, 威胁情报, 开发者工具, 文件自动化, 文本编辑, 智能写作, 本地文件访问, 模型上下文协议, 生产力工具, 知识库管理, 笔记增强, 自动化攻击, 自定义代理, 视觉分析