chatccc 0.2.252 → 0.2.254
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 +10 -1
- package/bin/cccagent.mjs +12 -3
- package/bin/chatccc.mjs +15 -6
- package/config.sample.json +2 -1
- package/deepccc-agent/README.md +40 -35
- package/deepccc-agent/os-prompts/darwin.md +8 -8
- package/deepccc-agent/os-prompts/linux.md +8 -8
- package/deepccc-agent/os-prompts/win32.md +11 -11
- package/deepccc-agent/package.json +65 -65
- package/dist/deepccc-agent/src/cli.js +634 -0
- package/dist/deepccc-agent/src/config.js +81 -0
- package/dist/deepccc-agent/src/context.js +348 -0
- package/dist/deepccc-agent/src/file-log.js +34 -0
- package/dist/deepccc-agent/src/file-tools.js +1208 -0
- package/dist/deepccc-agent/src/index.js +601 -0
- package/dist/deepccc-agent/src/permissions.js +170 -0
- package/dist/deepccc-agent/src/privacy.js +124 -0
- package/dist/deepccc-agent/src/proc-tree-kill.js +60 -0
- package/dist/deepccc-agent/src/progress/cards-helpers.js +70 -0
- package/dist/deepccc-agent/src/progress/reducer.js +102 -0
- package/dist/deepccc-agent/src/progress/terminal-renderer.js +264 -0
- package/dist/deepccc-agent/src/progress/view.js +30 -0
- package/dist/deepccc-agent/src/raw-stream-log.js +106 -0
- package/dist/deepccc-agent/src/session-search.js +276 -0
- package/dist/deepccc-agent/src/session-select.js +23 -0
- package/dist/deepccc-agent/src/sigint.js +26 -0
- package/dist/deepccc-agent/src/skills.js +178 -0
- package/dist/deepccc-agent/src/web-tools.js +246 -0
- package/dist/src/adapters/adapter-interface.js +19 -0
- package/dist/src/adapters/ccc-adapter.js +112 -0
- package/dist/src/adapters/claude-adapter.js +497 -0
- package/dist/src/adapters/claude-session-meta-store.js +92 -0
- package/dist/src/adapters/codex-adapter.js +279 -0
- package/dist/src/adapters/codex-session-meta-store.js +94 -0
- package/dist/src/adapters/cursor-adapter.js +491 -0
- package/dist/src/adapters/cursor-session-meta-store.js +116 -0
- package/dist/src/adapters/jsonl-stream.js +104 -0
- package/{src/adapters/proc-tree-kill.ts → dist/src/adapters/proc-tree-kill.js} +94 -97
- package/dist/src/adapters/raw-stream-log.js +106 -0
- package/dist/src/adapters/resource-monitor.js +113 -0
- package/dist/src/agent-activity.js +133 -0
- package/dist/src/agent-delegate-task-rpc.js +129 -0
- package/dist/src/agent-delegate-task.js +48 -0
- package/dist/src/agent-file-rpc.js +152 -0
- package/dist/src/agent-image-rpc.js +148 -0
- package/dist/src/agent-platform-routing.js +13 -0
- package/dist/src/agent-reload-config-rpc.js +23 -0
- package/dist/src/agent-rpc-body.js +87 -0
- package/dist/src/agent-stop-stuck.js +110 -0
- package/dist/src/agent-team/application/board-service.js +142 -0
- package/dist/src/agent-team/application/main-agent-service.js +151 -0
- package/dist/src/agent-team/domain/board.js +69 -0
- package/dist/src/agent-team/http/board-routes.js +213 -0
- package/dist/src/agent-team/infrastructure/filesystem-browser.js +112 -0
- package/dist/src/agent-team/infrastructure/main-agent-session-runtime.js +30 -0
- package/dist/src/agent-team/main-agent-bootstrap.js +15 -0
- package/dist/src/agent-team/repositories/board-repository.js +10 -0
- package/dist/src/agent-team/repositories/feishu-p2p-contact-store.js +64 -0
- package/dist/src/agent-team/repositories/json-board-repository.js +209 -0
- package/dist/src/agent-team/repositories/main-agent-binding-repository.js +84 -0
- package/dist/src/agent-team/sync/board-sync-adapter.js +1 -0
- package/dist/src/agent-team/web/agent-team-page.js +219 -0
- package/dist/src/agent-tool.js +10 -0
- package/dist/src/card-action-routing.js +7 -0
- package/dist/src/card-plain-text.js +101 -0
- package/dist/src/cardkit.js +158 -0
- package/dist/src/cards.js +573 -0
- package/dist/src/chatgpt-subscription-rpc.js +18 -0
- package/dist/src/chatgpt-subscription.js +199 -0
- package/dist/src/chrome-devtools-guard.js +238 -0
- package/dist/src/claude-sdk-installer.js +249 -0
- package/dist/src/codex-reset-actions.js +143 -0
- package/dist/src/config-utils.js +149 -0
- package/dist/src/config.js +808 -0
- package/dist/src/cursor-usage.js +77 -0
- package/dist/src/exit-banner.js +28 -0
- package/dist/src/feishu-api.js +1404 -0
- package/dist/src/feishu-message-ingress.js +137 -0
- package/dist/src/feishu-platform.js +97 -0
- package/dist/src/format-message.js +252 -0
- package/dist/src/git-command.js +155 -0
- package/dist/src/im-skills.js +121 -0
- package/dist/src/index.js +835 -0
- package/dist/src/litellm-proxy.js +300 -0
- package/dist/src/orchestrator.js +2096 -0
- package/dist/src/package-root.js +26 -0
- package/dist/src/platform-adapter.js +7 -0
- package/dist/src/platform-startup.js +6 -0
- package/dist/src/privacy.js +100 -0
- package/dist/src/progress/reducer.js +102 -0
- package/dist/src/progress/terminal-renderer.js +264 -0
- package/dist/src/progress/view.js +30 -0
- package/dist/src/response-stall.js +14 -0
- package/dist/src/runtime-entry.js +13 -0
- package/dist/src/runtime-reload.js +19 -0
- package/dist/src/session-chat-binding.js +183 -0
- package/dist/src/session-name.js +7 -0
- package/dist/src/session.js +2147 -0
- package/dist/src/shared-prefix.js +16 -0
- package/dist/src/shared.js +493 -0
- package/dist/src/sim-agent.js +105 -0
- package/dist/src/sim-platform.js +142 -0
- package/dist/src/sim-store.js +231 -0
- package/dist/src/simplify.js +99 -0
- package/dist/src/startup-lifecycle.js +209 -0
- package/dist/src/stream-state.js +141 -0
- package/dist/src/terminal-error.js +100 -0
- package/dist/src/trace.js +50 -0
- package/dist/src/turn-cards.js +92 -0
- package/dist/src/update-command-guard.js +114 -0
- package/{src/web-ui.ts → dist/src/web-ui.js} +753 -839
- package/dist/src/wechat-platform.js +545 -0
- package/package.json +76 -74
- package/deepccc-agent/LICENSE +0 -201
- package/deepccc-agent/bin/deepccc.mjs +0 -26
- package/deepccc-agent/docs/cache-hit-rate-1.jpg +0 -0
- package/deepccc-agent/docs/cache-hit-rate-2.jpg +0 -0
- package/deepccc-agent/package-lock.json +0 -2027
- package/deepccc-agent/src/__tests__/chat-session.test.ts +0 -877
- package/deepccc-agent/src/__tests__/cli-json.test.ts +0 -49
- package/deepccc-agent/src/__tests__/config.test.ts +0 -34
- package/deepccc-agent/src/__tests__/context.test.ts +0 -341
- package/deepccc-agent/src/__tests__/file-tools.test.ts +0 -240
- package/deepccc-agent/src/__tests__/permissions.test.ts +0 -199
- package/deepccc-agent/src/__tests__/privacy.test.ts +0 -318
- package/deepccc-agent/src/__tests__/progress-reducer.test.ts +0 -121
- package/deepccc-agent/src/__tests__/session-search.test.ts +0 -262
- package/deepccc-agent/src/__tests__/session-select.test.ts +0 -116
- package/deepccc-agent/src/__tests__/sigint.test.ts +0 -56
- package/deepccc-agent/src/__tests__/skills.test.ts +0 -284
- package/deepccc-agent/src/__tests__/terminal-renderer.test.ts +0 -247
- package/deepccc-agent/src/__tests__/web-tools.test.ts +0 -220
- package/deepccc-agent/src/cli.ts +0 -682
- package/deepccc-agent/src/config.ts +0 -101
- package/deepccc-agent/src/context.ts +0 -465
- package/deepccc-agent/src/file-log.ts +0 -38
- package/deepccc-agent/src/file-tools.ts +0 -1493
- package/deepccc-agent/src/index.ts +0 -710
- package/deepccc-agent/src/permissions.ts +0 -226
- package/deepccc-agent/src/privacy.ts +0 -141
- package/deepccc-agent/src/proc-tree-kill.ts +0 -61
- package/deepccc-agent/src/progress/cards-helpers.ts +0 -76
- package/deepccc-agent/src/progress/reducer.ts +0 -113
- package/deepccc-agent/src/progress/terminal-renderer.ts +0 -294
- package/deepccc-agent/src/progress/view.ts +0 -77
- package/deepccc-agent/src/raw-stream-log.ts +0 -124
- package/deepccc-agent/src/session-search.ts +0 -370
- package/deepccc-agent/src/session-select.ts +0 -48
- package/deepccc-agent/src/sigint.ts +0 -50
- package/deepccc-agent/src/skills.ts +0 -205
- package/deepccc-agent/src/web-tools.ts +0 -313
- package/deepccc-agent/tsconfig.build.json +0 -13
- package/deepccc-agent/tsconfig.json +0 -13
- package/deepccc-agent/vitest.config.ts +0 -7
- package/src/__tests__/adapter-interface.test.ts +0 -152
- package/src/__tests__/agent-activity.test.ts +0 -86
- package/src/__tests__/agent-delegate-task-rpc.test.ts +0 -165
- package/src/__tests__/agent-image-rpc.test.ts +0 -34
- package/src/__tests__/agent-platform-routing.test.ts +0 -26
- package/src/__tests__/agent-reload-config-rpc.test.ts +0 -99
- package/src/__tests__/agent-rpc-body.test.ts +0 -42
- package/src/__tests__/builtin-chat-session.test.ts +0 -532
- package/src/__tests__/builtin-cli-json.test.ts +0 -39
- package/src/__tests__/builtin-config.test.ts +0 -26
- package/src/__tests__/builtin-context.test.ts +0 -319
- package/src/__tests__/builtin-file-tools.test.ts +0 -240
- package/src/__tests__/builtin-permissions.test.ts +0 -219
- package/src/__tests__/builtin-session-search.test.ts +0 -262
- package/src/__tests__/builtin-session-select.test.ts +0 -116
- package/src/__tests__/builtin-sigint.test.ts +0 -56
- package/src/__tests__/builtin-skills.test.ts +0 -284
- package/src/__tests__/builtin-web-tools.test.ts +0 -220
- package/src/__tests__/card-action-routing.test.ts +0 -18
- package/src/__tests__/card-plain-text.test.ts +0 -45
- package/src/__tests__/cardkit.test.ts +0 -60
- package/src/__tests__/cards.test.ts +0 -607
- package/src/__tests__/ccc-adapter.test.ts +0 -194
- package/src/__tests__/chatgpt-subscription-rpc.test.ts +0 -89
- package/src/__tests__/chatgpt-subscription.test.ts +0 -135
- package/src/__tests__/chrome-devtools-guard.test.ts +0 -165
- package/src/__tests__/claude-adapter.test.ts +0 -614
- package/src/__tests__/claude-raw-stream-log.test.ts +0 -96
- package/src/__tests__/claude-sdk-installer.test.ts +0 -285
- package/src/__tests__/codex-adapter.test.ts +0 -331
- package/src/__tests__/codex-raw-stream-log.test.ts +0 -170
- package/src/__tests__/codex-reset-actions.test.ts +0 -146
- package/src/__tests__/config-reload.test.ts +0 -284
- package/src/__tests__/config-sample.test.ts +0 -97
- package/src/__tests__/config-utils.test.ts +0 -40
- package/src/__tests__/config.test.ts +0 -395
- package/src/__tests__/crash-logging.test.ts +0 -360
- package/src/__tests__/cursor-adapter.test.ts +0 -890
- package/src/__tests__/cursor-session-meta-store.test.ts +0 -212
- package/src/__tests__/feishu-api.test.ts +0 -60
- package/src/__tests__/feishu-avatar.test.ts +0 -504
- package/src/__tests__/feishu-message-ingress.test.ts +0 -138
- package/src/__tests__/feishu-platform.test.ts +0 -75
- package/src/__tests__/fixtures/codex_simple_text.jsonl +0 -4
- package/src/__tests__/fixtures/codex_with_tool.jsonl +0 -6
- package/src/__tests__/fixtures/cursor_partial_only.jsonl +0 -5
- package/src/__tests__/fixtures/cursor_partial_with_final.jsonl +0 -13
- package/src/__tests__/fixtures/cursor_with_tool_call.jsonl +0 -12
- package/src/__tests__/format-message.test.ts +0 -316
- package/src/__tests__/git-command.test.ts +0 -288
- package/src/__tests__/im-skills.test.ts +0 -125
- package/src/__tests__/jsonl-stream.test.ts +0 -79
- package/src/__tests__/orchestrator.test.ts +0 -1268
- package/src/__tests__/package-files.test.ts +0 -24
- package/src/__tests__/platform-startup.test.ts +0 -19
- package/src/__tests__/privacy.test.ts +0 -198
- package/src/__tests__/proc-tree-kill.test.ts +0 -108
- package/src/__tests__/progress-reducer.test.ts +0 -121
- package/src/__tests__/raw-stream-log.test.ts +0 -106
- package/src/__tests__/response-stall.test.ts +0 -49
- package/src/__tests__/restart.test.ts +0 -232
- package/src/__tests__/session-ccc-config.test.ts +0 -66
- package/src/__tests__/session.test.ts +0 -3004
- package/src/__tests__/shared-prefix.test.ts +0 -36
- package/src/__tests__/sim-agent.test.ts +0 -174
- package/src/__tests__/sim-platform.test.ts +0 -93
- package/src/__tests__/sim-store.test.ts +0 -214
- package/src/__tests__/simplify.test.ts +0 -283
- package/src/__tests__/startup-lifecycle.test.ts +0 -231
- package/src/__tests__/stop-session.test.ts +0 -162
- package/src/__tests__/stream-state.test.ts +0 -164
- package/src/__tests__/terminal-error.test.ts +0 -54
- package/src/__tests__/terminal-renderer.test.ts +0 -247
- package/src/__tests__/update-command-guard.test.ts +0 -144
- package/src/__tests__/web-ui.test.ts +0 -438
- package/src/__tests__/wechat-platform.test.ts +0 -111
- package/src/adapters/adapter-interface.ts +0 -217
- package/src/adapters/ccc-adapter.ts +0 -150
- package/src/adapters/claude-adapter.ts +0 -673
- package/src/adapters/claude-session-meta-store.ts +0 -120
- package/src/adapters/codex-adapter.ts +0 -426
- package/src/adapters/codex-session-meta-store.ts +0 -131
- package/src/adapters/cursor-adapter.ts +0 -681
- package/src/adapters/cursor-session-meta-store.ts +0 -154
- package/src/adapters/jsonl-stream.ts +0 -157
- package/src/adapters/raw-stream-log.ts +0 -124
- package/src/adapters/resource-monitor.ts +0 -141
- package/src/agent-activity.ts +0 -175
- package/src/agent-delegate-task-rpc.ts +0 -153
- package/src/agent-delegate-task.ts +0 -91
- package/src/agent-file-rpc.ts +0 -172
- package/src/agent-image-rpc.ts +0 -168
- package/src/agent-platform-routing.ts +0 -28
- package/src/agent-reload-config-rpc.ts +0 -34
- package/src/agent-rpc-body.ts +0 -92
- package/src/agent-stop-stuck.ts +0 -129
- package/src/card-action-routing.ts +0 -14
- package/src/card-plain-text.ts +0 -108
- package/src/cardkit.ts +0 -179
- package/src/cards.ts +0 -684
- package/src/chatgpt-subscription-rpc.ts +0 -27
- package/src/chatgpt-subscription.ts +0 -299
- package/src/chrome-devtools-guard.ts +0 -318
- package/src/claude-sdk-installer.ts +0 -324
- package/src/codex-reset-actions.ts +0 -184
- package/src/config-utils.ts +0 -211
- package/src/config.ts +0 -1063
- package/src/cursor-usage.ts +0 -128
- package/src/exit-banner.ts +0 -33
- package/src/feishu-api.ts +0 -1616
- package/src/feishu-message-ingress.ts +0 -195
- package/src/feishu-platform.ts +0 -159
- package/src/format-message.ts +0 -293
- package/src/git-command.ts +0 -202
- package/src/im-skills.ts +0 -149
- package/src/index.ts +0 -1089
- package/src/litellm-proxy.ts +0 -374
- package/src/orchestrator.ts +0 -2543
- package/src/platform-adapter.ts +0 -70
- package/src/platform-startup.ts +0 -16
- package/src/privacy.ts +0 -118
- package/src/progress/reducer.ts +0 -113
- package/src/progress/terminal-renderer.ts +0 -294
- package/src/progress/view.ts +0 -77
- package/src/response-stall.ts +0 -28
- package/src/runtime-reload.ts +0 -34
- package/src/session-chat-binding.ts +0 -292
- package/src/session-name.ts +0 -8
- package/src/session.ts +0 -2659
- package/src/shared-prefix.ts +0 -29
- package/src/shared.ts +0 -552
- package/src/sim-agent.ts +0 -167
- package/src/sim-platform.ts +0 -177
- package/src/sim-store.ts +0 -317
- package/src/simplify.ts +0 -120
- package/src/startup-lifecycle.ts +0 -250
- package/src/stream-state.ts +0 -177
- package/src/terminal-error.ts +0 -129
- package/src/trace.ts +0 -51
- package/src/turn-cards.ts +0 -118
- package/src/update-command-guard.ts +0 -165
- package/src/wechat-platform.ts +0 -680
package/README.md
CHANGED
|
@@ -153,6 +153,14 @@ chatccc
|
|
|
153
153
|
|
|
154
154
|
每次直接运行 `chatccc` 时,无论是否已经完成配置,ChatCCC 默认都会用系统默认浏览器打开本地 Web UI(默认 `http://localhost:18080/`,修改 `config.port` 后跟随实际端口)。可在首次配置向导或管理页的 **Web UI** 设置中关闭;关闭后从下一次直接启动起生效。由 `/restart`、`/update` 或 Web UI 发起的内部重启始终不会重复打开浏览器。Linux 服务器没有 `DISPLAY`/`WAYLAND_DISPLAY` 时会跳过打开,并在终端输出 SSH 隧道访问提示。主页顶部的 **Agent Team** 入口会跳转到独立的 `/agent-team` 页面。
|
|
155
155
|
|
|
156
|
+
#### 本地任务看板(Agent Team)
|
|
157
|
+
|
|
158
|
+
Agent Team 提供本地任务看板和项目主 Agent 入口,但暂不根据任务自动分配 Agent。每个规范化后的本机目录对应一个独立项目和看板,固定包含“头脑风暴、Todo、Doing、Done、搁置”五列,支持新增、编辑、拖动排序和删除任务。页面会自动保存,不需要手动提交。当前按路径识别项目,不检查 Git 仓库或 worktree 关系,任意子目录都可以作为独立项目。
|
|
159
|
+
|
|
160
|
+
打开项目后可以选择 CCC、Claude、Cursor 或 Codex 作为主 Agent。首次设置会创建固定命名为 `主Agent-<目录短名>` 的飞书群和空 Agent Session;后续切换 Agent 或重新关联目录会复用原群,运行中的主 Agent 不允许切换。建群成员取自机器人最近一次收到的飞书私聊;如果尚无私聊记录,网页会提示先给机器人发送任意私聊消息并自动检测。项目群名不会随第一句话或 `/newh` 改变。
|
|
161
|
+
|
|
162
|
+
看板数据默认保存在 `~/.chatccc/agent-team/`,其中 `workspaces.json` 保存最近工作目录索引,`boards/` 保存按稳定 ID 分隔的看板 JSON,`main-agent-bindings/` 单独保存本机飞书群与 Session 绑定。目录移动或重命名后,可从最近目录列表重新关联。数据访问通过仓储接口隔离,后续接入飞书多维表格时可增加双向同步适配器,无需把本机群聊和 Session 状态混入任务同步模型。选择目录、创建群聊和启动 Agent 等操作都由本机 Node 后端执行;当前实现不依赖 Electron。
|
|
163
|
+
|
|
156
164
|
#### 从源码运行
|
|
157
165
|
|
|
158
166
|
```bash
|
|
@@ -364,6 +372,7 @@ Codex 的默认模型和推理强度可继续由 `~/.codex/config.toml` 管理
|
|
|
364
372
|
| `cursor.alternativeModel` / `codex.alternativeModel` / `ccc.alternativeModel` | 单个备选模型;加入 `/model` 人工切换列表,不会自动故障转移 |
|
|
365
373
|
| `ccc.DEEPSEEK_API_KEY` / `ccc.DEEPSEEK_BASE_URL` | CCC Agent 的 API Key 和服务地址;**不限于 DeepSeek**——可填任意 OpenAI 兼容端点(OpenAI、Kimi、通义、智谱、Ollama 本地等) |
|
|
366
374
|
| `ccc.model` | CCC Agent 默认模型 |
|
|
375
|
+
| `ccc.compactionTimeoutMs` | CCC Agent 上下文压缩单轮超时(毫秒),默认 300000(5 分钟);压缩超时会让整轮对话失败,建议保持默认或调大 |
|
|
367
376
|
|
|
368
377
|
> **权限控制**:普通消息以 `bypassPermissions` 模式运行,跳过 Agent 操作确认。使用 `/plan` 或 `/ask` 前缀时,ChatCCC 自动切换为只读模式:Claude SDK 仅放行 Read + stop-stuck-loop 网络请求,Codex 使用 `--sandbox read-only`,Cursor 使用 `--mode plan/ask`。请只在可信环境中使用。
|
|
369
378
|
|
|
@@ -414,4 +423,4 @@ Codex 的默认模型和推理强度可继续由 `~/.codex/config.toml` 管理
|
|
|
414
423
|
|
|
415
424
|
## 技术栈
|
|
416
425
|
|
|
417
|
-
TypeScript
|
|
426
|
+
TypeScript(发布前编译为 JavaScript,tsx 仅用于开发)/ Node.js >= 20 / AI SDK / Anthropic Claude Agent SDK(按需下载,仅启用 Claude Code 时安装)/ Cursor Agent CLI / Codex CLI / 飞书 WebSocket API / CardKit / 微信 iLink
|
package/bin/cccagent.mjs
CHANGED
|
@@ -1,14 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
3
4
|
import { createRequire } from "node:module";
|
|
4
5
|
import { dirname, join } from "node:path";
|
|
5
6
|
|
|
6
7
|
const require = createRequire(import.meta.url);
|
|
7
8
|
const pkgRoot = dirname(require.resolve("../package.json"));
|
|
8
|
-
const
|
|
9
|
-
|
|
9
|
+
const compiledEntry = join(pkgRoot, "dist", "deepccc-agent", "src", "cli.js");
|
|
10
|
+
let args;
|
|
11
|
+
if (existsSync(compiledEntry)) {
|
|
12
|
+
args = [compiledEntry, ...process.argv.slice(2)];
|
|
13
|
+
} else {
|
|
14
|
+
// Development checkout fallback. Published packages always contain dist/.
|
|
15
|
+
const cliTs = join(pkgRoot, "deepccc-agent", "src", "cli.ts");
|
|
16
|
+
const tsxCli = require.resolve("tsx/cli");
|
|
17
|
+
args = [tsxCli, cliTs, ...process.argv.slice(2)];
|
|
18
|
+
}
|
|
10
19
|
|
|
11
|
-
const result = spawnSync(process.execPath,
|
|
20
|
+
const result = spawnSync(process.execPath, args, {
|
|
12
21
|
stdio: "inherit",
|
|
13
22
|
cwd: process.cwd(),
|
|
14
23
|
env: process.env,
|
package/bin/chatccc.mjs
CHANGED
|
@@ -1,15 +1,24 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { spawnSync } from "node:child_process";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
3
4
|
import { createRequire } from "node:module";
|
|
4
5
|
import { dirname, join } from "node:path";
|
|
5
6
|
|
|
6
7
|
const require = createRequire(import.meta.url);
|
|
7
8
|
// 相对 bin/chatccc.mjs 解析 package.json,包根目录不依赖 cwd,也不会多退一级到 node_modules
|
|
8
9
|
const pkgRoot = dirname(require.resolve("../package.json"));
|
|
9
|
-
const
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
10
|
+
const compiledEntry = join(pkgRoot, "dist", "src", "index.js");
|
|
11
|
+
let args;
|
|
12
|
+
if (existsSync(compiledEntry)) {
|
|
13
|
+
args = [compiledEntry, ...process.argv.slice(2)];
|
|
14
|
+
} else {
|
|
15
|
+
// Development checkout fallback. Published packages always contain dist/.
|
|
16
|
+
const indexTs = join(pkgRoot, "src", "index.ts");
|
|
17
|
+
const tsxCli = require.resolve("tsx/cli");
|
|
18
|
+
args = [tsxCli, indexTs, ...process.argv.slice(2)];
|
|
19
|
+
}
|
|
20
|
+
|
|
21
|
+
const result = spawnSync(process.execPath, args, {
|
|
13
22
|
stdio: "inherit",
|
|
14
23
|
cwd: process.cwd(),
|
|
15
24
|
env: process.env,
|
|
@@ -21,4 +30,4 @@ if (code !== 0) {
|
|
|
21
30
|
console.error("chatccc 子进程已结束,服务没有在后台运行。");
|
|
22
31
|
}
|
|
23
32
|
|
|
24
|
-
process.exit(code);
|
|
33
|
+
process.exit(code);
|
package/config.sample.json
CHANGED
package/deepccc-agent/README.md
CHANGED
|
@@ -45,19 +45,19 @@ deepccc 的本地缓存优化实测命中率 **96.7%**,有效降低重复请
|
|
|
45
45
|
|
|
46
46
|
```bash
|
|
47
47
|
export DEEPCCC_API_KEY="sk-..."
|
|
48
|
-
export DEEPCCC_BASE_URL="https://api.deepseek.com/v1"
|
|
49
|
-
export DEEPCCC_MODEL="deepseek-v4-pro"
|
|
50
|
-
export DEEPCCC_STREAMING="true"
|
|
48
|
+
export DEEPCCC_BASE_URL="https://api.deepseek.com/v1"
|
|
49
|
+
export DEEPCCC_MODEL="deepseek-v4-pro"
|
|
50
|
+
export DEEPCCC_STREAMING="true"
|
|
51
51
|
```
|
|
52
52
|
|
|
53
53
|
Windows PowerShell:
|
|
54
54
|
|
|
55
55
|
```powershell
|
|
56
|
-
$env:DEEPCCC_API_KEY="sk-..."
|
|
57
|
-
$env:DEEPCCC_PROVIDER="openai"
|
|
58
|
-
$env:DEEPCCC_BASE_URL="https://api.deepseek.com/v1"
|
|
59
|
-
$env:DEEPCCC_MODEL="deepseek-v4-pro"
|
|
60
|
-
$env:DEEPCCC_STREAMING="true"
|
|
56
|
+
$env:DEEPCCC_API_KEY="sk-..."
|
|
57
|
+
$env:DEEPCCC_PROVIDER="openai"
|
|
58
|
+
$env:DEEPCCC_BASE_URL="https://api.deepseek.com/v1"
|
|
59
|
+
$env:DEEPCCC_MODEL="deepseek-v4-pro"
|
|
60
|
+
$env:DEEPCCC_STREAMING="true"
|
|
61
61
|
```
|
|
62
62
|
|
|
63
63
|
也兼容这些 DeepSeek 别名:
|
|
@@ -70,30 +70,35 @@ $env:DEEPCCC_STREAMING="true"
|
|
|
70
70
|
也可以创建 `~/.deepccc/config.json`:
|
|
71
71
|
|
|
72
72
|
```json
|
|
73
|
-
{
|
|
74
|
-
"provider": "openai",
|
|
75
|
-
"apiKey": "sk-...",
|
|
73
|
+
{
|
|
74
|
+
"provider": "openai",
|
|
75
|
+
"apiKey": "sk-...",
|
|
76
76
|
"baseURL": "https://api.deepseek.com/v1",
|
|
77
|
-
"model": "deepseek-v4-pro",
|
|
78
|
-
"effort": "",
|
|
79
|
-
"streaming": true,
|
|
77
|
+
"model": "deepseek-v4-pro",
|
|
78
|
+
"effort": "",
|
|
79
|
+
"streaming": true,
|
|
80
80
|
"rawStreamLogs": {
|
|
81
|
-
"enabled":
|
|
81
|
+
"enabled": true,
|
|
82
82
|
"maxBytesPerTurn": 1048576,
|
|
83
83
|
"retentionDays": 7,
|
|
84
84
|
"keepCompleted": false
|
|
85
85
|
}
|
|
86
|
-
}
|
|
87
|
-
```
|
|
88
|
-
|
|
89
|
-
`provider` 可选 `openai` 或 `anthropic`,默认 `openai`,也可以通过
|
|
90
|
-
`DEEPCCC_PROVIDER` 或命令行 `--provider` 覆盖:
|
|
91
|
-
|
|
92
|
-
- `openai` 使用 OpenAI-compatible Chat Completions 协议,兼容 DeepSeek、OpenAI、LiteLLM、vLLM 等服务。
|
|
93
|
-
- `anthropic` 使用 Anthropic Messages 协议。配置中的 `baseURL` 可以继续填写同一个服务基址;DeepCCC 会为不带 `/v1` 的地址自动补上 `/v1`。`effort` 是 OpenAI/DeepSeek 扩展参数,在 Anthropic 模式下不会发送。
|
|
94
|
-
|
|
95
|
-
`streaming` 控制主对话是否使用流式请求,默认 `true`;也可以通过
|
|
96
|
-
`DEEPCCC_STREAMING=true|false` 覆盖。关闭后,终端会在整条模型响应完成后一次性显示结果。
|
|
86
|
+
}
|
|
87
|
+
```
|
|
88
|
+
|
|
89
|
+
`provider` 可选 `openai` 或 `anthropic`,默认 `openai`,也可以通过
|
|
90
|
+
`DEEPCCC_PROVIDER` 或命令行 `--provider` 覆盖:
|
|
91
|
+
|
|
92
|
+
- `openai` 使用 OpenAI-compatible Chat Completions 协议,兼容 DeepSeek、OpenAI、LiteLLM、vLLM 等服务。
|
|
93
|
+
- `anthropic` 使用 Anthropic Messages 协议。配置中的 `baseURL` 可以继续填写同一个服务基址;DeepCCC 会为不带 `/v1` 的地址自动补上 `/v1`。`effort` 是 OpenAI/DeepSeek 扩展参数,在 Anthropic 模式下不会发送。
|
|
94
|
+
|
|
95
|
+
`streaming` 控制主对话是否使用流式请求,默认 `true`;也可以通过
|
|
96
|
+
`DEEPCCC_STREAMING=true|false` 覆盖。关闭后,终端会在整条模型响应完成后一次性显示结果。
|
|
97
|
+
|
|
98
|
+
`rawStreamLogs.enabled` 默认 `true`,通过 `DEEPCCC_RAW_STREAM_LOGS` 环境变量或配置 JSON 关闭。
|
|
99
|
+
开启时,每次对话的原始流按 gzip JSONL 落到 `~/.deepccc/raw-stream-logs/`,供
|
|
100
|
+
`session_search` 工具在会话被压缩后找回被压缩消息的精确原文(检索时设置
|
|
101
|
+
`include_raw_logs=true`)。关闭后,压缩后的旧消息原文将无法找回。
|
|
97
102
|
|
|
98
103
|
## 命令行交互
|
|
99
104
|
|
|
@@ -103,17 +108,17 @@ $env:DEEPCCC_STREAMING="true"
|
|
|
103
108
|
deepccc
|
|
104
109
|
```
|
|
105
110
|
|
|
106
|
-
指定其他模型或 OpenAI-compatible 接口:
|
|
111
|
+
指定其他模型或 OpenAI-compatible 接口:
|
|
112
|
+
|
|
113
|
+
```bash
|
|
114
|
+
deepccc --base-url https://api.openai.com/v1 --api-key "$OPENAI_API_KEY" --model gpt-4.1
|
|
115
|
+
```
|
|
116
|
+
|
|
117
|
+
使用 Anthropic Messages 协议(同样支持流式输出):
|
|
107
118
|
|
|
108
119
|
```bash
|
|
109
|
-
deepccc --base-url https://api.
|
|
110
|
-
```
|
|
111
|
-
|
|
112
|
-
使用 Anthropic Messages 协议(同样支持流式输出):
|
|
113
|
-
|
|
114
|
-
```bash
|
|
115
|
-
deepccc --provider anthropic --base-url https://api.example.com --api-key "$API_KEY" --model claude-sonnet-4-6
|
|
116
|
-
```
|
|
120
|
+
deepccc --provider anthropic --base-url https://api.example.com --api-key "$API_KEY" --model claude-sonnet-4-6
|
|
121
|
+
```
|
|
117
122
|
|
|
118
123
|
指定工作目录:
|
|
119
124
|
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
## macOS 命令行提示
|
|
2
|
-
|
|
3
|
-
你运行在 macOS 上。run_command 通过 zsh(POSIX shell)执行。引号遵循标准 POSIX 约定(与你在 bash 中已有的习惯相同):
|
|
4
|
-
|
|
5
|
-
- 双引号会被剥离并用于组合含空格参数:`echo "hello world"` 打印 `hello world`。
|
|
6
|
-
- 单引号是字面量引用字符:`'a b'` 是单个参数 `a b`。
|
|
7
|
-
- 反引号和 `$(...)` 执行命令替换;需要字面文本时请加引号。
|
|
8
|
-
- 路径使用 `/` 分隔符,`~` 展开为主目录。
|
|
1
|
+
## macOS 命令行提示
|
|
2
|
+
|
|
3
|
+
你运行在 macOS 上。run_command 通过 zsh(POSIX shell)执行。引号遵循标准 POSIX 约定(与你在 bash 中已有的习惯相同):
|
|
4
|
+
|
|
5
|
+
- 双引号会被剥离并用于组合含空格参数:`echo "hello world"` 打印 `hello world`。
|
|
6
|
+
- 单引号是字面量引用字符:`'a b'` 是单个参数 `a b`。
|
|
7
|
+
- 反引号和 `$(...)` 执行命令替换;需要字面文本时请加引号。
|
|
8
|
+
- 路径使用 `/` 分隔符,`~` 展开为主目录。
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
## Linux 命令行提示
|
|
2
|
-
|
|
3
|
-
你运行在 Linux 上。run_command 通过 POSIX shell(bash/sh)执行。引语遵循标准 POSIX 约定(与你在 bash 中已有的习惯相同):
|
|
4
|
-
|
|
5
|
-
- 双引号会被剥离并用于组合含空格参数:`echo "hello world"` 打印 `hello world`。
|
|
6
|
-
- 单引号是字面量引用字符:`'a b'` 是单个参数 `a b`。
|
|
7
|
-
- 反引号和 `$(...)` 执行命令替换;需要字面文本时请加引号。
|
|
8
|
-
- 路径使用 `/` 分隔符,`~` 展开为主目录。
|
|
1
|
+
## Linux 命令行提示
|
|
2
|
+
|
|
3
|
+
你运行在 Linux 上。run_command 通过 POSIX shell(bash/sh)执行。引语遵循标准 POSIX 约定(与你在 bash 中已有的习惯相同):
|
|
4
|
+
|
|
5
|
+
- 双引号会被剥离并用于组合含空格参数:`echo "hello world"` 打印 `hello world`。
|
|
6
|
+
- 单引号是字面量引用字符:`'a b'` 是单个参数 `a b`。
|
|
7
|
+
- 反引号和 `$(...)` 执行命令替换;需要字面文本时请加引号。
|
|
8
|
+
- 路径使用 `/` 分隔符,`~` 展开为主目录。
|
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
## Windows 命令行提示
|
|
2
|
-
|
|
3
|
-
你运行在 Windows 上。run_command 通过 cmd.exe 执行,而不是 bash。cmd 的引号规则与 bash 不同,容易踩坑:
|
|
4
|
-
|
|
5
|
-
- 双引号不会被剥离:`echo "hello world"` 会原样打印 `"hello world"`(含引号),`"a b" "c"` 会把带引号的字面量 `"a b"` 和 `"c"` 传给程序。
|
|
6
|
-
- 单引号在 cmd.exe 中不是引用字符:`'a b'` 会被解析成两个参数(`'a` 和 `b'`)。
|
|
7
|
-
- 多行或引号密集的内联脚本(python -c "...\n...", ssh host "bash -c '...'")在 cmd 引号规则下经常失败;把脚本写入临时文件再执行该文件。
|
|
8
|
-
- PowerShell 专用语法(Get-Item、2>$null、Select-Object)不可用;除非显式调用 powershell,否则 shell 是 cmd.exe。
|
|
9
|
-
- 传含空格参数时用双引号,并预期引号会原样到达程序;当目标接受文件输入时,优先把值写入文件。
|
|
10
|
-
- cmd.exe 跨盘 `cd` 需要 `/d`:`cd /d D:\repo` 才真正切换盘符和目录;裸 `cd D:\repo` 只打印目标路径、停留在原盘,后续命令会在错误的目录执行。
|
|
11
|
-
- npm 11.x 在 Windows 上忽略 `--prefix` 对 `npm publish` 的作用:`npm --prefix D:/repo publish` 发布的是**当前目录**的包,而不是 `--prefix` 指向的目录。务必先 `cd /d` 进入包目录,再执行 `npm publish`。
|
|
1
|
+
## Windows 命令行提示
|
|
2
|
+
|
|
3
|
+
你运行在 Windows 上。run_command 通过 cmd.exe 执行,而不是 bash。cmd 的引号规则与 bash 不同,容易踩坑:
|
|
4
|
+
|
|
5
|
+
- 双引号不会被剥离:`echo "hello world"` 会原样打印 `"hello world"`(含引号),`"a b" "c"` 会把带引号的字面量 `"a b"` 和 `"c"` 传给程序。
|
|
6
|
+
- 单引号在 cmd.exe 中不是引用字符:`'a b'` 会被解析成两个参数(`'a` 和 `b'`)。
|
|
7
|
+
- 多行或引号密集的内联脚本(python -c "...\n...", ssh host "bash -c '...'")在 cmd 引号规则下经常失败;把脚本写入临时文件再执行该文件。
|
|
8
|
+
- PowerShell 专用语法(Get-Item、2>$null、Select-Object)不可用;除非显式调用 powershell,否则 shell 是 cmd.exe。
|
|
9
|
+
- 传含空格参数时用双引号,并预期引号会原样到达程序;当目标接受文件输入时,优先把值写入文件。
|
|
10
|
+
- cmd.exe 跨盘 `cd` 需要 `/d`:`cd /d D:\repo` 才真正切换盘符和目录;裸 `cd D:\repo` 只打印目标路径、停留在原盘,后续命令会在错误的目录执行。
|
|
11
|
+
- npm 11.x 在 Windows 上忽略 `--prefix` 对 `npm publish` 的作用:`npm --prefix D:/repo publish` 发布的是**当前目录**的包,而不是 `--prefix` 指向的目录。务必先 `cd /d` 进入包目录,再执行 `npm publish`。
|
|
@@ -1,65 +1,65 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "deepccc",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "A lightweight coding agent with OpenAI-compatible and Anthropic Messages API support.",
|
|
5
|
-
"license": "Apache-2.0",
|
|
6
|
-
"keywords": [
|
|
7
|
-
"agent",
|
|
8
|
-
"deepseek",
|
|
9
|
-
"coding-agent",
|
|
10
|
-
"openai-compatible",
|
|
11
|
-
"anthropic",
|
|
12
|
-
"cli"
|
|
13
|
-
],
|
|
14
|
-
"repository": {
|
|
15
|
-
"type": "git",
|
|
16
|
-
"url": "git+https://github.com/wzj998/deepccc-agent.git"
|
|
17
|
-
},
|
|
18
|
-
"bugs": {
|
|
19
|
-
"url": "https://github.com/wzj998/deepccc-agent/issues"
|
|
20
|
-
},
|
|
21
|
-
"homepage": "https://github.com/wzj998/deepccc-agent#readme",
|
|
22
|
-
"type": "module",
|
|
23
|
-
"main": "./dist/index.js",
|
|
24
|
-
"types": "./dist/index.d.ts",
|
|
25
|
-
"exports": {
|
|
26
|
-
".": {
|
|
27
|
-
"types": "./dist/index.d.ts",
|
|
28
|
-
"import": "./dist/index.js"
|
|
29
|
-
}
|
|
30
|
-
},
|
|
31
|
-
"bin": {
|
|
32
|
-
"deepccc": "bin/deepccc.mjs"
|
|
33
|
-
},
|
|
34
|
-
"files": [
|
|
35
|
-
"dist/",
|
|
36
|
-
"bin/",
|
|
37
|
-
"docs/",
|
|
38
|
-
"os-prompts/",
|
|
39
|
-
"package.json",
|
|
40
|
-
"README.md",
|
|
41
|
-
"LICENSE"
|
|
42
|
-
],
|
|
43
|
-
"scripts": {
|
|
44
|
-
"build": "node node_modules/typescript/bin/tsc -p tsconfig.build.json",
|
|
45
|
-
"prepack": "node node_modules/typescript/bin/tsc -p tsconfig.build.json",
|
|
46
|
-
"test": "vitest run",
|
|
47
|
-
"test:watch": "vitest",
|
|
48
|
-
"typecheck": "node node_modules/typescript/bin/tsc --noEmit"
|
|
49
|
-
},
|
|
50
|
-
"dependencies": {
|
|
51
|
-
"@ai-sdk/anthropic": "^3.0.105",
|
|
52
|
-
"@ai-sdk/openai-compatible": "^2.0.47",
|
|
53
|
-
"@vscode/ripgrep": "^1.18.0",
|
|
54
|
-
"ai": "^6.0.184"
|
|
55
|
-
},
|
|
56
|
-
"devDependencies": {
|
|
57
|
-
"@types/node": "^20.0.0",
|
|
58
|
-
"tsx": "^4.0.0",
|
|
59
|
-
"typescript": "^5.0.0",
|
|
60
|
-
"vitest": "^3.2.4"
|
|
61
|
-
},
|
|
62
|
-
"engines": {
|
|
63
|
-
"node": ">=20"
|
|
64
|
-
}
|
|
65
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "deepccc",
|
|
3
|
+
"version": "0.1.23",
|
|
4
|
+
"description": "A lightweight coding agent with OpenAI-compatible and Anthropic Messages API support.",
|
|
5
|
+
"license": "Apache-2.0",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"agent",
|
|
8
|
+
"deepseek",
|
|
9
|
+
"coding-agent",
|
|
10
|
+
"openai-compatible",
|
|
11
|
+
"anthropic",
|
|
12
|
+
"cli"
|
|
13
|
+
],
|
|
14
|
+
"repository": {
|
|
15
|
+
"type": "git",
|
|
16
|
+
"url": "git+https://github.com/wzj998/deepccc-agent.git"
|
|
17
|
+
},
|
|
18
|
+
"bugs": {
|
|
19
|
+
"url": "https://github.com/wzj998/deepccc-agent/issues"
|
|
20
|
+
},
|
|
21
|
+
"homepage": "https://github.com/wzj998/deepccc-agent#readme",
|
|
22
|
+
"type": "module",
|
|
23
|
+
"main": "./dist/index.js",
|
|
24
|
+
"types": "./dist/index.d.ts",
|
|
25
|
+
"exports": {
|
|
26
|
+
".": {
|
|
27
|
+
"types": "./dist/index.d.ts",
|
|
28
|
+
"import": "./dist/index.js"
|
|
29
|
+
}
|
|
30
|
+
},
|
|
31
|
+
"bin": {
|
|
32
|
+
"deepccc": "bin/deepccc.mjs"
|
|
33
|
+
},
|
|
34
|
+
"files": [
|
|
35
|
+
"dist/",
|
|
36
|
+
"bin/",
|
|
37
|
+
"docs/",
|
|
38
|
+
"os-prompts/",
|
|
39
|
+
"package.json",
|
|
40
|
+
"README.md",
|
|
41
|
+
"LICENSE"
|
|
42
|
+
],
|
|
43
|
+
"scripts": {
|
|
44
|
+
"build": "node node_modules/typescript/bin/tsc -p tsconfig.build.json",
|
|
45
|
+
"prepack": "node node_modules/typescript/bin/tsc -p tsconfig.build.json",
|
|
46
|
+
"test": "vitest run",
|
|
47
|
+
"test:watch": "vitest",
|
|
48
|
+
"typecheck": "node node_modules/typescript/bin/tsc --noEmit"
|
|
49
|
+
},
|
|
50
|
+
"dependencies": {
|
|
51
|
+
"@ai-sdk/anthropic": "^3.0.105",
|
|
52
|
+
"@ai-sdk/openai-compatible": "^2.0.47",
|
|
53
|
+
"@vscode/ripgrep": "^1.18.0",
|
|
54
|
+
"ai": "^6.0.184"
|
|
55
|
+
},
|
|
56
|
+
"devDependencies": {
|
|
57
|
+
"@types/node": "^20.0.0",
|
|
58
|
+
"tsx": "^4.0.0",
|
|
59
|
+
"typescript": "^5.0.0",
|
|
60
|
+
"vitest": "^3.2.4"
|
|
61
|
+
},
|
|
62
|
+
"engines": {
|
|
63
|
+
"node": ">=20"
|
|
64
|
+
}
|
|
65
|
+
}
|