返回首页
最新
我在过去几个月里一直在将工作委派给Claude Code,这确实带来了变革,但管理多个执行不同任务的代理变得混乱。由于没有适合这种工作流程的工具,我决定自己开发一个。
<i>问题</i><p>当你与AI代理(如Claude Code、Cursor、Windsurf)合作时,会陷入一种奇怪的境地:- 任务散落在你的脑海中、Slack、电子邮件和命令行界面上 - 代理需要明确的工作项目、上下文和角色特定的指令 - 你无法看到代理实际上在做什么 - 失败的任务就这样...消失了。没有重试,没有通知 - 每个代理都在不断切换上下文,因为你在手动地给他们喂工作<p>我一直在手动管理代理,复制任务描述,重启失败的会话,并且失去对接下来需要完成的工作的跟踪。这就像雇佣昂贵的承包商,却像管理一个无序的实验一样。<p><i>解决方案</i><p>Mission Control是一个专门为将工作委派给AI代理而构建的任务管理应用。它具备预期的功能(艾森豪威尔矩阵、看板、目标层级),但建立在你的合作者是Claude,而不是人类的假设之上。<p><i>杀手级功能是自主守护进程</i>。它在后台运行,轮询你的任务队列,自动生成Claude Code会话,处理重试,管理并发,并遵循你定时安排的工作。只需一键:你的整个工作队列就会激活。<p><i>架构</i><p>- <i>本地优先</i>:所有数据存储在JSON文件中。没有数据库,没有云依赖,没有供应商锁定。 - <i>令牌优化的API</i>:任务/决策负载约为50个令牌,而未过滤的则约为5,400个。在反复生成代理时,这一点非常重要。 - <i>坚如磐石的并发性</i>:Zod验证+异步互斥锁定防止在并发写入下的数据损坏。 - <i>193个自动化测试</i>:这个应用必须可靠,因为它是在无人值守的情况下工作。<p>该应用使用Next.js 15构建,内置5个代理角色(研究员、开发者、市场营销人员、商业分析师,以及你自己)。你可以定义可重用的技能,以Markdown格式注入到代理提示中。代理通过收件箱+决策队列反馈结果。<p><i>为什么发布这个?</i><p>有几个人请求访问,我认为这对任何将工作委派给AI的人来说都非常有用。它是MIT许可的开源项目,并且在积极维护中。<p><i>接下来要做什么</i><p>- 人类协作(与真实团队成员共享任务) - 与GitHub问题和电子邮件收件箱的集成 - 更好的守护进程执行可观察性仪表板 - 自定义代理模板(目前是硬编码角色)<p>如果你正在做类似的事情——将重要工作委派给AI——请查看一下,并告诉我有什么问题。<p>GitHub: <a href="https://github.com/MeisnerDan/mission-control" rel="nofollow">https://github.com/MeisnerDan/mission-control</a>
我在一个包含462个文件的项目文件夹中运行Claude Desktop(Cowork)。Claude在每次会话开始时会读取每个文件,这会消耗上下文窗口,导致过时和不相关的文档影响输出质量,明显下降。于是我建立了一个近线分层系统:为每个文件夹创建一个清单模板,制定全球性分层访问指令,并开发了一个Cowork技能以确保一致性。设置大约花费了10分钟。采用MIT许可证。
GO-LSM:构建一个日志结构合并树引擎
引言:
我一直对数据库的内部机制充满好奇,因此决定用Go语言构建自己的日志结构合并树(LSM-Tree)引擎,以理解写优化存储背后的“魔法”。
Go-LSM是一个持久化的键值存储引擎,管理从易失性内存到不可变磁盘存储的数据全生命周期。
技术亮点:
1. 持久性层(WAL)
为了确保零数据丢失,我实现了一个仅追加的预写日志(Write-Ahead Log)。
```
• 自定义二进制协议:[类型][键长度][值长度][键][值]
• 使用File.Sync()强制内核刷新到物理硬件
• 确保系统崩溃时的绝对持久性
```
2. 跳表内存表(SkipList MemTable)
我在内存层使用了跳表,而不是标准树结构。
```
• 提供O(log n)的搜索和插入,无需红黑树的重新平衡复杂性
• 保持键的字典序排序,以便最终的SSTable刷新
• 实现高效的内存到磁盘的转换
```
3. 基于SSTable尾部索引
我的SSTable在磁盘上使用尾部优先读取策略进行二进制搜索:
```
• 跳转到文件的最后8个字节以找到索引块指针
• 通过直接读取索引避免全文件扫描
• 在排序键上执行二进制搜索,实现O(log n)的磁盘查找
```
4. 维护层:合并
构建了一个K路合并的合并引擎,以处理性能优化:
```
• 处理多个SSTable层并将其合并为单个优化文件
• 通过减少每个查询需检查的文件数量来处理“读取放大”问题
• 处理“墓碑”以完成删除并回收磁盘空间
```
5. 工具与调试
自定义二进制解析器将原始二进制文件转换为人类可读的表格:
```
• lsm-dump:查看排序后的SSTable内容
• lsm-wal-dump:检查未刷新预写日志条目
• 允许深入检查内部存储层
```
关键工程经验:
从标准应用开发转向系统编程需要我在内存和I/O方面进行根本性的思维转变:
```
• 字节序逻辑:处理大端与小端转换以实现跨平台兼容性
• 文件偏移管理:手动管理字节偏移和文件指针定位
• 并发与线程安全:实现线程安全的内存表刷新机制
• 二进制协议设计:创建高效、紧凑的数据编码以确保持久性
```
代码库:
[https://github.com/Jyotishmoy12/LSM-Tree-in-Golang](https://github.com/Jyotishmoy12/LSM-Tree-in-Golang)
20年的代码生成工作最终达到了这里。YAML 1.2规范包含211个语法产生式。我将它们从Haskell参考实现转换为s表达式,使用Common Lisp编写了一个投影器,并在18种语言中生成了符合规范的解析器。所有解析器都通过了308/308的YAML测试套件测试。添加一种新语言的目标规范大约为300行。投影器在几秒钟内完成其余工作。
一个小时之前,我收到了以下消息:“API错误:达到速率限制”,这是在5x Max订阅的claude代码中出现的。<p>我并没有大量使用这个模型,但还是接受了这个提示。我等了10分钟,再次询问关于如何进行网站本地化任务的建议。这并不是一些复杂的代码,只是想了解在现有基础设施下应该采取什么路径。然而,仍然出现同样的错误信息。我检查了claude的状态,查看了HN,并启动了支持机器人,复习了API的速率限制。但一切看起来都正常,似乎没有超过限制。我又等了30分钟,尝试再次请求。错误信息依然存在,根据文档,它应该告诉我需要等待多长时间,但并没有。<p>还有其他人遇到这个问题吗?我在欧洲瑞士,使用的是Linux系统。