psyclaw 0.24.0 → 0.25.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.
Files changed (277) hide show
  1. package/README.md +46 -53
  2. package/{dist/apps → apps}/panel/index.html +28 -50
  3. package/package.json +10 -20
  4. package/scripts/__pycache__/build_dist.cpython-314.pyc +0 -0
  5. package/scripts/__pycache__/build_whitepaper_docx.cpython-314.pyc +0 -0
  6. package/scripts/build_preprint_docx.py +729 -0
  7. package/scripts/build_preprint_figures.py +238 -0
  8. package/scripts/build_three_line_table_fixture.py +56 -0
  9. package/scripts/build_whitepaper_docx.py +768 -0
  10. package/scripts/check-branding.mjs +159 -0
  11. package/scripts/copy-panel.mjs +11 -0
  12. package/scripts/rebrand-pi.mjs +291 -0
  13. package/scripts/verify_docx.py +41 -0
  14. package/skills/core/citation-audit/SKILL.md +9 -9
  15. package/skills/core/evidence-capture/SKILL.md +9 -9
  16. package/skills/core/manifest.json +15 -15
  17. package/skills/core/research-brief/SKILL.md +8 -8
  18. package/skills/core/research-intake/SKILL.md +9 -9
  19. package/dist/src/adapters/pi/extension.d.ts +0 -19
  20. package/dist/src/adapters/pi/extension.js +0 -735
  21. package/dist/src/adapters/pi/extension.js.map +0 -1
  22. package/dist/src/adapters/pi/model.d.ts +0 -72
  23. package/dist/src/adapters/pi/model.js +0 -152
  24. package/dist/src/adapters/pi/model.js.map +0 -1
  25. package/dist/src/adapters/pi/resources.d.ts +0 -23
  26. package/dist/src/adapters/pi/resources.js +0 -54
  27. package/dist/src/adapters/pi/resources.js.map +0 -1
  28. package/dist/src/adapters/pi/rpc.d.ts +0 -56
  29. package/dist/src/adapters/pi/rpc.js +0 -248
  30. package/dist/src/adapters/pi/rpc.js.map +0 -1
  31. package/dist/src/adapters/pi/session.d.ts +0 -30
  32. package/dist/src/adapters/pi/session.js +0 -64
  33. package/dist/src/adapters/pi/session.js.map +0 -1
  34. package/dist/src/agents/catalog.d.ts +0 -30
  35. package/dist/src/agents/catalog.js +0 -118
  36. package/dist/src/agents/catalog.js.map +0 -1
  37. package/dist/src/agents/discover.d.ts +0 -28
  38. package/dist/src/agents/discover.js +0 -127
  39. package/dist/src/agents/discover.js.map +0 -1
  40. package/dist/src/agents/import.d.ts +0 -67
  41. package/dist/src/agents/import.js +0 -801
  42. package/dist/src/agents/import.js.map +0 -1
  43. package/dist/src/analysis/hooks.d.ts +0 -81
  44. package/dist/src/analysis/hooks.js +0 -139
  45. package/dist/src/analysis/hooks.js.map +0 -1
  46. package/dist/src/analysis/pre-registration.d.ts +0 -18
  47. package/dist/src/analysis/pre-registration.js +0 -86
  48. package/dist/src/analysis/pre-registration.js.map +0 -1
  49. package/dist/src/branding.d.ts +0 -43
  50. package/dist/src/branding.js +0 -127
  51. package/dist/src/branding.js.map +0 -1
  52. package/dist/src/chat.d.ts +0 -16
  53. package/dist/src/chat.js +0 -67
  54. package/dist/src/chat.js.map +0 -1
  55. package/dist/src/cli.d.ts +0 -2
  56. package/dist/src/cli.js +0 -316
  57. package/dist/src/cli.js.map +0 -1
  58. package/dist/src/core/citations.d.ts +0 -44
  59. package/dist/src/core/citations.js +0 -48
  60. package/dist/src/core/citations.js.map +0 -1
  61. package/dist/src/core/contracts.d.ts +0 -119
  62. package/dist/src/core/contracts.js +0 -2
  63. package/dist/src/core/contracts.js.map +0 -1
  64. package/dist/src/core/docx.d.ts +0 -11
  65. package/dist/src/core/docx.js +0 -46
  66. package/dist/src/core/docx.js.map +0 -1
  67. package/dist/src/core/doi.d.ts +0 -41
  68. package/dist/src/core/doi.js +0 -82
  69. package/dist/src/core/doi.js.map +0 -1
  70. package/dist/src/core/evidence-policy.d.ts +0 -24
  71. package/dist/src/core/evidence-policy.js +0 -308
  72. package/dist/src/core/evidence-policy.js.map +0 -1
  73. package/dist/src/core/filekind.d.ts +0 -15
  74. package/dist/src/core/filekind.js +0 -82
  75. package/dist/src/core/filekind.js.map +0 -1
  76. package/dist/src/core/hash.d.ts +0 -2
  77. package/dist/src/core/hash.js +0 -17
  78. package/dist/src/core/hash.js.map +0 -1
  79. package/dist/src/core/pricing.d.ts +0 -38
  80. package/dist/src/core/pricing.js +0 -110
  81. package/dist/src/core/pricing.js.map +0 -1
  82. package/dist/src/core/redact.d.ts +0 -12
  83. package/dist/src/core/redact.js +0 -48
  84. package/dist/src/core/redact.js.map +0 -1
  85. package/dist/src/core/references.d.ts +0 -55
  86. package/dist/src/core/references.js +0 -102
  87. package/dist/src/core/references.js.map +0 -1
  88. package/dist/src/core/schemas.d.ts +0 -162
  89. package/dist/src/core/schemas.js +0 -160
  90. package/dist/src/core/schemas.js.map +0 -1
  91. package/dist/src/extension.d.ts +0 -1
  92. package/dist/src/extension.js +0 -2
  93. package/dist/src/extension.js.map +0 -1
  94. package/dist/src/index.d.ts +0 -72
  95. package/dist/src/index.js +0 -73
  96. package/dist/src/index.js.map +0 -1
  97. package/dist/src/install/installer.d.ts +0 -147
  98. package/dist/src/install/installer.js +0 -743
  99. package/dist/src/install/installer.js.map +0 -1
  100. package/dist/src/integrations/contracts.d.ts +0 -35
  101. package/dist/src/integrations/contracts.js +0 -27
  102. package/dist/src/integrations/contracts.js.map +0 -1
  103. package/dist/src/integrations/mcp.d.ts +0 -155
  104. package/dist/src/integrations/mcp.js +0 -826
  105. package/dist/src/integrations/mcp.js.map +0 -1
  106. package/dist/src/knowledge-map/contracts.d.ts +0 -20
  107. package/dist/src/knowledge-map/contracts.js +0 -2
  108. package/dist/src/knowledge-map/contracts.js.map +0 -1
  109. package/dist/src/knowledge-map/index.d.ts +0 -4
  110. package/dist/src/knowledge-map/index.js +0 -39
  111. package/dist/src/knowledge-map/index.js.map +0 -1
  112. package/dist/src/literature/contracts.d.ts +0 -106
  113. package/dist/src/literature/contracts.js +0 -2
  114. package/dist/src/literature/contracts.js.map +0 -1
  115. package/dist/src/literature/fulltext.d.ts +0 -7
  116. package/dist/src/literature/fulltext.js +0 -24
  117. package/dist/src/literature/fulltext.js.map +0 -1
  118. package/dist/src/literature/knowledge-map.d.ts +0 -2
  119. package/dist/src/literature/knowledge-map.js +0 -20
  120. package/dist/src/literature/knowledge-map.js.map +0 -1
  121. package/dist/src/literature/ledger.d.ts +0 -3
  122. package/dist/src/literature/ledger.js +0 -17
  123. package/dist/src/literature/ledger.js.map +0 -1
  124. package/dist/src/literature/metadata.d.ts +0 -6
  125. package/dist/src/literature/metadata.js +0 -32
  126. package/dist/src/literature/metadata.js.map +0 -1
  127. package/dist/src/memory/store.d.ts +0 -22
  128. package/dist/src/memory/store.js +0 -73
  129. package/dist/src/memory/store.js.map +0 -1
  130. package/dist/src/orchestration/contracts.d.ts +0 -61
  131. package/dist/src/orchestration/contracts.js +0 -2
  132. package/dist/src/orchestration/contracts.js.map +0 -1
  133. package/dist/src/orchestration/pi-executor.d.ts +0 -28
  134. package/dist/src/orchestration/pi-executor.js +0 -169
  135. package/dist/src/orchestration/pi-executor.js.map +0 -1
  136. package/dist/src/orchestration/runner.d.ts +0 -196
  137. package/dist/src/orchestration/runner.js +0 -991
  138. package/dist/src/orchestration/runner.js.map +0 -1
  139. package/dist/src/orchestration/scheduler.d.ts +0 -8
  140. package/dist/src/orchestration/scheduler.js +0 -335
  141. package/dist/src/orchestration/scheduler.js.map +0 -1
  142. package/dist/src/panel/events.d.ts +0 -20
  143. package/dist/src/panel/events.js +0 -93
  144. package/dist/src/panel/events.js.map +0 -1
  145. package/dist/src/panel/extension.d.ts +0 -8
  146. package/dist/src/panel/extension.js +0 -114
  147. package/dist/src/panel/extension.js.map +0 -1
  148. package/dist/src/panel/literature-map.d.ts +0 -26
  149. package/dist/src/panel/literature-map.js +0 -34
  150. package/dist/src/panel/literature-map.js.map +0 -1
  151. package/dist/src/panel/projection.d.ts +0 -51
  152. package/dist/src/panel/projection.js +0 -288
  153. package/dist/src/panel/projection.js.map +0 -1
  154. package/dist/src/panel/server.d.ts +0 -46
  155. package/dist/src/panel/server.js +0 -1610
  156. package/dist/src/panel/server.js.map +0 -1
  157. package/dist/src/panel/usage.d.ts +0 -53
  158. package/dist/src/panel/usage.js +0 -150
  159. package/dist/src/panel/usage.js.map +0 -1
  160. package/dist/src/project/bootstrap.d.ts +0 -10
  161. package/dist/src/project/bootstrap.js +0 -83
  162. package/dist/src/project/bootstrap.js.map +0 -1
  163. package/dist/src/project/hitl.d.ts +0 -12
  164. package/dist/src/project/hitl.js +0 -43
  165. package/dist/src/project/hitl.js.map +0 -1
  166. package/dist/src/project/jsonl.d.ts +0 -16
  167. package/dist/src/project/jsonl.js +0 -93
  168. package/dist/src/project/jsonl.js.map +0 -1
  169. package/dist/src/project/manuscript.d.ts +0 -21
  170. package/dist/src/project/manuscript.js +0 -74
  171. package/dist/src/project/manuscript.js.map +0 -1
  172. package/dist/src/project/paths.d.ts +0 -38
  173. package/dist/src/project/paths.js +0 -166
  174. package/dist/src/project/paths.js.map +0 -1
  175. package/dist/src/project/versions.d.ts +0 -10
  176. package/dist/src/project/versions.js +0 -14
  177. package/dist/src/project/versions.js.map +0 -1
  178. package/dist/src/psyclaw-theme.d.ts +0 -88
  179. package/dist/src/psyclaw-theme.js +0 -89
  180. package/dist/src/psyclaw-theme.js.map +0 -1
  181. package/dist/src/research/brief.d.ts +0 -11
  182. package/dist/src/research/brief.js +0 -81
  183. package/dist/src/research/brief.js.map +0 -1
  184. package/dist/src/research/ledger.d.ts +0 -12
  185. package/dist/src/research/ledger.js +0 -43
  186. package/dist/src/research/ledger.js.map +0 -1
  187. package/dist/src/run.d.ts +0 -20
  188. package/dist/src/run.js +0 -34
  189. package/dist/src/run.js.map +0 -1
  190. package/dist/src/setup.d.ts +0 -54
  191. package/dist/src/setup.js +0 -221
  192. package/dist/src/setup.js.map +0 -1
  193. package/dist/src/skills/contracts.d.ts +0 -105
  194. package/dist/src/skills/contracts.js +0 -3
  195. package/dist/src/skills/contracts.js.map +0 -1
  196. package/dist/src/skills/preflight.d.ts +0 -10
  197. package/dist/src/skills/preflight.js +0 -39
  198. package/dist/src/skills/preflight.js.map +0 -1
  199. package/dist/src/skills/registry.d.ts +0 -28
  200. package/dist/src/skills/registry.js +0 -556
  201. package/dist/src/skills/registry.js.map +0 -1
  202. package/dist/src/style/artifact.d.ts +0 -6
  203. package/dist/src/style/artifact.js +0 -61
  204. package/dist/src/style/artifact.js.map +0 -1
  205. package/dist/src/style/cli-ui.d.ts +0 -41
  206. package/dist/src/style/cli-ui.js +0 -119
  207. package/dist/src/style/cli-ui.js.map +0 -1
  208. package/dist/src/style/contracts.d.ts +0 -34
  209. package/dist/src/style/contracts.js +0 -2
  210. package/dist/src/style/contracts.js.map +0 -1
  211. package/dist/src/style/registry.d.ts +0 -16
  212. package/dist/src/style/registry.js +0 -50
  213. package/dist/src/style/registry.js.map +0 -1
  214. package/dist/src/trust/manifest.d.ts +0 -42
  215. package/dist/src/trust/manifest.js +0 -53
  216. package/dist/src/trust/manifest.js.map +0 -1
  217. package/dist/src/trust/sbom.d.ts +0 -54
  218. package/dist/src/trust/sbom.js +0 -77
  219. package/dist/src/trust/sbom.js.map +0 -1
  220. package/dist/src/tui/app.d.ts +0 -3
  221. package/dist/src/tui/app.js +0 -103
  222. package/dist/src/tui/app.js.map +0 -1
  223. package/dist/src/tui/model.d.ts +0 -13
  224. package/dist/src/tui/model.js +0 -25
  225. package/dist/src/tui/model.js.map +0 -1
  226. package/dist/src/updates/check.d.ts +0 -43
  227. package/dist/src/updates/check.js +0 -68
  228. package/dist/src/updates/check.js.map +0 -1
  229. package/dist/src/updates/manifest.d.ts +0 -19
  230. package/dist/src/updates/manifest.js +0 -58
  231. package/dist/src/updates/manifest.js.map +0 -1
  232. package/dist/src/updates/registry.d.ts +0 -21
  233. package/dist/src/updates/registry.js +0 -82
  234. package/dist/src/updates/registry.js.map +0 -1
  235. package/dist/src/updates/skills.d.ts +0 -15
  236. package/dist/src/updates/skills.js +0 -39
  237. package/dist/src/updates/skills.js.map +0 -1
  238. package/dist/src/updates/status.d.ts +0 -7
  239. package/dist/src/updates/status.js +0 -37
  240. package/dist/src/updates/status.js.map +0 -1
  241. package/dist/src/updates/update.d.ts +0 -43
  242. package/dist/src/updates/update.js +0 -126
  243. package/dist/src/updates/update.js.map +0 -1
  244. package/dist/src/wizard.d.ts +0 -7
  245. package/dist/src/wizard.js +0 -90
  246. package/dist/src/wizard.js.map +0 -1
  247. package/dist/src/workflows/analysis-delegation.d.ts +0 -3
  248. package/dist/src/workflows/analysis-delegation.js +0 -96
  249. package/dist/src/workflows/analysis-delegation.js.map +0 -1
  250. package/dist/src/workflows/expert-review-runner.d.ts +0 -29
  251. package/dist/src/workflows/expert-review-runner.js +0 -35
  252. package/dist/src/workflows/expert-review-runner.js.map +0 -1
  253. package/dist/src/workflows/expert-review.d.ts +0 -140
  254. package/dist/src/workflows/expert-review.js +0 -111
  255. package/dist/src/workflows/expert-review.js.map +0 -1
  256. package/dist/src/workflows/institutional-fulltext.d.ts +0 -16
  257. package/dist/src/workflows/institutional-fulltext.js +0 -110
  258. package/dist/src/workflows/institutional-fulltext.js.map +0 -1
  259. package/dist/src/workflows/literature-review.d.ts +0 -3
  260. package/dist/src/workflows/literature-review.js +0 -76
  261. package/dist/src/workflows/literature-review.js.map +0 -1
  262. package/dist/src/workflows/meta-analysis.d.ts +0 -38
  263. package/dist/src/workflows/meta-analysis.js +0 -185
  264. package/dist/src/workflows/meta-analysis.js.map +0 -1
  265. package/dist/src/workflows/publish.d.ts +0 -51
  266. package/dist/src/workflows/publish.js +0 -153
  267. package/dist/src/workflows/publish.js.map +0 -1
  268. package/dist/src/workflows/spec.d.ts +0 -51
  269. package/dist/src/workflows/spec.js +0 -157
  270. package/dist/src/workflows/spec.js.map +0 -1
  271. package/dist/src/workflows/style-contract.d.ts +0 -24
  272. package/dist/src/workflows/style-contract.js +0 -23
  273. package/dist/src/workflows/style-contract.js.map +0 -1
  274. package/dist/src/workflows/writing-review.d.ts +0 -15
  275. package/dist/src/workflows/writing-review.js +0 -82
  276. package/dist/src/workflows/writing-review.js.map +0 -1
  277. package/package.json.psyclaw +0 -21
package/README.md CHANGED
@@ -1,67 +1,60 @@
1
- # PsyClaw
2
-
3
- > v0.24.0 adopts the audited 0.4.1 predecessor Node/Pi baseline as an independent
4
- > PsyClaw product. PsyClaw v0.23.0 remains intact in Git history, its
5
- > `v0.23.0` tag, documentation, and existing release assets.
1
+ # psyclaw
6
2
 
7
3
  面向社会科学研究者的 Pi 科研智能体层。
8
4
 
9
- 正式版安装(Node.js >= 22.19):
10
-
11
- ```text
12
- npm install -g psyclaw@0.24.0 --registry https://registry.npmjs.org
13
- psyclaw --help
14
- ```
15
-
16
- PsyClaw 的目标不是再造一个重量级 Agent,而是在官方 Pi 之上提供少量、可审计、可组合的科研契约:研究项目状态、Claim-Evidence-Provenance 账本、完整性门禁、可恢复工作流、受控记忆和按需技能。统计计算交给成熟库或外接 MCP;Pi 的会话、模型、Skill、Package 和 TUI/RPC 能力继续由 Pi 提供。
17
-
18
- 当前仓库已完成第一条 M1/MVP-0 可运行切片,并落地 M2 的技能注册与受限多智能体编排基础、M3 的只读并行契约、真实 stdio MCP transport(argv/显式 env/超时隔离)、Skill 恶意正文 preflight、许可证/SBOM 门与 M4 的 literature-review/analysis-delegation/writing-review 三个 workflow 包。官方 Pi 的 `AgentSession`、`SessionManager`、`DefaultResourceLoader`、模型网关和严格 JSONL RPC 已由 adapter 接入;完成项目级 package 安装后提供原生只读 `/agents` 多智能体入口,面板扩展可选安装。联网检索、统计计算和并行写入仍按规划后置。先阅读:
19
-
20
- - [开工纪要](docs/开工纪要.md)
21
- - [架构蓝图](docs/架构蓝图.md)
22
- - [多智能体开发与运行框架](docs/多智能体开发与运行框架.md)
23
- - [评测框架](docs/评测框架.md)
24
- - [技能与生态准入清单](docs/技能与生态准入清单.md)
25
- - [威胁模型](docs/威胁模型.md)
26
-
27
- 代号:`psyclaw`。当前可用命令:
28
-
29
- ```text
30
- pnpm install
31
- pnpm check:branding # 发布前阻断活动产品面中的旧品牌残留
32
- pnpm build
33
- pnpm exec pi install -l . # 一次性把 psyclaw 作为项目级 Pi package 启用
34
- pnpm exec pi --approve # 运行 Pi 时信任已审查的项目 package
35
- node dist/src/cli.js init "研究问题" --paradigm survey-observational
36
- node dist/src/cli.js evidence add notes/source.md --level user
37
- node dist/src/cli.js brief
38
- node dist/src/cli.js chat # 以自然语言启动文献、分析或写作工作流
39
- node dist/src/cli.js agents
40
- node dist/src/cli.js install claude-code --yes # 当前 agent 全局命令仍为 discover-only
41
- node dist/src/cli.js import claude-code --yes
42
- node dist/src/cli.js shell
43
- /skills # 查看推荐 Skill 的启用状态
44
- /skills enable <skill-id> # 启用项目级 Skill
45
- /skills disable <skill-id> # 禁用项目级 Skill
46
- /mcp # 查看推荐 MCP 的启用状态
47
- /mcp enable <mcp-id> # 启用项目级 MCP
48
- /mcp disable <mcp-id> # 禁用项目级 MCP
49
- /install skill|mcp <id> # 生成安装预检计划
50
- pnpm exec pi --extension ./dist/src/extension.js --approve # 未安装 package 时的临时入口
51
- pi --extension ./dist/src/panel/extension.js # 可选:在 Pi 中启停 /panel
5
+ ## 版本沿革
6
+
7
+ `PsyClaw v0.25.1` 以 `psypi v0.4.1` 的完整实现为基线完成产品改名和源码迁移。`F:\Projects\psypi\psypi` 保留为历史仓库;此后的正式开发、发布和 `psyclaw` 命令均以本仓库为准。为避免中断已有模型、主题、扩展和 Skill 配置,运行时继续兼容既有 Pi profile;研究项目状态则统一写入 `.psyclaw/`。
8
+
9
+ psyclaw 的目标不是再造一个重量级 Agent,而是在官方 Pi 之上提供少量、可审计、可组合的科研契约:研究项目状态、Claim-Evidence-Provenance 账本、完整性门禁、可恢复工作流、受控记忆和按需技能。统计计算交给成熟库或外接 MCP;Pi 的会话、模型、Skill、Package 和 TUI/RPC 能力继续由 Pi 提供。
10
+
11
+ 当前仓库已完成第一条 M1/MVP-0 可运行切片,并落地 M2 的技能注册与受限多智能体编排基础、M3 的只读并行契约、真实 stdio MCP transport(argv/显式 env/超时隔离)、Skill 恶意正文 preflight、许可证/SBOM 门与 M4 的 literature-review/analysis-delegation/writing-review 三个 workflow 包。官方 Pi 的 `AgentSession`、`SessionManager`、`DefaultResourceLoader`、模型网关和严格 JSONL RPC 已由 adapter 接入;完成项目级 package 安装后提供原生只读 `/agents` 多智能体入口,面板扩展可选安装。联网检索、统计计算和并行写入仍按规划后置。先阅读:
12
+
13
+ - [开工纪要](docs/开工纪要.md)
14
+ - [架构蓝图](docs/架构蓝图.md)
15
+ - [多智能体开发与运行框架](docs/多智能体开发与运行框架.md)
16
+ - [评测框架](docs/评测框架.md)
17
+ - [技能与生态准入清单](docs/技能与生态准入清单.md)
18
+ - [威胁模型](docs/威胁模型.md)
19
+
20
+ 代号:`psyclaw`。当前可用命令:
21
+
22
+ ```text
23
+ pnpm install
24
+ pnpm build
25
+ pnpm exec pi install -l . # 一次性把 psyclaw 作为项目级 Pi package 启用
26
+ pnpm exec pi --approve # 运行 Pi 时信任已审查的项目 package
27
+ node dist/src/cli.js init "研究问题" --paradigm survey-observational
28
+ node dist/src/cli.js evidence add notes/source.md --level user
29
+ node dist/src/cli.js brief
30
+ node dist/src/cli.js workflow literature-review
31
+ node dist/src/cli.js serve --port 8787
32
+ node dist/src/cli.js agents
33
+ node dist/src/cli.js install claude-code --yes # 当前 agent 全局命令仍为 discover-only
34
+ node dist/src/cli.js import claude-code --yes
35
+ node dist/src/cli.js shell
36
+ /skills # 查看推荐 Skill 的启用状态
37
+ /skills enable <skill-id> # 启用项目级 Skill
38
+ /skills disable <skill-id> # 禁用项目级 Skill
39
+ /mcp # 查看推荐 MCP 的启用状态
40
+ /mcp enable <mcp-id> # 启用项目级 MCP
41
+ /mcp disable <mcp-id> # 禁用项目级 MCP
42
+ /install skill|mcp <id> # 生成安装预检计划
43
+ pnpm exec pi --extension ./dist/src/extension.js --approve # 未安装 package 时的临时入口
44
+ pi --extension ./dist/src/panel/extension.js # 可选:在 Pi 中启停 /panel
52
45
  ```
53
46
 
54
47
  在 `pi-workbench` 中使用时,先在研究项目根目录安装 psyclaw package:
55
48
 
56
49
  ```text
57
- pi install -l F:\Projects\psyclaw
50
+ pi install -l F:\Projects\psyclaw\psyclaw
58
51
  pi-workbench
59
52
  ```
60
53
 
61
54
  workbench 启动的每个 Pi 会话都会加载 psyclaw 的 `/research`、`/brief`、`/agents` 和 `/panel` 命令。在 Pi 中执行 `/panel` 后,用浏览器打开提示的 `http://127.0.0.1:8787` 地址即可查看当前项目的只读运行状态。
62
55
 
63
56
  `brief` 与 `workflow` 在证据门禁失败时退出码为 `2`,并保留 manifest 与 HANDOFF,不生成貌似完成的正文。`serve` 启动本机面板:运行事实、Agent/Skill 和模型目录为只读;模型配置表单是唯一明确的本地写入入口,会将 provider 元数据写入 Pi `models.json`,API key 交给 Pi `auth.json` 管理。
64
-
65
- 内置 agent 下载器/安装器:`agents`/`scan` 只读识别本机其他智能体(Claude Code、OpenAI Codex、Gemini CLI、opencode、Aider、Cursor、Windsurf、Continue、Orca、Copilot CLI)的配置与技能目录,绝不读取凭据内容;安装计划必须有来源、版本、artifact SHA、许可证/依赖审计和 SBOM,缺任何一项都会 `blocked`。当前 agent catalog 只有全局 npm/pipx 命令,尚未绑定可验证 staging artifact,因此即使人工确认也保持 `agent-staging-required`,不会执行全局安装;`import <id> --yes` 将其他 agent 的允许 Skill 文件以来源/SHA-256 溯源导入 `.psyclaw/imports/`;`shell` 启动 ink 交互式表格 TUI(↑/↓ 选择、`i` 安装、`m` 导入、`r` 重扫、`q` 退出)。
66
-
67
- Pi 集成分两层:完成一次 `pi install -l .` 后,项目级 package 默认加载 `src/extension.ts`,注册研究命令和原生只读 `/agents`;未安装时可用上面的 `--extension` 临时入口。worker 通过独立 Pi RPC 子进程、`read/grep/find/ls` 工具和结构化 WorkerReport 回传,但进程边界仍不是 OS sandbox。`src/panel/extension.ts` 是可选扩展,使用 `/panel [--port 8787]` 启停仅绑定 `127.0.0.1` 的只读可视化界面。面板的 Agents/Skills 下载页只展示发现结果、来源、版本、许可证、SHA、风险和审批前计划;模型页读取 Pi 本地模型注册表,并在没有对应注册项时显示 psyclaw 的 DeepSeek 模板元数据。页面只显示环境变量名称,不接收或显示 API key;`configured` 只表示环境变量存在,不代表实际认证成功。模型适配沿用 Pi `models.json`/`registerProvider` 契约,DeepSeek helper 只输出 `$DEEPSEEK_API_KEY` 引用。
57
+
58
+ 内置 agent 下载器/安装器:`agents`/`scan` 只读识别本机其他智能体(Claude Code、OpenAI Codex、Gemini CLI、opencode、Aider、Cursor、Windsurf、Continue、Orca、Copilot CLI)的配置与技能目录,绝不读取凭据内容;安装计划必须有来源、版本、artifact SHA、许可证/依赖审计和 SBOM,缺任何一项都会 `blocked`。当前 agent catalog 只有全局 npm/pipx 命令,尚未绑定可验证 staging artifact,因此即使人工确认也保持 `agent-staging-required`,不会执行全局安装;`import <id> --yes` 将其他 agent 的允许 Skill 文件以来源/SHA-256 溯源导入 `.psyclaw/imports/`;`shell` 启动 ink 交互式表格 TUI(↑/↓ 选择、`i` 安装、`m` 导入、`r` 重扫、`q` 退出)。
59
+
60
+ Pi 集成分两层:完成一次 `pi install -l .` 后,项目级 package 默认加载 `src/extension.ts`,注册研究命令和原生只读 `/agents`;未安装时可用上面的 `--extension` 临时入口。worker 通过独立 Pi RPC 子进程、`read/grep/find/ls` 工具和结构化 WorkerReport 回传,但进程边界仍不是 OS sandbox。`src/panel/extension.ts` 是可选扩展,使用 `/panel [--port 8787]` 启停仅绑定 `127.0.0.1` 的只读可视化界面。面板的 Agents/Skills 下载页只展示发现结果、来源、版本、许可证、SHA、风险和审批前计划;模型页读取 Pi 本地模型注册表,并在没有对应注册项时显示 psyclaw 的 DeepSeek 模板元数据。页面只显示环境变量名称,不接收或显示 API key;`configured` 只表示环境变量存在,不代表实际认证成功。模型适配沿用 Pi `models.json`/`registerProvider` 契约,DeepSeek helper 只输出 `$DEEPSEEK_API_KEY` 引用。
@@ -3,7 +3,7 @@
3
3
  <head>
4
4
  <meta charset="utf-8">
5
5
  <meta name="viewport" content="width=device-width, initial-scale=1">
6
- <title>PsyClaw 科研工作台 & 交互中心</title>
6
+ <title>psyclaw 科研工作台 & 交互中心</title>
7
7
  <link rel="preconnect" href="https://fonts.googleapis.com">
8
8
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
9
9
  <link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
@@ -19,24 +19,24 @@
19
19
  --bg-inner: #090d14;
20
20
  --line: rgba(255, 255, 255, 0.08);
21
21
  --line-highlight: rgba(46, 196, 182, 0.28);
22
-
22
+
23
23
  --ink: #f0f4fc;
24
24
  --ink-muted: #8e9bb2;
25
25
  --ink-faint: #5a667d;
26
-
26
+
27
27
  --accent: #2ec4b6;
28
28
  --accent-glow: rgba(46, 196, 182, 0.25);
29
29
  --accent-ink: #64e5d9;
30
30
  --accent-bg: rgba(46, 196, 182, 0.12);
31
-
31
+
32
32
  --ok: #22c55e;
33
33
  --ok-bg: rgba(34, 197, 94, 0.12);
34
34
  --ok-ink: #4ade80;
35
-
35
+
36
36
  --warn: #f59e0b;
37
37
  --warn-bg: rgba(245, 158, 11, 0.12);
38
38
  --warn-ink: #fbbf24;
39
-
39
+
40
40
  --crit: #f43f5e;
41
41
  --crit-bg: rgba(244, 63, 94, 0.12);
42
42
  --crit-ink: #fb7185;
@@ -54,24 +54,24 @@
54
54
  --bg-inner: #f1f5f9;
55
55
  --line: rgba(0, 0, 0, 0.09);
56
56
  --line-highlight: rgba(13, 148, 136, 0.4);
57
-
57
+
58
58
  --ink: #0f172a;
59
59
  --ink-muted: #475569;
60
60
  --ink-faint: #94a3b8;
61
-
61
+
62
62
  --accent: #0d9488;
63
63
  --accent-glow: rgba(13, 148, 136, 0.2);
64
64
  --accent-ink: #0f766e;
65
65
  --accent-bg: rgba(13, 148, 136, 0.1);
66
-
66
+
67
67
  --ok: #16a34a;
68
68
  --ok-bg: rgba(22, 163, 74, 0.1);
69
69
  --ok-ink: #15803d;
70
-
70
+
71
71
  --warn: #d97706;
72
72
  --warn-bg: rgba(217, 119, 6, 0.1);
73
73
  --warn-ink: #b45309;
74
-
74
+
75
75
  --crit: #e11d48;
76
76
  --crit-bg: rgba(225, 29, 72, 0.1);
77
77
  --crit-ink: #be123c;
@@ -89,24 +89,24 @@
89
89
  --bg-inner: #ece4d2;
90
90
  --line: rgba(80, 60, 40, 0.12);
91
91
  --line-highlight: rgba(180, 83, 9, 0.38);
92
-
92
+
93
93
  --ink: #2b261f;
94
94
  --ink-muted: #665c4e;
95
95
  --ink-faint: #9c907e;
96
-
96
+
97
97
  --accent: #b45309;
98
98
  --accent-glow: rgba(180, 83, 9, 0.2);
99
99
  --accent-ink: #92400e;
100
100
  --accent-bg: rgba(180, 83, 9, 0.1);
101
-
101
+
102
102
  --ok: #2e7d32;
103
103
  --ok-bg: rgba(46, 125, 50, 0.1);
104
104
  --ok-ink: #1b5e20;
105
-
105
+
106
106
  --warn: #c2410c;
107
107
  --warn-bg: rgba(194, 65, 12, 0.1);
108
108
  --warn-ink: #9a3412;
109
-
109
+
110
110
  --crit: #b91c1c;
111
111
  --crit-bg: rgba(185, 28, 28, 0.1);
112
112
  --crit-ink: #991b1b;
@@ -124,24 +124,24 @@
124
124
  --bg-inner: #0b1120;
125
125
  --line: rgba(148, 163, 184, 0.14);
126
126
  --line-highlight: rgba(56, 189, 248, 0.38);
127
-
127
+
128
128
  --ink: #f8fafc;
129
129
  --ink-muted: #94a3b8;
130
130
  --ink-faint: #64748b;
131
-
131
+
132
132
  --accent: #38bdf8;
133
133
  --accent-glow: rgba(56, 189, 248, 0.25);
134
134
  --accent-ink: #7dd3fc;
135
135
  --accent-bg: rgba(56, 189, 248, 0.12);
136
-
136
+
137
137
  --ok: #22c55e;
138
138
  --ok-bg: rgba(34, 197, 94, 0.12);
139
139
  --ok-ink: #4ade80;
140
-
140
+
141
141
  --warn: #f59e0b;
142
142
  --warn-bg: rgba(245, 158, 11, 0.12);
143
143
  --warn-ink: #fbbf24;
144
-
144
+
145
145
  --crit: #f43f5e;
146
146
  --crit-bg: rgba(244, 63, 94, 0.12);
147
147
  --crit-ink: #fb7185;
@@ -316,28 +316,6 @@
316
316
  font-size: 0.75rem;
317
317
  font-weight: 600;
318
318
  }
319
- @media (max-width: 430px) {
320
- .header { padding: 0.65rem 0.75rem; }
321
- .header-inner {
322
- display: grid;
323
- grid-template-columns: minmax(0, 1fr) auto;
324
- gap: 0.6rem;
325
- width: 100%;
326
- }
327
- .brand { min-width: 0; gap: 0.5rem; }
328
- .brand-tag { display: none; }
329
- .nav-tabs {
330
- grid-column: 1 / -1;
331
- grid-row: 2;
332
- min-width: 0;
333
- width: 100%;
334
- }
335
- .header-status { gap: 0.35rem; }
336
- .theme-btn { padding-inline: 5px; }
337
- .pulse-indicator { padding-inline: 0.45rem; }
338
- #heartbeat-text { display: none; }
339
- main { padding: 1rem 0.75rem 4rem; }
340
- }
341
319
  .pulse-dot {
342
320
  width: 7px;
343
321
  height: 7px;
@@ -1122,9 +1100,9 @@
1122
1100
  <a href="#" class="brand">
1123
1101
  <div class="brand-logo">ψ</div>
1124
1102
  <div>
1125
- <div class="brand-title">PsyClaw</div>
1103
+ <div class="brand-title">psyclaw</div>
1126
1104
  </div>
1127
- <span class="brand-tag">工作台 v0.24.0</span>
1105
+ <span class="brand-tag">工作台 v0.3.2</span>
1128
1106
  </a>
1129
1107
 
1130
1108
  <!-- Main Navigation Tabs -->
@@ -1188,7 +1166,7 @@
1188
1166
  <div class="msg-bubble assistant">
1189
1167
  <div class="msg-avatar">ψ</div>
1190
1168
  <div class="msg-content">
1191
- <strong>您好,我是 PsyClaw 科研智能助手。</strong><br>
1169
+ <strong>您好,我是 psyclaw 科研智能助手。</strong><br>
1192
1170
  我基于严密的证据链(Claim-Evidence Ledger)工作。您可以直接向我提问、委托文献综述核验、审查统计方案,或点击上方的快速快捷指令开始。
1193
1171
  </div>
1194
1172
  </div>
@@ -1443,7 +1421,7 @@
1443
1421
  <span class="pill neutral" id="probe-status-pill"><span class="dot"></span> 尚无论断</span>
1444
1422
  <span class="detail-key mono" id="probe-claim-id">—</span>
1445
1423
  </div>
1446
-
1424
+
1447
1425
  <div>
1448
1426
  <h4 style="font-size:1.02rem;color:var(--ink);margin-bottom:0.3rem;" id="probe-source-title">(从真实证据账本加载)</h4>
1449
1427
  <div class="mono" style="font-size:0.78rem;color:var(--ink-muted);" id="probe-doi-link">DOI: —</div>
@@ -2675,11 +2653,11 @@ function applyClaimProbe(idx) {
2675
2653
  });
2676
2654
  const data = PANEL_CLAIMS[idx];
2677
2655
  document.getElementById("probe-claim-id").textContent = data.id;
2678
-
2656
+
2679
2657
  const statusPill = document.getElementById("probe-status-pill");
2680
2658
  statusPill.className = data.statusClass;
2681
2659
  statusPill.innerHTML = `<span class="dot"></span> ${data.status}`;
2682
-
2660
+
2683
2661
  document.getElementById("probe-source-title").textContent = data.title;
2684
2662
  const doiEl = document.getElementById("probe-doi-link");
2685
2663
  if (data.doiUrl !== "#") {
@@ -2811,7 +2789,7 @@ function selectAuditorClaim(idx) {
2811
2789
  document.getElementById("audit-input-doi").value = d.doi;
2812
2790
  document.getElementById("audit-input-quote").value = d.quote;
2813
2791
  document.getElementById("audit-select-status").value = d.status.includes("缺口") || d.status.includes("不足") ? "uncertain" : "verified";
2814
-
2792
+
2815
2793
  const pill = document.getElementById("auditor-status-pill");
2816
2794
  pill.className = d.statusClass;
2817
2795
  pill.textContent = d.status;
package/package.json CHANGED
@@ -1,28 +1,17 @@
1
1
  {
2
2
  "name": "psyclaw",
3
- "version": "0.24.0",
4
- "description": "A standalone, evidence-grounded social-science research agent that bundles Pi with PsyClaw's research contracts, evidence gates, and workflows",
3
+ "version": "0.25.1",
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",
7
- "repository": {
8
- "type": "git",
9
- "url": "git+https://github.com/Exekiel179/psyclaw.git"
10
- },
11
- "homepage": "https://github.com/Exekiel179/psyclaw#readme",
12
- "bugs": {
13
- "url": "https://github.com/Exekiel179/psyclaw/issues"
14
- },
15
- "publishConfig": {
16
- "access": "public",
17
- "registry": "https://registry.npmjs.org/"
18
- },
19
7
  "bin": {
20
8
  "psyclaw": "dist/src/cli.js"
21
9
  },
22
10
  "files": [
23
11
  "dist",
24
12
  "skills",
25
- "package.json.psyclaw"
13
+ "apps/panel",
14
+ "scripts"
26
15
  ],
27
16
  "engines": {
28
17
  "node": ">=22.19.0"
@@ -38,22 +27,23 @@
38
27
  "packageManager": "pnpm@10.28.2",
39
28
  "pi": {
40
29
  "extensions": [
41
- "./dist/src/extension.js",
42
- "./dist/src/panel/extension.js"
30
+ "./src/extension.ts",
31
+ "./src/panel/extension.ts"
43
32
  ],
44
33
  "skills": [
45
34
  "./skills/core"
46
35
  ]
47
36
  },
48
37
  "scripts": {
49
- "build": "tsc -p tsconfig.json && node scripts/copy-panel.mjs",
38
+ "build": "node scripts/rebrand-pi.mjs && tsc -p tsconfig.json && node scripts/copy-panel.mjs",
50
39
  "typecheck": "tsc --noEmit -p tsconfig.json",
51
40
  "test": "vitest run",
52
41
  "test:watch": "vitest",
53
42
  "eval": "tsx evals/harness.ts",
54
43
  "eval:modules": "tsx evals/modules.ts",
55
- "check:branding": "node scripts/check-branding.mjs",
56
- "prepublishOnly": "pnpm check:branding && pnpm build"
44
+ "rebrand": "node scripts/rebrand-pi.mjs",
45
+ "postinstall": "node scripts/rebrand-pi.mjs",
46
+ "prepublishOnly": "pnpm build"
57
47
  },
58
48
  "dependencies": {
59
49
  "@earendil-works/pi-ai": "0.84.1",