2026-03-30 00:45:08

本文整理一套在VS Code中配置Markdown工作流的方法,使其在wikilink、附件管理與多媒體預覽上接近Obsidian。
未有旨在複製Obsidian的界面。重點在於讓編輯、貼圖與預覽行為盡量一致。
建議安裝以下3類插件:
這套做法分成兩層:
.vscode/settings.json與.vscode/obsidian-preview.css,讓整個專案的Markdown行為保持一致。在.vscode目錄建立obsidian-preview.css。這份樣式只處理版面與可讀性,顏色直接讀取VS Code主題變數,避免在深色模式下出現亮底預覽。
:root {
--obsidian-text: var(--vscode-editor-foreground, #2a2a2a);
--obsidian-bg: var(--vscode-editor-background, #ffffff);
--obsidian-muted: var(--vscode-descriptionForeground, #6b7280);
--obsidian-link: var(--vscode-textLink-foreground, #5b7db1);
--obsidian-border: var(--vscode-panel-border, #d7dce3);
--obsidian-code-bg: var(--vscode-textCodeBlock-background, #f5f7fa);
}
body {
margin: 0 auto;
max-width: 860px;
background: var(--obsidian-bg);
color: var(--obsidian-text);
font-family: "Source Han Sans", "Source Han Sans HC", "Source Han Sans TC",
"Source Han Sans JP", sans-serif;
line-height: 1.75;
}
code,
pre,
kbd,
samp {
font-family: Consolas, "Cascadia Code", monospace;
}
a {
color: var(--obsidian-link);
text-decoration-thickness: 1px;
text-underline-offset: 2px;
}
img,
video,
audio {
max-width: 100%;
}
blockquote {
margin-left: 0;
padding-left: 1rem;
border-left: 3px solid var(--obsidian-border);
color: var(--obsidian-muted);
}
pre,
code {
background: var(--obsidian-code-bg);
}
pre {
padding: 0.9rem 1rem;
border-radius: 8px;
}
table {
border-collapse: collapse;
}
th,
td {
border: 1px solid var(--obsidian-border);
padding: 0.5rem 0.75rem;
}
如果你不想綁定預覽字體,可以刪除body中的font-family一行。
這份CSS主要服務VS Code內建Markdown預覽,讓它在不同主題下都維持穩定的可讀性。
以下示例只保留和Markdown工作流直接相關的設定。
{
"markdown.updateLinksOnFileMove.enabled": "always",
"markdown.copyFiles.destination": {
"/**/*.md": "_resources/"
},
"markdown.preview.scrollEditorWithPreview": true,
"markdown.preview.scrollPreviewWithEditor": true,
"markdown.styles": [
".vscode/obsidian-preview.css"
],
"foam.files.exclude": [
".venv/**/*",
".vscode/**/*",
".github/**/*",
".MWebMetaData/**/*",
".git/**/*",
"**/sync.ffs_db",
"**/sync.ffs_lock",
"**/desktop.ini",
"desktop.ini"
],
"foam.files.newNotePath": "currentDir",
"foam.templates.folder": "Templates",
"foam.links.sync.enable": true,
"foam.links.hover.enable": true,
"markdown-preview-enhanced.enableWikiLinkSyntax": true,
"markdown-preview-enhanced.useGitHubStylePipedLink": false,
"markdown-preview-enhanced.wikiLinkTargetFileExtension": ".md",
"markdown-preview-enhanced.scrollSync": true,
"markdown-preview-enhanced.automaticallyShowPreviewOfMarkdownBeingEdited": true,
"markdown-preview-enhanced.enableHTML5Embed": true,
"markdown-preview-enhanced.HTML5EmbedUseImageSyntax": true,
"markdown-image.base.uploadMethod": "Local",
"markdown-image.local.path": "_resources",
"markdown-image.local.referencePath": "",
"[markdown]": {
"editor.wordWrap": "on",
"files.trimTrailingWhitespace": false
}
}
這裡有兩點需要特別說明:
markdown.copyFiles.destination控制拖放或複製附件時,VS Code內建Markdown功能使用的附件目錄。markdown-image.local.path控制Markdown Image貼圖時的儲存位置。本文使用_resources,表示圖片儲存在當前Markdown檔同級的_resources目錄。若你想改成工作區根目錄的統一附件倉,應寫成/_resources。如果你在Markdown Preview Enhanced中採用none.css之類較少干預的預覽主題,有時會遇到fenced code block背景不一致,出現整塊底色與局部小底色混在一起的情況。這時可在工作區根目錄建立.crossnote/style.less:
.markdown-preview.markdown-preview pre {
background: var(--vscode-textCodeBlock-background, #1f252d) !important;
}
.markdown-preview.markdown-preview pre code,
.markdown-preview.markdown-preview pre code *,
.markdown-preview.markdown-preview pre tt,
.markdown-preview.markdown-preview pre tt * {
background: transparent !important;
box-shadow: none !important;
}
這份樣式只影響pre中的程式碼,不會改動行內code。
若你希望Markdown Preview Enhanced正文不額外套主題,而是盡量跟隨VS Code本身的明暗風格,可以把這類偏好放在使用者自己的settings.json中,而不要寫進工作區:
{
"markdown-preview-enhanced.previewTheme": "none.css",
"markdown-preview-enhanced.codeBlockTheme": "github-dark.css"
}
這屬於個人閱讀偏好,不屬於專案必需配置。
_resources,就同步修改markdown.copyFiles.destination與markdown-image.local.path。Templates,就調整foam.templates.folder。foam.files.exclude應按自己的vault與工作區結構增刪,不必照抄。markdown-image.*配置換成對應的pasteImage.*鍵;若已切到Markdown Image,記得清理舊的pasteImage.*殘留設定。obsidian-preview.css中的font-family。Developer: Reload Window。Markdown Preview Enhanced: Open Preview to the Side作為主要預覽窗格。完成後,VS Code即可在編輯、預覽與附件管理上提供一套接近Obsidian的Markdown工作流,同時保留VS Code本身的擴充能力與由Git驅動的版本管理環境。
2026-02-02 21:48:53
LM Studio是一款允许用户在本地下载、运行和管理大语言模型 (LLM) 的桌面应用程序,支持在Windows、macOS 和Linux上同AI对话、编写代码,无庸依赖云端。
本文介绍如何在Windows环境(笔者用的是Python 3.13 Microsoft Store版)安装Zotero MCP并配置给LM Studio使用。
需要安装以下软件:
Zotero默认关闭此功能,需手动开启。
在终端运行安装命令。
使用uv(官方推荐):
# 如果尚未安装 uv
pip install uv
# 安装 zotero-mcp
uv tool install "git+https://github.com/54yyyu/zotero-mcp.git"
或使用pip:
pip install -U "git+https://github.com/54yyyu/zotero-mcp.git"
安装后若提示"The script zotero-mcp.exe is installed in ... which is not on PATH",说明系统无法直接识别命令。复制提示信息中zotero-mcp.exe的完整路径(例如:C:\Users\[用户名]\AppData\...\Scripts\zotero-mcp.exe),后续配置需要用到。
打开LM Studio,点击+ Install以打开mcp.json。在 mcpServers 字段中加入以下配置:
{
"mcpServers": {
"zotero": {
"command": "C:\\Users\\[你的用户名]\\AppData\\...\\Scripts\\zotero-mcp.exe",
"args": [],
"env": {
"ZOTERO_LOCAL": "true"
}
}
}
}
command:填入上一步获取的zotero-mcp.exe绝对路径。JSON中路径的反斜杠需写作双斜杠\\。env:ZOTERO_LOCAL设为true以启用本地全文检索支持。默认仅支持关键词搜索。如需语义检索,需手动建立索引。
在命令提示符使用完整路径运行update-db命令(路径请按实际情况替换):
C:\Users\[你的用户名]\AppData\...\Scripts\zotero-mcp.exe update-db
2026-02-02 17:13:33
自托管WordPress中安装了Jetpack插件后,会见到如牛皮癣般在文本写作的各个环节内嵌入于界面的“AI助手”。对于AI的态度本文不赘述——但是Jetpack的AI助手只会给每个新建的WordPress站点免费用那么几次。免费次数用光后,就需要购买增值服务。为产品付费无可厚非。但是如果不买,大剌剌的充值广告也仍然霸占网站后台界面,非常难看,横亘在那儿也不便于使用其他WordPress功能。
看到这儿,如果你也希望为站点内所有用户彻底禁用Jetpack的所有AI功能,可以将以下代码添加到主题的functions.php文件或使用Code Snippets插件:
add_filter( 'jetpack_ai_enabled', '__return_false' );
此代码通过调用Jetpack AI钩子直接关闭该模块。
征引一则Reddit回帖:
如果你不是开发者,而且你没有那么多经验,那么Jetpack就很棒。如果你有经验,那么你可能不需要Jetpack…
我不认为Jetpack是坏事或好事,它只是为某些用户准备的,而对其他人来说,它是不需要的。
pimplyteen@Reddit
2026-02-02 16:53:56
此指南适用于开发环境或通过Git管理的生产环境。Docker环境可用。
MCP Adapter既可以作为Composer库被其他插件引用(推荐),也可以作为独立插件运行。
vendor目录(第三方库),必须在本地通过Composer生成。进入WordPress的插件目录并克隆仓库:
cd /path/to/wp-content/plugins/
git clone https://github.com/WordPress/mcp-adapter.git
cd mcp-adapter
此步骤用于生成vendor/autoload.php文件。若跳过此步,插件将无法运行。
Docker环境下的命令:
docker run --rm \
-v $(pwd):/app \
composer install
会下载wordpress/abilities-api等核心依赖并生成自动加载映射。
# 使用 WP-CLI 或在后台激活
wp plugin activate mcp-adapter
配置WP_API_URL时,必须严格匹配站点的实际协议。
http://yousite.com/...
https://yousite.com/...
如果站点强制使用 HTTPS(生产环境标准配置),而在配置中填写了http://,WordPress或服务器(Nginx/Apache)会返回一个301 Redirect跳转到HTTPS。在这个跳转过程中,出于安全规范,客户端发送的Authorization标头(包含密码)通常会被丢弃。这将导致请求虽然到达了最终地址,但因丢失凭据而报401 Unauthorized错误。
由于插件通过Git安装,勿使用WordPress后台的“更新”按钮,以免覆盖Git配置。应按照以下步骤进行更新:
获取最新的功能和修复:
cd /path/to/wp-content/plugins/mcp-adapter
git pull origin trunk
代码更新可能包含依赖包版本的变化(composer.lock变更)。每次git pull后运行:
docker run --rm \
-v $(pwd):/app \
composer install
如果跳过此步,可能会因为缺少新引入的类文件导致网站出现Fatal Error。
composer install,导致vendor/autoload.php缺失。Jetpack Autoloader来解决多版本冲突(composer require automattic/jetpack-autoloader),但在单插件模式下非必须。MCP error -32603: WordPress API error (401),且确认密码无误。mcp.json中的WP_API_URL是否误写为了http://。将其修改为https://以避免重定向导致的凭据丢失。2026-01-31 15:00:00

在Linux中,权限(755/644)必须配合正确的所有权(User:Group)才能生效。换言之,PHP进程(即WordPress)必须是文件/目录的“所有者”,才能在755/644权限下进行写入(上传图片、升级插件、生成缓存)。
确保位于WordPress根目录(通常为/var/www/html或public_html)下执行。
对当前目录下所有文件的所有者和组,行统一之设定。兹以33 (www-data) 为例(后文同此)。
chown -R 33:33 .
按:使用+模式代替\;可显著提高执行效率。
find . -type d -exec chmod 755 {} +
find . -type f -exec chmod 644 {} +
针对敏感文件设置更严格的只读权限。
# wp-config.php 包含数据库密码,生产环境应设为 440 或 400
# 前提:文件所有者必须是 PHP 运行用户,否则设为 400 后 PHP 无法读取将导致网站无法访问
chmod 440 wp-config.php
# .htaccess 控制伪静态,通常设为 644,若不频繁修改可设为 604
chmod 644 .htaccess
按,任何要求设置777权限的插件通常都存在设计缺陷与安全隐患。
但在应用上述“严格权限”时,以下插件模块可能会遇到权限阻碍:
该插件需要向wp-config.php写入开启缓存的定义代码,并修改.htaccess。当wp-config.php被设置为440时,插件后台更新设置会报错或白屏。是故,作为运维策略:
chmod 644 wp-config.php
chmod 440 wp-config.php
按:日常运行中,插件生成的静态文件在wp-content/cache,该目录保持755即可正常读写。
插件直接写入wp-content/languages目录生成.po/.mo文件。
只要第一步的chown -R 33:33 .执行正确,标准755目录权限即可满足需求。如果无法保存翻译,通常是所有者变成了别的(例如:在www-data才OK的情况下,所有者却变为了root)。
wp-content/uploads。ls -ld wp-content/uploads检查权限是否为drwxr-xr-x (755)且所有者为www-data。另外,像WP File Manager这样的插件,虽然对于共享主机用户来说非常地便利,但其风险其实极高。如果该插件存在0-day漏洞,攻击者可绕过WordPress权限体系,直接以www-data身份操作服务器文件(上传Webshell),此时440或644设置将失效。对于自托管用户来说,如已经拥有SSH命令行权限,该插件会增加不必要的攻击面。不如卸载。
错误:440导致某些环境白屏
如果服务器使用的不是PHP-FPM (User: www-data) 而是以CGI模式运行(User: 系统账户),将wp-config.php设为440且所有者为www-data(或33)可能导致文件无法被读取,引发HTTP 500错误。
插件更新失败 / 无法创建目录
ls -ld wp-content/plugins,确保输出包含www-data www-data(或33 33)。如果显示的是root root,插件将无法更新。Git/开发环境
如使用Git管理代码,.git目录的权限不要设置为755/644,且不应允许Web访问。宜在Nginx/Apache配置中显式禁止访问.git目录。
确认在WordPress根目录后,按顺序执行:
# 1. 修正所有权 (兹以www-data为例,即id 33)
chown -R 33:33 .
# 2. 修正目录权限
find . -type d -exec chmod 755 {} +
# 3. 修正文件权限
find . -type f -exec chmod 644 {} +
# 4. 加固配置文件 (注意:配置 Super Cache 插件时可能需临时改为 640/644)
chmod 440 wp-config.php
# 5. 确保 .htaccess 对 WP 可写但安全
chmod 644 .htaccess
2025-10-29 19:26:51

GnuCash內置了「線上報價」(Finance::Quote) 功能,允許軟體自動從網路獲取股票、基金和貨幣的最新價格。
但在Windows系統上,安裝此功能時常因缺少依賴項或權限設定而導致失敗。本教程將說明完整的安裝步驟,以及如何修復常見的依賴安裝錯誤,以確保功能正常運作。
安裝過程需要使用PowerShell操作。
PowerShell。Windows預設可能會限制腳本執行。需要先為當前的PowerShell視窗解除限制。
在藍色窗口中,複製並貼上以下指令,然後按Enter鍵:
Set-ExecutionPolicy -ExecutionPolicy Bypass -Scope Process
如出現提示,請輸入Y並按Enter鍵確認。
接下來執行GnuCash提供的安裝腳本。
切換到GnuCash的程式目錄。複製並貼上以下指令,然後按Enter(一般來說是此路徑,但還是要確認下自己電腦內實際的安裝路徑):
cd "c:\Program Files (x86)\gnucash\bin"
執行.ps1安裝腳本(注意是.ps1文件,不是.cmd):
.\install-fq-mods.ps1
執行上述腳本時,日誌中可能會出現Result: FAIL或NOT OK的錯誤訊息。這是因為Finance::Quote依賴許多Perl模組,若其中任何一個測試失敗,安裝過程就會受到影響。
即使安裝腳本最後顯示:
>> Installation succeeded <<
Press Enter to continue...
若前方的日誌中有報錯,代表並未真正安裝成功。必須手動修復這些失敗的依賴項。
Date::Simple失敗如果日誌顯示類似以下的錯誤:
Result: FAILFailed 1/3 test programs. 1/233 subtests failed.gmake: *** [makefile:1034: test_dynamic] Error 1IZUT/Date-Simple-3.03.tar.gzC:\STRAWB~1\c\bin\gmake.exe test -- NOT OKStopping: 'install' failed for 'Date::Simple'.
這表示Date::Simple模組因測試未通過而中止安裝。
修復方法:
c:\Strawberry\perl\bin\cpan.bat
cpan[1]>。force install指令強制安裝該模組(跳過測試):force install Date::Simple
exit並按Enter鍵,退回到PowerShell提示符。Module::CPANTS::Analyse失敗修復完前一個模組後,必須重新執行安裝腳本:
.\install-fq-mods.ps1
此時可能會發現另一個模組失敗。例如:
Result: FAIL[中略]Stopping: 'install' failed for 'I/IS/ISHIGAKI/Module-CPANTS-Analyse-1.02.tar.gz'.
修復方法:
c:\Strawberry\perl\bin\cpan.bat
force install Module::CPANTS::Analyse
exit退出。重複上述步驟,即:
.\install-fq-mods.ps1。... NOT OK的錯誤。cpan.bat使用force install [模組名]進行修復。.\install-fq-mods.ps1)時,日誌顯示所有測試均為PASS和OK,並顯示:
BPSCHUCK/Finance-Quote-1.67.tar.gzC:\STRAWB~1\c\bin\gmake.exe install UNINST=1 -- OK>> Installation succeeded <<
此時才代表安裝真正成功。
安裝完成後,需驗證GnuCash能否正確載入模組。
"c:\Program Files (x86)\gnucash\bin\gnucash-cli.exe" --quotes info
Failed to initialize... missing_modules,表示安裝仍未成功,需回頭檢查依賴項。* 20:09:31 WARN <gnc.price-quotes> [GncFQQuoteSource::set_api_key()] No Alpha Vantage API key set...
此Alpha Vantage API key警告屬於正常現象,僅提示未設定特定數據源的API金鑰,但證明GnuCash已成功載入Finance::Quote模組。
注意,Finance::Quote適用於獲取股票和主要貨幣匯率,但通常無法自動獲取——比方說中國的場外基金淨值等。對於此類基金,大概還是得定期前往 工具 -> 價格編輯器 (Price Editor) 手動更新淨值。