@researai/deepscientist 1.5.15 → 1.5.16
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 +336 -98
- package/bin/ds.js +691 -91
- package/docs/en/00_QUICK_START.md +36 -15
- package/docs/en/01_SETTINGS_REFERENCE.md +33 -0
- package/docs/en/02_START_RESEARCH_GUIDE.md +7 -0
- package/docs/en/05_TUI_GUIDE.md +6 -0
- package/docs/en/06_RUNTIME_AND_CANVAS.md +4 -3
- package/docs/en/09_DOCTOR.md +11 -5
- package/docs/en/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +63 -13
- package/docs/en/15_CODEX_PROVIDER_SETUP.md +25 -8
- package/docs/en/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
- package/docs/en/19_LOCAL_BROWSER_AUTH.md +70 -0
- package/docs/en/20_WORKSPACE_MODES_GUIDE.md +250 -0
- package/docs/en/README.md +18 -0
- package/docs/zh/00_QUICK_START.md +36 -15
- package/docs/zh/01_SETTINGS_REFERENCE.md +33 -0
- package/docs/zh/02_START_RESEARCH_GUIDE.md +7 -0
- package/docs/zh/05_TUI_GUIDE.md +6 -0
- package/docs/zh/09_DOCTOR.md +11 -5
- package/docs/zh/14_PROMPT_SKILLS_AND_MCP_GUIDE.md +63 -13
- package/docs/zh/15_CODEX_PROVIDER_SETUP.md +25 -8
- package/docs/zh/19_EXTERNAL_CONTROLLER_GUIDE.md +226 -0
- package/docs/zh/19_LOCAL_BROWSER_AUTH.md +68 -0
- package/docs/zh/20_WORKSPACE_MODES_GUIDE.md +251 -0
- package/docs/zh/README.md +18 -0
- package/package.json +1 -1
- package/pyproject.toml +1 -1
- package/src/deepscientist/__init__.py +1 -1
- package/src/deepscientist/acp/envelope.py +6 -0
- package/src/deepscientist/artifact/service.py +647 -22
- package/src/deepscientist/bash_exec/service.py +234 -9
- package/src/deepscientist/cli.py +115 -19
- package/src/deepscientist/codex_cli_compat.py +232 -0
- package/src/deepscientist/config/models.py +2 -1
- package/src/deepscientist/config/service.py +31 -9
- package/src/deepscientist/daemon/api/handlers.py +125 -6
- package/src/deepscientist/daemon/api/router.py +4 -0
- package/src/deepscientist/daemon/app.py +715 -98
- package/src/deepscientist/gitops/__init__.py +10 -1
- package/src/deepscientist/gitops/diff.py +129 -0
- package/src/deepscientist/gitops/service.py +4 -1
- package/src/deepscientist/mcp/server.py +39 -0
- package/src/deepscientist/prompts/builder.py +255 -32
- package/src/deepscientist/quest/layout.py +15 -2
- package/src/deepscientist/quest/service.py +295 -43
- package/src/deepscientist/quest/stage_views.py +6 -1
- package/src/deepscientist/runners/codex.py +86 -31
- package/src/deepscientist/skills/__init__.py +2 -2
- package/src/deepscientist/skills/installer.py +196 -5
- package/src/deepscientist/skills/registry.py +66 -0
- package/src/prompts/connectors/qq.md +18 -8
- package/src/prompts/connectors/weixin.md +16 -6
- package/src/prompts/contracts/shared_interaction.md +12 -1
- package/src/prompts/system.md +10 -5
- package/src/prompts/system_copilot.md +43 -0
- package/src/skills/analysis-campaign/SKILL.md +1 -0
- package/src/skills/baseline/SKILL.md +8 -0
- package/src/skills/decision/SKILL.md +8 -0
- package/src/skills/experiment/SKILL.md +8 -0
- package/src/skills/figure-polish/SKILL.md +1 -0
- package/src/skills/finalize/SKILL.md +1 -0
- package/src/skills/idea/SKILL.md +1 -0
- package/src/skills/intake-audit/SKILL.md +8 -0
- package/src/skills/mentor/SKILL.md +217 -0
- package/src/skills/mentor/references/correction-rules.md +210 -0
- package/src/skills/mentor/references/knowledge-profile.md +91 -0
- package/src/skills/mentor/references/persona-profile.md +138 -0
- package/src/skills/mentor/references/taste-profile.md +128 -0
- package/src/skills/mentor/references/thought-style-profile.md +138 -0
- package/src/skills/mentor/references/work-profile.md +289 -0
- package/src/skills/mentor/references/workflow-profile.md +240 -0
- package/src/skills/optimize/SKILL.md +1 -0
- package/src/skills/rebuttal/SKILL.md +1 -0
- package/src/skills/review/SKILL.md +1 -0
- package/src/skills/scout/SKILL.md +8 -0
- package/src/skills/write/SKILL.md +1 -0
- package/src/tui/dist/app/AppContainer.js +19 -11
- package/src/tui/dist/index.js +4 -1
- package/src/tui/dist/lib/api.js +33 -3
- package/src/tui/package.json +1 -1
- package/src/ui/dist/assets/AiManusChatView-COFACy7V.js +204 -0
- package/src/ui/dist/assets/AnalysisPlugin-DnSm0GZn.js +1 -0
- package/src/ui/dist/assets/CliPlugin-CvwCmDQ5.js +109 -0
- package/src/ui/dist/assets/CodeEditorPlugin-cOqSa0xq.js +2 -0
- package/src/ui/dist/assets/CodeViewerPlugin-itb0tltR.js +270 -0
- package/src/ui/dist/assets/DocViewerPlugin-DqKkiCI6.js +7 -0
- package/src/ui/dist/assets/GitCommitViewerPlugin-DVgNHBCS.js +1 -0
- package/src/ui/dist/assets/GitDiffViewerPlugin-DxL2ezFG.js +6 -0
- package/src/ui/dist/assets/GitSnapshotViewer-B_RQm1YZ.js +30 -0
- package/src/ui/dist/assets/ImageViewerPlugin-tHqlXY3n.js +26 -0
- package/src/ui/dist/assets/LabCopilotPanel-ClMbq5Yu.js +14 -0
- package/src/ui/dist/assets/LabPlugin-L_SuE8ow.js +22 -0
- package/src/ui/dist/assets/LatexPlugin-B495DTXC.js +25 -0
- package/src/ui/dist/assets/MarkdownViewerPlugin-DG28-61B.js +128 -0
- package/src/ui/dist/assets/MarketplacePlugin-BiOGT-Kj.js +13 -0
- package/src/ui/dist/assets/{NotebookEditor-CccQYZjX.css → NotebookEditor-BHH8rdGj.css} +1 -1
- package/src/ui/dist/assets/NotebookEditor-BOr3x3Ej.css +1 -0
- package/src/ui/dist/assets/NotebookEditor-C-4Kt1p9.js +81 -0
- package/src/ui/dist/assets/NotebookEditor-CVsj8h_T.js +361 -0
- package/src/ui/dist/assets/PdfLoader-CASDQmxJ.js +16 -0
- package/src/ui/dist/assets/PdfLoader-Cy5jtWrr.css +1 -0
- package/src/ui/dist/assets/PdfMarkdownPlugin-BFhwoKsY.js +1 -0
- package/src/ui/dist/assets/PdfViewerPlugin-DcOzU9vd.js +17 -0
- package/src/ui/dist/assets/PdfViewerPlugin-nwwE-fjJ.css +1 -0
- package/src/ui/dist/assets/SearchPlugin-CHj7M58O.js +16 -0
- package/src/ui/dist/assets/SearchPlugin-DA4en4hK.css +1 -0
- package/src/ui/dist/assets/TextViewerPlugin-CB4DYfWO.js +54 -0
- package/src/ui/dist/assets/VNCViewer-CjlbyCB3.js +11 -0
- package/src/ui/dist/assets/bot-CFkZY-JP.js +6 -0
- package/src/ui/dist/assets/browser-CTB2jwNe.js +8 -0
- package/src/ui/dist/assets/chevron-up-Dq5ofbht.js +6 -0
- package/src/ui/dist/assets/code-DLC6G24T.js +6 -0
- package/src/ui/dist/assets/file-content-Dv4LoZec.js +1 -0
- package/src/ui/dist/assets/file-diff-panel-Denq-lC3.js +1 -0
- package/src/ui/dist/assets/file-jump-queue-DA-SdG__.js +1 -0
- package/src/ui/dist/assets/file-socket-Cu4Qln7Y.js +1 -0
- package/src/ui/dist/assets/git-commit-horizontal-BUh6G52n.js +6 -0
- package/src/ui/dist/assets/image-B9HUUddG.js +6 -0
- package/src/ui/dist/assets/index-B2B1sg-M.js +1 -0
- package/src/ui/dist/assets/index-Cgla8biy.css +33 -0
- package/src/ui/dist/assets/index-DRyx7vAc.js +1 -0
- package/src/ui/dist/assets/index-Gbl53BNp.js +2496 -0
- package/src/ui/dist/assets/index-wQ7RIIRd.js +11 -0
- package/src/ui/dist/assets/monaco-CiHMMNH_.js +1 -0
- package/src/ui/dist/assets/pdf-effect-queue-ZtnHFCAi.js +6 -0
- package/src/ui/dist/assets/plugin-monaco-C8UgLomw.js +19 -0
- package/src/ui/dist/assets/plugin-notebook-HbW2K-1c.js +169 -0
- package/src/ui/dist/assets/plugin-pdf-CR8hgQBV.js +357 -0
- package/src/ui/dist/assets/plugin-terminal-MXFIPun8.js +227 -0
- package/src/ui/dist/assets/popover-DL6h35vr.js +1 -0
- package/src/ui/dist/assets/project-sync-CsX08Qno.js +1 -0
- package/src/ui/dist/assets/select-DvmXt1yY.js +11 -0
- package/src/ui/dist/assets/sigma-7jpXazui.js +6 -0
- package/src/ui/dist/assets/trash-xA7kFt8i.js +11 -0
- package/src/ui/dist/assets/useCliAccess-DsMwDjOp.js +1 -0
- package/src/ui/dist/assets/useFileDiffOverlay-FuhcnKiw.js +1 -0
- package/src/ui/dist/assets/wrap-text-CwMn-iqb.js +11 -0
- package/src/ui/dist/assets/zoom-out-R-GWEhzS.js +11 -0
- package/src/ui/dist/index.html +5 -2
- package/src/ui/dist/assets/AiManusChatView-DDjbFnbt.js +0 -26597
- package/src/ui/dist/assets/AnalysisPlugin-Yb5IdmaU.js +0 -123
- package/src/ui/dist/assets/CliPlugin-e64sreyu.js +0 -31037
- package/src/ui/dist/assets/CodeEditorPlugin-C4D2TIkU.js +0 -427
- package/src/ui/dist/assets/CodeViewerPlugin-BVoNZIvC.js +0 -905
- package/src/ui/dist/assets/DocViewerPlugin-CLChbllo.js +0 -278
- package/src/ui/dist/assets/GitDiffViewerPlugin-C4xeFyFQ.js +0 -2661
- package/src/ui/dist/assets/ImageViewerPlugin-OiMUAcLi.js +0 -500
- package/src/ui/dist/assets/LabCopilotPanel-BjD2ThQF.js +0 -4104
- package/src/ui/dist/assets/LabPlugin-DQPg-NrB.js +0 -2677
- package/src/ui/dist/assets/LatexPlugin-CI05XAV9.js +0 -1792
- package/src/ui/dist/assets/MarkdownViewerPlugin-DpeBLYZf.js +0 -308
- package/src/ui/dist/assets/MarketplacePlugin-DolE58Q2.js +0 -413
- package/src/ui/dist/assets/NotebookEditor-7Qm2rSWD.js +0 -4214
- package/src/ui/dist/assets/NotebookEditor-C1kWaxKi.js +0 -84873
- package/src/ui/dist/assets/NotebookEditor-C3VQ7ylN.css +0 -1405
- package/src/ui/dist/assets/PdfLoader-BfOHw8Zw.js +0 -25468
- package/src/ui/dist/assets/PdfLoader-C-Y707R3.css +0 -49
- package/src/ui/dist/assets/PdfMarkdownPlugin-BulDREv1.js +0 -409
- package/src/ui/dist/assets/PdfViewerPlugin-C-daaOaL.js +0 -3095
- package/src/ui/dist/assets/PdfViewerPlugin-DQ11QcSf.css +0 -3627
- package/src/ui/dist/assets/SearchPlugin-CjpaiJ3A.js +0 -741
- package/src/ui/dist/assets/SearchPlugin-DDMrGDkh.css +0 -379
- package/src/ui/dist/assets/TextViewerPlugin-BxIyqPQC.js +0 -472
- package/src/ui/dist/assets/VNCViewer-HAg9mF7M.js +0 -18821
- package/src/ui/dist/assets/awareness-C0NPR2Dj.js +0 -292
- package/src/ui/dist/assets/bot-0DYntytV.js +0 -21
- package/src/ui/dist/assets/browser-BAcuE0Xj.js +0 -2895
- package/src/ui/dist/assets/code-B20Slj_w.js +0 -17
- package/src/ui/dist/assets/file-content-DT24KFma.js +0 -377
- package/src/ui/dist/assets/file-diff-panel-DK13YPql.js +0 -92
- package/src/ui/dist/assets/file-jump-queue-r5XKgJEV.js +0 -16
- package/src/ui/dist/assets/file-socket-B4T2o4nR.js +0 -58
- package/src/ui/dist/assets/function-B5QZkkHC.js +0 -1895
- package/src/ui/dist/assets/image-DSeR_sDS.js +0 -18
- package/src/ui/dist/assets/index-BrFje2Uk.js +0 -120
- package/src/ui/dist/assets/index-BwRJaoTl.js +0 -25
- package/src/ui/dist/assets/index-D_E4281X.js +0 -221322
- package/src/ui/dist/assets/index-DnYB3xb1.js +0 -159
- package/src/ui/dist/assets/index-G7AcWcMu.css +0 -12594
- package/src/ui/dist/assets/monaco-LExaAN3Y.js +0 -623
- package/src/ui/dist/assets/pdf-effect-queue-BJk5okWJ.js +0 -47
- package/src/ui/dist/assets/pdf_viewer-e0g1is2C.js +0 -8206
- package/src/ui/dist/assets/popover-D3Gg_FoV.js +0 -476
- package/src/ui/dist/assets/project-sync-C_ygLlVU.js +0 -297
- package/src/ui/dist/assets/select-CpAK6uWm.js +0 -1690
- package/src/ui/dist/assets/sigma-DEccaSgk.js +0 -22
- package/src/ui/dist/assets/square-check-big-uUfyVsbD.js +0 -17
- package/src/ui/dist/assets/trash-CXvwwSe8.js +0 -32
- package/src/ui/dist/assets/useCliAccess-Bnop4mgR.js +0 -957
- package/src/ui/dist/assets/useFileDiffOverlay-B8eUAX0I.js +0 -53
- package/src/ui/dist/assets/wrap-text-9vbOBpkW.js +0 -35
- package/src/ui/dist/assets/yjs-DncrqiZ8.js +0 -11243
- package/src/ui/dist/assets/zoom-out-BgVMmOW4.js +0 -34
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
# 19 External Controller Guide
|
|
2
|
+
|
|
3
|
+
DeepScientist already exposes enough durable state to support an outer orchestration layer without patching core runtime code.
|
|
4
|
+
|
|
5
|
+
This guide explains the minimal public pattern for external controllers that:
|
|
6
|
+
|
|
7
|
+
- inspect recent quest state
|
|
8
|
+
- decide whether the current run should continue
|
|
9
|
+
- enqueue a routed follow-up message through the quest mailbox
|
|
10
|
+
- optionally stop the current run through `quest_control`
|
|
11
|
+
- record a durable report explaining why the guard fired
|
|
12
|
+
|
|
13
|
+
This is intentionally lighter than a plugin framework.
|
|
14
|
+
|
|
15
|
+
## When to use an external controller
|
|
16
|
+
|
|
17
|
+
Use an external controller when the rule is:
|
|
18
|
+
|
|
19
|
+
- project-specific
|
|
20
|
+
- expensive to hard-code into global prompts or skills
|
|
21
|
+
- better treated as outer governance than as core runtime behavior
|
|
22
|
+
|
|
23
|
+
Examples:
|
|
24
|
+
|
|
25
|
+
- publishability admission rules before paper-facing writing
|
|
26
|
+
- repeated figure-polish loops that monopolize the frontier
|
|
27
|
+
- lab-specific stop / branch policies
|
|
28
|
+
|
|
29
|
+
## Public contracts you can rely on
|
|
30
|
+
|
|
31
|
+
The safest extension surface is the existing durable runtime contract:
|
|
32
|
+
|
|
33
|
+
- quest mailbox
|
|
34
|
+
- queued user-facing messages are stored under `.ds/user_message_queue.json`
|
|
35
|
+
- recent quest state
|
|
36
|
+
- runtime state, artifact state, and connector-visible outputs are already durable files
|
|
37
|
+
- daemon quest control
|
|
38
|
+
- `POST /api/quests/<quest_id>/control`
|
|
39
|
+
- connector-visible durable reports
|
|
40
|
+
- write your own report under the quest tree so the next turn can cite it
|
|
41
|
+
|
|
42
|
+
Prefer these contracts over prompt patching, private monkey-patching, or editing installed package files.
|
|
43
|
+
|
|
44
|
+
## Minimal controller loop
|
|
45
|
+
|
|
46
|
+
An external controller usually follows this sequence:
|
|
47
|
+
|
|
48
|
+
1. Read the latest durable quest state.
|
|
49
|
+
2. Decide whether a guard condition is active.
|
|
50
|
+
3. Write a durable report describing:
|
|
51
|
+
- what was observed
|
|
52
|
+
- why it matters
|
|
53
|
+
- the recommended next route
|
|
54
|
+
4. If intervention is needed:
|
|
55
|
+
- optionally stop the current run through `quest_control`
|
|
56
|
+
- enqueue one clear routed mailbox message for the next turn
|
|
57
|
+
|
|
58
|
+
The mailbox message should explain the conclusion, not dump raw logs.
|
|
59
|
+
|
|
60
|
+
## Example control flow
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
read quest state
|
|
64
|
+
-> detect low-yield loop or route violation
|
|
65
|
+
-> write durable report
|
|
66
|
+
-> stop current run if needed
|
|
67
|
+
-> enqueue one mailbox message with the required next route
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
## Example `quest_control` request
|
|
71
|
+
|
|
72
|
+
```bash
|
|
73
|
+
curl -X POST http://127.0.0.1:20999/api/quests/<quest_id>/control \
|
|
74
|
+
-H 'Content-Type: application/json' \
|
|
75
|
+
-d '{
|
|
76
|
+
"action": "stop",
|
|
77
|
+
"source": "external-controller"
|
|
78
|
+
}'
|
|
79
|
+
```
|
|
80
|
+
|
|
81
|
+
## Example mailbox intervention shape
|
|
82
|
+
|
|
83
|
+
The exact queue file is runtime-owned, so your controller should preserve the existing schema and only append a normal user-style message payload.
|
|
84
|
+
|
|
85
|
+
The message content should be short and actionable, for example:
|
|
86
|
+
|
|
87
|
+
```text
|
|
88
|
+
Hard control message from external orchestration layer: stop the current figure loop.
|
|
89
|
+
Return to the main line and do one bounded route next:
|
|
90
|
+
1. literature scout
|
|
91
|
+
2. reference expansion
|
|
92
|
+
3. manuscript body revision
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Example controllers you can adapt
|
|
96
|
+
|
|
97
|
+
### Example 1: publishability admission guard
|
|
98
|
+
|
|
99
|
+
This controller is useful when a quest is drifting into paper-facing writing before the evidence line is ready.
|
|
100
|
+
|
|
101
|
+
Typical inputs:
|
|
102
|
+
|
|
103
|
+
- the latest verification note
|
|
104
|
+
- the current draft / summary state
|
|
105
|
+
- recent baseline or utility results
|
|
106
|
+
|
|
107
|
+
Typical stop condition:
|
|
108
|
+
|
|
109
|
+
- the claimed paper direction still has weak support
|
|
110
|
+
- one or more mandatory evidence items are still missing
|
|
111
|
+
|
|
112
|
+
Typical intervention:
|
|
113
|
+
|
|
114
|
+
1. Write `reports/publishability_guard.md` explaining the missing support.
|
|
115
|
+
2. Stop the current write-heavy run through `quest_control`.
|
|
116
|
+
3. Enqueue one mailbox message that routes the next turn back to `idea`, `analysis`, or a bounded evidence-repair step.
|
|
117
|
+
|
|
118
|
+
Example mailbox text:
|
|
119
|
+
|
|
120
|
+
```text
|
|
121
|
+
External controller: do not continue manuscript-facing writing yet.
|
|
122
|
+
Reason: the current evidence line does not pass the publishability admission gate.
|
|
123
|
+
Next route: return to one bounded evidence-building step before write resumes.
|
|
124
|
+
```
|
|
125
|
+
|
|
126
|
+
### Example 2: figure-loop guard
|
|
127
|
+
|
|
128
|
+
This controller is useful when the frontier is monopolized by repeated reopen / polish cycles on the same figure.
|
|
129
|
+
|
|
130
|
+
Typical inputs:
|
|
131
|
+
|
|
132
|
+
- recent figure artifact history
|
|
133
|
+
- repeated reopen events
|
|
134
|
+
- the latest review or summary note
|
|
135
|
+
|
|
136
|
+
Typical stop condition:
|
|
137
|
+
|
|
138
|
+
- the same figure has been reopened multiple times without improving the main claim
|
|
139
|
+
- the next useful action is no longer figure polish, but evidence repair or manuscript revision
|
|
140
|
+
|
|
141
|
+
Typical intervention:
|
|
142
|
+
|
|
143
|
+
1. Write `reports/figure_loop_guard.md` summarizing the loop.
|
|
144
|
+
2. Stop the current figure branch if needed.
|
|
145
|
+
3. Enqueue one mailbox message that names exactly one next route.
|
|
146
|
+
|
|
147
|
+
Example mailbox text:
|
|
148
|
+
|
|
149
|
+
```text
|
|
150
|
+
External controller: stop the current figure-polish loop.
|
|
151
|
+
Reason: repeated reopen cycles are no longer improving the main evidence line.
|
|
152
|
+
Next route: return to one bounded manuscript or analysis task.
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
## Example connector customization surface
|
|
156
|
+
|
|
157
|
+
The control logic should stay connector-agnostic. In practice, adapting the same controller to a different connector usually means changing only the message profile, not the stop logic or durable report contract.
|
|
158
|
+
|
|
159
|
+
For example:
|
|
160
|
+
|
|
161
|
+
```yaml
|
|
162
|
+
connector_profiles:
|
|
163
|
+
weixin:
|
|
164
|
+
summary_style: concise
|
|
165
|
+
max_route_options: 2
|
|
166
|
+
include_report_path: true
|
|
167
|
+
telegram:
|
|
168
|
+
summary_style: concise
|
|
169
|
+
max_route_options: 3
|
|
170
|
+
include_report_path: true
|
|
171
|
+
studio:
|
|
172
|
+
summary_style: detailed
|
|
173
|
+
max_route_options: 4
|
|
174
|
+
include_report_excerpt: true
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
The controller decision stays the same:
|
|
178
|
+
|
|
179
|
+
- read durable state
|
|
180
|
+
- decide whether to stop
|
|
181
|
+
- write a durable report
|
|
182
|
+
- enqueue one routed mailbox message
|
|
183
|
+
|
|
184
|
+
What changes per connector is only how much detail you surface to the human operator.
|
|
185
|
+
|
|
186
|
+
## Durable report shape
|
|
187
|
+
|
|
188
|
+
Keep reports simple and auditable.
|
|
189
|
+
|
|
190
|
+
A good report usually includes:
|
|
191
|
+
|
|
192
|
+
- `generated_at`
|
|
193
|
+
- `quest_id`
|
|
194
|
+
- `status`
|
|
195
|
+
- `recommended_action`
|
|
196
|
+
- `blockers`
|
|
197
|
+
- `evidence_summary`
|
|
198
|
+
|
|
199
|
+
Markdown plus a machine-readable JSON companion is a practical pattern.
|
|
200
|
+
|
|
201
|
+
## What not to rely on
|
|
202
|
+
|
|
203
|
+
Avoid building controllers that depend on:
|
|
204
|
+
|
|
205
|
+
- private prompt text offsets
|
|
206
|
+
- internal temporary logs that are not documented durable state
|
|
207
|
+
- patching installed package files inside `site-packages`
|
|
208
|
+
- undocumented frontend-only state
|
|
209
|
+
|
|
210
|
+
If a controller needs one of those, the contract is not stable enough yet.
|
|
211
|
+
|
|
212
|
+
## Design recommendations
|
|
213
|
+
|
|
214
|
+
- keep each controller focused on one question
|
|
215
|
+
- prefer additive reports over hidden side effects
|
|
216
|
+
- stop only when the next routed action is clear
|
|
217
|
+
- keep domain- or lab-specific policy outside core defaults
|
|
218
|
+
- treat external controllers as optional governance, not as required runtime plumbing
|
|
219
|
+
|
|
220
|
+
## Good first controllers
|
|
221
|
+
|
|
222
|
+
If you want to start small, begin with one of these:
|
|
223
|
+
|
|
224
|
+
- a publishability admission guard for paper-mode quests
|
|
225
|
+
- a figure-loop guard that stops repeated reopen cycles
|
|
226
|
+
- a route-drift guard that blocks accidental `write` transitions before evidence is ready
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
# Local Browser Auth
|
|
2
|
+
|
|
3
|
+
DeepScientist can optionally protect the local web workspace with a generated 16-character password.
|
|
4
|
+
|
|
5
|
+
This protection is local-first:
|
|
6
|
+
|
|
7
|
+
- it applies to the browser UI
|
|
8
|
+
- it also applies to `/api/*` requests from the browser
|
|
9
|
+
- it is disabled by default unless you launch with `ds --auth true` or set `ui.auth_enabled: true`
|
|
10
|
+
|
|
11
|
+
## What Happens On Startup
|
|
12
|
+
|
|
13
|
+
When you run `ds --auth true`, DeepScientist starts the daemon and prints two important things in the terminal:
|
|
14
|
+
|
|
15
|
+
- the local browser URL, such as `http://127.0.0.1:20999`
|
|
16
|
+
- the generated local access password for that launch
|
|
17
|
+
|
|
18
|
+
The browser URL is no longer expected to carry `?token=...`.
|
|
19
|
+
|
|
20
|
+
If the browser is not already authenticated, DeepScientist shows a password modal on top of the landing page before it loads quests, docs, settings, or workspace data.
|
|
21
|
+
|
|
22
|
+
## How To View The Password
|
|
23
|
+
|
|
24
|
+
Use either of these:
|
|
25
|
+
|
|
26
|
+
```bash
|
|
27
|
+
ds --status
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
Read the `auth_token` field from the JSON output, or look at the terminal where `ds` was started.
|
|
31
|
+
|
|
32
|
+
## How Login Persistence Works
|
|
33
|
+
|
|
34
|
+
After the first successful login:
|
|
35
|
+
|
|
36
|
+
- the browser stores the local auth state
|
|
37
|
+
- later visits from the same browser usually open directly
|
|
38
|
+
- restarting or reusing the managed daemon can rotate the password again
|
|
39
|
+
|
|
40
|
+
If the password rotates, the browser will be asked to log in again.
|
|
41
|
+
|
|
42
|
+
## How To Disable It
|
|
43
|
+
|
|
44
|
+
Enable the browser password gate for one launch:
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
ds --auth true
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
In that mode:
|
|
51
|
+
|
|
52
|
+
- the password modal is enabled
|
|
53
|
+
- browser requests to `/api/*` require the local auth token
|
|
54
|
+
|
|
55
|
+
To disable it again explicitly for one launch:
|
|
56
|
+
|
|
57
|
+
```bash
|
|
58
|
+
ds --auth false
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
In that mode:
|
|
62
|
+
|
|
63
|
+
- the password modal is disabled
|
|
64
|
+
- browser requests to `/api/*` do not require the local auth token
|
|
65
|
+
|
|
66
|
+
## Practical Notes
|
|
67
|
+
|
|
68
|
+
- This is not intended as internet-grade authentication. It is a local browser gate for machines you control.
|
|
69
|
+
- If you share the machine or expose the port remotely, enable auth explicitly.
|
|
70
|
+
- If you script against the local daemon from a browser client, authenticate first or disable auth explicitly for that launch.
|
|
@@ -0,0 +1,250 @@
|
|
|
1
|
+
# 20 Workspace Modes Guide: Copilot vs Autonomous
|
|
2
|
+
|
|
3
|
+
This page explains the two normal project-start modes in DeepScientist:
|
|
4
|
+
|
|
5
|
+
- `Copilot`
|
|
6
|
+
- `Autonomous`
|
|
7
|
+
|
|
8
|
+
Use this when:
|
|
9
|
+
|
|
10
|
+
- you are about to create a new project
|
|
11
|
+
- you are unsure which launch mode to choose
|
|
12
|
+
- you want to understand why one project waits for you while another starts moving immediately
|
|
13
|
+
|
|
14
|
+
If you only want the shortest install-and-launch path, read [00 Quick Start](./00_QUICK_START.md) first.
|
|
15
|
+
|
|
16
|
+
If you want the exact startup payload and form field contract, read [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md) after this page.
|
|
17
|
+
|
|
18
|
+
## 1. One-sentence summary
|
|
19
|
+
|
|
20
|
+
- `Copilot`: quiet start, user-directed, stops after the current requested unit unless you ask it to continue
|
|
21
|
+
- `Autonomous`: standard DeepScientist, keeps pushing the quest forward on its own
|
|
22
|
+
|
|
23
|
+
## 2. Where You Choose This
|
|
24
|
+
|
|
25
|
+
On the home / projects surface, start a new project and then choose the start style:
|
|
26
|
+
|
|
27
|
+
- `Copilot Mode`
|
|
28
|
+
- `Autonomous Mode`
|
|
29
|
+
|
|
30
|
+
Current UI wording may appear in two layers:
|
|
31
|
+
|
|
32
|
+
- outer launcher step: `Start Research` or `Start Experiment`
|
|
33
|
+
- mode picker title: `Choose the start style`
|
|
34
|
+
|
|
35
|
+
After that choice, the two flows diverge.
|
|
36
|
+
|
|
37
|
+
## 3. Copilot Mode
|
|
38
|
+
|
|
39
|
+
### 3.1 What it is
|
|
40
|
+
|
|
41
|
+
Copilot mode is the user-directed workspace.
|
|
42
|
+
|
|
43
|
+
It is for cases where you want DeepScientist to help actively, but you still want to steer each unit of work:
|
|
44
|
+
|
|
45
|
+
- inspect a repo
|
|
46
|
+
- read a paper
|
|
47
|
+
- debug code
|
|
48
|
+
- design an experiment
|
|
49
|
+
- check a running process
|
|
50
|
+
- rewrite a section
|
|
51
|
+
- summarize a result
|
|
52
|
+
|
|
53
|
+
The system should not assume that one request means “run the whole autonomous research loop”.
|
|
54
|
+
|
|
55
|
+
### 3.2 What happens after creation
|
|
56
|
+
|
|
57
|
+
After you create a Copilot project:
|
|
58
|
+
|
|
59
|
+
- the project is created
|
|
60
|
+
- the quest stays idle
|
|
61
|
+
- the agent waits for your first real instruction
|
|
62
|
+
|
|
63
|
+
In practical terms:
|
|
64
|
+
|
|
65
|
+
- there is no immediate autonomous launch
|
|
66
|
+
- no baseline / experiment / writing loop starts just because the project exists
|
|
67
|
+
- the first substantial action begins when you send the first message
|
|
68
|
+
|
|
69
|
+
### 3.3 Continuation behavior
|
|
70
|
+
|
|
71
|
+
Copilot mode is intentionally conservative about continuation.
|
|
72
|
+
|
|
73
|
+
After the current requested unit is complete, DeepScientist should normally:
|
|
74
|
+
|
|
75
|
+
- summarize what changed
|
|
76
|
+
- preserve context durably
|
|
77
|
+
- wait for your next message or `/resume`
|
|
78
|
+
|
|
79
|
+
This is the right mode when you want:
|
|
80
|
+
|
|
81
|
+
- tight human control
|
|
82
|
+
- short request-scoped help
|
|
83
|
+
- less background churn
|
|
84
|
+
- clearer handoff points
|
|
85
|
+
|
|
86
|
+
### 3.4 Good fit
|
|
87
|
+
|
|
88
|
+
Choose `Copilot` when:
|
|
89
|
+
|
|
90
|
+
- you want to inspect before launching expensive work
|
|
91
|
+
- the task is still ambiguous
|
|
92
|
+
- you expect to iterate interactively
|
|
93
|
+
- you want DeepScientist to behave more like a strong research IDE partner than a long-running autonomous operator
|
|
94
|
+
|
|
95
|
+
### 3.5 Bad fit
|
|
96
|
+
|
|
97
|
+
Avoid `Copilot` when:
|
|
98
|
+
|
|
99
|
+
- you already know the quest should keep running for hours
|
|
100
|
+
- you want detached experiments, monitoring, and follow-up routing without repeated user nudges
|
|
101
|
+
- the goal is full quest ownership, not request-by-request collaboration
|
|
102
|
+
|
|
103
|
+
## 4. Autonomous Mode
|
|
104
|
+
|
|
105
|
+
### 4.1 What it is
|
|
106
|
+
|
|
107
|
+
Autonomous mode is the standard DeepScientist path.
|
|
108
|
+
|
|
109
|
+
It is meant for quests where the system should keep making ordinary route choices on its own and continue until the next real checkpoint is reached.
|
|
110
|
+
|
|
111
|
+
This is the right mode for:
|
|
112
|
+
|
|
113
|
+
- baseline establishment
|
|
114
|
+
- long experiments
|
|
115
|
+
- analysis campaigns
|
|
116
|
+
- durable writing / finalize loops
|
|
117
|
+
- connector-facing project progress over time
|
|
118
|
+
|
|
119
|
+
### 4.2 What happens after creation
|
|
120
|
+
|
|
121
|
+
After you create an Autonomous project:
|
|
122
|
+
|
|
123
|
+
- the quest is created
|
|
124
|
+
- the first turn is launched immediately
|
|
125
|
+
- the system begins turning the startup contract into real work
|
|
126
|
+
|
|
127
|
+
This may mean:
|
|
128
|
+
|
|
129
|
+
- reading the baseline and references
|
|
130
|
+
- checking environment and constraints
|
|
131
|
+
- preparing scripts
|
|
132
|
+
- selecting the next route
|
|
133
|
+
- launching detached `bash_exec` work
|
|
134
|
+
|
|
135
|
+
### 4.3 Continuation behavior
|
|
136
|
+
|
|
137
|
+
Autonomous mode has two practical continuation regimes.
|
|
138
|
+
|
|
139
|
+
#### A. No real long-running external task yet
|
|
140
|
+
|
|
141
|
+
If no real long-running external task exists yet, DeepScientist should not park.
|
|
142
|
+
|
|
143
|
+
It should keep using the next turns to:
|
|
144
|
+
|
|
145
|
+
- prepare the real task
|
|
146
|
+
- launch the real task
|
|
147
|
+
- or make a durable route decision about what the real next task must be
|
|
148
|
+
|
|
149
|
+
This is the “active preparation / launch” phase.
|
|
150
|
+
|
|
151
|
+
#### B. A real long-running external task is already active
|
|
152
|
+
|
|
153
|
+
Once a real detached task is already running, continuation changes shape.
|
|
154
|
+
|
|
155
|
+
At that point, DeepScientist should not busy-loop through rapid model turns just to imitate continuous execution.
|
|
156
|
+
|
|
157
|
+
Instead:
|
|
158
|
+
|
|
159
|
+
- the real work should remain alive in detached `bash_exec` sessions or the runtime process they launched
|
|
160
|
+
- agent turns become lower-frequency monitoring / synthesis passes
|
|
161
|
+
- the current default monitoring cadence is roughly every `240` seconds
|
|
162
|
+
|
|
163
|
+
This is the “background progress monitoring” phase.
|
|
164
|
+
|
|
165
|
+
### 4.4 Good fit
|
|
166
|
+
|
|
167
|
+
Choose `Autonomous` when:
|
|
168
|
+
|
|
169
|
+
- the quest should keep moving on its own
|
|
170
|
+
- you expect real long-running experiment or analysis work
|
|
171
|
+
- you want DeepScientist to keep routing after milestones
|
|
172
|
+
- you want the standard research-operating-system behavior
|
|
173
|
+
|
|
174
|
+
### 4.5 Bad fit
|
|
175
|
+
|
|
176
|
+
Avoid `Autonomous` when:
|
|
177
|
+
|
|
178
|
+
- you only want a quiet project shell first
|
|
179
|
+
- you want to inspect the repo manually before any real movement
|
|
180
|
+
- you want every next unit to be explicitly user-directed
|
|
181
|
+
|
|
182
|
+
## 5. The Most Important Practical Difference
|
|
183
|
+
|
|
184
|
+
The easiest way to remember the split is:
|
|
185
|
+
|
|
186
|
+
- `Copilot` asks: “What single useful unit should I help with right now?”
|
|
187
|
+
- `Autonomous` asks: “What is the next real quest step, and how do I keep the quest moving?”
|
|
188
|
+
|
|
189
|
+
That difference matters more than the labels themselves.
|
|
190
|
+
|
|
191
|
+
## 6. How Resume Works
|
|
192
|
+
|
|
193
|
+
Both modes preserve context durably, but they resume differently.
|
|
194
|
+
|
|
195
|
+
On later turns, DeepScientist now carries a compact resume spine that can include:
|
|
196
|
+
|
|
197
|
+
- the latest durable user message
|
|
198
|
+
- the latest assistant checkpoint
|
|
199
|
+
- the latest run summary
|
|
200
|
+
- recent memory cues
|
|
201
|
+
- current `bash_exec` state
|
|
202
|
+
|
|
203
|
+
But the continuation policy still differs:
|
|
204
|
+
|
|
205
|
+
- `Copilot`: resume only when you speak again or explicitly resume
|
|
206
|
+
- `Autonomous`: keep going unless a real blocker or explicit waiting state applies
|
|
207
|
+
|
|
208
|
+
## 7. Choosing Quickly
|
|
209
|
+
|
|
210
|
+
Use this fast rule:
|
|
211
|
+
|
|
212
|
+
1. If you want the project to wait quietly until you tell it what to do, choose `Copilot`.
|
|
213
|
+
2. If you want DeepScientist to begin turning the quest contract into real work immediately, choose `Autonomous`.
|
|
214
|
+
3. If you are unsure, start with `Copilot`; you can still move into longer-running work once the route is clearer.
|
|
215
|
+
|
|
216
|
+
## 8. Common Misunderstandings
|
|
217
|
+
|
|
218
|
+
### “Autonomous means it should always spin rapidly”
|
|
219
|
+
|
|
220
|
+
No.
|
|
221
|
+
|
|
222
|
+
Autonomous means the quest should keep moving.
|
|
223
|
+
|
|
224
|
+
When there is no real long-running task yet, that can mean rapid preparation / launch turns.
|
|
225
|
+
When a real long-running task is already active, it should usually mean lower-frequency monitoring, not constant model churn.
|
|
226
|
+
|
|
227
|
+
### “Copilot means it cannot run experiments”
|
|
228
|
+
|
|
229
|
+
Also no.
|
|
230
|
+
|
|
231
|
+
Copilot can still help launch, inspect, analyze, and write.
|
|
232
|
+
The difference is that it should not assume long autonomous continuation unless you ask for it.
|
|
233
|
+
|
|
234
|
+
### “The two modes only change wording”
|
|
235
|
+
|
|
236
|
+
No.
|
|
237
|
+
|
|
238
|
+
They affect:
|
|
239
|
+
|
|
240
|
+
- initial launch behavior
|
|
241
|
+
- continuation policy
|
|
242
|
+
- when the quest parks
|
|
243
|
+
- how much autonomous routing is appropriate
|
|
244
|
+
|
|
245
|
+
## 9. Related Docs
|
|
246
|
+
|
|
247
|
+
- [00 Quick Start](./00_QUICK_START.md)
|
|
248
|
+
- [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
|
|
249
|
+
- [12 Guided Workflow Tour](./12_GUIDED_WORKFLOW_TOUR.md)
|
|
250
|
+
- [14 Prompt, Skills, and MCP Guide](./14_PROMPT_SKILLS_AND_MCP_GUIDE.md)
|
package/docs/en/README.md
CHANGED
|
@@ -4,6 +4,8 @@ DeepScientist is not just a long-running autonomous scientific discovery system.
|
|
|
4
4
|
|
|
5
5
|
2 minutes to install. 2 minutes to bind Weixin. 2 minutes to launch. Extremely fast and easy to use.
|
|
6
6
|
|
|
7
|
+
Local Web access now starts without a password gate by default. If you want a generated 16-character browser password for one launch, run `ds --auth true`; DeepScientist then prints the password in the terminal and the browser can reuse the stored login after the first successful entry.
|
|
8
|
+
|
|
7
9
|
It is also a workshop-style collaboration environment: let it keep moving autonomously, or step in anytime to collaborate, edit code, run the terminal yourself, or keep notes and plans in a Notion-style workspace.
|
|
8
10
|
|
|
9
11
|
Use DeepScientist anywhere: on the server through TUI, in the browser through Web, on the phone through Weixin or QQ, and even on glasses through Rokid Glasses.
|
|
@@ -30,6 +32,10 @@ This page is the shortest path to the right document.
|
|
|
30
32
|
|
|
31
33
|
- [00 Quick Start](./00_QUICK_START.md)
|
|
32
34
|
Start here if you want to install DeepScientist, launch it locally, and create your first project.
|
|
35
|
+
- [20 Workspace Modes Guide](./20_WORKSPACE_MODES_GUIDE.md)
|
|
36
|
+
Read this if you want to choose correctly between Copilot and Autonomous before creating a project.
|
|
37
|
+
- [19 Local Browser Auth](./19_LOCAL_BROWSER_AUTH.md)
|
|
38
|
+
Read this if you want to understand the local password prompt, where to find the password, and how to disable it.
|
|
33
39
|
- [05 TUI Guide](./05_TUI_GUIDE.md)
|
|
34
40
|
Read this if your main surface is the terminal and you want one end-to-end path through `ds --tui`, quests, connectors, and cross-surface work.
|
|
35
41
|
- [15 Codex Provider Setup](./15_CODEX_PROVIDER_SETUP.md)
|
|
@@ -43,6 +49,8 @@ This page is the shortest path to the right document.
|
|
|
43
49
|
|
|
44
50
|
- [02 Start Research Guide](./02_START_RESEARCH_GUIDE.md)
|
|
45
51
|
Explains the current frontend fields, derived contract fields, and practical examples.
|
|
52
|
+
- [20 Workspace Modes Guide](./20_WORKSPACE_MODES_GUIDE.md)
|
|
53
|
+
Use this when the main question is not “how do I fill the form?” but “should this project start as Copilot or Autonomous?”.
|
|
46
54
|
- [01 Settings Reference](./01_SETTINGS_REFERENCE.md)
|
|
47
55
|
Use this when you need to configure runners, connectors, runtime defaults, or home paths.
|
|
48
56
|
- [11 License And Risk Notice](./11_LICENSE_AND_RISK.md)
|
|
@@ -73,6 +81,8 @@ This page is the shortest path to the right document.
|
|
|
73
81
|
Explains how the daemon, workspace, canvas, and connector views fit together.
|
|
74
82
|
- [07 Memory and MCP](./07_MEMORY_AND_MCP.md)
|
|
75
83
|
Explains memory, artifacts, and built-in MCP behavior.
|
|
84
|
+
- [19 External Controller Guide](./19_EXTERNAL_CONTROLLER_GUIDE.md)
|
|
85
|
+
Shows how to build optional outer-orchestration guards on top of mailbox and `quest_control` without patching core runtime code.
|
|
76
86
|
|
|
77
87
|
## If something is broken
|
|
78
88
|
|
|
@@ -89,3 +99,11 @@ This page is the shortest path to the right document.
|
|
|
89
99
|
High-level system contracts and repository structure.
|
|
90
100
|
- [91 Development](./91_DEVELOPMENT.md)
|
|
91
101
|
Maintainer-facing workflow and implementation notes.
|
|
102
|
+
|
|
103
|
+
## Community
|
|
104
|
+
|
|
105
|
+
Welcome to join the WeChat group for discussion.
|
|
106
|
+
|
|
107
|
+
<p align="center">
|
|
108
|
+
<img src="../../assets/readme/wechat.jpg" alt="DeepScientist WeChat group" width="360" />
|
|
109
|
+
</p>
|