fix broken wikilinks in LLM_Evaluation zone; update Obsidian plugins

- Rewrite folder-relative wikilinks (resolved from vault root) to unique
  basenames or full vault-root paths so they actually resolve in Obsidian
- Fix malformed table links with spaces around the | alias separator
- Plugin updates from Obsidian (any-block, omnisearch, quickadd, etc.)
This commit is contained in:
windyboy
2026-08-21 15:44:03 +08:00
parent 93beb24961
commit 12ee06d8f8
45 changed files with 63881 additions and 20244 deletions
+2 -1
View File
@@ -7,5 +7,6 @@
"obsidian-icon-folder",
"omnisearch",
"templater-obsidian",
"dataview"
"dataview",
"obsidian-local-rest-api"
]
+1 -1
View File
@@ -1,6 +1,6 @@
{
"file-explorer": true,
"global-search": true,
"global-search": false,
"switcher": true,
"graph": true,
"backlink": true,
+9610 -2669
View File
File diff suppressed because it is too large Load Diff
+62 -13
View File
@@ -21,6 +21,7 @@
:root {
--ab-tab-root-bg-color: #0d1117;
--ab-tab-root-bd-color: #34343f;
--ab-tab-root-hv-color: #363639;
--ab-tab-root-tx-color: #9e9e9e;
--ab-bright-color: orange;
--pre-background-color: #1b1b1b;
@@ -41,6 +42,10 @@
--ab-table-border-color: var(--table-border-color);
}
.theme-light {
--ab-tab-root-hv-color: #d7d7d7;
}
html[data-theme=light] #app,
html[data-theme=dark] #app {
--ab-tab-root-bg-color: var(--vp-c-bg);
@@ -59,6 +64,7 @@ html[data-theme=light] #app {
--color-blue: #086ddd;
--color-purple: #7852ee;
--color-pink: #d53984;
--ab-tab-root-hv-color: #d7d7d7;
}
html[data-theme=dark] #app {
@@ -72,6 +78,10 @@ html[data-theme=dark] #app {
--color-pink: #fa99cd;
}
.ab-hide {
display: none !important;
}
/**
* obsidian各模式下的微调
*
@@ -107,6 +117,7 @@ html[data-theme=dark] #app {
/**
* 替换内容
* .ab-replace // 整体 (外框、圆角)
* &>.ab-note // id (仅调试模式用)
* &>.ab-note // 内容
* &>.ab-replaceEl // 内容 (感觉冗余了)
* &>.ab-button // 操作控件 (刷新/编辑/下拉框)
@@ -116,6 +127,20 @@ html[data-theme=dark] #app {
position: relative;
border-radius: 4px;
}
.ab-replace > .ab-id {
position: absolute;
top: 0;
left: 0;
display: inline-block;
height: 18px;
width: auto;
background: var(--ab-tab-root-bg-color);
color: var(--ab-tab-root-tx-color);
border-radius: 8px;
padding: 0 8px;
z-index: 10;
opacity: 0.8;
}
.ab-replace > .ab-note {
position: relative;
/*padding: 24px 12px 12px 12px;*/
@@ -134,6 +159,15 @@ html[data-theme=dark] #app {
.ab-replace > .ab-button.ab-button-3 {
right: 76px;
}
.ab-replace > .ab-button.ab-button-4 {
right: 112px;
}
.ab-replace > .ab-button.ab-button-5 {
right: 148px;
}
.ab-replace > .ab-button.ab-button-6 {
right: 184px;
}
.ab-replace > .ab-button.ab-button-select > * {
padding: 0 10px;
width: 24px;
@@ -254,12 +288,14 @@ html[data-theme=dark] #app {
.ab-note table.ab-table td, .ab-note table.ab-table th {
white-space: normal;
overflow-wrap: break-word;
padding: 2px 5px;
border: solid var(--ab-table-border-width) var(--ab-table-border-color);
}
.ab-note table.ab-table td code, .ab-note table.ab-table th code {
white-space: pre;
}
.ab-note table.ab-table td, .ab-note table.ab-table th {
padding: 2px 5px;
border: solid var(--ab-table-border-width) var(--ab-table-border-color);
}
.ab-note table.ab-table tr {
background: none;
}
@@ -418,8 +454,8 @@ html[data-theme=dark] #app {
padding-top: 4px;
}
.ab-note table.ab-list-table.ab-table-folder .ab-foldable-tr .ab-list-table-svg svg {
width: 14px;
height: 14px;
width: 13px;
height: 16px;
fill: var(--ab-bright-color);
}
.ab-note table.ab-list-table.ab-table-folder .ab-foldable-tr td:first-child {
@@ -653,6 +689,12 @@ html[data-theme=dark] #app {
column-count: 4;
-moz-column-gap: 10px;
column-gap: 10px;
}
.ab-note .ab-items.ab-card.ab-lay-vfall:not(.ab-hfall) .ab-items-item {
-moz-column-break-inside: avoid;
break-inside: avoid-column;
}
.ab-note .ab-items.ab-card.ab-lay-vfall:not(.ab-hfall) {
/*display: grid;
grid-template-columns: repeat(4, 1fr);
grid-gap: 1rem; // 间隙
@@ -676,19 +718,15 @@ html[data-theme=dark] #app {
&:nth-child(4n+0){ order: 4; }
}*/
}
.ab-note .ab-items.ab-card.ab-lay-vfall:not(.ab-hfall) .ab-items-item {
-moz-column-break-inside: avoid;
break-inside: avoid-column;
.ab-note .ab-items.ab-card.ab-lay-hfall .ab-items-item .ab-items-title {
color: currentColor;
border-bottom: none;
}
.ab-note .ab-items.ab-card.ab-lay-hfall {
display: flex;
flex-wrap: wrap;
flex-direction: row;
}
.ab-note .ab-items.ab-card.ab-lay-hfall .ab-items-item .ab-items-title {
color: currentColor;
border-bottom: none;
}
.ab-note .ab-items.ab-card.ab-lay-hfall::after {
content: "";
flex-grow: 99999;
@@ -827,8 +865,7 @@ html[data-theme=dark] #app {
height: 8px;
top: calc(50% - 4px);
left: -6px;
-webkit-clip-path: polygon(100% 0, 100% 100%, 13.4% 50%);
clip-path: polygon(100% 0, 100% 100%, 13.4% 50%);
clip-path: polygon(100% 0, 100% 100%, 13.4% 50%);
background-color: currentColor;
}
.ab-note .ab-nodes .ab-nodes-children .ab-nodes-bracket2 {
@@ -1166,4 +1203,16 @@ table.ab-table-fc th[col_index="0"], table.ab-table-fc td[col_index="0"] {
:is(.markdown-preview-view, .markdown-rendered).is-readable-line-width:not(.matrix) .ab-note :is(.markdown-rendered) {
width: auto !important;
}
/**************** PRO *************************/
table td div > p:first-child, table td div > ul:first-child, table th div > p:first-child, table th div > ul:first-child {
margin-top: 2px;
}
table td div > p:last-child, table td div > ul:last-child, table th div > p:last-child, table th div > ul:last-child {
margin-bottom: 2px;
}
.markdown-rendered tbody > tr > td .markdown-rendered, .markdown-rendered tbody > tr > th .markdown-rendered {
white-space: normal;
}
File diff suppressed because one or more lines are too long
+4 -4
View File
@@ -1,9 +1,9 @@
{
"id": "cm-chs-patch",
"name": "Word Splitting for Simplified Chinese in Edit Mode and Vim Mode",
"version": "1.12.0",
"minAppVersion": "1.5.0",
"description": "A patch for Obsidian's built-in CodeMirror Editor to support Simplified Chinese word splitting",
"name": "Simplified Chinese Word Splitting",
"version": "1.13.4",
"minAppVersion": "1.12.3",
"description": "Adds Simplified Chinese word splitting support for the editor and Vim mode.",
"author": "AidenLx",
"authorUrl": "https://github.com/AidenLx",
"isDesktopOnly": false
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -1,7 +1,7 @@
{
"id": "easy-typing-obsidian",
"name": "Easy Typing",
"version": "5.5.15",
"version": "6.0.9",
"minAppVersion": "0.15.0",
"description": "This plugin aims to enhance and optimize the editing experience in Obsidian",
"author": "yaozhuwa",
+909 -2
View File
@@ -17,5 +17,912 @@ span[class="easy-typing-cursor-widget"] {
}
@keyframes blink {
50% { opacity: 0; }
}
50% {
opacity: 0;
}
}
/* ========== Settings Tab Navigation ========== */
.et-settings-shell {
display: flex;
flex-direction: column;
gap: 18px;
padding: 6px 0 16px;
}
.et-settings-hero {
padding: 18px 22px;
border-radius: 18px;
border: 1px solid color-mix(in srgb, var(--background-modifier-border) 88%, transparent);
background: linear-gradient(135deg, color-mix(in srgb, var(--background-primary) 84%, var(--interactive-accent) 16%), var(--background-primary));
box-shadow: 0 10px 30px rgba(0, 0, 0, 0.06);
}
.et-settings-hero-main h1 {
margin: 0;
}
.et-settings-hero-meta {
display: flex;
align-items: center;
flex-wrap: wrap;
gap: 6px;
margin-top: 8px;
color: var(--text-muted);
}
.et-settings-hero-link {
font-weight: 600;
}
.et-settings-nav {
display: flex;
gap: 0;
margin: 0;
padding: 0 6px;
border-bottom: 2px solid var(--background-modifier-border);
flex-wrap: wrap;
}
.et-settings-tab-btn {
padding: 8px 18px;
border: none;
background: transparent;
cursor: pointer;
font-size: var(--font-ui-small);
color: var(--text-muted);
margin: 0 0 -2px;
border-bottom: 2px solid transparent;
transition: color 0.15s ease, border-color 0.15s ease, background-color 0.15s ease;
border-radius: 8px 8px 0 0;
text-align: center;
width: auto;
}
.et-settings-tab-btn:hover {
color: var(--text-normal);
background-color: var(--background-modifier-hover);
}
.et-settings-tab-btn.et-settings-tab-active {
color: var(--text-accent);
border-bottom-color: var(--text-accent);
background: color-mix(in srgb, var(--interactive-accent) 10%, var(--background-primary));
font-weight: var(--font-semibold);
}
.et-settings-content {
min-width: 0;
}
.et-settings-tab-panel.et-settings-tab-hidden {
display: none;
}
.et-settings-tab-panel {
display: flex;
flex-direction: column;
gap: 16px;
}
.et-settings-section {
border-radius: 18px;
border: 1px solid color-mix(in srgb, var(--background-modifier-border) 88%, transparent);
background: color-mix(in srgb, var(--background-primary) 95%, var(--background-secondary));
overflow: hidden;
}
.et-settings-section-header {
display: flex;
align-items: flex-start;
justify-content: space-between;
flex-wrap: wrap;
gap: 16px;
padding: 18px 20px 12px;
border-bottom: 1px solid color-mix(in srgb, var(--background-modifier-border) 88%, transparent);
background: color-mix(in srgb, var(--background-secondary) 42%, var(--background-primary));
}
.et-settings-section-heading {
min-width: 0;
flex: 1 1 220px;
}
.et-settings-section-header h3 {
margin: 0;
padding: 0;
border: none;
color: var(--text-normal);
font-size: var(--font-ui-medium);
}
.et-settings-section-desc {
margin-top: 6px;
margin-bottom: 0;
}
.et-settings-section-actions {
display: flex;
align-items: center;
gap: 8px;
flex-shrink: 0;
flex-wrap: wrap;
justify-content: flex-end;
align-self: flex-start;
margin-left: auto;
max-width: 100%;
}
.et-settings-section-actions>* {
flex: 0 0 auto;
}
.et-settings-section-body {
padding: 8px 20px 8px;
}
.et-settings-section-body>.setting-item:first-child {
border-top: none;
}
.et-settings-section-body .setting-item {
padding-top: 14px;
padding-bottom: 14px;
}
.et-settings-note {
white-space: pre-wrap;
margin: 6px 0 6px;
padding: 12px 14px;
border-radius: 12px;
border: 1px solid color-mix(in srgb, var(--background-modifier-border) 88%, transparent);
background: color-mix(in srgb, var(--background-secondary) 62%, var(--background-primary));
}
.et-settings-disabled {
opacity: 0.58;
}
.et-settings-disabled .setting-item-control {
filter: saturate(0.65);
}
.et-settings-disabled a {
pointer-events: none;
}
.et-setting-full-width {
display: grid;
grid-template-columns: minmax(0, 1fr);
}
.et-setting-full-width .setting-item-info {
width: 100%;
max-width: none;
}
.et-setting-full-width .setting-item-control {
width: 100%;
margin-top: 10px;
}
.et-inline-form-setting {
display: flex;
flex-wrap: wrap;
gap: 14px;
align-items: start;
}
.et-inline-form-setting .setting-item-info {
padding-right: 0;
flex: 0 1 220px;
min-width: 150px;
}
.et-inline-form-setting .setting-item-control {
display: flex;
flex-wrap: wrap;
gap: 8px;
width: 100%;
flex: 1 1 320px;
min-width: min(320px, 100%);
}
.et-inline-form-setting .setting-item-control>* {
flex: 1 1 140px;
}
.et-inline-form-setting .setting-item-control button {
flex: 0 0 auto;
}
.et-settings-textarea {
width: 100%;
min-height: 96px;
resize: vertical;
border-radius: 12px;
padding: 10px 12px;
line-height: 1.6;
}
.et-settings-textarea-compact {
min-height: 120px;
}
.et-settings-textarea-tall {
min-height: 280px;
}
.et-section-action-btn {
white-space: nowrap;
}
.et-section-icon-btn {
display: inline-flex;
align-items: center;
justify-content: center;
width: 32px;
height: 32px;
border-radius: 10px;
}
/* ========== Rule Type Tags ========== */
.et-rule-type-tag {
display: inline-block;
padding: 1px 6px;
border-radius: 4px;
font-size: 11px;
font-weight: 600;
margin-right: 2px;
vertical-align: middle;
}
.et-rule-scope-tag {
display: inline-block;
padding: 1px 6px;
border-radius: 4px;
font-size: 11px;
font-weight: 600;
margin-right: 2px;
vertical-align: middle;
}
.et-rule-scope-code {
background-color: rgba(59, 130, 246, 0.12);
color: #3b82f6;
border: 1px solid rgba(59, 130, 246, 0.24);
font-family: var(--font-monospace);
}
.et-rule-scope-formula {
background: linear-gradient(135deg, rgba(99, 102, 241, 0.16), rgba(168, 85, 247, 0.12));
color: #7c3aed;
border: 1px solid rgba(124, 58, 237, 0.26);
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.08);
}
.et-rule-type-input {
background-color: rgba(76, 175, 80, 0.15);
color: #4caf50;
border: 1px solid rgba(76, 175, 80, 0.3);
}
.et-rule-type-delete {
background-color: rgba(244, 67, 54, 0.15);
color: #f44336;
border: 1px solid rgba(244, 67, 54, 0.3);
}
.et-rule-type-selectkey {
background-color: rgba(255, 152, 0, 0.15);
color: #ff9800;
border: 1px solid rgba(255, 152, 0, 0.3);
}
.et-rule-type-fn {
background-color: rgba(156, 39, 176, 0.15);
color: #9c27b0;
border: 1px solid rgba(156, 39, 176, 0.3);
}
/* Rule Trigger Mode Tag */
.et-rule-trigger-mode {
display: inline-block;
padding: 1px 5px;
border-radius: 4px;
font-size: 10px;
font-weight: 500;
margin-right: 2px;
vertical-align: middle;
cursor: pointer;
user-select: none;
transition: background-color 0.15s ease, color 0.15s ease;
}
.et-trigger-mode-auto {
background-color: rgba(158, 158, 158, 0.15);
color: var(--text-muted);
border: 1px solid rgba(158, 158, 158, 0.3);
}
.et-trigger-mode-tab {
background-color: rgba(255, 152, 0, 0.15);
color: #ff9800;
border: 1px solid rgba(255, 152, 0, 0.3);
}
.et-rule-trigger-mode:hover {
filter: brightness(1.2);
}
/* Rule Drag and Drop */
.et-rule-drag-handle {
display: flex;
align-items: center;
justify-content: center;
cursor: grab;
color: var(--text-faint);
padding: 1px 0;
margin-right: 0;
width: 14px;
border-radius: 4px;
flex-shrink: 0;
}
.et-rule-drag-handle:hover {
color: var(--text-muted);
background-color: var(--background-modifier-hover);
}
.et-rule-drag-handle:active {
cursor: grabbing;
}
.et-rule-dragging {
opacity: 0.4;
}
.et-rule-drag-over-top {
box-shadow: 0 2px 0 0 var(--interactive-accent) inset;
}
.et-rule-drag-over-bottom {
box-shadow: 0 -2px 0 0 var(--interactive-accent) inset;
}
.et-rule-item .setting-item-name {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 2px;
white-space: normal;
overflow: visible;
text-overflow: unset;
}
.et-rule-item .setting-item-info {
min-width: 0;
}
.et-rule-item .setting-item-control {
flex-shrink: 0;
}
.et-rule-preview-text {
flex: 1 1 auto;
min-width: 0;
line-height: 1.4;
margin-left: 2px;
}
.et-deleted-rules summary {
cursor: pointer;
color: var(--text-muted);
font-size: var(--font-ui-small);
margin-top: 8px;
}
.et-deleted-rules .setting-item {
opacity: 0.7;
}
/* Function editor in rule modal */
.et-fn-editor-label {
display: block;
font-size: var(--font-ui-small);
color: var(--text-normal);
margin-bottom: 6px;
font-weight: var(--font-semibold);
}
/* Rule edit modal groups */
.et-modal-group {
border: 1px solid var(--background-modifier-border);
border-radius: 8px;
padding: 4px 16px 12px;
margin-bottom: 16px;
}
.et-modal-group-title {
font-size: var(--font-ui-small);
font-weight: var(--font-semibold);
color: var(--text-muted);
padding: 8px 0 2px;
}
.et-modal-group .setting-item:last-child {
border-bottom: none;
}
.et-modal-group .et-modal-option-row {
padding: 8px 0;
min-height: unset;
}
.et-modal-group .et-modal-option-row .setting-item-name {
font-size: var(--font-ui-small);
color: var(--text-muted);
}
.et-fn-editor-container {
width: 100%;
}
.et-fn-editor-container .cm-editor {
border: 1px solid var(--background-modifier-border);
border-radius: 4px;
}
.et-fn-editor-container .cm-editor.cm-focused {
border-color: var(--interactive-accent);
}
/* JS syntax highlighting in function editor */
.et-hl-keyword {
color: #c678dd;
}
.et-hl-string {
color: #98c379;
}
.et-hl-comment {
color: var(--text-faint);
font-style: italic;
}
.et-hl-number {
color: #d19a66;
}
/* ========== Language Pair Capsule UI ========== */
.et-lang-pair-capsules {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 12px;
}
.et-lang-pair-capsule {
display: inline-flex;
align-items: center;
gap: 2px;
padding: 3px 6px 3px 12px;
border-radius: 16px;
font-size: var(--font-ui-small);
background-color: var(--background-primary);
border: 1px solid var(--background-modifier-border);
color: var(--text-normal);
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
/* Slight elevation */
transition: box-shadow 0.2s ease, border-color 0.2s ease, transform 0.2s ease;
}
.et-lang-pair-capsule:hover {
border-color: var(--interactive-accent);
box-shadow: 0 3px 6px rgba(0, 0, 0, 0.08);
transform: translateY(-1px);
}
.et-capsule-remove {
appearance: none;
-webkit-appearance: none;
border: none;
background: transparent;
cursor: pointer;
font-size: 14px;
line-height: 1;
color: var(--text-muted);
margin-left: 2px;
border-radius: 50%;
width: 18px;
height: 18px;
display: flex;
align-items: center;
justify-content: center;
transition: background-color 0.2s ease, color 0.2s ease;
}
.et-capsule-remove:disabled {
cursor: default;
}
.et-capsule-remove:hover {
color: var(--text-on-accent);
background-color: var(--text-error);
}
.et-pair-selector-row {
margin-bottom: 6px;
}
.et-custom-scripts {
margin-bottom: 12px;
}
.et-custom-scripts .setting-item {
border: none;
padding: 4px 0;
}
/* ========== Settings UI Buttons ========== */
.et-reset-btn {
transition: transform 0.15s cubic-bezier(0.34, 1.56, 0.64, 1),
box-shadow 0.2s ease,
background-color 0.2s ease,
color 0.2s ease;
border: 1px solid var(--background-modifier-border);
}
.et-reset-btn:hover {
background-color: rgba(220, 53, 69, 0.08);
/* Subtle red tint */
border-color: rgba(220, 53, 69, 0.3);
color: var(--text-error);
box-shadow: 0 2px 6px rgba(220, 53, 69, 0.1);
}
.et-reset-btn:active {
transform: scale(0.95);
background-color: rgba(220, 53, 69, 0.15);
}
/* ========== Rule Edit Modal: Pill Bar ========== */
.et-rule-edit-modal .modal-content {
padding-top: 18px;
}
.et-rule-edit-modal-content {
display: flex;
flex-direction: column;
gap: 14px;
}
/* .et-rule-edit-modal {
width: min(580px, calc(100vw - 32px));
} */
.et-rule-edit-header {
padding: 4px 2px 0;
}
.et-rule-edit-title {
margin: 0;
font-size: 1.35em;
line-height: 1.25;
letter-spacing: -0.01em;
}
.et-rule-edit-title:focus,
.et-rule-edit-title:focus-visible {
outline: none;
}
.et-pill-bar {
display: flex;
align-items: stretch;
gap: 10px;
padding: 0;
flex-wrap: wrap;
}
.et-pill-section {
display: inline-flex;
align-items: center;
gap: 10px;
padding: 8px 10px;
border-radius: 14px;
background: color-mix(in srgb, var(--background-secondary) 92%, var(--background-primary));
border: 1px solid var(--background-modifier-border);
flex-wrap: wrap;
}
.et-pill-options {
display: inline-flex;
align-items: stretch;
gap: 0;
padding: 3px;
border-radius: 11px;
background: var(--background-primary);
border: 1px solid color-mix(in srgb, var(--background-modifier-border) 88%, transparent);
position: relative;
box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.03);
flex-wrap: wrap;
max-width: 100%;
}
.et-rule-edit-modal button.et-pill:not(.clickable-icon) {
position: relative;
z-index: 1;
padding: 7px 14px;
border-radius: 8px;
border: 0;
background: transparent !important;
background-color: transparent !important;
appearance: none;
-webkit-appearance: none;
box-shadow: none !important;
background-image: none !important;
cursor: pointer;
font-size: 12px;
color: color-mix(in srgb, var(--text-muted) 82%, var(--background-modifier-border));
line-height: 1.5;
font-weight: 500;
transition: background-color 0.18s ease, color 0.18s ease, transform 0.18s ease;
white-space: nowrap;
}
.et-rule-edit-modal button.et-pill:not(.clickable-icon)+.et-pill::before {
content: '';
position: absolute;
left: 0;
top: 22%;
width: 1px;
height: 56%;
background: color-mix(in srgb, var(--background-modifier-border) 82%, transparent);
transition: opacity 0.18s ease;
}
.et-rule-edit-modal button.et-pill:not(.clickable-icon):hover {
background-color: var(--background-modifier-hover);
color: var(--text-normal);
}
.et-rule-edit-modal button.et-pill:not(.clickable-icon):focus {
outline: none;
}
.et-rule-edit-modal button.et-pill:not(.clickable-icon):focus-visible {
outline: 2px solid color-mix(in srgb, var(--interactive-accent) 72%, white);
outline-offset: 1px;
}
.et-rule-edit-modal button.et-pill.et-pill-active:not(.clickable-icon) {
background: linear-gradient(180deg,
color-mix(in srgb, var(--interactive-accent) 32%, var(--background-primary)),
color-mix(in srgb, var(--interactive-accent) 18%, var(--background-primary)));
background-color: color-mix(in srgb, var(--interactive-accent) 18%, var(--background-primary)) !important;
color: color-mix(in srgb, var(--text-normal) 88%, black);
font-weight: 600;
box-shadow: none !important;
}
.et-rule-edit-modal button.et-pill.et-pill-active:not(.clickable-icon)::before,
.et-rule-edit-modal button.et-pill.et-pill-active:not(.clickable-icon)+.et-pill::before {
opacity: 0;
}
.et-rule-edit-modal button.et-pill.et-pill-active:not(.clickable-icon)::after {
content: '';
position: absolute;
inset: 0;
border-radius: inherit;
box-shadow:
inset 0 1px 0 rgba(255, 255, 255, 0.24),
inset 0 0 0 1px color-mix(in srgb, var(--background-modifier-border) 72%, white),
0 1px 2px rgba(0, 0, 0, 0.1);
pointer-events: none;
}
.et-pill-group-label {
font-size: 11px;
color: var(--text-faint);
margin-left: 2px;
margin-right: 2px;
user-select: none;
font-weight: 600;
letter-spacing: 0.02em;
white-space: nowrap;
}
/* ========== Rule Edit Modal: Group Header + Pill Chip ========== */
.et-modal-group-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 0 2px;
}
.et-modal-group-header .et-modal-group-title {
padding: 0;
}
.et-pill-chip {
display: inline-flex;
align-items: center;
gap: 5px;
padding: 2px 8px 2px 10px;
border-radius: 10px;
border: 1px solid var(--background-modifier-border);
background: none;
cursor: pointer;
font-size: 12px;
color: var(--text-muted);
user-select: none;
transition: background-color 0.15s ease, color 0.15s ease, border-color 0.15s ease;
}
.et-pill-chip::after {
content: '';
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
border: 1.5px solid var(--text-faint);
flex-shrink: 0;
transition: background-color 0.15s ease, border-color 0.15s ease;
}
.et-pill-chip:hover {
border-color: var(--text-muted);
}
.et-pill-chip:hover::after {
border-color: var(--text-muted);
}
.et-pill-chip.et-pill-chip-active {
color: var(--text-normal);
border-color: var(--text-muted);
}
.et-pill-chip.et-pill-chip-active::after {
background-color: var(--text-muted);
border-color: var(--text-muted);
}
.et-scope-setting .setting-item-control {
flex: 1 1 auto;
min-width: 0;
}
.et-scope-options {
display: flex;
flex-wrap: wrap;
gap: 8px;
width: auto;
margin-left: auto;
justify-content: flex-end;
}
/* ========== Rule Edit Modal: Compact Spacing ========== */
.et-hidden {
display: none !important;
}
.et-rule-edit-modal .modal-close-button {
top: 14px;
right: 14px;
}
.et-replacement-setting {
display: grid;
grid-template-columns: 1fr;
}
.et-replacement-setting .setting-item-info {
display: none;
}
.et-replacement-setting .setting-item-control {
margin-top: 0;
}
.et-replacement-textarea {
width: 100%;
min-height: 96px;
resize: vertical;
border-radius: 10px;
padding: 10px 12px;
line-height: 1.5;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.04);
}
.et-replacement-hint {
margin-top: -2px;
margin-bottom: 4px;
white-space: pre-line;
font-size: 12px;
line-height: 1.5;
color: var(--text-muted);
}
.et-fn-hint {
margin-top: 6px;
margin-bottom: 4px;
font-size: 12px;
font-family: var(--font-monospace);
white-space: pre-line;
line-height: 1.6;
color: var(--text-muted);
}
.et-rule-edit-modal .setting-item {
padding-top: 12px;
padding-bottom: 12px;
}
.et-rule-edit-modal .et-modal-group {
padding: 6px 18px 10px;
margin-bottom: 0;
border-radius: 14px;
background: linear-gradient(180deg, color-mix(in srgb, var(--background-secondary) 72%, transparent), color-mix(in srgb, var(--background-primary) 92%, transparent));
border-color: color-mix(in srgb, var(--background-modifier-border) 90%, transparent);
box-shadow: 0 10px 28px rgba(0, 0, 0, 0.04);
}
.et-rule-edit-modal .et-modal-group:hover {
border-color: color-mix(in srgb, var(--interactive-accent) 24%, var(--background-modifier-border));
}
/* ========== Rule Edit Modal: Input Optimizations ========== */
.et-rule-edit-modal .et-modal-group .setting-item-control {
flex-grow: 2;
}
.et-rule-edit-modal [data-field="trigger"] input,
.et-rule-edit-modal [data-field="triggerRight"] input,
.et-rule-edit-modal [data-field="scopeLanguage"] input,
.et-rule-edit-modal input[type="number"],
.et-rule-edit-modal .setting-item input[type="text"] {
font-family: var(--font-monospace);
border-radius: 10px;
min-height: 36px;
padding-left: 10px;
padding-right: 10px;
}
.et-rule-edit-modal .setting-item-info {
padding-right: 18px;
}
.et-rule-edit-modal .setting-item-name {
font-weight: 600;
}
.et-rule-edit-modal .setting-item-description {
line-height: 1.5;
}
.et-fn-editor-container .cm-editor {
border: 1px solid var(--background-modifier-border);
border-radius: 12px;
overflow: hidden;
box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.04);
}
.et-fn-editor-container .cm-scroller {
min-height: 160px;
}
.et-rule-edit-footer {
display: flex;
justify-content: flex-end;
padding-top: 2px;
}
.et-rule-edit-save {
min-width: 120px;
border-radius: 10px;
box-shadow: 0 10px 24px color-mix(in srgb, var(--interactive-accent) 18%, transparent);
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+4 -4
View File
@@ -1,11 +1,11 @@
{
"id": "obsidian-advanced-uri",
"name": "Advanced URI",
"description": "Advanced modes for Obsidian URI",
"description": "Control various aspects through URIs, including opening files, creating new files, and executing commands.",
"isDesktopOnly": false,
"js": "main.js",
"fundingUrl": "https://ko-fi.com/vinzent",
"version": "1.46.1",
"version": "2.0.0",
"author": "Vinzent",
"authorUrl": "https://github.com/Vinzent03"
"authorUrl": "https://github.com/Vinzent03",
"minAppVersion": "1.5.7"
}
File diff suppressed because one or more lines are too long
+12 -12
View File
@@ -1,12 +1,12 @@
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.20.5",
"minAppVersion": "1.5.7",
"description": "Sketch Your Mind. An Obsidian plugin to edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
"author": "Zsolt Viczian",
"authorUrl": "https://excalidraw-obsidian.online",
"fundingUrl": "https://ko-fi.com/zsolt",
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
"isDesktopOnly": false
}
{
"id": "obsidian-excalidraw-plugin",
"name": "Excalidraw",
"version": "2.26.4",
"minAppVersion": "1.8.7",
"description": "Sketch Your Mind. Edit and view Excalidraw drawings. Enter the world of 4D Visual PKM.",
"author": "Zsolt Viczian",
"authorUrl": "https://excalidraw-obsidian.online",
"fundingUrl": "https://ko-fi.com/zsolt",
"helpUrl": "https://github.com/zsviczian/obsidian-excalidraw-plugin#readme",
"isDesktopOnly": false
}
File diff suppressed because one or more lines are too long
+173 -198
View File
File diff suppressed because one or more lines are too long
+1 -1
View File
@@ -6,5 +6,5 @@
"description": "Integrate Git version control with automatic backup and other advanced features.",
"isDesktopOnly": false,
"fundingUrl": "https://ko-fi.com/vinzent",
"version": "2.37.1"
"version": "2.39.0"
}
+25 -25
View File
@@ -8,15 +8,6 @@
}
}
.git-signs-gutter {
.cm-gutterElement {
/* Needed to align the sign properly for different line heigts. Such as
* when having a heading or list item.
*/
padding-top: 0 !important;
}
}
.workspace-leaf-content[data-type="git-view"] .button-border {
border: 2px solid var(--interactive-accent);
border-radius: var(--radius-s);
@@ -81,6 +72,11 @@
height: 100%;
}
/* Re-enable wrapping of nav buttns to prevent overflow on smaller screens #*/
.workspace-drawer .git-view .nav-buttons-container {
flex-wrap: wrap;
}
.git-tools {
display: flex;
margin-left: auto;
@@ -103,7 +99,7 @@
display: flex;
}
.git-tools .buttons > * {
padding: 0 0;
padding: 0;
height: auto;
}
@@ -170,7 +166,7 @@ which itself is adapted from the diff2html library with the following original l
--git-change-bg: #ffd55840;
--git-selected: #3572b0;
--git-delete: #c33;
--git-delete: #cc3333;
--git-insert: #399839;
--git-change: #d0b44c;
--git-move: #3572b0;
@@ -533,13 +529,24 @@ which itself is adapted from the diff2html library with the following original l
.d2h-diff-tbody {
position: relative;
}
/* My additions */
.cm-merge-revert {
width: 4em;
}
/* Ensure that merge revert markers are positioned correctly */
.cm-merge-revert > * {
position: absolute;
background-color: var(--background-secondary);
display: flex;
}
}
/* ====================== Line Authoring Information ====================== */
.cm-gutterElement.obs-git-blame-gutter {
/* Add background color to spacing inbetween and around the gutter for better aesthetics */
border-width: 0px 2px 0.2px 2px;
border-width: 0px 2px 0.2px;
border-style: solid;
border-color: var(--background-secondary);
background-color: var(--background-secondary);
@@ -552,7 +559,7 @@ which itself is adapted from the diff2html library with the following original l
font-family: monospace;
height: 100%; /* ensure, that age-based background color occupies entire parent */
text-align: right;
padding: 0px 6px 0px 6px;
padding: 0px 6px;
white-space: pre; /* Keep spaces and do not collapse them. */
}
@@ -597,6 +604,11 @@ which itself is adapted from the diff2html library with the following original l
.git-signs-gutter {
.cm-gutterElement {
display: grid;
/* Needed to align the sign properly for different line heigts. Such as
* when having a heading or list item.
*/
padding-top: 0 !important;
}
}
@@ -664,18 +676,6 @@ div:hover > .git-gutter-marker.git-changedelete {
opacity: 0.5;
}
.git-diff {
.cm-merge-revert {
width: 4em;
}
/* Ensure that merge revert markers are positioned correctly */
.cm-merge-revert > * {
position: absolute;
background-color: var(--background-secondary);
display: flex;
}
}
/* Prevent shifting of the editor when git signs gutter is the only gutter present */
.cm-gutters.cm-gutters-before:has(> .git-signs-gutter:only-child) {
margin-inline-end: 0;
File diff suppressed because one or more lines are too long
+5 -5
View File
@@ -1,10 +1,10 @@
{
"id": "obsidian-local-rest-api",
"name": "Local REST API",
"version": "3.4.4",
"minAppVersion": "0.12.0",
"description": "Get, change or otherwise interact with your notes in Obsidian via a REST API.",
"name": "Local REST API with MCP",
"version": "5.1.0",
"minAppVersion": "1.13.1",
"description": "A secure REST API and Model Context Protocol (MCP) server for your vault.",
"author": "Adam Coddington",
"authorUrl": "https://coddingtonbear.net/",
"authorUrl": "https://adamcoddington.net/",
"isDesktopOnly": true
}
+115 -30
View File
@@ -1,47 +1,132 @@
/* Sets all the text color to red! */
/* Rules below are scoped one of two ways, and the difference matters.
div.obsidian-local-rest-api-settings div.api-key-display {
.obsidian-local-rest-api-content is added to each setting item this plugin
fills with its own block content (see prepareCustomContent in src/main.ts).
Anything scoped to it follows that content wherever the item is rendered --
including onto the Certificates and Advanced settings pages, which the
declarative settings framework renders into their own SettingPage container
rather than as descendants of the settings tab.
.obsidian-local-rest-api-settings is added to the settings tab's own
containerEl, so rules scoped to it reach only the top-level page. Use it
only for framework-rendered elements that this plugin cannot class itself. */
/* .setting-item lays its children out as a flex row (name/desc left, control
right). Block content written into one needs this, or every top-level child
-- headings, tables, paragraphs -- becomes a flex item sitting side-by-side
with its siblings instead of stacking. */
div.setting-item.obsidian-local-rest-api-content {
display: block;
}
div.obsidian-local-rest-api-content div.api-key-display {
margin-bottom: 20px;
}
div.obsidian-local-rest-api-settings div.api-key-display pre {
div.obsidian-local-rest-api-content pre {
font-size: 0.8em;
padding: 10px 20px;
margin: 10px 25px;
background-color: var(--background-modifier-cover);
font-family: monospace;
user-select: all;
}
div.obsidian-local-rest-api-content p {
padding: 0px 15px;
}
/* A value the user is expected to copy, sat next to its copy button. The pre
carries the margin the standalone rule above would otherwise apply, so that
the row lines up with surrounding blocks rather than the button hanging off
the end of one. */
div.obsidian-local-rest-api-content div.copyable-value {
display: flex;
align-items: center;
gap: 8px;
margin: 10px 25px;
}
div.obsidian-local-rest-api-content div.copyable-value pre {
flex: 1 1 auto;
/* Without this a long key refuses to shrink and pushes the button out of
the panel, since flex items floor at their content width by default. */
min-width: 0;
margin: 0;
overflow-x: auto;
}
/* Copyable URLs inside the api-urls tables. The standalone copyable-value
margin above is sized for block content sitting directly in a settings
panel; inside a table cell the cell's own padding already provides the
indent, so the full margin would double it. */
div.obsidian-local-rest-api-content table.api-urls td.url div.copyable-value {
margin: 4px 0;
}
/* The copyable-value variant for a setting item's control slot (the API key
row on the main page). Unlike .copyable-value it cannot be scoped to
.obsidian-local-rest-api-content: that class turns the setting item into a
block layout, which would destroy the name/desc-left, control-right row
this variant exists to sit inside. */
div.obsidian-local-rest-api-settings div.inline-copyable-value {
display: flex;
align-items: center;
gap: 8px;
min-width: 0;
flex: 1 1 auto;
}
div.obsidian-local-rest-api-settings div.inline-copyable-value pre {
flex: 1 1 auto;
min-width: 0;
margin: 0;
overflow-x: auto;
font-size: 0.8em;
padding: 6px 10px;
background-color: var(--background-modifier-cover);
font-family: monospace;
user-select: all;
}
div.obsidian-local-rest-api-content div.certificate-expired {
padding: 10px 20px;
border: 2px solid #ff0000;
}
div.obsidian-local-rest-api-content div.certificate-expiring-soon {
padding: 10px 20px;
border: 2px solid #ffff00;
}
div.obsidian-local-rest-api-content div.certificate-regeneration-recommended {
padding: 10px 20px;
border: 2px solid #ffff00;
}
div.obsidian-local-rest-api-content table.api-urls tr {
width: 100%;
}
div.obsidian-local-rest-api-content table.api-urls th,
div.obsidian-local-rest-api-content table.api-urls td {
padding: 5px 25px;
}
div.obsidian-local-rest-api-content table.api-urls tr.disabled td.name,
div.obsidian-local-rest-api-content table.api-urls tr.disabled td.url {
text-decoration: line-through;
}
div.obsidian-local-rest-api-settings div.setting-item-control {
min-width: 50%;
}
/* Framework-rendered controls cannot be given a class of our own, so this only
reaches textareas on the top-level page. The certificate and key textareas
live on the Certificates page and therefore keep the framework's own sizing;
widening those would mean a selector broad enough to restyle every other
plugin's settings, which is not worth it. */
div.obsidian-local-rest-api-settings textarea {
width: 100%;
}
div.obsidian-local-rest-api-settings div.certificate-expired {
padding: 10px 20px;
border: 2px solid #ff0000;
}
div.obsidian-local-rest-api-settings div.certificate-expiring-soon {
padding: 10px 20px;
border: 2px solid #ffff00;
}
div.obsidian-local-rest-api-settings div.certificate-regeneration-recommended {
padding: 10px 20px;
border: 2px solid #ffff00;
}
div.obsidian-local-rest-api-settings table.api-urls tr {
width: 100%;
}
div.obsidian-local-rest-api-settings table.api-urls th, div.obsidian-local-rest-api-settings table.api-urls td {
padding: 5px 25px;
}
div.obsidian-local-rest-api-settings table.api-urls tr.disabled td.name, div.obsidian-local-rest-api-settings table.api-urls tr.disabled td.url {
text-decoration: line-through;
}
File diff suppressed because one or more lines are too long
+2 -2
View File
@@ -1,8 +1,8 @@
{
"id": "obsidian-tasks-plugin",
"name": "Tasks",
"version": "7.22.0",
"minAppVersion": "1.4.0",
"version": "8.3.0",
"minAppVersion": "1.8.7",
"description": "Track tasks across your vault. Supports due dates, recurring tasks, done dates, sub-set of checklist items, and filtering.",
"helpUrl": "https://publish.obsidian.md/tasks/",
"author": "Clare Macrae and Ilyas Landikov (created by Martin Schenck)",
File diff suppressed because one or more lines are too long
+1
View File
@@ -6,6 +6,7 @@
"ignoreDiacritics": true,
"ignoreArabicDiacritics": false,
"indexedFileTypes": [],
"indexFilesWithoutExtension": false,
"displayTitle": "",
"PDFIndexing": false,
"officeIndexing": false,
+147 -143
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -1,11 +1,11 @@
{
"id": "omnisearch",
"name": "Omnisearch",
"version": "1.28.0",
"version": "1.30.1",
"minAppVersion": "1.7.2",
"description": "A search engine that just works",
"description": "A search engine that just works.",
"author": "Simon Cambier",
"authorUrl": "https://github.com/scambier/obsidian-omnisearch",
"authorUrl": "https://scambier.xyz",
"fundingUrl": {
"Github": "https://github.com/sponsors/scambier",
"Ko-fi": "https://ko-fi.com/scambier"
+16 -1
View File
@@ -63,7 +63,6 @@
margin-left: 1em;
}
.omnisearch-result__image-container {
flex-basis: 20%;
text-align: end;
@@ -133,3 +132,19 @@
position: relative;
flex-grow: 1;
}
.omnisearch-result-highlight .cm-content ::selection,
.omnisearch-result-highlight .cm-line::selection {
background-color: var(
--omnisearch-highlight-color,
rgba(222, 183, 110, 1)
);
color: var(--omnisearch-highlight-text-color, black);
}
.omnisearch-result-highlight .cm-selectionLayer .cm-selectionBackground {
background-color: var(
--omnisearch-highlight-color,
rgba(222, 183, 110, 1)
);
}
+401 -91
View File
File diff suppressed because one or more lines are too long
+3 -3
View File
@@ -1,12 +1,12 @@
{
"id": "quickadd",
"name": "QuickAdd",
"version": "2.11.0",
"minAppVersion": "1.11.4",
"version": "2.22.0",
"minAppVersion": "1.13.0",
"description": "Quickly add new pages or content to your vault.",
"author": "Christian B. B. Houmann",
"authorUrl": "https://bagerbach.com",
"fundingUrl": "https://www.buymeacoffee.com/chhoumann",
"helpUrl": "https://quickadd.obsidian.guide/docs/",
"isDesktopOnly": false
}
}
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+3 -5
View File
@@ -3,15 +3,13 @@
"name": "Advanced Tables",
"author": "Tony Grosinger",
"authorUrl": "https://grosinger.net",
"description": "Improved table navigation, formatting, manipulation, and formulas",
"description": "Improved table navigation, formatting, manipulation, and formulas.",
"isDesktopOnly": false,
"minAppVersion": "1.0.0",
"version": "0.22.1",
"js": "main.js",
"version": "0.23.2",
"fundingUrl": {
"Github Sponsor": "https://github.com/sponsors/tgrosinger",
"Buy me a Coffee": "https://buymeacoffee.com/tgrosinger",
"Paypal": "https://paypal.me/tgrosinger"
},
"donation": "https://buymeacoffee.com/tgrosinger"
}
}
+1 -1
View File
@@ -15,7 +15,7 @@
}
[data-type="advanced-tables-toolbar"] .nav-buttons-container {
column-gap: 0.2rem;
gap: 0.2rem;
margin: 0.2rem 0 0.2rem 0;
justify-content: start;
}
+9 -23
View File
@@ -1,18 +1,13 @@
{
"data_version": 2,
"command_timeout": 5,
"templates_folder": "06_Metadata/Templates",
"templates_pairs": [
[
"",
""
]
],
"trigger_on_file_creation": true,
"templates_pairs": [],
"trigger_on_file_creation_mode": "folder",
"auto_jump_to_cursor": false,
"enable_system_commands": false,
"jump_to_cursor_after_file_name": false,
"shell_path": "",
"user_scripts_folder": "",
"enable_folder_templates": true,
"folder_templates": [
{
"folder": "00_Inbox",
@@ -27,20 +22,11 @@
"template": "06_Metadata/Templates/book-note.md"
}
],
"enable_file_templates": false,
"file_templates": [
{
"regex": ".*",
"template": ""
}
],
"file_templates": [],
"syntax_highlighting": true,
"syntax_highlighting_mobile": false,
"enabled_templates_hotkeys": [
""
],
"startup_templates": [
""
],
"intellisense_render": 1
"enabled_templates_hotkeys": [],
"startup_templates": [],
"intellisense_render": "1",
"ignore_folders_on_creation": []
}
File diff suppressed because one or more lines are too long
+9 -3
View File
@@ -1,11 +1,17 @@
{
"id": "templater-obsidian",
"name": "Templater",
"version": "2.18.1",
"description": "Create and use templates",
"minAppVersion": "1.5.0",
"version": "2.25.0",
"description": "Advanced templating and automation using handlebars-like syntax.",
"minAppVersion": "1.13.0",
"author": "SilentVoid",
"authorUrl": "https://github.com/SilentVoid13",
"fundingUrl": {
"GitHub Sponser (Zachatoo, maintainer)": "https://github.com/sponsors/Zachatoo",
"Ko-fi (Zachatoo, maintainer)": "https://ko-fi.com/zachatoo",
"GitHub Sponser (SilentVoid13, creator)": "https://github.com/sponsors/SilentVoid13",
"Paypal (SilentVoid13, creator)": "https://www.paypal.com/donate?hosted_button_id=U2SRGAFYXT32Q"
},
"helpUrl": "https://silentvoid13.github.io/Templater/",
"isDesktopOnly": false
}
+6 -62
View File
@@ -1,69 +1,8 @@
.templater_search {
width: calc(100% - 20px);
}
.templater_div {
border-top: 1px solid var(--background-modifier-border);
}
.templater_div > .setting-item {
border-top: none !important;
align-self: center;
}
.templater_div > .setting-item > .setting-item-control {
justify-content: space-around;
padding: 0;
width: 100%;
}
.templater_div
> .setting-item
> .setting-item-control
> .setting-editor-extra-setting-button {
align-self: center;
}
.templater_donating {
margin: 10px;
}
.templater_title {
margin: 0;
padding: 0;
margin-top: 5px;
text-align: center;
}
.templater_template {
align-self: center;
margin-left: 5px;
margin-right: 5px;
width: 70%;
}
.templater_cmd {
margin-left: 5px;
margin-right: 5px;
font-size: 14px;
width: 100%;
}
.templater_div2 > .setting-item {
align-content: center;
justify-content: center;
}
.templater-prompt-div,
.templater-multisuggester-div {
display: flex;
}
.templater-prompt-form {
display: flex;
flex-grow: 1;
}
.templater-prompt-input,
.templater-multisuggester-input {
flex-grow: 1;
@@ -80,6 +19,11 @@ textarea.templater-prompt-input {
height: 10rem;
}
.templater-ignore-folder-modal .modal-content input[type="text"],
.templater-startup-template-modal .modal-content input[type="text"] {
width: 100%;
}
textarea.templater-prompt-input:focus {
border-color: var(--interactive-accent);
}
@@ -221,6 +165,6 @@ textarea.templater-prompt-input:focus {
}
li.CodeMirror-hint-active {
background: #08f;
background: #0088ff;
color: white;
}
@@ -19,7 +19,7 @@ created: 2026-08-21
完成这一层后,继续阅读:
- [[01-Getting-Started/02-Why-Guide|从零开始做 LLM 评测:每一步背后的道理]]
- [[02-Practical-Roadmap/01-LLM-Evaluation-Roadmap|从软件工程到 LLM 评测工程:实战路线]]
- [[02-Why-Guide|从零开始做 LLM 评测:每一步背后的道理]]
- [[01-LLM-Evaluation-Roadmap|从软件工程到 LLM 评测工程:实战路线]]
原则:这里回答 **What**,后续文档分别回答 **Why****How**
@@ -33,16 +33,16 @@ created: 2026-08-21
- [ ] 为这段文档写一个“能回答的问题”和一个“不能回答的问题”。
- [ ] 写一条规则:`答案包含上下文未支持的关键事实,则 groundedness = fail`
完成任意一项后,打开 [[02-Practical-Roadmap/02-First-Week-Worksheet]],把它填入第 0 节。
完成任意一项后,打开 [[02-First-Week-Worksheet]],把它填入第 0 节。
## 你现在处于哪种状态?
| 你的状态 | 先读什么 | 现在不要做什么 |
|---|---|---|
| 不懂为什么要多写 case、rubric 和 run | [[01-Getting-Started/02-Why-Guide]] | 不要先上评测框架。 |
| 知道原理,但不知道今天怎么开始 | [[02-Practical-Roadmap/02-First-Week-Worksheet]] | 不要把项目放大到 100 个 case。 |
| 已有 10 个 case,想系统推进 | [[02-Practical-Roadmap/01-LLM-Evaluation-Roadmap]] | 不要急着微调模型。 |
| 已有具体项目,想记录实验 | [[03-Practice/README]] | 不要把 run、case 和个人笔记混在一起。 |
| 不懂为什么要多写 case、rubric 和 run | [[02-Why-Guide]] | 不要先上评测框架。 |
| 知道原理,但不知道今天怎么开始 | [[02-First-Week-Worksheet]] | 不要把项目放大到 100 个 case。 |
| 已有 10 个 case,想系统推进 | [[01-LLM-Evaluation-Roadmap]] | 不要急着微调模型。 |
| 已有具体项目,想记录实验 | [[01_Projects/Personal-Tech/LLM_Evaluation/03-Practice/README]] | 不要把 run、case 和个人笔记混在一起。 |
| 想理解这条职业方向的全貌 | [[02_Areas/Job/llm_data_annotation_programmer_roadmap|大模型数据标注与程序员入门]](存于 02_Areas/Job) | 不要把岗位名当成能力边界。 |
## 本专区的学习原则
@@ -16,14 +16,14 @@ created: 2026-08-21
## Level 1:建立判断能力
- [ ] 我能用自己的话解释:为什么先定义成功条件,再运行模型。
- [ ] 我已读完 [[01-Getting-Started/02-Why-Guide]]。
- [ ] 我已读完 [[02-Why-Guide]]。
- [ ] 我已从公开资料中选定一个范围足够小的任务。
- [ ] 我已写出一个能回答的问题和一个不能回答的问题。
- [ ] 我已写出 rubric v0.1,包含有据性、资料不足处理与核心任务完成度三个维度。
## Level 2:完成第一个最小闭环
- [ ] 我已在 [[02-Practical-Roadmap/02-First-Week-Worksheet]] 中写出 10 个 case。
- [ ] 我已在 [[02-First-Week-Worksheet]] 中写出 10 个 case。
- [ ] 我已得到至少一组候选输出。
- [ ] 我已对至少 5 个 case 写下通过/失败理由。
- [ ] 我已识别并命名 3—5 类失败。
@@ -35,7 +35,7 @@ created: 2026-08-21
- [ ] 我已保存稳定的 case 定义与一次运行记录。
- [ ] 我已写出一份简短失败复盘。
- [ ] 我已决定下一阶段是 RAG、Agent tool-use、Text-to-SQL 还是 Code Agent。
- [ ] 我已开始阅读 [[02-Practical-Roadmap/01-LLM-Evaluation-Roadmap]] 中对应部分。
- [ ] 我已开始阅读 [[01-LLM-Evaluation-Roadmap]] 中对应部分。
## 每周复盘(复制到项目周记)
@@ -9,7 +9,7 @@ created: 2026-08-21
# 项目实践入口
这里用于放实际 Eval 项目,而不是继续积累理论笔记。学习材料告诉你“为什么”和“怎么做”([[01-Getting-Started/02-Why-Guide|Why Guide]]、[[02-Practical-Roadmap/01-LLM-Evaluation-Roadmap|实战路线图]]);项目目录保存你亲自得到的证据。
这里用于放实际 Eval 项目,而不是继续积累理论笔记。学习材料告诉你“为什么”和“怎么做”([[02-Why-Guide|Why Guide]]、[[01-LLM-Evaluation-Roadmap|实战路线图]]);项目目录保存你亲自得到的证据。
## 建议的第一批项目
@@ -96,7 +96,7 @@ project_type: rag-eval
## 开始前
先完成 [[02-Practical-Roadmap/02-First-Week-Worksheet|首周工作表]],再建立你的第一个项目目录。
先完成 [[02-First-Week-Worksheet|首周工作表]],再建立你的第一个项目目录。
---
@@ -21,8 +21,8 @@ created: 2026-08-21
## 正式学习材料不在本目录
- 建立心智模型:[[01-Getting-Started/02-Why-Guide]]
- 填写第一个项目:[[02-Practical-Roadmap/02-First-Week-Worksheet]]
- 执行完整路线:[[02-Practical-Roadmap/01-LLM-Evaluation-Roadmap]]
- 建立心智模型:[[02-Why-Guide]]
- 填写第一个项目:[[02-First-Week-Worksheet]]
- 执行完整路线:[[01-LLM-Evaluation-Roadmap]]
返回 [[01_Projects/Personal-Tech/LLM_Evaluation/README|学习专区首页]]。
@@ -24,14 +24,14 @@ created: 2026-08-21
→ 再进入完整工程路线(How
```
| 顺序 | 阅读材料 | 解决的问题 | 完成标志 |
|---:|---|---|---|
| 1 | [[01-Getting-Started/00-Start-Here|开始这里]] | 我究竟在学什么,如何不被概念和工具淹没? | 完成十分钟动作,能复述学习主线。 |
| 2 | [[00-Foundations/01-What-Is-LLM-Evaluation|什么是 LLM Evaluation]] | 评测的对象、边界与常用术语是什么? | 能区分模型评测与系统评测、Benchmark 与 Product Eval。 |
| 3 | [[01-Getting-Started/02-Why-Guide|从零开始做 LLM 评测:每一步背后的道理]] | 为什么先做 case、rubric、盲评、run、失败分类与回归? | 能解释每个动作在防什么问题。 |
| 4 | [[02-Practical-Roadmap/02-First-Week-Worksheet|首周工作表]] | 今天应该写什么,卡住时怎样缩小范围? | 完成任务边界、10 个 case 与 rubric v0.1。 |
| 5 | [[03-Practice/README|项目实践入口]] | 如何把工作表变成自己的项目仓库? | 开始一个最小项目并保存第一个 run。 |
| 6 | [[02-Practical-Roadmap/01-LLM-Evaluation-Roadmap|LLM 评测工程实战路线图]] | 怎样逐步走向 Judge、Agent、安全、数据资产与 CI? | 为自己选择一个 12 周内的下一阶段。 |
| 顺序 | 阅读材料 | 解决的问题 | 完成标志 | |
| --: | ------------------------------------------------ | ----------------------- | --------------------------------- | -------------------------------------- |
| 1 | [[00-Start-Here|开始这里]] | 我究竟在学什么,如何不被概念和工具淹没? | 完成十分钟动作,能复述学习主线。 |
| 2 | [[01-What-Is-LLM-Evaluation|什么是 LLM Evaluation]] | 评测的对象、边界与常用术语是什么? | 能区分模型评测与系统评测、Benchmark 与 Product Eval。 |
| 3 | [[02-Why-Guide|从零开始做 LLM 评测:每一步背后的道理]] | 为什么先做 case、rubric、盲评、run、失败分类与回归? | 能解释每个动作在防什么问题。 |
| 4 | [[02-First-Week-Worksheet|首周工作表]] | 今天应该写什么,卡住时怎样缩小范围? | 完成任务边界、10 个 case 与 rubric v0.1。 |
| 5 | [[01_Projects/Personal-Tech/LLM_Evaluation/03-Practice/README|项目实践入口]] | 如何把工作表变成自己的项目仓库? | 开始一个最小项目并保存第一个 run。 |
| 6 | [[01-LLM-Evaluation-Roadmap|LLM 评测工程实战路线图]] | 怎样逐步走向 Judge、Agent、安全、数据资产与 CI? | 为自己选择一个 12 周内的下一阶段。 |
> **数量口径:** 首周最低完成 10 个 case;若时间充裕,按路线图 Day 1 扩展至 20 个(结构见《首周工作表》第 2 节)。
@@ -56,10 +56,10 @@ created: 2026-08-21
## 你的当前入口
打开 [[01-Getting-Started/00-Start-Here|开始这里]],完成其中的十分钟动作;完成后再填写 [[02-Practical-Roadmap/02-First-Week-Worksheet|首周工作表]]。
打开 [[00-Start-Here|开始这里]],完成其中的十分钟动作;完成后再填写 [[02-First-Week-Worksheet|首周工作表]]。
## 关联材料
- 职业与岗位背景:[[02_Areas/Job/llm_data_annotation_programmer_roadmap|大模型数据标注与程序员入门]](原文存于 02_Areas/Job
- 入门认知草案:[[04-Reference-Archive/02-Intro-Cognitive-Framework-Draft|入门认知框架(草案)]]
- 路线图重构草案:[[04-Reference-Archive/03-Roadmap-Refactor-Outline-Draft|实战路线图重构大纲(草案)]]
- 入门认知草案:[[02-Intro-Cognitive-Framework-Draft|入门认知框架(草案)]]
- 路线图重构草案:[[03-Roadmap-Refactor-Outline-Draft|实战路线图重构大纲(草案)]]