返回首页
最新
嗨,HN,我是Hal,App Dev for All的首席技术官。我想分享一下我们在过去一年中解决的一个技术问题,以及我们的处理方法。
我们正在开发“随时编码”(Code on the Go),这是一款功能齐全的集成开发环境(IDE),可以完全在Android手机上运行。无需笔记本电脑,无需ADB连接,也无需云构建服务器。它使用Gradle在设备上本地编译项目,支持Java和Kotlin,并包含一个在与被测试应用相同手机上运行的调试器。
最有趣且具有挑战性的部分是调试器。Android操作系统有着严格的安全模型,这可能会妨碍传统的进程间通信。Android调试依赖于ADB,而ADB又假设有两台机器。我们完全绕过了ADB,在启动时将JDWP代理附加到目标进程,并通过本地套接字将其输出路由到我们的调试器。我们使用了Shizuku项目的范围适配,以获取必要的系统访问权限,而无需获取root权限。
在“随时编码”中,我们还面临了一些其他技术挑战:Sketch-to-UI(从手绘布局的照片生成Android XML,完全离线运行,使用Yolo)、一个可选的Gemini驱动的编码助手(可选择,需自备API密钥),以及一个具有隔离类加载器的插件系统。
我们的一个预发布社区成员已经使用它在Play商店构建并发布了一个僧伽罗语/英语键盘应用,完全在他的手机上完成。这为我们的Play商店兼容性提供了测试案例。
我们是一个慈善项目。没有广告,没有追踪,没有订阅。许可证为GPLv3。
APK: [http://appdevforall.org/codeonthego](http://appdevforall.org/codeonthego)
源代码: [http://github.com/appdevforall/CodeOnTheGo](http://github.com/appdevforall/CodeOnTheGo)
欢迎就实现方面的问题进行提问。
我用 Rust、libghostty-vt 和 quickjs 构建的一个玩具 UNIX 模拟器。
我最初只是随便玩弄 pi-autoresearch。给它设定了一个样本任务,构建一个最便携的编码代理。
第一次尝试是 6 KB 的 shell。对于一次性任务来说很不错,但交互使用时就没法用了。我很震惊它居然真的能工作。
开始逐步构建——添加功能——但我给自己设定了一个规则:不引入新的依赖,代码行数不超过 500。这东西必须真正便携。只使用 sh、curl 和 awk。仅限系统原语。
这意味着我在 awk 中做了一些非常恶心的事情,包括 JSON 解析和 OpenAI 响应工具循环,推理项在回合之间传递。
现在大约有 400 行代码。在这个框架中:Anthropic + OpenAI,7 个工具(bash、read、write、edit、grep、find、ls),REPL、自动压缩、检查点/恢复、管道模式,90 个无 API 测试。不在框架中的有:TUI、流式处理、图像、OAuth、Windows、尊严。
两个诚实的事实:
1. 我窃取/修改了系统提示和架构。Pi/Claude/Codex 写了 awk。我无法阅读大部分代码。一年前我是做不到的。
2. 深受 Pi(pi.dev)的启发——相同的 7 个工具界面,完全相同的文本编辑模型。应当给予应有的认可。Pi 非常棒——你可能应该使用他们的工具。
代理循环本身很小。几乎所有其他“真实”代理 CLI 的内容都是开发体验和加固。你可能可以完全按照自己的喜好构建自己的工具框架。Mario Zechner 的 AI 工程师演讲让我在这方面有所启发。
这个名字是因为它是一个 .sh 文件。另一个听起来像的东西,遗憾的是,也同样准确。