ai-board 0.1.0a2__tar.gz

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.
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 ai-board contributors
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.
@@ -0,0 +1,278 @@
1
+ Metadata-Version: 2.4
2
+ Name: ai-board
3
+ Version: 0.1.0a2
4
+ Summary: A lightweight local planning board CLI for AI-assisted projects.
5
+ Author: ai-board contributors
6
+ License-Expression: MIT
7
+ Keywords: ai,agents,planning,cli,kanban
8
+ Classifier: Development Status :: 3 - Alpha
9
+ Classifier: Environment :: Console
10
+ Classifier: Intended Audience :: Developers
11
+ Classifier: Programming Language :: Python :: 3
12
+ Classifier: Programming Language :: Python :: 3 :: Only
13
+ Requires-Python: >=3.10
14
+ Description-Content-Type: text/markdown
15
+ License-File: LICENSE
16
+ Provides-Extra: dev
17
+ Requires-Dist: build; extra == "dev"
18
+ Requires-Dist: ruff; extra == "dev"
19
+ Dynamic: license-file
20
+
21
+ # ai-board
22
+
23
+ [English](./README_en.md) | 中文
24
+
25
+ <p align="center">
26
+ <img alt="Python 3.10+" src="https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python&logoColor=white">
27
+ <img alt="CLI ai-board" src="https://img.shields.io/badge/CLI-ai--board-0B1F4D">
28
+ <img alt="License MIT" src="https://img.shields.io/badge/License-MIT-green">
29
+ </p>
30
+
31
+ ![ai-board logo](./assets/ai-board.png)
32
+
33
+ 给 AI agent 用的本地计划看板。你跟 AI 对话提需求,它帮你排期、跟踪、防冲突,而不是直接开改。
34
+
35
+ 当前版本:`v0.1.0-alpha.2`,仍是 alpha,但已经支持从 PyPI 安装。
36
+
37
+ ## 为什么做这个
38
+
39
+ 用 AI 写代码最大的坑不是代码质量,是上下文管理。
40
+
41
+ 你跟 AI 说"帮我改一下这个",它大概率会立刻动手。改完了你又提一个,它又立刻改。几个来回之后,你问"之前那个规划做到哪了"——它已经忘了,因为临时需求把之前的上下文冲掉了。
42
+
43
+ `ai-board` 想解决的就是这个:AI 不会因为你的临时需求丢掉之前的规划,所有需求统一进排期。紧急 bug 当然可以插队,高优先级优先处理,但不会打乱整体节奏。
44
+
45
+ 初始化项目时,`ai-board` 还会拉起一套开发规范文档——项目方向、当前状态、决策记录、开发规则。这不是重点,但确实帮项目从第一天就有据可查。
46
+
47
+ ## 怎么跟 AI 用
48
+
49
+ `ai-board` 主要是给 AI 用的,不需要你自己敲一堆命令。你要做的是跟 AI 对话,它来执行。
50
+
51
+ ### 开始新项目
52
+
53
+ 跟 AI 说:
54
+
55
+ ```text
56
+ 用 ai-board 接手这个项目,先规划一下方向
57
+ ```
58
+
59
+ AI 会运行 `ai-board onboard --init-if-missing`,然后问你项目目标、技术栈、初版范围。你们对齐之后,它会把方向和计划写进文档,再把具体任务排进看板。不是上来就写代码,是先把"做什么、不做什么"定下来。
60
+
61
+ ### 接手已有项目
62
+
63
+ 跟 AI 说:
64
+
65
+ ```text
66
+ 用 ai-board 接管这个项目
67
+ ```
68
+
69
+ AI 会扫描项目结构,梳理当前状态,生成项目方向、技术栈、风险和下一步建议等文档。梳理完之后,后续所有开发工作都通过看板管理,不再靠聊天记录猜进度。
70
+
71
+ ### 提需求
72
+
73
+ 日常开发中最常见的场景。以前你可能会说:
74
+
75
+ ```text
76
+ 这里有个 bug,帮我修一下
77
+ ```
78
+
79
+ 或者:
80
+
81
+ ```text
82
+ 把这个页面改成 xxx 样式
83
+ ```
84
+
85
+ AI 会直接动手改。改完你又提一个,它又改。几个来回之后,之前的规划就丢了。
86
+
87
+ 现在你这样说:
88
+
89
+ ```text
90
+ 这里有个 bug,加到看板里
91
+ ```
92
+
93
+ ```text
94
+ 把这个页面改成 xxx 样式,排进下一批
95
+ ```
96
+
97
+ AI 会把需求排进看板,而不是立刻动手。紧急的 bug 会标高优先级优先处理,但不会丢掉之前的任务。你随时可以问"现在在做什么",AI 给你看的是看板状态,不是靠聊天记录猜的。
98
+
99
+ ## 安装
100
+
101
+ 最推荐的方式:把安装和初始化都交给 AI。给它一句话:
102
+
103
+ ```text
104
+ 请安装 ai-board 并接手当前项目:
105
+ 1. 优先用 pipx install ai-board 安装用户级 CLI。
106
+ 2. 如果 pipx 不可用,再用 uv tool install ai-board。
107
+ 3. 安装后运行 ai-board onboard --init-if-missing。
108
+ 4. 如需 agent skill,请从 https://github.com/dev-null-sec/ai-board.git 取 skills/ai-board/SKILL.md 放到对应 agent 的 skills 目录。
109
+ ```
110
+
111
+ AI 会检查环境、装 CLI、放 skill 文件、读版本匹配的使用说明。全程不用你手动操作。
112
+
113
+ 如果你想自己装:
114
+
115
+ ```powershell
116
+ pipx install ai-board
117
+ ```
118
+
119
+ 没有 `pipx` 但有 `uv`:
120
+
121
+ ```powershell
122
+ uv tool install ai-board
123
+ ```
124
+
125
+ 想安装 GitHub 上的最新源码版时,再使用:
126
+
127
+ ```powershell
128
+ pipx install "git+https://github.com/dev-null-sec/ai-board.git"
129
+ ```
130
+
131
+ ## 命令速查
132
+
133
+ 大部分时候你不需要敲命令,跟 AI 对话就行。但如果你想看状态或手动操作:
134
+
135
+ ```powershell
136
+ ai-board status # 当前任务分布
137
+ ai-board show T-0001 # 查看某个任务详情
138
+ ai-board render # 重新生成 Markdown 看板
139
+ ai-board lang zh-CN # 查看中文输出的环境变量设置方式
140
+ ```
141
+
142
+ 完整命令参考:`ai-board --help` 或 `ai-board skills get core --full`。
143
+
144
+ ## 工作方式
145
+
146
+ 整体流程很简单:
147
+
148
+ ```text
149
+ 你 / AI 提需求
150
+
151
+ ai-board CLI 写入 .ai-board/board.json
152
+
153
+ render 生成 Markdown 看板
154
+
155
+ AI / 人读取状态,继续推进
156
+ ```
157
+
158
+ | 设计点 | 说明 |
159
+ | --- | --- |
160
+ | 真相源 | `.ai-board/board.json` 是唯一写入源,Markdown 看板只是生成视图。 |
161
+ | 看板渲染 | `add`、`schedule`、`start`、`complete`、`archive` 等 CLI 写操作会自动刷新 Markdown;`ai-board render` 是手动修复和配置变更后的兜底命令。 |
162
+ | 多 agent | 重叠文件范围默认被拦住;这是路径级防撞,不是理解代码语义的万能锁。 |
163
+ | 项目配置 | `.ai-board/config.json` 可设置默认语言、默认泳道、默认 agent 类型和默认租约。 |
164
+ | scope lock | 默认 240 分钟租约;可通过项目配置调整;任务 `complete` 后释放 agent 身份,`archive` 把已验收任务移出当前看板。 |
165
+ | 多泳道 | 一个看板可以分平台开发、课程内容、文档等泳道,但只有一个真相源。 |
166
+ | 简单依赖 | 任务可以声明依赖,`start` 默认会挡住依赖未完成的任务;复杂依赖图暂时不做。 |
167
+ | 自检 | `doctor` 检查 board、生成文档、事件日志、scope 冲突和 agent 状态。 |
168
+ | 历史 | `history` 从 `.ai-board/events.jsonl` 查看任务变更记录。 |
169
+ | 生命周期 | `inbox → scheduled → active → done → archived`。 |
170
+
171
+ 默认生成中文看板。如果项目主要使用英文,可以把 `.ai-board/config.json` 里的 `language` 改成 `en-US`,再运行 `ai-board render`。正常通过 CLI 改任务时不需要手动 render;只有手改配置、拉取代码后怀疑生成视图过期,或 `doctor` 提示 stale 时才需要运行。
172
+
173
+ `doctor` 的轻量业务检查可以通过 `.ai-board/config.json` 调整,例如 active 任务多久算停滞、agent lease 剩多久开始提醒、哪些 scope 算过宽。
174
+
175
+ CLI 默认输出英文,方便 AI、脚本和 CI 稳定使用。人手动看时可以用 `AI_BOARD_LANG=zh-CN` 或 `ai-board --lang zh-CN status` 切到中文;不想记环境变量就运行 `ai-board lang zh-CN`。
176
+
177
+ 如果要改安装口径、接手流程或命令规则,优先改 `ai-board skills get core` 对应的内置指南;仓库里的 `skills/ai-board/SKILL.md` 只负责发现入口。
178
+
179
+ ## FAQ
180
+
181
+ <details>
182
+ <summary><strong>ai-board 会保存 AI 的聊天记录或上下文吗?</strong></summary>
183
+
184
+ 不是。`ai-board` 不会把 AI 脑子里的上下文原样保存下来,也不会假装恢复一整段对话记忆。
185
+
186
+ 它保存的是项目推进需要稳定存在的东西:需求、优先级、状态、负责人、scope、验收结果、遗留问题。换句话说,聊天可以断,模型可以换,但项目计划不应该只活在聊天记录里。
187
+
188
+ </details>
189
+
190
+ <details>
191
+ <summary><strong>Markdown 看板可以手动改吗?</strong></summary>
192
+
193
+ 不建议。真正存数据的是 `.ai-board/board.json`,它更像这个小工具的本地数据库。`docs/计划看板.md` 和 `docs/归档计划看板.md` 只是从 JSON 渲染出来的阅读视图,给人和 AI 快速扫一眼用。
194
+
195
+ 如果你手改 Markdown,下一次 CLI 写操作或 `ai-board render` 可能会覆盖它。要改任务状态、负责人、scope、验收结果,走 CLI。
196
+
197
+ </details>
198
+
199
+ <details>
200
+ <summary><strong>为什么要封装成 CLI,而不是只靠文档约束?</strong></summary>
201
+
202
+ 只靠文档约束,AI 很容易漏步骤:忘了排期、忘了写 scope、忘了归档,或者两个 agent 同时改同一片文件。
203
+
204
+ CLI 的价值不是“更高级”,而是把这些动作变成固定入口:`add`、`schedule`、`start`、`complete`、`archive`。该拦的冲突由工具拦,该写入的状态由工具写,不全靠 AI 自觉。
205
+
206
+ </details>
207
+
208
+ <details>
209
+ <summary><strong>它能替代上下文吗?</strong></summary>
210
+
211
+ 不能,也不该替代。
212
+
213
+ 上下文适合讨论细节、解释取舍、临时判断;`ai-board` 适合保存那些不能丢的项目事实。两者配合起来,AI 接手项目时先看 board 和 docs,再根据当前对话继续推进,而不是只靠“我好像记得之前说过什么”。
214
+
215
+ </details>
216
+
217
+ <details>
218
+ <summary><strong>init 会覆盖我已有的项目文档吗?</strong></summary>
219
+
220
+ 默认不会。`ai-board init` 会创建 `AGENTS.md`、`docs/当前状态.md`、`docs/开发规范.md` 等 AI 原生开发文档;如果同名文件已经存在,默认写成 `.example`,避免直接盖掉你的内容。
221
+
222
+ </details>
223
+
224
+ <details>
225
+ <summary><strong>只能给 Codex 用吗?</strong></summary>
226
+
227
+ 不是。仓库里带了 Codex 可读的 skill stub,因为我自己主要在这个环境里用;但 CLI 本身是普通命令行工具。Claude、其他 agent,甚至人手动敲命令都能用。关键是让 agent 先读 `ai-board skills get core`,按当前版本的规则操作。
228
+
229
+ </details>
230
+
231
+ <details>
232
+ <summary><strong>多 agent 防冲突能防到什么程度?</strong></summary>
233
+
234
+ 它能防最常见的路径重叠:比如一个 agent 已经锁了 `src/api`,另一个 agent 默认不能再启动 `src/api/handler.py` 的任务。
235
+
236
+ 它不会理解“两个不同文件其实有业务耦合”,也不是跨机器协作锁。需要真正并行开发时,scope 还是要写窄,任务边界也要说清楚。
237
+
238
+ </details>
239
+
240
+ ## 项目结构
241
+
242
+ ```text
243
+ src/ai_board/ CLI 核心
244
+ skills/ai-board/ 给 AI agent 的 discovery skill
245
+ tests/ 测试
246
+ docs/ 这个项目自己的计划和状态文档
247
+ ```
248
+
249
+ ## 当前边界
250
+
251
+ 不是 Jira,不是 Web 项目管理系统。当前版本先把本地 CLI、JSON 真相源、事件日志、doctor 自检、多 agent 路径级防撞和 Markdown 视图跑顺。
252
+
253
+ | 已支持 | 暂不做 |
254
+ | --- | --- |
255
+ | 本地 CLI | Web 登录 |
256
+ | JSON 真相源 | 云同步 |
257
+ | Markdown 生成视图 | 自动排期 |
258
+ | 简单依赖校验 | 复杂依赖图 |
259
+ | 事件日志和 `history` | OS 级文件锁 |
260
+ | `doctor` 项目自检 | 语义级代码冲突判断 |
261
+ | 多 agent 路径级 scope 防撞 | 跨机器协作锁 |
262
+
263
+ ## 开发
264
+
265
+ ```powershell
266
+ uv sync
267
+ uv run python -m unittest discover -s tests
268
+ ```
269
+
270
+ 本地开发想直接用 `ai-board` 命令:
271
+
272
+ ```powershell
273
+ uv tool install --editable .
274
+ ```
275
+
276
+ ## License
277
+
278
+ MIT License. See [LICENSE](./LICENSE).
@@ -0,0 +1,258 @@
1
+ # ai-board
2
+
3
+ [English](./README_en.md) | 中文
4
+
5
+ <p align="center">
6
+ <img alt="Python 3.10+" src="https://img.shields.io/badge/Python-3.10%2B-3776AB?logo=python&logoColor=white">
7
+ <img alt="CLI ai-board" src="https://img.shields.io/badge/CLI-ai--board-0B1F4D">
8
+ <img alt="License MIT" src="https://img.shields.io/badge/License-MIT-green">
9
+ </p>
10
+
11
+ ![ai-board logo](./assets/ai-board.png)
12
+
13
+ 给 AI agent 用的本地计划看板。你跟 AI 对话提需求,它帮你排期、跟踪、防冲突,而不是直接开改。
14
+
15
+ 当前版本:`v0.1.0-alpha.2`,仍是 alpha,但已经支持从 PyPI 安装。
16
+
17
+ ## 为什么做这个
18
+
19
+ 用 AI 写代码最大的坑不是代码质量,是上下文管理。
20
+
21
+ 你跟 AI 说"帮我改一下这个",它大概率会立刻动手。改完了你又提一个,它又立刻改。几个来回之后,你问"之前那个规划做到哪了"——它已经忘了,因为临时需求把之前的上下文冲掉了。
22
+
23
+ `ai-board` 想解决的就是这个:AI 不会因为你的临时需求丢掉之前的规划,所有需求统一进排期。紧急 bug 当然可以插队,高优先级优先处理,但不会打乱整体节奏。
24
+
25
+ 初始化项目时,`ai-board` 还会拉起一套开发规范文档——项目方向、当前状态、决策记录、开发规则。这不是重点,但确实帮项目从第一天就有据可查。
26
+
27
+ ## 怎么跟 AI 用
28
+
29
+ `ai-board` 主要是给 AI 用的,不需要你自己敲一堆命令。你要做的是跟 AI 对话,它来执行。
30
+
31
+ ### 开始新项目
32
+
33
+ 跟 AI 说:
34
+
35
+ ```text
36
+ 用 ai-board 接手这个项目,先规划一下方向
37
+ ```
38
+
39
+ AI 会运行 `ai-board onboard --init-if-missing`,然后问你项目目标、技术栈、初版范围。你们对齐之后,它会把方向和计划写进文档,再把具体任务排进看板。不是上来就写代码,是先把"做什么、不做什么"定下来。
40
+
41
+ ### 接手已有项目
42
+
43
+ 跟 AI 说:
44
+
45
+ ```text
46
+ 用 ai-board 接管这个项目
47
+ ```
48
+
49
+ AI 会扫描项目结构,梳理当前状态,生成项目方向、技术栈、风险和下一步建议等文档。梳理完之后,后续所有开发工作都通过看板管理,不再靠聊天记录猜进度。
50
+
51
+ ### 提需求
52
+
53
+ 日常开发中最常见的场景。以前你可能会说:
54
+
55
+ ```text
56
+ 这里有个 bug,帮我修一下
57
+ ```
58
+
59
+ 或者:
60
+
61
+ ```text
62
+ 把这个页面改成 xxx 样式
63
+ ```
64
+
65
+ AI 会直接动手改。改完你又提一个,它又改。几个来回之后,之前的规划就丢了。
66
+
67
+ 现在你这样说:
68
+
69
+ ```text
70
+ 这里有个 bug,加到看板里
71
+ ```
72
+
73
+ ```text
74
+ 把这个页面改成 xxx 样式,排进下一批
75
+ ```
76
+
77
+ AI 会把需求排进看板,而不是立刻动手。紧急的 bug 会标高优先级优先处理,但不会丢掉之前的任务。你随时可以问"现在在做什么",AI 给你看的是看板状态,不是靠聊天记录猜的。
78
+
79
+ ## 安装
80
+
81
+ 最推荐的方式:把安装和初始化都交给 AI。给它一句话:
82
+
83
+ ```text
84
+ 请安装 ai-board 并接手当前项目:
85
+ 1. 优先用 pipx install ai-board 安装用户级 CLI。
86
+ 2. 如果 pipx 不可用,再用 uv tool install ai-board。
87
+ 3. 安装后运行 ai-board onboard --init-if-missing。
88
+ 4. 如需 agent skill,请从 https://github.com/dev-null-sec/ai-board.git 取 skills/ai-board/SKILL.md 放到对应 agent 的 skills 目录。
89
+ ```
90
+
91
+ AI 会检查环境、装 CLI、放 skill 文件、读版本匹配的使用说明。全程不用你手动操作。
92
+
93
+ 如果你想自己装:
94
+
95
+ ```powershell
96
+ pipx install ai-board
97
+ ```
98
+
99
+ 没有 `pipx` 但有 `uv`:
100
+
101
+ ```powershell
102
+ uv tool install ai-board
103
+ ```
104
+
105
+ 想安装 GitHub 上的最新源码版时,再使用:
106
+
107
+ ```powershell
108
+ pipx install "git+https://github.com/dev-null-sec/ai-board.git"
109
+ ```
110
+
111
+ ## 命令速查
112
+
113
+ 大部分时候你不需要敲命令,跟 AI 对话就行。但如果你想看状态或手动操作:
114
+
115
+ ```powershell
116
+ ai-board status # 当前任务分布
117
+ ai-board show T-0001 # 查看某个任务详情
118
+ ai-board render # 重新生成 Markdown 看板
119
+ ai-board lang zh-CN # 查看中文输出的环境变量设置方式
120
+ ```
121
+
122
+ 完整命令参考:`ai-board --help` 或 `ai-board skills get core --full`。
123
+
124
+ ## 工作方式
125
+
126
+ 整体流程很简单:
127
+
128
+ ```text
129
+ 你 / AI 提需求
130
+
131
+ ai-board CLI 写入 .ai-board/board.json
132
+
133
+ render 生成 Markdown 看板
134
+
135
+ AI / 人读取状态,继续推进
136
+ ```
137
+
138
+ | 设计点 | 说明 |
139
+ | --- | --- |
140
+ | 真相源 | `.ai-board/board.json` 是唯一写入源,Markdown 看板只是生成视图。 |
141
+ | 看板渲染 | `add`、`schedule`、`start`、`complete`、`archive` 等 CLI 写操作会自动刷新 Markdown;`ai-board render` 是手动修复和配置变更后的兜底命令。 |
142
+ | 多 agent | 重叠文件范围默认被拦住;这是路径级防撞,不是理解代码语义的万能锁。 |
143
+ | 项目配置 | `.ai-board/config.json` 可设置默认语言、默认泳道、默认 agent 类型和默认租约。 |
144
+ | scope lock | 默认 240 分钟租约;可通过项目配置调整;任务 `complete` 后释放 agent 身份,`archive` 把已验收任务移出当前看板。 |
145
+ | 多泳道 | 一个看板可以分平台开发、课程内容、文档等泳道,但只有一个真相源。 |
146
+ | 简单依赖 | 任务可以声明依赖,`start` 默认会挡住依赖未完成的任务;复杂依赖图暂时不做。 |
147
+ | 自检 | `doctor` 检查 board、生成文档、事件日志、scope 冲突和 agent 状态。 |
148
+ | 历史 | `history` 从 `.ai-board/events.jsonl` 查看任务变更记录。 |
149
+ | 生命周期 | `inbox → scheduled → active → done → archived`。 |
150
+
151
+ 默认生成中文看板。如果项目主要使用英文,可以把 `.ai-board/config.json` 里的 `language` 改成 `en-US`,再运行 `ai-board render`。正常通过 CLI 改任务时不需要手动 render;只有手改配置、拉取代码后怀疑生成视图过期,或 `doctor` 提示 stale 时才需要运行。
152
+
153
+ `doctor` 的轻量业务检查可以通过 `.ai-board/config.json` 调整,例如 active 任务多久算停滞、agent lease 剩多久开始提醒、哪些 scope 算过宽。
154
+
155
+ CLI 默认输出英文,方便 AI、脚本和 CI 稳定使用。人手动看时可以用 `AI_BOARD_LANG=zh-CN` 或 `ai-board --lang zh-CN status` 切到中文;不想记环境变量就运行 `ai-board lang zh-CN`。
156
+
157
+ 如果要改安装口径、接手流程或命令规则,优先改 `ai-board skills get core` 对应的内置指南;仓库里的 `skills/ai-board/SKILL.md` 只负责发现入口。
158
+
159
+ ## FAQ
160
+
161
+ <details>
162
+ <summary><strong>ai-board 会保存 AI 的聊天记录或上下文吗?</strong></summary>
163
+
164
+ 不是。`ai-board` 不会把 AI 脑子里的上下文原样保存下来,也不会假装恢复一整段对话记忆。
165
+
166
+ 它保存的是项目推进需要稳定存在的东西:需求、优先级、状态、负责人、scope、验收结果、遗留问题。换句话说,聊天可以断,模型可以换,但项目计划不应该只活在聊天记录里。
167
+
168
+ </details>
169
+
170
+ <details>
171
+ <summary><strong>Markdown 看板可以手动改吗?</strong></summary>
172
+
173
+ 不建议。真正存数据的是 `.ai-board/board.json`,它更像这个小工具的本地数据库。`docs/计划看板.md` 和 `docs/归档计划看板.md` 只是从 JSON 渲染出来的阅读视图,给人和 AI 快速扫一眼用。
174
+
175
+ 如果你手改 Markdown,下一次 CLI 写操作或 `ai-board render` 可能会覆盖它。要改任务状态、负责人、scope、验收结果,走 CLI。
176
+
177
+ </details>
178
+
179
+ <details>
180
+ <summary><strong>为什么要封装成 CLI,而不是只靠文档约束?</strong></summary>
181
+
182
+ 只靠文档约束,AI 很容易漏步骤:忘了排期、忘了写 scope、忘了归档,或者两个 agent 同时改同一片文件。
183
+
184
+ CLI 的价值不是“更高级”,而是把这些动作变成固定入口:`add`、`schedule`、`start`、`complete`、`archive`。该拦的冲突由工具拦,该写入的状态由工具写,不全靠 AI 自觉。
185
+
186
+ </details>
187
+
188
+ <details>
189
+ <summary><strong>它能替代上下文吗?</strong></summary>
190
+
191
+ 不能,也不该替代。
192
+
193
+ 上下文适合讨论细节、解释取舍、临时判断;`ai-board` 适合保存那些不能丢的项目事实。两者配合起来,AI 接手项目时先看 board 和 docs,再根据当前对话继续推进,而不是只靠“我好像记得之前说过什么”。
194
+
195
+ </details>
196
+
197
+ <details>
198
+ <summary><strong>init 会覆盖我已有的项目文档吗?</strong></summary>
199
+
200
+ 默认不会。`ai-board init` 会创建 `AGENTS.md`、`docs/当前状态.md`、`docs/开发规范.md` 等 AI 原生开发文档;如果同名文件已经存在,默认写成 `.example`,避免直接盖掉你的内容。
201
+
202
+ </details>
203
+
204
+ <details>
205
+ <summary><strong>只能给 Codex 用吗?</strong></summary>
206
+
207
+ 不是。仓库里带了 Codex 可读的 skill stub,因为我自己主要在这个环境里用;但 CLI 本身是普通命令行工具。Claude、其他 agent,甚至人手动敲命令都能用。关键是让 agent 先读 `ai-board skills get core`,按当前版本的规则操作。
208
+
209
+ </details>
210
+
211
+ <details>
212
+ <summary><strong>多 agent 防冲突能防到什么程度?</strong></summary>
213
+
214
+ 它能防最常见的路径重叠:比如一个 agent 已经锁了 `src/api`,另一个 agent 默认不能再启动 `src/api/handler.py` 的任务。
215
+
216
+ 它不会理解“两个不同文件其实有业务耦合”,也不是跨机器协作锁。需要真正并行开发时,scope 还是要写窄,任务边界也要说清楚。
217
+
218
+ </details>
219
+
220
+ ## 项目结构
221
+
222
+ ```text
223
+ src/ai_board/ CLI 核心
224
+ skills/ai-board/ 给 AI agent 的 discovery skill
225
+ tests/ 测试
226
+ docs/ 这个项目自己的计划和状态文档
227
+ ```
228
+
229
+ ## 当前边界
230
+
231
+ 不是 Jira,不是 Web 项目管理系统。当前版本先把本地 CLI、JSON 真相源、事件日志、doctor 自检、多 agent 路径级防撞和 Markdown 视图跑顺。
232
+
233
+ | 已支持 | 暂不做 |
234
+ | --- | --- |
235
+ | 本地 CLI | Web 登录 |
236
+ | JSON 真相源 | 云同步 |
237
+ | Markdown 生成视图 | 自动排期 |
238
+ | 简单依赖校验 | 复杂依赖图 |
239
+ | 事件日志和 `history` | OS 级文件锁 |
240
+ | `doctor` 项目自检 | 语义级代码冲突判断 |
241
+ | 多 agent 路径级 scope 防撞 | 跨机器协作锁 |
242
+
243
+ ## 开发
244
+
245
+ ```powershell
246
+ uv sync
247
+ uv run python -m unittest discover -s tests
248
+ ```
249
+
250
+ 本地开发想直接用 `ai-board` 命令:
251
+
252
+ ```powershell
253
+ uv tool install --editable .
254
+ ```
255
+
256
+ ## License
257
+
258
+ MIT License. See [LICENSE](./LICENSE).
@@ -0,0 +1,37 @@
1
+ [build-system]
2
+ requires = ["setuptools>=68"]
3
+ build-backend = "setuptools.build_meta"
4
+
5
+ [project]
6
+ name = "ai-board"
7
+ version = "0.1.0a2"
8
+ description = "A lightweight local planning board CLI for AI-assisted projects."
9
+ readme = "README.md"
10
+ requires-python = ">=3.10"
11
+ license = "MIT"
12
+ authors = [{ name = "ai-board contributors" }]
13
+ keywords = ["ai", "agents", "planning", "cli", "kanban"]
14
+ classifiers = [
15
+ "Development Status :: 3 - Alpha",
16
+ "Environment :: Console",
17
+ "Intended Audience :: Developers",
18
+ "Programming Language :: Python :: 3",
19
+ "Programming Language :: Python :: 3 :: Only",
20
+ ]
21
+
22
+ [project.scripts]
23
+ ai-board = "ai_board.cli:main"
24
+
25
+ [project.optional-dependencies]
26
+ dev = ["build", "ruff"]
27
+
28
+ [tool.setuptools.packages.find]
29
+ where = ["src"]
30
+
31
+ [tool.ruff]
32
+ line-length = 160
33
+ target-version = "py310"
34
+
35
+ [tool.ruff.lint]
36
+ select = ["E", "F", "I", "UP", "B"]
37
+ ignore = ["E501"]
@@ -0,0 +1,4 @@
1
+ [egg_info]
2
+ tag_build =
3
+ tag_date = 0
4
+
@@ -0,0 +1,3 @@
1
+ """Lightweight planning board for AI-assisted projects."""
2
+
3
+ __version__ = "0.1.0"
@@ -0,0 +1,4 @@
1
+ from .cli import main
2
+
3
+ if __name__ == "__main__":
4
+ raise SystemExit(main())