psyclaw 0.27.0 → 0.27.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +9 -5
- package/dist/apps/panel/index.html +78 -3406
- package/dist/src/adapters/pi/extension.js +406 -107
- package/dist/src/adapters/pi/extension.js.map +1 -1
- package/dist/src/adapters/pi/rpc.js +7 -4
- package/dist/src/adapters/pi/rpc.js.map +1 -1
- package/dist/src/branding.js +7 -5
- package/dist/src/branding.js.map +1 -1
- package/dist/src/chat.js +0 -5
- package/dist/src/chat.js.map +1 -1
- package/dist/src/cli.js +0 -0
- package/dist/src/core/citations.d.ts +2 -0
- package/dist/src/core/citations.js +4 -1
- package/dist/src/core/citations.js.map +1 -1
- package/dist/src/core/docx.js +2 -2
- package/dist/src/core/docx.js.map +1 -1
- package/dist/src/index.d.ts +3 -0
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/literature/archive.d.ts +30 -0
- package/dist/src/literature/archive.js +133 -0
- package/dist/src/literature/archive.js.map +1 -0
- package/dist/src/orchestration/research-agents.d.ts +32 -0
- package/dist/src/orchestration/research-agents.js +225 -0
- package/dist/src/orchestration/research-agents.js.map +1 -0
- package/dist/src/panel/extension.js +2 -52
- package/dist/src/panel/extension.js.map +1 -1
- package/dist/src/panel/server.d.ts +2 -0
- package/dist/src/panel/server.js +113 -74
- package/dist/src/panel/server.js.map +1 -1
- package/dist/src/project/hitl.js +2 -0
- package/dist/src/project/hitl.js.map +1 -1
- package/dist/src/project/paths.d.ts +2 -6
- package/dist/src/project/paths.js +4 -12
- package/dist/src/project/paths.js.map +1 -1
- package/dist/src/skills/recommended.d.ts +10 -0
- package/dist/src/skills/recommended.js +85 -7
- package/dist/src/skills/recommended.js.map +1 -1
- package/dist/src/telemetry/export.d.ts +32 -0
- package/dist/src/telemetry/export.js +102 -1
- package/dist/src/telemetry/export.js.map +1 -1
- package/dist/src/tui/provider-picker.d.ts +48 -0
- package/dist/src/tui/provider-picker.js +115 -0
- package/dist/src/tui/provider-picker.js.map +1 -0
- package/dist/src/workflows/academic-export.d.ts +14 -0
- package/dist/src/workflows/academic-export.js +42 -0
- package/dist/src/workflows/academic-export.js.map +1 -0
- package/dist/src/workflows/meta-analysis.d.ts +1 -0
- package/dist/src/workflows/meta-analysis.js +17 -9
- package/dist/src/workflows/meta-analysis.js.map +1 -1
- package/dist/src/workflows/publish.js +14 -0
- package/dist/src/workflows/publish.js.map +1 -1
- package/package.json +1 -1
- package/skills/core/academic-grill/SKILL.md +77 -0
- package/skills/core/manifest.json +3 -2
- package/skills/recommended/catalog.json +210 -44
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { basename, dirname, extname } from "node:path";
|
|
2
|
+
import { markdownToDocx } from "../core/docx.js";
|
|
3
|
+
import { sha256File } from "../core/hash.js";
|
|
4
|
+
import { atomicWriteFile } from "../project/jsonl.js";
|
|
5
|
+
import { assertSafeProjectPath } from "../project/paths.js";
|
|
6
|
+
import { readManuscript } from "../project/manuscript.js";
|
|
7
|
+
import { findReferenceDoc, publishManuscript } from "./publish.js";
|
|
8
|
+
/** Export a real manuscript through its evidence gate, or explicitly export only an academic analysis report. */
|
|
9
|
+
export async function exportAcademicDocument(root) {
|
|
10
|
+
const document = await readManuscript(root);
|
|
11
|
+
if (!document.exists || !document.path || !document.markdown.trim())
|
|
12
|
+
throw new Error("没有可导出的 Markdown 文档");
|
|
13
|
+
const isManuscript = document.path === "notes/manuscript.md" || document.path.startsWith("paper/") || document.path.startsWith("docs/");
|
|
14
|
+
if (isManuscript) {
|
|
15
|
+
const result = await publishManuscript(root, { name: basename(document.path, extname(document.path)), exportDocx: true });
|
|
16
|
+
return { kind: "manuscript", markdownPath: result.markdownPath, docxPath: result.docxPath, docxSha256: result.docxSha256 };
|
|
17
|
+
}
|
|
18
|
+
const source = await assertSafeProjectPath(root, document.path);
|
|
19
|
+
const directory = dirname(document.path).replaceAll("\\", "/");
|
|
20
|
+
const stem = basename(document.path, extname(document.path));
|
|
21
|
+
const docxPath = `${directory}/${stem}_APA7.docx`;
|
|
22
|
+
const target = await assertSafeProjectPath(root, docxPath);
|
|
23
|
+
const reference = await findReferenceDoc(root);
|
|
24
|
+
await markdownToDocx(source, target, reference ? await assertSafeProjectPath(root, reference) : undefined);
|
|
25
|
+
const docxSha256 = await sha256File(target);
|
|
26
|
+
await atomicWriteFile(await assertSafeProjectPath(root, ".psyclaw/analysis-report-export.json"), `${JSON.stringify({
|
|
27
|
+
schemaVersion: "psyclaw/analysis-report-export/v1",
|
|
28
|
+
markdownPath: document.path,
|
|
29
|
+
docxPath,
|
|
30
|
+
docxSha256,
|
|
31
|
+
classification: "academic-analysis-report-not-manuscript",
|
|
32
|
+
exportedAt: new Date().toISOString(),
|
|
33
|
+
}, null, 2)}\n`);
|
|
34
|
+
return {
|
|
35
|
+
kind: "analysis-report",
|
|
36
|
+
markdownPath: document.path,
|
|
37
|
+
docxPath,
|
|
38
|
+
docxSha256,
|
|
39
|
+
notice: "前置的文献调研、全文写作和同行评审尚未完成;本文件仅为遵循学术报告规范的分析报告,不是论文。",
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=academic-export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"academic-export.js","sourceRoot":"","sources":["../../../src/workflows/academic-export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAMnE,iHAAiH;AACjH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,IAAY;IACvD,MAAM,QAAQ,GAAG,MAAM,cAAc,CAAC,IAAI,CAAC,CAAC;IAC5C,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE;QAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAC3G,MAAM,YAAY,GAAG,QAAQ,CAAC,IAAI,KAAK,qBAAqB,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;IACxI,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1H,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,YAAY,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC;IAC7H,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC/D,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,GAAG,SAAS,IAAI,IAAI,YAAY,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC3D,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,IAAI,CAAC,CAAC;IAC/C,MAAM,cAAc,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC,MAAM,qBAAqB,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC3G,MAAM,UAAU,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,eAAe,CAAC,MAAM,qBAAqB,CAAC,IAAI,EAAE,sCAAsC,CAAC,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC;QACjH,aAAa,EAAE,mCAAmC;QAClD,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,QAAQ;QACR,UAAU;QACV,cAAc,EAAE,yCAAyC;QACzD,UAAU,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACrC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO;QACL,IAAI,EAAE,iBAAiB;QACvB,YAAY,EAAE,QAAQ,CAAC,IAAI;QAC3B,QAAQ;QACR,UAAU;QACV,MAAM,EAAE,gDAAgD;KACzD,CAAC;AACJ,CAAC"}
|
|
@@ -27,15 +27,23 @@ export async function searchOpenAlex(target, nStudies, fetchFn = fetch) {
|
|
|
27
27
|
if (!response.ok)
|
|
28
28
|
throw new Error(`OpenAlex 检索失败 (${response.status})`);
|
|
29
29
|
const body = await response.json();
|
|
30
|
-
return (body.results ?? []).slice(0, nStudies).map((item, index) =>
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
30
|
+
return (body.results ?? []).slice(0, nStudies).map((item, index) => {
|
|
31
|
+
const abstract = Object.entries(item.abstract_inverted_index ?? {})
|
|
32
|
+
.flatMap(([word, positions]) => positions.map((position) => ({ word, position })))
|
|
33
|
+
.sort((left, right) => left.position - right.position)
|
|
34
|
+
.map((entry) => entry.word)
|
|
35
|
+
.join(" ");
|
|
36
|
+
return {
|
|
37
|
+
id: item.id ?? `study_${index + 1}`,
|
|
38
|
+
title: item.title ?? "untitled",
|
|
39
|
+
authors: (item.authorships ?? []).map((entry) => entry.author?.display_name ?? "?").slice(0, 10),
|
|
40
|
+
...(abstract ? { abstract } : {}),
|
|
41
|
+
...(item.publication_year === undefined ? {} : { year: item.publication_year }),
|
|
42
|
+
...(item.host_venue?.display_name ? { venue: item.host_venue.display_name } : {}),
|
|
43
|
+
...(item.doi ? { doi: item.doi } : {}),
|
|
44
|
+
...(item.cited_by_count === undefined ? {} : { citations: item.cited_by_count }),
|
|
45
|
+
};
|
|
46
|
+
});
|
|
39
47
|
}
|
|
40
48
|
/** Parse a CSV with at least `study_id,effect_size,standard_error`. */
|
|
41
49
|
export function parseEffectCsv(text) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"meta-analysis.js","sourceRoot":"","sources":["../../../src/workflows/meta-analysis.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAoB,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAA0C,MAAM,WAAW,CAAC;AAErF,MAAM,CAAC,MAAM,gBAAgB,GAAiB;IAC5C,EAAE,EAAE,eAAe;IACnB,OAAO,EAAE,OAAO;IAChB,WAAW,EAAE,oGAAoG;IACjH,SAAS,EAAE,CAAC,eAAe,CAAC;IAC5B,KAAK,EAAE;QACL,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,6BAA6B,EAAE;QAChG,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,uCAAuC,EAAE;QACxG,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,2CAA2C,EAAE;QAC3G,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,mCAAmC,EAAE;KACnG;IACD,iBAAiB,EAAE,CAAC,oBAAoB,EAAE,kBAAkB,CAAC;CAC9D,CAAC;
|
|
1
|
+
{"version":3,"file":"meta-analysis.js","sourceRoot":"","sources":["../../../src/workflows/meta-analysis.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,6 +7,7 @@ import { atomicWriteFile, appendJsonlIfMissing, readJsonl } from "../project/jso
|
|
|
7
7
|
import { assertSafeProjectPath, projectPaths } from "../project/paths.js";
|
|
8
8
|
import { readManuscript } from "../project/manuscript.js";
|
|
9
9
|
import { allocateProjectVersion } from "../project/versions.js";
|
|
10
|
+
import { auditCitationFulltexts } from "../literature/archive.js";
|
|
10
11
|
export async function readPublishedVersions(root) {
|
|
11
12
|
return readJsonl(await assertSafeProjectPath(root, ".psyclaw/publish.jsonl"));
|
|
12
13
|
}
|
|
@@ -50,6 +51,19 @@ export async function publishManuscript(root, options = {}) {
|
|
|
50
51
|
if (!markdown.trim()) {
|
|
51
52
|
throw new Error("没有可发布的手稿内容:请先在编辑器写入内容,或先运行工作流生成论文初稿");
|
|
52
53
|
}
|
|
54
|
+
const isManuscript = sourcePath === "notes/manuscript.md" || sourcePath?.startsWith("paper/") || sourcePath?.startsWith("docs/");
|
|
55
|
+
if (isManuscript || options.markdown !== undefined) {
|
|
56
|
+
const citationAudit = await auditCitationFulltexts(root);
|
|
57
|
+
if (!citationAudit.ok) {
|
|
58
|
+
const missing = citationAudit.missingPdfs.map((item) => `${item.doi} -> ${item.doiUrl}(下载到 ${item.expectedPath})`);
|
|
59
|
+
throw new Error([
|
|
60
|
+
"论文发布已被引用证据门禁阻断。",
|
|
61
|
+
citationAudit.citedDois.length === 0 ? "尚未登记任何正文引用。" : "",
|
|
62
|
+
citationAudit.missingVerification.length ? `未完成双源核验:${citationAudit.missingVerification.join(", ")}` : "",
|
|
63
|
+
missing.length ? `本地缺少引用论文 PDF:${missing.join(";")}` : "",
|
|
64
|
+
].filter(Boolean).join(" "));
|
|
65
|
+
}
|
|
66
|
+
}
|
|
53
67
|
const markdownPath = `paper/${name}.md`;
|
|
54
68
|
const markdownTarget = await assertSafeProjectPath(root, markdownPath);
|
|
55
69
|
const written = markdown.endsWith("\n") ? markdown : `${markdown}\n`;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/workflows/publish.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAC5D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AACvF,OAAO,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAC1E,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AA+
|
|
1
|
+
{"version":3,"file":"publish.js","sourceRoot":"","sources":["../../../src/workflows/publish.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "psyclaw",
|
|
3
|
-
"version": "0.27.
|
|
3
|
+
"version": "0.27.5",
|
|
4
4
|
"description": "A standalone, evidence-grounded social-science research agent — a conversation-driven agent that bundles the Pi runtime with psyclaw's research contracts, evidence gates, and workflows",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: academic-grill
|
|
3
|
+
description: Stress-test an academic research question, proposal, study design, analysis plan, manuscript claim, review protocol, or AI research project through a one-question-at-a-time interview until its consequential decisions, evidence boundaries, and reporting commitments are explicit. Use when the user invokes /grill or asks for rigorous academic questioning.
|
|
4
|
+
license: MIT
|
|
5
|
+
---
|
|
6
|
+
|
|
7
|
+
# Academic Grill
|
|
8
|
+
|
|
9
|
+
Interrogate the user's academic plan until both sides share a precise, defensible research specification. Be rigorous about the reasoning while remaining constructive toward the researcher.
|
|
10
|
+
|
|
11
|
+
## Interaction Contract
|
|
12
|
+
|
|
13
|
+
- Ask exactly one substantive question per turn.
|
|
14
|
+
- Give a concise recommended answer or decision with every question, including the reason and main trade-off. Clearly distinguish that recommendation from facts established by evidence.
|
|
15
|
+
- Resolve upstream decisions before downstream ones. Do not ask about an analysis technique while the construct, estimand, comparison, or data-generating process is still unclear.
|
|
16
|
+
- If the answer can be established from files, project state, registered evidence, code, or prior conversation, inspect those sources instead of asking the user.
|
|
17
|
+
- Use the user's latest answer to choose the next unresolved branch. Do not dump a static questionnaire.
|
|
18
|
+
- When the user's answer creates a contradiction or leaves a consequential ambiguity, resolve it before advancing.
|
|
19
|
+
- Challenge unsupported assumptions, vague constructs, convenience samples, post-hoc outcomes, causal overreach, missing uncertainty, undisclosed researcher degrees of freedom, non-falsifiable claims, and conclusions that exceed the evidence.
|
|
20
|
+
- Never invent a citation, result, sample characteristic, measure, preregistration, ethical approval, or completed analysis.
|
|
21
|
+
- Do not imply that completing the interview validates the study.
|
|
22
|
+
|
|
23
|
+
## Dependency Order
|
|
24
|
+
|
|
25
|
+
Move through only the branches relevant to the request:
|
|
26
|
+
|
|
27
|
+
1. research purpose, intended contribution, audience, and decision the work should inform;
|
|
28
|
+
2. research question, construct definitions, unit of analysis, population or corpus, context, scope, and falsifiability;
|
|
29
|
+
3. theoretical mechanism, prior evidence, competing explanations, and hypotheses or propositions;
|
|
30
|
+
4. research paradigm, exploratory versus confirmatory status, preregistration boundary, primary versus secondary outcomes, and multiplicity;
|
|
31
|
+
5. design, sampling, inclusion and exclusion, comparison or counterfactual, timing, ethics, consent, access rights, and data governance;
|
|
32
|
+
6. operationalization, measurement validity, reliability, manipulation, confounds, missingness, bias, and data quality;
|
|
33
|
+
7. target estimand or interpretive aim, analysis strategy, assumptions, effect size, uncertainty, robustness or sensitivity analysis, and stopping rule;
|
|
34
|
+
8. evidence-to-claim alignment, alternative interpretations, generalizability or transferability, limitations, reproducibility, and reporting commitments.
|
|
35
|
+
|
|
36
|
+
Adapt these branches to the study rather than forcing an experimental template:
|
|
37
|
+
|
|
38
|
+
- For qualitative research, examine positionality, reflexivity, sampling logic, saturation or information power, coding and interpretation, negative cases, and credibility.
|
|
39
|
+
- For evidence synthesis, examine the review question, protocol, databases, search strategy, screening, extraction, risk of bias, heterogeneity, and certainty of evidence.
|
|
40
|
+
- For AI-system research, examine task and construct validity, baselines, data provenance and leakage, evaluation-set independence, ablations, uncertainty, reproducibility, human evaluation, safety, and the boundary between system capability and empirical claim.
|
|
41
|
+
- For mixed-methods research, examine why integration is needed, where strands connect, and how disagreement between strands will be interpreted.
|
|
42
|
+
|
|
43
|
+
## Completion
|
|
44
|
+
|
|
45
|
+
Do not stop merely because every branch was mentioned. Stop when the consequential decisions are either resolved or explicitly assigned to the researcher, and contradictions have been surfaced. Then provide a compact research specification with:
|
|
46
|
+
|
|
47
|
+
- confirmed decisions;
|
|
48
|
+
- unresolved decisions and their owners;
|
|
49
|
+
- evidence, data, or approvals still required;
|
|
50
|
+
- exploratory and confirmatory boundaries;
|
|
51
|
+
- principal validity and ethics risks;
|
|
52
|
+
- analysis and reporting commitments;
|
|
53
|
+
- claims the current design may support and claims it may not support;
|
|
54
|
+
- the next concrete action.
|
|
55
|
+
|
|
56
|
+
Label the specification as a planning artifact, not evidence that the study is valid or complete.
|
|
57
|
+
|
|
58
|
+
## Project Persistence
|
|
59
|
+
|
|
60
|
+
The command invocation specifies one persistence mode. Follow it exactly.
|
|
61
|
+
|
|
62
|
+
### Init mode
|
|
63
|
+
|
|
64
|
+
After the interview is complete, update the initialized project without asking for another confirmation:
|
|
65
|
+
|
|
66
|
+
- `.psyclaw/project.json`: keep its schema and identity fields; update only the goal and paradigm when the confirmed specification changed them;
|
|
67
|
+
- `notes/goal.md`: confirmed purpose, research question, scope, population or corpus, and exclusions;
|
|
68
|
+
- `notes/research-spec.md`: the complete confirmed research specification and claims boundary;
|
|
69
|
+
- `notes/decisions.md`: consequential decisions, rationale, alternatives, owner, and status;
|
|
70
|
+
- `notes/plan.md`: dependency-ordered tasks derived from the confirmed specification, with inputs, outputs, approvals, status, and stop conditions;
|
|
71
|
+
- `notes/decision_request.md`: unresolved decisions that require the researcher, or an explicit `Status: none` when there are none.
|
|
72
|
+
|
|
73
|
+
Preserve valid frontmatter and existing unrelated user content. Do not mark evidence, ethics approval, preregistration, data access, analysis, or review as completed unless project records establish it.
|
|
74
|
+
|
|
75
|
+
### Review mode
|
|
76
|
+
|
|
77
|
+
After the interview is complete, do not change project files immediately. Show a concise proposed-update summary naming every affected file, then ask one explicit question: whether to apply the updates. Write the same project documents as init mode only after the researcher confirms. If no initialized project exists, offer to return the specification in the conversation without creating project state.
|
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "psyclaw/skill-pack/v1",
|
|
3
3
|
"id": "psyclaw-core",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"skills": [
|
|
6
|
+
"academic-grill",
|
|
6
7
|
"research-intake",
|
|
7
8
|
"evidence-capture",
|
|
8
9
|
"citation-audit",
|
|
9
10
|
"research-brief"
|
|
10
11
|
],
|
|
11
|
-
"enabledByDefault": ["research-intake", "evidence-capture", "citation-audit", "research-brief"],
|
|
12
|
+
"enabledByDefault": ["academic-grill", "research-intake", "evidence-capture", "citation-audit", "research-brief"],
|
|
12
13
|
"source": {"kind": "workspace", "ref": "initial-mvp"},
|
|
13
14
|
"license": {"spdx": "MIT", "evidenceRef": "../../LICENSE"},
|
|
14
15
|
"dependencyStatus": "ready"
|
|
@@ -1,53 +1,219 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": "psyclaw/recommended-skills/v1",
|
|
3
|
-
"documentVersion": "0.
|
|
4
|
-
"syncedAt": "2026-08-
|
|
3
|
+
"documentVersion": "0.6.0",
|
|
4
|
+
"syncedAt": "2026-08-30",
|
|
5
5
|
"sourceDocument": "学术AI_Skill分享资料.pdf",
|
|
6
6
|
"sourceRef": "local-user-curated",
|
|
7
7
|
"items": [
|
|
8
|
-
{
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
{
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{
|
|
28
|
-
|
|
8
|
+
{
|
|
9
|
+
"id": "academic-research-suite",
|
|
10
|
+
"name": "ARS Academic Research Suite",
|
|
11
|
+
"kind": "skill",
|
|
12
|
+
"stage": "研究全流程",
|
|
13
|
+
"description": "面向文献研究、论文写作、同行评审与修订的端到端 Academic Research Skills 套件。",
|
|
14
|
+
"sourceRef": "https://github.com/Imbad0202/academic-research-skills-codex",
|
|
15
|
+
"installHint": "安装仓库中的 skills/academic-research-suite 完整目录,目标目录根部必须是该目录的 SKILL.md。"
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
"id": "nature-skills",
|
|
19
|
+
"name": "Nature Skills Suite",
|
|
20
|
+
"kind": "skill",
|
|
21
|
+
"skillLayout": "collection",
|
|
22
|
+
"stage": "研究全流程",
|
|
23
|
+
"description": "完整安装 Nature Skills 套件,覆盖检索、精读、数据、统计、实验记录、写作、绘图、引用核验、评审回复与演示文稿等研究任务。",
|
|
24
|
+
"sourceRef": "https://github.com/Yuan1z0825/nature-skills",
|
|
25
|
+
"installHint": "这是多 Skill 套件。将仓库 skills 目录中的全部 nature-* Skill(包括 nature-shared)原样安装到目标目录,保留每个子目录的 SKILL.md、references、scripts、assets、tests 和相对路径;不要只挑选单个 Skill,也不要在套件根目录伪造 SKILL.md。"
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"id": "scientific-visualization",
|
|
29
|
+
"name": "Scientific Visualization",
|
|
30
|
+
"kind": "skill",
|
|
31
|
+
"stage": "科研绘图",
|
|
32
|
+
"description": "创建并审计真实、可访问、可投稿的 Matplotlib、Seaborn 或 Plotly 科研图表。",
|
|
33
|
+
"sourceRef": "https://github.com/K-Dense-AI/scientific-agent-skills",
|
|
34
|
+
"installHint": "只安装仓库中的 skills/scientific-visualization 完整目录,包含其 scripts、assets 与 references。"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
"id": "academic-figure-skill",
|
|
38
|
+
"name": "Academic Figure Skill",
|
|
39
|
+
"kind": "skill",
|
|
40
|
+
"stage": "科研绘图",
|
|
41
|
+
"description": "围绕 Nature、Cell、Science 图稿规范和常用图型生成出版级矢量图,并进行多轮视觉质检。",
|
|
42
|
+
"sourceRef": "https://github.com/TingxiYu/academic-figure-skill",
|
|
43
|
+
"installHint": "安装仓库根目录的完整 Skill 包,保留 SKILL.md、references、assets 和脚本。"
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
"id": "figure-generation",
|
|
47
|
+
"name": "Scientific Figure Generation",
|
|
48
|
+
"kind": "skill",
|
|
49
|
+
"stage": "科研绘图",
|
|
50
|
+
"description": "通过查询扩展、可执行绘图代码和视觉反馈生成论文常见的柱状图、热图、消融图、训练曲线等。",
|
|
51
|
+
"sourceRef": "https://github.com/lingzhi227/agent-research-skills",
|
|
52
|
+
"installHint": "只安装仓库中的 skills/figure-generation 完整目录,包含 scripts 和 references。"
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
"id": "beautify-chart",
|
|
56
|
+
"name": "Science Plot Formatter",
|
|
57
|
+
"kind": "skill",
|
|
58
|
+
"stage": "图表美化",
|
|
59
|
+
"description": "审查并改造已有 Matplotlib 脚本,使其达到论文投稿所需的排版、配色、字体和导出质量。",
|
|
60
|
+
"sourceRef": "https://github.com/preordinary/science-plot-formatter",
|
|
61
|
+
"installHint": "安装仓库中的 .codex/skills/beautify-chart 完整目录;若该路径不存在,再采用 .claude/skills/beautify-chart。"
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
"id": "markitdown-bilibili",
|
|
65
|
+
"name": "MarkItDown + Bilibili",
|
|
66
|
+
"kind": "skill",
|
|
67
|
+
"stage": "材料转换",
|
|
68
|
+
"description": "字幕优先、转录回退,把 B 站课程和讲座转成带来源状态的 Markdown。",
|
|
69
|
+
"sourceRef": "https://github.com/LHT666-hub/markItdown-pro"
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
"id": "session-handoff",
|
|
73
|
+
"name": "Session Handoff",
|
|
74
|
+
"kind": "skill",
|
|
75
|
+
"stage": "任务接力",
|
|
76
|
+
"description": "把长任务的目标、进度、阻塞和下一步写成可核验的交接状态。",
|
|
77
|
+
"sourceRef": "https://github.com/LHT666-hub/session-handoff"
|
|
78
|
+
},
|
|
79
|
+
{
|
|
80
|
+
"id": "zotero-translators",
|
|
81
|
+
"name": "Zotero Translators",
|
|
82
|
+
"kind": "skill",
|
|
83
|
+
"stage": "题录",
|
|
84
|
+
"description": "从出版社和数据库页面提取规范题录、DOI、PDF 和补充材料。",
|
|
85
|
+
"sourceRef": "https://github.com/zotero/translators"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"id": "scansci-pdf",
|
|
89
|
+
"name": "ScanSci PDF",
|
|
90
|
+
"kind": "skill",
|
|
91
|
+
"stage": "全文获取",
|
|
92
|
+
"description": "按开放来源、官方接口和用户授权会话尝试获取论文全文。",
|
|
93
|
+
"sourceRef": "https://github.com/Rimagination/scansci-pdf"
|
|
94
|
+
},
|
|
95
|
+
{
|
|
96
|
+
"id": "scholarbridge",
|
|
97
|
+
"name": "ScholarBridge",
|
|
98
|
+
"kind": "skill",
|
|
99
|
+
"stage": "文献质控",
|
|
100
|
+
"description": "连接文献清单、PDF 完整性校验、哈希去重和 Zotero 交接。",
|
|
101
|
+
"sourceRef": "https://github.com/LHT666-hub/ScholarBridge"
|
|
102
|
+
},
|
|
103
|
+
{
|
|
104
|
+
"id": "mentorforge",
|
|
105
|
+
"name": "MentorForge",
|
|
106
|
+
"kind": "skill",
|
|
107
|
+
"stage": "方法蒸馏",
|
|
108
|
+
"description": "从学者主页、论文和全文信号卡中提炼可追问的科研方法论。",
|
|
109
|
+
"sourceRef": "https://github.com/qwqalice/MentorForge"
|
|
110
|
+
},
|
|
111
|
+
{
|
|
112
|
+
"id": "supervisor-skills",
|
|
113
|
+
"name": "Supervisor-Skills",
|
|
114
|
+
"kind": "skill",
|
|
115
|
+
"stage": "研究写作",
|
|
116
|
+
"description": "覆盖研究构思、调研、写作、图表、评审和投稿前检查的科研工作流。",
|
|
117
|
+
"sourceRef": "https://github.com/HKUSTDial/Supervisor-Skills"
|
|
118
|
+
},
|
|
119
|
+
{
|
|
120
|
+
"id": "openkb",
|
|
121
|
+
"name": "OpenKB",
|
|
122
|
+
"kind": "skill",
|
|
123
|
+
"stage": "知识库",
|
|
124
|
+
"description": "把异构资料编译成可链接、可检索、可持续更新的知识库。",
|
|
125
|
+
"sourceRef": "https://github.com/VectifyAI/OpenKB"
|
|
126
|
+
},
|
|
127
|
+
{
|
|
128
|
+
"id": "corpus2skill",
|
|
129
|
+
"name": "Corpus2Skill",
|
|
130
|
+
"kind": "skill",
|
|
131
|
+
"stage": "知识库",
|
|
132
|
+
"description": "将大规模语料编译成可导航的 Skill 树和文档索引。",
|
|
133
|
+
"sourceRef": "https://github.com/dukesun99/Corpus2Skill"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"id": "academic-reference-matcher",
|
|
137
|
+
"name": "Academic Reference Matcher",
|
|
138
|
+
"kind": "skill",
|
|
139
|
+
"stage": "引用核验",
|
|
140
|
+
"description": "逐条拆分 Claim、检索来源并输出 Claim–Reference 对照表。",
|
|
141
|
+
"sourceRef": "https://github.com/keros68/academic-reference-matcher"
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
"id": "pskoett-ai-skills",
|
|
145
|
+
"name": "pskoett AI Skills",
|
|
146
|
+
"kind": "skill",
|
|
147
|
+
"stage": "经验沉淀",
|
|
148
|
+
"description": "把失败和纠正沉淀为候选经验,经过验证后晋升为规则或回归测试。",
|
|
149
|
+
"sourceRef": "https://github.com/pskoett/pskoett-ai-skills"
|
|
150
|
+
},
|
|
151
|
+
{
|
|
152
|
+
"id": "omnidistill",
|
|
153
|
+
"name": "OmniDistill",
|
|
154
|
+
"kind": "skill",
|
|
155
|
+
"stage": "知识蒸馏",
|
|
156
|
+
"description": "以证据账本统一知识、启发式规则、工作流、反模式和边界。",
|
|
157
|
+
"sourceRef": "https://github.com/LHT666-hub/OmniDistill"
|
|
158
|
+
}
|
|
159
|
+
],
|
|
160
|
+
"externalTools": [
|
|
161
|
+
{
|
|
162
|
+
"id": "markitdown",
|
|
163
|
+
"name": "MarkItDown",
|
|
164
|
+
"kind": "external-tool",
|
|
165
|
+
"stage": "材料转换",
|
|
166
|
+
"description": "把 PDF、Word、PPT、Excel、HTML 等转换为结构化 Markdown。它是独立 Python 工具,不作为 PsyClaw Skill 安装。",
|
|
167
|
+
"sourceRef": "https://github.com/microsoft/markitdown"
|
|
168
|
+
}
|
|
29
169
|
],
|
|
30
170
|
"installPrep": [
|
|
31
|
-
{
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
{
|
|
51
|
-
|
|
171
|
+
{
|
|
172
|
+
"id": "markitdown-bilibili",
|
|
173
|
+
"sourceKind": "github",
|
|
174
|
+
"sourceUrl": "https://github.com/LHT666-hub/markItdown-pro.git",
|
|
175
|
+
"ref": "a601bb294f57dc03a681d2b9fa91d4bb5627bd2f",
|
|
176
|
+
"skillPath": "markitdown-bilibili",
|
|
177
|
+
"skillName": "markitdown-bilibili",
|
|
178
|
+
"license": "MIT",
|
|
179
|
+
"target": ".psyclaw/imports/recommended/markitdown-bilibili",
|
|
180
|
+
"dependencies": [
|
|
181
|
+
"Python >=3.10",
|
|
182
|
+
"markitdown[all]",
|
|
183
|
+
"yt-dlp",
|
|
184
|
+
"FFmpeg (optional for transcription)"
|
|
185
|
+
],
|
|
186
|
+
"status": "review-required",
|
|
187
|
+
"requiresApproval": true,
|
|
188
|
+
"blockedReason": "Runtime dependencies are installed separately and must pass the Skill doctor before conversion."
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
"id": "session-handoff",
|
|
192
|
+
"sourceKind": "github",
|
|
193
|
+
"sourceUrl": "https://github.com/LHT666-hub/session-handoff.git",
|
|
194
|
+
"ref": "e18e41900953e0126b6beb0b24387bbaf2178f44",
|
|
195
|
+
"skillPath": "session-handoff",
|
|
196
|
+
"skillName": "session-handoff",
|
|
197
|
+
"license": "MIT",
|
|
198
|
+
"target": ".psyclaw/imports/recommended/session-handoff",
|
|
199
|
+
"dependencies": [],
|
|
200
|
+
"status": "review-required",
|
|
201
|
+
"requiresApproval": true,
|
|
202
|
+
"blockedReason": "Install manifest and content hash must pass validation before activation."
|
|
203
|
+
},
|
|
204
|
+
{
|
|
205
|
+
"id": "academic-reference-matcher",
|
|
206
|
+
"sourceKind": "github",
|
|
207
|
+
"sourceUrl": "https://github.com/keros68/academic-reference-matcher.git",
|
|
208
|
+
"ref": "189a5ddbeaca8e1a594c28ac5d4c694741c01db9",
|
|
209
|
+
"skillPath": ".",
|
|
210
|
+
"skillName": "academic-reference-matcher",
|
|
211
|
+
"license": "MIT",
|
|
212
|
+
"target": ".psyclaw/imports/recommended/academic-reference-matcher",
|
|
213
|
+
"dependencies": [],
|
|
214
|
+
"status": "review-required",
|
|
215
|
+
"requiresApproval": true,
|
|
216
|
+
"blockedReason": "Install manifest and content hash must pass validation before activation."
|
|
217
|
+
}
|
|
52
218
|
]
|
|
53
219
|
}
|