UnitGen with combined with CodeContextStrategy and CompletionBuilderType to build the instruction.
The instructions will be generated by the following steps:
CodeContextStrategy | Description |
---|---|
SimilarChunks | tokenize path to find similar path, then calculate similar chunk by path |
RelatedCode | use static analysis by imports to calculate related code |
for example:
SimilarChunks | RelatedCode | |
---|---|---|
InlineCompletion | afterCursor > 10 | |
InBlockCompletion | ||
AfterBlockCompletion | ||
TestCode | ||
Documentation | lines >= 5 |
If you want to add a new instruction, you need to add a new CodeContextStrategy and CompletionBuilderType.
Code Context Strategy
enum class BizCodeContextStrategy {
/**
* the AutoDev with pre-build context for un-support language
*/
SIMILAR_CHUNKS,
/**
* the AutoDev with pre-build context
*/
RELATED_CODE;
fun builder(context: JobContext): CodeContextBuilder<out Any> {
return mapOf(
SIMILAR_CHUNKS to SimilarChunksCompletionBuilder(context),
RELATED_CODE to RelatedCodeCompletionBuilder(context),
)[this] ?: throw SerializationException("Unknown message type: $this")
}
}
Completion Type
enum class CompletionBuilderType {
INLINE_COMPLETION,
IN_BLOCK_COMPLETION,
AFTER_BLOCK_COMPLETION,
TEST_CODE_GEN,
DOCUMENTATION
}