pybao-cli 1.3.4 → 1.3.6
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.zh-CN.md +35 -35
- package/cli-acp.js +3 -3
- package/cli.js +4 -4
- package/dist/REPL-36K3V4O6.js +42 -0
- package/dist/{acp-ZK4PEHBS.js → acp-RFQVH724.js} +43 -43
- package/dist/acp-RFQVH724.js.map +7 -0
- package/dist/{agentsValidate-CNLZLCPF.js → agentsValidate-4DLL2NVH.js} +15 -15
- package/dist/agentsValidate-4DLL2NVH.js.map +7 -0
- package/dist/{ask-NQBBFHNS.js → ask-UIDVOYKR.js} +26 -26
- package/dist/ask-UIDVOYKR.js.map +7 -0
- package/dist/{autoUpdater-7SQ4X6WM.js → autoUpdater-JQKBGYMM.js} +3 -3
- package/dist/{chunk-YPIUGZMS.js → chunk-23L7MV2Y.js} +139 -129
- package/dist/chunk-23L7MV2Y.js.map +7 -0
- package/dist/{chunk-UWYVKM6V.js → chunk-2YGCWRVO.js} +34 -33
- package/dist/chunk-2YGCWRVO.js.map +7 -0
- package/dist/{chunk-66YCDEA2.js → chunk-4VAP5YEL.js} +11 -11
- package/dist/chunk-4VAP5YEL.js.map +7 -0
- package/dist/{chunk-EAXM67TE.js → chunk-55R7I54L.js} +12 -12
- package/dist/chunk-55R7I54L.js.map +7 -0
- package/dist/{chunk-PCXUZ6AT.js → chunk-5AGDLQAW.js} +3 -3
- package/dist/chunk-5AGDLQAW.js.map +7 -0
- package/dist/{chunk-27GYWUY2.js → chunk-5JHD6MUL.js} +3 -3
- package/dist/chunk-5JHD6MUL.js.map +7 -0
- package/dist/{chunk-EMMXJ26S.js → chunk-5L2YBNO5.js} +11 -11
- package/dist/chunk-5L2YBNO5.js.map +7 -0
- package/dist/{chunk-G2IOASOV.js → chunk-6GPWRDBK.js} +1 -1
- package/dist/{chunk-G2IOASOV.js.map → chunk-6GPWRDBK.js.map} +1 -1
- package/dist/{chunk-QM5NC7TO.js → chunk-6PHKJJUJ.js} +6 -6
- package/dist/{chunk-QM5NC7TO.js.map → chunk-6PHKJJUJ.js.map} +2 -2
- package/dist/{chunk-VVZQUQB5.js → chunk-7BBVZG5B.js} +25 -25
- package/dist/chunk-7BBVZG5B.js.map +7 -0
- package/dist/{chunk-T7WZHV42.js → chunk-A3LKXXWG.js} +2 -2
- package/dist/{chunk-TM6EL75Y.js → chunk-AJOZ3W4U.js} +4 -4
- package/dist/{chunk-T6GVXTNQ.js → chunk-B6IMQJZM.js} +7 -7
- package/dist/chunk-B6IMQJZM.js.map +7 -0
- package/dist/{chunk-FPLHZKHG.js → chunk-FGKBQAZE.js} +18 -18
- package/dist/chunk-FGKBQAZE.js.map +7 -0
- package/dist/{chunk-7X3QUKZJ.js → chunk-HRW76ZCA.js} +4 -4
- package/dist/chunk-HRW76ZCA.js.map +7 -0
- package/dist/{chunk-HIP7XQSM.js → chunk-MSOYRSL6.js} +11 -11
- package/dist/chunk-MSOYRSL6.js.map +7 -0
- package/dist/{chunk-VRGR4ZTQ.js → chunk-MWPFU2KU.js} +2 -2
- package/dist/chunk-MWPFU2KU.js.map +7 -0
- package/dist/{chunk-ONRCOGHT.js → chunk-OYSULZG3.js} +6 -6
- package/dist/chunk-OYSULZG3.js.map +7 -0
- package/dist/{chunk-TCCONYNZ.js → chunk-Q2ULATNS.js} +27 -27
- package/dist/chunk-Q2ULATNS.js.map +7 -0
- package/dist/{chunk-2QWJPY3A.js → chunk-QOJXMDS7.js} +7 -7
- package/dist/chunk-QOJXMDS7.js.map +7 -0
- package/dist/{chunk-H5WLCP2Q.js → chunk-QYW4WV3B.js} +9 -9
- package/dist/chunk-QYW4WV3B.js.map +7 -0
- package/dist/{chunk-EREH4M6C.js → chunk-R6B5QXT3.js} +5 -5
- package/dist/chunk-R6B5QXT3.js.map +7 -0
- package/dist/{chunk-UEANWPJI.js → chunk-RNVMHRM6.js} +7 -7
- package/dist/chunk-RNVMHRM6.js.map +7 -0
- package/dist/{chunk-6UHQEJU5.js → chunk-RXEB7A7K.js} +3 -3
- package/dist/chunk-RXEB7A7K.js.map +7 -0
- package/dist/{chunk-S74HKDFU.js → chunk-SD4T5FIT.js} +4 -4
- package/dist/{chunk-S74HKDFU.js.map → chunk-SD4T5FIT.js.map} +1 -1
- package/dist/{chunk-JL3N5JHZ.js → chunk-T5LHTEEE.js} +3 -3
- package/dist/{chunk-LQH5OITU.js → chunk-V2WGJF5D.js} +3 -3
- package/dist/{chunk-QLP2QCPC.js → chunk-VJS3VGKL.js} +5 -5
- package/dist/chunk-VJS3VGKL.js.map +7 -0
- package/dist/{chunk-CY54GWA4.js → chunk-WTWAFAPK.js} +14 -14
- package/dist/chunk-WTWAFAPK.js.map +7 -0
- package/dist/chunk-XI4LTVYT.js.map +7 -0
- package/dist/{chunk-DS3EM3LE.js → chunk-YILTNJUA.js} +5 -5
- package/dist/chunk-YILTNJUA.js.map +7 -0
- package/dist/{chunk-Z7YDRXPH.js → chunk-ZFB54AUA.js} +7 -7
- package/dist/chunk-ZFB54AUA.js.map +7 -0
- package/dist/{cli-ZJ7IBHJY.js → cli-G5SV42ST.js} +119 -119
- package/dist/cli-G5SV42ST.js.map +7 -0
- package/dist/commands-H7B4G4WE.js +46 -0
- package/dist/{config-EUUK7YTG.js → config-LAK62YAE.js} +4 -4
- package/dist/{context-MQKNXW2P.js → context-FDF2ICND.js} +5 -5
- package/dist/{customCommands-G6OTNNST.js → customCommands-JPYZGAPD.js} +4 -4
- package/dist/{env-3A7JSF3L.js → env-RJ42F6F2.js} +8 -8
- package/dist/index.js +4 -4
- package/dist/index.js.map +1 -1
- package/dist/{llm-TFMCL3FJ.js → llm-IUITCXQH.js} +34 -34
- package/dist/llm-IUITCXQH.js.map +7 -0
- package/dist/{llmLazy-JF4W3ECN.js → llmLazy-O2Y2FTMW.js} +1 -1
- package/dist/{loader-E3DJWZ43.js → loader-DKNG527Z.js} +4 -4
- package/dist/{mcp-CLIGTX2Y.js → mcp-JE45AJB5.js} +7 -7
- package/dist/{mentionProcessor-D44ZKAHF.js → mentionProcessor-CCRLNX5N.js} +5 -5
- package/dist/{messages-IFBBCPBX.js → messages-LCIJ5GI6.js} +1 -1
- package/dist/{model-KHNUZMSI.js → model-WJ5IN4MT.js} +5 -5
- package/dist/{openai-4XFA4KMK.js → openai-C7RHYT6C.js} +5 -5
- package/dist/{outputStyles-NUAH4FME.js → outputStyles-XQRKFIMI.js} +4 -4
- package/dist/{pluginRuntime-KYFB3F2O.js → pluginRuntime-HXRNF35P.js} +8 -8
- package/dist/pluginRuntime-HXRNF35P.js.map +7 -0
- package/dist/{pluginValidation-TCIL3PVT.js → pluginValidation-SGVDLOVE.js} +6 -6
- package/dist/prompts-ZRXVAHLW.js +48 -0
- package/dist/pybAgentSessionId-3HDHCCI5.js +13 -0
- package/dist/pybAgentSessionLoad-QAARWCFK.js +18 -0
- package/dist/pybAgentSessionResume-MFLYKJKP.js +16 -0
- package/dist/{kodeAgentStreamJson-3T26CHCP.js → pybAgentStreamJson-UG22YE4Z.js} +5 -5
- package/dist/{kodeAgentStreamJsonSession-E2WXNFYU.js → pybAgentStreamJsonSession-FPPTEZ7F.js} +9 -9
- package/dist/pybAgentStreamJsonSession-FPPTEZ7F.js.map +7 -0
- package/dist/{kodeAgentStructuredStdio-TNB6U6SP.js → pybAgentStructuredStdio-QDF6UGAJ.js} +3 -3
- package/dist/{kodeHooks-KEIFTKSA.js → pybHooks-BXTK4AZR.js} +7 -7
- package/dist/query-5HYIZ5QR.js +50 -0
- package/dist/{ripgrep-BQTXXOCY.js → ripgrep-DUGXYW5R.js} +3 -3
- package/dist/{skillMarketplace-WPLPA36Z.js → skillMarketplace-PZ2OWCJR.js} +3 -3
- package/dist/{state-6OLUFGTV.js → state-BORHBKLZ.js} +2 -2
- package/dist/{theme-FKIHHDYJ.js → theme-WWGSHY7G.js} +5 -5
- package/dist/{toolPermissionSettings-2YSDIYCD.js → toolPermissionSettings-AR5JDEUS.js} +6 -6
- package/dist/tools-BPXFPBXM.js +47 -0
- package/dist/{userInput-5HJRPHLY.js → userInput-SIOPI4PP.js} +34 -34
- package/dist/userInput-SIOPI4PP.js.map +7 -0
- package/package.json +1 -1
- package/scripts/binary-utils.cjs +8 -8
- package/scripts/cli-acp-wrapper.cjs +3 -3
- package/scripts/cli-wrapper.cjs +4 -4
- package/scripts/postinstall.js +7 -7
- package/dist/REPL-DWIFIJDL.js +0 -42
- package/dist/acp-ZK4PEHBS.js.map +0 -7
- package/dist/agentsValidate-CNLZLCPF.js.map +0 -7
- package/dist/ask-NQBBFHNS.js.map +0 -7
- package/dist/chunk-27GYWUY2.js.map +0 -7
- package/dist/chunk-2QWJPY3A.js.map +0 -7
- package/dist/chunk-66YCDEA2.js.map +0 -7
- package/dist/chunk-6UHQEJU5.js.map +0 -7
- package/dist/chunk-7X3QUKZJ.js.map +0 -7
- package/dist/chunk-CY54GWA4.js.map +0 -7
- package/dist/chunk-DS3EM3LE.js.map +0 -7
- package/dist/chunk-EAXM67TE.js.map +0 -7
- package/dist/chunk-EMMXJ26S.js.map +0 -7
- package/dist/chunk-EREH4M6C.js.map +0 -7
- package/dist/chunk-FPLHZKHG.js.map +0 -7
- package/dist/chunk-H5WLCP2Q.js.map +0 -7
- package/dist/chunk-HIP7XQSM.js.map +0 -7
- package/dist/chunk-M624LT6O.js.map +0 -7
- package/dist/chunk-ONRCOGHT.js.map +0 -7
- package/dist/chunk-PCXUZ6AT.js.map +0 -7
- package/dist/chunk-QLP2QCPC.js.map +0 -7
- package/dist/chunk-T6GVXTNQ.js.map +0 -7
- package/dist/chunk-TCCONYNZ.js.map +0 -7
- package/dist/chunk-UEANWPJI.js.map +0 -7
- package/dist/chunk-UWYVKM6V.js.map +0 -7
- package/dist/chunk-VRGR4ZTQ.js.map +0 -7
- package/dist/chunk-VVZQUQB5.js.map +0 -7
- package/dist/chunk-YPIUGZMS.js.map +0 -7
- package/dist/chunk-Z7YDRXPH.js.map +0 -7
- package/dist/cli-ZJ7IBHJY.js.map +0 -7
- package/dist/commands-26Q4GJ7U.js +0 -46
- package/dist/kodeAgentSessionId-PROTVRBR.js +0 -13
- package/dist/kodeAgentSessionLoad-63BYTKTV.js +0 -18
- package/dist/kodeAgentSessionResume-B74VONCU.js +0 -16
- package/dist/kodeAgentStreamJsonSession-E2WXNFYU.js.map +0 -7
- package/dist/llm-TFMCL3FJ.js.map +0 -7
- package/dist/pluginRuntime-KYFB3F2O.js.map +0 -7
- package/dist/prompts-JD7BGHKJ.js +0 -48
- package/dist/query-J5JOOKFI.js +0 -50
- package/dist/tools-S6P5P65H.js +0 -47
- package/dist/userInput-5HJRPHLY.js.map +0 -7
- /package/dist/{REPL-DWIFIJDL.js.map → REPL-36K3V4O6.js.map} +0 -0
- /package/dist/{autoUpdater-7SQ4X6WM.js.map → autoUpdater-JQKBGYMM.js.map} +0 -0
- /package/dist/{chunk-T7WZHV42.js.map → chunk-A3LKXXWG.js.map} +0 -0
- /package/dist/{chunk-TM6EL75Y.js.map → chunk-AJOZ3W4U.js.map} +0 -0
- /package/dist/{chunk-JL3N5JHZ.js.map → chunk-T5LHTEEE.js.map} +0 -0
- /package/dist/{chunk-LQH5OITU.js.map → chunk-V2WGJF5D.js.map} +0 -0
- /package/dist/{chunk-M624LT6O.js → chunk-XI4LTVYT.js} +0 -0
- /package/dist/{commands-26Q4GJ7U.js.map → commands-H7B4G4WE.js.map} +0 -0
- /package/dist/{config-EUUK7YTG.js.map → config-LAK62YAE.js.map} +0 -0
- /package/dist/{context-MQKNXW2P.js.map → context-FDF2ICND.js.map} +0 -0
- /package/dist/{customCommands-G6OTNNST.js.map → customCommands-JPYZGAPD.js.map} +0 -0
- /package/dist/{env-3A7JSF3L.js.map → env-RJ42F6F2.js.map} +0 -0
- /package/dist/{kodeAgentSessionId-PROTVRBR.js.map → llmLazy-O2Y2FTMW.js.map} +0 -0
- /package/dist/{kodeAgentSessionLoad-63BYTKTV.js.map → loader-DKNG527Z.js.map} +0 -0
- /package/dist/{kodeAgentSessionResume-B74VONCU.js.map → mcp-JE45AJB5.js.map} +0 -0
- /package/dist/{mentionProcessor-D44ZKAHF.js.map → mentionProcessor-CCRLNX5N.js.map} +0 -0
- /package/dist/{kodeAgentStreamJson-3T26CHCP.js.map → messages-LCIJ5GI6.js.map} +0 -0
- /package/dist/{kodeAgentStructuredStdio-TNB6U6SP.js.map → model-WJ5IN4MT.js.map} +0 -0
- /package/dist/{kodeHooks-KEIFTKSA.js.map → openai-C7RHYT6C.js.map} +0 -0
- /package/dist/{llmLazy-JF4W3ECN.js.map → outputStyles-XQRKFIMI.js.map} +0 -0
- /package/dist/{loader-E3DJWZ43.js.map → pluginValidation-SGVDLOVE.js.map} +0 -0
- /package/dist/{mcp-CLIGTX2Y.js.map → prompts-ZRXVAHLW.js.map} +0 -0
- /package/dist/{messages-IFBBCPBX.js.map → pybAgentSessionId-3HDHCCI5.js.map} +0 -0
- /package/dist/{model-KHNUZMSI.js.map → pybAgentSessionLoad-QAARWCFK.js.map} +0 -0
- /package/dist/{openai-4XFA4KMK.js.map → pybAgentSessionResume-MFLYKJKP.js.map} +0 -0
- /package/dist/{outputStyles-NUAH4FME.js.map → pybAgentStreamJson-UG22YE4Z.js.map} +0 -0
- /package/dist/{pluginValidation-TCIL3PVT.js.map → pybAgentStructuredStdio-QDF6UGAJ.js.map} +0 -0
- /package/dist/{prompts-JD7BGHKJ.js.map → pybHooks-BXTK4AZR.js.map} +0 -0
- /package/dist/{query-J5JOOKFI.js.map → query-5HYIZ5QR.js.map} +0 -0
- /package/dist/{ripgrep-BQTXXOCY.js.map → ripgrep-DUGXYW5R.js.map} +0 -0
- /package/dist/{skillMarketplace-WPLPA36Z.js.map → skillMarketplace-PZ2OWCJR.js.map} +0 -0
- /package/dist/{state-6OLUFGTV.js.map → state-BORHBKLZ.js.map} +0 -0
- /package/dist/{theme-FKIHHDYJ.js.map → theme-WWGSHY7G.js.map} +0 -0
- /package/dist/{toolPermissionSettings-2YSDIYCD.js.map → toolPermissionSettings-AR5JDEUS.js.map} +0 -0
- /package/dist/{tools-S6P5P65H.js.map → tools-BPXFPBXM.js.map} +0 -0
package/README.zh-CN.md
CHANGED
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
#
|
|
1
|
+
# Pyb - 终端 AI 助手
|
|
2
2
|
|
|
3
|
-
[](https://www.npmjs.com/package/@pyb-xc/pyb)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
5
|
|
|
6
6
|
[English](README.md) | [贡献指南](CONTRIBUTING.md) | [文档](docs/)
|
|
7
7
|
|
|
8
|
-
## 🎉 重磅消息:我们已切换至
|
|
8
|
+
## 🎉 重磅消息:我们已切换至 MIT 开源协议!
|
|
9
9
|
|
|
10
|
-
**开发者社区的福音来了!** 为了推动 AI 智能体技术的民主化进程,构建充满活力的创新生态,我们激动地宣布:
|
|
10
|
+
**开发者社区的福音来了!** 为了推动 AI 智能体技术的民主化进程,构建充满活力的创新生态,我们激动地宣布:Pyb 已正式从 AGPLv3 协议升级为 **MIT 开源协议**。
|
|
11
11
|
|
|
12
12
|
### 这对您意味着什么:
|
|
13
|
-
- ✅ **完全自由**:在任何项目中使用
|
|
13
|
+
- ✅ **完全自由**:在任何项目中使用 Pyb - 无论是个人项目、商业产品还是企业方案
|
|
14
14
|
- ✅ **无障碍创新**:构建专有解决方案,无需开源您的代码
|
|
15
15
|
- ✅ **极简要求**:仅需保留版权声明和许可信息
|
|
16
16
|
- ✅ **共创未来**:与全球开发者一起,加速世界向 AI 驱动生产的转型
|
|
@@ -19,13 +19,13 @@
|
|
|
19
19
|
|
|
20
20
|
## 📢 更新日志
|
|
21
21
|
|
|
22
|
-
**2025-08-29**:我们添加了 Windows 电脑的运行支持!所有的 Windows 用户现在可以使用你电脑上的 Git Bash、Unix 子系统或 WSL(Windows Subsystem for Linux)来运行
|
|
22
|
+
**2025-08-29**:我们添加了 Windows 电脑的运行支持!所有的 Windows 用户现在可以使用你电脑上的 Git Bash、Unix 子系统或 WSL(Windows Subsystem for Linux)来运行 Pyb。
|
|
23
23
|
|
|
24
24
|
**2025-12-30**:Windows 现在开箱即用,原生支持 cmd.exe。Git Bash 和 WSL 是可选的,但推荐使用以获得更好的体验。
|
|
25
25
|
|
|
26
|
-
|
|
26
|
+
Pyb 是一个强大的 AI 助手,运行在你的终端中。它能理解你的代码库、编辑文件、运行命令,并为你处理整个开发工作流。
|
|
27
27
|
|
|
28
|
-
> **⚠️ 安全提示**:
|
|
28
|
+
> **⚠️ 安全提示**:Pyb 默认以 YOLO 模式运行(等同于 Claude Code 的 `--dangerously-skip-permissions` 标志),跳过所有权限检查以获得最大生产力。YOLO 模式仅建议在安全可信的环境中处理非重要项目时使用。如果您正在处理重要文件或使用能力存疑的模型,我们强烈建议使用 `pyb --safe` 启用权限检查和手动审批所有操作。
|
|
29
29
|
>
|
|
30
30
|
> **📊 模型性能建议**:为获得最佳体验,建议使用专为自主任务完成设计的新一代强大模型。避免使用 GPT-4o、Gemini 2.5 Pro 等较老的问答型模型,它们主要针对回答问题进行优化,而非持续的独立任务执行。请选择专门训练用于智能体工作流和扩展推理能力的模型。
|
|
31
31
|
|
|
@@ -48,19 +48,19 @@ Kode 是一个强大的 AI 助手,运行在你的终端中。它能理解你
|
|
|
48
48
|
## 安装
|
|
49
49
|
|
|
50
50
|
```bash
|
|
51
|
-
npm install -g @
|
|
51
|
+
npm install -g @pyb-xc/pyb
|
|
52
52
|
```
|
|
53
53
|
|
|
54
54
|
安装后,你可以使用以下任一命令:
|
|
55
|
-
- `
|
|
56
|
-
- `
|
|
57
|
-
- `
|
|
55
|
+
- `pyb` - 主命令
|
|
56
|
+
- `pwa` - Pyb With Agent(备选)
|
|
57
|
+
- `pb` - 超短别名
|
|
58
58
|
|
|
59
59
|
### Windows 提示
|
|
60
60
|
|
|
61
|
-
- **Git Bash 是可选的**:
|
|
62
|
-
- 如果安装了 Git Bash/MSYS 或 WSL Bash,
|
|
63
|
-
- 如果都没有安装,
|
|
61
|
+
- **Git Bash 是可选的**:Pyb 现在原生支持 Windows cmd.exe 和 PowerShell。
|
|
62
|
+
- 如果安装了 Git Bash/MSYS 或 WSL Bash,Pyb 会优先使用它们以获得更好的 Unix 兼容性。
|
|
63
|
+
- 如果都没有安装,Pyb 使用 cmd.exe,同样可以正常工作。
|
|
64
64
|
- 推荐使用 VS Code 集成终端以获得最佳体验:
|
|
65
65
|
- 字体与图标显示更稳定,UI 体验更好。
|
|
66
66
|
- 相比传统命令提示符,路径和编码问题更少。
|
|
@@ -73,30 +73,30 @@ npm install -g @shareai-lab/kode
|
|
|
73
73
|
### 交互模式
|
|
74
74
|
启动交互式会话:
|
|
75
75
|
```bash
|
|
76
|
-
|
|
76
|
+
pyb
|
|
77
77
|
# 或
|
|
78
|
-
|
|
78
|
+
pwa
|
|
79
79
|
# 或
|
|
80
|
-
|
|
80
|
+
pb
|
|
81
81
|
```
|
|
82
82
|
|
|
83
83
|
### 非交互模式
|
|
84
84
|
获取快速响应:
|
|
85
85
|
```bash
|
|
86
|
-
|
|
86
|
+
pyb -p "解释这个函数" 路径/到/文件.js
|
|
87
87
|
# 或
|
|
88
|
-
|
|
88
|
+
pwa -p "解释这个函数" 路径/到/文件.js
|
|
89
89
|
```
|
|
90
90
|
|
|
91
91
|
### Docker 使用说明
|
|
92
92
|
|
|
93
93
|
```bash
|
|
94
94
|
# 克隆仓库
|
|
95
|
-
git clone https://github.com/
|
|
96
|
-
cd
|
|
95
|
+
git clone https://github.com/pyb-xc/pyb-ts.git
|
|
96
|
+
cd pyb-ts
|
|
97
97
|
|
|
98
98
|
# 本地构建镜像
|
|
99
|
-
docker build --no-cache -t
|
|
99
|
+
docker build --no-cache -t pyb .
|
|
100
100
|
|
|
101
101
|
# 在你的项目目录中运行
|
|
102
102
|
cd your-project
|
|
@@ -115,8 +115,8 @@ docker run -it --rm \
|
|
|
115
115
|
* **卷挂载(Volume Mounts)**:
|
|
116
116
|
|
|
117
117
|
* `$(pwd):/workspace` - 挂载当前项目目录
|
|
118
|
-
* `~/.
|
|
119
|
-
* `~/.
|
|
118
|
+
* `~/.pyb:/root/.pyb` - 在运行间保留 pyb 配置目录
|
|
119
|
+
* `~/.pyb.json:/root/.pyb.json` - 在运行间保留 pyb 全局配置文件
|
|
120
120
|
|
|
121
121
|
* **工作目录**:容器内工作目录设置为 `/workspace`
|
|
122
122
|
|
|
@@ -125,7 +125,7 @@ docker run -it --rm \
|
|
|
125
125
|
* **清理**:使用 `--rm` 在退出后自动删除容器
|
|
126
126
|
|
|
127
127
|
**注意**:
|
|
128
|
-
|
|
128
|
+
Pyb 同时使用 `~/.pyb` 目录(存放额外数据,如内存文件)和 `~/.pyb.json` 文件(全局配置)。
|
|
129
129
|
|
|
130
130
|
第一次运行 Docker 命令时会构建镜像,之后的运行会使用缓存镜像以加快启动速度。
|
|
131
131
|
|
|
@@ -153,7 +153,7 @@ Kode 同时使用 `~/.kode` 目录(存放额外数据,如内存文件)和
|
|
|
153
153
|
|
|
154
154
|
## 多模型智能协同
|
|
155
155
|
|
|
156
|
-
与 CC 仅支持单一模型不同,
|
|
156
|
+
与 CC 仅支持单一模型不同,Pyb 实现了**真正的多模型协同工作**,让你能够充分发挥不同 AI 模型的独特优势。
|
|
157
157
|
|
|
158
158
|
### 🏗️ 核心技术架构
|
|
159
159
|
|
|
@@ -268,7 +268,7 @@ Kode 同时使用 `~/.kode` 目录(存放额外数据,如内存文件)和
|
|
|
268
268
|
|
|
269
269
|
### 📊 与官方实现的对比
|
|
270
270
|
|
|
271
|
-
| 特性 |
|
|
271
|
+
| 特性 | Pyb | 官方 CC |
|
|
272
272
|
|------|------|---------|
|
|
273
273
|
| 支持模型数量 | 无限制,可配置任意模型 | 仅支持单一 Claude 模型 |
|
|
274
274
|
| 模型切换 | ✅ Tab 键快速切换 | ❌ 需要重启会话 |
|
|
@@ -277,11 +277,11 @@ Kode 同时使用 `~/.kode` 目录(存放额外数据,如内存文件)和
|
|
|
277
277
|
| 任务模型配置 | ✅ 不同用途配置不同默认模型 | ❌ 所有任务用同一模型 |
|
|
278
278
|
| 专家咨询 | ✅ AskExpertModel 工具 | ❌ 不支持 |
|
|
279
279
|
|
|
280
|
-
这种多模型协同能力让
|
|
280
|
+
这种多模型协同能力让 Pyb 成为真正的 **AI 开发工作台**,而不仅仅是一个单一的 AI 助手。
|
|
281
281
|
|
|
282
282
|
## 开发
|
|
283
283
|
|
|
284
|
-
|
|
284
|
+
Pyb 使用现代化工具构建,开发需要 [Bun](https://bun.sh)。
|
|
285
285
|
|
|
286
286
|
### 安装 Bun
|
|
287
287
|
|
|
@@ -297,8 +297,8 @@ powershell -c "irm bun.sh/install.ps1 | iex"
|
|
|
297
297
|
|
|
298
298
|
```bash
|
|
299
299
|
# 克隆仓库
|
|
300
|
-
git clone https://github.com/
|
|
301
|
-
cd
|
|
300
|
+
git clone https://github.com/pyb-xc/pyb-ts.git
|
|
301
|
+
cd pyb-ts
|
|
302
302
|
|
|
303
303
|
# 安装依赖
|
|
304
304
|
bun install
|
|
@@ -334,5 +334,5 @@ Apache 2.0 许可证 - 详见 [LICENSE](LICENSE)。
|
|
|
334
334
|
## 支持
|
|
335
335
|
|
|
336
336
|
- 📚 [文档](docs/)
|
|
337
|
-
- 🐛 [报告问题](https://github.com/
|
|
338
|
-
- 💬 [讨论](https://github.com/
|
|
337
|
+
- 🐛 [报告问题](https://github.com/pyb-xc/pyb-ts/issues)
|
|
338
|
+
- 💬 [讨论](https://github.com/pyb-xc/pyb-ts/discussions)
|
package/cli-acp.js
CHANGED
|
@@ -27,7 +27,7 @@ function readPackageJson(packageRoot) {
|
|
|
27
27
|
function run(cmd, args) {
|
|
28
28
|
const result = spawnSync(cmd, args, {
|
|
29
29
|
stdio: 'inherit',
|
|
30
|
-
env: { ...process.env,
|
|
30
|
+
env: { ...process.env, PYB_PACKAGED: process.env.PYB_PACKAGED || '1' },
|
|
31
31
|
})
|
|
32
32
|
if (result.error) {
|
|
33
33
|
throw result.error
|
|
@@ -61,14 +61,14 @@ function main() {
|
|
|
61
61
|
|
|
62
62
|
process.stderr.write(
|
|
63
63
|
[
|
|
64
|
-
'❌
|
|
64
|
+
'❌ pyb-acp is not runnable on this system.',
|
|
65
65
|
'',
|
|
66
66
|
'Tried:',
|
|
67
67
|
'- Native binary (postinstall download)',
|
|
68
68
|
'- Node.js runtime fallback',
|
|
69
69
|
'',
|
|
70
70
|
'Fix:',
|
|
71
|
-
'- Reinstall (ensure network access), or set
|
|
71
|
+
'- Reinstall (ensure network access), or set PYB_BINARY_BASE_URL to a mirror',
|
|
72
72
|
'- Or download a standalone binary from GitHub Releases',
|
|
73
73
|
'',
|
|
74
74
|
version ? `Package version: ${version}` : '',
|
package/cli.js
CHANGED
|
@@ -30,7 +30,7 @@ function hasFlag(flag) {
|
|
|
30
30
|
|
|
31
31
|
function printHelpLite() {
|
|
32
32
|
process.stdout.write(
|
|
33
|
-
`Usage:
|
|
33
|
+
`Usage: pyb [options] [command] [prompt]\n\n` +
|
|
34
34
|
`Common options:\n` +
|
|
35
35
|
` -h, --help Show full help\n` +
|
|
36
36
|
` -v, --version Show version\n` +
|
|
@@ -42,7 +42,7 @@ function printHelpLite() {
|
|
|
42
42
|
function run(cmd, args) {
|
|
43
43
|
const result = spawnSync(cmd, args, {
|
|
44
44
|
stdio: 'inherit',
|
|
45
|
-
env: { ...process.env,
|
|
45
|
+
env: { ...process.env, PYB_PACKAGED: process.env.PYB_PACKAGED || '1' },
|
|
46
46
|
})
|
|
47
47
|
if (result.error) {
|
|
48
48
|
throw result.error
|
|
@@ -87,14 +87,14 @@ function main() {
|
|
|
87
87
|
// 3) Final fallback: explain what to do
|
|
88
88
|
process.stderr.write(
|
|
89
89
|
[
|
|
90
|
-
'❌
|
|
90
|
+
'❌ Pyb is not runnable on this system.',
|
|
91
91
|
'',
|
|
92
92
|
'Tried:',
|
|
93
93
|
'- Native binary (postinstall download)',
|
|
94
94
|
'- Node.js runtime fallback',
|
|
95
95
|
'',
|
|
96
96
|
'Fix:',
|
|
97
|
-
'- Reinstall (ensure network access), or set
|
|
97
|
+
'- Reinstall (ensure network access), or set PYB_BINARY_BASE_URL to a mirror',
|
|
98
98
|
'- Or download a standalone binary from GitHub Releases',
|
|
99
99
|
'',
|
|
100
100
|
].join('\n'),
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { createRequire as __pybCreateRequire } from "node:module";
|
|
2
|
+
const require = __pybCreateRequire(import.meta.url);
|
|
3
|
+
import {
|
|
4
|
+
REPL
|
|
5
|
+
} from "./chunk-23L7MV2Y.js";
|
|
6
|
+
import "./chunk-QOJXMDS7.js";
|
|
7
|
+
import "./chunk-RNVMHRM6.js";
|
|
8
|
+
import "./chunk-6PHKJJUJ.js";
|
|
9
|
+
import "./chunk-WTWAFAPK.js";
|
|
10
|
+
import "./chunk-QYW4WV3B.js";
|
|
11
|
+
import "./chunk-5L2YBNO5.js";
|
|
12
|
+
import "./chunk-5P7HBXTD.js";
|
|
13
|
+
import "./chunk-3DFBSQIT.js";
|
|
14
|
+
import "./chunk-2YGCWRVO.js";
|
|
15
|
+
import "./chunk-B6IMQJZM.js";
|
|
16
|
+
import "./chunk-55R7I54L.js";
|
|
17
|
+
import "./chunk-A3LKXXWG.js";
|
|
18
|
+
import "./chunk-AJOZ3W4U.js";
|
|
19
|
+
import "./chunk-R6B5QXT3.js";
|
|
20
|
+
import "./chunk-Q2ULATNS.js";
|
|
21
|
+
import "./chunk-YILTNJUA.js";
|
|
22
|
+
import "./chunk-ZFB54AUA.js";
|
|
23
|
+
import "./chunk-UNNVICVU.js";
|
|
24
|
+
import "./chunk-RXEB7A7K.js";
|
|
25
|
+
import "./chunk-ERMQRV55.js";
|
|
26
|
+
import "./chunk-MSOYRSL6.js";
|
|
27
|
+
import "./chunk-A3BVXXA3.js";
|
|
28
|
+
import "./chunk-BJSWTHRM.js";
|
|
29
|
+
import "./chunk-6GPWRDBK.js";
|
|
30
|
+
import "./chunk-OYSULZG3.js";
|
|
31
|
+
import "./chunk-HRW76ZCA.js";
|
|
32
|
+
import "./chunk-VJS3VGKL.js";
|
|
33
|
+
import "./chunk-T5LHTEEE.js";
|
|
34
|
+
import "./chunk-RQVLBMP7.js";
|
|
35
|
+
import "./chunk-4VAP5YEL.js";
|
|
36
|
+
import "./chunk-7BBVZG5B.js";
|
|
37
|
+
import "./chunk-SD4T5FIT.js";
|
|
38
|
+
import "./chunk-OUXHGDLH.js";
|
|
39
|
+
import "./chunk-BH3Y62E3.js";
|
|
40
|
+
export {
|
|
41
|
+
REPL
|
|
42
|
+
};
|
|
@@ -3,74 +3,74 @@ import { createRequire as __pybCreateRequire } from "node:module";
|
|
|
3
3
|
const require = __pybCreateRequire(import.meta.url);
|
|
4
4
|
import {
|
|
5
5
|
ensurePackagedRuntimeEnv
|
|
6
|
-
} from "./chunk-
|
|
6
|
+
} from "./chunk-MWPFU2KU.js";
|
|
7
7
|
import {
|
|
8
8
|
getTools
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-FGKBQAZE.js";
|
|
10
10
|
import {
|
|
11
11
|
getCommands,
|
|
12
12
|
getSystemPrompt,
|
|
13
13
|
grantReadPermissionForOriginalDir,
|
|
14
14
|
hasPermissionsToUseTool,
|
|
15
15
|
query
|
|
16
|
-
} from "./chunk-
|
|
17
|
-
import "./chunk-
|
|
16
|
+
} from "./chunk-23L7MV2Y.js";
|
|
17
|
+
import "./chunk-QOJXMDS7.js";
|
|
18
18
|
import {
|
|
19
19
|
getClients
|
|
20
|
-
} from "./chunk-
|
|
21
|
-
import "./chunk-
|
|
22
|
-
import "./chunk-
|
|
23
|
-
import "./chunk-
|
|
24
|
-
import "./chunk-
|
|
20
|
+
} from "./chunk-RNVMHRM6.js";
|
|
21
|
+
import "./chunk-6PHKJJUJ.js";
|
|
22
|
+
import "./chunk-WTWAFAPK.js";
|
|
23
|
+
import "./chunk-QYW4WV3B.js";
|
|
24
|
+
import "./chunk-5L2YBNO5.js";
|
|
25
25
|
import "./chunk-5P7HBXTD.js";
|
|
26
26
|
import "./chunk-3DFBSQIT.js";
|
|
27
|
-
import "./chunk-
|
|
28
|
-
import "./chunk-
|
|
29
|
-
import "./chunk-
|
|
30
|
-
import "./chunk-
|
|
31
|
-
import "./chunk-
|
|
32
|
-
import "./chunk-
|
|
33
|
-
import "./chunk-
|
|
27
|
+
import "./chunk-2YGCWRVO.js";
|
|
28
|
+
import "./chunk-B6IMQJZM.js";
|
|
29
|
+
import "./chunk-55R7I54L.js";
|
|
30
|
+
import "./chunk-A3LKXXWG.js";
|
|
31
|
+
import "./chunk-AJOZ3W4U.js";
|
|
32
|
+
import "./chunk-R6B5QXT3.js";
|
|
33
|
+
import "./chunk-Q2ULATNS.js";
|
|
34
34
|
import {
|
|
35
35
|
loadToolPermissionContextFromDisk,
|
|
36
36
|
persistToolPermissionUpdateToDisk
|
|
37
|
-
} from "./chunk-
|
|
38
|
-
import "./chunk-
|
|
37
|
+
} from "./chunk-YILTNJUA.js";
|
|
38
|
+
import "./chunk-ZFB54AUA.js";
|
|
39
39
|
import {
|
|
40
40
|
applyToolPermissionContextUpdates
|
|
41
41
|
} from "./chunk-UNNVICVU.js";
|
|
42
|
-
import "./chunk-
|
|
42
|
+
import "./chunk-RXEB7A7K.js";
|
|
43
43
|
import "./chunk-ERMQRV55.js";
|
|
44
|
-
import "./chunk-
|
|
44
|
+
import "./chunk-MSOYRSL6.js";
|
|
45
45
|
import "./chunk-A3BVXXA3.js";
|
|
46
46
|
import "./chunk-BJSWTHRM.js";
|
|
47
47
|
import {
|
|
48
48
|
createAssistantMessage,
|
|
49
49
|
createUserMessage
|
|
50
|
-
} from "./chunk-
|
|
51
|
-
import "./chunk-
|
|
50
|
+
} from "./chunk-6GPWRDBK.js";
|
|
51
|
+
import "./chunk-OYSULZG3.js";
|
|
52
52
|
import {
|
|
53
53
|
getContext
|
|
54
|
-
} from "./chunk-
|
|
55
|
-
import "./chunk-
|
|
54
|
+
} from "./chunk-HRW76ZCA.js";
|
|
55
|
+
import "./chunk-VJS3VGKL.js";
|
|
56
56
|
import {
|
|
57
57
|
enableConfigs
|
|
58
|
-
} from "./chunk-
|
|
58
|
+
} from "./chunk-T5LHTEEE.js";
|
|
59
59
|
import "./chunk-RQVLBMP7.js";
|
|
60
60
|
import {
|
|
61
61
|
initDebugLogger
|
|
62
|
-
} from "./chunk-
|
|
62
|
+
} from "./chunk-4VAP5YEL.js";
|
|
63
63
|
import {
|
|
64
64
|
PRODUCT_COMMAND,
|
|
65
|
-
|
|
65
|
+
getPybBaseDir,
|
|
66
66
|
initSentry,
|
|
67
67
|
logError,
|
|
68
68
|
setCwd,
|
|
69
69
|
setOriginalCwd
|
|
70
|
-
} from "./chunk-
|
|
70
|
+
} from "./chunk-7BBVZG5B.js";
|
|
71
71
|
import {
|
|
72
72
|
MACRO
|
|
73
|
-
} from "./chunk-
|
|
73
|
+
} from "./chunk-SD4T5FIT.js";
|
|
74
74
|
import "./chunk-OUXHGDLH.js";
|
|
75
75
|
import "./chunk-BH3Y62E3.js";
|
|
76
76
|
|
|
@@ -331,7 +331,7 @@ function installStdoutGuard() {
|
|
|
331
331
|
return { writeAcpLine: writeAcpLine2, restore, originalStdoutWrite };
|
|
332
332
|
}
|
|
333
333
|
|
|
334
|
-
// src/acp/
|
|
334
|
+
// src/acp/pybAcpAgent.ts
|
|
335
335
|
import { existsSync, mkdirSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
336
336
|
import { isAbsolute, join, resolve } from "node:path";
|
|
337
337
|
import { nanoid } from "nanoid";
|
|
@@ -339,7 +339,7 @@ import { nanoid } from "nanoid";
|
|
|
339
339
|
// src/acp/protocol.ts
|
|
340
340
|
var ACP_PROTOCOL_VERSION = 1;
|
|
341
341
|
|
|
342
|
-
// src/acp/
|
|
342
|
+
// src/acp/pybAcpAgent.ts
|
|
343
343
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
344
344
|
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
345
345
|
import { SSEClientTransport } from "@modelcontextprotocol/sdk/client/sse.js";
|
|
@@ -487,7 +487,7 @@ function sanitizeSessionId(sessionId) {
|
|
|
487
487
|
return sessionId.replace(/[^a-zA-Z0-9_-]/g, "_");
|
|
488
488
|
}
|
|
489
489
|
function getAcpSessionDir(cwd) {
|
|
490
|
-
return join(
|
|
490
|
+
return join(getPybBaseDir(), getProjectDirSlug(cwd), "acp-sessions");
|
|
491
491
|
}
|
|
492
492
|
function getAcpSessionFilePath(cwd, sessionId) {
|
|
493
493
|
return join(getAcpSessionDir(cwd), `${sanitizeSessionId(sessionId)}.json`);
|
|
@@ -672,7 +672,7 @@ function mergeMcpClients(base, extra) {
|
|
|
672
672
|
for (const c of extra) map.set(c.name, c);
|
|
673
673
|
return Array.from(map.values());
|
|
674
674
|
}
|
|
675
|
-
var
|
|
675
|
+
var PybAcpAgent = class {
|
|
676
676
|
constructor(peer2) {
|
|
677
677
|
this.peer = peer2;
|
|
678
678
|
this.registerMethods();
|
|
@@ -708,8 +708,8 @@ var KodeAcpAgent = class {
|
|
|
708
708
|
}
|
|
709
709
|
},
|
|
710
710
|
agentInfo: {
|
|
711
|
-
name: "
|
|
712
|
-
title: "
|
|
711
|
+
name: "pyb",
|
|
712
|
+
title: "Pyb",
|
|
713
713
|
version: MACRO.VERSION || "0.0.0"
|
|
714
714
|
},
|
|
715
715
|
authMethods: []
|
|
@@ -742,7 +742,7 @@ var KodeAcpAgent = class {
|
|
|
742
742
|
const mcpClients = mergeMcpClients(configuredMcpClients, acpMcpClients);
|
|
743
743
|
const toolPermissionContext = loadToolPermissionContextFromDisk({
|
|
744
744
|
projectDir: cwd,
|
|
745
|
-
|
|
745
|
+
includePybProjectConfig: true,
|
|
746
746
|
isBypassPermissionsModeAvailable: true
|
|
747
747
|
});
|
|
748
748
|
const sessionId = `sess_${nanoid()}`;
|
|
@@ -800,7 +800,7 @@ var KodeAcpAgent = class {
|
|
|
800
800
|
const mcpClients = mergeMcpClients(configuredMcpClients, acpMcpClients);
|
|
801
801
|
const toolPermissionContext = loadToolPermissionContextFromDisk({
|
|
802
802
|
projectDir: cwd,
|
|
803
|
-
|
|
803
|
+
includePybProjectConfig: true,
|
|
804
804
|
isBypassPermissionsModeAvailable: true
|
|
805
805
|
});
|
|
806
806
|
const currentModeId = typeof persisted.currentModeId === "string" && persisted.currentModeId ? persisted.currentModeId : toolPermissionContext.mode ?? "default";
|
|
@@ -867,8 +867,8 @@ var KodeAcpAgent = class {
|
|
|
867
867
|
const userMsg = createUserMessage(promptText);
|
|
868
868
|
const baseMessages = [...session.messages, userMsg];
|
|
869
869
|
session.messages.push(userMsg);
|
|
870
|
-
if (process.env.
|
|
871
|
-
await this.
|
|
870
|
+
if (process.env.PYB_ACP_ECHO === "1") {
|
|
871
|
+
await this.handlePybMessage(session, createAssistantMessage(promptText));
|
|
872
872
|
persistAcpSessionToDisk(session);
|
|
873
873
|
return { stopReason: "end_turn" };
|
|
874
874
|
}
|
|
@@ -903,7 +903,7 @@ var KodeAcpAgent = class {
|
|
|
903
903
|
if (abortController.signal.aborted) {
|
|
904
904
|
stopReason = "cancelled";
|
|
905
905
|
}
|
|
906
|
-
await this.
|
|
906
|
+
await this.handlePybMessage(session, m);
|
|
907
907
|
}
|
|
908
908
|
if (abortController.signal.aborted) stopReason = "cancelled";
|
|
909
909
|
} catch (err) {
|
|
@@ -921,7 +921,7 @@ var KodeAcpAgent = class {
|
|
|
921
921
|
}
|
|
922
922
|
return { stopReason };
|
|
923
923
|
}
|
|
924
|
-
async
|
|
924
|
+
async handlePybMessage(session, m) {
|
|
925
925
|
if (!m || typeof m !== "object") return;
|
|
926
926
|
if (m.type === "assistant") {
|
|
927
927
|
session.messages.push(m);
|
|
@@ -1040,7 +1040,7 @@ var KodeAcpAgent = class {
|
|
|
1040
1040
|
}
|
|
1041
1041
|
createAcpCanUseTool(session) {
|
|
1042
1042
|
const timeoutMs = (() => {
|
|
1043
|
-
const raw = process.env.
|
|
1043
|
+
const raw = process.env.PYB_ACP_PERMISSION_TIMEOUT_MS;
|
|
1044
1044
|
const parsed = raw ? Number(raw) : NaN;
|
|
1045
1045
|
return Number.isFinite(parsed) && parsed > 0 ? parsed : 3e4;
|
|
1046
1046
|
})();
|
|
@@ -1352,6 +1352,6 @@ try {
|
|
|
1352
1352
|
logError(e);
|
|
1353
1353
|
}
|
|
1354
1354
|
var peer = new JsonRpcPeer();
|
|
1355
|
-
new
|
|
1355
|
+
new PybAcpAgent(peer);
|
|
1356
1356
|
var transport = new StdioTransport(peer, { writeLine: writeAcpLine });
|
|
1357
1357
|
transport.start();
|