agentquad 0.3.0
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/LICENSE +21 -0
- package/README.md +318 -0
- package/dist-web/assets/index-CMaXwixo.js +1234 -0
- package/dist-web/assets/index-DBHApzV1.css +32 -0
- package/dist-web/assets/inter-cyrillic-400-normal-HOLc17fK.woff +0 -0
- package/dist-web/assets/inter-cyrillic-400-normal-obahsSVq.woff2 +0 -0
- package/dist-web/assets/inter-cyrillic-500-normal-BasfLYem.woff2 +0 -0
- package/dist-web/assets/inter-cyrillic-500-normal-CxZf_p3X.woff +0 -0
- package/dist-web/assets/inter-cyrillic-600-normal-4D_pXhcN.woff +0 -0
- package/dist-web/assets/inter-cyrillic-600-normal-CWCymEST.woff2 +0 -0
- package/dist-web/assets/inter-cyrillic-700-normal-CjBOestx.woff2 +0 -0
- package/dist-web/assets/inter-cyrillic-700-normal-DrXBdSj3.woff +0 -0
- package/dist-web/assets/inter-cyrillic-ext-400-normal-BQZuk6qB.woff2 +0 -0
- package/dist-web/assets/inter-cyrillic-ext-400-normal-DQukG94-.woff +0 -0
- package/dist-web/assets/inter-cyrillic-ext-500-normal-B0yAr1jD.woff2 +0 -0
- package/dist-web/assets/inter-cyrillic-ext-500-normal-BmqWE9Dz.woff +0 -0
- package/dist-web/assets/inter-cyrillic-ext-600-normal-Bcila6Z-.woff +0 -0
- package/dist-web/assets/inter-cyrillic-ext-600-normal-Dfes3d0z.woff2 +0 -0
- package/dist-web/assets/inter-cyrillic-ext-700-normal-BjwYoWNd.woff2 +0 -0
- package/dist-web/assets/inter-cyrillic-ext-700-normal-LO58E6JB.woff +0 -0
- package/dist-web/assets/inter-greek-400-normal-B4URO6DV.woff2 +0 -0
- package/dist-web/assets/inter-greek-400-normal-q2sYcFCs.woff +0 -0
- package/dist-web/assets/inter-greek-500-normal-BIZE56-Y.woff2 +0 -0
- package/dist-web/assets/inter-greek-500-normal-Xzm54t5V.woff +0 -0
- package/dist-web/assets/inter-greek-600-normal-BZpKdvQh.woff +0 -0
- package/dist-web/assets/inter-greek-600-normal-plRanbMR.woff2 +0 -0
- package/dist-web/assets/inter-greek-700-normal-BUv2fZ6O.woff +0 -0
- package/dist-web/assets/inter-greek-700-normal-C3JjAnD8.woff2 +0 -0
- package/dist-web/assets/inter-greek-ext-400-normal-DGGRlc-M.woff2 +0 -0
- package/dist-web/assets/inter-greek-ext-400-normal-KugGGMne.woff +0 -0
- package/dist-web/assets/inter-greek-ext-500-normal-2j5mBUwD.woff +0 -0
- package/dist-web/assets/inter-greek-ext-500-normal-C4iEst2y.woff2 +0 -0
- package/dist-web/assets/inter-greek-ext-600-normal-B8X0CLgF.woff +0 -0
- package/dist-web/assets/inter-greek-ext-600-normal-DRtmH8MT.woff2 +0 -0
- package/dist-web/assets/inter-greek-ext-700-normal-BoQ6DsYi.woff +0 -0
- package/dist-web/assets/inter-greek-ext-700-normal-qfdV9bQt.woff2 +0 -0
- package/dist-web/assets/inter-latin-400-normal-C38fXH4l.woff2 +0 -0
- package/dist-web/assets/inter-latin-400-normal-CyCys3Eg.woff +0 -0
- package/dist-web/assets/inter-latin-500-normal-BL9OpVg8.woff +0 -0
- package/dist-web/assets/inter-latin-500-normal-Cerq10X2.woff2 +0 -0
- package/dist-web/assets/inter-latin-600-normal-CiBQ2DWP.woff +0 -0
- package/dist-web/assets/inter-latin-600-normal-LgqL8muc.woff2 +0 -0
- package/dist-web/assets/inter-latin-700-normal-BLAVimhd.woff +0 -0
- package/dist-web/assets/inter-latin-700-normal-Yt3aPRUw.woff2 +0 -0
- package/dist-web/assets/inter-latin-ext-400-normal-77YHD8bZ.woff +0 -0
- package/dist-web/assets/inter-latin-ext-400-normal-C1nco2VV.woff2 +0 -0
- package/dist-web/assets/inter-latin-ext-500-normal-BxGbmqWO.woff +0 -0
- package/dist-web/assets/inter-latin-ext-500-normal-CV4jyFjo.woff2 +0 -0
- package/dist-web/assets/inter-latin-ext-600-normal-CIVaiw4L.woff +0 -0
- package/dist-web/assets/inter-latin-ext-600-normal-D2bJ5OIk.woff2 +0 -0
- package/dist-web/assets/inter-latin-ext-700-normal-Ca8adRJv.woff2 +0 -0
- package/dist-web/assets/inter-latin-ext-700-normal-TidjK2hL.woff +0 -0
- package/dist-web/assets/inter-vietnamese-400-normal-Bbgyi5SW.woff +0 -0
- package/dist-web/assets/inter-vietnamese-400-normal-DMkecbls.woff2 +0 -0
- package/dist-web/assets/inter-vietnamese-500-normal-DOriooB6.woff2 +0 -0
- package/dist-web/assets/inter-vietnamese-500-normal-mJboJaSs.woff +0 -0
- package/dist-web/assets/inter-vietnamese-600-normal-BuLX-rYi.woff +0 -0
- package/dist-web/assets/inter-vietnamese-600-normal-Cc8MFFhd.woff2 +0 -0
- package/dist-web/assets/inter-vietnamese-700-normal-BZaoP0fm.woff +0 -0
- package/dist-web/assets/inter-vietnamese-700-normal-DlLaEgI2.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-cyrillic-400-normal-BEIGL1Tu.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-cyrillic-400-normal-ugxPyKxw.woff +0 -0
- package/dist-web/assets/jetbrains-mono-cyrillic-700-normal-BWTpRfYl.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-cyrillic-700-normal-CEoEElIJ.woff +0 -0
- package/dist-web/assets/jetbrains-mono-greek-400-normal-B9oWc5Lo.woff +0 -0
- package/dist-web/assets/jetbrains-mono-greek-400-normal-C190GLew.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-greek-700-normal-C6CZE3T8.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-greek-700-normal-DEigVDxa.woff +0 -0
- package/dist-web/assets/jetbrains-mono-latin-400-normal-6-qcROiO.woff +0 -0
- package/dist-web/assets/jetbrains-mono-latin-400-normal-V6pRDFza.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-latin-700-normal-BYuf6tUa.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-latin-700-normal-D3wTyLJW.woff +0 -0
- package/dist-web/assets/jetbrains-mono-latin-ext-400-normal-Bc8Ftmh3.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-latin-ext-400-normal-fXTG6kC5.woff +0 -0
- package/dist-web/assets/jetbrains-mono-latin-ext-700-normal-CZipNAKV.woff2 +0 -0
- package/dist-web/assets/jetbrains-mono-latin-ext-700-normal-CxPITLHs.woff +0 -0
- package/dist-web/assets/jetbrains-mono-vietnamese-400-normal-CqNFfHCs.woff +0 -0
- package/dist-web/assets/jetbrains-mono-vietnamese-700-normal-BDLVIk2r.woff +0 -0
- package/dist-web/assets/logo-D4DDtU-r.png +0 -0
- package/dist-web/favicon.png +0 -0
- package/dist-web/index.html +14 -0
- package/package.json +88 -0
- package/src/ask-user-buttons.js +142 -0
- package/src/claude-transcript.js +203 -0
- package/src/cli.js +1040 -0
- package/src/codex-event-emitter.js +111 -0
- package/src/codex-prompt-detector.js +53 -0
- package/src/codex-sidecar.js +52 -0
- package/src/codex-transcript.js +74 -0
- package/src/config.js +692 -0
- package/src/data/claude-code-commands.json +52 -0
- package/src/db.js +1503 -0
- package/src/dispatch.js +13 -0
- package/src/export/todoMarkdown.js +246 -0
- package/src/first-run-wizard.js +82 -0
- package/src/git/gitStatus.js +139 -0
- package/src/lark-api-client.js +205 -0
- package/src/lark-bot.js +510 -0
- package/src/lark-card.js +88 -0
- package/src/lark-config-service.js +16 -0
- package/src/lark-event-client.js +107 -0
- package/src/lark-image.js +99 -0
- package/src/lark-markdown.js +51 -0
- package/src/lark-video.js +163 -0
- package/src/mcp/audit.js +34 -0
- package/src/mcp/server.js +83 -0
- package/src/mcp/tools/destructive/index.js +252 -0
- package/src/mcp/tools/openclaw/index.js +405 -0
- package/src/mcp/tools/read/index.js +269 -0
- package/src/mcp/tools/write/index.js +157 -0
- package/src/openclaw-bridge.js +566 -0
- package/src/openclaw-hook-installer.js +338 -0
- package/src/openclaw-hook.js +908 -0
- package/src/openclaw-wizard.js +2442 -0
- package/src/pending-questions.js +297 -0
- package/src/pricing.js +45 -0
- package/src/prompt-render.js +36 -0
- package/src/pty.js +992 -0
- package/src/routes/ai-terminal.js +1228 -0
- package/src/routes/git.js +89 -0
- package/src/routes/openclaw-hook.js +67 -0
- package/src/routes/openclaw-inbound.js +36 -0
- package/src/routes/recurringRules.js +80 -0
- package/src/routes/reports.js +50 -0
- package/src/routes/search.js +46 -0
- package/src/routes/stats.js +31 -0
- package/src/routes/telegram-config.js +152 -0
- package/src/routes/telegram-sync.js +221 -0
- package/src/routes/templates.js +63 -0
- package/src/routes/todos.js +649 -0
- package/src/routes/transcripts.js +75 -0
- package/src/routes/uploads.js +107 -0
- package/src/routes/wiki.js +142 -0
- package/src/search/fts.js +209 -0
- package/src/search/index.js +199 -0
- package/src/search/transcripts.js +148 -0
- package/src/server.js +1791 -0
- package/src/session-input-dispatcher.js +256 -0
- package/src/stats/markdown.js +42 -0
- package/src/stats/report.js +207 -0
- package/src/summarize.js +84 -0
- package/src/system-rules.js +52 -0
- package/src/telegram-bot.js +875 -0
- package/src/telegram-commands.js +149 -0
- package/src/telegram-config-service.js +84 -0
- package/src/telegram-image.js +95 -0
- package/src/telegram-loading-status.js +112 -0
- package/src/telegram-markdown.js +82 -0
- package/src/telegram-reaction-tracker.js +69 -0
- package/src/telegram-video.js +75 -0
- package/src/templates/claude-hooks/notify.js +103 -0
- package/src/transcript.js +305 -0
- package/src/transcripts/blocks.js +56 -0
- package/src/transcripts/index.js +222 -0
- package/src/transcripts/indexer.js +34 -0
- package/src/transcripts/matcher.js +70 -0
- package/src/transcripts/scanner.js +259 -0
- package/src/usage-footer.js +170 -0
- package/src/usage-parser.js +132 -0
- package/src/wiki/guide.js +44 -0
- package/src/wiki/index.js +232 -0
- package/src/wiki/redact.js +34 -0
- package/src/wiki/sources.js +122 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 LIUZHENHUA521
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
ADDED
|
@@ -0,0 +1,318 @@
|
|
|
1
|
+
# AgentQuad
|
|
2
|
+
|
|
3
|
+
四象限里的 AI 调度台 —— 每个待办都能跑一个 Claude/Codex 会话,全本地。
|
|
4
|
+
|
|
5
|
+
> 原名 `quadtodo`。`quadtodo` 命令保留为 CLI alias,老脚本不受影响。
|
|
6
|
+
|
|
7
|
+
GitHub 仓库:`git@github.com:LIUZHENHUA521/agentquad.git`
|
|
8
|
+
|
|
9
|
+
## 30 秒上手
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install -g agentquad
|
|
13
|
+
agentquad # 第一次会引导装 claude / codex 并选默认工具
|
|
14
|
+
```
|
|
15
|
+
|
|
16
|
+
> 浏览器自动打开 http://127.0.0.1:5677
|
|
17
|
+
> 跳过首跑向导:`AGENTQUAD_SKIP_WIZARD=1 agentquad` 或 `agentquad --no-wizard`
|
|
18
|
+
> 端口 5677 被占用时会自动尝试 5678。
|
|
19
|
+
|
|
20
|
+
> **平台**:仅支持 macOS / Linux;Windows 暂不支持,规划中。
|
|
21
|
+
|
|
22
|
+
## 从 quadtodo 升级
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npm uninstall -g quadtodo # 卸掉老包,避免 bin 冲突
|
|
26
|
+
npm install -g agentquad # 装新包,自带 `agentquad` + `quadtodo` 两个命令
|
|
27
|
+
agentquad start # 第一次启动会自动把 ~/.quadtodo/ 迁移到 ~/.agentquad/
|
|
28
|
+
```
|
|
29
|
+
|
|
30
|
+
- MCP 用户:跑 `agentquad mcp install` 把 `~/.claude/settings.json` 里的旧条目刷成新条目。
|
|
31
|
+
- OpenClaw 用户:旧 skill 目录 `~/.openclaw/skills/quadtodo-claw/` 不再使用,但仍是无害遗留;可手动 `rm -rf` 删除。如果你之前用 OpenClaw 桥接,跑 `agentquad openclaw bootstrap` 一次让 `~/.claude/settings.json` 的 hook 路径被刷新(如果数据目录从 `~/.quadtodo/` 迁过来,自动迁移会同时改写 settings.json 中带 `_quadtodoManaged` 标记的条目,跑 bootstrap 是兜底)。
|
|
32
|
+
- Telegram 用户:跑 `agentquad telegram:setup-menu` 刷新命令菜单。
|
|
33
|
+
- 想跳过自动迁移?设环境变量 `AGENTQUAD_SKIP_AUTO_MIGRATE=1`(库使用场景)。
|
|
34
|
+
|
|
35
|
+
## 依赖
|
|
36
|
+
|
|
37
|
+
- Node 20+
|
|
38
|
+
- npm 10+
|
|
39
|
+
- `claude` / `codex`(AI 终端必需)—— 没装的话跑 `agentquad install-tools --all`,或手动 `npm i -g @anthropic-ai/claude-code @openai/codex`
|
|
40
|
+
- macOS / Linux(Windows 暂不支持)
|
|
41
|
+
|
|
42
|
+
## 安装
|
|
43
|
+
|
|
44
|
+
### 从 npm 全局安装
|
|
45
|
+
|
|
46
|
+
```bash
|
|
47
|
+
npm install -g agentquad
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
首次安装后,建议先执行:
|
|
51
|
+
|
|
52
|
+
```bash
|
|
53
|
+
agentquad doctor
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
### 从源码安装
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
cd agentquad
|
|
60
|
+
npm run build:all # 一键装齐两层依赖 + 构建前端,产物在 dist-web/
|
|
61
|
+
npm link # 全局链接 `agentquad` 命令
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
更细的脚本(按需用):
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npm run setup # 只装依赖:根目录 + web/
|
|
68
|
+
npm run build # 只 build 前端(前提是 web/node_modules 已装好)
|
|
69
|
+
npm run clean # 删除 node_modules / dist-web / web/dist
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
## 快速开始
|
|
73
|
+
|
|
74
|
+
```bash
|
|
75
|
+
agentquad doctor # 检查环境是否就绪
|
|
76
|
+
agentquad start # 启动服务并自动打开浏览器
|
|
77
|
+
# → http://127.0.0.1:5677
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
停止:在前台会话按 Ctrl+C,或在另一个终端里 `agentquad stop`。
|
|
81
|
+
|
|
82
|
+
## 给 Claude Code 当知识库用(MCP)
|
|
83
|
+
|
|
84
|
+
AgentQuad 内置了一个 MCP Streamable HTTP 服务(`POST /mcp`),17 个工具覆盖 搜索 / 增删改 / 合并 / 归档 / 批量操作 / AI 会话日志检索。外部 Claude Code session 配上之后,可以用自然语言"帮我清理重复的 todo"、"最近一周我在忙啥"、"合并这三条关于登录的 todo"。
|
|
85
|
+
|
|
86
|
+
一键接入:
|
|
87
|
+
|
|
88
|
+
```bash
|
|
89
|
+
agentquad mcp install # 把 AgentQuad 写进 ~/.claude/settings.json 的 mcpServers
|
|
90
|
+
agentquad mcp status # 健康检查
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
完整工具清单 + preview/confirm 安全模型 + ⌘K 面板说明:**[docs/MCP.md](docs/MCP.md)**。
|
|
94
|
+
|
|
95
|
+
## 通过 Telegram supergroup 使用(每任务一个 Topic)⭐ 推荐
|
|
96
|
+
|
|
97
|
+
AgentQuad 直接跑一个 Telegram bot,每开一个 task 自动建一个 **Forum Topic**,对话物理隔离;
|
|
98
|
+
内容直接从 Claude Code jsonl 日志读(干净,无 spinner / ANSI 噪声);任务结束 close topic + 改名 ✅。
|
|
99
|
+
|
|
100
|
+
详见 **[docs/TELEGRAM.md](docs/TELEGRAM.md)**。
|
|
101
|
+
|
|
102
|
+
## 通过 OpenClaw 在微信里使用(双向)
|
|
103
|
+
|
|
104
|
+
把 AgentQuad 接到 [OpenClaw](https://openclaw.ai/) 的微信渠道,实现"在微信里跟 AI 助理说一句『帮我做:X』就自动建 todo + 启动 Claude Code,AI 卡到决策点又能在微信里推给你选"的工作流。
|
|
105
|
+
|
|
106
|
+
详见 **[docs/OPENCLAW.md](docs/OPENCLAW.md)** —— 5 步启用清单 + P0 端到端验证表。
|
|
107
|
+
|
|
108
|
+
## 手机访问(Tailscale 私网)
|
|
109
|
+
|
|
110
|
+
想在外面用手机继续看待办 / 接 AI 会话?详见 **[docs/MOBILE.md](docs/MOBILE.md)** —— 基于 Tailscale 私有 mesh VPN,不暴露公网,配置 5 分钟。
|
|
111
|
+
|
|
112
|
+
> **安全提醒**:AgentQuad 内置 shell + AI 终端能力,**绝对不要**直接暴露到公网。Tailscale 私网是推荐的访问方式。
|
|
113
|
+
|
|
114
|
+
快速上手:
|
|
115
|
+
|
|
116
|
+
```bash
|
|
117
|
+
# 一次性把监听地址改成 0.0.0.0(否则 Tailscale 网卡也不可达)
|
|
118
|
+
agentquad config set host 0.0.0.0
|
|
119
|
+
agentquad start
|
|
120
|
+
# 或者:agentquad start --expose
|
|
121
|
+
```
|
|
122
|
+
|
|
123
|
+
## 命令
|
|
124
|
+
|
|
125
|
+
| 命令 | 作用 |
|
|
126
|
+
|---|---|
|
|
127
|
+
| `agentquad`(无参数) | 等价于 `agentquad start`,首次启动会引导装 AI 工具 |
|
|
128
|
+
| `agentquad start [--port 5677] [--host 0.0.0.0] [--expose] [--no-open] [--cwd <path>] [--no-wizard]` | 启动服务(`--expose` = `--host 0.0.0.0`,`--no-wizard` 跳过首跑向导) |
|
|
129
|
+
| `agentquad stop` | 停止服务(SIGTERM 3 秒后 SIGKILL) |
|
|
130
|
+
| `agentquad status` | 查看运行状态 + 活跃会话数 |
|
|
131
|
+
| `agentquad doctor` | 环境自检 |
|
|
132
|
+
| `agentquad config get <key>` | 读配置项 |
|
|
133
|
+
| `agentquad config set <key> <value>` | 写配置项 |
|
|
134
|
+
| `agentquad config list` | 打印整份配置 |
|
|
135
|
+
| `agentquad hook status` | 查 Claude Code 里 AgentQuad hook 装没装 |
|
|
136
|
+
| `agentquad hook install` | 安装 hook 到 `~/.claude/settings.json`(一般 `start` 会自动装) |
|
|
137
|
+
| `agentquad hook uninstall [--no-marker]` | 删 AgentQuad 装的 hook;默认写 marker 让下次 `start` 不偷偷装回 |
|
|
138
|
+
| `agentquad hook bootstrap` | 「删过又想恢复」:忽略 marker 强装回去 |
|
|
139
|
+
|
|
140
|
+
## 配置
|
|
141
|
+
|
|
142
|
+
配置文件:`~/.agentquad/config.json`
|
|
143
|
+
|
|
144
|
+
```json
|
|
145
|
+
{
|
|
146
|
+
"port": 5677,
|
|
147
|
+
"host": "127.0.0.1",
|
|
148
|
+
"defaultTool": "claude",
|
|
149
|
+
"defaultCwd": "~",
|
|
150
|
+
"tools": {
|
|
151
|
+
"claude": { "command": "claude", "bin": "claude", "args": [] },
|
|
152
|
+
"codex": { "command": "codex", "bin": "codex", "args": [] }
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
```
|
|
156
|
+
|
|
157
|
+
示例:
|
|
158
|
+
|
|
159
|
+
```bash
|
|
160
|
+
agentquad config set port 6000
|
|
161
|
+
agentquad config set tools.claude.command claude-w
|
|
162
|
+
agentquad config set tools.codex.command codex-w
|
|
163
|
+
agentquad config set tools.claude.bin /usr/local/bin/claude
|
|
164
|
+
agentquad config set tools.codex.bin /opt/homebrew/bin/codex
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
说明:
|
|
168
|
+
|
|
169
|
+
- `tools.<tool>.command`:启动命令名,适合 `claude-w` / `codex-w` 这种公司内封装命令
|
|
170
|
+
- `tools.<tool>.bin`:绝对路径覆盖,优先级高于 `command`
|
|
171
|
+
|
|
172
|
+
## 数据存储
|
|
173
|
+
|
|
174
|
+
```
|
|
175
|
+
~/.agentquad/
|
|
176
|
+
├── config.json
|
|
177
|
+
├── data.db
|
|
178
|
+
├── agentquad.pid
|
|
179
|
+
└── logs/
|
|
180
|
+
└── ai-*.log
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
导出/迁移:整个 `~/.agentquad/` 是一个普通目录,tar 打包即可。
|
|
184
|
+
|
|
185
|
+
## 统计与周/月报告
|
|
186
|
+
|
|
187
|
+
顶栏 📊 按钮打开"统计"抽屉:展示所选时段的 AI 活跃时长、墙钟时长、token 消耗、成本估算与 Top 10 任务,支持复制/下载 Markdown 周报。
|
|
188
|
+
|
|
189
|
+
单价默认内置,也可在 `~/.agentquad/config.json` 的 `pricing` 段里 override:
|
|
190
|
+
|
|
191
|
+
```json
|
|
192
|
+
"pricing": {
|
|
193
|
+
"models": {
|
|
194
|
+
"claude-opus-4-*": { "input": 15.00, "output": 75.00, "cacheRead": 1.50, "cacheWrite": 18.75 }
|
|
195
|
+
},
|
|
196
|
+
"cnyRate": 7.2
|
|
197
|
+
}
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
活跃时长的空闲阈值(默认 120s)可通过 `stats.idleThresholdMs` 调整。
|
|
201
|
+
|
|
202
|
+
## 迁移到另一台电脑
|
|
203
|
+
|
|
204
|
+
```bash
|
|
205
|
+
# 在源机器
|
|
206
|
+
git clone <this-repo-url> ~/code/agentquad
|
|
207
|
+
cd ~/code/agentquad/agentquad
|
|
208
|
+
npm install
|
|
209
|
+
cd web && npm install && npm run build && cd ..
|
|
210
|
+
npm link
|
|
211
|
+
|
|
212
|
+
# 如果要带走现有 todo 数据:
|
|
213
|
+
scp -r ~/.agentquad target-host:~/
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
## 从零开始的目录结构
|
|
217
|
+
|
|
218
|
+
```
|
|
219
|
+
agentquad/
|
|
220
|
+
├── package.json # 后端 deps: express / ws / node-pty / better-sqlite3
|
|
221
|
+
├── src/
|
|
222
|
+
│ ├── cli.js # commander 入口
|
|
223
|
+
│ ├── config.js # ~/.agentquad/config.json 读写
|
|
224
|
+
│ ├── db.js # better-sqlite3 包装
|
|
225
|
+
│ ├── pty.js # PtyManager(node-pty 会话 Map)
|
|
226
|
+
│ ├── server.js # Express + ws + 路由组装
|
|
227
|
+
│ └── routes/
|
|
228
|
+
│ ├── todos.js
|
|
229
|
+
│ └── ai-terminal.js
|
|
230
|
+
└── web/
|
|
231
|
+
├── package.json # 前端独立:vite + react + antd + dnd-kit + xterm
|
|
232
|
+
└── src/
|
|
233
|
+
├── main.tsx
|
|
234
|
+
├── TodoManage.tsx # 四象限看板主页
|
|
235
|
+
├── TodoManage.css
|
|
236
|
+
├── AiTerminalMini.tsx
|
|
237
|
+
├── SettingsDrawer.tsx
|
|
238
|
+
└── api.ts
|
|
239
|
+
```
|
|
240
|
+
|
|
241
|
+
|
|
242
|
+
## 故障排除
|
|
243
|
+
|
|
244
|
+
- **端口占用**:`agentquad config set port <new>`
|
|
245
|
+
- **`claude` 找不到**:`agentquad config set tools.claude.bin /full/path/to/claude`
|
|
246
|
+
- **`node-pty` 安装报错**:通常是 node-gyp 找不到 C++ 工具链。macOS 装 Xcode Command Line Tools (`xcode-select --install`)
|
|
247
|
+
- **终端显示 `session_not_found`**:会话已超时(30 分钟已结束的会话会被清理),重新点"启动 AI 终端"
|
|
248
|
+
- **Live 终端排版乱(横线 / 中文混排 / 状态栏对不齐)**:默认情况下,AgentQuad 给 PTY 子进程注入 `LANG=LC_CTYPE=en_US.UTF-8`,让 wcwidth 与 xterm.js (Unicode 11) 对齐。如果某些 TUI 你必须保留 CJK locale,设环境变量 `AGENTQUAD_KEEP_CJK_LOCALE=1` 重启 agentquad 即可还原原行为。
|
|
249
|
+
- **Multi-agent Pipeline 功能已移除**:之前的 Pipeline(coder ↔ reviewer 循环)特性已下线。升级后下次启动会自动 DROP `pipeline_runs` / `pipeline_templates` 两张表。仓库根目录里如果有遗留的 `.quadtodo-worktrees/` 目录(worktree 临时目录),可手动 `rm -rf .quadtodo-worktrees/` 清理;`.gitignore` 里的 `.quadtodo-worktrees/` 行可保留也可删除(保留无副作用)。
|
|
250
|
+
- **0.3.0 升级提示**:从 0.2.x 升上来后,pid 文件格式从纯数字改为 JSON。旧脚本里如果有 `kill $(cat ~/.agentquad/agentquad.pid)` 会失败 —— 请改用 `agentquad stop`。
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
|
|
254
|
+
todo
|
|
255
|
+
请完成以下待办任务:
|
|
256
|
+
|
|
257
|
+
标题: 后续工作
|
|
258
|
+
描述: 一、提升 AI 协作效率(高价值)
|
|
259
|
+
|
|
260
|
+
1. 会话对话增强
|
|
261
|
+
- 在待办详情里查看每个会话的完整历史(现在 log 落盘了但没 UI 查看),支持搜索 / 关键字高亮
|
|
262
|
+
- 一键从某个历史会话 fork 出新会话(基于已有上下文继续问不同方向)
|
|
263
|
+
- 会话间对比视图(同一任务用 Claude vs Codex 分别跑,并排看输出差异)
|
|
264
|
+
2. Prompt 模板库
|
|
265
|
+
- 把"脑爆模式"抽象成 prompt 预设系统:Bug 修复模板、重构模板、写测试模板、代码评审模板...
|
|
266
|
+
- 支持变量占位符({{title}} / {{workDir}} / {{lastCommitDiff}})
|
|
267
|
+
- 每个待办可选模板组合叠加
|
|
268
|
+
3. 多会话编排
|
|
269
|
+
- 一个待办拆成多个子会话(规划 → 实现 → 测试 → review),可串行/并行触发
|
|
270
|
+
- 上一个会话的产出自动作为下一个的 prompt 前缀
|
|
271
|
+
|
|
272
|
+
二、状态感知 & 通知(中价值)
|
|
273
|
+
|
|
274
|
+
4. 桌面通知 + 系统托盘
|
|
275
|
+
- pending_confirm 状态触发 macOS 原生通知
|
|
276
|
+
- 菜单栏图标显示"有 N 个待交互会话"徽标
|
|
277
|
+
5. 静默工作时长统计
|
|
278
|
+
- 记录每个会话实际运行时长、token 消耗估算(解析 Claude 输出里的 usage)
|
|
279
|
+
- 每周/每月报告:我花最多时间的任务 Top10、AI 帮我完成了 X 小时工作
|
|
280
|
+
6. 智能暂停检测
|
|
281
|
+
- 检测 AI 输出 N 分钟无变化 → 自动判定"卡住了"并通知
|
|
282
|
+
- 区分"在思考"和"真的卡了"(有 spinner / 没 spinner)
|
|
283
|
+
|
|
284
|
+
三、Git & 项目集成(高价值,crazyCombo 多仓库场景尤其适合)
|
|
285
|
+
|
|
286
|
+
7. Git 状态面板
|
|
287
|
+
- 每个待办关联 workDir,卡片上直接显示:当前分支、未提交文件数、落后/领先 origin 情况
|
|
288
|
+
- 一键"开始任务":自动 checkout 新分支、命名来自 todo 标题
|
|
289
|
+
8. 完成闭环
|
|
290
|
+
- AI 会话跑完后,自动 git diff --stat 展示到卡片上
|
|
291
|
+
- 一键生成 commit message(调 AI 基于 diff)
|
|
292
|
+
- 一键创建 PR(集成 gh CLI)
|
|
293
|
+
9. 提交记录反向关联
|
|
294
|
+
- 扫描仓库最近 commit,自动匹配是哪个 todo 完成的(靠分支名/关键字)
|
|
295
|
+
|
|
296
|
+
四、任务管理体验(中低价值但体验好)
|
|
297
|
+
|
|
298
|
+
10. 快捷键系统:n 新建、1-4 切象限、⌘K 命令面板、e 编辑
|
|
299
|
+
11. 子任务 / Checklist:一个 todo 里可以有勾选列表
|
|
300
|
+
12. 标签系统:# 标签筛选,颜色区分
|
|
301
|
+
13. 重复任务:每日/每周自动生成(如"每日 standup")
|
|
302
|
+
14. 归档 & 回顾:done 超过 N 天自动归档到独立视图,避免列表臃肿
|
|
303
|
+
15. 拖拽排序持久化 + 看板快照:每天结束自动存快照,能回看"昨天的看板长啥样"
|
|
304
|
+
|
|
305
|
+
五、数据与知识沉淀(长期价值)
|
|
306
|
+
|
|
307
|
+
16. 全文检索
|
|
308
|
+
- 搜索词同时命中:todo 标题、描述、评论、AI 会话输出
|
|
309
|
+
- 这是相对独有的价值 —— 你的 AI 对话历史在本地,可被检索
|
|
310
|
+
17. "可复用经验"抽取
|
|
311
|
+
- 会话完成后,AI 自动生成一个摘要 + "下次遇到类似问题可复用的知识点"
|
|
312
|
+
- 沉淀到一个知识库 tab,下次新建相似 todo 时推荐相关经验
|
|
313
|
+
18. 导出 / 分享
|
|
314
|
+
- 一个待办 + 其会话输出 → 导出为 Markdown(用于写周报、故障复盘)
|
|
315
|
+
- 飞书文档直推(你本身就有 lark skills)
|
|
316
|
+
|
|
317
|
+
请先理解需求和当前项目上下文,再开始执行。
|
|
318
|
+
完成后请给出变更摘要、验证结果,以及仍需我确认的事项。
|