@researai/deepscientist 1.5.0 → 1.5.1
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/AGENTS.md +26 -0
- package/README.md +19 -179
- package/assets/connectors/lingzhu/openclaw-bridge/README.md +124 -0
- package/assets/connectors/lingzhu/openclaw-bridge/index.ts +162 -0
- package/assets/connectors/lingzhu/openclaw-bridge/openclaw.plugin.json +145 -0
- package/assets/connectors/lingzhu/openclaw-bridge/package.json +35 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/cli.ts +180 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/config.ts +196 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/debug-log.ts +111 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/events.ts +4 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/http-handler.ts +1133 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/image-cache.ts +75 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/lingzhu-tools.ts +246 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/transform.ts +541 -0
- package/assets/connectors/lingzhu/openclaw-bridge/src/types.ts +131 -0
- package/assets/connectors/lingzhu/openclaw-bridge/tsconfig.json +14 -0
- package/assets/connectors/lingzhu/openclaw.lingzhu.config.template.json +39 -0
- package/bin/ds.js +233 -53
- package/docs/en/00_QUICK_START.md +134 -0
- package/docs/en/01_SETTINGS_REFERENCE.md +1104 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +404 -0
- package/docs/en/03_QQ_CONNECTOR_GUIDE.md +325 -0
- package/docs/en/04_LINGZHU_CONNECTOR_GUIDE.md +216 -0
- package/docs/en/05_TUI_GUIDE.md +141 -0
- package/docs/en/06_RUNTIME_AND_CANVAS.md +679 -0
- package/docs/en/07_MEMORY_AND_MCP.md +253 -0
- package/docs/en/08_FIGURE_STYLE_GUIDE.md +97 -0
- package/docs/en/09_DOCTOR.md +108 -0
- package/docs/en/90_ARCHITECTURE.md +245 -0
- package/docs/en/91_DEVELOPMENT.md +195 -0
- package/docs/en/99_ACKNOWLEDGEMENTS.md +29 -0
- package/docs/zh/00_QUICK_START.md +134 -0
- package/docs/zh/01_SETTINGS_REFERENCE.md +1137 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +414 -0
- package/docs/zh/03_QQ_CONNECTOR_GUIDE.md +324 -0
- package/docs/zh/04_LINGZHU_CONNECTOR_GUIDE.md +230 -0
- package/docs/zh/05_TUI_GUIDE.md +128 -0
- package/docs/zh/06_RUNTIME_AND_CANVAS.md +271 -0
- package/docs/zh/07_MEMORY_AND_MCP.md +235 -0
- package/docs/zh/08_FIGURE_STYLE_GUIDE.md +97 -0
- package/docs/zh/09_DOCTOR.md +112 -0
- package/docs/zh/99_ACKNOWLEDGEMENTS.md +29 -0
- package/install.sh +32 -8
- package/package.json +4 -2
- package/pyproject.toml +1 -1
- package/src/deepscientist/artifact/guidance.py +9 -2
- package/src/deepscientist/artifact/service.py +482 -22
- package/src/deepscientist/bash_exec/monitor.py +27 -5
- package/src/deepscientist/bash_exec/runtime.py +639 -0
- package/src/deepscientist/bash_exec/service.py +99 -16
- package/src/deepscientist/bridges/base.py +3 -0
- package/src/deepscientist/bridges/connectors.py +292 -13
- package/src/deepscientist/channels/qq.py +19 -2
- package/src/deepscientist/channels/relay.py +1 -0
- package/src/deepscientist/cli.py +32 -25
- package/src/deepscientist/config/models.py +28 -2
- package/src/deepscientist/config/service.py +201 -6
- package/src/deepscientist/connector_runtime.py +2 -0
- package/src/deepscientist/daemon/api/handlers.py +50 -5
- package/src/deepscientist/daemon/api/router.py +1 -0
- package/src/deepscientist/daemon/app.py +442 -15
- package/src/deepscientist/doctor.py +444 -0
- package/src/deepscientist/home.py +1 -0
- package/src/deepscientist/latex_runtime.py +17 -4
- package/src/deepscientist/lingzhu_support.py +182 -0
- package/src/deepscientist/mcp/server.py +49 -2
- package/src/deepscientist/prompts/builder.py +181 -58
- package/src/deepscientist/quest/layout.py +1 -0
- package/src/deepscientist/quest/service.py +63 -2
- package/src/deepscientist/quest/stage_views.py +19 -1
- package/src/deepscientist/runtime_tools/__init__.py +16 -0
- package/src/deepscientist/runtime_tools/builtins.py +19 -0
- package/src/deepscientist/runtime_tools/models.py +29 -0
- package/src/deepscientist/runtime_tools/registry.py +40 -0
- package/src/deepscientist/runtime_tools/service.py +59 -0
- package/src/deepscientist/runtime_tools/tinytex.py +25 -0
- package/src/deepscientist/tinytex.py +276 -0
- package/src/prompts/connectors/lingzhu.md +12 -0
- package/src/prompts/connectors/qq.md +121 -0
- package/src/prompts/system.md +177 -33
- package/src/skills/analysis-campaign/SKILL.md +22 -6
- package/src/skills/baseline/SKILL.md +5 -4
- package/src/skills/decision/SKILL.md +4 -3
- package/src/skills/experiment/SKILL.md +5 -4
- package/src/skills/finalize/SKILL.md +5 -4
- package/src/skills/idea/SKILL.md +5 -4
- package/src/skills/intake-audit/SKILL.md +277 -0
- package/src/skills/intake-audit/references/state-audit-template.md +41 -0
- package/src/skills/rebuttal/SKILL.md +407 -0
- package/src/skills/rebuttal/references/action-plan-template.md +63 -0
- package/src/skills/rebuttal/references/evidence-update-template.md +30 -0
- package/src/skills/rebuttal/references/response-letter-template.md +113 -0
- package/src/skills/rebuttal/references/review-matrix-template.md +55 -0
- package/src/skills/review/SKILL.md +293 -0
- package/src/skills/review/references/experiment-todo-template.md +29 -0
- package/src/skills/review/references/review-report-template.md +83 -0
- package/src/skills/review/references/revision-log-template.md +40 -0
- package/src/skills/scout/SKILL.md +5 -4
- package/src/skills/write/SKILL.md +7 -3
- package/src/tui/dist/components/WelcomePanel.js +17 -43
- package/src/tui/dist/components/messages/BashExecOperationMessage.js +3 -2
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/{AiManusChatView-7v-dHngU.js → AiManusChatView-w5lF2Ttt.js} +109 -575
- package/src/ui/dist/assets/{AnalysisPlugin-B_Xmz-KE.js → AnalysisPlugin-DJOED79I.js} +1 -1
- package/src/ui/dist/assets/{AutoFigurePlugin-Cko-0tm1.js → AutoFigurePlugin-DaG61Y0M.js} +63 -8
- package/src/ui/dist/assets/{CliPlugin-BsU0ht7q.js → CliPlugin-CV4LqUB_.js} +43 -609
- package/src/ui/dist/assets/{CodeEditorPlugin-DcMMP0Rt.js → CodeEditorPlugin-DylfAea4.js} +8 -8
- package/src/ui/dist/assets/{CodeViewerPlugin-BqoQ5QyY.js → CodeViewerPlugin-F7saY0LM.js} +5 -5
- package/src/ui/dist/assets/{DocViewerPlugin-D7eHNhU6.js → DocViewerPlugin-COP0c7jf.js} +3 -3
- package/src/ui/dist/assets/{GitDiffViewerPlugin-DLJN42T5.js → GitDiffViewerPlugin-CAS05pT9.js} +1 -1
- package/src/ui/dist/assets/{ImageViewerPlugin-gJMV7MOu.js → ImageViewerPlugin-Bco1CN_w.js} +5 -6
- package/src/ui/dist/assets/{LabCopilotPanel-B857sfxP.js → LabCopilotPanel-CvMlCD99.js} +12 -15
- package/src/ui/dist/assets/LabPlugin-BYankkE4.js +2676 -0
- package/src/ui/dist/assets/LabPlugin-D9jVIo0A.css +2698 -0
- package/src/ui/dist/assets/{LatexPlugin-DWKEo-Wj.js → LatexPlugin-LDSMR-t-.js} +16 -16
- package/src/ui/dist/assets/{MarkdownViewerPlugin-DBzoEmhv.js → MarkdownViewerPlugin-B7o80jgm.js} +4 -4
- package/src/ui/dist/assets/{MarketplacePlugin-DoHc-8vo.js → MarketplacePlugin-CM6ZOcpC.js} +3 -3
- package/src/ui/dist/assets/{NotebookEditor-CKjKH-yS.js → NotebookEditor-Dc61cXmK.js} +3 -3
- package/src/ui/dist/assets/{PdfLoader-zFoL0VPo.js → PdfLoader-DWowuQwx.js} +1 -1
- package/src/ui/dist/assets/{PdfMarkdownPlugin-DXPaL9Nt.js → PdfMarkdownPlugin-BsJM1q_a.js} +3 -3
- package/src/ui/dist/assets/{PdfViewerPlugin-DhK8qCFp.js → PdfViewerPlugin-DB2eEEFQ.js} +10 -10
- package/src/ui/dist/assets/{SearchPlugin-CdSi6krf.js → SearchPlugin-CraThSvt.js} +1 -1
- package/src/ui/dist/assets/{Stepper-V-WiDQJl.js → Stepper-CgocRTPq.js} +1 -1
- package/src/ui/dist/assets/{TextViewerPlugin-hIs1Efiu.js → TextViewerPlugin-B1JGhKtd.js} +4 -4
- package/src/ui/dist/assets/{VNCViewer-DG8b0q2X.js → VNCViewer-CclFC7FM.js} +9 -10
- package/src/ui/dist/assets/{bibtex-HDac6fVW.js → bibtex-D3IKsMl7.js} +1 -1
- package/src/ui/dist/assets/{code-BnBeNxBc.js → code-BP37Xx0p.js} +1 -1
- package/src/ui/dist/assets/{file-content-IRQ3jHb8.js → file-content-BAJSu-9r.js} +1 -1
- package/src/ui/dist/assets/{file-diff-panel-DZoQ9I6r.js → file-diff-panel-DUGeCTuy.js} +1 -1
- package/src/ui/dist/assets/{file-socket-BMCdLc-P.js → file-socket-CXc1Ojf7.js} +1 -1
- package/src/ui/dist/assets/{file-utils-CltILB3w.js → file-utils-2J21jt7M.js} +1 -1
- package/src/ui/dist/assets/{image-Boe6ffhu.js → image-CMMmgvcn.js} +1 -1
- package/src/ui/dist/assets/{index-BlplpvE1.js → index-BaVumsQT.js} +2 -2
- package/src/ui/dist/assets/{index-DZqJ-qAM.js → index-CWgMgpow.js} +60 -2154
- package/src/ui/dist/assets/{index-DO43pFZP.js → index-DmwmJmbW.js} +6372 -8434
- package/src/ui/dist/assets/{index-Bq2bvfkl.css → index-KGt-z-dD.css} +225 -2920
- package/src/ui/dist/assets/{index-2Zf65FZt.js → index-s7aHnNQ4.js} +1 -1
- package/src/ui/dist/assets/{message-square-mUHn_Ssb.js → message-square-CQRfX0Am.js} +1 -1
- package/src/ui/dist/assets/{monaco-fe0arNEU.js → monaco-B4TbdsrF.js} +1 -1
- package/src/ui/dist/assets/{popover-D_7i19qU.js → popover-B8Rokodk.js} +1 -1
- package/src/ui/dist/assets/{project-sync-DyVGrU7H.js → project-sync-D_i96KH4.js} +2 -8
- package/src/ui/dist/assets/{sigma-BzazRyxQ.js → sigma-D12PnzCN.js} +1 -1
- package/src/ui/dist/assets/{tooltip-DN_yjHFH.js → tooltip-B6YrI4aJ.js} +1 -1
- package/src/ui/dist/assets/trash-Bc8jGp0V.js +32 -0
- package/src/ui/dist/assets/{useCliAccess-DV2L2Qxy.js → useCliAccess-mXVCYSZ-.js} +12 -42
- package/src/ui/dist/assets/{useFileDiffOverlay-DyTj-p_V.js → useFileDiffOverlay-Bg6b9H9K.js} +1 -1
- package/src/ui/dist/assets/{wrap-text-ozYHtUwq.js → wrap-text-Drh5GEnL.js} +1 -1
- package/src/ui/dist/assets/{zoom-out-BN9MUyCQ.js → zoom-out-CJj9DZLn.js} +1 -1
- package/src/ui/dist/index.html +2 -2
- package/assets/fonts/Inter-Variable.ttf +0 -0
- package/assets/fonts/NotoSerifSC-Regular-C94HN_ZN.ttf +0 -0
- package/assets/fonts/NunitoSans-Variable.ttf +0 -0
- package/assets/fonts/Satoshi-Medium-ByP-Zb-9.woff2 +0 -0
- package/assets/fonts/SourceSans3-Variable.ttf +0 -0
- package/assets/fonts/ds-fonts.css +0 -83
- package/src/ui/dist/assets/Inter-Variable-VF2RPR_K.ttf +0 -0
- package/src/ui/dist/assets/LabPlugin-bL7rpic8.js +0 -43
- package/src/ui/dist/assets/NotoSerifSC-Regular-C94HN_ZN-C94HN_ZN.ttf +0 -0
- package/src/ui/dist/assets/NunitoSans-Variable-B_ZymHAd.ttf +0 -0
- package/src/ui/dist/assets/Satoshi-Medium-ByP-Zb-9-GkA34YXu.woff2 +0 -0
- package/src/ui/dist/assets/SourceSans3-Variable-CD-WOsSK.ttf +0 -0
- package/src/ui/dist/assets/info-CcsK_htA.js +0 -18
- package/src/ui/dist/assets/user-plus-BusDx-hF.js +0 -79
|
@@ -12,10 +12,11 @@ Use this skill for the main evidence-producing runs of the quest.
|
|
|
12
12
|
- Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
|
|
13
13
|
- If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before continuing the run plan.
|
|
14
14
|
- Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
|
|
15
|
-
- Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only
|
|
16
|
-
-
|
|
15
|
+
- Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of long work, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
|
|
16
|
+
- Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
|
|
17
|
+
- Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
|
|
17
18
|
- Keep ordinary subtask completions concise. When a main experiment actually finishes or reaches a stage-significant checkpoint, upgrade to a richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` report rather than another short progress line.
|
|
18
|
-
- That richer experiment-stage milestone report should normally cover: what run finished,
|
|
19
|
+
- That richer experiment-stage milestone report should normally cover: what run finished, the headline result versus baseline or expectation, the main caveat, and the exact recommended next action.
|
|
19
20
|
- That richer milestone report is still normally non-blocking. If the next route is already justified locally, continue automatically after reporting rather than idling for acknowledgment.
|
|
20
21
|
- If the active communication surface is QQ and QQ milestone media is enabled in config, a completed main experiment may attach one summary PNG to that richer milestone update.
|
|
21
22
|
- That PNG should be a connector-facing report chart, not a raw debug plot and not a draft paper figure.
|
|
@@ -478,7 +479,7 @@ That milestone should state:
|
|
|
478
479
|
- the research question that was tested
|
|
479
480
|
- the primary result and baseline delta
|
|
480
481
|
- whether the run supports, weakens, or leaves the idea inconclusive
|
|
481
|
-
- the
|
|
482
|
+
- the main caveat or confidence note that still matters
|
|
482
483
|
- the exact recommended next move
|
|
483
484
|
|
|
484
485
|
Do not treat a main run as durably complete until `artifact.record_main_experiment(...)` succeeds.
|
|
@@ -12,13 +12,14 @@ Use this skill to close or pause a quest responsibly.
|
|
|
12
12
|
- Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
|
|
13
13
|
- If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before closing or pausing the quest.
|
|
14
14
|
- Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
|
|
15
|
-
- Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only
|
|
16
|
-
-
|
|
15
|
+
- Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of long work, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
|
|
16
|
+
- Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
|
|
17
|
+
- Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
|
|
17
18
|
- If the runtime starts an auto-continue turn with no new user message, keep finalizing from the durable quest state and active requirements instead of replaying the previous user turn.
|
|
18
19
|
- Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
|
|
19
20
|
- For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
|
|
20
21
|
- If a threaded user reply arrives, interpret it relative to the latest finalize progress update before assuming the task changed completely.
|
|
21
|
-
- When finalize reaches a real closure state, pause-ready packet, or route-back decision, send one threaded `artifact.interact(kind='milestone', ...)` update that names the recommendation,
|
|
22
|
+
- When finalize reaches a real closure state, pause-ready packet, or route-back decision, send one threaded `artifact.interact(kind='milestone', ...)` update that names the recommendation, why it is the right call, and any reopen condition that still matters.
|
|
22
23
|
- True quest completion still requires explicit user approval through the runtime completion flow before calling `artifact.complete_quest(...)`.
|
|
23
24
|
|
|
24
25
|
## Stage purpose
|
|
@@ -114,7 +115,7 @@ State clearly:
|
|
|
114
115
|
- key deliverables that exist and where they live
|
|
115
116
|
|
|
116
117
|
Do not only say that evidence exists.
|
|
117
|
-
Name
|
|
118
|
+
Say clearly what exists and why it matters. Name concrete paths or artifact ids only when the user asks for them or needs them to act.
|
|
118
119
|
When a paper bundle exists, verify the manifest inventory explicitly, including:
|
|
119
120
|
|
|
120
121
|
- `paper/paper_bundle_manifest.json`
|
package/src/skills/idea/SKILL.md
CHANGED
|
@@ -12,13 +12,14 @@ Use this skill to turn the current baseline and problem frame into concrete, lit
|
|
|
12
12
|
- Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
|
|
13
13
|
- If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before selecting or refining ideas.
|
|
14
14
|
- Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
|
|
15
|
-
- Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only
|
|
16
|
-
-
|
|
15
|
+
- Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of long work, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
|
|
16
|
+
- Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
|
|
17
|
+
- Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
|
|
17
18
|
- Keep ordinary subtask completions concise. When the idea stage actually finishes a meaningful deliverable such as a selected idea package, a rejected-ideas summary, or a route-shaping ideation checkpoint, upgrade to a richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` report.
|
|
18
|
-
- That richer idea-stage milestone report should normally cover: the final selected
|
|
19
|
+
- That richer idea-stage milestone report should normally cover: the final selected or rejected direction, why it won or lost, the main remaining risk, and the exact recommended next stage or experiment.
|
|
19
20
|
- That richer milestone report is still normally non-blocking. If the next experiment or route is already clear from durable evidence, continue automatically after reporting instead of waiting.
|
|
20
21
|
- If the runtime starts an auto-continue turn with no new user message, keep advancing from the active requirements and current durable state instead of re-answering the previous user turn.
|
|
21
|
-
- Message templates are references only. Adapt to the actual context and vary wording so updates feel
|
|
22
|
+
- Message templates are references only. Adapt to the actual context and vary wording so updates feel natural and non-robotic.
|
|
22
23
|
- Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
|
|
23
24
|
- For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
|
|
24
25
|
- If a threaded user reply arrives, interpret it relative to the latest idea progress update before assuming the task changed completely.
|
|
@@ -0,0 +1,277 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: intake-audit
|
|
3
|
+
description: Use when a quest does not start from a blank state and the agent must first audit, trust-rank, and reconcile existing baselines, results, drafts, or review materials before choosing the next anchor.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Intake Audit
|
|
7
|
+
|
|
8
|
+
Use this skill when the quest already has meaningful state and the first job is to normalize that state instead of restarting the canonical research loop from zero.
|
|
9
|
+
|
|
10
|
+
## Interaction discipline
|
|
11
|
+
|
|
12
|
+
- Treat `artifact.interact(...)` as the main long-lived communication thread across TUI, web, and bound connectors.
|
|
13
|
+
- If `artifact.interact(...)` returns queued user requirements, treat them as the highest-priority user instruction bundle before continuing the audit.
|
|
14
|
+
- Immediately follow any non-empty mailbox poll with another `artifact.interact(...)` update that confirms receipt; if the request is directly answerable, answer there, otherwise say the current subtask is paused, give a short plan plus nearest report-back point, and handle that request first.
|
|
15
|
+
- Emit `artifact.interact(kind='progress', reply_mode='threaded', ...)` only when there is real user-visible progress: the first meaningful signal of the audit, a meaningful checkpoint, or an occasional keepalive during truly long work. Do not update by tool-call cadence.
|
|
16
|
+
- Keep progress updates chat-like and easy to understand: say what changed, what it means, and what happens next.
|
|
17
|
+
- Default to plain-language summaries. Do not mention file paths, artifact ids, branch/worktree ids, session ids, raw commands, or raw logs unless the user asks or needs them to act.
|
|
18
|
+
- Message templates are references only. Adapt to the actual context and vary wording so updates feel natural and non-robotic.
|
|
19
|
+
- Use `reply_mode='blocking'` only for real user decisions that cannot be resolved from local evidence.
|
|
20
|
+
- For any blocking decision request, provide 1 to 3 concrete options, put the recommended option first, explain each option's actual content plus pros and cons, wait up to 1 day when feasible, then choose the best option yourself and notify the user of the chosen option if the timeout expires.
|
|
21
|
+
- If a threaded user reply arrives, interpret it relative to the latest intake-audit progress update before assuming the task changed completely.
|
|
22
|
+
- When the audit reaches a durable route recommendation, send one richer `artifact.interact(kind='milestone', reply_mode='threaded', ...)` update that says what state is trusted, what still needs work, and which anchor should run next.
|
|
23
|
+
|
|
24
|
+
## Purpose
|
|
25
|
+
|
|
26
|
+
`intake-audit` is an auxiliary entry skill, not a normal long-running anchor.
|
|
27
|
+
|
|
28
|
+
Its purpose is to answer four questions before deeper work begins:
|
|
29
|
+
|
|
30
|
+
1. what already exists?
|
|
31
|
+
2. what is trustworthy?
|
|
32
|
+
3. what can be reused directly?
|
|
33
|
+
4. which skill should take over next?
|
|
34
|
+
|
|
35
|
+
This skill exists because many quests do **not** start from a clean slate.
|
|
36
|
+
Common non-blank starts include:
|
|
37
|
+
|
|
38
|
+
- a baseline already exists and may already be confirmed
|
|
39
|
+
- a main experiment has already finished and only needs durable recording or interpretation
|
|
40
|
+
- analysis results already exist across child branches or worktrees
|
|
41
|
+
- a draft or paper bundle already exists
|
|
42
|
+
- reviewer comments already exist and the quest is really a revision/rebuttal task
|
|
43
|
+
- the user explicitly says not to rerun from scratch
|
|
44
|
+
|
|
45
|
+
Do not treat these as edge cases.
|
|
46
|
+
They are common research entry states.
|
|
47
|
+
|
|
48
|
+
## Use when
|
|
49
|
+
|
|
50
|
+
- `startup_contract.launch_mode = custom` and the profile implies existing work
|
|
51
|
+
- the quest root already contains meaningful baseline, experiment, analysis, or paper assets
|
|
52
|
+
- the user says:
|
|
53
|
+
- “baseline 已经有了”
|
|
54
|
+
- “不要重新复现”
|
|
55
|
+
- “先整理现有结果”
|
|
56
|
+
- “已有论文/草稿,先基于现有状态继续”
|
|
57
|
+
- review materials exist but the current paper/result state is still unclear
|
|
58
|
+
|
|
59
|
+
## Do not use when
|
|
60
|
+
|
|
61
|
+
- the quest is genuinely blank and should start with ordinary `scout` or `baseline`
|
|
62
|
+
- the active state is already well-normalized and the next anchor is obvious
|
|
63
|
+
- the task is a pure non-research request
|
|
64
|
+
|
|
65
|
+
## Non-negotiable rules
|
|
66
|
+
|
|
67
|
+
- Do not rerun expensive work just because files exist. First decide whether a trust gap actually requires rerunning.
|
|
68
|
+
- Do not fabricate missing durable records in order to make the quest look cleaner.
|
|
69
|
+
- Do not mark an existing baseline as trusted unless the metric contract, source, and comparability are clear enough.
|
|
70
|
+
- Do not mark an existing experiment as a durable main result unless it is genuinely the main run for an accepted idea line.
|
|
71
|
+
- Do not silently import old drafts, plots, or notes as the active contract if they belong to a different idea line or branch line.
|
|
72
|
+
- Do not lose provenance. If an artifact is reused, record where it came from and why it is trusted enough.
|
|
73
|
+
- If the quest is really a review/revision task, route to `rebuttal` instead of pretending this is a normal fresh paper-writing pass.
|
|
74
|
+
|
|
75
|
+
## Typical intake states
|
|
76
|
+
|
|
77
|
+
Classify the current quest into one or more of these buckets:
|
|
78
|
+
|
|
79
|
+
- `baseline_ready`
|
|
80
|
+
- `baseline_partial`
|
|
81
|
+
- `main_result_ready`
|
|
82
|
+
- `analysis_ready`
|
|
83
|
+
- `draft_ready`
|
|
84
|
+
- `paper_bundle_ready`
|
|
85
|
+
- `review_package_ready`
|
|
86
|
+
- `unclear_state`
|
|
87
|
+
|
|
88
|
+
Also classify every important asset by trust:
|
|
89
|
+
|
|
90
|
+
- `trusted`
|
|
91
|
+
- `usable_with_verification`
|
|
92
|
+
- `reference_only`
|
|
93
|
+
- `stale_or_conflicting`
|
|
94
|
+
- `missing_context`
|
|
95
|
+
|
|
96
|
+
## Primary truth sources
|
|
97
|
+
|
|
98
|
+
Use, in roughly this order:
|
|
99
|
+
|
|
100
|
+
- `startup_contract`
|
|
101
|
+
- especially `launch_mode`, `custom_profile`, `entry_state_summary`, `review_summary`, and `custom_brief` when present
|
|
102
|
+
- quest continuity files:
|
|
103
|
+
- `brief.md`
|
|
104
|
+
- `plan.md`
|
|
105
|
+
- `status.md`
|
|
106
|
+
- `SUMMARY.md`
|
|
107
|
+
- recent durable artifact state and quest snapshot
|
|
108
|
+
- current workspace tree and visible quest files
|
|
109
|
+
- prior memory cards and decisions
|
|
110
|
+
- git history and current branch topology when needed
|
|
111
|
+
- user messages
|
|
112
|
+
|
|
113
|
+
Do not trust chat recollection over durable state.
|
|
114
|
+
|
|
115
|
+
## Workflow
|
|
116
|
+
|
|
117
|
+
### 1. Read startup intent first
|
|
118
|
+
|
|
119
|
+
Before touching the workspace, inspect:
|
|
120
|
+
|
|
121
|
+
- `startup_contract`
|
|
122
|
+
- the latest user message
|
|
123
|
+
- recent quest status
|
|
124
|
+
|
|
125
|
+
Interpret these fields specially when present:
|
|
126
|
+
|
|
127
|
+
- `launch_mode = custom`
|
|
128
|
+
- do not force the standard full-research route
|
|
129
|
+
- `custom_profile = continue_existing_state`
|
|
130
|
+
- expect reusable assets and state normalization
|
|
131
|
+
- `custom_profile = revision_rebuttal`
|
|
132
|
+
- expect a paper/review package and likely handoff to `rebuttal`
|
|
133
|
+
- `custom_profile = freeform`
|
|
134
|
+
- prefer the custom brief over the default stage ordering
|
|
135
|
+
|
|
136
|
+
### 2. Retrieve memory before filesystem triage
|
|
137
|
+
|
|
138
|
+
Stage-start requirement:
|
|
139
|
+
|
|
140
|
+
- run `memory.list_recent(scope='quest', limit=5)`
|
|
141
|
+
- run at least one `memory.search(...)` using:
|
|
142
|
+
- the quest title or central topic
|
|
143
|
+
- any known baseline id or method name
|
|
144
|
+
- any known paper title or venue short name
|
|
145
|
+
- any known review keyword such as `rebuttal`, `review`, or `revision`
|
|
146
|
+
|
|
147
|
+
The point is to reuse prior route knowledge before re-auditing the same state from scratch.
|
|
148
|
+
|
|
149
|
+
### 3. Inventory the quest state
|
|
150
|
+
|
|
151
|
+
Create or refresh a durable audit note using `references/state-audit-template.md`.
|
|
152
|
+
|
|
153
|
+
The inventory should cover:
|
|
154
|
+
|
|
155
|
+
- baseline assets
|
|
156
|
+
- main experiment assets
|
|
157
|
+
- analysis assets
|
|
158
|
+
- writing assets
|
|
159
|
+
- review assets
|
|
160
|
+
- git / branch / worktree state
|
|
161
|
+
- missing or conflicting state
|
|
162
|
+
|
|
163
|
+
Useful places to inspect include:
|
|
164
|
+
|
|
165
|
+
- `artifacts/`
|
|
166
|
+
- `baselines/`
|
|
167
|
+
- `experiments/main/`
|
|
168
|
+
- `experiments/analysis/`
|
|
169
|
+
- `paper/`
|
|
170
|
+
- `reviews/` or equivalent user-provided review folders
|
|
171
|
+
|
|
172
|
+
Do not over-read the entire tree.
|
|
173
|
+
Read enough to classify the state and locate the likely trust anchors.
|
|
174
|
+
|
|
175
|
+
### 4. Trust-rank and reconcile
|
|
176
|
+
|
|
177
|
+
For each major asset, decide:
|
|
178
|
+
|
|
179
|
+
- can it be trusted as-is?
|
|
180
|
+
- does it need a light verification pass?
|
|
181
|
+
- is it only reference material?
|
|
182
|
+
- is it stale or conflicting?
|
|
183
|
+
|
|
184
|
+
Then reconcile it with the durable artifact layer:
|
|
185
|
+
|
|
186
|
+
- existing reusable baseline:
|
|
187
|
+
- `artifact.attach_baseline(...)`
|
|
188
|
+
- then `artifact.confirm_baseline(...)` when trust is justified
|
|
189
|
+
- existing main result:
|
|
190
|
+
- `artifact.record_main_experiment(...)` only if the run is genuinely the accepted main run and the required fields can be filled honestly
|
|
191
|
+
- existing analysis results:
|
|
192
|
+
- if the campaign already exists, use `artifact.record_analysis_slice(...)` for each real finished slice that needs durable registration
|
|
193
|
+
- existing outline:
|
|
194
|
+
- `artifact.submit_paper_outline(mode='select'|'revise', ...)` when there is a real durable outline contract
|
|
195
|
+
- existing paper bundle:
|
|
196
|
+
- `artifact.submit_paper_bundle(...)` when the draft/package state is genuinely ready
|
|
197
|
+
|
|
198
|
+
If the evidence is insufficient for a durable backfill, record that insufficiency explicitly instead of inventing a cleaned-up history.
|
|
199
|
+
|
|
200
|
+
### 5. Choose the next anchor
|
|
201
|
+
|
|
202
|
+
After reconciliation, write one durable route decision with `artifact.record(kind='decision', ...)`.
|
|
203
|
+
|
|
204
|
+
Typical next anchors:
|
|
205
|
+
|
|
206
|
+
- baseline exists but trust is incomplete -> `baseline`
|
|
207
|
+
- baseline and route are ready, but no durable main result exists -> `experiment`
|
|
208
|
+
- main result exists, but follow-up evidence is missing -> `analysis-campaign`
|
|
209
|
+
- evidence is strong and writing should begin -> `write`
|
|
210
|
+
- review package is active -> `rebuttal`
|
|
211
|
+
- the quest is effectively complete or should pause -> `finalize`
|
|
212
|
+
|
|
213
|
+
### 6. Report and hand off
|
|
214
|
+
|
|
215
|
+
At the end of the intake pass, send one threaded `artifact.interact(kind='milestone', ...)` update that says:
|
|
216
|
+
|
|
217
|
+
- what already exists and is trusted
|
|
218
|
+
- what remains untrusted or incomplete
|
|
219
|
+
- which next skill should take over
|
|
220
|
+
- whether the user needs to provide anything else
|
|
221
|
+
|
|
222
|
+
## Recommended durable outputs
|
|
223
|
+
|
|
224
|
+
- `artifacts/intake/state_audit.md`
|
|
225
|
+
- `artifacts/intake/recommended_next_step.md`
|
|
226
|
+
- one `decision` artifact for the post-audit route
|
|
227
|
+
- one or more repair/backfill artifact calls when justified
|
|
228
|
+
|
|
229
|
+
## Companion skill routing
|
|
230
|
+
|
|
231
|
+
Open additional skills only when the audit indicates they are necessary:
|
|
232
|
+
|
|
233
|
+
- `baseline`
|
|
234
|
+
- when an existing baseline must be validated, repaired, confirmed, or waived
|
|
235
|
+
- `experiment`
|
|
236
|
+
- when the accepted route lacks a durably recorded main result
|
|
237
|
+
- `analysis-campaign`
|
|
238
|
+
- when the main result exists but the evidence boundary is still weak
|
|
239
|
+
- `write`
|
|
240
|
+
- when a trustworthy draft or outline should become the active writing line
|
|
241
|
+
- `rebuttal`
|
|
242
|
+
- when reviewer comments, revision requests, or meta-review materials define the real task
|
|
243
|
+
- `decision`
|
|
244
|
+
- when more than one next anchor remains plausible
|
|
245
|
+
|
|
246
|
+
## Memory discipline
|
|
247
|
+
|
|
248
|
+
Stage-end requirement:
|
|
249
|
+
|
|
250
|
+
- if the intake pass produced a durable route choice, trust judgment, or asset-reuse rule, write at least one `memory.write(...)`
|
|
251
|
+
|
|
252
|
+
Useful tags include:
|
|
253
|
+
|
|
254
|
+
- `stage:intake-audit`
|
|
255
|
+
- `type:state-audit`
|
|
256
|
+
- `type:route-handoff`
|
|
257
|
+
- `type:reuse-rule`
|
|
258
|
+
- `state:trusted`
|
|
259
|
+
- `state:needs-verification`
|
|
260
|
+
|
|
261
|
+
When the audit concerns a specific existing line, include identifiers when known:
|
|
262
|
+
|
|
263
|
+
- `baseline_id`
|
|
264
|
+
- `idea_id`
|
|
265
|
+
- `run_id`
|
|
266
|
+
- `branch`
|
|
267
|
+
- `paper_state`
|
|
268
|
+
|
|
269
|
+
## Success condition
|
|
270
|
+
|
|
271
|
+
`intake-audit` is successful when:
|
|
272
|
+
|
|
273
|
+
- the quest's current state is understandable
|
|
274
|
+
- the trustworthy reusable assets are explicit
|
|
275
|
+
- the untrusted gaps are explicit
|
|
276
|
+
- the next anchor is explicit
|
|
277
|
+
- the system can continue without pretending the quest started from zero
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
# State Audit Template
|
|
2
|
+
|
|
3
|
+
## Intake Summary
|
|
4
|
+
|
|
5
|
+
- launch mode:
|
|
6
|
+
- custom profile:
|
|
7
|
+
- user intent:
|
|
8
|
+
- recommended next anchor:
|
|
9
|
+
|
|
10
|
+
## Asset Matrix
|
|
11
|
+
|
|
12
|
+
| Area | Current asset | Trust level | Why | Missing proof | Recommended action |
|
|
13
|
+
| --- | --- | --- | --- | --- | --- |
|
|
14
|
+
| Baseline | | | | | |
|
|
15
|
+
| Main experiment | | | | | |
|
|
16
|
+
| Analysis | | | | | |
|
|
17
|
+
| Draft / paper | | | | | |
|
|
18
|
+
| Review package | | | | | |
|
|
19
|
+
| Git / branches | | | | | |
|
|
20
|
+
|
|
21
|
+
## Reusable Assets
|
|
22
|
+
|
|
23
|
+
- baseline:
|
|
24
|
+
- metrics:
|
|
25
|
+
- figures:
|
|
26
|
+
- draft sections:
|
|
27
|
+
- review materials:
|
|
28
|
+
|
|
29
|
+
## Conflicts / Unknowns
|
|
30
|
+
|
|
31
|
+
- conflicting baseline/result state:
|
|
32
|
+
- unclear provenance:
|
|
33
|
+
- missing metric contract:
|
|
34
|
+
- stale draft risk:
|
|
35
|
+
|
|
36
|
+
## Route Recommendation
|
|
37
|
+
|
|
38
|
+
- next anchor:
|
|
39
|
+
- why now:
|
|
40
|
+
- what should not be repeated:
|
|
41
|
+
- what still needs verification:
|